]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/extra/m_ldap.cpp
Allow 'tls' to be used in /REHASH.
[user/henk/code/inspircd.git] / src / modules / extra / m_ldap.cpp
index fb2b50a5f528a746adc70cedefa9d05f3d638e57..80a055f199c08b3739c5ba778c86b367142de988 100644 (file)
@@ -1,8 +1,11 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2013-2015 Adam <Adam@anope.org>
- *   Copyright (C) 2003-2015 Anope Team <team@anope.org>
+ *   Copyright (C) 2019 linuxdaemon <linuxdaemon.irc@gmail.com>
+ *   Copyright (C) 2019 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2016-2019 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2014, 2016 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2013-2016 Adam <Adam@anope.org>
  *
  * 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
@@ -75,6 +78,7 @@ class LDAPRequest
        }
 
        virtual int run() = 0;
+       virtual std::string info() = 0;
 };
 
 class LDAPBind : public LDAPRequest
@@ -91,6 +95,7 @@ class LDAPBind : public LDAPRequest
        }
 
        int run() CXX11_OVERRIDE;
+       std::string info() CXX11_OVERRIDE;
 };
 
 class LDAPSearch : public LDAPRequest
@@ -110,6 +115,7 @@ class LDAPSearch : public LDAPRequest
        }
 
        int run() CXX11_OVERRIDE;
+       std::string info() CXX11_OVERRIDE;
 };
 
 class LDAPAdd : public LDAPRequest
@@ -127,6 +133,7 @@ class LDAPAdd : public LDAPRequest
        }
 
        int run() CXX11_OVERRIDE;
+       std::string info() CXX11_OVERRIDE;
 };
 
 class LDAPDel : public LDAPRequest
@@ -142,6 +149,7 @@ class LDAPDel : public LDAPRequest
        }
 
        int run() CXX11_OVERRIDE;
+       std::string info() CXX11_OVERRIDE;
 };
 
 class LDAPModify : public LDAPRequest
@@ -159,6 +167,7 @@ class LDAPModify : public LDAPRequest
        }
 
        int run() CXX11_OVERRIDE;
+       std::string info() CXX11_OVERRIDE;
 };
 
 class LDAPCompare : public LDAPRequest
@@ -176,6 +185,7 @@ class LDAPCompare : public LDAPRequest
        }
 
        int run() CXX11_OVERRIDE;
+       std::string info() CXX11_OVERRIDE;
 };
 
 class LDAPService : public LDAPProvider, public SocketThread
@@ -393,7 +403,7 @@ class LDAPService : public LDAPProvider, public SocketThread
 
                if (res != LDAP_SUCCESS)
                {
-                       ldap_result->error = ldap_err2string(res);
+                       ldap_result->error = InspIRCd::Format("%s (%s)", ldap_err2string(res), req->info().c_str());
                        return;
                }
 
@@ -626,7 +636,7 @@ class ModuleLDAP : public Module
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides LDAP support", VF_VENDOR);
+               return Version("Provides the ability for LDAP modules to query a LDAP directory.", VF_VENDOR);
        }
 };
 
@@ -643,11 +653,21 @@ int LDAPBind::run()
        return i;
 }
 
+std::string LDAPBind::info()
+{
+       return "bind dn=" + who;
+}
+
 int LDAPSearch::run()
 {
        return ldap_search_ext_s(service->GetConnection(), base.c_str(), searchscope, filter.c_str(), NULL, 0, NULL, NULL, &tv, 0, &message);
 }
 
+std::string LDAPSearch::info()
+{
+       return "search base=" + base + " filter=" + filter;
+}
+
 int LDAPAdd::run()
 {
        LDAPMod** mods = LDAPService::BuildMods(attributes);
@@ -656,11 +676,21 @@ int LDAPAdd::run()
        return i;
 }
 
+std::string LDAPAdd::info()
+{
+       return "add dn=" + dn;
+}
+
 int LDAPDel::run()
 {
        return ldap_delete_ext_s(service->GetConnection(), dn.c_str(), NULL, NULL);
 }
 
+std::string LDAPDel::info()
+{
+       return "del dn=" + dn;
+}
+
 int LDAPModify::run()
 {
        LDAPMod** mods = LDAPService::BuildMods(attributes);
@@ -669,6 +699,11 @@ int LDAPModify::run()
        return i;
 }
 
+std::string LDAPModify::info()
+{
+       return "modify base=" + base;
+}
+
 int LDAPCompare::run()
 {
        berval cred;
@@ -680,7 +715,11 @@ int LDAPCompare::run()
        free(cred.bv_val);
 
        return ret;
+}
 
+std::string LDAPCompare::info()
+{
+       return "compare dn=" + dn + " attr=" + attr;
 }
 
 MODULE_INIT(ModuleLDAP)