X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/42782c7938b390dacda93c64ff4850b1a49f3c11..95798203fe321c2f64d2e4abc64a64dcc3aa3e9e:/src/plugins/apache.sml diff --git a/src/plugins/apache.sml b/src/plugins/apache.sml index c4b47af..fa5cc3a 100644 --- a/src/plugins/apache.sml +++ b/src/plugins/apache.sml @@ -466,8 +466,7 @@ fun vhostPost () = (!post (); write "\n"; app (TextIO.closeOut o #2) (!vhostFiles)) -val php_version = fn (EVar "php5", _) => SOME 5 - | (EVar "fast_php", _) => SOME 6 +val php_version = fn (EVar "fast_php", _) => SOME 6 | _ => NONE fun vhostBody (env, makeFullHost) = @@ -530,10 +529,6 @@ fun vhostBody (env, makeFullHost) = TextIO.output (file, group)) else (TextIO.output (file, "\n\tSuexecUserGroup "); - TextIO.output (file, user); - TextIO.output (file, " "); - TextIO.output (file, group); - TextIO.output (file, "\n\tsuPHP_UserGroup "); TextIO.output (file, user); TextIO.output (file, " "); TextIO.output (file, group)) @@ -552,18 +547,22 @@ fun vhostBody (env, makeFullHost) = TextIO.output (file, user); TextIO.output (file, "/DAVLock"); - if php = Config.Apache.defaultPhpVersion + if php = 6 then - () - else if php = 6 - then - (* fastcgi php 5.6 since 6 doesn't exist *) + (* fastcgi php 5.6, using version 6 since php6 doesn't exist *) (TextIO.output (file, "\n\tAddHandler fcgid-script .php .phtml"); - TextIO.output (file, "\n\tFcgidWrapper \""); - TextIO.output (file, Config.Apache.fastCgiWrapperOf user); - TextIO.output (file, " "); - TextIO.output (file, Config.Apache.phpFastCgiWrapper); - TextIO.output (file, "\"")) + map (fn ext => (TextIO.output (file, "\n\tFcgidWrapper \""); + (* kerberos wrapper, simulates waklog+mod_cgi *) + if isWaklog node then + (TextIO.output (file, Config.Apache.fastCgiWrapperOf user); + TextIO.output (file, " ")) + else + (); + TextIO.output (file, Config.Apache.phpFastCgiWrapper); + TextIO.output (file, "\" "); + TextIO.output (file, ext))) + [".php", ".phtml"]; + ()) else (TextIO.output (file, "\n\tAddHandler x-httpd-php"); TextIO.output (file, Int.toString php); @@ -783,6 +782,42 @@ val () = Env.action_two "scriptAlias" write to; write "\n")) +val () = Env.action_two "fastScriptAlias" + ("from", Env.string, "to", Env.string) + (fn (from, to) => + let + (* mod_fcgid + kerberos limit this to working with + individual fcgi programs. assume the target path is a + file and any trailing `/' is just aliasing + syntax. Directory+File on the script is used to + activate fcgid instead of Location on the alias to + limit effects (alias+location also match in inverse + order causing pernicious side-effects *) + val fcgi_path = if String.sub (to, size to - 1) = #"/" + then + String.substring (to, 0, size to - 1) + else + to + val fcgi_dir = OS.Path.dir fcgi_path + val fcgi_file = OS.Path.file fcgi_path + in + write "\tAlias\t"; write from; write " "; write to; write "\n"; + + write "\t\n"; + write "\t\n"; + write "\tSetHandler fcgid-script\n"; + + (* FIXME: only set kerberos wrapper of waklog is on *) + (* won't be trivial, since we don't have access to node here *) + write "\tFcgidWrapper \""; + write (Config.Apache.fastCgiWrapperOf (Domain.getUser ())); + write " "; + write fcgi_path; + write "\"\n"; + + write "\t\n\t\n" + end) + val () = Env.action_two "errorDocument" ("code", Env.string, "handler", Env.string) (fn (code, handler) => @@ -1112,9 +1147,21 @@ val () = Env.action_one "diskCache" val () = Env.action_one "phpVersion" ("version", php_version) - (fn version => (write "\tAddHandler x-httpd-php"; - write (Int.toString version); - write " .php .phtml\n")) + (fn version => (if version = 6 + then + (* fastcgi php 5.6 since 6 doesn't exist *) + (write "\tAddHandler fcgid-script .php .phtml\n"; + (* FIXME: only set kerberos wrapper of waklog is on *) + (* won't be trivial, since we don't have access to node here *) + write "\n\tFcgidWrapper \""; + write (Config.Apache.fastCgiWrapperOf (Domain.getUser ())); + write " "; + write Config.Apache.phpFastCgiWrapper; + write "\" .php .phtml\n") + else + (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)