From d336ab3a8d9cf4fb021f2d3c827a04429205c447 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 23 Sep 2020 15:55:53 +0200 Subject: [PATCH] LdapServer: add get_changes() and format_changes() methods --- LdapServer.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/LdapServer.py b/LdapServer.py index c12100b..a428e99 100644 --- a/LdapServer.py +++ b/LdapServer.py @@ -106,6 +106,26 @@ class LdapServer(object): return False return True + def get_changes(self, old, new, ignore_attrs=[]): + return modlist.modifyModlist(old, new, ignore_attr_types=ignore_attrs) + + def format_changes(self, old, new, ignore_attrs=[], prefix=''): + msg = [] + for (op, attr, val) in modlist.modifyModlist(old, new, ignore_attr_types=ignore_attrs): + if op == ldap.MOD_ADD: + op = 'ADD' + elif op == ldap.MOD_DELETE: + op = 'DELETE' + elif op == ldap.MOD_REPLACE: + op = 'REPLACE' + else: + op = 'UNKNOWN (=%s)' % op + if val is None and op == 'DELETE': + msg.append('%s - %s %s' % (prefix, op, attr)) + else: + msg.append('%s - %s %s: %s' % (prefix, op, attr, val)) + return '\n'.join(msg) + def rename_object(self,dn,new_rdn): try: self.logger.debug("LdapServer - Rename %s in %s" % (dn,new_rdn))