From df17411a709a61cb9e437fe843f25225a344d48f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gr=C3=A9gory=20Oestreicher?= Date: Sun, 25 Jun 2017 00:00:11 +0200 Subject: [PATCH] Add PowerLDAP::del() and PowerLDAP::add() --- modules/ldapbackend/powerldap.cc | 24 ++++++++++++++++++++++++ modules/ldapbackend/powerldap.hh | 2 ++ 2 files changed, 26 insertions(+) diff --git a/modules/ldapbackend/powerldap.cc b/modules/ldapbackend/powerldap.cc index 131e1c82cd..2b3ae4044b 100644 --- a/modules/ldapbackend/powerldap.cc +++ b/modules/ldapbackend/powerldap.cc @@ -278,6 +278,18 @@ void PowerLDAP::simpleBind( const string& ldapbinddn, const string& ldapsecret ) } +void PowerLDAP::add( const string &dn, LDAPMod *mods[] ) +{ + int rc; + + rc = ldap_add_ext_s( d_ld, dn.c_str(), mods, NULL, NULL ); + if ( rc == LDAP_SERVER_DOWN || rc == LDAP_CONNECT_ERROR ) + throw LDAPNoConnection(); + else if ( rc != LDAP_SUCCESS ) + throw LDAPException( "Error adding LDAP entry " + dn + ": " + getError( rc ) ); +} + + void PowerLDAP::modify( const string &dn, LDAPMod *mods[], LDAPControl **scontrols, LDAPControl **ccontrols ) { int rc; @@ -290,6 +302,18 @@ void PowerLDAP::modify( const string &dn, LDAPMod *mods[], LDAPControl **scontro } +void PowerLDAP::del( const string& dn ) +{ + int rc; + + rc = ldap_delete_ext_s( d_ld, dn.c_str(), NULL, NULL ); + if ( rc == LDAP_SERVER_DOWN || rc == LDAP_CONNECT_ERROR ) + throw LDAPNoConnection(); + else if ( rc != LDAP_SUCCESS && rc != LDAP_NO_SUCH_OBJECT ) + throw LDAPException( "Error deleting LDAP entry " + dn + ": " + getError( rc ) ); +} + + PowerLDAP::SearchResult::Ptr PowerLDAP::search( const string& base, int scope, const string& filter, const char** attr ) { int msgid, rc; diff --git a/modules/ldapbackend/powerldap.hh b/modules/ldapbackend/powerldap.hh index 81b064e976..8ff3441df3 100644 --- a/modules/ldapbackend/powerldap.hh +++ b/modules/ldapbackend/powerldap.hh @@ -90,7 +90,9 @@ class PowerLDAP void bind( const string& ldapbinddn = "", const string& ldapsecret = "", int method = LDAP_AUTH_SIMPLE ); void simpleBind( const string& ldapbinddn = "", const string& ldapsecret = "" ); SearchResult::Ptr search( const string& base, int scope, const string& filter, const char** attr = 0 ); + void add( const string &dn, LDAPMod *mods[] ); void modify( const string& dn, LDAPMod *mods[], LDAPControl **scontrols = 0, LDAPControl **ccontrols = 0 ); + void del( const string& dn ); bool getSearchEntry( int msgid, sentry_t& entry, bool dn = false ); void getSearchResults( int msgid, sresult_t& result, bool dn = false ); -- 2.47.2