2 exec smbscript "$0" ${1+"$@"}
5 Copyright Jelmer Vernooij 2005
6 Released under the GNU GPL v2 or later
9 options = GetOptions(ARGV,
12 "POPT_COMMON_VERSION",
17 if (options == undefined) {
18 println("Failed to parse options");
22 libinclude("base.js");
23 libinclude("provision.js");
24 libinclude("upgrade.js");
27 print a message if quiet is not set
31 if (options["quiet"] == undefined) {
32 print(vsprintf(arguments));
36 function ldifprint(data)
38 if (options["ldif"] != undefined) {
51 provision [options] <libdir> <smbconf>
54 --blank do not add users or groups, just the structure
56 You must provide at least a realm and domain
62 if (options.ARGV.length != 2) {
67 if (options.dn == undefined) {
68 options.dn = "dc=example,dc=org";
71 message("Reading Samba3 databases and smb.conf\n");
72 var samba3 = samba3_read(options.ARGV[0], options.ARGV[1]);
74 if (samba3 == undefined) {
75 println("Error reading Samba3 data");
79 message("Writing smb.conf\n");
80 var smbconf = upgrade_smbconf(samba3);
83 message("Provisioning\n");
84 var subobj = upgrade_provision(samba3);
85 provision(subobj, message, blank);
87 var samdb = ldb_init();
88 samdb.connect(lp.get("setup directory") + "/samdb.ldb");
90 message("Importing account policies\n");
91 var ldif = upgrade_policy(samba3);
95 // FIXME: Enable samba3sam module if original passdb backend was ldap
97 message("Importing users\n");
98 for (var i in samba3.samaccounts) {
99 message("Importing user '" + samba3.samaccounts[i].username + "'");
100 var ldif = upgrade_sam_account(samba3.samaccounts[i]);
105 message("Importing groups\n");
106 for (var i in samba3.groupmappings) {
107 message("Importing group '" + samba3.groupmappings[i].username + "'");
108 var ldif = upgrade_sam_group(samba3.groupmappings[i]);
113 message("Importing WINS data\n");
114 var ldif = upgrade_wins(samba3)
116 setup_ldb(ldif, "wins", Object());
118 message("Importing registry data\n");
119 var hives = ["hkcr","hkcu","hklm","hkpd"];
120 for (var i in hives) {
121 var regdb = ldb_init();
122 regdb.connect(lp.get("setup directory") + "/" + hives[i] + ".ldb");
123 var ldif = upgrade_registry(samba3, hives[i]);