X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/35dc774669875006bc804bd082852506d87c1244..0aed4302d346dd37ab441ca64711bdcd661f653b:/src/plugins/apache.sml diff --git a/src/plugins/apache.sml b/src/plugins/apache.sml index 4c60d7a..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 @@ -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; @@ -570,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 => @@ -679,16 +696,22 @@ val authType = fn (EVar "basic", _) => SOME "basic" | (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"; - case ty of - "kerberos" => - write "\tKrbMethodNegotiate off\n\tKrbMethodK5Passwd on\n\tKrbVerifyKDC off\n\tKrbAuthRealms HCOOP.NET\n\tKrbSaveCredentials on\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) @@ -796,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) => @@ -856,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/*")))