diff options
Diffstat (limited to 'lib/openldap')
-rw-r--r-- | lib/openldap | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/openldap b/lib/openldap index cbb58c4..ab35fdb 100644 --- a/lib/openldap +++ b/lib/openldap @@ -1,37 +1,47 @@ #!/usr/bin/python -# + # Manage OpenLDAP databases +# Copyright © 2013 Guilhem Moulin <guilhem@fripost.org> # -# Copyright 2013 Guilhem Moulin <guilhem@fripost.org> +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # -# Licensed under the GNU GPL version 3 or higher. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. import ldap, ldap.sasl from ldap.filter import filter_format from ldap.dn import dn2str,explode_dn,str2dn from ldap.modlist import addModlist from ldif import LDIFParser from functools import partial import re + # Dirty hack to check equality between the targetted LDIF and that # currently in the directory. The value of some configuration (olc*) # attributes is automatically indexed when added; for those we remove # the index before checking the equality between the two lists of # values. idxAttr_re = re.compile( '^\{\d+\}(.*)' ) indexedAttributes = frozenset([ 'olcAttributeTypes', 'olcObjectClasses', 'olcAccess', ]) # Another hack. Configuration entries sometimes pollutes the DNs with # indices, thus it's not possible to directly use them as base. # Instead, we use their parent as a pase, and search for the *unique* # match with the same ObjectClass and the matching extra attributes. # ('%s' in the attribute value is replaced with the value of the source # entry.) indexedDN = { |