Fix regeneration of multi-file dependencies
[hcoop/domtool2.git] / src / plugins / apache.sml
index 97bfc69..2d384a9 100644 (file)
@@ -145,7 +145,10 @@ val defaults = [("WebPlaces",
                 (fn () => (EString (Domain.getUser () ^ "@" ^ Config.defaultDomain), dl))),
                ("SuExec",
                 (TBase "suexec_flag", dl),
                 (fn () => (EString (Domain.getUser () ^ "@" ^ Config.defaultDomain), dl))),
                ("SuExec",
                 (TBase "suexec_flag", dl),
-                (fn () => (EVar "true", dl)))]
+                (fn () => (EVar "true", dl))),
+               ("PhpVersion",
+                (TBase "php_version", dl),
+                (fn () => (EVar "php4", dl)))]
 
 val () = app Defaults.registerDefault defaults
 
 
 val () = app Defaults.registerDefault defaults
 
@@ -440,6 +443,10 @@ fun vhostPost () = (!post ();
                    write "</VirtualHost>\n";
                    app (TextIO.closeOut o #2) (!vhostFiles))
 
                    write "</VirtualHost>\n";
                    app (TextIO.closeOut o #2) (!vhostFiles))
 
+val php_version = fn (EVar "php4", _) => SOME 4
+                  | (EVar "php5", _) => SOME 5
+                  | _ => NONE
+
 fun vhostBody (env, makeFullHost) =
     let
        val places = Env.env (Env.list webPlace) (env, "WebPlaces")
 fun vhostBody (env, makeFullHost) =
     let
        val places = Env.env (Env.list webPlace) (env, "WebPlaces")
@@ -450,6 +457,7 @@ fun vhostBody (env, makeFullHost) =
        val docroot = Env.env Env.string (env, "DocumentRoot")
        val sadmin = Env.env Env.string (env, "ServerAdmin")
        val suexec = Env.env Env.bool (env, "SuExec")
        val docroot = Env.env Env.string (env, "DocumentRoot")
        val sadmin = Env.env Env.string (env, "ServerAdmin")
        val suexec = Env.env Env.bool (env, "SuExec")
+       val php = Env.env php_version (env, "PhpVersion")
 
        val fullHost = makeFullHost (Domain.currentDomain ())
        val vhostId = fullHost ^ (if Option.isSome ssl then ".ssl" else "")
 
        val fullHost = makeFullHost (Domain.currentDomain ())
        val vhostId = fullHost ^ (if Option.isSome ssl then ".ssl" else "")
@@ -515,6 +523,13 @@ fun vhostBody (env, makeFullHost) =
                                  TextIO.output (file, user);
                                  TextIO.output (file, "/DAVLock");
 
                                  TextIO.output (file, user);
                                  TextIO.output (file, "/DAVLock");
 
+                                 if php <> Config.Apache.defaultPhpVersion then
+                                     (TextIO.output (file, "\n\tAddHandler x-httpd-php");
+                                      TextIO.output (file, Int.toString php);
+                                      TextIO.output (file, " .php .phtml"))
+                                 else
+                                     ();
+
                                  (ld, file)
                              end)
                          places;
                                  (ld, file)
                              end)
                          places;
@@ -582,9 +597,9 @@ val () = Env.action_three "localProxyRewrite"
         ("from", Env.string, "to", Env.string, "port", Env.int)
         (fn (from, to, port) =>
             (checkRewrite ();
         ("from", Env.string, "to", Env.string, "port", Env.int)
         (fn (from, to, port) =>
             (checkRewrite ();
-             write "\tRewriteRule\t";
+             write "\tRewriteRule\t\"";
              write from;
              write from;
-             write "\thttp://localhost:";
+             write "\"\thttp://localhost:";
              write (Int.toString port);
              write "/";
              write to;
              write (Int.toString port);
              write "/";
              write to;
@@ -612,10 +627,11 @@ val () = Env.action_three "rewriteRule"
         ("from", Env.string, "to", Env.string, "flags", Env.list flag)
         (fn (from, to, flags) =>
             (checkRewrite ();
         ("from", Env.string, "to", Env.string, "flags", Env.list flag)
         (fn (from, to, flags) =>
             (checkRewrite ();
-             write "\tRewriteRule\t";
+             write "\tRewriteRule\t\"";
              write from;
              write from;
-             write "\t";
+             write "\"\t\"";
              write to;
              write to;
+             write "\"";
              case flags of
                  [] => ()
                | flag::rest => (write " [";
              case flags of
                  [] => ()
                | flag::rest => (write " [";
@@ -629,10 +645,11 @@ val () = Env.action_three "rewriteCond"
         ("test", Env.string, "pattern", Env.string, "flags", Env.list cond_flag)
         (fn (from, to, flags) =>
             (checkRewrite ();
         ("test", Env.string, "pattern", Env.string, "flags", Env.list cond_flag)
         (fn (from, to, flags) =>
             (checkRewrite ();
-             write "\tRewriteCond\t";
+             write "\tRewriteCond\t\"";
              write from;
              write from;
-             write "\t";
+             write "\"\t\"";
              write to;
              write to;
+             write "\"";
              case flags of
                  [] => ()
                | flag::rest => (write " [";
              case flags of
                  [] => ()
                | flag::rest => (write " [";
@@ -646,9 +663,9 @@ val () = Env.action_one "rewriteBase"
         ("prefix", Env.string)
         (fn prefix =>
             (checkRewrite ();
         ("prefix", Env.string)
         (fn prefix =>
             (checkRewrite ();
-             write "\tRewriteBase\t";
+             write "\tRewriteBase\t\"";
              write prefix;
              write prefix;
-             write "\n"))
+             write "\"\n"))
 
 val () = Env.action_one "rewriteLogLevel"
         ("level", Env.int)
 
 val () = Env.action_one "rewriteLogLevel"
         ("level", Env.int)
@@ -914,6 +931,17 @@ val () = Env.action_two "addDescription"
                       app (fn pat => (write " "; write pat)) pats;
                       write "\n"))
 
                       app (fn pat => (write " "; write pat)) pats;
                       write "\n"))
 
+val () = Env.action_two "addIcon"
+        ("icon", Env.string, "patterns", Env.list Env.string)
+        (fn (icon, pats) =>
+            case pats of
+                [] => ()
+              | _ => (write "\tAddIcon \"";
+                      write icon;
+                      write "\"";
+                      app (fn pat => (write " "; write pat)) pats;
+                      write "\n"))
+
 val () = Env.action_one "indexOptions"
         ("options", Env.list autoindex_option)
         (fn opts =>
 val () = Env.action_one "indexOptions"
         ("options", Env.list autoindex_option)
         (fn opts =>
@@ -927,6 +955,15 @@ val () = Env.action_one "indexOptions"
                                               (write "="; write arg)) arg)) opts;
                       write "\n"))
 
                                               (write "="; write arg)) arg)) opts;
                       write "\n"))
 
+val () = Env.action_one "indexIgnore"
+        ("patterns", Env.list Env.string)
+        (fn pats =>
+            case pats of
+                [] => ()
+              | _ => (write "\tIndexIgnore";
+                      app (fn pat => (write " "; write pat)) pats;
+                      write "\n"))
+
 val () = Env.action_one "set_indexOptions"
         ("options", Env.list autoindex_option)
         (fn opts =>
 val () = Env.action_one "set_indexOptions"
         ("options", Env.list autoindex_option)
         (fn opts =>
@@ -978,10 +1015,6 @@ val () = Env.action_one "diskCache"
                      write path;
                      write "\"\n"))
 
                      write path;
                      write "\"\n"))
 
-val php_version = fn (EVar "php4", _) => SOME 4
-                  | (EVar "php5", _) => SOME 5
-                  | _ => NONE
-
 val () = Env.action_one "phpVersion"
         ("version", php_version)
         (fn version => (write "\tAddHandler x-httpd-php";
 val () = Env.action_one "phpVersion"
         ("version", php_version)
         (fn version => (write "\tAddHandler x-httpd-php";
@@ -1019,4 +1052,7 @@ val () = Domain.registerDescriber (Domain.considerAll
                                    Domain.Extension {extension = "vhost_ssl",
                                                      heading = fn host => "SSL web vhost " ^ host ^ ":"}])
 
                                    Domain.Extension {extension = "vhost_ssl",
                                                      heading = fn host => "SSL web vhost " ^ host ^ ":"}])
 
+val () = Env.action_none "testNoHtaccess"
+        (fn path => write "\tAllowOverride None\n")
+
 end
 end