exploit_listener: initial commit
This commit is contained in:
parent
721a888463
commit
aedc85f616
135
ExploitListener/scripting/exploit_listener.sp
Normal file
135
ExploitListener/scripting/exploit_listener.sp
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
#include <sourcemod>
|
||||||
|
|
||||||
|
|
||||||
|
#pragma newdecls required
|
||||||
|
#pragma semicolon 1
|
||||||
|
|
||||||
|
char g_sLogFile[PLATFORM_MAX_PATH];
|
||||||
|
char g_sLogFileRecording[PLATFORM_MAX_PATH];
|
||||||
|
bool g_bEvil[MAXPLAYERS + 1];
|
||||||
|
|
||||||
|
bool g_bRecording;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public void OnPluginStart()
|
||||||
|
{
|
||||||
|
BuildPath(Path_SM, g_sLogFile, sizeof(g_sLogFile), "logs/exploiter.txt");
|
||||||
|
BuildPath(Path_SM, g_sLogFileRecording, sizeof(g_sLogFileRecording), "logs/lag_recording.txt");
|
||||||
|
|
||||||
|
for(int client = 1; client <= MaxClients; client++)
|
||||||
|
{
|
||||||
|
if(IsValidClient(client) && IsClientAuthorized(client))
|
||||||
|
{
|
||||||
|
char sAuthID[32];
|
||||||
|
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID));
|
||||||
|
|
||||||
|
OnClientAuthorized(client, sAuthID);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
AddCommandListener(Command_CommandListener);
|
||||||
|
|
||||||
|
RegAdminCmd("sm_lag", Command_Record, ADMFLAG_KICK);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action Command_CommandListener(int client, const char[] command,int argc)
|
||||||
|
{
|
||||||
|
if (g_bRecording)
|
||||||
|
{
|
||||||
|
char sBuffer[1024];
|
||||||
|
GetCmdArgString(sBuffer, sizeof(sBuffer));
|
||||||
|
LogToFile(g_sLogFileRecording, "%L: [%s] [%s]", client, command, sBuffer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!g_bEvil[client])
|
||||||
|
return Plugin_Continue;
|
||||||
|
|
||||||
|
if (!IsValidClient(client))
|
||||||
|
return Plugin_Continue;
|
||||||
|
|
||||||
|
if (!IsClientAuthorized(client))
|
||||||
|
return Plugin_Continue;
|
||||||
|
|
||||||
|
char sBuffer[1024];
|
||||||
|
GetCmdArgString(sBuffer, sizeof(sBuffer));
|
||||||
|
|
||||||
|
LogToFile(g_sLogFile, "%L: [%s] [%s]", client, command, sBuffer);
|
||||||
|
}
|
||||||
|
return Plugin_Continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action Command_Record(int client, int args)
|
||||||
|
{
|
||||||
|
if (g_bRecording)
|
||||||
|
{
|
||||||
|
ReplyToCommand(client, "[SM] Lag is already being recorded.");
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_bRecording = true;
|
||||||
|
CreateTimer(30.0, StopRecording);
|
||||||
|
|
||||||
|
LogAction(client, -1, "\"%L\" initiated a Lag Recording", client);
|
||||||
|
for(int i = 1; i <= MaxClients; i++)
|
||||||
|
{
|
||||||
|
if(IsClientInGame(i) && !IsFakeClient(i) && CheckCommandAccess(i, "sm_lag", ADMFLAG_GENERIC))
|
||||||
|
PrintToChat(i, "[SM] Lag Recording has been started. Recording all client commands for the next 30s.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action StopRecording(Handle timer)
|
||||||
|
{
|
||||||
|
g_bRecording = false;
|
||||||
|
|
||||||
|
for(int i = 1; i <= MaxClients; i++)
|
||||||
|
{
|
||||||
|
if(IsClientInGame(i) && !IsFakeClient(i) && CheckCommandAccess(i, "sm_lag", ADMFLAG_GENERIC))
|
||||||
|
PrintToChat(i, "[SM] Lag Recording has been stopped.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public void OnClientAuthorized(int client, const char[] sAuthID)
|
||||||
|
{
|
||||||
|
if (IsValidClient(client) && StrEqual(sAuthID, "STEAM_0:1:439160990"))
|
||||||
|
g_bEvil[client] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public void OnClientDisconnect(int client)
|
||||||
|
{
|
||||||
|
g_bEvil[client] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
stock int IsValidClient(int client, bool nobots = true)
|
||||||
|
{
|
||||||
|
if (client <= 0 || client > MaxClients || !IsClientConnected(client) || (nobots && IsFakeClient(client)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return IsClientInGame(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user