X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/e519d69680e425dc1d44db474dd5d9e7ea1cf379..0aed4302d346dd37ab441ca64711bdcd661f653b:/src/plugins/apache.sml diff --git a/src/plugins/apache.sml b/src/plugins/apache.sml index 7e3deb5..167759f 100644 --- a/src/plugins/apache.sml +++ b/src/plugins/apache.sml @@ -1,5 +1,5 @@ (* HCoop Domtool (http://hcoop.sourceforge.net/) - * Copyright (c) 2006, Adam Chlipala + * Copyright (c) 2006-2007, Adam Chlipala * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -103,7 +103,7 @@ val _ = Defaults.registerDefault ("User", val _ = Defaults.registerDefault ("Group", (TBase "your_group", dl), - (fn () => (EString (Domain.getUser ()), dl))) + (fn () => (EString "nogroup", dl))) val _ = Defaults.registerDefault ("DocumentRoot", (TBase "your_path", dl), @@ -353,6 +353,7 @@ val rewriteEnabled = ref false val localRewriteEnabled = ref false val currentVhost = ref "" val currentVhostId = ref "" +val sslEnabled = ref false val pre = ref (fn _ : {user : string, nodes : string list, id : string, hostname : string} => ()) fun registerPre f = @@ -397,6 +398,7 @@ val () = Env.containerV_one "vhost" in currentVhost := fullHost; currentVhostId := vhostId; + sslEnabled := Option.isSome ssl; rewriteEnabled := false; localRewriteEnabled := false; @@ -429,6 +431,7 @@ val () = Env.containerV_one "vhost" TextIO.output (file, "."); TextIO.output (file, dom))) (Domain.currentAliasDomains ()); + if suexec then if isVersion1 node then (TextIO.output (file, "\n\tUser "); @@ -442,13 +445,19 @@ val () = Env.containerV_one "vhost" TextIO.output (file, group)) else (); + if isWaklog node then - (TextIO.output (file, "\n\tWaklogProtected on\n\tWaklogPrincipal "); + (TextIO.output (file, "\n\tWaklogEnabled on\n\tWaklogLocationPrincipal "); TextIO.output (file, user); - TextIO.output (file, "/cgi@HCOOP.NET /etc/keytabs/cgi/"); + TextIO.output (file, "/daemon@HCOOP.NET /etc/keytabs/user.daemon/"); TextIO.output (file, user)) else (); + + TextIO.output (file, "\n\tDAVLockDB /var/lock/apache2/dav."); + TextIO.output (file, user); + TextIO.output (file, "/DAVLock"); + (ld, file) end) nodes; @@ -462,7 +471,8 @@ val () = Env.containerV_one "vhost" write cert) | NONE => (); write "\n"; - !pre {user = user, nodes = nodes, id = vhostId, hostname = fullHost} + !pre {user = user, nodes = nodes, id = vhostId, hostname = fullHost}; + app (fn dom => !aliaser (host ^ "." ^ dom)) (Domain.currentAliasDomains ()) end, fn () => (!post (); write "\n"; @@ -569,6 +579,14 @@ val () = Env.action_three "rewriteCond" write "]"); write "\n")) +val () = Env.action_one "rewriteBase" + ("prefix", Env.string) + (fn prefix => + (checkRewrite (); + write "\tRewriteBase\t"; + write prefix; + write "\n")) + val () = Env.action_one "rewriteLogLevel" ("level", Env.int) (fn level => @@ -675,14 +693,25 @@ val () = Env.action_none "serverAliasDefault" val authType = fn (EVar "basic", _) => SOME "basic" | (EVar "digest", _) => SOME "digest" + | (EVar "kerberos", _) => SOME "kerberos" | _ => NONE +fun allowAuthType "kerberos" = !sslEnabled + | allowAuthType _ = true + val () = Env.action_one "authType" ("type", authType) (fn ty => - (write "\tAuthType "; - write ty; - write "\n")) + if allowAuthType ty then + (write "\tAuthType "; + write ty; + write "\n"; + case ty of + "kerberos" => + write "\tKrbMethodNegotiate off\n\tKrbMethodK5Passwd on\n\tKrbVerifyKDC off\n\tKrbAuthRealms HCOOP.NET\n\tKrbSaveCredentials on\n" + | _ => ()) + else + print "WARNING: Skipped Kerberos authType because this isn't an SSL vhost.\n") val () = Env.action_one "authName" ("name", Env.string) @@ -790,6 +819,9 @@ val () = Env.action_one "authzSvnAccessFile" write path; write "\n"))*) +val () = Env.action_none "davFilesystem" + (fn path => write "\tDAV filesystem\n") + val () = Env.action_two "addDescription" ("description", Env.string, "patterns", Env.list Env.string) (fn (desc, pats) => @@ -850,6 +882,14 @@ val () = Env.action_one "readmeName" write name; write "\n")) +val () = Env.action_two "setEnv" + ("key", Env.string, "value", Env.string) + (fn (key, value) => (write "\tSetEnv \""; + write key; + write "\" \""; + write value; + write "\"\n")) + val () = Domain.registerResetLocal (fn () => ignore (OS.Process.system (Config.rm ^ " -rf /var/domtool/vhosts/*")))