mirror of
https://github.com/samba-team/samba.git
synced 2025-11-08 16:23:49 +03:00
r26522: Fix warnings on SamDB connect from Python, simplify the setup code for the various LDBs.
This commit is contained in:
committed by
Stefan Metzmacher
parent
174aa15837
commit
20c686f501
@@ -75,13 +75,14 @@ class Ldb(ldb.Ldb):
|
|||||||
if lp is not None:
|
if lp is not None:
|
||||||
self.set_loadparm(self, lp)
|
self.set_loadparm(self, lp)
|
||||||
|
|
||||||
if url:
|
|
||||||
self.connect(url)
|
|
||||||
|
|
||||||
def msg(l,text):
|
def msg(l,text):
|
||||||
print text
|
print text
|
||||||
self.set_debug(msg)
|
self.set_debug(msg)
|
||||||
|
|
||||||
|
if url is not None:
|
||||||
|
self.connect(url)
|
||||||
|
|
||||||
|
|
||||||
set_credentials = misc.ldb_set_credentials
|
set_credentials = misc.ldb_set_credentials
|
||||||
set_session_info = misc.ldb_set_session_info
|
set_session_info = misc.ldb_set_session_info
|
||||||
set_loadparm = misc.ldb_set_loadparm
|
set_loadparm = misc.ldb_set_loadparm
|
||||||
|
|||||||
@@ -230,15 +230,10 @@ def setup_modify_ldif(setup_dir, ldif, subobj, ldb):
|
|||||||
ldb.modify(msg)
|
ldb.modify(msg)
|
||||||
|
|
||||||
|
|
||||||
def setup_ldb(setup_dir, ldif, session_info, credentials, subobj, lp, dbname,
|
def setup_ldb(ldb, setup_dir, ldif, subobj):
|
||||||
erase=True):
|
|
||||||
assert dbname is not None
|
|
||||||
ldb = open_ldb(session_info, credentials, lp, dbname)
|
|
||||||
assert ldb is not None
|
assert ldb is not None
|
||||||
ldb.transaction_start()
|
ldb.transaction_start()
|
||||||
try:
|
try:
|
||||||
if erase:
|
|
||||||
ldb.erase();
|
|
||||||
setup_add_ldif(setup_dir, ldif, subobj, ldb)
|
setup_add_ldif(setup_dir, ldif, subobj, ldb)
|
||||||
except:
|
except:
|
||||||
ldb.transaction_cancel()
|
ldb.transaction_cancel()
|
||||||
@@ -281,8 +276,8 @@ def provision_default_paths(lp, subobj):
|
|||||||
paths = ProvisionPaths()
|
paths = ProvisionPaths()
|
||||||
private_dir = lp.get("private dir")
|
private_dir = lp.get("private dir")
|
||||||
paths.shareconf = os.path.join(private_dir, "share.ldb")
|
paths.shareconf = os.path.join(private_dir, "share.ldb")
|
||||||
paths.samdb = lp.get("sam database") or os.path.join(private_dir, "samdb.ldb")
|
paths.samdb = os.path.join(private_dir, lp.get("sam database") or "samdb.ldb")
|
||||||
paths.secrets = lp.get("secrets database") or os.path.join(private_dir, "secrets.ldb")
|
paths.secrets = os.path.join(private_dir, lp.get("secrets database") or "secrets.ldb")
|
||||||
paths.templates = os.path.join(private_dir, "templates.ldb")
|
paths.templates = os.path.join(private_dir, "templates.ldb")
|
||||||
paths.keytab = os.path.join(private_dir, "secrets.keytab")
|
paths.keytab = os.path.join(private_dir, "secrets.keytab")
|
||||||
paths.dns = os.path.join(private_dir, subobj.dnsdomain + ".zone")
|
paths.dns = os.path.join(private_dir, subobj.dnsdomain + ".zone")
|
||||||
@@ -341,13 +336,17 @@ def provision_become_dc(setup_dir, subobj, message, paths, lp, session_info,
|
|||||||
subobj.fix(paths)
|
subobj.fix(paths)
|
||||||
|
|
||||||
message("Setting up templates into %s" % paths.templates)
|
message("Setting up templates into %s" % paths.templates)
|
||||||
setup_ldb(setup_dir, "provision_templates.ldif", session_info,
|
templates_ldb = Ldb(paths.templates, session_info=session_info,
|
||||||
credentials, subobj, lp, paths.templates)
|
credentials=credentials, lp=lp)
|
||||||
|
templates_ldb.erase()
|
||||||
|
setup_ldb(templates_ldb, setup_dir, "provision_templates.ldif", subobj)
|
||||||
|
|
||||||
# Also wipes the database
|
# Also wipes the database
|
||||||
message("Setting up %s partitions" % paths.samdb)
|
message("Setting up %s partitions" % paths.samdb)
|
||||||
setup_ldb(setup_dir, "provision_partitions.ldif", session_info,
|
samdb = SamDB(paths.samdb, credentials=credentials,
|
||||||
credentials, subobj, lp, paths.samdb)
|
session_info=session_info, lp=lp)
|
||||||
|
samdb.erase()
|
||||||
|
setup_ldb(samdb, setup_dir, "provision_partitions.ldif", subobj)
|
||||||
|
|
||||||
samdb = SamDB(paths.samdb, session_info=session_info,
|
samdb = SamDB(paths.samdb, session_info=session_info,
|
||||||
credentials=credentials, lp=lp)
|
credentials=credentials, lp=lp)
|
||||||
@@ -371,11 +370,12 @@ def provision_become_dc(setup_dir, subobj, message, paths, lp, session_info,
|
|||||||
samdb.transaction_commit()
|
samdb.transaction_commit()
|
||||||
|
|
||||||
message("Setting up %s" % paths.secrets)
|
message("Setting up %s" % paths.secrets)
|
||||||
setup_ldb(setup_dir, "secrets_init.ldif", session_info, credentials,
|
secrets_ldb = Ldb(paths.secrets, session_info=session_info,
|
||||||
subobj, lp, paths.secrets)
|
credentials=credentials, lp=lp)
|
||||||
|
secrets_ldb.clear()
|
||||||
setup_ldb(setup_dir, "secrets.ldif", session_info, credentials, subobj,
|
setup_ldb(secrets_ldb, setup_dir, "secrets_init.ldif", subobj)
|
||||||
lp, paths.secrets, False)
|
setup_ldb(secrets_ldb, setup_dir, "secrets.ldif", subobj)
|
||||||
|
setup_ldb(secrets_ldb, setup_dir, "secrets_dc.ldif", subobj)
|
||||||
|
|
||||||
|
|
||||||
def provision(lp, setup_dir, subobj, message, blank, paths, session_info,
|
def provision(lp, setup_dir, subobj, message, blank, paths, session_info,
|
||||||
@@ -408,14 +408,16 @@ def provision(lp, setup_dir, subobj, message, blank, paths, session_info,
|
|||||||
# only install a new shares config db if there is none
|
# only install a new shares config db if there is none
|
||||||
if not os.path.exists(paths.shareconf):
|
if not os.path.exists(paths.shareconf):
|
||||||
message("Setting up share.ldb")
|
message("Setting up share.ldb")
|
||||||
setup_ldb(setup_dir, "share.ldif", session_info, credentials, subobj,
|
share_ldb = Ldb(paths.shareconf, session_info=session_info,
|
||||||
lp, paths.shareconf)
|
credentials=credentials, lp=lp)
|
||||||
|
setup_ldb(share_ldb, setup_dir, "share.ldif", subobj)
|
||||||
|
|
||||||
message("Setting up %s" % paths.secrets)
|
message("Setting up %s" % paths.secrets)
|
||||||
setup_ldb(setup_dir, "secrets_init.ldif", session_info, credentials,
|
secrets_ldb = Ldb(paths.secrets, session_info=session_info,
|
||||||
subobj, lp, paths.secrets)
|
credentials=credentials, lp=lp)
|
||||||
setup_ldb(setup_dir, "secrets.ldif", session_info, credentials, subobj,
|
secrets_ldb.erase()
|
||||||
lp, paths.secrets, False)
|
setup_ldb(secrets_ldb, setup_dir, "secrets_init.ldif", subobj)
|
||||||
|
setup_ldb(secrets_ldb, setup_dir, "secrets.ldif", subobj)
|
||||||
|
|
||||||
message("Setting up registry")
|
message("Setting up registry")
|
||||||
reg = registry.Registry()
|
reg = registry.Registry()
|
||||||
@@ -427,12 +429,16 @@ def provision(lp, setup_dir, subobj, message, blank, paths, session_info,
|
|||||||
#reg.apply_patchfile(provision_reg)
|
#reg.apply_patchfile(provision_reg)
|
||||||
|
|
||||||
message("Setting up templates into %s" % paths.templates)
|
message("Setting up templates into %s" % paths.templates)
|
||||||
setup_ldb(setup_dir, "provision_templates.ldif", session_info,
|
templates_ldb = Ldb(paths.templates, session_info=session_info,
|
||||||
credentials, subobj, lp, paths.templates)
|
credentials=credentials, lp=lp)
|
||||||
|
templates_ldb.erase()
|
||||||
|
setup_ldb(templates_ldb, setup_dir, "provision_templates.ldif", subobj)
|
||||||
|
|
||||||
message("Setting up sam.ldb partitions")
|
message("Setting up sam.ldb partitions")
|
||||||
setup_ldb(setup_dir, "provision_partitions.ldif", session_info,
|
samdb = SamDB(paths.samdb, session_info=session_info,
|
||||||
credentials, subobj, lp, paths.samdb)
|
credentials=credentials, lp=lp)
|
||||||
|
samdb.erase()
|
||||||
|
setup_ldb(samdb, setup_dir, "provision_partitions.ldif", subobj)
|
||||||
|
|
||||||
samdb = SamDB(paths.samdb, session_info=session_info,
|
samdb = SamDB(paths.samdb, session_info=session_info,
|
||||||
credentials=credentials, lp=lp)
|
credentials=credentials, lp=lp)
|
||||||
@@ -453,7 +459,6 @@ def provision(lp, setup_dir, subobj, message, blank, paths, session_info,
|
|||||||
samdb.transaction_commit()
|
samdb.transaction_commit()
|
||||||
|
|
||||||
message("Pre-loading the Samba 4 and AD schema")
|
message("Pre-loading the Samba 4 and AD schema")
|
||||||
|
|
||||||
samdb = SamDB(paths.samdb, session_info=session_info,
|
samdb = SamDB(paths.samdb, session_info=session_info,
|
||||||
credentials=credentials, lp=lp)
|
credentials=credentials, lp=lp)
|
||||||
samdb.set_domain_sid(subobj.domainsid)
|
samdb.set_domain_sid(subobj.domainsid)
|
||||||
|
|||||||
@@ -25,10 +25,14 @@ import misc
|
|||||||
import ldb
|
import ldb
|
||||||
|
|
||||||
class SamDB(samba.Ldb):
|
class SamDB(samba.Ldb):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, url=None, session_info=None, credentials=None,
|
||||||
super(SamDB, self).__init__(*args, **kwargs)
|
modules_dir=None, lp=None):
|
||||||
|
super(SamDB, self).__init__(session_info=session_info, credentials=credentials,
|
||||||
|
modules_dir=modules_dir, lp=lp)
|
||||||
misc.dsdb_set_global_schema(self)
|
misc.dsdb_set_global_schema(self)
|
||||||
misc.ldb_register_samba_handlers(self)
|
misc.ldb_register_samba_handlers(self)
|
||||||
|
if url:
|
||||||
|
self.connect(url)
|
||||||
|
|
||||||
def add_foreign(self, domaindn, sid, desc):
|
def add_foreign(self, domaindn, sid, desc):
|
||||||
"""Add a foreign security principle."""
|
"""Add a foreign security principle."""
|
||||||
|
|||||||
Reference in New Issue
Block a user