]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/extra/m_sqllog.cpp
Updated copyrights in headers etc using perl inplace edit
[user/henk/code/inspircd.git] / src / modules / extra / m_sqllog.cpp
index ed110d6e459afa843459794e2efb27442c6dfb48..8e7deac8b8b71c0c6d6ea9df30d97d05974e22ef 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
+ *  InspIRCd is copyright (C) 2002-2004 ChatSpike-Dev.
  *                       E-mail:
  *                <brain@chatspike.net>
  *               <Craig@chatspike.net>
@@ -14,6 +14,8 @@
  * ---------------------------------------------------
  */
 
+using namespace std;
+
 #include <stdio.h>
 #include <string>
 #include <stdlib.h>
@@ -41,7 +43,7 @@
 #define LT_FLOOD       7
 #define LT_LOADMODULE  8
 
-/* $ModDesc: Allow/Deny connections based upon an arbitary SQL table */
+/* $ModDesc: Logs network-wide data to an SQL database */
 
 Server *Srv;
 
@@ -63,13 +65,21 @@ class ModuleSQLLog : public Module
                return (SQLModule);
        }
 
-       ModuleSQLLog()
+       ModuleSQLLog(Server* Me)
+               : Module::Module(Me)
        {
-               Srv = new Server;
+               Srv = Me;
                ReadConfig();
        }
 
-       virtual void OnRehash()
+       void Implements(char* List)
+       {
+               List[I_OnRehash] = List[I_OnOper] = List[I_OnGlobalOper] = List[I_OnKill] = 1;
+               List[I_OnPreCommand] = List[I_OnUserConnect] = List[I_OnGlobalConnect] = 1;
+               List[I_OnUserQuit] = List[I_OnLoadModule] = 1;
+       }
+
+       virtual void OnRehash(std::string parameter)
        {
                ReadConfig();
        }
@@ -100,26 +110,26 @@ class ModuleSQLLog : public Module
                 delete query;
                if (nid < 1)
                {
-                       SQLRequest* query = new SQLRequest(SQL_COUNT,dbid,"INSERT INTO ircd_log_actors VALUES('','"+nick+"')");
-                       Request queryrequest((char*)query, this, SQLModule);
-                       SQLResult* result = (SQLResult*)queryrequest.Send();
-                       if (result->GetType() == SQL_ERROR)
+                       SQLRequest* query2 = new SQLRequest(SQL_COUNT,dbid,"INSERT INTO ircd_log_actors VALUES('','"+nick+"')");
+                       Request queryrequest2((char*)query2, this, SQLModule);
+                       SQLResult* result2 = (SQLResult*)queryrequest2.Send();
+                       if (result2->GetType() == SQL_ERROR)
                        {
-                               Srv->Log(DEFAULT,"SQL log error: " + result->GetError());
+                               Srv->Log(DEFAULT,"SQL log error: " + result2->GetError());
                        }
-                       if (result)
+                       if (result2)
                                delete result;
-                       if (query)
-                               delete query;
+                       if (query2)
+                               delete query2;
                        nid = InsertNick(nick);
                }
                return nid;
        }
 
