mirror of
https://github.com/samba-team/samba.git
synced 2025-07-31 20:22:15 +03:00
s4:provision - Added constructors for FDSBackend and OpenLDAPBackend.
This commit is contained in:
committed by
Andrew Bartlett
parent
1564067fbc
commit
55bb60a5db
@ -1239,13 +1239,13 @@ def provision(setup_dir, message, session_info,
|
|||||||
lp=lp, credentials=credentials,
|
lp=lp, credentials=credentials,
|
||||||
names=names,
|
names=names,
|
||||||
message=message, hostname=hostname,
|
message=message, hostname=hostname,
|
||||||
root=root, schema=schema,
|
schema=schema,
|
||||||
ldapadminpass=ldapadminpass,
|
ldapadminpass=ldapadminpass,
|
||||||
ldap_backend_extra_port=ldap_backend_extra_port,
|
|
||||||
ol_mmr_urls=ol_mmr_urls,
|
|
||||||
slapd_path=slapd_path,
|
slapd_path=slapd_path,
|
||||||
setup_ds_path=setup_ds_path,
|
ldap_backend_extra_port=ldap_backend_extra_port,
|
||||||
ldap_dryrun_mode=ldap_dryrun_mode,
|
ldap_dryrun_mode=ldap_dryrun_mode,
|
||||||
|
root=root,
|
||||||
|
setup_ds_path=setup_ds_path,
|
||||||
domainsid=domainsid)
|
domainsid=domainsid)
|
||||||
elif backend_type == "openldap":
|
elif backend_type == "openldap":
|
||||||
provision_backend = OpenLDAPBackend(backend_type,
|
provision_backend = OpenLDAPBackend(backend_type,
|
||||||
@ -1253,28 +1253,19 @@ def provision(setup_dir, message, session_info,
|
|||||||
lp=lp, credentials=credentials,
|
lp=lp, credentials=credentials,
|
||||||
names=names,
|
names=names,
|
||||||
message=message, hostname=hostname,
|
message=message, hostname=hostname,
|
||||||
root=root, schema=schema,
|
schema=schema,
|
||||||
ldapadminpass=ldapadminpass,
|
ldapadminpass=ldapadminpass,
|
||||||
ldap_backend_extra_port=ldap_backend_extra_port,
|
|
||||||
ol_mmr_urls=ol_mmr_urls,
|
|
||||||
slapd_path=slapd_path,
|
slapd_path=slapd_path,
|
||||||
setup_ds_path=setup_ds_path,
|
ldap_backend_extra_port=ldap_backend_extra_port,
|
||||||
ldap_dryrun_mode=ldap_dryrun_mode,
|
ldap_dryrun_mode=ldap_dryrun_mode,
|
||||||
domainsid=domainsid)
|
ol_mmr_urls=ol_mmr_urls,
|
||||||
|
nosync=nosync)
|
||||||
elif backend_type == "ldb" or backend_type == "existing":
|
elif backend_type == "ldb" or backend_type == "existing":
|
||||||
provision_backend = ProvisionBackend(backend_type,
|
provision_backend = ProvisionBackend(backend_type,
|
||||||
paths=paths, setup_path=setup_path,
|
paths=paths, setup_path=setup_path,
|
||||||
lp=lp, credentials=credentials,
|
lp=lp, credentials=credentials,
|
||||||
names=names,
|
names=names,
|
||||||
message=message, hostname=hostname,
|
message=message)
|
||||||
root=root, schema=schema,
|
|
||||||
ldapadminpass=ldapadminpass,
|
|
||||||
ldap_backend_extra_port=ldap_backend_extra_port,
|
|
||||||
ol_mmr_urls=ol_mmr_urls,
|
|
||||||
slapd_path=slapd_path,
|
|
||||||
setup_ds_path=setup_ds_path,
|
|
||||||
ldap_dryrun_mode=ldap_dryrun_mode,
|
|
||||||
domainsid=domainsid)
|
|
||||||
else:
|
else:
|
||||||
raise ProvisioningError("Unknown LDAP backend type selected")
|
raise ProvisioningError("Unknown LDAP backend type selected")
|
||||||
|
|
||||||
|
@ -56,36 +56,13 @@ def setup_db_config(setup_path, dbdir):
|
|||||||
|
|
||||||
class ProvisionBackend(object):
|
class ProvisionBackend(object):
|
||||||
def __init__(self, backend_type, paths=None, setup_path=None, lp=None, credentials=None,
|
def __init__(self, backend_type, paths=None, setup_path=None, lp=None, credentials=None,
|
||||||
names=None, message=None,
|
names=None, message=None):
|
||||||
hostname=None, root=None,
|
"""Provision a backend for samba4"""
|
||||||
schema=None, ldapadminpass=None,
|
|
||||||
ldap_backend_extra_port=None,
|
|
||||||
ol_mmr_urls=None,
|
|
||||||
setup_ds_path=None, slapd_path=None,
|
|
||||||
nosync=False, ldap_dryrun_mode=False,
|
|
||||||
domainsid=None):
|
|
||||||
"""Provision an LDAP backend for samba4
|
|
||||||
|
|
||||||
This works for OpenLDAP and Fedora DS
|
|
||||||
"""
|
|
||||||
self.paths = paths
|
self.paths = paths
|
||||||
self.setup_path = setup_path
|
self.setup_path = setup_path
|
||||||
self.slapd_command = None
|
|
||||||
self.slapd_command_escaped = None
|
|
||||||
self.lp = lp
|
self.lp = lp
|
||||||
self.names = names
|
self.names = names
|
||||||
self.message = message
|
self.message = message
|
||||||
self.hostname = hostname
|
|
||||||
self.root = root
|
|
||||||
self.schema = schema
|
|
||||||
self.ldapadminpass = ldapadminpass
|
|
||||||
self.ldap_backend_extra_port = ldap_backend_extra_port
|
|
||||||
self.ol_mmr_urls = ol_mmr_urls
|
|
||||||
self.setup_ds_path = setup_ds_path
|
|
||||||
self.slapd_path = slapd_path
|
|
||||||
self.nosync = nosync
|
|
||||||
self.ldap_dryrun_mode = ldap_dryrun_mode
|
|
||||||
self.domainsid = domainsid
|
|
||||||
|
|
||||||
self.type = backend_type
|
self.type = backend_type
|
||||||
|
|
||||||
@ -130,6 +107,34 @@ class ProvisionBackend(object):
|
|||||||
|
|
||||||
|
|
||||||
class LDAPBackend(ProvisionBackend):
|
class LDAPBackend(ProvisionBackend):
|
||||||
|
def __init__(self, backend_type, paths=None, setup_path=None, lp=None, credentials=None,
|
||||||
|
names=None, message=None,
|
||||||
|
hostname=None,
|
||||||
|
schema=None,
|
||||||
|
ldapadminpass=None,
|
||||||
|
slapd_path=None,
|
||||||
|
ldap_backend_extra_port=None,
|
||||||
|
ldap_dryrun_mode=False):
|
||||||
|
|
||||||
|
super(LDAPBackend, self).__init__(
|
||||||
|
backend_type=backend_type,
|
||||||
|
paths=paths, setup_path=setup_path,
|
||||||
|
lp=lp, credentials=credentials,
|
||||||
|
names=names,
|
||||||
|
message=message)
|
||||||
|
|
||||||
|
self.hostname = hostname
|
||||||
|
self.schema = schema
|
||||||
|
|
||||||
|
self.ldapadminpass = ldapadminpass
|
||||||
|
|
||||||
|
self.slapd_path = slapd_path
|
||||||
|
self.slapd_command = None
|
||||||
|
self.slapd_command_escaped = None
|
||||||
|
|
||||||
|
self.ldap_backend_extra_port = ldap_backend_extra_port
|
||||||
|
self.ldap_dryrun_mode = ldap_dryrun_mode
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
# we will shortly start slapd with ldapi for final provisioning. first check with ldapsearch -> rootDSE via self.ldapi_uri
|
# we will shortly start slapd with ldapi for final provisioning. first check with ldapsearch -> rootDSE via self.ldapi_uri
|
||||||
# if another instance of slapd is already running
|
# if another instance of slapd is already running
|
||||||
@ -230,6 +235,33 @@ class LDAPBackend(ProvisionBackend):
|
|||||||
|
|
||||||
|
|
||||||
class OpenLDAPBackend(LDAPBackend):
|
class OpenLDAPBackend(LDAPBackend):
|
||||||
|
def __init__(self, backend_type, paths=None, setup_path=None, lp=None, credentials=None,
|
||||||
|
names=None, message=None,
|
||||||
|
hostname=None,
|
||||||
|
schema=None,
|
||||||
|
ldapadminpass=None,
|
||||||
|
slapd_path=None,
|
||||||
|
ldap_backend_extra_port=None,
|
||||||
|
ldap_dryrun_mode=False,
|
||||||
|
ol_mmr_urls=None,
|
||||||
|
nosync=False):
|
||||||
|
|
||||||
|
super(OpenLDAPBackend, self).__init__(
|
||||||
|
backend_type=backend_type,
|
||||||
|
paths=paths, setup_path=setup_path,
|
||||||
|
lp=lp, credentials=credentials,
|
||||||
|
names=names,
|
||||||
|
message=message,
|
||||||
|
hostname=hostname,
|
||||||
|
schema=schema,
|
||||||
|
ldapadminpass=ldapadminpass,
|
||||||
|
slapd_path=slapd_path,
|
||||||
|
ldap_backend_extra_port=ldap_backend_extra_port,
|
||||||
|
ldap_dryrun_mode=ldap_dryrun_mode)
|
||||||
|
|
||||||
|
self.ol_mmr_urls = ol_mmr_urls
|
||||||
|
self.nosync = nosync
|
||||||
|
|
||||||
def provision(self):
|
def provision(self):
|
||||||
# Wipe the directories so we can start
|
# Wipe the directories so we can start
|
||||||
shutil.rmtree(os.path.join(self.paths.ldapdir, "db"), True)
|
shutil.rmtree(os.path.join(self.paths.ldapdir, "db"), True)
|
||||||
@ -455,6 +487,35 @@ class OpenLDAPBackend(LDAPBackend):
|
|||||||
|
|
||||||
|
|
||||||
class FDSBackend(LDAPBackend):
|
class FDSBackend(LDAPBackend):
|
||||||
|
def __init__(self, backend_type, paths=None, setup_path=None, lp=None, credentials=None,
|
||||||
|
names=None, message=None,
|
||||||
|
hostname=None,
|
||||||
|
schema=None,
|
||||||
|
ldapadminpass=None,
|
||||||
|
slapd_path=None,
|
||||||
|
ldap_backend_extra_port=None,
|
||||||
|
ldap_dryrun_mode=False,
|
||||||
|
root=None,
|
||||||
|
setup_ds_path=None,
|
||||||
|
domainsid=None):
|
||||||
|
|
||||||
|
super(FDSBackend, self).__init__(
|
||||||
|
backend_type=backend_type,
|
||||||
|
paths=paths, setup_path=setup_path,
|
||||||
|
lp=lp, credentials=credentials,
|
||||||
|
names=names,
|
||||||
|
message=message,
|
||||||
|
hostname=hostname,
|
||||||
|
schema=schema,
|
||||||
|
ldapadminpass=ldapadminpass,
|
||||||
|
slapd_path=slapd_path,
|
||||||
|
ldap_backend_extra_port=ldap_backend_extra_port,
|
||||||
|
ldap_dryrun_mode=ldap_dryrun_mode)
|
||||||
|
|
||||||
|
self.root = root
|
||||||
|
self.setup_ds_path = setup_ds_path
|
||||||
|
self.domainsid = domainsid
|
||||||
|
|
||||||
def provision(self):
|
def provision(self):
|
||||||
if self.ldap_backend_extra_port is not None:
|
if self.ldap_backend_extra_port is not None:
|
||||||
serverport = "ServerPort=%d" % self.ldap_backend_extra_port
|
serverport = "ServerPort=%d" % self.ldap_backend_extra_port
|
||||||
|
Reference in New Issue
Block a user