mirror of
https://github.com/samba-team/samba.git
synced 2025-08-05 12:22:11 +03:00
s4-provision: include command line provision options in the generated smb.conf
this saves the smb.conf using lp.dump_globals() to ensure that any command line options (for example directory overrides) are saved in the generated smb.conf Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
@ -548,7 +548,7 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
|
|||||||
|
|
||||||
|
|
||||||
def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
||||||
targetdir, sid_generator="internal", eadb=False, default_lp=None):
|
targetdir, sid_generator="internal", eadb=False, lp=None):
|
||||||
"""Create a new smb.conf file based on a couple of basic settings.
|
"""Create a new smb.conf file based on a couple of basic settings.
|
||||||
"""
|
"""
|
||||||
assert smbconf is not None
|
assert smbconf is not None
|
||||||
@ -585,16 +585,16 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
|||||||
assert realm is not None
|
assert realm is not None
|
||||||
realm = realm.upper()
|
realm = realm.upper()
|
||||||
|
|
||||||
if default_lp is None:
|
if lp is None:
|
||||||
default_lp = samba.param.LoadParm()
|
lp = samba.param.LoadParm()
|
||||||
#Load non-existant file
|
#Load non-existant file
|
||||||
if os.path.exists(smbconf):
|
if os.path.exists(smbconf):
|
||||||
default_lp.load(smbconf)
|
lp.load(smbconf)
|
||||||
if eadb:
|
if eadb:
|
||||||
if targetdir is not None:
|
if targetdir is not None:
|
||||||
privdir = os.path.join(targetdir, "private")
|
privdir = os.path.join(targetdir, "private")
|
||||||
else:
|
else:
|
||||||
privdir = default_lp.get("private dir")
|
privdir = lp.get("private dir")
|
||||||
posixeadb_line = "posix:eadb = " + os.path.abspath(os.path.join(privdir, "eadb.tdb"))
|
posixeadb_line = "posix:eadb = " + os.path.abspath(os.path.join(privdir, "eadb.tdb"))
|
||||||
else:
|
else:
|
||||||
posixeadb_line = ""
|
posixeadb_line = ""
|
||||||
@ -603,7 +603,7 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
|||||||
privatedir_line = "private dir = " + os.path.abspath(os.path.join(targetdir, "private"))
|
privatedir_line = "private dir = " + os.path.abspath(os.path.join(targetdir, "private"))
|
||||||
lockdir_line = "lock dir = " + os.path.abspath(targetdir)
|
lockdir_line = "lock dir = " + os.path.abspath(targetdir)
|
||||||
|
|
||||||
default_lp.set("lock dir", os.path.abspath(targetdir))
|
lp.set("lock dir", os.path.abspath(targetdir))
|
||||||
else:
|
else:
|
||||||
privatedir_line = ""
|
privatedir_line = ""
|
||||||
lockdir_line = ""
|
lockdir_line = ""
|
||||||
@ -614,13 +614,13 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
|||||||
sid_generator_line = "sid generator = " + sid_generator
|
sid_generator_line = "sid generator = " + sid_generator
|
||||||
|
|
||||||
used_setup_dir = setup_path("")
|
used_setup_dir = setup_path("")
|
||||||
default_setup_dir = default_lp.get("setup directory")
|
default_setup_dir = lp.get("setup directory")
|
||||||
setupdir_line = ""
|
setupdir_line = ""
|
||||||
if used_setup_dir != default_setup_dir:
|
if used_setup_dir != default_setup_dir:
|
||||||
setupdir_line = "setup directory = %s" % used_setup_dir
|
setupdir_line = "setup directory = %s" % used_setup_dir
|
||||||
default_lp.set("setup directory", used_setup_dir)
|
lp.set("setup directory", used_setup_dir)
|
||||||
|
|
||||||
sysvol = os.path.join(default_lp.get("lock dir"), "sysvol")
|
sysvol = os.path.join(lp.get("lock dir"), "sysvol")
|
||||||
netlogon = os.path.join(sysvol, realm.lower(), "scripts")
|
netlogon = os.path.join(sysvol, realm.lower(), "scripts")
|
||||||
|
|
||||||
setup_file(setup_path("provision.smb.conf.%s" % smbconfsuffix),
|
setup_file(setup_path("provision.smb.conf.%s" % smbconfsuffix),
|
||||||
@ -638,6 +638,17 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
|||||||
"POSIXEADB_LINE": posixeadb_line
|
"POSIXEADB_LINE": posixeadb_line
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# reload the smb.conf
|
||||||
|
lp.load(smbconf)
|
||||||
|
|
||||||
|
# and dump it without any values that are the default
|
||||||
|
# this ensures that any smb.conf parameters that were set
|
||||||
|
# on the provision/join command line are set in the resulting smb.conf
|
||||||
|
f = open(smbconf, mode='w')
|
||||||
|
lp.dump(f, False)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def setup_name_mappings(samdb, idmap, sid, domaindn, root_uid, nobody_uid,
|
def setup_name_mappings(samdb, idmap, sid, domaindn, root_uid, nobody_uid,
|
||||||
users_gid, wheel_gid):
|
users_gid, wheel_gid):
|
||||||
@ -1449,10 +1460,10 @@ def provision(setup_dir, logger, session_info,
|
|||||||
if data is None or data == "":
|
if data is None or data == "":
|
||||||
make_smbconf(smbconf, setup_path, hostname, domain, realm,
|
make_smbconf(smbconf, setup_path, hostname, domain, realm,
|
||||||
serverrole, targetdir, sid_generator, useeadb,
|
serverrole, targetdir, sid_generator, useeadb,
|
||||||
default_lp=lp)
|
lp=lp)
|
||||||
else:
|
else:
|
||||||
make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
|
||||||
targetdir, sid_generator, useeadb, default_lp=lp)
|
targetdir, sid_generator, useeadb, lp=lp)
|
||||||
|
|
||||||
if lp is None:
|
if lp is None:
|
||||||
lp = samba.param.LoadParm()
|
lp = samba.param.LoadParm()
|
||||||
|
Reference in New Issue
Block a user