Compare commits

..

3 Commits

Author SHA1 Message Date
a3eb5ee70c Added authlib support 2025-12-28 22:10:14 +01:00
a7cf6ad5a1 Update logger.js 2025-12-28 21:46:02 +01:00
064703878c Update .env.example 2025-12-28 21:43:40 +01:00
5 changed files with 80 additions and 7 deletions

View File

@ -1,5 +1,24 @@
#Config
WEB_PORT=3000
IS_PROD=TRUE
DATABASE_HOST=host
DATABASE_USER=username
DATABASE_PASSWORD=Password
IS_PROD=FALSE
#MariaDB
DATABASE_HOST="host"
DATABASE_USER="username"
DATABASE_PASSWORD="Password"
DATABASE_NAME="database"
#Mojang API
SUPPORT_UUID_TO_NAME_HISTORY=TRUE
#Authlib-Injector
SUPPORT_AUTHLIB_INJECTOR=TRUE
SUPPORT_LEGACY_SKIN_API=TRUE #[legacy_skin_api]
SUPPORT_MOJANG_FALLBACK=FALSE #[no_mojang_namespace]
SUPPORT_MOJANG_TELEMETRY_BLOCKER=TRUE #[enable_mojang_anti_features]
SUPPORT_PROFILE_KEY=TRUE #[enable_profile_key]
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 = [
{
ignores: ["node_modules", "logs", "coverage", ".env", "*.log"],
ignores: ["node_modules", "data", "logs", "coverage", ".env", "*.log"],
},
js.configs.recommended,
{

View File

@ -6,8 +6,6 @@ require("dotenv").config({
quiet: true
})
process.setMaxListeners(15)
function cleanup($stream) {
if (!$stream.destroyed) {
$stream.end()

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
}