Added authlib support

This commit is contained in:
Gilles Lazures 2025-12-28 22:10:14 +01:00
parent a7cf6ad5a1
commit a3eb5ee70c
4 changed files with 62 additions and 2 deletions

View File

@ -17,4 +17,8 @@ SUPPORT_LEGACY_SKIN_API=TRUE #[legacy_skin_api]
SUPPORT_MOJANG_FALLBACK=FALSE #[no_mojang_namespace] SUPPORT_MOJANG_FALLBACK=FALSE #[no_mojang_namespace]
SUPPORT_MOJANG_TELEMETRY_BLOCKER=TRUE #[enable_mojang_anti_features] SUPPORT_MOJANG_TELEMETRY_BLOCKER=TRUE #[enable_mojang_anti_features]
SUPPORT_PROFILE_KEY=TRUE #[enable_profile_key] SUPPORT_PROFILE_KEY=TRUE #[enable_profile_key]
SUPPORT_ONLY_DEFAULT_USERNAME=true #[username_check] SUPPORT_ONLY_DEFAULT_USERNAME=true #[username_check]
SUPPORT_REGISTER=TRUE
REGISTER_ENDPOINT="/register"
HOMEPAGE_URL=
SERVER_NAME="Yggdrasil"

View File

@ -3,7 +3,7 @@ const globals = require("globals")
module.exports = [ module.exports = [
{ {
ignores: ["node_modules", "logs", "coverage", ".env", "*.log"], ignores: ["node_modules", "data", "logs", "coverage", ".env", "*.log"],
}, },
js.configs.recommended, js.configs.recommended,
{ {

17
routes/index.js Normal file
View File

@ -0,0 +1,17 @@
const express = require("express")
const router = express.Router()
const utils = require("../modules/utils")
const serverService = require("../services/serverService")
if (utils.isTrueFromDotEnv("SUPPORT_AUTHLIB_INJECTOR")) {
router.get("", (req, res) => {
const hostname = req.hostname
const metadata = serverService.getServerMetadata(hostname)
res.header("X-Authlib-Injector-Date", new Date().toISOString())
return res.status(200).json(metadata)
})
} else {
router.get("", (req, res, next) => next())
}
module.exports = router

39
services/serverService.js Normal file
View File

@ -0,0 +1,39 @@
const certs = require("../modules/certificatesManager")
const utils = require("../modules/utils")
const package = require("../package.json")
function getServerMetadata(hostname) {
const keys = certs.getKeys()
const publicKeyPEM = keys.playerCertificateKeys.public
const serverMeta = {
meta: {
serverName: process.env.SERVER_NAME || "Yggdrasil Server",
implementationName: package.name,
implementationVersion: package.version,
"feature.legacy_skin_api": utils.isTrueFromDotEnv("SUPPORT_LEGACY_SKIN_API"),
"feature.no_mojang_namespace": utils.isTrueFromDotEnv("SUPPORT_MOJANG_FALLBACK"),
"feature.enable_mojang_anti_features": utils.isTrueFromDotEnv("SUPPORT_MOJANG_TELEMETRY_BLOCKER"),
"feature.enable_profile_key": utils.isTrueFromDotEnv("SUPPORT_PROFILE_KEY"),
"feature.username_check": utils.isTrueFromDotEnv("SUPPORT_ONLY_DEFAULT_USERNAME"),
links: {
homepage: process.env.HOMEPAGE_URL || `http://${hostname}`,
}
},
skinDomains: [
hostname,
`.${hostname}`
],
signaturePublickey: publicKeyPEM
}
if (utils.isTrueFromDotEnv("SUPPORT_REGISTER")) {
serverMeta.meta.links.register = process.env.REGISTER_ENDPOINT || `http://${hostname}/register`
}
return serverMeta
}
module.exports = {
getServerMetadata
}