summaryrefslogtreecommitdiff
path: root/source4/setup/provision
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-07-12 06:02:20 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:20:09 -0500
commit23f79c5c9a7877a04ab3a169142dea7cb5742ff7 (patch)
tree526b9f593b1c31ead3c2745905063ea9b9815d35 /source4/setup/provision
parent9370fca5dd014520b0c8970e55d33907921be518 (diff)
downloadsamba-23f79c5c9a7877a04ab3a169142dea7cb5742ff7.tar.gz
samba-23f79c5c9a7877a04ab3a169142dea7cb5742ff7.tar.bz2
samba-23f79c5c9a7877a04ab3a169142dea7cb5742ff7.zip
r8347: replace the perl provision script with a ejs script
I don't mind depending on perl at compile time, but I want to avoid depending on it at runtime. This also will make it easy to add web install wizard (This used to be commit f27a68176984c6856fad2e3a028458eb96943f80)
Diffstat (limited to 'source4/setup/provision')
-rwxr-xr-xsource4/setup/provision79
1 files changed, 66 insertions, 13 deletions
diff --git a/source4/setup/provision b/source4/setup/provision
index 86bc49e537..8766688de9 100755
--- a/source4/setup/provision
+++ b/source4/setup/provision
@@ -115,6 +115,13 @@ function ldaptime()
return sys_ldaptime(sys_nttime());
}
+function datestring()
+{
+ var t = sys_gmtime(sys_nttime());
+ return sprintf("%04u%02u%02u%02u",
+ t.tm_year+1900, t.tm_mon+1, t.tm_mday, t.tm_hour);
+}
+
/*
return current time as a ldap time string
*/
@@ -133,6 +140,50 @@ function hostname()
return s[0];
}
+
+/*
+ setup a ldb in the private dir
+ */
+function setup_ldb(ldif, dbname, subobj)
+{
+ var extra = "";
+ if (arguments.length == 4) {
+ extra = arguments[3];
+ }
+ printVars(lpGet("setup directory"));
+
+ var db = lpGet("private dir") + "/" + dbname;
+ var src = lpGet("setup directory") + "/" + ldif;
+
+ sys_unlink(db);
+
+ var data = sys_file_load(src);
+ data = data + extra;
+ data = substitute_var(data, subobj);
+
+ message("Creating " + db + "\n from " + src);
+ ok = ldbAdd(db, data);
+ assert(ok);
+}
+
+/*
+ setup a file in the private dir
+ */
+function setup_file(template, fname, subobj)
+{
+ var f = lpGet("private dir") + "/" + fname;
+ var src = lpGet("setup directory") + "/" + template;
+
+ sys_unlink(f);
+
+ var data = sys_file_load(src);
+ data = substitute_var(data, subobj);
+
+ message("Creating " + f + "\n from " + src);
+ ok = sys_file_save(f, data);
+ assert(ok);
+}
+
/*
show some help
*/
@@ -203,12 +254,6 @@ options.dnsdomain = strlower(options.realm);
options.dnsname = strlower(options['host-name']) + "." + options.dnsdomain;
options.basedn = "DC=" + join(",DC=", split(".", options.realm));
-var data = FileLoad("setup/provision.ldif");
-if (data == undefined) {
- println("Unable to load provision.ldif");
- exit(1);
-}
-
/*
setup the substitution object
*/
@@ -224,6 +269,7 @@ subobj.DEFAULTSITE = "Default-First-Site-Name";
subobj.NEWGUID = randguid;
subobj.NTTIME = nttime;
subobj.LDAPTIME = ldaptime;
+subobj.DATESTRING = datestring;
subobj.USN = nextusn;
for (r in options) {
var key = strupper(join("", split("-", r)));
@@ -231,13 +277,20 @@ for (r in options) {
}
-data = add_foreign(data, "S-1-5-7", "Anonymous", "${NOBODY}");
-data = add_foreign(data, "S-1-1-0", "World", "${NOGROUP}");
-data = add_foreign(data, "S-1-5-2", "Network", "${NOGROUP}");
-data = add_foreign(data, "S-1-5-18", "System", "${ROOT}");
-data = add_foreign(data, "S-1-5-11", "Authenticated Users", "${USERS}");
+var extradata = "";
+extradata = add_foreign(extradata, "S-1-5-7", "Anonymous", "${NOBODY}");
+extradata = add_foreign(extradata, "S-1-1-0", "World", "${NOGROUP}");
+extradata = add_foreign(extradata, "S-1-5-2", "Network", "${NOGROUP}");
+extradata = add_foreign(extradata, "S-1-5-18", "System", "${ROOT}");
+extradata = add_foreign(extradata, "S-1-5-11", "Authenticated Users", "${USERS}");
+
+message("Using administrator password: " + subobj.ADMINPASS);
-newdata = substitute_var(data, subobj);
+setup_ldb("hklm.ldif", "hklm.ldb", subobj);
+setup_ldb("provision.ldif", "sam.ldb", subobj, extradata);
+setup_ldb("rootdse.ldif", "rootdse.ldb", subobj);
+setup_ldb("secrets.ldif", "secrets.ldb", subobj);
+setup_file("provision.zone", subobj.DNSDOMAIN + ".zone", subobj);
-println(newdata);
+message("All OK");
return 0;