protected1wd_descr = b64encode(get_config_delete_protected1wd_descriptor(names.domainsid))
protected2_descr = b64encode(get_config_delete_protected2_descriptor(names.domainsid))
+ if "2008" in schema.base_schema:
+ # exclude 2012-specific changes if we're using a 2008 schema
+ incl_2012 = "#"
+ else:
+ incl_2012 = ""
+
setup_add_ldif(samdb, setup_path("provision_configuration.ldif"), {
"CONFIGDN": names.configdn,
"NETBIOSNAME": names.netbiosname,
setup_add_ldif(samdb, setup_path("extended-rights.ldif"), {
"CONFIGDN": names.configdn,
- "INC2012" : "#",
+ "INC2012" : incl_2012,
})
logger.info("Setting up display specifiers")
sitename=None, ol_mmr_urls=None, ol_olc=None, slapd_path=None,
useeadb=False, am_rodc=False, lp=None, use_ntvfs=False,
use_rfc2307=False, maxuid=None, maxgid=None, skip_sysvolacl=True,
- ldap_backend_forced_uri=None, nosync=False, ldap_dryrun_mode=False, ldap_backend_extra_port=None):
+ ldap_backend_forced_uri=None, nosync=False, ldap_dryrun_mode=False,
+ ldap_backend_extra_port=None, base_schema=None):
"""Provision samba4
:note: caution, this wipes all existing data!
ldapi_url = "ldapi://%s" % urllib.quote(paths.s4_ldapi_path, safe="")
schema = Schema(domainsid, invocationid=invocationid,
- schemadn=names.schemadn)
+ schemadn=names.schemadn, base_schema=base_schema)
if backend_type == "ldb":
provision_backend = LDBBackend(backend_type, paths=paths,
}
def __init__(self, domain_sid, invocationid=None, schemadn=None,
- files=None, override_prefixmap=None, additional_prefixmap=None):
+ files=None, override_prefixmap=None, additional_prefixmap=None,
+ base_schema=None):
from samba.provision import setup_path
"""Load schema for the SamDB from the AD schema files and
needing to add it to the db
"""
+ if base_schema is None:
+ base_schema = Schema.default_base_schema()
+
+ self.base_schema = base_schema
+
self.schemadn = schemadn
# We need to have the am_rodc=False just to keep some warnings quiet -
# this isn't a real SAM, so it's meaningless.
self.ldb.set_invocation_id(invocationid)
self.schema_data = read_ms_schema(
- setup_path('ad-schema/MS-AD_Schema_2K8_R2_Attributes.txt'),
- setup_path('ad-schema/MS-AD_Schema_2K8_R2_Classes.txt'))
+ setup_path('ad-schema/%s' % Schema.base_schemas[base_schema][0]),
+ setup_path('ad-schema/%s' % Schema.base_schemas[base_schema][1]))
if files is not None:
for file in files:
{"SCHEMADN": schemadn})
check_all_substituted(self.schema_data)
+ schema_version = str(Schema.get_version(base_schema))
self.schema_dn_modify = read_and_sub_file(
setup_path("provision_schema_basedn_modify.ldif"),
- {"SCHEMADN": schemadn})
+ {"SCHEMADN": schemadn, "OBJVERSION" : schema_version})
descr = b64encode(get_schema_descriptor(domain_sid))
self.schema_dn_add = read_and_sub_file(