]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_oper.cpp
Fix for parameters which contain a colon (which is not the first char in the string)
[user/henk/code/inspircd.git] / src / cmd_oper.cpp
index 085b6983d84bbbe0b3ac5272d3bbeecab5a174b8..bf81ee19e641403b8429cea5db9c9377a11b4eb3 100644 (file)
  * ---------------------------------------------------
  */
 
-#include <string>
-#include <sstream>
-#include <vector>
-#include "inspircd_config.h"
 #include "configreader.h"
 #include "typedefs.h"
 #include "users.h"
-#include "globals.h"
 #include "modules.h"
-#include "dynamic.h"
 #include "wildcard.h"
-#include "message.h"
-#include "commands.h"
-#include "mode.h"
-#include "xline.h"
-#include "inspstring.h"
-#include "helperfuncs.h"
-#include "hashcomp.h"
-#include "socketengine.h"
-
-#include "command_parse.h"
 #include "commands/cmd_oper.h"
 
-extern InspIRCd* ServerInstance;
-extern int MODCOUNT;
-extern ModuleList modules;
-extern FactoryList factory;
-extern time_t TIME;
-
 bool OneOfMatches(const char* host, const char* ip, const char* hostlist)
 {
        std::stringstream hl(hostlist);
        std::string xhost;
        while (hl >> xhost)
        {
-               log(DEBUG,"Oper: Matching host %s",xhost.c_str());
                if (match(host,xhost.c_str()) || match(ip,xhost.c_str(),true))
                {
                        return true;
@@ -81,7 +58,7 @@ void cmd_oper::Handle (const char** parameters, int pcnt, userrec *user)
                ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "oper", "type", i, OperType, MAXBUF);
                ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "oper", "host", i, HostName, MAXBUF);
 
-               if ((!strcmp(LoginName,parameters[0])) && (!operstrcmp(Password,parameters[1])) && (OneOfMatches(TheHost,TheIP,HostName)))
+               if ((!strcmp(LoginName,parameters[0])) && (!ServerInstance->OperPassCompare(Password,parameters[1])) && (OneOfMatches(TheHost,TheIP,HostName)))
                {
                        fail2 = true;
                        for (j =0; j < ServerInstance->Config->ConfValueEnum(ServerInstance->Config->config_data, "type"); j++)
@@ -94,11 +71,11 @@ void cmd_oper::Handle (const char** parameters, int pcnt, userrec *user)
                                        ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "type","host", j, HostName, MAXBUF);
                                        if (*HostName)
                                                user->ChangeDisplayedHost(HostName);
-                                       if (!isnick(TypeName))
+                                       if (!ServerInstance->IsNick(TypeName))
                                        {
                                                user->WriteServ("491 %s :Invalid oper type (oper types must follow the same syntax as nicknames)",user->nick);
-                                               ServerInstance->WriteOpers("*** CONFIGURATION ERROR! Oper type invalid for OperType '%s'",OperType);
-                                               log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: credentials valid, but oper type erroneous.",user->nick,user->ident,user->host);
+                                               ServerInstance->SNO->WriteToSnoMask('o',"CONFIGURATION ERROR! Oper type invalid for OperType '%s'",OperType);
+                                               ServerInstance->Log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: credentials valid, but oper type erroneous.",user->nick,user->ident,user->host);
                                                return;
                                        }
                                        found = true;
@@ -113,7 +90,7 @@ void cmd_oper::Handle (const char** parameters, int pcnt, userrec *user)
        if (found)
        {
                /* correct oper credentials */
-               ServerInstance->WriteOpers("*** %s (%s@%s) is now an IRC operator of type %s",user->nick,user->ident,user->host,OperType);
+               ServerInstance->SNO->WriteToSnoMask('o',"%s (%s@%s) is now an IRC operator of type %s",user->nick,user->ident,user->host,OperType);
                user->WriteServ("381 %s :You are now an IRC operator of type %s",user->nick,OperType);
                if (!user->modes[UM_OPERATOR])
                        user->Oper(OperType);
@@ -123,15 +100,16 @@ void cmd_oper::Handle (const char** parameters, int pcnt, userrec *user)
                if (!fail2)
                {
                        user->WriteServ("491 %s :Invalid oper credentials",user->nick);
-                       ServerInstance->WriteOpers("*** WARNING! Failed oper attempt by %s!%s@%s!",user->nick,user->ident,user->host);
-                       log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: user, host or password did not match.",user->nick,user->ident,user->host);
+                       ServerInstance->SNO->WriteToSnoMask('o',"WARNING! Failed oper attempt by %s!%s@%s!",user->nick,user->ident,user->host);
+                       ServerInstance->Log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: user, host or password did not match.",user->nick,user->ident,user->host);
                }
                else
                {
                        user->WriteServ("491 %s :Your oper block does not have a valid opertype associated with it",user->nick);
-                       ServerInstance->WriteOpers("*** CONFIGURATION ERROR! Oper block mismatch for OperType %s",OperType);
-                       log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: credentials valid, but oper type nonexistent.",user->nick,user->ident,user->host);
+                       ServerInstance->SNO->WriteToSnoMask('o',"CONFIGURATION ERROR! Oper block mismatch for OperType %s",OperType);
+                       ServerInstance->Log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: credentials valid, but oper type nonexistent.",user->nick,user->ident,user->host);
                }
        }
        return;
 }
+