Switch to using system database to find user home directories
authorAdam Chlipala <adamc@hcoop.net>
Wed, 4 Apr 2007 16:44:58 +0000 (16:44 +0000)
committerAdam Chlipala <adamc@hcoop.net>
Wed, 4 Apr 2007 16:44:58 +0000 (16:44 +0000)
configDefault/apache.cfg
configDefault/domtool.cfg
configDefault/domtool.cfs
src/domain.sig
src/domain.sml
src/main-client.sml
src/plugins/apache.sml
src/plugins/hcoop.sml
src/plugins/webalizer.sml

index e1e7883..4b625bb 100644 (file)
@@ -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
index 730414f..1d055a8 100644 (file)
@@ -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"
index ed66232..ab6d470 100644 (file)
@@ -56,8 +56,6 @@ val serialDir : string
 
 val dispatcherName : string
 
-val homeBase : string
-
 val dnsNodes_all : string list
 val dnsNodes_admin : string list
 
index 10a2d86..83ed63c 100644 (file)
@@ -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
index cbb7434..7ee4690 100644 (file)
@@ -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
index 57500c5..29db1b4 100644 (file)
@@ -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"}
index 541b144..f476c97 100644 (file)
@@ -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;
index 3f6f5b8..288d984 100644 (file)
@@ -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
index 7ac523b..c6f8a17 100644 (file)
@@ -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, "/");