Type annotations on environment variable reads
[hcoop/domtool2.git] / src / plugins / apache.sml
index 4cd9e82..64ebc7b 100644 (file)
@@ -89,33 +89,29 @@ fun ssl e = case e of
 
 val dl = ErrorMsg.dummyLoc
 
-val _ = Defaults.registerDefault ("WebNodes",
-                                 (TList (TBase "web_node", dl), dl),
-                                 (fn () => (EList (map (fn s => (EString s, dl)) Config.Apache.webNodes_default), dl)))
-
-val _ = Defaults.registerDefault ("SSL",
-                                 (TBase "ssl", dl),
-                                 (fn () => (EVar "no_ssl", dl)))
-
-val _ = Defaults.registerDefault ("User",
-                                 (TBase "your_user", dl),
-                                 (fn () => (EString (Domain.getUser ()), dl)))
-
-val _ = Defaults.registerDefault ("Group",
-                                 (TBase "your_group", dl),
-                                 (fn () => (EString "nogroup", dl)))
-
-val _ = Defaults.registerDefault ("DocumentRoot",
-                                 (TBase "your_path", dl),
-                                 (fn () => (EString (Domain.homedir () ^ "/" ^ Config.Apache.public_html), dl)))
-
-val _ = Defaults.registerDefault ("ServerAdmin",
-                                 (TBase "email", dl),
-                                 (fn () => (EString (Domain.getUser () ^ "@" ^ Config.defaultDomain), dl)))
-
-val _ = Defaults.registerDefault ("SuExec",
-                                 (TBase "suexec_flag", dl),
-                                 (fn () => (EVar "true", dl)))
+val defaults = [("WebNodes",
+                (TList (TBase "web_node", dl), dl),
+                (fn () => (EList (map (fn s => (EString s, dl)) Config.Apache.webNodes_default), dl))),
+               ("SSL",
+                (TBase "ssl", dl),
+                (fn () => (EVar "no_ssl", dl))),
+               ("User",
+                (TBase "your_user", dl),
+                (fn () => (EString (Domain.getUser ()), dl))),
+               ("Group",
+                (TBase "your_group", dl),
+                (fn () => (EString "nogroup", dl))),
+               ("DocumentRoot",
+                (TBase "your_path", dl),
+                (fn () => (EString (Domain.homedir () ^ "/" ^ Config.Apache.public_html), dl))),
+               ("ServerAdmin",
+                (TBase "email", dl),
+                (fn () => (EString (Domain.getUser () ^ "@" ^ Config.defaultDomain), dl))),
+               ("SuExec",
+                (TBase "suexec_flag", dl),
+                (fn () => (EVar "true", dl)))]
+
+val () = app Defaults.registerDefault defaults
 
 val redirect_code = fn (EVar "temp", _) => SOME "temp"
                     | (EVar "permanent", _) => SOME "permanent"
@@ -431,6 +427,7 @@ val () = Env.containerV_one "vhost"
                                                           TextIO.output (file, ".");
                                                           TextIO.output (file, dom)))
                                               (Domain.currentAliasDomains ());
+
                                           if suexec then
                                               if isVersion1 node then
                                                   (TextIO.output (file, "\n\tUser ");
@@ -444,6 +441,7 @@ val () = Env.containerV_one "vhost"
                                                    TextIO.output (file, group))
                                           else
                                               ();
+
                                           if isWaklog node then
                                               (TextIO.output (file, "\n\tWaklogEnabled on\n\tWaklogLocationPrincipal ");
                                                TextIO.output (file, user);
@@ -451,6 +449,11 @@ val () = Env.containerV_one "vhost"
                                                TextIO.output (file, user))
                                           else
                                               ();
+
+                                          TextIO.output (file, "\n\tDAVLockDB /var/lock/apache2/dav/");
+                                          TextIO.output (file, user);
+                                          TextIO.output (file, "/DAVLock");
+
                                           (ld, file)
                                       end)
                                   nodes;
@@ -812,6 +815,9 @@ val () = Env.action_one "authzSvnAccessFile"
                      write path;
                      write "\n"))*)
 
+val () = Env.action_none "davFilesystem"
+        (fn path => write "\tDAV filesystem\n")
+
 val () = Env.action_two "addDescription"
         ("description", Env.string, "patterns", Env.list Env.string)
         (fn (desc, pats) =>
@@ -877,7 +883,8 @@ val () = Env.action_two "setEnv"
         (fn (key, value) => (write "\tSetEnv \"";
                              write key;
                              write "\" \"";
-                             write value;
+                             write (String.translate (fn #"\"" => "\\\""
+                                                       | ch => str ch) value);
                              write "\"\n"))
 
 val () = Domain.registerResetLocal (fn () =>