initial commit
This commit is contained in:
parent
bb82d7d8cc
commit
c1c85d36b8
189
unloze_BanDetector/scripting/unloze_BanDetector.sp
Normal file
189
unloze_BanDetector/scripting/unloze_BanDetector.sp
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
//====================================================================================================
|
||||||
|
//
|
||||||
|
// Name: i3D.net Ban Detector.
|
||||||
|
// Author: zaCade
|
||||||
|
// Description: Detect potential ban evasions.
|
||||||
|
//
|
||||||
|
//====================================================================================================
|
||||||
|
#undef REQUIRE_PLUGIN
|
||||||
|
#include <sourcemod>
|
||||||
|
#include <sourcebans>
|
||||||
|
#include <SteamWorks>
|
||||||
|
|
||||||
|
new G_iParentAuthID[MAXPLAYERS+1];
|
||||||
|
new G_iClientAuthID[MAXPLAYERS+1];
|
||||||
|
|
||||||
|
new bool:G_bSourcebansAvailable;
|
||||||
|
new Handle:G_hDatabase;
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Plugin:myinfo =
|
||||||
|
{
|
||||||
|
name = "UNLOZE Ban Detector",
|
||||||
|
author = "zaCade",
|
||||||
|
description = "Detect potential ban evasions",
|
||||||
|
version = "1.0",
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public OnPluginStart()
|
||||||
|
{
|
||||||
|
SQL_TConnect(SQL_OnConnected, "sourcebans");
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public OnAllPluginsLoaded()
|
||||||
|
{
|
||||||
|
if (LibraryExists("sourcebans"))
|
||||||
|
G_bSourcebansAvailable = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public OnLibraryAdded(const String:name[])
|
||||||
|
{
|
||||||
|
if (StrEqual("sourcebans", name))
|
||||||
|
G_bSourcebansAvailable = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public OnLibraryRemoved(const String:name[])
|
||||||
|
{
|
||||||
|
if (StrEqual("sourcebans", name))
|
||||||
|
G_bSourcebansAvailable = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public OnClientConnected(client)
|
||||||
|
{
|
||||||
|
G_iParentAuthID[client] = -1;
|
||||||
|
G_iClientAuthID[client] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public OnClientDisconnect(client)
|
||||||
|
{
|
||||||
|
G_iParentAuthID[client] = -1;
|
||||||
|
G_iClientAuthID[client] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public OnClientPostAdminCheck(client)
|
||||||
|
{
|
||||||
|
if (G_bSourcebansAvailable && !IsFakeClient(client))
|
||||||
|
{
|
||||||
|
if (G_iParentAuthID[client] != -1 && G_iClientAuthID[client] != -1)
|
||||||
|
CheckBans_SteamID(client, G_iParentAuthID[client], G_iClientAuthID[client]);
|
||||||
|
|
||||||
|
CheckBans_IPAdress(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public SteamWorks_OnValidateClient(parentAuthID, clientAuthID)
|
||||||
|
{
|
||||||
|
if (G_bSourcebansAvailable && parentAuthID != clientAuthID)
|
||||||
|
{
|
||||||
|
for (new client = 1; client <= MaxClients; client++)
|
||||||
|
{
|
||||||
|
if (IsClientConnected(client) && GetSteamAccountID(client) == clientAuthID)
|
||||||
|
{
|
||||||
|
if (!IsClientInGame(client))
|
||||||
|
{
|
||||||
|
G_iParentAuthID[client] = parentAuthID;
|
||||||
|
G_iClientAuthID[client] = clientAuthID;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CheckBans_SteamID(client, parentAuthID, clientAuthID);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public CheckBans_SteamID(client, parentAuthID, clientAuthID)
|
||||||
|
{
|
||||||
|
new String:authid[32];
|
||||||
|
Format(authid, sizeof(authid), "STEAM_0:%d:%d", (parentAuthID & 1), (parentAuthID >> 1));
|
||||||
|
|
||||||
|
new String:query[512];
|
||||||
|
Format(query, sizeof(query), "SELECT * FROM sb_bans WHERE authid = '%s' AND ((length = 0 OR ends > UNIX_TIMESTAMP()) AND removetype IS NULL)", authid);
|
||||||
|
// Format(query, sizeof(query), "SELECT * FROM sb_bans WHERE authid = '%s' AND ((ends > '%d' AND length != '0') OR length = '0')", authid, GetTime());
|
||||||
|
|
||||||
|
LogMessage("[BanDetector] Checking family sharing user %L (AUTH: %s, PAUTH: %d, CAUTH: %d)", client, authid, parentAuthID, clientAuthID);
|
||||||
|
|
||||||
|
if (G_hDatabase != INVALID_HANDLE)
|
||||||
|
SQL_TQuery(G_hDatabase, SQL_OnCheckClientSteamID, query, client);
|
||||||
|
else
|
||||||
|
LogMessage("[BanDetector] Unable to check user %L (No database)", client);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public CheckBans_IPAdress(client)
|
||||||
|
{
|
||||||
|
new String:adress[32];
|
||||||
|
GetClientIP(client, adress, sizeof(adress));
|
||||||
|
|
||||||
|
new String:query[512];
|
||||||
|
Format(query, sizeof(query), "SELECT * FROM sb_bans WHERE ip = '%s' AND ((length = 0 OR ends > UNIX_TIMESTAMP()) AND removetype IS NULL AND (aid != 0 OR reason != 'Ban evasion (IP)')", adress);
|
||||||
|
// Format(query, sizeof(query), "SELECT * FROM sb_bans WHERE ip = '%s' AND ((ends > '%d' AND length != '0') OR length = '0') AND ((reason != 'Ban evasion (IP)' AND aid = '0') OR aid != '0')", adress, GetTime());
|
||||||
|
|
||||||
|
LogMessage("[BanDetector] Checking user %L (IP: %s)", client, adress);
|
||||||
|
|
||||||
|
if (G_hDatabase != INVALID_HANDLE)
|
||||||
|
SQL_TQuery(G_hDatabase, SQL_OnCheckClientIP, query, client);
|
||||||
|
else
|
||||||
|
LogMessage("[BanDetector] Unable to check user %L (No database)", client);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public SQL_OnConnected(Handle:owner, Handle:handle, const String:error[], any:data)
|
||||||
|
{
|
||||||
|
if (handle != INVALID_HANDLE)
|
||||||
|
G_hDatabase = handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public SQL_OnCheckClientSteamID(Handle:owner, Handle:handle, const String:error[], any:client)
|
||||||
|
{
|
||||||
|
if (handle != INVALID_HANDLE && SQL_FetchRow(handle))
|
||||||
|
SBBanPlayer(0, client, 0, "Ban evasion (FS)");
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public SQL_OnCheckClientIP(Handle:owner, Handle:handle, const String:error[], any:client)
|
||||||
|
{
|
||||||
|
if (handle != INVALID_HANDLE && SQL_FetchRow(handle))
|
||||||
|
SBBanPlayer(0, client, 0, "Ban evasion (IP)");
|
||||||
|
}
|
69
unloze_Clantag/scripting/unloze_Clantag.sp
Normal file
69
unloze_Clantag/scripting/unloze_Clantag.sp
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#include <sourcemod>
|
||||||
|
#include <cstrike>
|
||||||
|
|
||||||
|
#define CLANID "9110211"
|
||||||
|
#define GROUP "Game-Member"
|
||||||
|
|
||||||
|
public Plugin myinfo =
|
||||||
|
{
|
||||||
|
name = "UNLOZE Clantag",
|
||||||
|
author = "BotoX",
|
||||||
|
description = "Assign group to people wearing the UNLOZE clantag",
|
||||||
|
version = "1.0",
|
||||||
|
url = ""
|
||||||
|
};
|
||||||
|
|
||||||
|
public void OnPluginStart()
|
||||||
|
{
|
||||||
|
/* Handle late load */
|
||||||
|
for(int client = 1; client <= MaxClients; client++)
|
||||||
|
{
|
||||||
|
if(IsClientInGame(client) && IsClientAuthorized(client))
|
||||||
|
{
|
||||||
|
OnClientPostAdminFilter(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClientPostAdminFilter(int client)
|
||||||
|
{
|
||||||
|
CheckClantag(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClientSettingsChanged(int client)
|
||||||
|
{
|
||||||
|
CheckClantag(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheckClantag(int client)
|
||||||
|
{
|
||||||
|
if(!IsClientAuthorized(client))
|
||||||
|
return;
|
||||||
|
|
||||||
|
char sClanID[32];
|
||||||
|
GetClientInfo(client, "cl_clanid", sClanID, sizeof(sClanID));
|
||||||
|
|
||||||
|
if(!StrEqual(sClanID, CLANID))
|
||||||
|
return;
|
||||||
|
|
||||||
|
AdminId AdmID;
|
||||||
|
GroupId GrpID;
|
||||||
|
|
||||||
|
if ((AdmID = GetUserAdmin(client)) == INVALID_ADMIN_ID)
|
||||||
|
{
|
||||||
|
LogMessage("Creating new admin for %L", client);
|
||||||
|
|
||||||
|
AdmID = CreateAdmin("");
|
||||||
|
SetUserAdmin(client, AdmID, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((GrpID = FindAdmGroup(GROUP)) != INVALID_GROUP_ID)
|
||||||
|
{
|
||||||
|
if (AdminInheritGroup(AdmID, GrpID))
|
||||||
|
LogMessage("%L added to group %s", client, GROUP);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogMessage("%L group not found %s", client, GROUP);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user