diff --git a/sbchecker b/sbchecker deleted file mode 100644 index 110388a8..00000000 --- a/sbchecker +++ /dev/null @@ -1,629 +0,0 @@ -#include - -#define VERSION "2.3.1" -#define LISTBANS_USAGE "sm_listbans <#userid|name> - Lists a user's prior bans from Sourcebans" -#define DATABASE_PREFIX "sb" - -Menu g_PlayersMainMenu[MAXPLAYERS]; -int g_CurrentBanID[MAXPLAYERS]; -Database g_DB; - -public Plugin myinfo = -{ - name = "Sourcebans Ban Checker", - author = "TRANSLUCENT / MySQL by psychonic & Ca$h Munny", - description = "Looks up if a player has been a bad boy", - version = VERSION, - url = "http://www.unloze.com" -}; - -public void OnPluginStart() -{ - LoadTranslations("common.phrases"); - - RegAdminCmd("sm_listbans", OnListSourceBansCmd, ADMFLAG_BAN, LISTBANS_USAGE); - - Database.Connect(OnDatabaseConnected, "sourcebans"); -} - -public void OnMapStart() -{ - for (int i; i < MAXPLAYERS; i++) - { - g_CurrentBanID[i] = 0; - g_PlayersMainMenu[i] = null; - } -} - -public void OnDatabaseConnected(Database db, const char[] error, any data) -{ - if (db == null) - SetFailState("Failed to connect to SB db, %s", error); - - g_DB = db; -} - -public Action OnListSourceBansCmd(int client, int args) -{ - if (args < 1) - { - ReplyToCommand(client, LISTBANS_USAGE); - return Plugin_Handled; - } - - if (client == 0) - { - ReplyToCommand(client, "This command is not supported through console."); - return Plugin_Handled; - } - - if (g_DB == INVALID_HANDLE) - { - ReplyToCommand(client, "Error: database not ready."); - return Plugin_Handled; - } - - char pattern[MAX_TARGET_LENGTH], target_name[MAX_TARGET_LENGTH]; - int target_list[MAXPLAYERS], target_count; - bool tn_is_ml; - - GetCmdArg(1, pattern, sizeof(pattern)); - - if ((target_count = ProcessTargetString(pattern, client, target_list, MAXPLAYERS, COMMAND_FILTER_NO_BOTS|COMMAND_FILTER_NO_MULTI, target_name, sizeof(target_name), tn_is_ml)) <= 0) - { - ReplyToTargetError(client, target_count, true); - return Plugin_Handled; - } - - char auth[32]; - if (!GetClientAuthId(target_list[0], AuthId_Steam2, auth, sizeof(auth)) - || auth[0] == 'B' || auth[9] == 'L') - { - ReplyToCommand(client, "Error: could not retrieve %N's steam id.", target_list[0]); - return Plugin_Handled; - } - - char query[1024]; - char ip[30]; - GetClientIP(target_list[0], ip, sizeof(ip)); - FormatEx(query, sizeof(query), "SELECT bid, created, %s_admins.user, length, reason, RemoveType FROM %s_bans LEFT JOIN %s_admins ON %s_bans.aid = %s_admins.aid WHERE ((type = 0 AND %s_bans.authid REGEXP '^STEAM_[0-9]:%s$') OR (type = 1 AND ip = '%s')) AND ((length > '0' AND ends > UNIX_TIMESTAMP()) OR RemoveType IS NOT NULL)", DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, auth[8], ip); - - char targetName[MAX_NAME_LENGTH]; - GetClientName(target_list[0], targetName, sizeof(targetName)); - - DataPack pack = new DataPack(); - pack.WriteCell(GetClientUserId(client)); - pack.WriteString(targetName); - - g_DB.Query(OnListBans, query, pack, DBPrio_Low); - - return Plugin_Handled; -} - -public void OnListBans(Database db, DBResultSet results, const char[] error, DataPack pack) -{ - pack.Reset(); - int clientuid = pack.ReadCell(); - int client = GetClientOfUserId(clientuid); - char targetName[MAX_NAME_LENGTH]; - pack.ReadString(targetName, sizeof(targetName)); - delete pack; - - if (client == 0) - return; - - if (db == null) - { - PrintToChat(client, "[SBChecker] Could not establish connection to the database"); - return; - } - - if (results == null) - { - PrintToChat(client, "[SBChecker] DB error while retrieving bans for %s:\n%s", targetName, error); - return; - } - - int count = results.RowCount; - - if (count == 0) - { - PrintToChat(client, "[SBChecker] No bans found for %s.", targetName); - return; - } - - char cBuffer[512]; - - Menu menu = new Menu(SBCheckerCallback); - - Format(cBuffer, sizeof(cBuffer), "Previous bans of %s (%i):\n ", targetName, count); - menu.SetTitle(cBuffer); - - while (results.FetchRow()) - { - char banid[12]; - char createddate[11] = ""; - char bannedby[MAX_NAME_LENGTH] = ""; - char lenstring[32] = "N/A"; - char reason[28]; - char RemoveType[9] = " "; - - if (!results.IsFieldNull(0)) - { - IntToString(results.FetchInt(0), banid, sizeof(banid)); - } - - if (!results.IsFieldNull(1)) - { - FormatTime(createddate, sizeof(createddate), "%Y-%m-%d", results.FetchInt(1)); - } - - if (!results.IsFieldNull(2)) - { - results.FetchString(2, bannedby, sizeof(bannedby)); - } - - // NOT NULL - int length = results.FetchInt(3); - if (length == 0) - { - Format(lenstring, sizeof(lenstring), "Permanent"); - } - if (length > 0) - { - CalculateLength(length, lenstring, sizeof(lenstring)); - } - - - // NOT NULL - results.FetchString(4, reason, sizeof(reason)); - - if (!results.IsFieldNull(5)) - { - results.FetchString(5, RemoveType, sizeof(RemoveType)); - if (StrEqual(RemoveType, "E", false)) - Format(RemoveType, sizeof(RemoveType), "Expired"); - - if (StrEqual(RemoveType, "U", false)) - Format(RemoveType, sizeof(RemoveType), "Unbanned"); - } - - Format(cBuffer, sizeof(cBuffer), "Banned in %s\n\nBanned by: %s\nLength: %s(%s)\nReason: %s\n ", createddate, bannedby, lenstring, RemoveType, reason); - menu.AddItem(banid, cBuffer); - } - menu.ExitButton = true; - menu.Display(client, MENU_TIME_FOREVER); -} - -public int SBCheckerCallback(Menu menu, MenuAction action, int client, int choice) -{ - switch(action) - { - case MenuAction_Select: - { - g_PlayersMainMenu[client] = menu; - char cBanid[12]; - int Banid; - - menu.GetItem(choice, cBanid, sizeof(cBanid)); - Banid = StringToInt(cBanid); - - - g_CurrentBanID[client] = Banid; - RequestBan(client, Banid); - - } - case MenuAction_End: - { - if (choice != MenuEnd_Selected) - delete menu; - } - } -} - -void CalculateLength(int banLength, char[] time, int len) // banLength in secs -{ - static const int secs[6] = {31536000, 2592000, 604800, 86400, 3600, 60 }; - static const char names[6][6] = { "years", "months", "weeks", "days", "hours", "mins" } - - int values[6] - int timeLeft = banLength; - - for (int i; i < 6; i++) - { - values[i] = timeLeft / secs[i]; - timeLeft = timeLeft % secs[i]; - } - - // print based on these ints, if they're 0, skip - - FormatEx(time, len, ""); - - for (int i; i < 6; i++) - { - if(values[i]) - { - Format(time, len, "%s%d %s ", time, values[i], names[i]); - } - } -} - -void RequestBan(int client, int banid) -{ - char query[1024]; - Format(query, sizeof(query), "SELECT %s_bans.bid, ip, name, created, %s_admins.user, ends, length, reason, %s_bans.type, RemoveType, admins2.user, RemovedOn, ureason, COUNT(%s_comments.bid) AS nc FROM %s_bans LEFT JOIN %s_admins ON %s_bans.aid = %s_admins.aid LEFT JOIN %s_admins admins2 ON %s_bans.RemovedBy = admins2.aid LEFT JOIN %s_comments ON %s_comments.bid = %s_bans.bid WHERE (%s_bans.bid = '%i');", DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, banid); - - //PrintToConsole(client, "%s", query); - - DataPack pack = new DataPack(); - pack.WriteCell(client); - pack.WriteCell(GetClientUserId(client)); - - g_DB.Query(DetailBanInfo, query, pack, DBPrio_Low); -} - -public void DetailBanInfo(Database db, DBResultSet results, const char[] error, DataPack pack) -{ - pack.Reset(); - - int client = pack.ReadCell(); - int checkclient = GetClientOfUserId(pack.ReadCell()); - - if (checkclient == 0) - { - delete g_PlayersMainMenu[client]; - return; - } - - - if (db == null) - { - PrintToChat(client, "[SBChecker] Could not establish connection to the database"); - delete g_PlayersMainMenu[client]; - return; - } - - if (results == null) - { - PrintToChat(client, "[SBChecker] DB error while retrieving bans for the requested ban ID:\n%s", error); - delete g_PlayersMainMenu[client]; - return; - } - - int count = results.RowCount; - - if (count == 0) - { - PrintToChat(client, "[SBChecker] No bans found with that ban id."); - delete g_PlayersMainMenu[client]; - return; - } - - results.FetchRow(); - - int banid = results.FetchInt(0); - - char cBuffer[512]; - - Panel panel = new Panel(); - - Format(cBuffer, sizeof(cBuffer), "More information on Ban ID %i:\n ", banid); - panel.SetTitle(cBuffer); - - char nickname[MAX_NAME_LENGTH] = ""; - char createddate[11] = ""; - char bannedby[MAX_NAME_LENGTH] = ""; - char ip[17] = ""; - char lenstring[32] = "N/A"; - char enddate[11] = "N/A"; - char reason[32]; - char RemoveType[9] = " "; - char BanType[12] = ""; - int comments = 0; - bool unbanned = false; - - if (!results.IsFieldNull(1)) - { - results.FetchString(1, ip, sizeof(ip)); - } - - if (!results.IsFieldNull(2)) - { - results.FetchString(2, nickname, sizeof(nickname)); - } - - if (!results.IsFieldNull(3)) - { - FormatTime(createddate, sizeof(createddate), "%Y-%m-%d", results.FetchInt(3)); - } - - if (!results.IsFieldNull(4)) - { - results.FetchString(4, bannedby, sizeof(bannedby)); - } - - if (!results.IsFieldNull(5)) - { - FormatTime(enddate, sizeof(enddate), "%Y-%m-%d", results.FetchInt(5)); - } - - int length = results.FetchInt(6); - if (length == 0) - { - Format(lenstring, sizeof(lenstring), "Permanent"); - } - if (length) - { - CalculateLength(length, lenstring, sizeof(lenstring)); - } - - if (!results.IsFieldNull(7)) - { - results.FetchString(7, reason, sizeof(reason)); - } - - int banidtype = results.FetchInt(8); - if (!banidtype) - Format(BanType, sizeof(BanType), "Steam ID"); - if (banidtype == 1) - Format(BanType, sizeof(BanType), "IP Address"); - - - if (!results.IsFieldNull(9)) - { - results.FetchString(9, RemoveType, sizeof(RemoveType)); - if (StrEqual(RemoveType, "E", false)) - Format(RemoveType, sizeof(RemoveType), "Expired"); - - if (StrEqual(RemoveType, "U", false)) - { - unbanned = true; - Format(RemoveType, sizeof(RemoveType), "Unbanned"); - } - - } - - Format(cBuffer, sizeof(cBuffer), "Banned on: %s", createddate); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Name when banned: %s", nickname); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "IP Address: %s", ip); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Banned by: %s", bannedby); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Length: %s", lenstring); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Reason: %s", reason); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Ends on: %s (%s)", enddate, RemoveType); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Ban Type: %s\n ", BanType); - - panel.DrawText(cBuffer); - - if (unbanned) - { - char removedon[11] = ""; - char removedby[MAX_NAME_LENGTH] = ""; - char ureason[32] = ""; - - if (!results.IsFieldNull(10)) - { - results.FetchString(10, removedby, sizeof(removedby)); - } - - if (!results.IsFieldNull(11)) - { - FormatTime(removedon, sizeof(removedon), "%Y-%m-%d", results.FetchInt(11)); - } - - if (!results.IsFieldNull(12)) - { - results.FetchString(12, ureason, sizeof(ureason)); - } - - Format(cBuffer, sizeof(cBuffer), "Unbanned on: %s", removedon); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Unbanned by: %s", removedby); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Unban reason: %s\n ", ureason); - - panel.DrawText(cBuffer); - - } - - comments = results.FetchInt(13); - - panel.CurrentKey = 2; - - if (!comments) - panel.DrawItem("View Comments (0)", ITEMDRAW_DISABLED); - else - { - Format(cBuffer, sizeof(cBuffer), "View Comments (%i)", comments); - panel.DrawItem(cBuffer); - } - - - panel.CurrentKey = 8; - - panel.DrawItem("Back", ITEMDRAW_CONTROL); - - panel.CurrentKey = 10; - - panel.DrawItem("Exit", ITEMDRAW_CONTROL); - - - //menu.ExitButton = true; - //menu.ExitBackButton = true; - panel.Send(client, DetailBanCallback, MENU_TIME_FOREVER); - delete panel; - -} - -public int DetailBanCallback(Menu menu, MenuAction action, int client, int choice) -{ - switch(action) - { - case MenuAction_Select: - { - if (choice == 2) - RequestComments(client, g_CurrentBanID[client]); - if (choice == 8) - g_PlayersMainMenu[client].Display(client, MENU_TIME_FOREVER); - if (choice == 10) - { - g_CurrentBanID[client] = 0; - delete g_PlayersMainMenu[client]; - } - } - - case MenuAction_Cancel: - { - delete g_PlayersMainMenu[client]; - g_CurrentBanID[client] = 0; - } - } -} - -void RequestComments(int client, int banid) -{ - char query[1024]; - FormatEx(query, sizeof(query), "SELECT added, %s_admins.user, commenttxt FROM %s_comments LEFT JOIN %s_admins ON %s_comments.aid = %s_admins.aid WHERE (%s_comments.bid = '%i');", DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, DATABASE_PREFIX, banid); - - DataPack pack = new DataPack(); - pack.WriteCell(client); - pack.WriteCell(GetClientUserId(client)); - - g_DB.Query(CommentsBanInfo, query, pack, DBPrio_Low); -} - -public void CommentsBanInfo(Database db, DBResultSet results, const char[] error, DataPack pack) -{ - pack.Reset(); - - int client = pack.ReadCell(); - int checkclient = GetClientOfUserId(pack.ReadCell()); - - if (checkclient == 0) - { - delete g_PlayersMainMenu[client]; - g_CurrentBanID[client] = 0; - return; - } - - - if (db == null) - { - PrintToChat(client, "[SBChecker] Could not establish connection to the database, returning to ban information."); - RequestBan( client, g_CurrentBanID[client]); - return; - } - - if (results == null) - { - PrintToChat(client, "[SBChecker] DB error while retrieving comments for the requested ban ID: %s, returning to ban information.", error); - RequestBan(client, g_CurrentBanID[client]); - return; - } - - int count = results.RowCount; - - if (count == 0) - { - PrintToChat(client, "[SBChecker] No comments with that ban id, returning to ban information."); - RequestBan(client, g_CurrentBanID[client]); - return; - } - - char cBuffer[512]; - - Panel panel = new Panel(); - - Format(cBuffer, sizeof(cBuffer), "Comments on Ban ID %i:\n ", g_CurrentBanID[client]); - panel.SetTitle(cBuffer); - - while (results.FetchRow()) - { - char addeddate[11] = ""; - char addedby[MAX_NAME_LENGTH] = ""; - char comment[128] = ""; - - FormatTime(addeddate, sizeof(addeddate), "%Y-%m-%d", results.FetchInt(0)); - - if (!results.IsFieldNull(1)) - { - results.FetchString(1, addedby, sizeof(addedby)); - } - - if (!results.IsFieldNull(2)) - { - results.FetchString(2, comment, sizeof(comment)); - } - - Format(cBuffer, sizeof(cBuffer), "Added on: %s", addeddate); - - panel.DrawItem(cBuffer, ITEMDRAW_DISABLED) - - Format(cBuffer, sizeof(cBuffer), "By: %s", addedby); - - panel.DrawText(cBuffer); - - Format(cBuffer, sizeof(cBuffer), "Comment:\n%s\n ", comment); - - panel.DrawText(cBuffer); - - } - - panel.CurrentKey = 8; - - panel.DrawItem("Back", ITEMDRAW_CONTROL); - - panel.CurrentKey = 10; - - panel.DrawItem("Exit", ITEMDRAW_CONTROL); - - panel.Send(client, CommentsBanCallback, MENU_TIME_FOREVER); - delete panel; -} - -public int CommentsBanCallback(Menu menu, MenuAction action, int client, int choice) -{ - switch(action) - { - case MenuAction_Select: - { - if (choice == 8) - RequestBan(client, g_CurrentBanID[client]); - if (choice == 10) - { - g_CurrentBanID[client] = 0; - delete g_PlayersMainMenu[client]; - } - } - - case MenuAction_Cancel: - { - delete g_PlayersMainMenu[client]; - g_CurrentBanID[client] = 0; - } - } -} \ No newline at end of file