X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_sqllog.cpp;h=2c4dd1513cb5ff21eb71371fc20d7448a8b12148;hb=de69e28a4a1aea89e410b693bbbb67890ecb0bd3;hp=73f53f8c0620832c5fd0f44378db9f8dcd532ed7;hpb=83454575bcdc969e73fb9026dc3533dfb22c27a2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_sqllog.cpp b/src/modules/m_sqllog.cpp index 73f53f8c0..2c4dd1513 100644 --- a/src/modules/m_sqllog.cpp +++ b/src/modules/m_sqllog.cpp @@ -56,40 +56,33 @@ public: void Go(SQLresult* res) { - SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("")); switch (qs) { case FIND_SOURCE: if (res->Rows() && sourceid == -1 && !insert) { sourceid = atoi(res->GetValue(0,0).d.c_str()); - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,actor FROM ircd_log_actors WHERE actor='?'") % nick); - if(req.Send()) - { - insert = false; - qs = FIND_NICK; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,actor FROM ircd_log_actors WHERE actor='?'") % nick); + req.Send(); + insert = false; + qs = FIND_NICK; + active_queries[req.id] = this; } else if (res->Rows() && sourceid == -1 && insert) { - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,actor FROM ircd_log_actors WHERE actor='?'") % source); - if(req.Send()) - { - insert = false; - qs = FIND_SOURCE; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,actor FROM ircd_log_actors WHERE actor='?'") % source); + req.Send(); + insert = false; + qs = FIND_SOURCE; + active_queries[req.id] = this; } else { - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("INSERT INTO ircd_log_actors (actor) VALUES('?')") % source); - if(req.Send()) - { - insert = true; - qs = FIND_SOURCE; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("INSERT INTO ircd_log_actors (actor) VALUES('?')") % source); + req.Send(); + insert = true; + qs = FIND_SOURCE; + active_queries[req.id] = this; } break; @@ -97,33 +90,27 @@ public: if (res->Rows() && nickid == -1 && !insert) { nickid = atoi(res->GetValue(0,0).d.c_str()); - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,hostname FROM ircd_log_hosts WHERE hostname='?'") % hostname); - if(req.Send()) - { - insert = false; - qs = FIND_HOST; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,hostname FROM ircd_log_hosts WHERE hostname='?'") % hostname); + req.Send(); + insert = false; + qs = FIND_HOST; + active_queries[req.id] = this; } else if (res->Rows() && nickid == -1 && insert) { - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,actor FROM ircd_log_actors WHERE actor='?'") % nick); - if(req.Send()) - { - insert = false; - qs = FIND_NICK; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,actor FROM ircd_log_actors WHERE actor='?'") % nick); + req.Send(); + insert = false; + qs = FIND_NICK; + active_queries[req.id] = this; } else { - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("INSERT INTO ircd_log_actors (actor) VALUES('?')") % nick); - if(req.Send()) - { - insert = true; - qs = FIND_NICK; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("INSERT INTO ircd_log_actors (actor) VALUES('?')") % nick); + req.Send(); + insert = true; + qs = FIND_NICK; + active_queries[req.id] = this; } break; @@ -131,44 +118,32 @@ public: if (res->Rows() && hostid == -1 && !insert) { hostid = atoi(res->GetValue(0,0).d.c_str()); - req = SQLrequest(MyMod, SQLModule, dbid, + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("INSERT INTO ircd_log (category_id,nick,host,source,dtime) VALUES('?','?','?','?','?')") % category % nickid % hostid % sourceid % date); - if(req.Send()) - { - insert = true; - qs = DONE; - active_queries[req.id] = this; - } + req.Send(); + insert = true; + qs = DONE; + active_queries[req.id] = this; } else if (res->Rows() && hostid == -1 && insert) { - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,hostname FROM ircd_log_hosts WHERE hostname='?'") % hostname); - if(req.Send()) - { - insert = false; - qs = FIND_HOST; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("SELECT id,hostname FROM ircd_log_hosts WHERE hostname='?'") % hostname); + req.Send(); + insert = false; + qs = FIND_HOST; + active_queries[req.id] = this; } else { - req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("INSERT INTO ircd_log_hosts (hostname) VALUES('?')") % hostname); - if(req.Send()) - { - insert = true; - qs = FIND_HOST; - active_queries[req.id] = this; - } + SQLrequest req = SQLrequest(MyMod, SQLModule, dbid, SQLquery("INSERT INTO ircd_log_hosts (hostname) VALUES('?')") % hostname); + req.Send(); + insert = true; + qs = FIND_HOST; + active_queries[req.id] = this; } break; case DONE: - std::map::iterator x = active_queries.find(req.id); - if (x != active_queries.end()) - { - delete x->second; - active_queries.erase(x); - } break; } } @@ -181,32 +156,25 @@ class ModuleSQLLog : public Module public: ModuleSQLLog() - { - ServerInstance->Modules->UseInterface("SQLutils"); - ServerInstance->Modules->UseInterface("SQL"); - + { Module* SQLutils = ServerInstance->Modules->Find("m_sqlutils.so"); if (!SQLutils) throw ModuleException("Can't find m_sqlutils.so. Please load m_sqlutils.so before m_sqlauth.so."); - SQLModule = ServerInstance->Modules->FindFeature("SQL"); + ServiceProvider* prov = ServerInstance->Modules->FindService(SERVICE_DATA, "SQL"); + if (!prov) + throw ModuleException("Can't find an SQL provider module. Please load one before attempting to load m_sqlauth."); + SQLModule = prov->creator; OnRehash(NULL); MyMod = this; active_queries.clear(); Implementation eventlist[] = { I_OnRehash, I_OnOper, I_OnGlobalOper, I_OnKill, - I_OnPreCommand, I_OnUserConnect, I_OnUserQuit, I_OnLoadModule, I_OnRequest }; - ServerInstance->Modules->Attach(eventlist, this, 9); - } - - virtual ~ModuleSQLLog() - { - ServerInstance->Modules->DoneWithInterface("SQL"); - ServerInstance->Modules->DoneWithInterface("SQLutils"); + I_OnPreCommand, I_OnUserRegister, I_OnUserQuit, I_OnLoadModule }; + ServerInstance->Modules->Attach(eventlist, this, 8); } - void ReadConfig() { ConfigReader Conf; @@ -218,14 +186,13 @@ class ModuleSQLLog : public Module ReadConfig(); } - virtual const char* OnRequest(Request* request) + void OnRequest(Request& request) { - if(strcmp(SQLRESID, request->GetId()) == 0) + if(strcmp(SQLRESID, request.id) == 0) { - SQLresult* res; + SQLresult* res = static_cast(&request); std::map::iterator n; - res = static_cast(request); n = active_queries.find(res->id); if (n != active_queries.end()) @@ -233,11 +200,7 @@ class ModuleSQLLog : public Module n->second->Go(res); active_queries.erase(n); } - - return SQLSUCCESS; } - - return NULL; } void AddLogEntry(int category, const std::string &nick, const std::string &host, const std::string &source) @@ -247,12 +210,10 @@ class ModuleSQLLog : public Module return; SQLrequest req = SQLrequest(this, SQLModule, dbid, SQLquery("SELECT id,actor FROM ircd_log_actors WHERE actor='?'") % source); - if(req.Send()) - { - QueryInfo* i = new QueryInfo(nick, source, host, req.id, category); - i->qs = FIND_SOURCE; - active_queries[req.id] = i; - } + req.Send(); + QueryInfo* i = new QueryInfo(nick, source, host, req.id, category); + i->qs = FIND_SOURCE; + active_queries[req.id] = i; } virtual void OnOper(User* user, const std::string &opertype) @@ -280,9 +241,10 @@ class ModuleSQLLog : public Module return MOD_RES_PASSTHRU; } - virtual void OnUserConnect(User* user) + virtual ModResult OnUserRegister(LocalUser* user) { AddLogEntry(LT_CONNECT,user->nick,user->host,user->server); + return MOD_RES_PASSTHRU; } virtual void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message) @@ -290,14 +252,14 @@ class ModuleSQLLog : public Module AddLogEntry(LT_DISCONNECT,user->nick,user->host,user->server); } - virtual void OnLoadModule(Module* mod, const std::string &name) + virtual void OnLoadModule(Module* mod) { - AddLogEntry(LT_LOADMODULE,name,ServerInstance->Config->ServerName, ServerInstance->Config->ServerName); + AddLogEntry(LT_LOADMODULE,mod->ModuleSourceFile,ServerInstance->Config->ServerName.c_str(), ServerInstance->Config->ServerName.c_str()); } virtual Version GetVersion() { - return Version("Logs network-wide data to an SQL database", VF_VENDOR, API_VERSION); + return Version("Logs network-wide data to an SQL database", VF_VENDOR); } };