* | 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>
* ---------------------------------------------------
*/
+using namespace std;
+
#include <stdio.h>
#include <string>
#include <stdlib.h>
#include "channels.h"
#include "modules.h"
#include "inspircd.h"
+#include "helperfuncs.h"
#include "m_sql.h"
/* $ModDesc: Allows storage of oper credentials in an SQL table */
return (SQLModule);
}
- ModuleSQLOper()
+ ModuleSQLOper(Server* Me)
+ : Module::Module(Me)
{
- Srv = new Server;
+ Srv = Me;
Conf = new ConfigReader();
ReadConfig();
}
- virtual void OnRehash()
+ virtual void OnRehash(std::string parameter)
{
delete Conf;
Conf = new ConfigReader();
ReadConfig();
}
+ void Implements(char* List)
+ {
+ List[I_OnRehash] = List[I_OnPreCommand] = 1;
+ }
+
virtual int OnPreCommand(std::string command, char **parameters, int pcnt, userrec *user)
{
if (command == "OPER")
// sanitize the password (we dont want any mysql insertion exploits!)
std::string temp = "";
- for (int q = 0; q < password.length(); q++)
+ for (unsigned int q = 0; q < password.length(); q++)
{
if (password[q] == '\'')
{
}
password = temp;
temp = "";
- for (int v = 0; v < username.length(); v++)
+ for (unsigned int v = 0; v < username.length(); v++)
{
if (username[v] == '\'')
{
if ((TypeName == rowresult->GetField("type")) && (Srv->MatchText(pattern,rowresult->GetField("hostname"))));
{
/* found this oper's opertype */
- Srv->MeshSendAll("| "+std::string(user->nick)+" "+TypeName);
std::string HostName = Conf->ReadValue("type","host",j);
- Srv->ChangeHost(user,HostName);
+ if (HostName != "")
+ Srv->ChangeHost(user,HostName);
strlcpy(user->oper,TypeName.c_str(),NICKMAX);
WriteOpers("*** %s (%s@%s) is now an IRC operator of type %s",user->nick,user->ident,user->host,rowresult->GetField("type").c_str());
WriteServ(user->fd,"381 %s :You are now an IRC operator of type %s",user->nick,rowresult->GetField("type").c_str());
{
strcat(user->modes,"o");
WriteServ(user->fd,"MODE %s :+o",user->nick);
- Srv->MeshSendAll("M "+std::string(user->nick)+" +o");
Module* Logger = Srv->FindModule("m_sqllog.so");
if (Logger)
- Logger->OnOper(user);
+ Logger->OnOper(user,rowresult->GetField("type"));
+ AddOper(user);
log(DEFAULT,"OPER: %s!%s@%s opered as type: %s",user->nick,user->ident,user->host,rowresult->GetField("type").c_str());
}
break;
virtual ~ModuleSQLOper()
{
delete Conf;
- delete Srv;
}
virtual Version GetVersion()
{
}
- virtual Module * CreateModule()
+ virtual Module * CreateModule(Server* Me)
{
- return new ModuleSQLOper;
+ return new ModuleSQLOper(Me);
}
};