r26592: Finish fixing the samba3dump script.
[samba.git] / source4 / scripting / bin / samba3dump
index 0aa54d91cc1e806168649fcdd4354ea031916020..157a708ff6744af9304769004d9a45543bc3cc7a 100755 (executable)
@@ -1,8 +1,8 @@
 #!/usr/bin/python
 #
-#      Dump Samba3 data
-#      Copyright Jelmer Vernooij 2005-2007
-#      Released under the GNU GPL v3 or later
+#    Dump Samba3 data
+#    Copyright Jelmer Vernooij 2005-2007
+#    Released under the GNU GPL v3 or later
 #
 
 import optparse
@@ -13,160 +13,154 @@ import samba.samba3
 
 parser = optparse.OptionParser("provision <libdir> [<smb.conf>]")
 parser.add_option("--format", type="choice", metavar="FORMAT",
-                         choices=["full", "summary"])
+                  choices=["full", "summary"])
 
 opts, args = parser.parse_args()
 
 if opts.format is None:
-       opts.format = "summary"
+    opts.format = "summary"
 
 def print_header(txt):
-       print "\n%s" % txt
-       print "=========================================="
+    print "\n%s" % txt
+    print "=" * len(txt)
 
 def print_samba3_policy(pol):
-       print_header("Account Policies")
-       print "Min password length: %d" % pol.min_password_length
-       print "Password history length: %d" % pol.password_history
-       if pol.user_must_logon_to_change_password:
-               print "User must logon to change password: %d" % pol.user_must_logon_to_change_password
-       if pol.maximum_password_age:
-               print "Maximum password age: %d" % pol.maximum_password_age
-       if pol.minimum_password_age:
-               print "Minimum password age: %d" % pol.minimum_password_age
-       if pol.lockout_duration:
-               print "Lockout duration: %d" % pol.lockout_duration
-       if pol.reset_count_minutes:
-               print "Reset Count Minutes: %d" % pol.reset_count_minutes
-       if pol.bad_lockout_minutes:
-               print "Bad Lockout Minutes: %d" % pol.bad_lockout_minutes
-       if pol.disconnect_time:
-               print "Disconnect Time: %d" % pol.disconnect_time
-       if pol.refuse_machine_password_change:
-               print "Refuse Machine Password Change: %d" % pol.refuse_machine_password_change
-
-def print_samba3_sam(samba3):
-       print_header("SAM Database")
-       
-       for a in samba3.samaccounts:
-               print "%d: %s" % a.user_rid, a.username
-
-def print_samba3_shares(samba3):
-       print_header("Configured shares")
-       for s in samba3.shares:
-               print "--- %s ---" % s.name
-
-               for p in s.parameters:
-                       print "\t%s = %s" % (p.name, p.value)
-
-               print ""
+    print_header("Account Policies")
+    print "Min password length: %d" % pol.min_password_length
+    print "Password history length: %d" % pol.password_history
+    if pol.user_must_logon_to_change_password:
+        print "User must logon to change password: %d" % pol.user_must_logon_to_change_password
+    if pol.maximum_password_age:
+        print "Maximum password age: %d" % pol.maximum_password_age
+    if pol.minimum_password_age:
+        print "Minimum password age: %d" % pol.minimum_password_age
+    if pol.lockout_duration:
+        print "Lockout duration: %d" % pol.lockout_duration
+    if pol.reset_count_minutes:
+        print "Reset Count Minutes: %d" % pol.reset_count_minutes
+    if pol.bad_lockout_minutes:
+        print "Bad Lockout Minutes: %d" % pol.bad_lockout_minutes
+    if pol.disconnect_time:
+        print "Disconnect Time: %d" % pol.disconnect_time
+    if pol.refuse_machine_password_change:
+        print "Refuse Machine Password Change: %d" % pol.refuse_machine_password_change
+
+def print_samba3_sam(samdb):
+    print_header("SAM Database")
+    
+    for user in samdb:
+        print "%s" % user
+
+def print_samba3_shares(shares):
+    print_header("Configured shares")
+    for s in shares:
+        print "--- %s ---" % s.name
+
+        for p in s:
+            print "\t%s = %s" % (p.key, p.value)
+
+        print ""
 
 def print_samba3_secrets(secrets):
