Add Apache logging
[hcoop/domtool2.git] / src / plugins / apache.sml
index 7689860..3c29c8e 100644 (file)
@@ -175,6 +175,8 @@ val vhostFiles : TextIO.outstream list ref = ref []
 fun write s = app (fn file => TextIO.output (file, s)) (!vhostFiles)
 
 val rewriteEnabled = ref false
+val currentVhost = ref ""
+val currentVhostId = ref ""
 
 val () = Env.containerV_one "vhost"
         ("host", Env.string)
@@ -189,8 +191,12 @@ val () = Env.containerV_one "vhost"
                 val sadmin = Env.env Env.string (env, "ServerAdmin")
 
                 val fullHost = host ^ "." ^ Domain.currentDomain ()
+                val vhostId = fullHost ^ (if ssl then ".ssl" else "")
                 val confFile = fullHost ^ (if ssl then ".vhost_ssl" else ".vhost")
             in
+                currentVhost := fullHost;
+                currentVhostId := vhostId;
+
                 rewriteEnabled := false;
                 vhostFiles := map (fn node =>
                                       let
@@ -218,7 +224,15 @@ val () = Env.containerV_one "vhost"
                 write docroot;
                 write "\n\tServerAdmin ";
                 write sadmin;
-                write "\n"
+                write "\n\tErrorLog ";
+                write Config.Apache.logDir;
+                write "/";
+                write vhostId;
+                write "/error.log\n\tCustomLog ";
+                write Config.Apache.logDir;
+                write "/";
+                write vhostId;
+                write "/access.log combined\n"
             end,
          fn () => (write "</VirtualHost>\n";
                    app TextIO.closeOut (!vhostFiles)))
@@ -310,6 +324,18 @@ val () = Env.action_three "rewriteCond"
                                 write "]");
              write "\n"))
 
+val () = Env.action_one "rewriteLogLevel"
+        ("level", Env.int)
+        (fn level =>
+            (checkRewrite ();
+             write "\tRewriteLog ";
+             write Config.Apache.logDir;
+             write "/";
+             write (!currentVhostId);
+             write "/rewrite.log\n\tRewriteLogLevel ";
+             write (Int.toString level);
+             write "\n"))
+
 val () = Env.action_two "alias"
         ("from", Env.string, "to", Env.string)
         (fn (from, to) =>
@@ -460,4 +486,27 @@ val () = Env.action_none "satisfyAll"
 val () = Env.action_none "satisfyAny"
         (fn () => write "\tSatisfy any\n")
 
+val () = Env.action_one "forceType"
+        ("type", Env.string)
+        (fn ty => (write "\tForceType ";
+                   write ty;
+                   write "\n"))
+
+val () = Env.action_none "forceTypeOff"
+        (fn () => write "\tForceType None\n")
+
+val () = Env.action_two "action"
+        ("what", Env.string, "how", Env.string)
+        (fn (what, how) => (write "\tAction ";
+                            write what;
+                            write " ";
+                            write how;
+                            write "\n"))
+
+val () = Env.action_one "addDefaultCharset"
+        ("charset", Env.string)
+        (fn ty => (write "\tAddDefaultCharset ";
+                   write ty;
+                   write "\n"))
+
 end