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.
45 lines
1.2 KiB
JavaScript
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
|
|
} |