r9830: Fix support for importing registry values. Extended the examplre registry...
[ira/wip.git] / source / scripting / libjs / upgrade.js
index 0e12d7c3452611a79d40c7d78a5eb38797d1ff82..e78865f1965b7964af668fa95d6a631fd92d1685 100644 (file)
@@ -30,7 +30,7 @@ function regkey_to_dn(name)
  *   HKPT
  */
 
-function upgrade_registry(regdb,prefix)
+function upgrade_registry(regdb,prefix,ldb)
 {
        assert(regdb != undefined);
        var prefix_up = strupper(prefix);
@@ -63,7 +63,7 @@ name: %s
 dn: %s,value=%s
 value: %s
 type: %d
-data:: %s", keydn, rv.value, rv.type, base64(rv.data));
+data:: %s", keydn, rv.name, rv.name, rv.type, ldb.encode(rv.data));
                }
        }
 
@@ -103,8 +103,6 @@ function upgrade_sam_account(acc,domaindn)
        var ldb = ldb_init();
        var ldif = sprintf(
 "dn: cn=%s,%s
-objectClass: top
-objectClass: person
 objectClass: user
 lastLogon: %d
 lastLogoff: %d
@@ -403,17 +401,17 @@ function upgrade_smbconf(oldconf,mark)
        return newconf;
 }
 
-function upgrade(subobj, samba3, message)
+function upgrade(subobj, samba3, message, paths)
 {
        var ret = 0;
        var lp = loadparm_init();
        var samdb = ldb_init();
-       var ok = samdb.connect("sam.ldb");
+       var ok = samdb.connect(paths.samdb);
        assert(ok);
 
        message("Writing configuration\n");
        var newconf = upgrade_smbconf(samba3.configuration,true);
-       newconf.save(lp.get("config file"));
+       newconf.save(paths.smbconf);
 
        message("Importing account policies\n");
        var ldif = upgrade_sam_policy(samba3,subobj.BASEDN);
@@ -422,7 +420,7 @@ function upgrade(subobj, samba3, message)
 
        // figure out ldapurl, if applicable
        var ldapurl = undefined;
-       var pdb = samba3.configuration.get_list("passdb backends");
+       var pdb = samba3.configuration.get_list("passdb backend");
        if (pdb != undefined) {
                for (var b in pdb) {
                        if (substr(pdb[b], 0, 7) == "ldapsam") {
@@ -438,6 +436,7 @@ function upgrade(subobj, samba3, message)
 
        // Enable samba3sam module if original passdb backend was ldap
        if (ldapurl != undefined) {
+               message("Enabling Samba3 LDAP mappings for SAM database\n");
                var ldif = sprintf("
 dn: @MAP=samba3sam
 @MAP_URL: %s", ldapurl);
@@ -474,11 +473,12 @@ dn: @MAP=samba3sam
        message("Importing registry data\n");
        var hives = new Array("hkcr","hkcu","hklm","hkpd","hku","hkpt"); 
        for (var i in hives) {
-               message("... " + hives[i] + "\n");
+               var hn = hives[i];
+               message("... " + hn + "\n");
                var regdb = ldb_init();
-               ok = regdb.connect(hives[i] + ".ldb");
+               ok = regdb.connect(paths[hn]);
                assert(ok);
-               var ldif = upgrade_registry(samba3.registry, hives[i]);
+               var ldif = upgrade_registry(samba3.registry, hn, regdb);
                for (var j in ldif) {
                        message("... ... " + j);
                        ok = regdb.add(ldif[j]);
@@ -492,7 +492,7 @@ dn: @MAP=samba3sam
 
        message("Importing WINS data\n");
        var winsdb = ldb_init();
-       ok = winsdb.connect("wins.ldb");
+       ok = winsdb.connect(paths.winsdb);
        assert(ok);
        ldb_erase(winsdb);
 
@@ -500,8 +500,5 @@ dn: @MAP=samba3sam
        ok = winsdb.add(ldif);
        assert(ok);
 
-       message("Reloading smb.conf\n");
-       lp.reload();
-
        return ret;
 }