List.all checkField fields
end
- fun handler {path, domain, parent, vars, paths, users, groups} =
+ fun handler {path, domain, parent, vars, paths, users, groups, mxs} =
let
val _ = Domtool.dprint ("Reading host " ^ path ^ " for " ^ domain ^ "....")
val vhosts = valOf (!vhosts)
val loggroups = valOf (!loggroups)
+ val domfile = "/etc/domains/" ^ String.concatWith "/" (rev (String.tokens (fn ch => ch = #".") domain))
+ val stat = Posix.FileSys.stat domfile
+ val group' = Posix.SysDB.Group.name (Posix.SysDB.getgrgid (Posix.FileSys.ST.gid stat))
+
+ val _ = TextIO.output (loggroups, domain ^ "\t" ^ group' ^ "\n")
+
val hf = TextIO.openIn path
val rewrite = ref false
Domtool.error (path, "not authorized to run as " ^ user')
| ["Group", group'] =>
if StringSet.member (groups, group') then
- (group := group';
- TextIO.output (loggroups, domain ^ "\t" ^ group' ^ "\n"))
+ group := group'
else
- Domtool.error (path, "not authorized to run as group " ^ group')
+ Domtool.error (path, "not authorized to run as group " ^ group')
| ["ServerAdmin", email] => TextIO.output (vhosts, "\tServerAdmin " ^ email ^ "\n")
| ["UserDir"] => TextIO.output (vhosts, "\tUserDir public_html\n\t<Directory /home/*/public_html/cgi-bin>\n\t\tAllowOverride None\n\t\tOptions ExecCGI\n\t\tAllow from all\n\t\tSetHandler cgi-script\n\t</Directory>\n\tScriptAliasMatch ^/~(.*)/cgi-bin/(.*) /home/$1/public_html/cgi-bin/$2\n")
| ["DocumentRoot", p] =>
"\t</Directory>\n")
else
Domtool.error (path, "not authorized to use " ^ p)
+ | ["Mod", lang, p, file] =>
+ (case List.find (fn (lang', _) => lang = lang') langHandlers of
+ NONE => Domtool.error (p, "unknown Mod language " ^ lang)
+ | SOME (_, f) =>
+ (TextIO.output (vhosts, "\t<Location " ^ p ^ ">\n");
+ TextIO.output (vhosts, f file);
+ TextIO.output (vhosts, "\t</Location>\n")))
| ["HTML", p] =>
if checkPath (paths, p) then
TextIO.output (vhosts, "\t<Directory " ^ p ^ ">\n" ^
"\t</Directory>\n")
else
Domtool.error (path, "not authorized to use " ^ p)
+ | ["PerlSetVar", n, v] =>
+ TextIO.output (vhosts, "\tPerlSetVar " ^ n ^ " " ^ v ^ "\n")
+ | ["AddDefaultCharset", cs] =>
+ TextIO.output (vhosts, "\tAddDefaultCharSet " ^ cs ^ "\n")
| cmd::_ => Domtool.error (path, "unknown option: " ^ cmd))
in
TextIO.output (vhosts, "<VirtualHost *>\n" ^