diff --git a/services/univention-ad-connector/ad-connector.py b/services/univention-ad-connector/ad-connector.py index d97a884..c768cc9 100644 --- a/services/univention-ad-connector/ad-connector.py +++ b/services/univention-ad-connector/ad-connector.py @@ -32,7 +32,11 @@ # . __package__='' # workaround for PEP 366 -import listener, cPickle, time, os +import listener +import cPickle +import time +import os +import shutil import univention.debug name='ad-connector' @@ -87,29 +91,31 @@ def _dump_changes_to_file_and_check_file(directory, dn, new, old, old_dn): ob=(dn, new, old, old_dn) - filename=os.path.join(directory,"%f"%time.time()) + tmpdir = os.path.join(directory, 'tmp') + filename = "%f" % time.time() + filepath = os.path.join(tmpdir, filename) - _dump_object_to_file(filename, ob) + _dump_object_to_file(filepath, ob) tmp_array = [] - f=open(filename, 'r') - tmp_array = cPickle.load(f) - f.close() + with open(filepath, 'r') as fd: + tmp_array = cPickle.load(fd) tmp_array_len = len(tmp_array) if tmp_array_len != 4: univention.debug.debug(univention.debug.LDAP, univention.debug.WARN, 'replacing broken cPickle in %s (len=%s) with plain pickle' % (filename, tmp_array_len)) - _dump_object_to_file(filename, ob) + _dump_object_to_file(filepath, ob) tmp_array = [] - f=open(filename, 'r') - tmp_array = cPickle.load(f) - f.close() + with open(filepath, 'r') as fd: + tmp_array = cPickle.load(fd) tmp_array_len = len(tmp_array) if tmp_array_len != 4: univention.debug.debug(univention.debug.LDAP, univention.debug.ERROR, 'pickle in %s (len=%s) seems to be broken' % (filename, tmp_array_len)) + shutil.move(filepath, os.path.join(directory, filename)) + def handler(dn, new, old, command): global group_objects