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