-       print_header("Secrets")
-
-       if secrets.get_auth_user():
-               print "IPC Credentials:"
-               if secrets.get_auth_user():
-                       print " User: %s\n" % secrets.get_auth_user()
-               if secrets.get_auth_password():
-                       print " Password: %s\n" % secrets.get_auth_password()
-               if secrets.get_auth_domain():
-                       print " Domain: %s\n" % secrets.get_auth_domain()
-
-       if len(list(secrets.ldap_dns())) > 0:
-               print "LDAP passwords:"
-               for dn in secrets.ldap_dns():
-                       print "\t%s -> %s" % (dn, secrets.get_ldap_bind_pw(dn))
-               print ""
-
-       print "Domains:"
-       for domain in secrets.domains():
-               print "\t--- %s ---" % domain
-               print "\tSID: %s" % secrets.get_sid(domain)
-               print "\tGUID: %s" % secrets.get_dom_guid(domain)
-               print "\tPlaintext pwd: %s" % secrets.get_machine_password(domain)
-               if secrets.get_machine_last_change_time(domain):
-                       print "\tLast Changed: %lu" % secrets.get_machine_last_change_time(domain)
-               if secrets.get_machine_sec_channel_type(domain):
-                       print "\tSecure Channel Type: %d\n" % secrets.get_machine_sec_channel_type(domain)
-
-       print "Trusted domains:"
-       for td in secrets.trusted_domains():
-               print td
+    print_header("Secrets")
+
+    if secrets.get_auth_user():
+        print "IPC Credentials:"
+        if secrets.get_auth_user():
+            print "    User: %s\n" % secrets.get_auth_user()
+        if secrets.get_auth_password():
+            print "    Password: %s\n" % secrets.get_auth_password()
+        if secrets.get_auth_domain():
+            print "    Domain: %s\n" % secrets.get_auth_domain()
+
+    if len(list(secrets.ldap_dns())) > 0:
+        print "LDAP passwords:"
+        for dn in secrets.ldap_dns():
+            print "\t%s -> %s" % (dn, secrets.get_ldap_bind_pw(dn))
+        print ""
+
+    print "Domains:"
+    for domain in secrets.domains():
+        print "\t--- %s ---" % domain
+        print "\tSID: %s" % secrets.get_sid(domain)
+        print "\tGUID: %s" % secrets.get_dom_guid(domain)
+        print "\tPlaintext pwd: %s" % secrets.get_machine_password(domain)
+        if secrets.get_machine_last_change_time(domain):
+            print "\tLast Changed: %lu" % secrets.get_machine_last_change_time(domain)
+        if secrets.get_machine_sec_channel_type(domain):
+            print "\tSecure Channel Type: %d\n" % secrets.get_machine_sec_channel_type(domain)
+
+    print "Trusted domains:"
+    for td in secrets.trusted_domains():
+        print td
 
 def print_samba3_regdb(regdb):
-       print_header("Registry")
+    print_header("Registry")
 
-       for k in regdb.keys():
-               print "%s" % k
-               for v in regdb.values(k):
-                       print "\t%s: type %d, length %d" % (v.name, v.type, v.data.length)
+    for k in regdb.keys():
+        print "%s" % k
+        for v in regdb.values(k):
+            print "\t%s: type %d, length %d" % (v.name, v.type, v.data.length)
 
 def print_samba3_winsdb(winsdb):
-       print_header("WINS Database")
+    print_header("WINS Database")
 
-       for name in winsdb:
-               (ttl, ips, nb_flags) = winsdb[name]
-               print "%s, nb_flags: %s, ttl: %lu, %d ips, fst: %s" % (name, nb_flags, ttl, len(ips), ips[0])
+    for name in winsdb:
+        (ttl, ips, nb_flags) = winsdb[name]
+        print "%s, nb_flags: %s, ttl: %lu, %d ips, fst: %s" % (name, nb_flags, ttl, len(ips), ips[0])
 
 def print_samba3_groupmappings(groupdb):
-       print_header("Group Mappings")
-       
-       for sid in groupdb.groupsids():
-               print "\t--- Group: %s ---" % g.nt_name
-               print "\tComment: %s" % g.comment
-               print "\tGID: %d" % g.gid
-               print "\tSID Name Use: %d" % g.sid_name_use
-               print "\tSID: %s\n" % g.sid
+    print_header("Group Mappings")
+    
+    for sid in groupdb.groupsids():
+        print "\t--- Group: %s ---" % sid
 
 def print_samba3_aliases(groupdb):
-       for a in groupdb.aliases:
-               print "\t--- Alias: %s ---" % a.sid
-               for m in a.members:
-                       print "\t%s" % m
+    for sid in groupdb.aliases():
+        print "\t--- Alias: %s ---" % sid
 
 def print_samba3_idmapdb(idmapdb):
-       print_header("Winbindd SID<->GID/UID mappings")
+    print_header("Winbindd SID<->GID/UID mappings")
 
-       print "User High Water Mark: %d" % idmapdb.user_hwm
-       print "Group High Water Mark: %d\n" % idmapdb.group_hwm
+    print "User High Water Mark: %d" % idmapdb.get_user_hwm()
+    print "Group High Water Mark: %d\n" % idmapdb.get_group_hwm()
 
-       for e in idmapdb.mappings:
-               if e.type == e.IDMAP_GROUP:
-                       print "%s -> GID %d" % (e.sid, e.unix_id)
-               else:
-                       print "%s -> UID %d" % (e.sid, e.unix_id)
+    for uid in idmapdb.uids():
+        print "%s -> UID %d" % (idmapdb.get_user_sid(uid), uid)
+
+    for gid in idmapdb.gids():
+        print "%s -> GID %d" % (idmapdb.get_group_sid(gid), gid)
 
 def print_samba3(samba3):
-       print_samba3_policy(samba3.get_policy_db())
-       print_samba3_winsdb(samba3.get_wins_db())
-       print_samba3_regdb(samba3.get_registry())
-       print_samba3_secrets(samba3.get_secrets_db())
-       groupdb = samba3.get_groupmapping_db()
-       print_samba3_groupmappings(groupdb)
-       print_samba3_aliases(groupdb)
-       print_samba3_idmapdb(samba3.get_idmap_db())
-       print_samba3_shares(samba3)
-       print_samba3_sam(samba3)
+    print_samba3_policy(samba3.get_policy_db())
+    print_samba3_winsdb(samba3.get_wins_db())
+    print_samba3_regdb(samba3.get_registry())
+    print_samba3_secrets(samba3.get_secrets_db())
+    print_samba3_idmapdb(samba3.get_idmap_db())
+    print_samba3_sam(samba3.get_sam_db())
+    groupdb = samba3.get_groupmapping_db()
+    print_samba3_groupmappings(groupdb)
+    print_samba3_aliases(groupdb)
+    print_samba3_shares(samba3.get_shares())
 
 def print_samba3_summary(samba3):
-       print "WINS db entries: %d" % len(samba3.get_wins_db())
-       print "Registry key count: %d" % len(samba3.get_registry())
-       groupdb = samba3.get_groupmapping_db()
-       print "Groupmap count: %d" % len(list(groupdb.groupsids()))
-       print "Alias count: %d" % len(list(groupdb.aliases()))
-       idmapdb = samba3.get_idmap_db()
-       print "Idmap count: %d" % (len(list(idmapdb.uids())) + len(list(idmapdb.gids())))
+    print "WINS db entries: %d" % len(samba3.get_wins_db())
+    print "Registry key count: %d" % len(samba3.get_registry())
+    groupdb = samba3.get_groupmapping_db()
+    print "Groupmap count: %d" % len(list(groupdb.groupsids()))
+    print "Alias count: %d" % len(list(groupdb.aliases()))
+    idmapdb = samba3.get_idmap_db()
+    print "Idmap count: %d" % (len(list(idmapdb.uids())) + len(list(idmapdb.gids())))
 
 libdir = args[0]
 if len(args) > 1:
-       smbconf = args[2]
+    smbconf = args[2]
 else:
-       smbconf = os.path.join(libdir, "smb.conf")
+    smbconf = os.path.join(libdir, "smb.conf")
 
 samba3 = samba.samba3.Samba3(libdir, smbconf)
 
 if opts.format == "summary":
-       print_samba3_summary(samba3)
+    print_samba3_summary(samba3)
 elif opts.format == "full":
-       print_samba3(samba3)
+    print_samba3(samba3)