#!/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", 'verify', 'targetdir=s', 'quiet', '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 You must provide at least a realm and domain "); 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","winsdb"); 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);; } provision(subobj, message, options.blank,paths); var ret = upgrade(subobj,samba3,message,paths); if (ret > 0) { message("Failed to import %d entries\n", ret); } else { message("All OK\n"); } if (options.verify != undefined) { message("Verifying...\n"); ret = upgrade_verify(subobj, samba3,paths,message); } return ret;