X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_sqlauth.cpp;h=0ae51a86eaa339d0bcb79e0bd5b5b3ce3a9e2243;hb=80e81e3b81b779901fd9d67f8ae030ee30c0bcec;hp=5c3c5a84ef66e1c7416adabac20a64d9a30841e4;hpb=77730fd5f09f8fc193205654c8bba84d34365670;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_sqlauth.cpp b/src/modules/m_sqlauth.cpp index 5c3c5a84e..0ae51a86e 100644 --- a/src/modules/m_sqlauth.cpp +++ b/src/modules/m_sqlauth.cpp @@ -1,7 +1,14 @@ /* * InspIRCd -- Internet Relay Chat Daemon * + * Copyright (C) 2015 Daniel Vassdal + * Copyright (C) 2013, 2017-2019 Sadie Powell + * Copyright (C) 2012-2015 Attila Molnar + * Copyright (C) 2012, 2019 Robby * Copyright (C) 2009-2010 Daniel De Graaf + * Copyright (C) 2007-2008 Robin Burchell + * Copyright (C) 2007 Dennis Friis + * Copyright (C) 2005, 2007-2008, 2010 Craig Edwards * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -49,7 +56,7 @@ class AuthQuery : public SQL::Query void OnResult(SQL::Result& res) CXX11_OVERRIDE { - LocalUser* user = static_cast(ServerInstance->FindUUID(uid)); + LocalUser* user = IS_LOCAL(ServerInstance->FindUUID(uid)); if (!user) return; @@ -86,7 +93,7 @@ class AuthQuery : public SQL::Query } if (verbose) - ServerInstance->SNO->WriteGlobalSno('a', "Forbidden connection from %s (Password from the SQL query did not match the user provided password)", user->GetFullRealHost().c_str()); + ServerInstance->SNO->WriteGlobalSno('a', "Forbidden connection from %s (password from the SQL query did not match the user provided password)", user->GetFullRealHost().c_str()); pendingExt.set(user, AUTH_STATE_FAIL); return; } @@ -116,6 +123,7 @@ class ModuleSQLAuth : public Module { LocalIntExt pendingExt; dynamic_reference SQL; + UserCertificateAPI sslapi; std::string freeformquery; std::string killreason; @@ -129,6 +137,7 @@ class ModuleSQLAuth : public Module ModuleSQLAuth() : pendingExt("sqlauth-wait", ExtensionItem::EXT_USER, this) , SQL(this, "SQL") + , sslapi(this) { } @@ -169,7 +178,7 @@ class ModuleSQLAuth : public Module if (!SQL) { - ServerInstance->SNO->WriteGlobalSno('a', "Forbiding connection from %s (SQL database not present)", user->GetFullRealHost().c_str()); + ServerInstance->SNO->WriteGlobalSno('a', "Forbidden connection from %s (SQL database not present)", user->GetFullRealHost().c_str()); ServerInstance->Users->QuitUser(user, killreason); return MOD_RES_PASSTHRU; } @@ -179,6 +188,7 @@ class ModuleSQLAuth : public Module SQL::ParamMap userinfo; SQL::PopulateUserInfo(user, userinfo); userinfo["pass"] = user->password; + userinfo["certfp"] = sslapi ? sslapi->GetFingerprint(user) : ""; for (std::vector::const_iterator it = hash_algos.begin(); it != hash_algos.end(); ++it) { @@ -187,9 +197,6 @@ class ModuleSQLAuth : public Module userinfo[*it + "pass"] = hashprov->Generate(user->password); } - const std::string certfp = SSLClientCert::GetFingerprint(&user->eh); - userinfo["certfp"] = certfp; - SQL->Submit(new AuthQuery(this, user->uuid, pendingExt, verbose, kdf, pwcolumn), freeformquery, userinfo); return MOD_RES_PASSTHRU; @@ -212,7 +219,7 @@ class ModuleSQLAuth : public Module Version GetVersion() CXX11_OVERRIDE { - return Version("Allow/Deny connections based upon an arbitrary SQL table", VF_VENDOR); + return Version("Allows connecting users to be authenticated against an arbitrary SQL table.", VF_VENDOR); } };