summaryrefslogtreecommitdiff
path: root/source4/scripting
diff options
context:
space:
mode:
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-11-27 15:50:26 +0100
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-11-27 16:06:07 +0100
commit0cc45b47dc787abb2c3c31e4fc824798d9f3efe9 (patch)
tree21bda0714d9a43a8116a33212c35f7fd82b4fe0b /source4/scripting
parentbd6c133e506fdb5dee13e0a144ef99c6d452be42 (diff)
downloadsamba-0cc45b47dc787abb2c3c31e4fc824798d9f3efe9.tar.gz
samba-0cc45b47dc787abb2c3c31e4fc824798d9f3efe9.tar.bz2
samba-0cc45b47dc787abb2c3c31e4fc824798d9f3efe9.zip
s4:upgrade.py - rework to make the upgrade s3 -> s4 possible again
Able to read basic settings "workgroup", "realm", "netbios name" and the function mode from the s3 "smb.conf" and use them for the provision of s4.
Diffstat (limited to 'source4/scripting')
-rw-r--r--source4/scripting/python/samba/upgrade.py144
1 files changed, 72 insertions, 72 deletions
diff --git a/source4/scripting/python/samba/upgrade.py b/source4/scripting/python/samba/upgrade.py
index 89cf767dae..44b43a1a82 100644
--- a/source4/scripting/python/samba/upgrade.py
+++ b/source4/scripting/python/samba/upgrade.py
@@ -2,6 +2,7 @@
#
# backend code for upgrading from Samba3
# Copyright Jelmer Vernooij 2005-2007
+# Copyright Matthias Dieter Wallnöfer 2009
# Released under the GNU GPL v3 or later
#
@@ -9,7 +10,7 @@
__docformat__ = "restructuredText"
-from provision import provision, FILL_DRS
+from provision import provision
import grp
import ldb
import time
@@ -92,7 +93,6 @@ def import_sam_account(samldb,acc,domaindn,domainsid):
"ntPwdHash:": acc.nt_password,
})
-
def import_sam_group(samldb, sid, gid, sid_name_use, nt_name, comment, domaindn):
"""Upgrade a SAM group.
@@ -132,7 +132,6 @@ def import_sam_group(samldb, sid, gid, sid_name_use, nt_name, comment, domaindn)
"samba3SidNameUse": str(sid_name_use)
})
-
def import_idmap(samdb,samba3_idmap,domaindn):
"""Import idmap data.
@@ -157,7 +156,6 @@ def import_idmap(samdb,samba3_idmap,domaindn):
"type": "group",
"unixID": str(gid)})
-
def import_wins(samba4_winsdb, samba3_winsdb):
"""Import settings from a Samba3 WINS database.
@@ -208,73 +206,6 @@ def import_wins(samba4_winsdb, samba3_winsdb):
"objectClass": "winsMaxVersion",
"maxVersion": str(version_id)})
-def upgrade_provision(samba3, setup_dir, message, credentials, session_info, smbconf, targetdir):
- oldconf = samba3.get_conf()
-
- if oldconf.get("domain logons") == "True":
- serverrole = "domain controller"
- else:
- if oldconf.get("security") == "user":
- serverrole = "standalone"
- else:
- serverrole = "member server"
-
- domainname = oldconf.get("workgroup")
- if domainname:
- domainname = str(domainname)
- realm = oldconf.get("realm")
- netbiosname = oldconf.get("netbios name")
-
- secrets_db = samba3.get_secrets_db()
-
- if domainname is None:
- domainname = secrets_db.domains()[0]
- message("No domain specified in smb.conf file, assuming '%s'" % domainname)
-
- if realm is None:
- realm = domainname.lower()
- message("No realm specified in smb.conf file, assuming '%s'\n" % realm)
-
- domainguid = secrets_db.get_domain_guid(domainname)
- domainsid = secrets_db.get_sid(domainname)
- if domainsid is None:
- message("Can't find domain secrets for '%s'; using random SID\n" % domainname)
-
- if netbiosname is not None:
- machinepass = secrets_db.get_machine_password(netbiosname)
- else:
- machinepass = None
-
- result = provision(setup_dir=setup_dir, message=message,
- samdb_fill=FILL_DRS, smbconf=smbconf, session_info=session_info,
- credentials=credentials, realm=realm,
- domain=domainname, domainsid=domainsid, domainguid=domainguid,
- machinepass=machinepass, serverrole=serverrole, targetdir=targetdir)
-
- # FIXME: import_wins(Ldb(result.paths.winsdb), samba3.get_wins_db())
-
- # FIXME: import_registry(registry.Registry(), samba3.get_registry())
-
- # FIXME: import_idmap(samdb,samba3.get_idmap_db(),domaindn)
-
- groupdb = samba3.get_groupmapping_db()
- for sid in groupdb.groupsids():
- (gid, sid_name_use, nt_name, comment) = groupdb.get_group(sid)
- # FIXME: import_sam_group(samdb, sid, gid, sid_name_use, nt_name, comment, domaindn)
-
- # FIXME: Aliases
-
- passdb = samba3.get_sam_db()
- for name in passdb:
- user = passdb[name]
- #FIXME: import_sam_account(result.samdb, user, domaindn, domainsid)
-
- if hasattr(passdb, 'ldap_url'):
- message("Enabling Samba3 LDAP mappings for SAM database")
-
- enable_samba3sam(result.samdb, passdb.ldap_url)
-
-
def enable_samba3sam(samdb, ldapurl):
"""Enable Samba 3 LDAP URL database.
@@ -290,7 +221,6 @@ replace: @LIST
samdb.add({"dn": "@MAP=samba3sam", "@MAP_URL": ldapurl})
-
smbconf_keep = [
"dos charset",
"unix charset",
@@ -434,3 +364,73 @@ def import_registry(samba4_registry, samba3_regdb):
key_handle.set_value(value_name, value_type, value_data)
+def upgrade_provision(samba3, setup_dir, message, credentials, session_info,
+ smbconf, targetdir):
+ oldconf = samba3.get_conf()
+
+ if oldconf.get("domain logons") == "True":
+ serverrole = "domain controller"
+ else:
+ if oldconf.get("security") == "user":
+ serverrole = "standalone"
+ else:
+ serverrole = "member server"
+
+ domainname = oldconf.get("workgroup")
+ realm = oldconf.get("realm")
+ netbiosname = oldconf.get("netbios name")
+
+ secrets_db = samba3.get_secrets_db()
+
+ if domainname is None:
+ domainname = secrets_db.domains()[0]
+ message("No domain specified in smb.conf file, assuming '%s'" % domainname)
+
+ if realm is None:
+ if oldconf.get("domain logons") == "True":
+ message("No realm specified in smb.conf file and being a DC. That upgrade path doesn't work! Please add a 'realm' directive to your old smb.conf to let us know which one you want to use (generally it's the upcased DNS domainname).")
+ return
+ else:
+ realm = domainname.upper()
+ message("No realm specified in smb.conf file, assuming '%s'" % realm)
+
+ domainguid = secrets_db.get_domain_guid(domainname)
+ domainsid = secrets_db.get_sid(domainname)
+ if domainsid is None:
+ message("Can't find domain secrets for '%s'; using random SID" % domainname)
+
+ if netbiosname is not None:
+ machinepass = secrets_db.get_machine_password(netbiosname)
+ else:
+ machinepass = None
+
+ result = provision(setup_dir=setup_dir, message=message,
+ session_info=session_info, credentials=credentials,
+ targetdir=targetdir, realm=realm, domain=domainname,
+ domainguid=domainguid, domainsid=domainsid,
+ hostname=netbiosname, machinepass=machinepass,
+ serverrole=serverrole)
+
+ # FIXME: import_wins(Ldb(result.paths.winsdb), samba3.get_wins_db())
+
+ # FIXME: import_registry(registry.Registry(), samba3.get_registry())
+
+ # FIXME: import_idmap(samdb,samba3.get_idmap_db(),domaindn)
+
+ groupdb = samba3.get_groupmapping_db()
+ for sid in groupdb.groupsids():
+ (gid, sid_name_use, nt_name, comment) = groupdb.get_group(sid)
+ # FIXME: import_sam_group(samdb, sid, gid, sid_name_use, nt_name, comment, domaindn)
+
+ # FIXME: Aliases
+
+ passdb = samba3.get_sam_db()
+ for name in passdb:
+ user = passdb[name]
+ #FIXME: import_sam_account(result.samdb, user, domaindn, domainsid)
+
+ if hasattr(passdb, 'ldap_url'):
+ message("Enabling Samba3 LDAP mappings for SAM database")
+
+ enable_samba3sam(result.samdb, passdb.ldap_url)
+