X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fextra%2Fm_ldap.cpp;h=58dfc8db46da60132f52d3e229159fae2d7fff79;hb=6214094a84f33ea80af4dac88dd1b82bd59a0b5c;hp=70c6e7b040e57ea03ab40715040719dd0009bd69;hpb=e96f1bb1571c864705c20a976ff64bb40d6b8d06;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/extra/m_ldap.cpp b/src/modules/extra/m_ldap.cpp index 70c6e7b04..58dfc8db4 100644 --- a/src/modules/extra/m_ldap.cpp +++ b/src/modules/extra/m_ldap.cpp @@ -1,8 +1,11 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2013-2015 Adam - * Copyright (C) 2003-2015 Anope Team + * Copyright (C) 2020 Joel Sing + * Copyright (C) 2019 linuxdaemon + * Copyright (C) 2016-2020 Sadie Powell + * Copyright (C) 2014, 2016 Attila Molnar + * Copyright (C) 2013-2016 Adam * * 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 @@ -247,7 +257,7 @@ class LDAPService : public LDAPProvider, public SocketThread Connect(); } - int SetOption(int option, void* value) + int SetOption(int option, const void* value) { int ret = ldap_set_option(this->con, option, value); if (ret != LDAP_OPT_SUCCESS) @@ -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)