-       void InsertEntry(long category,long nickid,long hostid,long sourceid,unsigned long date)
+       void InsertEntry(unsigned long category,unsigned long nickid,unsigned long hostid,unsigned long sourceid,unsigned long date)
        {
                char querybuffer[MAXBUF];
-               snprintf(querybuffer,MAXBUF,"INSERT INTO ircd_log VALUES('',%d,%d,%d,%d,%lu)",category,nickid,hostid,sourceid,date);
+               snprintf(querybuffer,MAXBUF,"INSERT INTO ircd_log VALUES('',%lu,%lu,%lu,%lu,%lu)",(unsigned long)category,(unsigned long)nickid,(unsigned long)hostid,(unsigned long)sourceid,(unsigned long)date);
                SQLRequest* query = new SQLRequest(SQL_COUNT,dbid,querybuffer);
                Request queryrequest((char*)query, this, SQLModule);
                SQLResult* result = (SQLResult*)queryrequest.Send();
@@ -160,17 +170,17 @@ class ModuleSQLLog : public Module
                 delete query;
                 if (hid < 1)
                 {
-                        SQLRequest* query = new SQLRequest(SQL_COUNT,dbid,"INSERT INTO ircd_log_hosts VALUES('','"+host+"')");
-                        Request queryrequest((char*)query, this, SQLModule);
-                        SQLResult* result = (SQLResult*)queryrequest.Send();
-                       if (result->GetType() == SQL_ERROR)
+                        SQLRequest* query2 = new SQLRequest(SQL_COUNT,dbid,"INSERT INTO ircd_log_hosts VALUES('','"+host+"')");
+                        Request queryrequest2((char*)query2, this, SQLModule);
+                        SQLResult* result2 = (SQLResult*)queryrequest2.Send();
+                       if (result2->GetType() == SQL_ERROR)
                        {
-                               Srv->Log(DEFAULT,"SQL log error: " + result->GetError());
+                               Srv->Log(DEFAULT,"SQL log error: " + result2->GetError());
                        }
                         if (result)
-                                delete result;
+                                delete result2;
                        if (query)
-                               delete query;
+                               delete query2;
                         hid = InsertHost(host);
                 }
                 return hid;
@@ -185,31 +195,31 @@ class ModuleSQLLog : public Module
                long nickid = InsertNick(nick);
                long sourceid = InsertNick(source);
                long hostid = InsertHost(host);
-               InsertEntry(category,nickid,hostid,sourceid,time(NULL));
+               InsertEntry((unsigned)category,(unsigned)nickid,(unsigned)hostid,(unsigned)sourceid,(unsigned long)time(NULL));
        }
 
-       virtual void OnOper(userrec* user)
+       virtual void OnOper(userrec* user, std::string opertype)
        {
                AddLogEntry(LT_OPER,user->nick,user->host,user->server);
        }
 
-       virtual int OnKill(userrec* source, userrec* dest, std::string reason)
+       virtual void OnGlobalOper(userrec* user)
        {
-               AddLogEntry(LT_KILL,dest->nick,dest->host,source->nick);
-               return 0;
+               AddLogEntry(LT_OPER,user->nick,user->host,user->server);
        }
 
-       virtual int OnMeshToken(char token,string_list params,serverrec* source,serverrec* reply, std::string tcp_host,std::string ipaddr,int port)
+       virtual int OnKill(userrec* source, userrec* dest, std::string reason)
        {
-               if ((token == 'U') || (token == 's') || (token == 'S'))
-                       AddLogEntry(LT_SERVLINK,tcp_host,ipaddr,Srv->GetServerName());
+               AddLogEntry(LT_KILL,dest->nick,dest->host,source->nick);
                return 0;
        }
 
        virtual int OnPreCommand(std::string command, char **parameters, int pcnt, userrec *user)
        {
                if ((command == "GLINE") || (command == "KLINE") || (command == "ELINE") || (command == "ZLINE"))
-                       AddLogEntry(LT_XLINE,user->nick,parameters[0],user->server);
+               {
+                       AddLogEntry(LT_XLINE,user->nick,command[0]+std::string(":")+std::string(parameters[0]),user->server);
+               }
                return 0;
        }
 
@@ -218,7 +228,12 @@ class ModuleSQLLog : public Module
                AddLogEntry(LT_CONNECT,user->nick,user->host,user->server);
        }
 
-       virtual void OnUserQuit(userrec* user)
+       virtual void OnGlobalConnect(userrec* user)
+       {
+               AddLogEntry(LT_CONNECT,user->nick,user->host,user->server);
+       }
+
+       virtual void OnUserQuit(userrec* user, std::string reason)
        {
                AddLogEntry(LT_DISCONNECT,user->nick,user->host,user->server);
        }
@@ -230,7 +245,6 @@ class ModuleSQLLog : public Module
 
        virtual ~ModuleSQLLog()
        {
-               delete Srv;
        }
        
        virtual Version GetVersion()
@@ -251,9 +265,9 @@ class ModuleSQLLogFactory : public ModuleFactory
        {
        }
        
-       virtual Module * CreateModule()
+       virtual Module * CreateModule(Server* Me)
        {
-               return new ModuleSQLLog;
+               return new ModuleSQLLog(Me);
        }
        
 };