Lines 332-348
def samaccountname_dn_mapping(s4connector, given_object, dn_mapping_stored, ucso
|
Link Here
|
---|
|
332 |
result = s4connector.lo_s4.lo.search_ext_s(s4connector.lo_s4.base, ldap.SCOPE_SUBTREE, filter_s4, ['sAMAccountName']) |
332 |
result = s4connector.lo_s4.lo.search_ext_s(s4connector.lo_s4.base, ldap.SCOPE_SUBTREE, filter_s4, ['sAMAccountName']) |
333 |
|
333 |
|
334 |
if result and len(result) > 0 and result[0] and len(result[0]) > 0 and result[0][0]: # no referral, so we've got a valid result |
334 |
if result and len(result) > 0 and result[0] and len(result[0]) > 0 and result[0][0]: # no referral, so we've got a valid result |
335 |
s4dn = unicode(encode_attrib(result[0][0])) |
335 |
s4dn = unicode(encode_attrib(result[0][0]), 'utf8') |
336 |
if dn_key == 'olddn' or (dn_key == 'dn' and 'olddn' not in object): |
336 |
if dn_key == 'olddn' or (dn_key == 'dn' and 'olddn' not in object): |
337 |
newdn = s4dn |
337 |
newdn = s4dn |
338 |
else: |
338 |
else: |
339 |
s4_rdn = ldap.dn.str2dn(s4dn)[0] |
339 |
s4_rdn = ldap.dn.str2dn(s4dn)[0] |
340 |
new_s4_dn = unicode(ldap.dn.dn2str([s4_rdn] + exploded_dn[1:])) |
340 |
new_s4_dn = unicode(ldap.dn.dn2str([s4_rdn] + exploded_dn[1:]), 'utf8') |
341 |
newdn = new_s4_dn.lower().replace(s4connector.lo_s4.base.lower(), s4connector.lo.base.lower()) |
341 |
newdn = new_s4_dn.lower().replace(s4connector.lo_s4.base.lower(), s4connector.lo.base.lower()) |
342 |
|
342 |
|
343 |
else: |
343 |
else: |
344 |
newdn_rdn = [('cn', fst_rdn_value, ldap.AVA_STRING)] |
344 |
newdn_rdn = [('cn', fst_rdn_value, ldap.AVA_STRING)] |
345 |
newdn = unicode(ldap.dn.dn2str([newdn_rdn] + exploded_dn[1:])) # new object, don't need to change |
345 |
newdn = unicode(ldap.dn.dn2str([newdn_rdn] + exploded_dn[1:]), 'utf8') # new object, don't need to change |
346 |
ud.debug(ud.LDAP, ud.INFO, "samaccount_dn_mapping: newdn: %s" % newdn) |
346 |
ud.debug(ud.LDAP, ud.INFO, "samaccount_dn_mapping: newdn: %s" % newdn) |
347 |
else: |
347 |
else: |
348 |
# get the object to read the sAMAccountName in S4 and use it as name |
348 |
# get the object to read the sAMAccountName in S4 and use it as name |
Lines 381-387
def samaccountname_dn_mapping(s4connector, given_object, dn_mapping_stored, ucso
|
Link Here
|
---|
|
381 |
ucsdn_filter = format_escaped(u'(&(objectclass={0!e})({1}={2!e}))', ocucs, ucsattrib, samaccountname) |
381 |
ucsdn_filter = format_escaped(u'(&(objectclass={0!e})({1}={2!e}))', ocucs, ucsattrib, samaccountname) |
382 |
ucsdn_result = s4connector.search_ucs(filter=ucsdn_filter, base=s4connector.lo.base, scope='sub', attr=['objectClass']) |
382 |
ucsdn_result = s4connector.search_ucs(filter=ucsdn_filter, base=s4connector.lo.base, scope='sub', attr=['objectClass']) |
383 |
if ucsdn_result and len(ucsdn_result) > 0 and ucsdn_result[0] and len(ucsdn_result[0]) > 0: |
383 |
if ucsdn_result and len(ucsdn_result) > 0 and ucsdn_result[0] and len(ucsdn_result[0]) > 0: |
384 |
ucsdn = unicode(ucsdn_result[0][0]) |
384 |
ucsdn = unicode(ucsdn_result[0][0], 'utf8') |
385 |
|
385 |
|
386 |
if ucsdn and (dn_key == 'olddn' or (dn_key == 'dn' and 'olddn' not in object)): |
386 |
if ucsdn and (dn_key == 'olddn' or (dn_key == 'dn' and 'olddn' not in object)): |
387 |
newdn = ucsdn |
387 |
newdn = ucsdn |
Lines 392-398
def samaccountname_dn_mapping(s4connector, given_object, dn_mapping_stored, ucso
|
Link Here
|
---|
|
392 |
else: |
392 |
else: |
393 |
newdn_rdn = [(ucsattrib, samaccountname, ldap.AVA_STRING)] |
393 |
newdn_rdn = [(ucsattrib, samaccountname, ldap.AVA_STRING)] |
394 |
|
394 |
|
395 |
newdn = unicode(ldap.dn.dn2str([newdn_rdn] + exploded_dn[1:])) # guess the old dn |
395 |
newdn = unicode(ldap.dn.dn2str([newdn_rdn] + exploded_dn[1:]), 'utf8') # guess the old dn |
396 |
try: |
396 |
try: |
397 |
ud.debug(ud.LDAP, ud.INFO, "samaccount_dn_mapping: newdn for key %s:" % dn_key) |
397 |
ud.debug(ud.LDAP, ud.INFO, "samaccount_dn_mapping: newdn for key %s:" % dn_key) |
398 |
ud.debug(ud.LDAP, ud.INFO, "samaccount_dn_mapping: olddn: %s" % dn) |
398 |
ud.debug(ud.LDAP, ud.INFO, "samaccount_dn_mapping: olddn: %s" % dn) |
Lines 807-812
class LDAPEscapeFormatter(string.Formatter):
|
Link Here
|
---|
|
807 |
""" |
807 |
""" |
808 |
def convert_field(self, value, conversion): |
808 |
def convert_field(self, value, conversion): |
809 |
if conversion == 'e': |
809 |
if conversion == 'e': |
|
|
810 |
if isinstance(value, basestring): |
811 |
return escape_filter_chars(value) |
810 |
return escape_filter_chars(str(value)) |
812 |
return escape_filter_chars(str(value)) |
811 |
return super(LDAPEscapeFormatter, self).convert_field(value, conversion) |
813 |
return super(LDAPEscapeFormatter, self).convert_field(value, conversion) |
812 |
|
814 |
|
Lines 1342-1348
class s4(univention.s4connector.ucs):
|
Link Here
|
---|
|
1342 |
|
1344 |
|
1343 |
rdn_exploded = ldap.dn.str2dn(rdn) |
1345 |
rdn_exploded = ldap.dn.str2dn(rdn) |
1344 |
parent_exploded = ldap.dn.str2dn(object['attributes']['lastKnownParent'][0]) |
1346 |
parent_exploded = ldap.dn.str2dn(object['attributes']['lastKnownParent'][0]) |
1345 |
return unicode(ldap.dn.dn2str(rdn_exploded + parent_exploded)) |
1347 |
return unicode(ldap.dn.dn2str(rdn_exploded + parent_exploded), 'utf8') |
1346 |
else: |
1348 |
else: |
1347 |
ud.debug(ud.LDAP, ud.WARN, 'lastKnownParent attribute for deleted object rdn="%s" was not set, so we must ignore the object' % rdn) |
1349 |
ud.debug(ud.LDAP, ud.WARN, 'lastKnownParent attribute for deleted object rdn="%s" was not set, so we must ignore the object' % rdn) |
1348 |
return None |
1350 |
return None |
1349 |
- |
|
|