added discord integration and updated create table script
This commit is contained in:
parent
532c3212ce
commit
2d3ef46f86
@ -1,9 +1,25 @@
|
|||||||
CREATE TABLE ban_detector (
|
CREATE TABLE `ban_detector` (
|
||||||
`fingerprint` varchar(512) NOT NULL,
|
`fingerprint` varchar(512) NOT NULL,
|
||||||
`ip` varchar(64) NOT NULL,
|
`ip` varchar(64) NOT NULL,
|
||||||
`steamid` varchar(64),
|
`steamid` varchar(64) DEFAULT NULL,
|
||||||
`name` varchar(128),
|
`name` varchar(128) DEFAULT NULL,
|
||||||
`logged_message` boolean default false,
|
`created_on` datetime DEFAULT CURRENT_TIMESTAMP
|
||||||
`created_on` datetime DEFAULT CURRENT_TIMESTAMP,
|
PRIMARY KEY (`fingerprint`,`ip`)
|
||||||
PRIMARY KEY (`fingerprint`, `ip`)
|
);
|
||||||
)
|
|
||||||
|
|
||||||
|
--usefull read query
|
||||||
|
select bd2.* from ban_detector bd2
|
||||||
|
inner join
|
||||||
|
(
|
||||||
|
SELECT fingerprint,
|
||||||
|
count(*) AS c
|
||||||
|
FROM ban_detector bd
|
||||||
|
GROUP BY fingerprint
|
||||||
|
HAVING c > 1
|
||||||
|
ORDER BY c DESC
|
||||||
|
) as t
|
||||||
|
on bd2.fingerprint = t.fingerprint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
28
jenz_ban_detector/scripting/include/jenz_ban_detector.inc
Normal file
28
jenz_ban_detector/scripting/include/jenz_ban_detector.inc
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#if defined _jenz_ban_detector_Included
|
||||||
|
#endinput
|
||||||
|
#endif
|
||||||
|
#define _jenz_ban_detector_Included
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after a client has been detected for ban avoiding
|
||||||
|
*
|
||||||
|
* @param client Client index of the target.
|
||||||
|
* @param detected_sourceban either steamID or IP of the detected sourceban ban
|
||||||
|
* @noreturn
|
||||||
|
*/
|
||||||
|
forward void BanDetectorPost(int client, const char[] detected_sourceban);
|
||||||
|
|
||||||
|
|
||||||
|
/* Do not edit below this line */
|
||||||
|
public SharedPlugin __pl_jenz_ban_detector =
|
||||||
|
{
|
||||||
|
name = "jenz_ban_detector",
|
||||||
|
file = "jenz_ban_detector.smx",
|
||||||
|
#if defined REQUIRE_PLUGIN
|
||||||
|
required = 1,
|
||||||
|
#else
|
||||||
|
required = 0,
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
|||||||
int validate_state [MAXPLAYERS + 1];
|
int validate_state [MAXPLAYERS + 1];
|
||||||
Database g_dDatabase;
|
Database g_dDatabase;
|
||||||
Database g_hDatabase_sourceban;
|
Database g_hDatabase_sourceban;
|
||||||
|
Handle g_hOnReportBanPostForward;
|
||||||
|
|
||||||
public Plugin myinfo =
|
public Plugin myinfo =
|
||||||
{
|
{
|
||||||
@ -22,9 +23,15 @@ public Plugin myinfo =
|
|||||||
url = "www.unloze.com"
|
url = "www.unloze.com"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
|
||||||
|
{
|
||||||
|
RegPluginLibrary("jenz_ban_detector");
|
||||||
|
return APLRes_Success;
|
||||||
|
}
|
||||||
|
|
||||||
public void OnPluginStart()
|
public void OnPluginStart()
|
||||||
{
|
{
|
||||||
|
g_hOnReportBanPostForward = CreateGlobalForward("BanDetectorPost", ET_Ignore, Param_Cell, Param_String);
|
||||||
if (!g_dDatabase)
|
if (!g_dDatabase)
|
||||||
{
|
{
|
||||||
Database.Connect(SQL_OnDatabaseConnect, "jenz_ban_detector");
|
Database.Connect(SQL_OnDatabaseConnect, "jenz_ban_detector");
|
||||||
@ -90,7 +97,7 @@ public void SQL_UpdateEntry(Database db, DBResultSet results, const char[] error
|
|||||||
char sQuery[g_dLength];
|
char sQuery[g_dLength];
|
||||||
char sSID[MAX_NAME_LENGTH];
|
char sSID[MAX_NAME_LENGTH];
|
||||||
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
||||||
Format(sQuery, sizeof(sQuery), "SELECT fingerprint FROM `ban_detector` where steamid = '%s' and detected_on_sourceban is NULL limit 1", sSID);
|
Format(sQuery, sizeof(sQuery), "SELECT fingerprint FROM `ban_detector` where steamid = '%s' limit 1", sSID);
|
||||||
//PrintToChatAll("sQuery: %s", sQuery);
|
//PrintToChatAll("sQuery: %s", sQuery);
|
||||||
g_dDatabase.Query(SQL_FindFingerPrints, sQuery, client, DBPrio_High);
|
g_dDatabase.Query(SQL_FindFingerPrints, sQuery, client, DBPrio_High);
|
||||||
}
|
}
|
||||||
@ -157,28 +164,22 @@ public void sql_select_sb_bans(Database db, DBResultSet results, const char[] er
|
|||||||
if (results.RowCount && results.FetchRow())
|
if (results.RowCount && results.FetchRow())
|
||||||
{
|
{
|
||||||
char sSID[MAX_NAME_LENGTH];
|
char sSID[MAX_NAME_LENGTH];
|
||||||
char sSIDClient[MAX_NAME_LENGTH];
|
|
||||||
GetClientAuthId(client, AuthId_Steam2, sSIDClient, sizeof(sSIDClient));
|
|
||||||
char sIP[MAX_NAME_LENGTH];
|
char sIP[MAX_NAME_LENGTH];
|
||||||
results.FetchString(0, sSID, sizeof(sSID));
|
results.FetchString(0, sSID, sizeof(sSID));
|
||||||
results.FetchString(1, sIP, sizeof(sIP));
|
results.FetchString(1, sIP, sizeof(sIP));
|
||||||
char sql_statement[512];
|
Call_StartForward(g_hOnReportBanPostForward);
|
||||||
Format(sql_statement, sizeof(sql_statement), "UPDATE `ban_detector` SET detected_on_sourceban = '%s' where steamid = '%s'", sSID, sSIDClient);
|
Call_PushCell(client);
|
||||||
if (strlen(sSID) == 0)
|
if (strlen(sSID) == 0)
|
||||||
{
|
{
|
||||||
Format(sql_statement, sizeof(sql_statement), "UPDATE `ban_detector` SET detected_on_sourceban = '%s' where steamid = '%s'", sIP, sSIDClient);
|
// use IP instead if no steamID
|
||||||
|
Call_PushString(sIP);
|
||||||
}
|
}
|
||||||
g_dDatabase.Query(SQL_UpdateLogged, sql_statement, _, DBPrio_High);
|
else
|
||||||
}
|
{
|
||||||
delete results;
|
//found steamID
|
||||||
}
|
Call_PushString(sSID);
|
||||||
|
}
|
||||||
public void SQL_UpdateLogged(Database db, DBResultSet results, const char[] error, any data)
|
Call_Finish();
|
||||||
{
|
|
||||||
if (!db || strlen(error))
|
|
||||||
{
|
|
||||||
LogError("Database error: %s", error);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
delete results;
|
delete results;
|
||||||
}
|
}
|
||||||
@ -209,7 +210,6 @@ public Action start_checks(Handle hTimer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void OnClientDisconnect(int client)
|
public void OnClientDisconnect(int client)
|
||||||
{
|
{
|
||||||
validate_state[client] = -1;
|
validate_state[client] = -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user