diff options
Diffstat (limited to 'source4/setup')
-rwxr-xr-x | source4/setup/upgrade | 114 | ||||
-rwxr-xr-x | source4/setup/upgrade.py | 62 |
2 files changed, 32 insertions, 144 deletions
diff --git a/source4/setup/upgrade b/source4/setup/upgrade deleted file mode 100755 index f05e22f2e0..0000000000 --- a/source4/setup/upgrade +++ /dev/null @@ -1,114 +0,0 @@ -#!/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] <libdir> <smbconf> - --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, undefined); - -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; diff --git a/source4/setup/upgrade.py b/source4/setup/upgrade.py index 96584a1026..186ad3772b 100755 --- a/source4/setup/upgrade.py +++ b/source4/setup/upgrade.py @@ -6,15 +6,20 @@ # import getopt import optparse -import sys +import os, sys sys.path.append("scripting/python") +import param import samba -import samba.getopt +import samba.getopt as options +from samba.provision import provision_default_paths -parser = optparse.OptionParser("upgrade [options]") +parser = optparse.OptionParser("upgrade [options] <libdir> <smbconf>") parser.add_option_group(options.SambaOptions(parser)) parser.add_option_group(options.VersionOptions(parser)) -parser.add_option_group(options.CredentialsOptions(parser)) +credopts = options.CredentialsOptions(parser) +parser.add_option_group(credopts) +parser.add_option("--setupdir", type="string", metavar="DIR", + help="directory with setup files") parser.add_option("--realm", type="string", metavar="REALM", help="set realm") parser.add_option("--quiet", help="Be quiet") parser.add_option("--verify", help="Verify resulting configuration") @@ -23,44 +28,41 @@ parser.add_option("--blank", parser.add_option("--targetdir", type="string", metavar="DIR", help="Set target directory") -opts = parser.parse_args()[0] +opts, args = parser.parse_args() def message(text): """Print a message if quiet is not set.""" if opts.quiet: print text +if len(args) < 1: + parser.print_usage() + sys.exit(1) +from samba.samba3 import Samba3 message("Reading Samba3 databases and smb.conf\n") -samba3 = samba3_read(options.ARGV[0], options.ARGV[1]) - -message("Provisioning\n") -subobj = upgrade_provision(samba3) -if options.targetdir is not None: - paths = ProvisionPaths() - paths.smbconf = os.path.join(options.targetdir, "smb.conf") - ldbs = ["hklm","hkcr","hku","hkcu","hkpd","hkpt","samdb","rootdse","secrets","wins"] - for n in ldbs: - paths[n] = sprintf("tdb://%s/%s.ldb", options.targetdir, n) - paths.dns = os.path.join(options.targetdir, "dns.zone") +libdir = args[0] +if not os.path.isdir(libdir): + print "error: %s is not a directory" + sys.exit(1) +if len(args) > 1: + smbconf = args[1] else: - paths = provision_default_paths(subobj) + smbconf = os.path.join(libdir, "smb.conf") +samba3 = Samba3(libdir, smbconf) -creds = options.get_credentials() -system_session = system_session() -paths = provision_default_paths(subobj) +from samba.upgrade import upgrade_provision -if options.realm: - subobj.realm = options.realm +message("Provisioning\n") -provision(lp, subobj, message, options.blank, paths, system_session, creds, undefined) +setup_dir = opts.setupdir +if setup_dir is None: + setup_dir = "setup" -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") +creds = credopts.get_credentials() +lp = param.LoadParm() +lp.load(opts.configfile) +upgrade_provision(samba3, setup_dir, message, credentials=creds, session_info=system_session()) -if options.verify: +if opts.verify: message("Verifying...\n") ret = upgrade_verify(subobj, samba3, paths, message) |