X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/57e066bb6c8ab3b21df9d16d35f6877659bf868b..ecc307a0d31b150d93330795398268814b249ff4:/src/plugins/apache.sml diff --git a/src/plugins/apache.sml b/src/plugins/apache.sml index 7b8f68e..b34eb56 100644 --- a/src/plugins/apache.sml +++ b/src/plugins/apache.sml @@ -96,7 +96,8 @@ fun validLocation s = orelse ch = #"-" orelse ch = #"_" orelse ch = #"." - orelse ch = #"/") s + orelse ch = #"/" + orelse ch = #"~") s val _ = Env.type_one "location" Env.string @@ -144,7 +145,10 @@ val defaults = [("WebPlaces", (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 @@ -439,6 +443,10 @@ fun vhostPost () = (!post (); write "\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") @@ -449,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 php = Env.env php_version (env, "PhpVersion") val fullHost = makeFullHost (Domain.currentDomain ()) val vhostId = fullHost ^ (if Option.isSome ssl then ".ssl" else "") @@ -514,6 +523,13 @@ fun vhostBody (env, makeFullHost) = 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; @@ -913,6 +929,17 @@ val () = Env.action_two "addDescription" 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 => @@ -926,6 +953,15 @@ val () = Env.action_one "indexOptions" (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 => @@ -971,6 +1007,40 @@ val () = Env.action_two "setEnv" | ch => str ch) value); write "\"\n")) +val () = Env.action_one "diskCache" + ("path", Env.string) + (fn path => (write "\tCacheEnable disk \""; + write path; + write "\"\n")) + +val () = Env.action_one "phpVersion" + ("version", php_version) + (fn version => (write "\tAddHandler x-httpd-php"; + write (Int.toString version); + write " .php .phtml\n")) + +val () = Env.action_two "addType" + ("mime type", Env.string, "extension", Env.string) + (fn (mt, ext) => (write "\tAddType "; + write mt; + write " "; + write ext; + write "\n")) + +val filter = fn (EVar "includes", _) => SOME "INCLUDES" + | (EVar "deflate", _) => SOME "DEFLATE" + | _ => NONE + +val () = Env.action_two "addOutputFilter" + ("filters", Env.list filter, "extensions", Env.list Env.string) + (fn (f :: fs, exts as (_ :: _)) => + (write "\tAddOutputFilter "; + write f; + app (fn f => (write ";"; write f)) fs; + app (fn ext => (write " "; write ext)) exts; + write "\n") + | _ => ()) + val () = Domain.registerResetLocal (fn () => ignore (OS.Process.system (Config.rm ^ " -rf /var/domtool/vhosts/*"))) @@ -980,4 +1050,7 @@ val () = Domain.registerDescriber (Domain.considerAll Domain.Extension {extension = "vhost_ssl", heading = fn host => "SSL web vhost " ^ host ^ ":"}]) +val () = Env.action_none "testNoHtaccess" + (fn path => write "\tAllowOverride None\n") + end