sys = sys_init();
+/*
+ return true if the current install seems to be OK
+*/
+function install_ok()
+{
+ var lp = loadparm_init();
+ var ldb = ldb_init();
+ if (lp.get("realm") == "") {
+ return false;
+ }
+ var ok = ldb.connect(lp.get("sam database"));
+ if (!ok) {
+ return false;
+ }
+ var res = ldb.search("(name=Administrator)");
+ if (res.length != 1) {
+ return false;
+ }
+ return true;
+}
+
/*
find a user or group from a list of possibilities
*/
}
/*
- return current time as a ldap time string
+ return next USN in the sequence
*/
function nextusn()
{
*/
function setup_ldb(ldif, dbname, subobj)
{
+ var erase = true;
var extra = "";
var ldb = ldb_init();
var lp = loadparm_init();
- if (arguments.length == 4) {
+ if (arguments.length >= 4) {
extra = arguments[3];
}
+ if (arguments.length == 5) {
+ erase = arguments[4];
+ }
+
var dbfile = dbname;
var src = lp.get("setup directory") + "/" + ldif;
var ok = ldb.connect(dbfile);
assert(ok);
- ldb_erase(ldb);
+ if (erase) {
+ ldb_erase(ldb);
+ }
ok = ldb.add(data);
assert(ok);
}
message("Setting up hklm.ldb\n");
setup_ldb("hklm.ldif", "hklm.ldb", subobj);
- message("Setting up sam.ldb\n");
- setup_ldb("provision.ldif", "sam.ldb", subobj, data);
+ message("Setting up sam.ldb attributes\n");
+ setup_ldb("provision_init.ldif", "sam.ldb", subobj);
+ message("Setting up sam.ldb templates\n");
+ setup_ldb("provision_templates.ldif", "sam.ldb", subobj, NULL, false);
+ message("Setting up sam.ldb data\n");
+ setup_ldb("provision.ldif", "sam.ldb", subobj, data, false);
message("Setting up rootdse.ldb\n");
setup_ldb("rootdse.ldif", "rootdse.ldb", subobj);
message("Setting up secrets.ldb\n");