paths.memberofconf = os.path.join(paths.ldapdir,
"memberof.conf")
paths.fedoradsinf = os.path.join(paths.ldapdir,
- "fedorads.inf")
+ "fedorads.inf")
+ paths.fedoradspartitions = os.path.join(paths.ldapdir,
+ "fedorads-partitions.ldif")
paths.olmmrserveridsconf = os.path.join(paths.ldapdir,
- "mmr_serverids.conf")
+ "mmr_serverids.conf")
paths.olmmrsyncreplconf = os.path.join(paths.ldapdir,
- "mmr_syncrepl.conf")
- paths.olmmron = os.path.join(paths.ldapdir,
- "mmr_on.conf")
+ "mmr_syncrepl.conf")
paths.hklm = "hklm.ldb"
paths.hkcr = "hkcr.ldb"
paths.hkcu = "hkcu.ldb"
"""
templates_ldb = SamDB(path, session_info=session_info,
credentials=credentials, lp=lp)
- templates_ldb.erase()
+ # Wipes the database
+ try:
+ templates_ldb.erase()
+ except:
+ os.unlink(path)
+
+ templates_ldb.load_ldif_file_add(setup_path("provision_templates_init.ldif"))
+
+ templates_ldb = SamDB(path, session_info=session_info,
+ credentials=credentials, lp=lp)
+
templates_ldb.load_ldif_file_add(setup_path("provision_templates.ldif"))
samdb = SamDB(path, session_info=session_info,
credentials=credentials, lp=lp)
- if fill == FILL_DRS:
- # We want to finish here, but setup the index before we do so
- message("Setting up sam.ldb index")
- samdb.load_ldif_file_add(setup_path("provision_index.ldif"))
- return samdb
-
message("Pre-loading the Samba 4 and AD schema")
samdb.set_domain_sid(domainsid)
if serverrole == "domain controller":
domainsid=domainsid, policyguid=policyguid,
setup_path=setup_path)
- #We want to setup the index last, as adds are faster unindexed
- message("Setting up sam.ldb index")
- samdb.load_ldif_file_add(setup_path("provision_index.ldif"))
except:
samdb.transaction_cancel()
raise
rootdn=None, domaindn=None, schemadn=None, configdn=None,
domain=None, hostname=None, adminpass=None, root=None, serverrole=None,
ldap_backend_type=None, ldap_backend_port=None,
- ol_mmr_urls=None, mmr_serverids_config=None, mmr_on_config=None,
- mmr_syncrepl_schema_config=None,
- mmr_syncrepl_config_config=None,
- mmr_syncrepl_user_config=None ):
+ ol_mmr_urls=None):
def setup_path(file):
return os.path.join(setup_dir, file)
refint_config = read_and_sub_file(setup_path("refint.conf"),
{ "LINK_ATTRS" : refint_attributes})
-########################################################
-### generate serverids and ldap-urls for mmr hosts ###
-########################################################
-
- mmr_on_config = " "
- mmr_serverids_config = " "
-
+# generate serverids, ldap-urls and syncrepl-blocks for mmr hosts
+ mmr_on_config = ""
+ mmr_replicator_acl = ""
+ mmr_serverids_config = ""
+ mmr_syncrepl_schema_config = ""
+ mmr_syncrepl_config_config = ""
+ mmr_syncrepl_user_config = ""
+
if ol_mmr_urls is not None:
- mmr_hosts=ol_mmr_urls
- mmr_hosts=filter(None,mmr_hosts.split(' '))
-
- mmr_serverids_config = "# Generated from template mmr_serverids.conf\n"
- z=0
- for i in mmr_hosts:
- z=z+1
- mmr_serverids_config += read_and_sub_file(setup_path("mmr_serverids.conf"),
- { "SERVERID" : str(z),
- "LDAPSERVER" : i })
- mmr_on_config = "MirrorMode On"
+ # For now, make these equal
+ mmr_pass = adminpass
-########################################################
-### generate syncrepl-blocks for mmr hosts ###
-########################################################
+ url_list=filter(None,ol_mmr_urls.split(' '))
+ if (len(url_list) == 1):
+ url_list=filter(None,ol_mmr_urls.split(','))
+
- mmr_syncrepl_schema_config = " "
- mmr_syncrepl_config_config = " "
- mmr_syncrepl_user_config = " "
-
- if ol_mmr_urls is not None:
- mmr_hosts=ol_mmr_urls
- mmr_hosts=filter(None,mmr_hosts.split(' '))
- mmr_syncrepl_schema_config = "# Generated from template mmr_syncrepl.conf\n"
- mmr_syncrepl_config_config = "# Generated from template mmr_syncrepl.conf\n"
- mmr_syncrepl_user_config = "# Generated from template mmr_syncrepl.conf\n"
- z=0
- for i in mmr_hosts:
- z=z+1
+ mmr_on_config = "MirrorMode On"
+ mmr_replicator_acl = " by dn=cn=replicator,cn=samba read"
+ serverid=0
+ for url in url_list:
+ serverid=serverid+1
+ mmr_serverids_config += read_and_sub_file(setup_path("mmr_serverids.conf"),
+ { "SERVERID" : str(serverid),
+ "LDAPSERVER" : url })
+ rid=serverid*10
+ rid=rid+1
mmr_syncrepl_schema_config += read_and_sub_file(setup_path("mmr_syncrepl.conf"),
- { "RID" : str(z),
+ { "RID" : str(rid),
"MMRDN": names.schemadn,
- "LDAPSERVER" : i })
+ "LDAPSERVER" : url,
+ "MMR_PASSWORD": mmr_pass})
- for i in mmr_hosts:
- z=z+1
+ rid=rid+1
mmr_syncrepl_config_config += read_and_sub_file(setup_path("mmr_syncrepl.conf"),
- { "RID" : str(z),
+ { "RID" : str(rid),
"MMRDN": names.configdn,
- "LDAPSERVER" : i })
+ "LDAPSERVER" : url,
+ "MMR_PASSWORD": mmr_pass})
- for i in mmr_hosts:
- z=z+1
+ rid=rid+1
mmr_syncrepl_user_config += read_and_sub_file(setup_path("mmr_syncrepl.conf"),
- { "RID" : str(z),
+ { "RID" : str(rid),
"MMRDN": names.domaindn,
- "LDAPSERVER" : i })
+ "LDAPSERVER" : url,
+ "MMR_PASSWORD": mmr_pass })
setup_file(setup_path("slapd.conf"), paths.slapdconf,
"SCHEMADN": names.schemadn,
"MEMBEROF_CONFIG": memberof_config,
"MIRRORMODE": mmr_on_config,
+ "REPLICATOR_ACL": mmr_replicator_acl,
"MMR_SERVERIDS_CONFIG": mmr_serverids_config,
"MMR_SYNCREPL_SCHEMA_CONFIG": mmr_syncrepl_schema_config,
"MMR_SYNCREPL_CONFIG_CONFIG": mmr_syncrepl_config_config,
{"LDAPADMINPASS_B64": b64encode(adminpass),
"UUID": str(uuid.uuid4()),
"LDAPTIME": timestring(int(time.time()))} )
+
+ if ol_mmr_urls is not None:
+ setup_file(setup_path("cn=replicator.ldif"),
+ os.path.join(paths.ldapdir, "db", "samba", "cn=samba", "cn=replicator.ldif"),
+ {"MMR_PASSWORD_B64": b64encode(mmr_pass),
+ "UUID": str(uuid.uuid4()),
+ "LDAPTIME": timestring(int(time.time()))} )
+
+
mapping = "schema-map-openldap-2.3"
backend_schema = "backend-schema.schema"