From ad679175176836afd37ba970fc779aeb5574778b Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Sun, 12 Jun 2022 09:16:15 -0500 Subject: [PATCH] Fix bans --- scripts/server/ban.js | 59 +++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/scripts/server/ban.js b/scripts/server/ban.js index 6f42cd31..2eacd1ff 100644 --- a/scripts/server/ban.js +++ b/scripts/server/ban.js @@ -15,7 +15,7 @@ function initBanScript() { // =========================================================================== function accountBanCommand(command, params, client) { - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -24,28 +24,30 @@ function accountBanCommand(command, params, client) { let targetClient = getPlayerFromParams(getParam(params, " ", 1)); let reason = splitParams.slice(1).join(" "); - if(!targetClient) { + if (!targetClient) { messagePlayerError(client, "That player is not connected!") return false; } // Prevent banning admins with really high permissions - if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { + if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } logToConsole(LOG_WARN, `[VRR.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name}) account was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`); - announceAdminAction(`PlayerAccountBanned`, `{ALTCOLOUR}${getPlayerName(client)}{MAINCOLOUR}`); + announceAdminAction(`PlayerAccountBanned`, `{ALTCOLOUR}${getPlayerName(targetClient)}{MAINCOLOUR}`); banAccount(getPlayerData(targetClient).accountData.databaseId, getPlayerData(client).accountData.databaseId, reason); - disconnectPlayer(client); + + getPlayerData(targetClient).customDisconnectReason = `Banned - ${reason}`; + disconnectPlayer(targetClient); } // =========================================================================== function subAccountBanCommand(command, params, client, fromDiscord) { - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -54,29 +56,30 @@ function subAccountBanCommand(command, params, client, fromDiscord) { let targetClient = getPlayerFromParams(getParam(params, " ", 1)); let reason = splitParams.slice(1).join(" "); - if(!targetClient) { + if (!targetClient) { messagePlayerError(client, "That player is not connected!") return false; } // Prevent banning admins with really high permissions - if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { + if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } logToConsole(LOG_WARN, `[VRR.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name})'s subaccount was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`); - announceAdminAction(`PlayerCharacterBanned`, `{ALTCOLOUR}${getPlayerName(client)}{MAINCOLOUR}`); + announceAdminAction(`PlayerCharacterBanned`, `{ALTCOLOUR}${getPlayerName(targetClient)}{MAINCOLOUR}`); banSubAccount(getPlayerData(targetClient).currentSubAccountData.databaseId, getPlayerData(client).accountData.databaseId, reason); - disconnectPlayer(client); + getPlayerData(targetClient).customDisconnectReason = `Banned - ${reason}`; + disconnectPlayer(targetClient); } // =========================================================================== function ipBanCommand(command, params, client, fromDiscord) { - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -85,13 +88,13 @@ function ipBanCommand(command, params, client, fromDiscord) { let targetClient = getPlayerFromParams(getParam(params, " ", 1)); let reason = splitParams.slice(1).join(" "); - if(!targetClient) { + if (!targetClient) { messagePlayerError(client, "That player is not connected!") return false; } // Prevent banning admins with really high permissions - if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { + if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } @@ -99,6 +102,7 @@ function ipBanCommand(command, params, client, fromDiscord) { announceAdminAction(`PlayerIPBanned`, `{ALTCOLOUR}${getPlayerName(targetClient)}{MAINCOLOUR}`); banIPAddress(getPlayerIP(targetClient), getPlayerData(client).accountData.databaseId, reason); + getPlayerData(targetClient).customDisconnectReason = `IP Banned - ${reason}`; serverBanIP(getPlayerIP(targetClient)); disconnectPlayer(targetClient); } @@ -106,7 +110,7 @@ function ipBanCommand(command, params, client, fromDiscord) { // =========================================================================== function subNetBanCommand(command, params, client, fromDiscord) { - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -116,13 +120,13 @@ function subNetBanCommand(command, params, client, fromDiscord) { let octetAmount = Number(getParam(params, " ", 2)); let reason = splitParams.slice(2).join(" "); - if(!targetClient) { + if (!targetClient) { messagePlayerError(client, "That player is not connected!") return false; } // Prevent banning admins with really high permissions - if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { + if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } @@ -130,6 +134,7 @@ function subNetBanCommand(command, params, client, fromDiscord) { announceAdminAction(`PlayerSubNetBanned`, `{ALTCOLOUR}${getPlayerName(client)}{MAINCOLOUR}`); banSubNet(getPlayerIP(targetClient), getSubNet(getPlayerIP(targetClient), octetAmount), getPlayerData(client).accountData.databaseId, reason); + getPlayerData(client).customDisconnectReason = `IP Subnet Banned - ${reason}`; serverBanIP(getPlayerIP(targetClient)); } @@ -137,7 +142,7 @@ function subNetBanCommand(command, params, client, fromDiscord) { function banAccount(accountId, adminAccountId, reason) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let safeReason = dbConnection.escapetoString(reason); let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${VRR_BANTYPE_ACCOUNT}, ${accountId}, ${adminAccountId}, '${safeReason}');`); freeDatabaseQuery(dbQuery); @@ -152,7 +157,7 @@ function banAccount(accountId, adminAccountId, reason) { function banSubAccount(subAccountId, adminAccountId, reason) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let safeReason = dbConnection.escapetoString(reason); let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${VRR_BANTYPE_SUBACCOUNT}, ${subAccountId}, ${adminAccountId}, '${safeReason}');`); freeDatabaseQuery(dbQuery); @@ -167,7 +172,7 @@ function banSubAccount(subAccountId, adminAccountId, reason) { function banIPAddress(ipAddress, adminAccountId, reason) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let safeReason = dbConnection.escapetoString(reason); let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${VRR_BANTYPE_IPADDRESS}, INET_ATON(${ipAddress}), ${adminAccountId}, '${safeReason}');`); freeDatabaseQuery(dbQuery); @@ -182,7 +187,7 @@ function banIPAddress(ipAddress, adminAccountId, reason) { function banSubNet(ipAddressStart, ipAddressEnd, adminAccountId, reason) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let safeReason = dbConnection.escapetoString(reason); let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_ip_start, ban_ip_end, ban_who_banned, ban_reason) VALUES (${VRR_BANTYPE_SUBNET}, INET_ATON(${ipAddressStart}), INET_ATON(${ipAddressEnd}), ${adminAccountId}, '${safeReason}');`); freeDatabaseQuery(dbQuery); @@ -197,7 +202,7 @@ function banSubNet(ipAddressStart, ipAddressEnd, adminAccountId, reason) { function unbanAccount(accountId, adminAccountId) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${VRR_BANTYPE_ACCOUNT} AND ban_detail=${accountId}`); freeDatabaseQuery(dbQuery); dbConnection.close(); @@ -211,7 +216,7 @@ function unbanAccount(accountId, adminAccountId) { function unbanSubAccount(subAccountId, adminAccountId) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${VRR_BANTYPE_SUBACCOUNT} AND ban_detail=${subAccountId}`); freeDatabaseQuery(dbQuery); dbConnection.close(); @@ -225,7 +230,7 @@ function unbanSubAccount(subAccountId, adminAccountId) { function unbanIPAddress(ipAddress, adminAccountId) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${VRR_BANTYPE_IPADDRESS} AND ban_detail=INET_ATON(${ipAddress})`); freeDatabaseQuery(dbQuery); dbConnection.close(); @@ -239,7 +244,7 @@ function unbanIPAddress(ipAddress, adminAccountId) { function unbanSubNet(ipAddressStart, ipAddressEnd, adminAccountId) { let dbConnection = connectToDatabase(); - if(dbConnection) { + if (dbConnection) { let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${VRR_BANTYPE_SUBNET} AND ban_ip_start=INET_ATON(${ipAddressStart}) AND ban_ip_end=INET_ATON(${ipAddressEnd})`); freeDatabaseQuery(dbQuery); dbConnection.close(); @@ -253,7 +258,7 @@ function unbanSubNet(ipAddressStart, ipAddressEnd, adminAccountId) { function isAccountBanned(accountId) { let bans = getServerData().bans.filter(ban => ban.type === VRR_BANTYPE_ACCOUNT && ban.detail === accountId); - if(bans.length > 0) { + if (bans.length > 0) { return true; } @@ -264,7 +269,7 @@ function isAccountBanned(accountId) { function isSubAccountBanned(subAccountId) { let bans = getServerData().bans.filter(ban => ban.type === VRR_BANTYPE_SUBACCOUNT && ban.detail === subAccountId); - if(bans.length > 0) { + if (bans.length > 0) { return true; } @@ -275,7 +280,7 @@ function isSubAccountBanned(subAccountId) { function isIpAddressBanned(ipAddress) { let bans = getServerData().bans.filter(ban => ban.type === VRR_BANTYPE_IPADDRESS && ban.detail === ipAddress); - if(bans.length > 0) { + if (bans.length > 0) { return true; }