/can-load-client endpoint

This commit is contained in:
2025-11-08 19:29:11 -07:00
parent 0b0fd8412c
commit 415823a980
4 changed files with 54 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ import { cors } from '@elysiajs/cors'
import { jsonResponse } from './lib/util' import { jsonResponse } from './lib/util'
import dotenv from 'dotenv' import dotenv from 'dotenv'
import { handler as canLoadClientHandler } from './routes/can-load-client'
import { handler as launcherVersionsHandler } from './routes/launcher/versions' import { handler as launcherVersionsHandler } from './routes/launcher/versions'
import { handler as launcherLatestHandler } from './routes/launcher/latest' import { handler as launcherLatestHandler } from './routes/launcher/latest'
import { handler as launcherLoaderLatestHandler } from './routes/launcher/loader/latest' import { handler as launcherLoaderLatestHandler } from './routes/launcher/loader/latest'
@@ -17,6 +18,7 @@ const app = new Elysia().use(
}) })
) )
app.get('/can-load-client', context => canLoadClientHandler(context))
app.get('/launcher/versions', context => launcherVersionsHandler(context)) app.get('/launcher/versions', context => launcherVersionsHandler(context))
app.get('/launcher/latest', launcherLatestHandler) app.get('/launcher/latest', launcherLatestHandler)
app.get('/launcher/loader/latest', launcherLoaderLatestHandler) app.get('/launcher/loader/latest', launcherLoaderLatestHandler)

5
src/info/general.ts Normal file
View File

@@ -0,0 +1,5 @@
export const latestVersion = '1.8.3'
export const latestBetaVersion = latestVersion
export const latestLauncherLoaderVersion = '1.0.1'
export const allowedVersions = [latestVersion, latestBetaVersion]
export const allowedDatabaseVersions = [latestVersion, latestBetaVersion]

View File

@@ -1,5 +1,11 @@
import mysql from 'mysql2' import mysql from 'mysql2'
import { drizzle } from 'drizzle-orm/mysql2' import { drizzle } from 'drizzle-orm/mysql2'
import {
allowedDatabaseVersions,
allowedVersions,
latestBetaVersion,
latestVersion
} from '../info/general'
export function jsonResponse (data: any, status = 200) { export function jsonResponse (data: any, status = 200) {
return new Response(JSON.stringify(data, null, 2), { return new Response(JSON.stringify(data, null, 2), {
@@ -20,3 +26,20 @@ export function getDatabaseConnection () {
return { connection, db } return { connection, db }
} }
export const isLatestVersion = (version: string) => version === latestVersion
export const isBetaVersion = (version: string) => version === latestBetaVersion
export const isAllowedVersion = (version: string) =>
allowedVersions.includes(version)
export const isAllowedDatabaseVersion = (version: string) =>
allowedDatabaseVersions.includes(version)
export const checkClientDatabaseVersion = (request: Request) => {
const requester = request.headers.get('http_requester') ?? ''
const clientVersion = request.headers.get('http_clientversion') ?? ''
if (requester !== 'BerryDashClient') return '-998'
if (!allowedDatabaseVersions.includes(clientVersion)) return '-998'
}

View File

@@ -0,0 +1,24 @@
import { Context } from 'elysia'
import {
isAllowedDatabaseVersion,
isAllowedVersion,
isBetaVersion,
isLatestVersion
} from '../lib/util'
export async function handler ({ request, set }: Context) {
set.headers['Content-Type'] = 'text/plain'
const requester = request.headers.get('Requester') ?? '0'
const clientVersion = request.headers.get('ClientVersion') ?? '0'
if (requester === 'BerryDashGodotClient') return 'all;1.0.0'
else if (isLatestVersion(clientVersion)) return '1'
else if (isBetaVersion(clientVersion)) return '4'
else if (
isAllowedVersion(clientVersion) &&
isAllowedDatabaseVersion(clientVersion)
)
return '2'
else if (isAllowedVersion(clientVersion)) return '3'
return '-1'
}