Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Uncomment to use SQL
- #define SQL_MODE
- #include <amxmodx>
- #include <amxmisc>
- #if defined SQL_MODE
- #include <sqlx>
- #endif
- #define VERSION "1.4"
- #define MAX_CMDS 255
- new g_szCmds[MAX_CMDS][36]
- new g_iCmds = 0
- new g_szListed[MAX_CMDS][36]
- new g_iListCount = 0
- #if defined SQL_MODE
- new g_sqlHost
- new g_sqlUser
- new g_sqlPass
- new g_sqlDb
- new Handle:g_hSqlTuple;
- new iError, szError[ 128 ];
- new result
- new Sql:sql
- new Handle:hDb
- new bool:g_boolsqlOK = false
- #endif
- public plugin_init()
- {
- register_plugin("Command Logging",VERSION,"$uicid3")
- g_sqlHost = register_cvar("amx_cmd_log_host", "")
- g_sqlUser = register_cvar("amx_cmd_log_user", "")
- g_sqlPass = register_cvar("amx_cmd_log_pass", "")
- g_sqlDb = register_cvar("amx_cmd_log_db","")
- new szHost[ 64 ], szUser[ 64 ], szPass[ 64 ], szDb[ 64 ];
- get_pcvar_string( g_sqlHost, szHost, charsmax( szHost ) );
- get_pcvar_string( g_sqlUser, szUser, charsmax( szUser ) );
- get_pcvar_string( g_sqlPass, szPass, charsmax( szPass ) );
- get_pcvar_string( g_sqlDb, szDb, charsmax( szDb ) );
- g_hSqlTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDb );
- if( g_hSqlTuple == Empty_Handle ) return;
- hDb = SQL_Connect( g_hSqlTuple, iError, szError, charsmax( szError ) );
- register_cvar("amx_cmd_list","0")
- #if !defined SQL_MODE
- register_cvar("amx_cmd_log_file","2")
- register_cvar("amx_cmd_logging","3")
- #else
- set_task(0.4,"SetSQL")
- #endif
- set_task(0.1,"GetCmds")
- set_task(0.6,"GetList")
- }
- #if defined SQL_MODE
- public SetSQL()
- {
- if( hDb == Empty_Handle )
- {
- log_amx( "Failed to connect to database: (%d) %s", iError, szError );
- return;
- }
- new Handle:hQuery = SQL_PrepareQuery( hDb, "CREATE TABLE IF NOT EXISTS cmd_logs (\
- name VARCHAR(36) NOT NULL,\
- auth VARCHAR(35) NOT NULL,\
- command VARCHAR(15) NOT NULL,\
- args VARCHAR(101) NOT NULL,\
- none VARCHAR(35) NOT NULL PRIMARY KEY,\
- date DATETIME NOT NULL,\
- time DATETIME NOT NULL,\
- map VARCHAR(36) NOT NULL)" );
- if( !SQL_Execute( hQuery ) )
- {
- SQL_QueryError( hQuery, szError, charsmax( szError ) );
- log_amx( "Failed create table query: %s", szError );
- }
- SQL_FreeHandle( hQuery );
- SQL_FreeHandle( hDb );
- }
- #endif
- public GetCmds()
- {
- new flags
- for(new x = 0;x < 21;x++)
- flags |= (1<<x)
- flags |= (1<<24)
- new szInfo[46],Temp
- new i , iEnd
- g_iCmds = 0
- iEnd = get_concmdsnum(flags,-1)
- if(iEnd > MAX_CMDS)
- iEnd = MAX_CMDS
- for(i = 0;i < iEnd; i++)
- get_concmd(i,g_szCmds[g_iCmds++],35,Temp,szInfo,45,flags,1)
- new iStart = g_iCmds
- iEnd = get_clcmdsnum(flags)
- for(new x = iStart;x < iEnd; x++)
- get_clcmd(x,g_szCmds[g_iCmds++],35,Temp,szInfo,45,flags)
- return
- }
- public GetList()
- {
- new szFileName[65] , szConf[55]
- get_configsdir(szConf,54)
- format(szFileName,64,"%s/log_cmdlist.ini",szConf)
- szConf[0] = 0
- g_iListCount = 0
- if(!file_exists(szFileName))
- return
- new k = 0 , pos = 0 , szLine[36]
- while( read_file( szFileName, pos++, szLine, 35, k ))
- {
- if( szLine[0] == ';' || !k ) continue
- copy(g_szListed[g_iListCount],75,szLine)
- g_iListCount++
- }
- return
- }
- public client_command( id )
- {
- if( !is_user_admin(id) )
- return PLUGIN_CONTINUE
- new szCmd[36],szArgs[101]
- read_argv(0,szCmd,35)
- read_args(szArgs,100)
- remove_quotes(szArgs)
- switch(get_cvar_num("amx_cmd_list"))
- {
- case 0:
- {
- if(!IsCmd(szCmd))
- return PLUGIN_CONTINUE
- }
- case 1:
- {
- if( ( IsCmd(szCmd) && InList(szCmd) ) || !IsCmd(szCmd) )
- return PLUGIN_CONTINUE
- }
- case 2:
- {
- if( ( IsCmd(szCmd) && !( InList(szCmd)) ) || !IsCmd(szCmd) )
- return PLUGIN_CONTINUE
- }
- default:
- {
- if( ( IsCmd(szCmd) && InList(szCmd) ) || !IsCmd(szCmd) )
- return PLUGIN_CONTINUE
- }
- }
- #if defined SQL_MODE
- LogSQL(id,szCmd,szArgs)
- #else
- LogCmd(id,szCmd,szArgs)
- #endif
- return PLUGIN_CONTINUE
- }
- stock bool:IsCmd( szCmd[36] )
- {
- for(new i = 0; i < g_iCmds; i++)
- {
- if( equali(szCmd,g_szCmds[i]) )
- return true
- }
- return false
- }
- stock bool:InList( szCmd[36] )
- {
- for(new i = 0; i < g_iListCount; i++)
- {
- if( equali(szCmd,g_szListed[i]) )
- return true
- }
- return false
- }
- #if defined SQL_MODE
- public LogSQL(AdminID , szCmd[36] , szArgs[101])
- {
- if(!g_boolsqlOK)
- return PLUGIN_CONTINUE
- new szAdminName[36], szAdminAuth[32],szDate[26],szMap[36],szTime[16]
- get_user_name(AdminID,szAdminName,35)
- remove_quotes(szAdminName)
- while(replace(szAdminName,35,"'","")) { }
- get_user_authid(AdminID,szAdminAuth,31)
- get_time("%m-%d-%Y",szDate,25)
- get_time("%H:%M:%S",szTime,15)
- get_mapname(szMap,35)
- if(szArgs[0] == 0)
- format(szArgs,100,"<i>None</i>")
- result = SQL_PrepareQuery(sql,"INSERT INTO `cmd_logs` (`name`,`auth`,`command`,`args`,`date`,`time`,`map`) VALUES ('%s','%s','%s','%s','%s','%s','%s');",szAdminName,szAdminAuth,szCmd,szArgs,szDate,szTime,szMap)
- SQL_MoreResults(Result:result)
- return PLUGIN_CONTINUE
- }
- #else
- public LogCmd(AdminID , szCmd[36] , szArgs[101])
- {
- new szAdminName[36],szAdminAuth[32],szDate[26],szMap[36],szTime[26]
- new szLogMessage[256],szLogAuth[32]
- get_user_name(AdminID,szAdminName,35)
- get_user_authid(AdminID,szAdminAuth,31)
- get_mapname(szMap,35)
- get_time("%m-%d-%Y",szDate,25)
- get_time("%m-%d-%Y %H:%M:%S",szTime,25)
- copy(szLogAuth,31,szAdminAuth)
- while(replace(szLogAuth,31, ":" , "_" )) { }
- new szFileName[101],szBaseDir[76]
- get_basedir(szBaseDir,75)
- new len = format(szFileName,100,"%s/logs/Cmds/",szBaseDir)
- switch(get_cvar_num("amx_cmd_log_file"))
- {
- case 0: format(szFileName[len],100-len,"log.log")
- case 1: format(szFileName[len],100-len,"%s.log",szAdminName)
- case 2: format(szFileName[len],100-len,"%s.log",szLogAuth)
- case 3: format(szFileName[len],100-len,"%s.log",szDate)
- case 4: format(szFileName[len],100-len,"%s.log",szMap)
- default: format(szFileName[len],100-len,"%s.log",szLogAuth)
- }
- switch(get_cvar_num("amx_cmd_logging"))
- {
- case 0: format(szLogMessage,255,"ADMIN [%s] '%s' used '%s %s'",szTime,szAdminName,szCmd,szArgs)
- case 1: format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used '%s %s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
- case 2: format(szLogMessage,255,"ADMIN [%s] '%s' used Command '%s' with Args '%s'",szTime,szAdminName,szCmd,szArgs)
- case 3: format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used Command '%s' with Args '%s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
- default: format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used Command '%s' with Args '%s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
- }
- if(!file_exists(szFileName))
- {
- new szHeader[75]
- new k = format(szHeader,75,"*File Created By: Command Logger*^n")
- k += format(szHeader[k],75-k,"**A plugin Created by: $uicid3**^n")
- write_file(szFileName,szHeader,0)
- }
- write_file(szFileName,szLogMessage,-1)
- return PLUGIN_CONTINUE
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement