X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fextra%2Fm_ssl_oper_cert.cpp;h=312ec874b13bf2f0c2d5fdfb13b4159613c40424;hb=dd36852a52e8541306b76c5b88bce8ab9b36654c;hp=ee2b8153ef658b44dab1f3cf641930298a919125;hpb=019fb37fd69d00aebe860b879cbe8e3cebbdbdba;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/extra/m_ssl_oper_cert.cpp b/src/modules/extra/m_ssl_oper_cert.cpp index ee2b8153e..312ec874b 100644 --- a/src/modules/extra/m_ssl_oper_cert.cpp +++ b/src/modules/extra/m_ssl_oper_cert.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * InspIRCd: (C) 2002-2008 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see @@ -24,18 +24,18 @@ /** Handle /FINGERPRINT */ -class cmd_fingerprint : public command_t +class cmd_fingerprint : public Command { public: - cmd_fingerprint (InspIRCd* Instance) : command_t(Instance,"FINGERPRINT", 0, 1) + cmd_fingerprint (InspIRCd* Instance) : Command(Instance,"FINGERPRINT", 0, 1) { this->source = "m_ssl_oper_cert.so"; syntax = ""; } - CmdResult Handle (const char** parameters, int pcnt, userrec *user) + CmdResult Handle (const char* const* parameters, int pcnt, User *user) { - userrec* target = ServerInstance->FindNick(parameters[0]); + User* target = ServerInstance->FindNick(parameters[0]); if (target) { ssl_cert* cert; @@ -82,6 +82,8 @@ class ModuleOperSSLCert : public Module mycommand = new cmd_fingerprint(ServerInstance); ServerInstance->AddCommand(mycommand); cf = new ConfigReader(ServerInstance); + Implementation eventlist[] = { I_OnPreCommand, I_OnRehash }; + ServerInstance->Modules->Attach(eventlist, this, 2); } virtual ~ModuleOperSSLCert() @@ -89,12 +91,8 @@ class ModuleOperSSLCert : public Module delete cf; } - void Implements(char* List) - { - List[I_OnPreCommand] = List[I_OnRehash] = 1; - } - virtual void OnRehash(userrec* user, const std::string ¶meter) + virtual void OnRehash(User* user, const std::string ¶meter) { delete cf; cf = new ConfigReader(ServerInstance); @@ -114,8 +112,7 @@ class ModuleOperSSLCert : public Module return false; } - - virtual int OnPreCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, bool validated, const std::string &original_line) + virtual int OnPreCommand(const std::string &command, const char* const* parameters, int pcnt, User *user, bool validated, const std::string &original_line) { irc::string cmd = command.c_str(); @@ -127,6 +124,7 @@ class ModuleOperSSLCert : public Module std::string Password; std::string OperType; std::string HostName; + std::string HashType; std::string FingerPrint; bool SSLOnly; char* dummy; @@ -142,12 +140,13 @@ class ModuleOperSSLCert : public Module Password = cf->ReadValue("oper", "password", i); OperType = cf->ReadValue("oper", "type", i); HostName = cf->ReadValue("oper", "host", i); + HashType = cf->ReadValue("oper", "hash", i); FingerPrint = cf->ReadValue("oper", "fingerprint", i); SSLOnly = cf->ReadFlag("oper", "sslonly", i); if (SSLOnly || !FingerPrint.empty()) { - if ((!strcmp(LoginName.c_str(),parameters[0])) && (!ServerInstance->OperPassCompare(Password.c_str(),parameters[1],i)) && (OneOfMatches(TheHost,TheIP,HostName.c_str()))) + if ((!strcmp(LoginName.c_str(),parameters[0])) && (!ServerInstance->PassCompare(user, Password.c_str(),parameters[1], HashType.c_str())) && (OneOfMatches(TheHost,TheIP,HostName.c_str()))) { if (SSLOnly && !user->GetExt("ssl", dummy)) { @@ -176,26 +175,5 @@ class ModuleOperSSLCert : public Module } }; -class ModuleOperSSLCertFactory : public ModuleFactory -{ - public: - ModuleOperSSLCertFactory() - { - } - - ~ModuleOperSSLCertFactory() - { - } - - virtual Module * CreateModule(InspIRCd* Me) - { - return new ModuleOperSSLCert(Me); - } - -}; - +MODULE_INIT(ModuleOperSSLCert) -extern "C" void * init_module( void ) -{ - return new ModuleOperSSLCertFactory; -}