]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Here it is, the whole lot merged into one.
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 5 Dec 2006 19:05:38 +0000 (19:05 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 5 Dec 2006 19:05:38 +0000 (19:05 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5860 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_oper_hash.cpp [new file with mode: 0644]
src/modules/m_opermd5.cpp [deleted file]
src/modules/m_opersha256.cpp [deleted file]

diff --git a/src/modules/m_oper_hash.cpp b/src/modules/m_oper_hash.cpp
new file mode 100644 (file)
index 0000000..812228c
--- /dev/null
@@ -0,0 +1,170 @@
+/*       +------------------------------------+
+ *       | Inspire Internet Relay Chat Daemon |
+ *       +------------------------------------+
+ *
+ *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
+ *                       E-mail:
+ *                <brain@chatspike.net>
+ *               <Craig@chatspike.net>
+ *     
+ * Written by Craig Edwards, Craig McLure, and others.
+ * This program is free but copyrighted software; see
+ *            the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
+/* $ModDesc: Allows for hashed oper passwords */
+/* $ModDep: m_md5.h m_sha256.h */
+
+using namespace std;
+
+#include "inspircd_config.h"
+#include "users.h"
+#include "channels.h"
+#include "modules.h"
+#include "inspircd.h"
+
+#include "m_md5.h"
+#include "m_sha256.h"
+
+enum ProviderType
+{
+       PROV_MD5,
+       PROV_SHA
+};
+
+/* Handle /MKPASSWD
+ */
+class cmd_mkpasswd : public command_t
+{
+       Module* Provider;
+       Module* Sender;
+       ProviderType Prov;
+ public:
+       cmd_mkpasswd (InspIRCd* Instance, Module* Sender, Module* Hasher, ProviderType P) : command_t(Instance,"MKPASSWD", 'o', 1), Provider(Hasher), Prov(P)
+       {
+               this->source = "m_oper_hash.so";
+               syntax = "<any-text>";
+       }
+
+       CmdResult Handle (const char** parameters, int pcnt, userrec *user)
+       {
+               if (Prov == PROV_MD5)
+               {
+                       MD5ResetRequest(Sender, Provider).Send();
+                       user->WriteServ("NOTICE %s :MD5 hashed password for %s is %s",user->nick,parameters[0], MD5SumRequest(Sender, Provider, parameters[0]).Send() );
+               }
+               else
+               {
+                       SHA256ResetRequest(Sender, Provider).Send();
+                       user->WriteServ("NOTICE %s :SHA256 hashed password for %s is %s",user->nick,parameters[0], SHA256SumRequest(Sender, Provider, parameters[0]).Send() );
+               }
+
+               return CMD_SUCCESS;
+       }
+};
+
+class ModuleOperHash : public Module
+{
+       
+       cmd_mkpasswd* mycommand;
+       Module* Provider;
+       std::string providername;
+       ProviderType ID;
+
+ public:
+
+       ModuleOperHash(InspIRCd* Me)
+               : Module::Module(Me)
+       {
+               ConfigReader Conf(ServerInstance);
+               providername = Conf.ReadValue("operhash","algorithm",0);
+
+               if (providername.empty())
+                       providername = "md5";
+
+               if (providername == "md5")
+                       ID = PROV_MD5;
+               else
+                       ID = PROV_SHA;
+
+               /* Try to find the md5 service provider, bail if it can't be found */
+               Provider = ServerInstance->FindModule(std::string("m_") + providername + ".so");
+               if (!Provider)
+                       throw ModuleException(std::string("Can't find m_") + providername + ".so. Please load m_" + providername + ".so before m_oper_hash.so.");
+
+               mycommand = new cmd_mkpasswd(ServerInstance, this, Provider, ID);
+               ServerInstance->AddCommand(mycommand);
+       }
+       
+       virtual ~ModuleOperHash()
+       {
+       }
+
+       void Implements(char* List)
+       {
+               List[I_OnOperCompare] = 1;
+       }
+
+       virtual int OnOperCompare(const std::string &data, const std::string &input)
+       {
+               /* always always reset first */
+               if (ID == PROV_MD5)
+               {
+                       MD5ResetRequest(this, Provider).Send();
+                       if (data.length() == 32) // if its 32 chars long, try it as an md5
+                       {
+                               /* Does it match the md5 sum? */
+                               if (!strcasecmp(data.c_str(), MD5SumRequest(this, Provider, input.c_str()).Send()))
+                               {
+                                       return 1;
+                               }
+                               else return 0;
+                       }
+               }
+               else
+               {
+                       SHA256ResetRequest(this, Provider).Send();
+                       if (data.length() == SHA256_BLOCK_SIZE)
+                       {
+                               if (!strcasecmp(data.c_str(), SHA256SumRequest(this, Provider, input.c_str()).Send()))
+                               {
+                                       return 1;
+                               }
+                               else return 0;
+                       }
+               }
+               return 0;
+       }
+       
+       virtual Version GetVersion()
+       {
+               return Version(1,1,0,1,VF_VENDOR,API_VERSION);
+       }
+};
+
+
+class ModuleOperHashFactory : public ModuleFactory
+{
+ public:
+       ModuleOperHashFactory()
+       {
+       }
+       
+       ~ModuleOperHashFactory()
+       {
+       }
+       
+       virtual Module * CreateModule(InspIRCd* Me)
+       {
+               return new ModuleOperHash(Me);
+       }
+       
+};
+
+
+extern "C" void * init_module( void )
+{
+       return new ModuleOperHashFactory;
+}
diff --git a/src/modules/m_opermd5.cpp b/src/modules/m_opermd5.cpp
deleted file mode 100644 (file)
index 127bdaa..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*       +------------------------------------+
- *       | Inspire Internet Relay Chat Daemon |
- *       +------------------------------------+
- *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *               <Craig@chatspike.net>
- *     
- * Written by Craig Edwards, Craig McLure, and others.
- * This program is free but copyrighted software; see
- *            the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-/* $ModDesc: Allows for MD5 encrypted oper passwords */
-/* $ModDep: m_md5.h */
-
-using namespace std;
-
-#include "inspircd_config.h"
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
-#include "inspircd.h"
-
-#include "m_md5.h"
-
-/* Handle /MKPASSWD
- */
-class cmd_mkpasswd : public command_t
-{
-       Module* MD5Provider;
-       Module* Sender;
- public:
-       cmd_mkpasswd (InspIRCd* Instance, Module* Sender, Module* MD5) : command_t(Instance,"MKPASSWD", 'o', 1), MD5Provider(MD5)
-       {
-               this->source = "m_opermd5.so";
-               syntax = "<any-text>";
-       }
-
-       CmdResult Handle (const char** parameters, int pcnt, userrec *user)
-       {
-               MD5ResetRequest(Sender, MD5Provider).Send();
-               user->WriteServ("NOTICE %s :MD5 hashed password for %s is %s",user->nick,parameters[0], MD5SumRequest(Sender, MD5Provider, parameters[0]).Send() );
-               return CMD_SUCCESS;
-       }
-};
-
-class ModuleOperMD5 : public Module
-{
-       
-       cmd_mkpasswd* mycommand;
-       Module* MD5Provider;
-
- public:
-
-       ModuleOperMD5(InspIRCd* Me)
-               : Module::Module(Me)
-       {
-               /* Try to find the md5 service provider, bail if it can't be found */
-               MD5Provider = ServerInstance->FindModule("m_md5.so");
-               if (!MD5Provider)
-                       throw ModuleException("Can't find m_md5.so. Please load m_md5.so before m_opermd5.so.");
-
-               mycommand = new cmd_mkpasswd(ServerInstance, this, MD5Provider);
-               ServerInstance->AddCommand(mycommand);
-       }
-       
-       virtual ~ModuleOperMD5()
-       {
-       }
-
-       void Implements(char* List)
-       {
-               List[I_OnOperCompare] = 1;
-       }
-
-       virtual int OnOperCompare(const std::string &data, const std::string &input)
-       {
-               /* always always reset first */
-               MD5ResetRequest(this, MD5Provider).Send();
-               if (data.length() == 32) // if its 32 chars long, try it as an md5
-               {
-                       /* Does it match the md5 sum? */
-                       if (!strcasecmp(data.c_str(), MD5SumRequest(this, MD5Provider, input.c_str()).Send()))
-                       {
-                               return 1;
-                       }
-                       else return 0;
-               }
-               return 0;
-       }
-       
-       virtual Version GetVersion()
-       {
-               return Version(1,1,0,1,VF_VENDOR,API_VERSION);
-       }
-};
-
-
-class ModuleOperMD5Factory : public ModuleFactory
-{
- public:
-       ModuleOperMD5Factory()
-       {
-       }
-       
-       ~ModuleOperMD5Factory()
-       {
-       }
-       
-       virtual Module * CreateModule(InspIRCd* Me)
-       {
-               return new ModuleOperMD5(Me);
-       }
-       
-};
-
-
-extern "C" void * init_module( void )
-{
-       return new ModuleOperMD5Factory;
-}
diff --git a/src/modules/m_opersha256.cpp b/src/modules/m_opersha256.cpp
deleted file mode 100644 (file)
index 9ed6e65..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/*       +------------------------------------+
- *       | Inspire Internet Relay Chat Daemon |
- *       +------------------------------------+
- *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *                <Craig@chatspike.net>
- *     
- * Written by Craig Edwards, Craig McLure, and others.
- * This program is free but copyrighted software; see
- *            the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-/* m_opersha256 - Originally written by Special <john@yarbbles.com>
- * Updated December 2006 by Craig Edwards
- */
-
-/* $ModDesc: Allows for SHA-256 encrypted oper passwords */
-/* $ModDep: m_sha256.h */
-
-#include "inspircd_config.h"
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
-#include "inspircd.h"
-
-#include "m_sha256.h"
-
-class cmd_mksha256 : public command_t
-{
-       Module* Source;
-       Module* SHA256Provider;
- public:
-       cmd_mksha256 (InspIRCd* Instance, Module* Src, Module* SHA256) : command_t(Instance,"MKSHA256", 'o', 1), Source(Src), SHA256Provider(SHA256)
-       {
-               this->source = "m_opersha256.so";
-               syntax = "<any-text>";
-       }
-
-       CmdResult Handle(const char** parameters, int pcnt, userrec *user)
-       {
-               SHA256ResetRequest(Source, SHA256Provider).Send();
-               user->WriteServ("NOTICE %s :SHA256 hashed password for %s is %s", user->nick, parameters[0], SHA256SumRequest(Source, SHA256Provider, parameters[0]).Send() );
-               return CMD_SUCCESS;
-       }
-};
-
-class ModuleOperSHA256 : public Module
-{
-       cmd_mksha256 *mksha256cmd;
-       Module* SHA256Provider;
-public:
-
-       ModuleOperSHA256(InspIRCd* Me) : Module::Module(Me)
-       {
-               SHA256Provider = ServerInstance->FindModule("m_sha256.so");
-               if (!SHA256Provider)
-                       throw ModuleException("Can't find m_sha256.so. Please load m_sha256.so before m_opersha256.so.");
-
-               mksha256cmd = new cmd_mksha256(ServerInstance, this, SHA256Provider);
-               ServerInstance->AddCommand(mksha256cmd);
-       }
-
-       virtual ~ModuleOperSHA256()
-       {
-       }
-
-       void Implements(char *List)
-       {
-               List[I_OnOperCompare] = 1;
-       }
-
-       virtual int OnOperCompare(const std::string &data, const std::string &input)
-       {
-               SHA256ResetRequest(this, SHA256Provider).Send();
-               if (data.length() == SHA256_BLOCK_SIZE) // If the data is as long as a hex sha256 hash, try it as that
-               {
-                       if (!strcasecmp(data.c_str(), SHA256SumRequest(this, SHA256Provider, input.c_str()).Send() ))
-                               return 1;
-                       else
-                               return -1;
-               }
-               return 0;
-       }
-
-       virtual Version GetVersion()
-       {
-               return Version(1, 1, 0, 1, VF_VENDOR, API_VERSION);
-       }
-};
-
-
-class ModuleOperSHA256Factory : public ModuleFactory
-{
-public:
-       ModuleOperSHA256Factory()
-       {
-       }
-
-       ~ModuleOperSHA256Factory()
-       {
-       }
-
-       virtual Module *CreateModule(InspIRCd* Me)
-       {
-               return new ModuleOperSHA256(Me);
-       }
-
-};
-
-extern "C" void * init_module( void )
-{
-       return new ModuleOperSHA256Factory;
-}