Advertisement
Guest User

Command logger

a guest
May 21st, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.84 KB | None | 0 0
  1. //Uncomment to use SQL
  2. #define SQL_MODE
  3.  
  4. #include <amxmodx>
  5. #include <amxmisc>
  6. #if defined SQL_MODE
  7. #include <sqlx>
  8. #endif
  9.  
  10. #define VERSION "1.4"
  11.  
  12. #define MAX_CMDS 255
  13.  
  14. new g_szCmds[MAX_CMDS][36]
  15. new g_iCmds = 0
  16. new g_szListed[MAX_CMDS][36]
  17. new g_iListCount = 0
  18.  
  19. #if defined SQL_MODE
  20. new g_sqlHost
  21. new g_sqlUser
  22. new g_sqlPass
  23. new g_sqlDb
  24.  
  25. new Handle:g_hSqlTuple;
  26.  
  27. new iError, szError[ 128 ];
  28. new result
  29. new Sql:sql
  30. new Handle:hDb
  31.  
  32. new bool:g_boolsqlOK = false
  33. #endif
  34.  
  35. public plugin_init()
  36. {
  37. register_plugin("Command Logging",VERSION,"$uicid3")
  38.  
  39. g_sqlHost = register_cvar("amx_cmd_log_host", "")
  40. g_sqlUser = register_cvar("amx_cmd_log_user", "")
  41. g_sqlPass = register_cvar("amx_cmd_log_pass", "")
  42. g_sqlDb = register_cvar("amx_cmd_log_db","")
  43.  
  44. new szHost[ 64 ], szUser[ 64 ], szPass[ 64 ], szDb[ 64 ];
  45. get_pcvar_string( g_sqlHost, szHost, charsmax( szHost ) );
  46. get_pcvar_string( g_sqlUser, szUser, charsmax( szUser ) );
  47. get_pcvar_string( g_sqlPass, szPass, charsmax( szPass ) );
  48. get_pcvar_string( g_sqlDb, szDb, charsmax( szDb ) );
  49.  
  50. g_hSqlTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDb );
  51.  
  52. if( g_hSqlTuple == Empty_Handle ) return;
  53.  
  54.  
  55. hDb = SQL_Connect( g_hSqlTuple, iError, szError, charsmax( szError ) );
  56.  
  57. register_cvar("amx_cmd_list","0")
  58. #if !defined SQL_MODE
  59. register_cvar("amx_cmd_log_file","2")
  60. register_cvar("amx_cmd_logging","3")
  61. #else
  62. set_task(0.4,"SetSQL")
  63. #endif
  64. set_task(0.1,"GetCmds")
  65. set_task(0.6,"GetList")
  66.  
  67. }
  68.  
  69. #if defined SQL_MODE
  70. public SetSQL()
  71. {
  72.  
  73.  
  74. if( hDb == Empty_Handle )
  75. {
  76. log_amx( "Failed to connect to database: (%d) %s", iError, szError );
  77. return;
  78. }
  79. new Handle:hQuery = SQL_PrepareQuery( hDb, "CREATE TABLE IF NOT EXISTS cmd_logs (\
  80. name VARCHAR(36) NOT NULL,\
  81. auth VARCHAR(35) NOT NULL,\
  82. command VARCHAR(15) NOT NULL,\
  83. args VARCHAR(101) NOT NULL,\
  84. none VARCHAR(35) NOT NULL PRIMARY KEY,\
  85. date DATETIME NOT NULL,\
  86. time DATETIME NOT NULL,\
  87. map VARCHAR(36) NOT NULL)" );
  88.  
  89. if( !SQL_Execute( hQuery ) )
  90. {
  91. SQL_QueryError( hQuery, szError, charsmax( szError ) );
  92. log_amx( "Failed create table query: %s", szError );
  93. }
  94.  
  95. SQL_FreeHandle( hQuery );
  96. SQL_FreeHandle( hDb );
  97. }
  98. #endif
  99.  
  100. public GetCmds()
  101. {
  102. new flags
  103. for(new x = 0;x < 21;x++)
  104. flags |= (1<<x)
  105. flags |= (1<<24)
  106.  
  107. new szInfo[46],Temp
  108. new i , iEnd
  109.  
  110. g_iCmds = 0
  111.  
  112. iEnd = get_concmdsnum(flags,-1)
  113. if(iEnd > MAX_CMDS)
  114. iEnd = MAX_CMDS
  115.  
  116. for(i = 0;i < iEnd; i++)
  117. get_concmd(i,g_szCmds[g_iCmds++],35,Temp,szInfo,45,flags,1)
  118.  
  119. new iStart = g_iCmds
  120. iEnd = get_clcmdsnum(flags)
  121.  
  122. for(new x = iStart;x < iEnd; x++)
  123. get_clcmd(x,g_szCmds[g_iCmds++],35,Temp,szInfo,45,flags)
  124.  
  125. return
  126. }
  127. public GetList()
  128. {
  129. new szFileName[65] , szConf[55]
  130. get_configsdir(szConf,54)
  131. format(szFileName,64,"%s/log_cmdlist.ini",szConf)
  132. szConf[0] = 0
  133.  
  134. g_iListCount = 0
  135.  
  136. if(!file_exists(szFileName))
  137. return
  138.  
  139. new k = 0 , pos = 0 , szLine[36]
  140. while( read_file( szFileName, pos++, szLine, 35, k ))
  141. {
  142. if( szLine[0] == ';' || !k ) continue
  143.  
  144. copy(g_szListed[g_iListCount],75,szLine)
  145. g_iListCount++
  146. }
  147. return
  148. }
  149. public client_command( id )
  150. {
  151. if( !is_user_admin(id) )
  152. return PLUGIN_CONTINUE
  153.  
  154. new szCmd[36],szArgs[101]
  155. read_argv(0,szCmd,35)
  156. read_args(szArgs,100)
  157.  
  158. remove_quotes(szArgs)
  159.  
  160. switch(get_cvar_num("amx_cmd_list"))
  161. {
  162. case 0:
  163. {
  164. if(!IsCmd(szCmd))
  165. return PLUGIN_CONTINUE
  166. }
  167. case 1:
  168. {
  169. if( ( IsCmd(szCmd) && InList(szCmd) ) || !IsCmd(szCmd) )
  170. return PLUGIN_CONTINUE
  171. }
  172. case 2:
  173. {
  174. if( ( IsCmd(szCmd) && !( InList(szCmd)) ) || !IsCmd(szCmd) )
  175. return PLUGIN_CONTINUE
  176. }
  177. default:
  178. {
  179. if( ( IsCmd(szCmd) && InList(szCmd) ) || !IsCmd(szCmd) )
  180. return PLUGIN_CONTINUE
  181. }
  182. }
  183.  
  184. #if defined SQL_MODE
  185. LogSQL(id,szCmd,szArgs)
  186. #else
  187. LogCmd(id,szCmd,szArgs)
  188. #endif
  189.  
  190. return PLUGIN_CONTINUE
  191. }
  192.  
  193. stock bool:IsCmd( szCmd[36] )
  194. {
  195. for(new i = 0; i < g_iCmds; i++)
  196. {
  197. if( equali(szCmd,g_szCmds[i]) )
  198. return true
  199. }
  200. return false
  201. }
  202.  
  203. stock bool:InList( szCmd[36] )
  204. {
  205. for(new i = 0; i < g_iListCount; i++)
  206. {
  207. if( equali(szCmd,g_szListed[i]) )
  208. return true
  209. }
  210. return false
  211. }
  212.  
  213. #if defined SQL_MODE
  214. public LogSQL(AdminID , szCmd[36] , szArgs[101])
  215. {
  216. if(!g_boolsqlOK)
  217. return PLUGIN_CONTINUE
  218. new szAdminName[36], szAdminAuth[32],szDate[26],szMap[36],szTime[16]
  219. get_user_name(AdminID,szAdminName,35)
  220. remove_quotes(szAdminName)
  221. while(replace(szAdminName,35,"'","")) { }
  222. get_user_authid(AdminID,szAdminAuth,31)
  223. get_time("%m-%d-%Y",szDate,25)
  224. get_time("%H:%M:%S",szTime,15)
  225. get_mapname(szMap,35)
  226.  
  227. if(szArgs[0] == 0)
  228. format(szArgs,100,"<i>None</i>")
  229. 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)
  230.  
  231.  
  232. SQL_MoreResults(Result:result)
  233. return PLUGIN_CONTINUE
  234. }
  235. #else
  236. public LogCmd(AdminID , szCmd[36] , szArgs[101])
  237. {
  238. new szAdminName[36],szAdminAuth[32],szDate[26],szMap[36],szTime[26]
  239. new szLogMessage[256],szLogAuth[32]
  240.  
  241. get_user_name(AdminID,szAdminName,35)
  242. get_user_authid(AdminID,szAdminAuth,31)
  243. get_mapname(szMap,35)
  244. get_time("%m-%d-%Y",szDate,25)
  245. get_time("%m-%d-%Y %H:%M:%S",szTime,25)
  246. copy(szLogAuth,31,szAdminAuth)
  247. while(replace(szLogAuth,31, ":" , "_" )) { }
  248.  
  249. new szFileName[101],szBaseDir[76]
  250. get_basedir(szBaseDir,75)
  251. new len = format(szFileName,100,"%s/logs/Cmds/",szBaseDir)
  252. switch(get_cvar_num("amx_cmd_log_file"))
  253. {
  254. case 0: format(szFileName[len],100-len,"log.log")
  255. case 1: format(szFileName[len],100-len,"%s.log",szAdminName)
  256. case 2: format(szFileName[len],100-len,"%s.log",szLogAuth)
  257. case 3: format(szFileName[len],100-len,"%s.log",szDate)
  258. case 4: format(szFileName[len],100-len,"%s.log",szMap)
  259. default: format(szFileName[len],100-len,"%s.log",szLogAuth)
  260. }
  261. switch(get_cvar_num("amx_cmd_logging"))
  262. {
  263. case 0: format(szLogMessage,255,"ADMIN [%s] '%s' used '%s %s'",szTime,szAdminName,szCmd,szArgs)
  264. case 1: format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used '%s %s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
  265. case 2: format(szLogMessage,255,"ADMIN [%s] '%s' used Command '%s' with Args '%s'",szTime,szAdminName,szCmd,szArgs)
  266. case 3: format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used Command '%s' with Args '%s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
  267. default: format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used Command '%s' with Args '%s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
  268. }
  269. if(!file_exists(szFileName))
  270. {
  271. new szHeader[75]
  272. new k = format(szHeader,75,"*File Created By: Command Logger*^n")
  273. k += format(szHeader[k],75-k,"**A plugin Created by: $uicid3**^n")
  274. write_file(szFileName,szHeader,0)
  275.  
  276. }
  277. write_file(szFileName,szLogMessage,-1)
  278. return PLUGIN_CONTINUE
  279. }
  280. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement