URL handling
[hcoop/domtool2.git] / src / plugins / apache.sml
index a959023..4ea8f22 100644 (file)
@@ -47,6 +47,18 @@ val _ = Env.type_one "rewrite_arg"
        Env.string
        (CharVector.all Char.isAlphaNum)
 
+fun validLocation s =
+    size s > 0 andalso size s < 1000 andalso CharVector.all
+                                                (fn ch => Char.isAlphaNum ch
+                                                          orelse ch = #"-"
+                                                          orelse ch = #"_"
+                                                          orelse ch = #"."
+                                                          orelse ch = #"/") s
+
+val _ = Env.type_one "location"
+       Env.string
+       validLocation
+
 val dl = ErrorMsg.dummyLoc
 
 val _ = Main.registerDefault ("WebNodes",
@@ -204,6 +216,22 @@ val () = Env.containerV_one "vhost"
          fn () => (write "</VirtualHost>\n";
                    app TextIO.closeOut (!vhostFiles)))
 
+val () = Env.container_one "location"
+        ("prefix", Env.string)
+        (fn prefix =>
+            (write "\t<Location ";
+             write prefix;
+             write ">\n"),
+         fn () => write "\t</Location>\n")
+
+val () = Env.container_one "directory"
+        ("directory", Env.string)
+        (fn directory =>
+            (write "\t<Directory ";
+             write directory;
+             write ">\n"),
+         fn () => write "\t</Directory>\n")
+
 fun checkRewrite () =
     if !rewriteEnabled then
        ()
@@ -275,4 +303,32 @@ val () = Env.action_three "rewriteCond"
                                 write "]");
              write "\n"))
 
+val () = Env.action_two "alias"
+        ("from", Env.string, "to", Env.string)
+        (fn (from, to) =>
+            (write "\tAlias\t";
+             write from;
+             write " ";
+             write to;
+             write "\n"))
+
+val () = Env.action_two "scriptAlias"
+        ("from", Env.string, "to", Env.string)
+        (fn (from, to) =>
+            (write "\tScriptAlias\t";
+             write from;
+             write " ";
+             write to;
+             write "\n"))
+
+val () = Env.action_two "errorDocument"
+        ("code", Env.string, "handler", Env.string)
+        (fn (code, handler) =>
+            (write "\tErrorDocument\t";
+             write code;
+             write " ";
+             write handler;
+             write "\n"))
+
+
 end