From 0da1c677dd0a079c9e985af37688cc9e833fc196 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Wed, 4 Apr 2007 16:44:58 +0000 Subject: [PATCH] Switch to using system database to find user home directories --- configDefault/apache.cfg | 2 +- configDefault/domtool.cfg | 2 -- configDefault/domtool.cfs | 2 -- src/domain.sig | 3 +++ src/domain.sml | 5 +++++ src/main-client.sml | 4 +--- src/plugins/apache.sml | 16 +++++----------- src/plugins/hcoop.sml | 10 ++++------ src/plugins/webalizer.sml | 4 +--- 9 files changed, 20 insertions(+), 28 deletions(-) diff --git a/configDefault/apache.cfg b/configDefault/apache.cfg index e1e7883..4b625bb 100644 --- a/configDefault/apache.cfg +++ b/configDefault/apache.cfg @@ -14,6 +14,6 @@ val webNodes_default = ["mire"] val proxyTargets = ["http://hcoop.net/cgi-bin/mailman", "http://hcoop.net/pipermail"] -val public_html = "home/public_html" +val public_html = "public_html" end diff --git a/configDefault/domtool.cfg b/configDefault/domtool.cfg index 730414f..1d055a8 100644 --- a/configDefault/domtool.cfg +++ b/configDefault/domtool.cfg @@ -53,8 +53,6 @@ val serialDir = "/afs/hcoop.net/common/etc/domtool/serials" val dispatcherName = "deleuze.hcoop.net" -val homeBase = "/afs/hcoop.net/usr" - fun domtoolDir user = case user of "domtool" => "/afs/hcoop.net/common/etc/domtool/domtool" diff --git a/configDefault/domtool.cfs b/configDefault/domtool.cfs index ed66232..ab6d470 100644 --- a/configDefault/domtool.cfs +++ b/configDefault/domtool.cfs @@ -56,8 +56,6 @@ val serialDir : string val dispatcherName : string -val homeBase : string - val dnsNodes_all : string list val dnsNodes_admin : string list diff --git a/src/domain.sig b/src/domain.sig index 10a2d86..83ed63c 100644 --- a/src/domain.sig +++ b/src/domain.sig @@ -78,4 +78,7 @@ signature DOMAIN = sig val hasPriv : string -> bool val rmdom : string list -> unit + + val homedirOf : string -> string + val homedir : unit -> string end diff --git a/src/domain.sml b/src/domain.sml index cbb7434..7ee4690 100644 --- a/src/domain.sml +++ b/src/domain.sml @@ -734,4 +734,9 @@ fun rmdom doms = app cleanupNode Config.nodeIps end +fun homedirOf uname = + Posix.SysDB.Passwd.home (Posix.SysDB.getpwnam uname) + +fun homedir () = homedirOf (getUser ()) + end diff --git a/src/main-client.sml b/src/main-client.sml index 57500c5..29db1b4 100644 --- a/src/main-client.sml +++ b/src/main-client.sml @@ -21,9 +21,7 @@ fun domtoolRoot () = let val uid = Posix.ProcEnv.getuid () - val uname = Posix.SysDB.Passwd.name (Posix.SysDB.getpwuid uid) - val dname = OS.Path.joinDirFile {dir = Config.homeBase, - file = uname} + val dname = Posix.SysDB.Passwd.home (Posix.SysDB.getpwuid uid) in OS.Path.joinDirFile {dir = dname, file = "domtool"} diff --git a/src/plugins/apache.sml b/src/plugins/apache.sml index 541b144..f476c97 100644 --- a/src/plugins/apache.sml +++ b/src/plugins/apache.sml @@ -107,7 +107,7 @@ val _ = Defaults.registerDefault ("Group", val _ = Defaults.registerDefault ("DocumentRoot", (TBase "your_path", dl), - (fn () => (EString (Config.homeBase ^ "/" ^ Domain.getUser () ^ "/" ^ Config.Apache.public_html), dl))) + (fn () => (EString (Domain.homedir () ^ "/" ^ Config.Apache.public_html), dl))) val _ = Defaults.registerDefault ("ServerAdmin", (TBase "email", dl), @@ -245,9 +245,7 @@ val () = Slave.registerFileHandler (fn fs => let fun realLogDir user = let - val realLogDir = OS.Path.joinDirFile - {dir = Config.homeBase, - file = valOf user} + val realLogDir = Domain.homedirOf (valOf user) val realLogDir = OS.Path.joinDirFile {dir = realLogDir, file = "apache"} @@ -408,23 +406,19 @@ val () = Env.containerV_one "vhost" | NONE => "80"); TextIO.output (file, ">\n"); TextIO.output (file, "\tErrorLog "); - TextIO.output (file, Config.homeBase); - TextIO.output (file, "/"); - TextIO.output (file, user); + TextIO.output (file, Domain.homedirOf user); TextIO.output (file, "/apache/log/"); TextIO.output (file, node); TextIO.output (file, "/"); TextIO.output (file, vhostId); TextIO.output (file, "/error.log\n\tCustomLog "); - TextIO.output (file, Config.homeBase); - TextIO.output (file, "/"); - TextIO.output (file, user); + TextIO.output (file, Domain.homedirOf user); TextIO.output (file, "/apache/log/"); TextIO.output (file, node); TextIO.output (file, "/"); TextIO.output (file, vhostId); TextIO.output (file, "/access.log combined\n"); - (Config.homeBase ^ "/" ^ user ^ "/apache/log/" + (Domain.homedirOf user ^ "/apache/log/" ^ node ^ "/" ^ vhostId, file) end) nodes; diff --git a/src/plugins/hcoop.sml b/src/plugins/hcoop.sml index 3f6f5b8..288d984 100644 --- a/src/plugins/hcoop.sml +++ b/src/plugins/hcoop.sml @@ -26,14 +26,12 @@ val dl = ErrorMsg.dummyLoc val _ = Env.type_one "homedir_path" Env.string - (fn dir => Domain.yourPath (Config.homeBase ^ "/" ^ Domain.getUser () ^ "/home/" ^ dir)) + (fn dir => Domain.yourPath (OS.Path.joinDirFile {dir = Domain.homedir (), + file = dir})) val () = Env.registerFunction ("home", - fn [(EString dir, _)] => SOME (EString (Config.homeBase - ^ "/" - ^ Domain.getUser () - ^ "/home/" - ^ dir), dl) + fn [(EString dir, _)] => SOME (EString (OS.Path.joinDirFile {dir = Domain.homedir (), + file = dir}), dl) | _ => NONE) end diff --git a/src/plugins/webalizer.sml b/src/plugins/webalizer.sml index 7ac523b..c6f8a17 100644 --- a/src/plugins/webalizer.sml +++ b/src/plugins/webalizer.sml @@ -32,9 +32,7 @@ val () = Apache.registerPre name = id ^ ".wbl"} in TextIO.output (fd, "LogFile\t"); - TextIO.output (fd, Config.homeBase); - TextIO.output (fd, "/"); - TextIO.output (fd, user); + TextIO.output (fd, Domain.homedirOf user); TextIO.output (fd, "/apache/log/"); TextIO.output (fd, node); TextIO.output (fd, "/"); -- 2.20.1