/can-load-client endpoint
This commit is contained in:
@@ -3,6 +3,7 @@ import { cors } from '@elysiajs/cors'
|
||||
import { jsonResponse } from './lib/util'
|
||||
import dotenv from 'dotenv'
|
||||
|
||||
import { handler as canLoadClientHandler } from './routes/can-load-client'
|
||||
import { handler as launcherVersionsHandler } from './routes/launcher/versions'
|
||||
import { handler as launcherLatestHandler } from './routes/launcher/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/latest', launcherLatestHandler)
|
||||
app.get('/launcher/loader/latest', launcherLoaderLatestHandler)
|
||||
|
||||
5
src/info/general.ts
Normal file
5
src/info/general.ts
Normal 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]
|
||||
@@ -1,5 +1,11 @@
|
||||
import mysql from 'mysql2'
|
||||
import { drizzle } from 'drizzle-orm/mysql2'
|
||||
import {
|
||||
allowedDatabaseVersions,
|
||||
allowedVersions,
|
||||
latestBetaVersion,
|
||||
latestVersion
|
||||
} from '../info/general'
|
||||
|
||||
export function jsonResponse (data: any, status = 200) {
|
||||
return new Response(JSON.stringify(data, null, 2), {
|
||||
@@ -20,3 +26,20 @@ export function getDatabaseConnection () {
|
||||
|
||||
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'
|
||||
}
|
||||
|
||||
24
src/routes/can-load-client.ts
Normal file
24
src/routes/can-load-client.ts
Normal 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'
|
||||
}
|
||||
Reference in New Issue
Block a user