# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-import string, re, time, ldap, getopt, sys, os, pwd, posix, socket, base64, sha, shutil, errno, tarfile, grp
+import string, re, time, ldap, getopt, sys, os, pwd, posix, socket, base64, hashlib, shutil, errno, tarfile, grp
import lockfile
from userdir_ldap import *
from userdir_exceptions import *
Algorithm = 2
if Algorithm == None:
continue
- Fingerprint = sha.new(base64.decodestring(Split[1])).hexdigest()
+ Fingerprint = hashlib.new('sha1', base64.decodestring(Split[1])).hexdigest()
DNSInfo.append("%sIN\tSSHFP\t%u 1 %s" % (TTLprefix, Algorithm, Fingerprint))
if 'architecture' in x[1]:
l = make_ldap_conn()
+mods = l.search_s('cn=log',
+ ldap.SCOPE_ONELEVEL,
+ '(&(&(!(reqMod=activity-from*))(!(reqMod=activity-pgp*)))(|(reqType=add)(reqType=delete)(reqType=modify)(reqType=modrdn)))',
+ ['reqEnd'])
+
+last = 0
+
+# Sort the list by reqEnd
+sorted_mods = sorted(mods, key=lambda mod: mod[1]['reqEnd'][0].split('.')[0])
+# Take the last element in the array
+last = sorted_mods[-1][1]['reqEnd'][0].split('.')[0]
+
+# override globaldir for testing
+if 'UD_GENERATEDIR' in os.environ:
+ GenerateDir = os.environ['UD_GENERATEDIR']
+
+cache_last_mod = 0
+
+try:
+ fd = open(os.path.join(GenerateDir, "last_update.trace"), "r")
+ cache_last_mod=fd.read().strip()
+ fd.close()
+except IOError, e:
+ if e.errno == errno.ENOENT:
+ pass
+ else:
+ raise e
+if cache_last_mod >= last:
+ sys.exit(0)
+
+fd = open(os.path.join(GenerateDir, "last_update.trace"), "w")
+fd.write(last)
+fd.close()
+
# Fetch all the groups
GroupIDMap = {}
attrs = l.search_s(BaseDn, ldap.SCOPE_ONELEVEL, "gid=*",\
if x[1].has_key("subGroup") != 0:
SubGroupMap.setdefault(x[1]["gid"][0], []).extend(x[1]["subGroup"])
-# override globaldir for testing
-if 'UD_GENERATEDIR' in os.environ:
- GenerateDir = os.environ['UD_GENERATEDIR']
-
+lock = None
try:
- lock = get_lock( os.path.join(GenerateDir, 'ud-generate.lock') )
+ lockf = os.path.join(GenerateDir, 'ud-generate.lock')
+ lock = get_lock( lockf )
if lock is None:
- sys.stderr.write("Could not acquire lock %s.\n"%(fn))
+ sys.stderr.write("Could not acquire lock %s.\n"%(lockf))
sys.exit(1)
generate_all(GenerateDir, l)
finally:
- if not lock is None:
+ if lock is not None:
lock.release()
# vim:set et: