HCoop
/
hcoop
/
domtool2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Factor out log directory calculation code, in preparation for changing how it works
[hcoop/domtool2.git]
/
src
/
plugins
/
exim.sml
diff --git
a/src/plugins/exim.sml
b/src/plugins/exim.sml
index
0744fce
..
8b0485b
100644
(file)
--- a/
src/plugins/exim.sml
+++ b/
src/plugins/exim.sml
@@
-25,12
+25,13
@@
open Ast
val dl = ErrorMsg.dummyLoc
val _ = Defaults.registerDefault ("MailNodes",
val dl = ErrorMsg.dummyLoc
val _ = Defaults.registerDefault ("MailNodes",
- (TList (TBase "node", dl), dl),
+ (TList (TBase "
mail_
node", dl), dl),
(fn () => (EList (map (fn s => (EString s, dl)) Config.Exim.aliasTo), dl)))
val aliasesChanged = ref false
val aliasesDefaultChanged = ref false
val hostsChanged = ref false
(fn () => (EList (map (fn s => (EString s, dl)) Config.Exim.aliasTo), dl)))
val aliasesChanged = ref false
val aliasesDefaultChanged = ref false
val hostsChanged = ref false
+val relayHostsChanged = ref false
val () = Slave.registerPreHandler
(fn () => (aliasesChanged := false;
val () = Slave.registerPreHandler
(fn () => (aliasesChanged := false;
@@
-47,6
+48,8
@@
val () = Slave.registerFileHandler (fn fs =>
aliasesDefaultChanged := true
else if #file spl = "mail" then
hostsChanged := true
aliasesDefaultChanged := true
else if #file spl = "mail" then
hostsChanged := true
+ else if #file spl = "mail.relay" then
+ relayHostsChanged := true
else
()
end)
else
()
end)
@@
-65,8
+68,12
@@
val () = Slave.registerPostHandler
Slave.enumerateTo (fn s => s = "mail") ":" Config.Exim.handleDomains
else
();
Slave.enumerateTo (fn s => s = "mail") ":" Config.Exim.handleDomains
else
();
+ if !relayHostsChanged then
+ Slave.enumerateTo (fn s => s = "mail.relay") ":" Config.Exim.relayDomains
+ else
+ ();
if !aliasesChanged orelse !aliasesDefaultChanged
if !aliasesChanged orelse !aliasesDefaultChanged
- orelse !hostsChanged then
+ orelse !hostsChanged
orelse !relayHostsChanged
then
Slave.shellF ([Config.Exim.reload],
fn cl => "Error reloading exim with " ^ cl)
else
Slave.shellF ([Config.Exim.reload],
fn cl => "Error reloading exim with " ^ cl)
else
@@
-83,4
+90,14
@@
val () = Env.actionV_none "handleMail"
name = "mail"})) nodes
end)
name = "mail"})) nodes
end)
+val () = Env.actionV_none "relayMail"
+ (fn env =>
+ let
+ val nodes = Env.env (Env.list Env.string) (env, "MailNodes")
+ in
+ app (fn node => TextIO.closeOut
+ (Domain.domainFile {node = node,
+ name = "mail.relay"})) nodes
+ end)
+
end
end