]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/extra/m_ssl_oper_cert.cpp
Add extra parameter to OnUserPreNotice and OnUserPrePrivmsg, CUList &exempt_list...
[user/henk/code/inspircd.git] / src / modules / extra / m_ssl_oper_cert.cpp
index c862fac6ed33e7cfbc1c3c2f0544de6814e7cabc..220469e2fa7dfd01f5e596c05cca567093f11d92 100644 (file)
@@ -27,6 +27,8 @@ using namespace std;
 #include "ssl_cert.h"
 #include "wildcard.h"
 
+/** Handle /FINGERPRINT
+ */
 class cmd_fingerprint : public command_t
 {
  public:
@@ -36,7 +38,7 @@ class cmd_fingerprint : public command_t
                syntax = "<nickname>";
        }       
                  
-       void Handle (const char** parameters, int pcnt, userrec *user)
+       CmdResult Handle (const char** parameters, int pcnt, userrec *user)
        {
                userrec* target = ServerInstance->FindNick(parameters[0]);
                if (target)
@@ -45,18 +47,26 @@ class cmd_fingerprint : public command_t
                        if (target->GetExt("ssl_cert",cert))
                        {
                                if (cert->GetFingerprint().length())
+                               {
                                        user->WriteServ("NOTICE %s :Certificate fingerprint for %s is %s",user->nick,target->nick,cert->GetFingerprint().c_str());
+                                       return CMD_SUCCESS;
+                               }
                                else
+                               {
                                        user->WriteServ("NOTICE %s :Certificate fingerprint for %s does not exist!", user->nick,target->nick);
+                                       return CMD_FAILURE;
+                               }
                        }
                        else
                        {
                                user->WriteServ("NOTICE %s :Certificate fingerprint for %s does not exist!", user->nick, target->nick);
+                               return CMD_FAILURE;
                        }
                }
                else
                {
                        user->WriteServ("401 %s %s :No such nickname", user->nick, parameters[0]);
+                       return CMD_FAILURE;
                }
        }
 };
@@ -103,7 +113,7 @@ class ModuleOperSSLCert : public Module
        }
 
 
-       virtual int OnPreCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, bool validated)
+       virtual int OnPreCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, bool validated, const std::string &original_line)
        {
                irc::string cmd = command.c_str();
                
@@ -135,10 +145,10 @@ class ModuleOperSSLCert : public Module
                                        if ((!strcmp(LoginName,parameters[0])) && (!ServerInstance->OperPassCompare(Password,parameters[1])) && (OneOfMatches(TheHost,TheIP,HostName)))
                                        {
                                                /* This oper would match */
-                                               if (cert->GetFingerprint() != FingerPrint)
+                                               if ((!cert) || (cert->GetFingerprint() != FingerPrint))
                                                {
                                                        user->WriteServ("491 %s :This oper login name requires a matching key fingerprint.",user->nick);
-                                                       ServerInstance->SNO->WriteToSnoMask('o',"OPER: '%s' cannot oper, does not match fingerprint", user->nick);
+                                                       ServerInstance->SNO->WriteToSnoMask('o',"'%s' cannot oper, does not match fingerprint", user->nick);
                                                        ServerInstance->Log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: credentials valid, but wrong fingerprint.",user->nick,user->ident,user->host);
                                                        return 1;
                                                }
@@ -151,7 +161,7 @@ class ModuleOperSSLCert : public Module
 
        virtual Version GetVersion()
        {
-               return Version(1,1,0,0,VF_VENDOR);
+               return Version(1,1,0,0,VF_VENDOR,API_VERSION);
        }
 };