From: Grégory Oestreicher Date: Sat, 24 Jun 2017 22:00:11 +0000 (+0200) Subject: Add PowerLDAP::del() and PowerLDAP::add() X-Git-Tag: dnsdist-1.3.1~167^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df17411a709a61cb9e437fe843f25225a344d48f;p=thirdparty%2Fpdns.git Add PowerLDAP::del() and PowerLDAP::add() --- 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 );