var j;
var res = ldb.search("(objectClass=*)", "", ldb.SCOPE_BASE, rootDSE_attrs);
- assert(res.error == 0);
+ if (res.error != 0) {
+ info.message("rootdse search failed: " + res.errstr + "\n");
+ assert(res.error == 0);
+ }
assert(res.msgs.length == 1);
if (typeof(res.msgs[0].namingContexts) == "undefined") {
return;
var res2 = ldb.search(anything, basedn, ldb.SCOPE_SUBTREE, attrs);
var i;
if (res2.error != 0) {
- info.message("ldb search failed: " + res.errstr + "\n");
+ if (res2.error == 32) {
+ break;
+ }
+ info.message("ldb search failed: " + res2.errstr + "\n");
continue;
}
previous_remaining = current_remaining;
var res3 = ldb.search(anything, basedn, ldb.SCOPE_SUBTREE, attrs);
if (res3.error != 0) {
- info.message("ldb search failed: " + res.errstr + "\n");
+ info.message("ldb search failed: " + res3.errstr + "\n");
continue;
}
if (res3.msgs.length != 0) {
return true;
}
+function load_schema(subobj, message, samdb)
+{
+ var lp = loadparm_init();
+ var src = lp.get("setup directory") + "/" + "schema.ldif";
+
+ if (! sys.stat(src)) {
+ message("Template file not found: %s\n",src);
+ assert(0);
+ }
+
+ var schema_data = sys.file_load(src);
+
+ src = lp.get("setup directory") + "/" + "schema_samba4.ldif";
+
+ if (! sys.stat(src)) {
+ message("Template file not found: %s\n",src);
+ assert(0);
+ }
+
+ schema_data = schema_data + sys.file_load(src);
+
+ schema_data = substitute_var(schema_data, subobj);
+
+ src = lp.get("setup directory") + "/" + "provision_schema_basedn_modify.ldif";
+
+ if (! sys.stat(src)) {
+ message("Template file not found: %s\n",src);
+ assert(0);
+ }
+
+ var head_data = sys.file_load(src);
+ head_data = substitute_var(head_data, subobj);
+
+ var ok = samdb.attach_dsdb_schema_from_ldif(head_data, schema_data);
+ return ok;
+}
+
+
/*
provision samba4 - caution, this wipes all existing data!
*/
}
samdb.close();
+ message("Pre-loading the Samba4 and AD schema\n");
+
samdb = open_ldb(info, paths.samdb, false);
+ samdb.set_domain_sid(subobj.DOMAINSID);
+
+ var load_schema_ok = load_schema(subobj, message, samdb);
+ assert(load_schema_ok.is_ok);
+
message("Adding DomainDN: " + subobj.DOMAINDN + " (permitted to fail)\n");
var add_ok = setup_add_ldif("provision_basedn.ldif", info, samdb, true);
message("Modifying DomainDN: " + subobj.DOMAINDN + "\n");
message("Setting up sam.ldb AD schema\n");
setup_add_ldif("schema.ldif", info, samdb, false);
- // (hack) Reload, now we have the schema loaded.
- var commit_ok = samdb.transaction_commit();
- if (!commit_ok) {
- info.message("samdb commit failed: " + samdb.errstring() + "\n");
- assert(commit_ok);
- }
- samdb.close();
-
- samdb = open_ldb(info, paths.samdb, false);
-
message("Setting up sam.ldb configuration data\n");
setup_add_ldif("provision_configuration.ldif", info, samdb, false);