Yggdrasil/modules/utils.js
azures04 80bca31d9a Add session server routes and SessionError class
Introduces new session server endpoints for hasJoined and profile lookup, adds a SessionError class for improved error handling, and updates error exports. Also renames sessionRepository and sessionService files to sessionsRepository and sessionsService for consistency, and sets max listeners in logger.
2025-12-24 02:35:04 +01:00

46 lines
1.2 KiB
JavaScript

const path = require("node:path")
const Logger = require("./logger")
const crypto = require("node:crypto")
const logger = Logger.createLogger(path.join(__dirname, ".."))
const certificatesManager = require("./certificatesManager")
const serverKeys = certificatesManager.getKeys()
async function getRegistrationCountryFromIp(ipAddress) {
const apiUrl = `https://ip-api.com/json/${ipAddress}?fields=countryCode`
try {
const response = await fetch(apiUrl)
if (!response.ok) {
return "FR"
}
const data = await response.json()
if (data && data.countryCode) {
const countryCode = data.countryCode
return countryCode
} else {
return "FR"
}
} catch (error) {
return "??"
}
}
function signProfileData(dataBase64) {
try {
const privateKey = serverKeys.playerCertificateKeys.private
const signer = crypto.createSign("SHA1")
signer.update(dataBase64)
signer.end()
return signer.sign(privateKey, "base64")
} catch (err) {
console.error("Signing failed:", err)
return null
}
}
module.exports = {
getRegistrationCountryFromIp,
signProfileData
}