summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-05 19:05:38 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-05 19:05:38 +0000
commitb6b16a433d6ab428cb1f11f6e236d0daffbd4c8e (patch)
tree2f1fe6f42cd7574ca3567adf121661f8e7566fb6
parent789aa6c02af78a84b398e72c9fe5ac6906bc0680 (diff)
Here it is, the whole lot merged into one.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5860 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/modules/m_oper_hash.cpp170
-rw-r--r--src/modules/m_opermd5.cpp125
-rw-r--r--src/modules/m_opersha256.cpp117
3 files changed, 170 insertions, 242 deletions
diff --git a/src/modules/m_oper_hash.cpp b/src/modules/m_oper_hash.cpp
new file mode 100644
index 000000000..812228ca5
--- /dev/null
+++ b/src/modules/m_oper_hash.cpp
@@ -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
index 127bdaa39..000000000
--- a/src/modules/m_opermd5.cpp
+++ /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
index 9ed6e65df..000000000
--- a/src/modules/m_opersha256.cpp
+++ /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;
-}