More Mailman virtual host stuff
authorAdam Chlipala <adamc@hcoop.net>
Sat, 17 Nov 2007 21:23:12 +0000 (21:23 +0000)
committerAdam Chlipala <adamc@hcoop.net>
Sat, 17 Nov 2007 21:23:12 +0000 (21:23 +0000)
src/plugins/apache.sig
src/plugins/apache.sml
src/plugins/mailman.sml

index 95b1923..8baead3 100644 (file)
@@ -36,4 +36,6 @@ signature APACHE = sig
     (* Default environment variables *)
 
     val ssl : string option Env.arg
+
+    val webNode : string -> bool
 end
index 132f479..62615af 100644 (file)
@@ -22,12 +22,14 @@ structure Apache :> APACHE = struct
 
 open Ast
 
+fun webNode node =
+    List.exists (fn (x, _) => x = node) Config.Apache.webNodes_all
+    orelse (Domain.hasPriv "www"
+           andalso List.exists (fn (x, _) => x = node) Config.Apache.webNodes_admin)
+
 val _ = Env.type_one "web_node"
        Env.string
-       (fn node =>
-           List.exists (fn (x, _) => x = node) Config.Apache.webNodes_all
-           orelse (Domain.hasPriv "www"
-                   andalso List.exists (fn (x, _) => x = node) Config.Apache.webNodes_admin))
+       webNode
 
 val _ = Env.registerFunction ("web_node_to_node",
                              fn [e] => SOME e
index aa0b7ee..5244682 100644 (file)
 
 structure Mailman :> MAILMAN = struct
 
+open Ast
+
+val () = Env.type_one "mailman_web_node"
+                     Env.string
+                     (fn node => Apache.webNode node orelse node = Config.Mailman.node)
+
+val dl = ErrorMsg.dummyLoc
+
+val () = Defaults.registerDefault
+            ("MailmanWebNodes",
+             (TList (TBase "mailman_web_node", dl), dl),
+             (fn () => (EList [(EString Config.Mailman.node, dl)], dl)))
+
 val files = ref ([] : TextIO.outstream list)
 val write = ref (fn _ : string => ())
 
@@ -42,7 +55,7 @@ val () = Env.actionV_one "mailmanVhost"
         ("host", Env.string)
         (fn (env, host) =>
             let
-                val nodes = Env.env (Env.list Env.string) (env, "WebNodes")
+                val nodes = Env.env (Env.list Env.string) (env, "MailmanWebNodes")
 
                 val ssl = Env.env Apache.ssl (env, "SSL")
                 val user = Env.env Env.string (env, "User")
@@ -68,7 +81,7 @@ val () = Env.actionV_one "mailmanVhost"
                             print (case ssl of
                                        SOME _ => "443"
                                      | NONE => "80");
-                            print "\n";
+                            print ">\n";
                             print "    ServerName $LISTDOMAIN\n";
                             print "    ServerAdmin ";
                             print user;