[Uludag-commits] r16259 - trunk/comar/ahenk/lider/tools

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
6 Ara 2007 Per 14:27:21 EET


Author: bahadir.kandemir
Date: Thu Dec  6 14:27:21 2007
New Revision: 16259

Modified:
   trunk/comar/ahenk/lider/tools/passwd2ldap.py
Log:
- Get options from commandline


Modified: trunk/comar/ahenk/lider/tools/passwd2ldap.py
=================================================================
--- trunk/comar/ahenk/lider/tools/passwd2ldap.py	(original)
+++ trunk/comar/ahenk/lider/tools/passwd2ldap.py	Thu Dec  6 14:27:21 2007
@@ -10,6 +10,19 @@
 SUCCESS, FAIL = xrange(2)
 
 
+def saltedSHA(password):
+    import base64
+    import sha
+    import random
+    
+    chars = "".join([chr(x) for x in xrange(33, 91)])
+    salt = "".join([random.choice(chars) for x in xrange(10)])
+    ctx = sha.new(password)
+    ctx.update(salt)
+    hash = "{SSHA}" + base64.b64encode(ctx.digest() + salt)
+    return hash
+
+
 def tidy_modlist(_attrs):
     attrs = {}
     for key, values in _attrs.iteritems():
@@ -24,15 +37,23 @@
         return SUCCESS
     
     try:
-        ldap_server = raw_input("Server: ")
-        ldap_user = raw_input("User: ")
-        ldap_password = raw_input("Password: ")
-        ldap_base_users = raw_input("Users DN: ")
-        ldap_base_groups = raw_input("Groups DN: ")
+        ldap_server = sys.argv[1]
+        ldap_user = sys.argv[2]
+        ldap_password = sys.argv[3]
+        ldap_base_users = sys.argv[4]
+        ldap_base_groups = sys.argv[5]
+        ldap_default_pw = sys.argv[6]
     except KeyboardInterrupt:
         print
         print "Cancelled"
         return FAIL
+    except (IndexError, ValueError,):
+        print "Usage:"
+        print "%s serverURI userDN userPW usersDN groupsDN defaultUserPW" % sys.argv[0]
+        print
+        print "Example:"
+        print "%s 127.0.0.1 cn=admin,dc=domain,dc=com qwerty dc=users,dc=domain,dc=com dc=groups,dc=domain,dc=com 1q2w3e4r5t6y" % sys.argv[0]
+        return FAIL
     
     try:
         conn = ldap.open(ldap_server)
@@ -43,7 +64,7 @@
     
     failed_users = []
     failed_groups = []
-    
+
     print "Importing groups..."
     for line in file("/etc/group"):
         line = line.strip()
@@ -60,7 +81,7 @@
             conn.add_s(dn, ldap.modlist.addModlist(attrs))
         except ldap.LDAPError, e:
             print "[ER] %s (%s)" % (attrs["cn"][0], e.args[0]["desc"])
-            failed_groups.append(groupname)
+            failed_groups.append(attrs["cn"][0])
         else:
             print "[OK] %s" % attrs["cn"][0]
     
@@ -93,8 +114,8 @@
         line = line.strip()
         username, password, other = line.split(":", 2)
         dn = "uid=%s,%s" % (username, ldap_base_users)
-        if dn in users:
-            users[dn]["userPassword"] = [password]
+        if dn in users and users[dn]["uidNumber"][0] >= 1000:
+            users[dn]["userPassword"] = [saltedSHA(ldap_default_pw)]
     
     print "Importing users..."
     for dn, attrs in users.iteritems():
@@ -103,7 +124,7 @@
             conn.add_s(dn, ldap.modlist.addModlist(attrs))
         except ldap.LDAPError, e:
             print "[ER] %s (%s)" % (attrs["uid"][0], e.args[0]["desc"])
-            failed_users.append(username)
+            failed_users.append(attrs["uid"][0])
         else:
             print "[OK] %s" % attrs["uid"][0]
     


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi