From d152839e299e7e406bb938c5b413ad975a895d6f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 28 Aug 2005 23:03:49 +0000 Subject: r9722: Initial attempt at converting samba3dump to EJS.. (This used to be commit 7e3b94dfb9c421793dab7813b96ca63da4b33960) --- source4/scripting/bin/samba3dump | 220 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 source4/scripting/bin/samba3dump (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump new file mode 100644 index 0000000000..71937c27c7 --- /dev/null +++ b/source4/scripting/bin/samba3dump @@ -0,0 +1,220 @@ +#!/bin/sh +exec smbscript "$0" ${1+"$@"} +/* + Dump Samba3 data + Copyright Jelmer Vernooij 2005 + Released under the GNU GPL v2 or later +*/ + +options = GetOptions(ARGV, + "POPT_AUTOHELP", + "POPT_COMMON_SAMBA", + "POPT_COMMON_VERSION", + 'format=s', + 'quiet', 'blank'); + +if (options == undefined) { + println("Failed to parse options"); + return -1; +} + +if (options.format == undefined) { + options.format = "summary"; +} + +if (options.format != "summary" && options.format != "full") { + printf("Unknown format %s\n", options.format); + return -1; +} + +libinclude("base.js"); + +if (ARGV.length != 3) { + println("Usage: samba3dump "); + return -1; +} + +function print_header(txt) +{ + printf("\n%s\n", txt); + for (i = 0; txt[i]; i++) putchar('='); + putchar('\n'); +} + +function print_samba3_policy(pol) +{ + print_header("Account Policies"); + printf("Min password length: %d\n", pol.min_password_length); + printf("Password history length: %d\n", pol.password_history); + printf("User must logon to change password: %d\n", pol.user_must_logon_to_change_password); + printf("Maximum password age: %d\n", pol.maximum_password_age); + printf("Minimum password age: %d\n", pol.minimum_password_age); + printf("Lockout duration: %d\n", pol.lockout_duration); + printf("Reset Count Minutes: %d\n", pol.reset_count_minutes); + printf("Bad Lockout Minutes: %d\n", pol.bad_lockout_minutes); + printf("Disconnect Time: %d\n", pol.disconnect_time); + printf("Refuse Machine Password Change: %d\n", pol.refuse_machine_password_change); +} + +function print_samba3_sam(samba3) +{ + print_header("SAM Database"); + + for (i = 0; i < samba3.samaccount_count; i++) { + printf("%d: %s\n", samba3.samaccounts[i].user_rid, samba3.samaccounts[i].username); + } +} + +function print_samba3_shares(samba3) +{ + print_header("Configured shares"); + for (i = 0; i < samba3.share_count; i++) { + printf("--- %s ---\n", samba3.shares[i].name); + + for (j = 0; j < samba3.shares[i].parameter_count; j++) { + printf("\t%s = %s\n", samba3.shares[i].parameters[j].name, samba3.shares[i].parameters[j].value); + } + + println(""); + } +} + +function print_samba3_secrets(secrets) +{ + print_header("Secrets"); + + println("IPC Credentials:"); + if (secrets.ipc_cred.username_obtained) + printf(" User: %s\n", secrets.ipc_cred.username); + if (secrets.ipc_cred.password_obtained) + printf(" Password: %s\n", secrets.ipc_cred.password); + + if (secrets.ipc_cred.domain_obtained) + printf(" Domain: %s\n\n", secrets.ipc_cred.domain); + + println("LDAP passwords:"); + for (i = 0; i < secrets.ldappw_count; i++) { + printf("\t%s -> %s\n", secrets.ldappws[i].dn, secrets.ldappws[i].password); + } + println(""); + + println("Domains:"); + for (i = 0; i < secrets.domain_count; i++) { + printf("\t--- %s ---\n", secrets.domains[i].name); + printf("\tSID: %s\n", secrets.domains[i].sid); + printf("\tGUID: %s\n", secrets.domains[i].guid); + printf("\tPlaintext pwd: %s\n", secrets.domains[i].plaintext_pw); + printf("\tLast Changed: %lu\n", secrets.domains[i].last_change_time); + printf("\tSecure Channel Type: %d\n\n", secrets.domains[i].sec_channel_type); + } + + println("Trusted domains:"); + for (i = 0; i < secrets.trusted_domain_count; i++) { + for (j = 0; j < secrets.trusted_domains[i].uni_name_len; j++) { + printf("\t--- %s ---\n", secrets.trusted_domains[i].uni_name[j]); + } + printf("\tPassword: %s\n", secrets.trusted_domains[i].pass); + printf("\tModified: %lu\n", secrets.trusted_domains[i].mod_time); + printf("\tSID: %s\n", secrets.trusted_domains[i].domain_sid); + } +} + +function print_samba3_regdb(regdb) +{ + print_header("Registry"); + + for (i = 0; i < regdb.key_count; i++) { + printf("%s\n", regdb.keys[i].name); + for (j = 0; j < regdb.keys[i].value_count; j++) { + printf("\t%s: type %d, length %d\n", + regdb.keys[i].values[j].name, + regdb.keys[i].values[j].type, + regdb.keys[i].values[j].data.length); + } + } +} + +function print_samba3_winsdb(samba3) +{ + print_header("WINS Database"); + + for (i = 0; i < samba3.winsdb_count; i++) { + printf("%s, nb_flags: %x, type: %d, ttl: %lu, %d ips\n", samba3.winsdb_entries[i].name, samba3.winsdb_entries[i].nb_flags, samba3.winsdb_entries[i].type, samba3.winsdb_entries[i].ttl, samba3.winsdb_entries[i].ip_count); + } +} + +function print_samba3_groupdb(groupdb) +{ + int i; + print_header("Group Mappings"); + + for (i = 0; i < groupdb.groupmap_count; i++) + { + printf("\t--- Group: %s ---\n", groupdb.groupmappings[i].nt_name); + printf("\tComment: %s\n", groupdb.groupmappings[i].comment); + printf("\tGID: %d\n", groupdb.groupmappings[i].gid); + printf("\tSID Name Use: %d\n", groupdb.groupmappings[i].sid_name_use); + printf("\tSID: %s\n\n", groupdb.groupmappings[i].sid); + } + + for (i = 0; i < groupdb.alias_count; i++) + { + int j; + printf("\t--- Alias: %s ---\n", groupdb.aliases[i].sid); + for (j = 0; j < groupdb.aliases[i].member_count; j++) { + printf("\t%s\n", groupdb.aliases[i].members[j]); + } + } +} + +function print_samba3_idmapdb(idmapdb) +{ + print_header("Winbindd SID<->GID/UID mappings"); + + printf("User High Water Mark: %d\n", idmapdb.user_hwm); + printf("Group High Water Mark: %d\n\n", idmapdb.group_hwm); + + for (i = 0; i < idmapdb.mapping_count; i++) { + printf("%s -> ", + idmapdb.mappings[i].sid); + + if (idmapdb.mappings[i].type == IDMAP_GROUP) { + printf("GID %d", idmapdb.mappings[i].unix_id); + } else { + printf("UID %d", idmapdb.mappings[i].unix_id); + } + } +} + +function print_samba3(samba3) +{ + print_samba3_sam(samba3); + print_samba3_policy(samba3.policy); + print_samba3_shares(samba3); + print_samba3_winsdb(samba3); + print_samba3_regdb(samba3.registry); + print_samba3_secrets(samba3.secrets); + print_samba3_groupdb(samba3.group); + print_samba3_idmapdb(samba3.idmap); +} + +function print_samba3_summary(samba3) +{ + printf("WINS db entries: %d\n", samba3.winsdb_count); + printf("SAM Accounts: %d\n", samba3.samaccount_count); + printf("Registry key count: %d\n", samba3.registry.key_count); + printf("Shares (including [global]): %d\n", samba3.share_count); + printf("Groupmap count: %d\n", samba3.group.groupmap_count); + printf("Alias count: %d\n", samba3.group.alias_count); + printf("Idmap count: %d\n", samba3.idmap.mapping_count); +} + +samba3 = samba3_read(ARGV[1], ARGV[2]); + +if (options.format == "summary") { + print_samba3_summary(samba3); +} else if (options.format == "full") { + print_samba3(samba3); +} + +return 0; -- cgit From 176da2a2813aa00fed8a485548f98e61ffa9350c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 29 Aug 2005 00:48:24 +0000 Subject: r9724: Rewrite samba3dump in JS. The summary works now, but the full output is triggering some obscure EJS assert.. (This used to be commit 42605f4444998e3063ffd1bea17425ff825f6132) --- source4/scripting/bin/samba3dump | 125 +++++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 64 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 71937c27c7..059af26e7e 100644 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -29,7 +29,7 @@ if (options.format != "summary" && options.format != "full") { libinclude("base.js"); -if (ARGV.length != 3) { +if (options.ARGV.length != 2) { println("Usage: samba3dump "); return -1; } @@ -37,8 +37,7 @@ if (ARGV.length != 3) { function print_header(txt) { printf("\n%s\n", txt); - for (i = 0; txt[i]; i++) putchar('='); - putchar('\n'); + println("=========================================="); } function print_samba3_policy(pol) @@ -60,19 +59,19 @@ function print_samba3_sam(samba3) { print_header("SAM Database"); - for (i = 0; i < samba3.samaccount_count; i++) { - printf("%d: %s\n", samba3.samaccounts[i].user_rid, samba3.samaccounts[i].username); + for (a in samba3.samaccounts) { + printf("%d: %s\n", a.user_rid, a.username); } } function print_samba3_shares(samba3) { print_header("Configured shares"); - for (i = 0; i < samba3.share_count; i++) { - printf("--- %s ---\n", samba3.shares[i].name); + for (s in samba3.shares) { + printf("--- %s ---\n", s.name); - for (j = 0; j < samba3.shares[i].parameter_count; j++) { - printf("\t%s = %s\n", samba3.shares[i].parameters[j].name, samba3.shares[i].parameters[j].value); + for (p in s.parameters) { + printf("\t%s = %s\n", p.name, p.value); } println(""); @@ -85,37 +84,37 @@ function print_samba3_secrets(secrets) println("IPC Credentials:"); if (secrets.ipc_cred.username_obtained) - printf(" User: %s\n", secrets.ipc_cred.username); + printf(" User: %s\n", secrets.ipc_cred.get_username); if (secrets.ipc_cred.password_obtained) - printf(" Password: %s\n", secrets.ipc_cred.password); + printf(" Password: %s\n", secrets.ipc_cred.get_password); if (secrets.ipc_cred.domain_obtained) - printf(" Domain: %s\n\n", secrets.ipc_cred.domain); + printf(" Domain: %s\n\n", secrets.ipc_cred.get_domain); println("LDAP passwords:"); - for (i = 0; i < secrets.ldappw_count; i++) { - printf("\t%s -> %s\n", secrets.ldappws[i].dn, secrets.ldappws[i].password); + for (pw in secrets.ldappws) { + printf("\t%s -> %s\n", pw.dn, pw.password); } println(""); println("Domains:"); - for (i = 0; i < secrets.domain_count; i++) { - printf("\t--- %s ---\n", secrets.domains[i].name); - printf("\tSID: %s\n", secrets.domains[i].sid); - printf("\tGUID: %s\n", secrets.domains[i].guid); - printf("\tPlaintext pwd: %s\n", secrets.domains[i].plaintext_pw); - printf("\tLast Changed: %lu\n", secrets.domains[i].last_change_time); - printf("\tSecure Channel Type: %d\n\n", secrets.domains[i].sec_channel_type); + for (d in secrets.domains) { + printf("\t--- %s ---\n", d.name); + printf("\tSID: %s\n", d.sid); + printf("\tGUID: %s\n", d.guid); + printf("\tPlaintext pwd: %s\n", d.plaintext_pw); + printf("\tLast Changed: %lu\n", d.last_change_time); + printf("\tSecure Channel Type: %d\n\n", d.sec_channel_type); } println("Trusted domains:"); - for (i = 0; i < secrets.trusted_domain_count; i++) { - for (j = 0; j < secrets.trusted_domains[i].uni_name_len; j++) { - printf("\t--- %s ---\n", secrets.trusted_domains[i].uni_name[j]); + for (td in secrets.trusted_domains) { + for (j = 0; j < td.uni_name_len; j++) { + printf("\t--- %s ---\n", td.uni_name[j]); } - printf("\tPassword: %s\n", secrets.trusted_domains[i].pass); - printf("\tModified: %lu\n", secrets.trusted_domains[i].mod_time); - printf("\tSID: %s\n", secrets.trusted_domains[i].domain_sid); + printf("\tPassword: %s\n", td.pass); + printf("\tModified: %lu\n", td.mod_time); + printf("\tSID: %s\n", td.domain_sid); } } @@ -123,13 +122,10 @@ function print_samba3_regdb(regdb) { print_header("Registry"); - for (i = 0; i < regdb.key_count; i++) { - printf("%s\n", regdb.keys[i].name); - for (j = 0; j < regdb.keys[i].value_count; j++) { - printf("\t%s: type %d, length %d\n", - regdb.keys[i].values[j].name, - regdb.keys[i].values[j].type, - regdb.keys[i].values[j].data.length); + for (k in regdb.keys) { + printf("%s\n", k.name); + for (v in k.values) { + printf("\t%s: type %d, length %d\n", v.name, v.type, v.data.length); } } } @@ -138,31 +134,32 @@ function print_samba3_winsdb(samba3) { print_header("WINS Database"); - for (i = 0; i < samba3.winsdb_count; i++) { - printf("%s, nb_flags: %x, type: %d, ttl: %lu, %d ips\n", samba3.winsdb_entries[i].name, samba3.winsdb_entries[i].nb_flags, samba3.winsdb_entries[i].type, samba3.winsdb_entries[i].ttl, samba3.winsdb_entries[i].ip_count); + for (e in samba3.winsentries) { + printf("%s, nb_flags: %x, type: %d, ttl: %lu, %d ips\n", e.name, e.nb_flags, e.type, e.ttl, e.ip_count); } } -function print_samba3_groupdb(groupdb) +function print_samba3_groupmappings(groupdb) { int i; print_header("Group Mappings"); - for (i = 0; i < groupdb.groupmap_count; i++) - { - printf("\t--- Group: %s ---\n", groupdb.groupmappings[i].nt_name); - printf("\tComment: %s\n", groupdb.groupmappings[i].comment); - printf("\tGID: %d\n", groupdb.groupmappings[i].gid); - printf("\tSID Name Use: %d\n", groupdb.groupmappings[i].sid_name_use); - printf("\tSID: %s\n\n", groupdb.groupmappings[i].sid); + for (g in groupdb.groupmappings) { + printf("\t--- Group: %s ---\n", g.nt_name); + printf("\tComment: %s\n", g.comment); + printf("\tGID: %d\n", g.gid); + printf("\tSID Name Use: %d\n", g.sid_name_use); + printf("\tSID: %s\n\n", g.sid); } +} - for (i = 0; i < groupdb.alias_count; i++) - { +function print_samba3_aliases(groupdb) +{ + for (a in groupdb.aliases) { int j; - printf("\t--- Alias: %s ---\n", groupdb.aliases[i].sid); - for (j = 0; j < groupdb.aliases[i].member_count; j++) { - printf("\t%s\n", groupdb.aliases[i].members[j]); + printf("\t--- Alias: %s ---\n", a.sid); + for (j = 0; j < a.member_count; j++) { + printf("\t%s\n", a.members[j]); } } } @@ -174,14 +171,13 @@ function print_samba3_idmapdb(idmapdb) printf("User High Water Mark: %d\n", idmapdb.user_hwm); printf("Group High Water Mark: %d\n\n", idmapdb.group_hwm); - for (i = 0; i < idmapdb.mapping_count; i++) { - printf("%s -> ", - idmapdb.mappings[i].sid); + for (e in idmapdb.mappings) { + printf("%s -> ", e.sid); - if (idmapdb.mappings[i].type == IDMAP_GROUP) { - printf("GID %d", idmapdb.mappings[i].unix_id); + if (e.type == IDMAP_GROUP) { + printf("GID %d", e.unix_id); } else { - printf("UID %d", idmapdb.mappings[i].unix_id); + printf("UID %d", e.unix_id); } } } @@ -194,22 +190,23 @@ function print_samba3(samba3) print_samba3_winsdb(samba3); print_samba3_regdb(samba3.registry); print_samba3_secrets(samba3.secrets); - print_samba3_groupdb(samba3.group); + print_samba3_groupmappings(samba3); + print_samba3_aliases(samba3); print_samba3_idmapdb(samba3.idmap); } function print_samba3_summary(samba3) { - printf("WINS db entries: %d\n", samba3.winsdb_count); - printf("SAM Accounts: %d\n", samba3.samaccount_count); - printf("Registry key count: %d\n", samba3.registry.key_count); - printf("Shares (including [global]): %d\n", samba3.share_count); - printf("Groupmap count: %d\n", samba3.group.groupmap_count); - printf("Alias count: %d\n", samba3.group.alias_count); - printf("Idmap count: %d\n", samba3.idmap.mapping_count); + printf("WINS db entries: %d\n", samba3.winsentries.length); + printf("SAM Accounts: %d\n", samba3.samaccounts.length); + printf("Registry key count: %d\n", samba3.registry.keys.length); + printf("Shares (including [global]): %d\n", samba3.shares.length); + printf("Groupmap count: %d\n", samba3.groupmappings.length); + printf("Alias count: %d\n", samba3.aliases.length); + printf("Idmap count: %d\n", samba3.idmapdb.mappings.length); } -samba3 = samba3_read(ARGV[1], ARGV[2]); +samba3 = samba3_read(options.ARGV[0], options.ARGV[1]); if (options.format == "summary") { print_samba3_summary(samba3); -- cgit From 14ebeffc463426b969acfb611033ff57a18916d6 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 29 Aug 2005 01:17:20 +0000 Subject: r9725: Fix full output mode of samba3dump as well. Thanks to tridge for a bit for explanation about js. (This used to be commit 765a30a0493cbd150f53335c6648e8e56ef6dc23) --- source4/scripting/bin/samba3dump | 58 ++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 20 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 059af26e7e..3960962f8b 100644 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -57,20 +57,25 @@ function print_samba3_policy(pol) function print_samba3_sam(samba3) { + var i; print_header("SAM Database"); - for (a in samba3.samaccounts) { + for (i in samba3.samaccounts) { + var a = samba3.samaccounts[i]; printf("%d: %s\n", a.user_rid, a.username); } } function print_samba3_shares(samba3) { + var i, j; print_header("Configured shares"); - for (s in samba3.shares) { + for (i in samba3.shares) { + var s = samba3.shares[i]; printf("--- %s ---\n", s.name); - for (p in s.parameters) { + for (j in s.parameters) { + var p = s.parameters[j]; printf("\t%s = %s\n", p.name, p.value); } @@ -80,6 +85,7 @@ function print_samba3_shares(samba3) function print_samba3_secrets(secrets) { + var i; print_header("Secrets"); println("IPC Credentials:"); @@ -92,13 +98,15 @@ function print_samba3_secrets(secrets) printf(" Domain: %s\n\n", secrets.ipc_cred.get_domain); println("LDAP passwords:"); - for (pw in secrets.ldappws) { + for (i in secrets.ldappws) { + var pw = secrets.ldappws[i]; printf("\t%s -> %s\n", pw.dn, pw.password); } println(""); println("Domains:"); - for (d in secrets.domains) { + for (i in secrets.domains) { + var d = secrets.domains[i]; printf("\t--- %s ---\n", d.name); printf("\tSID: %s\n", d.sid); printf("\tGUID: %s\n", d.guid); @@ -108,7 +116,8 @@ function print_samba3_secrets(secrets) } println("Trusted domains:"); - for (td in secrets.trusted_domains) { + for (i in secrets.trusted_domains) { + var td = secrets.trusted_domains[i]; for (j = 0; j < td.uni_name_len; j++) { printf("\t--- %s ---\n", td.uni_name[j]); } @@ -120,11 +129,14 @@ function print_samba3_secrets(secrets) function print_samba3_regdb(regdb) { + var i, j; print_header("Registry"); - for (k in regdb.keys) { + for (i in regdb.keys) { + var k = regdb.keys[i]; printf("%s\n", k.name); - for (v in k.values) { + for (j in k.values) { + var v = k.values[j]; printf("\t%s: type %d, length %d\n", v.name, v.type, v.data.length); } } @@ -132,19 +144,22 @@ function print_samba3_regdb(regdb) function print_samba3_winsdb(samba3) { + var i; print_header("WINS Database"); - for (e in samba3.winsentries) { - printf("%s, nb_flags: %x, type: %d, ttl: %lu, %d ips\n", e.name, e.nb_flags, e.type, e.ttl, e.ip_count); + for (i in samba3.winsentries) { + var e = samba3.winsentries[i]; + printf("%s, nb_flags: %x, type: %d, ttl: %lu, %d ips, fst: %s\n", e.name, e.nb_flags, e.type, e.ttl, e.ips.length, e.ips[0]); } } function print_samba3_groupmappings(groupdb) { - int i; + var i; print_header("Group Mappings"); - for (g in groupdb.groupmappings) { + for (i in groupdb.groupmappings) { + var g = groupdb.groupmappings[i]; printf("\t--- Group: %s ---\n", g.nt_name); printf("\tComment: %s\n", g.comment); printf("\tGID: %d\n", g.gid); @@ -155,10 +170,11 @@ function print_samba3_groupmappings(groupdb) function print_samba3_aliases(groupdb) { - for (a in groupdb.aliases) { - int j; + var i, j; + for (i in groupdb.aliases) { + var a = groupdb.aliases[i]; printf("\t--- Alias: %s ---\n", a.sid); - for (j = 0; j < a.member_count; j++) { + for (j in a.members) { printf("\t%s\n", a.members[j]); } } @@ -166,18 +182,20 @@ function print_samba3_aliases(groupdb) function print_samba3_idmapdb(idmapdb) { + var i; print_header("Winbindd SID<->GID/UID mappings"); printf("User High Water Mark: %d\n", idmapdb.user_hwm); printf("Group High Water Mark: %d\n\n", idmapdb.group_hwm); - for (e in idmapdb.mappings) { + for (i in idmapdb.mappings) { + var e = idmapdb.mappings[i]; printf("%s -> ", e.sid); - if (e.type == IDMAP_GROUP) { - printf("GID %d", e.unix_id); + if (e.type == e.IDMAP_GROUP) { + printf("GID %d\n", e.unix_id); } else { - printf("UID %d", e.unix_id); + printf("UID %d\n", e.unix_id); } } } @@ -192,7 +210,7 @@ function print_samba3(samba3) print_samba3_secrets(samba3.secrets); print_samba3_groupmappings(samba3); print_samba3_aliases(samba3); - print_samba3_idmapdb(samba3.idmap); + print_samba3_idmapdb(samba3.idmapdb); } function print_samba3_summary(samba3) -- cgit From 0549763600b26fadac443555e1cbec5680f91340 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 29 Aug 2005 12:31:32 +0000 Subject: r9735: More work on generating a valid Samba4 configuration using the Samba3 data (both console and SWAT) (This used to be commit d569465dc4def55c27878028f2fc762960f453d8) --- source4/scripting/bin/samba3dump | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 3960962f8b..6b3d999803 100644 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -155,10 +155,9 @@ function print_samba3_winsdb(samba3) function print_samba3_groupmappings(groupdb) { - var i; print_header("Group Mappings"); - for (i in groupdb.groupmappings) { + for (var i in groupdb.groupmappings) { var g = groupdb.groupmappings[i]; printf("\t--- Group: %s ---\n", g.nt_name); printf("\tComment: %s\n", g.comment); -- cgit From 4bbb73894c7e30a33cda97480e42aadb6fa56c92 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 23 Dec 2005 12:28:26 +0000 Subject: r12445: Fix header in manpage, make script executable (This used to be commit 7ca00cd918760dccc51e56234126ead8535a22ef) --- source4/scripting/bin/samba3dump | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 source4/scripting/bin/samba3dump (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump old mode 100644 new mode 100755 -- cgit From aa0a06f13c44e0eca0b3f2f0c34f0f7995b87159 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 23 Dec 2007 19:19:41 -0600 Subject: r26570: - Trim size of the swig-generated Python bindings by removing a bunch of {}'s. - Start working on Python equivalents for various EJS tests. - Fix regression in argument order for reg_diff_apply() in EJS bindings. (This used to be commit c550c03372cb260b78f6a6c132e70571bc4cb852) --- source4/scripting/bin/samba3dump | 387 ++++++++++++++++----------------------- 1 file changed, 155 insertions(+), 232 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 6b3d999803..44ffc6a861 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -1,234 +1,157 @@ -#!/bin/sh -exec smbscript "$0" ${1+"$@"} -/* - Dump Samba3 data - Copyright Jelmer Vernooij 2005 - Released under the GNU GPL v2 or later -*/ - -options = GetOptions(ARGV, - "POPT_AUTOHELP", - "POPT_COMMON_SAMBA", - "POPT_COMMON_VERSION", - 'format=s', - 'quiet', 'blank'); - -if (options == undefined) { - println("Failed to parse options"); - return -1; -} - -if (options.format == undefined) { - options.format = "summary"; -} - -if (options.format != "summary" && options.format != "full") { - printf("Unknown format %s\n", options.format); - return -1; -} - -libinclude("base.js"); - -if (options.ARGV.length != 2) { - println("Usage: samba3dump "); - return -1; -} - -function print_header(txt) -{ - printf("\n%s\n", txt); - println("=========================================="); -} - -function print_samba3_policy(pol) -{ - print_header("Account Policies"); - printf("Min password length: %d\n", pol.min_password_length); - printf("Password history length: %d\n", pol.password_history); - printf("User must logon to change password: %d\n", pol.user_must_logon_to_change_password); - printf("Maximum password age: %d\n", pol.maximum_password_age); - printf("Minimum password age: %d\n", pol.minimum_password_age); - printf("Lockout duration: %d\n", pol.lockout_duration); - printf("Reset Count Minutes: %d\n", pol.reset_count_minutes); - printf("Bad Lockout Minutes: %d\n", pol.bad_lockout_minutes); - printf("Disconnect Time: %d\n", pol.disconnect_time); - printf("Refuse Machine Password Change: %d\n", pol.refuse_machine_password_change); -} - -function print_samba3_sam(samba3) -{ - var i; - print_header("SAM Database"); +#!/usr/bin/python +# +# Dump Samba3 data +# Copyright Jelmer Vernooij 2005-2007 +# Released under the GNU GPL v3 or later +# + +import optparse +import os, sys +sys.path.append(os.path.join(os.path.dirname(__file__), "../python")) +import samba +import samba.samba3 + +parser = optparse.OptionParser("provision ") +parser.add_option("--format", type="choice", metavar="FORMAT", + choices=["full", "summary"]) + +opts, args = parser.parse_args() + +if opts.format is None: + opts.format = "summary" + +def print_header(txt): + print "\n%s" % txt + print "==========================================" + +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 + print "User must logon to change password: %d" % pol.user_must_logon_to_change_password + print "Maximum password age: %d" % pol.maximum_password_age + print "Minimum password age: %d" % pol.minimum_password_age + print "Lockout duration: %d" % pol.lockout_duration + print "Reset Count Minutes: %d" % pol.reset_count_minutes + print "Bad Lockout Minutes: %d" % pol.bad_lockout_minutes + print "Disconnect Time: %d" % pol.disconnect_time + print "Refuse Machine Password Change: %d" % pol.refuse_machine_password_change + +def print_samba3_sam(samba3): + print_header("SAM Database") - for (i in samba3.samaccounts) { - var a = samba3.samaccounts[i]; - printf("%d: %s\n", a.user_rid, a.username); - } -} - -function print_samba3_shares(samba3) -{ - var i, j; - print_header("Configured shares"); - for (i in samba3.shares) { - var s = samba3.shares[i]; - printf("--- %s ---\n", s.name); - - for (j in s.parameters) { - var p = s.parameters[j]; - printf("\t%s = %s\n", p.name, p.value); - } - - println(""); - } -} - -function print_samba3_secrets(secrets) -{ - var i; - print_header("Secrets"); - - println("IPC Credentials:"); - if (secrets.ipc_cred.username_obtained) - printf(" User: %s\n", secrets.ipc_cred.get_username); - if (secrets.ipc_cred.password_obtained) - printf(" Password: %s\n", secrets.ipc_cred.get_password); - - if (secrets.ipc_cred.domain_obtained) - printf(" Domain: %s\n\n", secrets.ipc_cred.get_domain); - - println("LDAP passwords:"); - for (i in secrets.ldappws) { - var pw = secrets.ldappws[i]; - printf("\t%s -> %s\n", pw.dn, pw.password); - } - println(""); - - println("Domains:"); - for (i in secrets.domains) { - var d = secrets.domains[i]; - printf("\t--- %s ---\n", d.name); - printf("\tSID: %s\n", d.sid); - printf("\tGUID: %s\n", d.guid); - printf("\tPlaintext pwd: %s\n", d.plaintext_pw); - printf("\tLast Changed: %lu\n", d.last_change_time); - printf("\tSecure Channel Type: %d\n\n", d.sec_channel_type); - } - - println("Trusted domains:"); - for (i in secrets.trusted_domains) { - var td = secrets.trusted_domains[i]; - for (j = 0; j < td.uni_name_len; j++) { - printf("\t--- %s ---\n", td.uni_name[j]); - } - printf("\tPassword: %s\n", td.pass); - printf("\tModified: %lu\n", td.mod_time); - printf("\tSID: %s\n", td.domain_sid); - } -} - -function print_samba3_regdb(regdb) -{ - var i, j; - print_header("Registry"); - - for (i in regdb.keys) { - var k = regdb.keys[i]; - printf("%s\n", k.name); - for (j in k.values) { - var v = k.values[j]; - printf("\t%s: type %d, length %d\n", v.name, v.type, v.data.length); - } - } -} - -function print_samba3_winsdb(samba3) -{ - var i; - print_header("WINS Database"); - - for (i in samba3.winsentries) { - var e = samba3.winsentries[i]; - printf("%s, nb_flags: %x, type: %d, ttl: %lu, %d ips, fst: %s\n", e.name, e.nb_flags, e.type, e.ttl, e.ips.length, e.ips[0]); - } -} - -function print_samba3_groupmappings(groupdb) -{ - print_header("Group Mappings"); + 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 "" + +def print_samba3_secrets(secrets): + print_header("Secrets") + + print "IPC Credentials:" + if secrets.ipc_cred.username_obtained: + print " User: %s\n" % secrets.ipc_cred.get_username + if secrets.ipc_cred.password_obtained: + print " Password: %s\n" % secrets.ipc_cred.get_password + + if secrets.ipc_cred.domain_obtained: + print " Domain: %s\n" % secrets.ipc_cred.get_domain + + print "LDAP passwords:" + for pw in secrets.ldappws: + print "\t%s -> %s" % (pw.dn, pw.password) + print "" + + print "Domains:" + for d in secrets.domains: + print "\t--- %s ---" % d.name + print "\tSID: %s" % d.sid + print "\tGUID: %s" % d.guid + print "\tPlaintext pwd: %s" % d.plaintext_pw + print "\tLast Changed: %lu" % d.last_change_time + print "\tSecure Channel Type: %d\n" % d.sec_channel_type + + print "Trusted domains:" + for td in secrets.trusted_domains: + for n in td.uni_name: + print "\t--- %s ---" % n + print "\tPassword: %s" % td.password + print "\tModified: %lu" % td.mod_time + print "\tSID: %s" % td.domain_sid + +def print_samba3_regdb(regdb): + print_header("Registry") + + for k in regdb.keys: + print "%s\n" % k.name + for v in regdb.values(k): + print "\t%s: type %d, length %d" % (v.name, v.type, v.data.length) + +def print_samba3_winsdb(samba3): + print_header("WINS Database") + + for e in samba3.winsentries: + print "%s, nb_flags: %x, type: %d, ttl: %lu, %d ips, fst: %s" % (e.name, e.nb_flags, e.type, e.ttl, e.ips.length, e.ips[0]) + +def print_samba3_groupmappings(groupdb): + print_header("Group Mappings") - for (var i in groupdb.groupmappings) { - var g = groupdb.groupmappings[i]; - printf("\t--- Group: %s ---\n", g.nt_name); - printf("\tComment: %s\n", g.comment); - printf("\tGID: %d\n", g.gid); - printf("\tSID Name Use: %d\n", g.sid_name_use); - printf("\tSID: %s\n\n", g.sid); - } -} - -function print_samba3_aliases(groupdb) -{ - var i, j; - for (i in groupdb.aliases) { - var a = groupdb.aliases[i]; - printf("\t--- Alias: %s ---\n", a.sid); - for (j in a.members) { - printf("\t%s\n", a.members[j]); - } - } -} - -function print_samba3_idmapdb(idmapdb) -{ - var i; - print_header("Winbindd SID<->GID/UID mappings"); - - printf("User High Water Mark: %d\n", idmapdb.user_hwm); - printf("Group High Water Mark: %d\n\n", idmapdb.group_hwm); - - for (i in idmapdb.mappings) { - var e = idmapdb.mappings[i]; - printf("%s -> ", e.sid); - - if (e.type == e.IDMAP_GROUP) { - printf("GID %d\n", e.unix_id); - } else { - printf("UID %d\n", e.unix_id); - } - } -} - -function print_samba3(samba3) -{ - print_samba3_sam(samba3); - print_samba3_policy(samba3.policy); - print_samba3_shares(samba3); - print_samba3_winsdb(samba3); - print_samba3_regdb(samba3.registry); - print_samba3_secrets(samba3.secrets); - print_samba3_groupmappings(samba3); - print_samba3_aliases(samba3); - print_samba3_idmapdb(samba3.idmapdb); -} - -function print_samba3_summary(samba3) -{ - printf("WINS db entries: %d\n", samba3.winsentries.length); - printf("SAM Accounts: %d\n", samba3.samaccounts.length); - printf("Registry key count: %d\n", samba3.registry.keys.length); - printf("Shares (including [global]): %d\n", samba3.shares.length); - printf("Groupmap count: %d\n", samba3.groupmappings.length); - printf("Alias count: %d\n", samba3.aliases.length); - printf("Idmap count: %d\n", samba3.idmapdb.mappings.length); -} - -samba3 = samba3_read(options.ARGV[0], options.ARGV[1]); - -if (options.format == "summary") { - print_samba3_summary(samba3); -} else if (options.format == "full") { - print_samba3(samba3); -} - -return 0; + for g in groupdb.groupmappings: + 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 + +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 + +def print_samba3_idmapdb(idmapdb): + 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 + + 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) + +def print_samba3(samba3): + print_samba3_sam(samba3) + print_samba3_policy(samba3.get_policy_db()) + print_samba3_shares(samba3) + print_samba3_winsdb(samba3.get_wins_db()) + print_samba3_regdb(samba3.get_registry()) + print_samba3_secrets(samba3.get_secrets_db()) + print_samba3_groupmappings(samba3.get_groupmapping_db()) + print_samba3_aliases(samba3) + print_samba3_idmapdb(samba3.get_idmap_db()) + +def print_samba3_summary(samba3): + print "WINS db entries: %d" % len(samba3.winsentries) + print "SAM Accounts: %d" % len(samba3.samaccounts) + print "Registry key count: %d" % len(samba3.registry.keys) + print "Shares (including [global]): %d" % len(samba3.shares) + print "Groupmap count: %d" % len(samba3.groupmappings) + print "Alias count: %d" % len(samba3.aliases) + print "Idmap count: %d" % len(samba3.idmapdb.mappings) + +samba3 = samba.samba3.Samba3(args[0], args[1]) + +if opts.format == "summary": + print_samba3_summary(samba3) +elif opts.format == "full": + print_samba3(samba3) -- cgit From 3c22677a8ce1635d7e055f954153dec4c1796b17 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 24 Dec 2007 14:16:59 -0600 Subject: r26591: Get the first bits of samba3dump to work again. (This used to be commit 3511027515f8ea860fbe46639d9169999646a297) --- source4/scripting/bin/samba3dump | 123 ++++++++++++++++++++++----------------- 1 file changed, 69 insertions(+), 54 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 44ffc6a861..0aa54d91cc 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -11,7 +11,7 @@ sys.path.append(os.path.join(os.path.dirname(__file__), "../python")) import samba import samba.samba3 -parser = optparse.OptionParser("provision ") +parser = optparse.OptionParser("provision []") parser.add_option("--format", type="choice", metavar="FORMAT", choices=["full", "summary"]) @@ -28,14 +28,22 @@ 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 - print "User must logon to change password: %d" % pol.user_must_logon_to_change_password - print "Maximum password age: %d" % pol.maximum_password_age - print "Minimum password age: %d" % pol.minimum_password_age - print "Lockout duration: %d" % pol.lockout_duration - print "Reset Count Minutes: %d" % pol.reset_count_minutes - print "Bad Lockout Minutes: %d" % pol.bad_lockout_minutes - print "Disconnect Time: %d" % pol.disconnect_time - print "Refuse Machine Password Change: %d" % pol.refuse_machine_password_change + 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") @@ -56,55 +64,55 @@ def print_samba3_shares(samba3): def print_samba3_secrets(secrets): print_header("Secrets") - print "IPC Credentials:" - if secrets.ipc_cred.username_obtained: - print " User: %s\n" % secrets.ipc_cred.get_username - if secrets.ipc_cred.password_obtained: - print " Password: %s\n" % secrets.ipc_cred.get_password - - if secrets.ipc_cred.domain_obtained: - print " Domain: %s\n" % secrets.ipc_cred.get_domain - - print "LDAP passwords:" - for pw in secrets.ldappws: - print "\t%s -> %s" % (pw.dn, pw.password) - print "" + 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 d in secrets.domains: - print "\t--- %s ---" % d.name - print "\tSID: %s" % d.sid - print "\tGUID: %s" % d.guid - print "\tPlaintext pwd: %s" % d.plaintext_pw - print "\tLast Changed: %lu" % d.last_change_time - print "\tSecure Channel Type: %d\n" % d.sec_channel_type + 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: - for n in td.uni_name: - print "\t--- %s ---" % n - print "\tPassword: %s" % td.password - print "\tModified: %lu" % td.mod_time - print "\tSID: %s" % td.domain_sid + for td in secrets.trusted_domains(): + print td def print_samba3_regdb(regdb): print_header("Registry") - for k in regdb.keys: - print "%s\n" % k.name + 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(samba3): +def print_samba3_winsdb(winsdb): print_header("WINS Database") - for e in samba3.winsentries: - print "%s, nb_flags: %x, type: %d, ttl: %lu, %d ips, fst: %s" % (e.name, e.nb_flags, e.type, e.ttl, e.ips.length, e.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 g in groupdb.groupmappings: + for sid in groupdb.groupsids(): print "\t--- Group: %s ---" % g.nt_name print "\tComment: %s" % g.comment print "\tGID: %d" % g.gid @@ -130,26 +138,33 @@ def print_samba3_idmapdb(idmapdb): print "%s -> UID %d" % (e.sid, e.unix_id) def print_samba3(samba3): - print_samba3_sam(samba3) print_samba3_policy(samba3.get_policy_db()) - print_samba3_shares(samba3) print_samba3_winsdb(samba3.get_wins_db()) print_samba3_regdb(samba3.get_registry()) print_samba3_secrets(samba3.get_secrets_db()) - print_samba3_groupmappings(samba3.get_groupmapping_db()) - print_samba3_aliases(samba3) + 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) def print_samba3_summary(samba3): - print "WINS db entries: %d" % len(samba3.winsentries) - print "SAM Accounts: %d" % len(samba3.samaccounts) - print "Registry key count: %d" % len(samba3.registry.keys) - print "Shares (including [global]): %d" % len(samba3.shares) - print "Groupmap count: %d" % len(samba3.groupmappings) - print "Alias count: %d" % len(samba3.aliases) - print "Idmap count: %d" % len(samba3.idmapdb.mappings) - -samba3 = samba.samba3.Samba3(args[0], args[1]) + 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] +else: + smbconf = os.path.join(libdir, "smb.conf") + +samba3 = samba.samba3.Samba3(libdir, smbconf) if opts.format == "summary": print_samba3_summary(samba3) -- cgit From cc30cb5e24160d107b67936d71f54645d9b3d23f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 25 Dec 2007 16:36:23 -0600 Subject: r26592: Finish fixing the samba3dump script. (This used to be commit 85679f3fc98238f90280f9f10d42550d71eeb918) --- source4/scripting/bin/samba3dump | 240 +++++++++++++++++++-------------------- 1 file changed, 117 insertions(+), 123 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 0aa54d91cc..157a708ff6 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -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 []") 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) -- cgit From 7c146c42d2cf51e891b9f29d3b61a40f173a3b23 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 25 Dec 2007 16:36:31 -0600 Subject: r26593: - More work on the python versions of samba3dump and the samba3sam tests. - Initial work converting the upgrade code to Python. - Removed the old EJS upgrade code because it has been broken for a long time. (This used to be commit 150cf39fbd4fe088546870fb0d8f20c0d9eb4aca) --- source4/scripting/bin/samba3dump | 3 --- 1 file changed, 3 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 157a708ff6..f8d10cbc71 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -47,7 +47,6 @@ def print_samba3_policy(pol): def print_samba3_sam(samdb): print_header("SAM Database") - for user in samdb: print "%s" % user @@ -55,10 +54,8 @@ 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): -- cgit From c4d3666ac2821518be57ca89d963f77bbddaedf4 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 26 Dec 2007 20:55:05 -0600 Subject: r26607: Fix reading of values and subkeys in Samba 3 registry files. (This used to be commit e3d7454ef70d6fe9a1ce34eaf57268bd5b713ccf) --- source4/scripting/bin/samba3dump | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index f8d10cbc71..8f56d423d8 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -80,7 +80,7 @@ def print_samba3_secrets(secrets): 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 "\tGUID: %s" % secrets.get_domain_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) @@ -93,11 +93,12 @@ def print_samba3_secrets(secrets): def print_samba3_regdb(regdb): print_header("Registry") + from registry import str_regtype 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) + print "[%s]" % k + for (value_name, (type, value)) in regdb.values(k).items(): + print "\"%s\"=%s:%s" % (value_name, str_regtype(type), value) def print_samba3_winsdb(winsdb): print_header("WINS Database") @@ -151,7 +152,7 @@ def print_samba3_summary(samba3): libdir = args[0] if len(args) > 1: - smbconf = args[2] + smbconf = args[1] else: smbconf = os.path.join(libdir, "smb.conf") -- cgit From 47d22189227c0dd6f2f370ade2cfb878eef0f240 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 11 May 2008 05:45:49 +0200 Subject: Set sys.path for running inside source tree. (This used to be commit b507109bb676715f7d9616e13b0e19305e9c2559) --- source4/scripting/bin/samba3dump | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index 8f56d423d8..d89667233f 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -7,7 +7,10 @@ import optparse import os, sys -sys.path.append(os.path.join(os.path.dirname(__file__), "../python")) + +# Find right directory when running from source tree +sys.path.insert(0, "bin/python") + import samba import samba.samba3 -- cgit From 976eca077d2ea9b44b4b62ae851ca9cc470e3729 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 24 May 2008 17:56:49 +0200 Subject: Move some scripts to examples directory since they're not really generically useful. (This used to be commit 4026493e91f8096e5d602cd42f9a83d2d75042db) --- source4/scripting/bin/samba3dump | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/scripting/bin/samba3dump') diff --git a/source4/scripting/bin/samba3dump b/source4/scripting/bin/samba3dump index d89667233f..c11f8dbd0d 100755 --- a/source4/scripting/bin/samba3dump +++ b/source4/scripting/bin/samba3dump @@ -14,7 +14,7 @@ sys.path.insert(0, "bin/python") import samba import samba.samba3 -parser = optparse.OptionParser("provision []") +parser = optparse.OptionParser("samba3dump []") parser.add_option("--format", type="choice", metavar="FORMAT", choices=["full", "summary"]) @@ -96,7 +96,7 @@ def print_samba3_secrets(secrets): def print_samba3_regdb(regdb): print_header("Registry") - from registry import str_regtype + from samba.registry import str_regtype for k in regdb.keys(): print "[%s]" % k -- cgit