Fully switch to new launcher & updater

This commit is contained in:
Lncvrt committed 2026-04-03 12:43:27 -07:00
1 parent d7befe30ca
commit 4069648732
4 files changed
+8 -168

No files matched your search

-26
View File
@@ -19,7 +19,6 @@ import { handler as launcherLatestHandler } from './routes/launcher/latest/get'
import { handler as launcherUpdateHandler } from './routes/launcher/update/get' import { handler as launcherUpdateHandler } from './routes/launcher/update/get'
import { handler as launcherDownloadHandler } from './routes/launcher/download/get' import { handler as launcherDownloadHandler } from './routes/launcher/download/get'
import { handler as launcherLoaderLatestHandler } from './routes/launcher/loader/latest/get' import { handler as launcherLoaderLatestHandler } from './routes/launcher/loader/latest/get'
import { handler as launcherLoaderUpdateDataHandler } from './routes/launcher/loader/update-data/get'
import { handler as accountLoginPostHandler } from './routes/account/login/post' import { handler as accountLoginPostHandler } from './routes/account/login/post'
import { handler as accountRegisterPostHandler } from './routes/account/register/post' import { handler as accountRegisterPostHandler } from './routes/account/register/post'
@@ -1058,31 +1057,6 @@ app.get('/launcher/loader/latest', launcherLoaderLatestHandler, {
) )
}) })
}) })
app.get(
'/launcher/loader/update-data',
context => launcherLoaderUpdateDataHandler(context),
{
detail: {
description:
'The endpoint for getting Launcher Update data for when a new Update is released. It will be send & read by the updater.\n\nNote: if going to use the params, both must be provided at the same time.',
tags: ['Launcher']
},
query: t.Object({
platform: t.Optional(
t.String({ examples: ['windows', 'macos', 'linux'] })
),
arch: t.Optional(t.String({ examples: ['x86_64', 'aarch64'] }))
}),
headers: t.Object({
'x-forwarded-for': t.Optional(
t.String({
description:
'Ignore this header. It cannot be set or overridden and is required for endpoints to work properly'
})
)
})
}
)
app.post('/account/login', context => accountLoginPostHandler(context), { app.post('/account/login', context => accountLoginPostHandler(context), {
detail: { detail: {
description: description:
+7 -8
View File
@@ -1,5 +1,5 @@
import { launcherUpdates } from '../../../lib/tables' import { v2LauncherUpdates } from '../../../lib/tables'
import { desc, eq } from 'drizzle-orm' import { desc } from 'drizzle-orm'
import { import {
generateSignature, generateSignature,
getDatabaseConnection, getDatabaseConnection,
@@ -14,19 +14,18 @@ export const handler = async () => {
const version = await db const version = await db
.select({ .select({
id: launcherUpdates.id version: v2LauncherUpdates.version
}) })
.from(launcherUpdates) .from(v2LauncherUpdates)
.where(eq(launcherUpdates.hidden, false)) .orderBy(desc(v2LauncherUpdates.id))
.orderBy(desc(launcherUpdates.place))
.limit(1) .limit(1)
connection.end() connection.end()
return new Response(version[0].id, { return new Response(version[0].version, {
headers: { headers: {
'Content-Type': 'text/plain', 'Content-Type': 'text/plain',
'X-Signature': generateSignature(version[0].id) 'X-Signature': generateSignature(version[0].version)
} }
}) })
} }
+1 -30
View File
@@ -1,32 +1,3 @@
import { loaderUpdates } from '../../../../lib/tables'
import { desc, eq } from 'drizzle-orm'
import {
generateSignature,
getDatabaseConnection,
jsonResponse
} from '../../../../lib/util'
export const handler = async () => { export const handler = async () => {
const dbResult = getDatabaseConnection(0) return '-1'
if (!dbResult)
return jsonResponse({ error: 'Failed to connect to database' }, 500)
const { connection, db } = dbResult
const version = await db
.select({
id: loaderUpdates.id
})
.from(loaderUpdates)
.where(eq(loaderUpdates.hidden, false))
.orderBy(desc(loaderUpdates.place))
.limit(1)
connection.end()
return new Response(version[0].id, {
headers: {
'Content-Type': 'text/plain',
'X-Signature': generateSignature(version[0].id)
}
})
} }
@@ -1,104 +0,0 @@
import { launcherUpdates } from '../../../../lib/tables'
import { desc, eq } from 'drizzle-orm'
import { getDatabaseConnection, jsonResponse } from '../../../../lib/util'
import { Context } from 'elysia'
export const handler = async (context: Context) => {
const dbResult = getDatabaseConnection(0)
if (!dbResult)
return jsonResponse({ error: 'Failed to connect to database' }, 500)
const { connection, db } = dbResult
const platform = context.query.platform as string | undefined
const arch = context.query.arch as string | undefined
let showAll = false
if (!platform || !arch) {
showAll = true
}
let platString = null
if (!showAll) {
if (platform == 'windows') {
if (arch == 'x86') platString = 'windows-x86'
else if (arch == 'x86_64') platString = 'windows-x64'
else if (arch == 'aarch64') platString = 'windows-arm64'
else {
connection.end()
return jsonResponse(
{ error: 'Unsupported architecture for Windows' },
400
)
}
} else if (platform == 'linux') {
if (arch == 'x86') platString = 'linux-x86'
else if (arch == 'x86_64') platString = 'linux-x64'
else if (arch == 'aarch64') platString = 'linux-arm64'
else {
connection.end()
return jsonResponse(
{ error: 'Unsupported architecture for Linux' },
400
)
}
} else if (platform == 'macos') {
if (arch == 'x86_64') platString = 'macos-x64'
else if (arch == 'aarch64') platString = 'macos-arm64'
else {
connection.end()
return jsonResponse(
{ error: 'Unsupported architecture for macOS' },
400
)
}
} else {
connection.end()
return jsonResponse({ error: 'Unsupported platform' }, 400)
}
}
const versionsRaw = await db
.select({
id: launcherUpdates.id,
releaseDate: launcherUpdates.releaseDate,
downloadUrls: launcherUpdates.downloadUrls,
platforms: launcherUpdates.platforms,
sha512sums: launcherUpdates.sha512sums
})
.from(launcherUpdates)
.where(eq(launcherUpdates.hidden, false))
.orderBy(desc(launcherUpdates.place))
.limit(1)
.execute()
const versions = versionsRaw
.map(v => ({
...v,
downloadUrls: JSON.parse(v.downloadUrls),
platforms: JSON.parse(v.platforms),
sha512sums: JSON.parse(v.sha512sums),
downloadUrl: undefined as string | undefined,
sha512sum: undefined as string | undefined
}))
.filter(v => {
if (showAll || !platString) {
delete v.downloadUrl
delete v.sha512sum
return true
}
const i = v.platforms.indexOf(platString)
if (i !== -1) {
v.downloadUrl = v.downloadUrls[i]
v.sha512sum = v.sha512sums[i]
delete v.downloadUrls
delete v.platforms
delete v.sha512sums
return true
}
return false
})
connection.end()
return jsonResponse(versions[0])
}