mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-03-22 07:41:51 +00:00
Microsoft Intune's DMG provisioner currently fails unexpectedly when trying to provision our published DMG file with the error: > The DMG file couldn't be mounted for installation. Check the DMG file if the error persists. (0x87D30139) I ran the following verification commands locally, which all passed: ``` hdiutil verify -verbose <dmg> hdiutil imageinfo -verbose <dmg> hdiutil hfsanalyze -verbose <dmg> hdiutil checksum -type SHA256 -verbose <dmg> hdiutil info -verbose hdiutil pmap -verbose <dmg> ``` So the issue appears to be most likely that Intune doens't like the `/Applications` shortcut in the DMG. This is a UX feature to make it easy to drag the application the /Applications folder upon opening the DMG. So we're publishing an PKG in addition to the DMG, which should be a more reliable artifact for MDMs to use. --------- Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
106 lines
4.4 KiB
TypeScript
106 lines
4.4 KiB
TypeScript
import { NextResponse, NextRequest } from "next/server";
|
|
|
|
// This middleware is needed because NextJS doesn't populate params in the destination
|
|
// more than once. See https://github.com/vercel/next.js/issues/66891
|
|
const versionedRedirects = [
|
|
{
|
|
source: /^\/dl\/firezone-client-macos\/(\d+\.\d+\.\d+)$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/macos-client-:version/firezone-macos-client-:version.dmg",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-macos\/pkg\/(\d+\.\d+\.\d+)$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/macos-client-:version/firezone-macos-client-:version.pkg",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-android\/(\d+\.\d+\.\d+)$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/android-client-:version/firezone-android-client-:version.apk",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-gui-windows\/(\d+\.\d+\.\d+)\/x86_64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/gui-client-:version/firezone-client-gui-windows_:version_x86_64.msi",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-headless-windows\/(\d+\.\d+\.\d+)\/x86_64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/headless-client-:version/firezone-client-headless-windows_:version_x86_64.exe",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-gui-linux\/(\d+\.\d+\.\d+)\/x86_64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/gui-client-:version/firezone-client-gui-linux_:version_x86_64.deb",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-gui-linux\/(\d+\.\d+\.\d+)\/aarch64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/gui-client-:version/firezone-client-gui-linux_:version_aarch64.deb",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-headless-linux\/(\d+\.\d+\.\d+)\/x86_64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/headless-client-:version/firezone-client-headless-linux_:version_x86_64",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-headless-linux\/(\d+\.\d+\.\d+)\/aarch64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/headless-client-:version/firezone-client-headless-linux_:version_aarch64",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-client-headless-linux\/(\d+\.\d+\.\d+)\/armv7$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/headless-client-:version/firezone-client-headless-linux_:version_armv7",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-gateway\/(\d+\.\d+\.\d+)\/x86_64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/gateway-:version/firezone-gateway_:version_x86_64",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-gateway\/(\d+\.\d+\.\d+)\/aarch64$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/gateway-:version/firezone-gateway_:version_aarch64",
|
|
},
|
|
{
|
|
source: /^\/dl\/firezone-gateway\/(\d+\.\d+\.\d+)\/armv7$/,
|
|
destination:
|
|
"https://www.github.com/firezone/firezone/releases/download/gateway-:version/firezone-gateway_:version_armv7",
|
|
},
|
|
];
|
|
|
|
export const config = {
|
|
matcher: [
|
|
"/dl/firezone-client-macos/(\\d+).(\\d+).(\\d+)",
|
|
"/dl/firezone-client-macos/pkg/(\\d+).(\\d+).(\\d+)",
|
|
"/dl/firezone-client-android/(\\d+).(\\d+).(\\d+)",
|
|
"/dl/firezone-client-gui-windows/(\\d+).(\\d+).(\\d+)/x86_64",
|
|
"/dl/firezone-client-headless-windows/(\\d+).(\\d+).(\\d+)/x86_64",
|
|
"/dl/firezone-client-gui-linux/(\\d+).(\\d+).(\\d+)/x86_64",
|
|
"/dl/firezone-client-gui-linux/(\\d+).(\\d+).(\\d+)/aarch64",
|
|
"/dl/firezone-client-headless-linux/(\\d+).(\\d+).(\\d+)/x86_64",
|
|
"/dl/firezone-client-headless-linux/(\\d+).(\\d+).(\\d+)/aarch64",
|
|
"/dl/firezone-client-headless-linux/(\\d+).(\\d+).(\\d+)/armv7",
|
|
"/dl/firezone-gateway/(\\d+).(\\d+).(\\d+)/x86_64",
|
|
"/dl/firezone-gateway/(\\d+).(\\d+).(\\d+)/aarch64",
|
|
"/dl/firezone-gateway/(\\d+).(\\d+).(\\d+)/armv7",
|
|
],
|
|
};
|
|
|
|
export function middleware(request: NextRequest) {
|
|
const { pathname } = request.nextUrl;
|
|
|
|
for (const redirect of versionedRedirects) {
|
|
const match = pathname.match(redirect.source);
|
|
|
|
if (match) {
|
|
const version = match[1];
|
|
const destination = redirect.destination.replace(/:version/g, version);
|
|
return NextResponse.redirect(destination);
|
|
}
|
|
}
|
|
|
|
return NextResponse.next();
|
|
}
|