137 lines
4.3 KiB
JavaScript
137 lines
4.3 KiB
JavaScript
const getPlayerLicense = (src) => {
|
|
const playerIdentifiers = GetNumPlayerIdentifiers(src);
|
|
let playerLicense = "Not Found.";
|
|
for (let i = 0; i < playerIdentifiers; i++) {
|
|
if (GetPlayerIdentifier(src, i).includes("license")) {
|
|
playerLicense = GetPlayerIdentifier(src, i);
|
|
}
|
|
}
|
|
|
|
return playerLicense;
|
|
};
|
|
|
|
// Single combined handler for both ban and blacklist checks
|
|
on("playerConnecting", async (name, setKickReason, deferrals) => {
|
|
deferrals.defer();
|
|
const playerSource = global.source;
|
|
|
|
console.log(
|
|
`[mAdmin DEBUG] Player connecting: ${name} (Source: ${playerSource})`
|
|
);
|
|
|
|
// Get player identifiers
|
|
let playerSteam = "NULL";
|
|
let playerLicense = "NULL";
|
|
let playerDiscord = "NULL";
|
|
|
|
for (let i = 0; i < GetNumPlayerIdentifiers(playerSource); i++) {
|
|
const identifier = GetPlayerIdentifier(playerSource, i);
|
|
if (identifier.includes("license:")) {
|
|
playerLicense = identifier;
|
|
continue;
|
|
}
|
|
if (identifier.includes("steam:")) {
|
|
playerSteam = identifier;
|
|
continue;
|
|
}
|
|
if (identifier.includes("discord:")) {
|
|
playerDiscord = identifier;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
console.log(
|
|
`[mAdmin DEBUG] Player identifiers - License: ${playerLicense}, Steam: ${playerSteam}, Discord: ${playerDiscord}`
|
|
);
|
|
|
|
try {
|
|
// FIRST: Check for bans
|
|
const banQuery = `SELECT * FROM \`madmin_bans\` WHERE \`license\` = '${playerLicense}' OR \`steam\` = '${playerSteam}' OR \`discord\` = '${playerDiscord}'`;
|
|
console.log(`[mAdmin DEBUG] Checking bans with query: ${banQuery}`);
|
|
|
|
const banResult = await query(banQuery);
|
|
console.log(`[mAdmin DEBUG] Ban check result:`, banResult);
|
|
|
|
if (banResult && banResult.length > 0) {
|
|
console.log(`[mAdmin DEBUG] Ban found for player ${name}:`, banResult[0]);
|
|
|
|
// Permanent ban
|
|
if (banResult[0].endTime === 0) {
|
|
console.log(
|
|
`[mAdmin DEBUG] Permanent ban detected for player ${name} - DENYING CONNECTION`
|
|
);
|
|
return deferrals.done(
|
|
"\n\n<b><span style='color: red;'>You've been banned from server:</span></b>\n\n<b>" +
|
|
banResult[0].reason +
|
|
`</b>\n\nEnd Time: <b><span style='color: red'>Permanently Banned</span></b>`
|
|
);
|
|
}
|
|
|
|
// Temporary ban still active
|
|
if (banResult[0].endTime - Date.now() > 0) {
|
|
console.log(
|
|
`[mAdmin DEBUG] Temporary ban still active for player ${name}, ends at: ${moment(
|
|
banResult[0].endTime
|
|
).format("DD/MM/YYYY HH:mm:ss")} - DENYING CONNECTION`
|
|
);
|
|
return deferrals.done(
|
|
"\n\n<b><span style='color: red;'>You've been banned from server:</span></b>\n\n<b>" +
|
|
banResult[0].reason +
|
|
`</b>\n\nEnd Time: <b><span style='color: red'>${moment(
|
|
banResult[0].endTime
|
|
).format("DD/MM/YYYY HH:mm:ss")}</span></b>`
|
|
);
|
|
}
|
|
|
|
// Temporary ban expired - remove it
|
|
if (banResult[0].endTime - Date.now() <= 0) {
|
|
console.log(
|
|
`[mAdmin DEBUG] Temporary ban expired for player ${name}, removing from database`
|
|
);
|
|
await query(
|
|
`DELETE FROM \`madmin_bans\` WHERE \`id\` = ${banResult[0].id}`
|
|
);
|
|
console.log(`[mAdmin DEBUG] Expired ban removed for player ${name}`);
|
|
}
|
|
} else {
|
|
console.log(`[mAdmin DEBUG] No active bans found for player ${name}`);
|
|
}
|
|
|
|
// SECOND: Check for blacklist (only if not banned)
|
|
await cooldownWait(1);
|
|
const blacklistQuery = `SELECT * FROM \`madmin_blacklist\` WHERE \`license\` LIKE '%${
|
|
playerLicense.split(":")[1]
|
|
}'`;
|
|
console.log(
|
|
`[mAdmin DEBUG] Checking blacklist with query: ${blacklistQuery}`
|
|
);
|
|
|
|
const blacklistResult = await query(blacklistQuery);
|
|
console.log(`[mAdmin DEBUG] Blacklist check result:`, blacklistResult);
|
|
|
|
if (blacklistResult && blacklistResult.length > 0) {
|
|
console.log(
|
|
`[mAdmin DEBUG] Player ${name} is blacklisted - DENYING CONNECTION`
|
|
);
|
|
return deferrals.done(`
|
|
\n\n
|
|
<b>
|
|
<span style='color: white'>You're</span> <span style='color: black'>blacklisted</span> <span style='color: white'>from this server.</span>
|
|
</b>
|
|
`);
|
|
}
|
|
|
|
// THIRD: Allow connection if no bans or blacklists found
|
|
console.log(
|
|
`[mAdmin DEBUG] Player ${name} passed all checks - ALLOWING CONNECTION`
|
|
);
|
|
deferrals.done();
|
|
} catch (error) {
|
|
console.error(
|
|
`[mAdmin ERROR] Connection check failed for player ${name}:`,
|
|
error
|
|
);
|
|
deferrals.done();
|
|
}
|
|
});
|