#!/bin/sh exec smbscript "$0" ${1+"$@"} /* Upgrade from Samba3 Copyright Jelmer Vernooij 2005 Released under the GNU GPL v2 or later */ options = GetOptions(ARGV, "POPT_AUTOHELP", "POPT_COMMON_SAMBA", "POPT_COMMON_VERSION", "POPT_COMMON_CREDENTIALS", 'verify', 'targetdir=s', 'quiet', 'realm', 'blank'); if (options == undefined) { println("Failed to parse options"); return -1; } libinclude("base.js"); libinclude("provision.js"); libinclude("upgrade.js"); /* print a message if quiet is not set */ function message() { if (options["quiet"] == undefined) { print(vsprintf(arguments)); } } /* show some help */ function ShowHelp() { print(" Samba4 import tool provision [options] --targetdir=DIR Output to specified directory --quiet Be quiet --blank Do not add users or groups, just the structure --realm=REALM Override realm to use "); exit(1); } if (options.ARGV.length != 2) { ShowHelp(); exit(1); } var lp = loadparm_init(); message("Reading Samba3 databases and smb.conf\n"); var samba3 = samba3_read(options.ARGV[0], options.ARGV[1]); if (samba3 == undefined) { println("Error reading Samba3 data"); exit(1); } message("Provisioning\n"); var subobj = upgrade_provision(samba3); var paths; if (options.targetdir != undefined) { paths = new Object(); paths.smbconf = sprintf("%s/smb.conf", options.targetdir); var ldbs = new Array("hklm","hkcr","hku","hkcu","hkpd","hkpt","samdb","rootdse","secrets","wins"); for (var i in ldbs) { var n = ldbs[i]; paths[n] = sprintf("tdb://%s/%s.ldb", options.targetdir, n); } paths.dns = options.targetdir+"/dns.zone"; } else { paths = provision_default_paths(subobj);; } var creds = options.get_credentials(); var system_session = system_session(); var paths = provision_default_paths(subobj); if (options.realm != undefined) { subobj.REALM = options.realm; } provision(subobj, message, options.blank, paths, system_session, creds); var ret = upgrade(subobj,samba3,message,paths, system_session, creds); if (ret > 0) { message("Failed to import %d entries\n", ret); } else { provision_dns(subobj, message, paths, system_session, creds); message("All OK\n"); } if (options.verify != undefined) { message("Verifying...\n"); ret = upgrade_verify(subobj, samba3,paths,message); } return ret;