This commit is contained in:
2025-04-29 18:06:04 +02:00
parent e7c8f811af
commit 5882e46344
4 changed files with 400 additions and 6 deletions

View File

@@ -13,7 +13,16 @@ function initDB() {
banned_by TEXT,
remote_ip TEXT,
reason TEXT
)`)
)
`)
db.exec(`
CREATE TABLE IF NOT EXISTS api_keys (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT NOT NULL,
delivered_by TEXT NOT NULL,
delivered_at TEXT DEFAULT CURRENT_TIMESTAMP,
)
`)
}
function banLauncher(last_minecraft_uuid, hardware_id, banned_by, remote_ip, reason) {
@@ -56,9 +65,72 @@ function getBan(hardware_id) {
return stmt.get(hardware_id)
}
function isTokenValid(token) {
const query = 'SELECT * FROM api_keys WHERE key = ?'
const stmt = db.prepare(query)
const result = stmt.get(token)
return !!result
}
function createToken(key, delivered_by) {
const query = `
INSERT INTO api_keys (key, delivered_by)
VALUES (?, ?)
`
try {
const stmt = db.prepare(query)
stmt.run(key, delivered_by)
return true
} catch (error) {
logger.error("[DATABASE] <CreateToken:Error>")
logger.error(error)
return false
}
}
function revokeToken(key) {
const query = `DELETE FROM api_keys WHERE key = ?`
try {
const stmt = db.prepare(query)
const result = stmt.run(key)
if (result.changes === 0) {
logger.log("[DATABASE] <RevokeToken:Warn>")
logger.log(`No token with this key<${key}> exists`)
}
return true
} catch (error) {
logger.error("[DATABASE] <RevokeToken:Error>")
logger.error(error)
return false
}
}
function regenerateToken(oldKey, newKey) {
const query = `UPDATE api_keys SET key = ? WHERE key = ?`
try {
const stmt = db.prepare(query)
const result = stmt.run(newKey, oldKey)
if (result.changes === 0) {
logger.log("[DATABASE] <UpdateToken:Warn>")
logger.log(`No token with this key<${oldKey}> exists`)
}
return true
} catch (error) {
logger.error("[DATABASE] <UpdateToken:Error>")
logger.error(error)
return false
}
}
module.exports = {
initDB,
getBan,
banLauncher,
unbanLauncher
unbanLauncher,
isTokenValid,
createToken,
revokeToken,
regenerateToken
}