|
569 |
_d = ud.function('ldap._get_config_items') |
569 |
_d = ud.function('ldap._get_config_items') |
570 |
return self.config.items(section) |
570 |
return self.config.items(section) |
571 |
|
571 |
|
572 |
def _save_rejected_ucs(self, filename, dn): |
572 |
def _save_rejected_ucs(self, filename, dn, resync=True): |
573 |
_d = ud.function('ldap._save_rejected_ucs') |
573 |
_d = ud.function('ldap._save_rejected_ucs') |
|
|
574 |
if not resync: |
575 |
# Note that unescaped <> are invalid in DNs. See also: |
576 |
# `_list_rejected_ucs()`. |
577 |
dn = '<NORESYNC>' + dn |
574 |
modstring_dn = univention.s4connector.s4.compatible_modstring(dn) |
578 |
modstring_dn = univention.s4connector.s4.compatible_modstring(dn) |
575 |
self._set_config_option('UCS rejected', filename, modstring_dn) |
579 |
self._set_config_option('UCS rejected', filename, modstring_dn) |
576 |
|
580 |
|
|
584 |
|
588 |
|
585 |
def _list_rejected_ucs(self): |
589 |
def _list_rejected_ucs(self): |
586 |
_d = ud.function('ldap._list_rejected_ucs') |
590 |
_d = ud.function('ldap._list_rejected_ucs') |
587 |
result = [] |
591 |
rejected = self._get_config_items('UCS rejected') |
588 |
for i in self._get_config_items('UCS rejected'): |
592 |
# Note that unescaped <> are invalid in DNs. See also: |
589 |
result.append(i) |
593 |
# `_save_rejected_ucs()`. |
590 |
return result |
594 |
return [(fn, dn) for (fn, dn) in rejected |
|
|
595 |
if not dn.startswith('<NORESYNC>')] |
591 |
|
596 |
|
592 |
def _list_rejected_filenames_ucs(self): |
597 |
def _list_rejected_filenames_ucs(self): |
593 |
_d = ud.function('ldap._list_rejected_filenames_ucs') |
598 |
_d = ud.function('ldap._list_rejected_filenames_ucs') |
|
748 |
return True # file not found so there's nothing to sync |
753 |
return True # file not found so there's nothing to sync |
749 |
except (cPickle.UnpicklingError, EOFError) as e: |
754 |
except (cPickle.UnpicklingError, EOFError) as e: |
750 |
message = 'file emtpy' if isinstance(e, EOFError) else e.message |
755 |
message = 'file emtpy' if isinstance(e, EOFError) else e.message |
751 |
ud.debug(ud.LDAP, ud.WARN, |
756 |
ud.debug(ud.LDAP, ud.ERROR, |
752 |
'__sync_file_from_ucs: invalid pickle file {}: {}'.format(filename, message)) |
757 |
'__sync_file_from_ucs: invalid pickle file {}: {}'.format(filename, message)) |
753 |
# ignore corrupted pickle file, but save as rejected to not try again |
758 |
# ignore corrupted pickle file, but save as rejected to not try again |
754 |
self._save_rejected_ucs(filename, 'unknown') |
759 |
self._save_rejected_ucs(filename, 'unknown', resync=False) |
755 |
return False |
760 |
return False |
756 |
|
761 |
|
757 |
if dn == 'cn=Subschema': |
762 |
if dn == 'cn=Subschema': |
|
1098 |
continue # file not found so there's nothing to sync |
1103 |
continue # file not found so there's nothing to sync |
1099 |
except (cPickle.UnpicklingError, EOFError) as e: |
1104 |
except (cPickle.UnpicklingError, EOFError) as e: |
1100 |
message = 'file emtpy' if isinstance(e, EOFError) else e.message |
1105 |
message = 'file emtpy' if isinstance(e, EOFError) else e.message |
1101 |
ud.debug(ud.LDAP, ud.WARN, |
1106 |
ud.debug(ud.LDAP, ud.ERROR, |
1102 |
'poll_ucs: invalid pickle file {}: {}'.format(filename, message)) |
1107 |
'poll_ucs: invalid pickle file {}: {}'.format(filename, message)) |
1103 |
# ignore corrupted pickle file, but save as rejected to not try again |
1108 |
# ignore corrupted pickle file, but save as rejected to not try again |
1104 |
self._save_rejected_ucs(filename, 'unknown') |
1109 |
self._save_rejected_ucs(filename, 'unknown', resync=False) |
1105 |
continue |
1110 |
continue |
1106 |
|
1111 |
|
1107 |
for i in [0, 1]: # do it twice if the LDAP connection was closed |
1112 |
for i in [0, 1]: # do it twice if the LDAP connection was closed |
1108 |
- |
|
|