Yggdrasil/modules/utils.js
azures04 bdb6457d1d Add session repository and profile signing utility
Introduces sessionRepository.js with functions for managing client and server sessions, blocked servers, skins, capes, and profile actions. Adds signProfileData to utils.js for signing profile data, and updates README project name.
2025-12-23 16:17:40 +01:00

45 lines
1.2 KiB
JavaScript

const path = require("node:path")
const Logger = require("./logger")
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
}