]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_sqlauth.cpp
Fix left/right inversion in ListDifference
[user/henk/code/inspircd.git] / src / modules / m_sqlauth.cpp
index aefd54ef7759acc3b52d48c82371dc2fcedcfcdd..88de06d1afa8b9ffd2ef3ed519b696cbbd8ea5c7 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -35,16 +35,14 @@ class ModuleSQLAuth : public Module
 public:
        ModuleSQLAuth() : sqlAuthed("sqlauth", this)
        {
-               ServerInstance->Modules->UseInterface("SQLutils");
-               ServerInstance->Modules->UseInterface("SQL");
-
                SQLutils = ServerInstance->Modules->Find("m_sqlutils.so");
                if (!SQLutils)
                        throw ModuleException("Can't find m_sqlutils.so. Please load m_sqlutils.so before m_sqlauth.so.");
 
-               SQLprovider = ServerInstance->Modules->FindFeature("SQL");
-               if (!SQLprovider)
+               ServiceProvider* prov = ServerInstance->Modules->FindService(SERVICE_DATA, "SQL");
+               if (!prov)
                        throw ModuleException("Can't find an SQL provider module. Please load one before attempting to load m_sqlauth.");
+               SQLprovider = prov->creator;
 
                OnRehash(NULL);
                Implementation eventlist[] = { I_OnUserDisconnect, I_OnCheckReady, I_OnRehash, I_OnUserRegister };
@@ -53,11 +51,8 @@ public:
 
        virtual ~ModuleSQLAuth()
        {
-               ServerInstance->Modules->DoneWithInterface("SQL");
-               ServerInstance->Modules->DoneWithInterface("SQLutils");
        }
 
-
        void OnRehash(User* user)
        {
                ConfigReader Conf;
@@ -69,7 +64,7 @@ public:
                verbose         = Conf.ReadFlag("sqlauth", "verbose", 0);               /* Set to true if failed connects should be reported to operators */
        }
 
-       ModResult OnUserRegister(User* user)
+       ModResult OnUserRegister(LocalUser* user)
        {
                if ((!allowpattern.empty()) && (InspIRCd::Match(user->nick,allowpattern)))
                {
@@ -85,7 +80,7 @@ public:
                return MOD_RES_PASSTHRU;
        }
 
-       bool CheckCredentials(User* user)
+       bool CheckCredentials(LocalUser* user)
        {
                std::string thisquery = freeformquery;
                std::string safepass = user->password;
@@ -105,19 +100,13 @@ public:
                SearchAndReplace(thisquery, std::string("$server"), std::string(user->server));
                SearchAndReplace(thisquery, std::string("$uuid"), user->uuid);
 
-               Module* HashMod = ServerInstance->Modules->Find("m_md5.so");
-
-               if (HashMod)
-               {
-                       SearchAndReplace(thisquery, std::string("$md5pass"), HashRequest(this, HashMod, user->password).result);
-               }
-
-               HashMod = ServerInstance->Modules->Find("m_sha256.so");
+               HashProvider* md5 = ServerInstance->Modules->FindDataService<HashProvider>("hash/md5");
+               if (md5)
+                       SearchAndReplace(thisquery, std::string("$md5pass"), md5->hexsum(user->password));
 
-               if (HashMod)
-               {
-                       SearchAndReplace(thisquery, std::string("$sha256pass"), HashRequest(this, HashMod, user->password).result);
-               }
+               HashProvider* sha256 = ServerInstance->Modules->FindDataService<HashProvider>("hash/sha256");
+               if (sha256)
+                       SearchAndReplace(thisquery, std::string("$sha256pass"), sha256->hexsum(user->password));
 
                /* Build the query */
                SQLrequest req = SQLrequest(this, SQLprovider, databaseid, SQLquery(thisquery));
@@ -176,14 +165,14 @@ public:
                }
        }
 
-       ModResult OnCheckReady(User* user)
+       ModResult OnCheckReady(LocalUser* user)
        {
                return sqlAuthed.get(user) ? MOD_RES_PASSTHRU : MOD_RES_DENY;
        }
 
        Version GetVersion()
        {
-               return Version("Allow/Deny connections based upon an arbitary SQL table", VF_VENDOR, API_VERSION);
+               return Version("Allow/Deny connections based upon an arbitary SQL table", VF_VENDOR);
        }
 
 };