From acb31ead85498269ea9e0b320711e88894455396 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 8 Dec 2007 22:36:51 +0000 Subject: [PATCH] Picking mailing list vhosts out of Domtool data --- list.mlt | 4 ++-- mailinglist.sml | 12 +++++++----- util.sml | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/list.mlt b/list.mlt index 9927b9a..aceffde 100644 --- a/list.mlt +++ b/list.mlt @@ -28,11 +28,11 @@ elseif $"cmd" = "open" then <% if admin then - val (user, dom) = MailingList.listWebHost (#data req) %> + val vitals = MailingList.listWebHost (#data req) %>
[Modify] [Delete]
- To set up, run: listnew <% user %> <% dom %> <% name %> <% Util.randomPassword () %> + To set up, run: listnew <% #user vitals %> <% #dom vitals %> <% #vhost vitals %> <% name %> <% Util.randomPassword () %> <% end %> <% end diff --git a/mailinglist.sml b/mailinglist.sml index ca8b95d..fbc317a 100644 --- a/mailinglist.sml +++ b/mailinglist.sml @@ -19,20 +19,22 @@ fun listWebHost name = case String.tokens (fn ch => ch = #"@") name of [user, dom] => let - val mmf = Util.domainDir dom ^ "/.mailman" + val mmf = Util.domainDir dom ^ "/mailman" in if Posix.FileSys.access (mmf, []) then let val inf = TextIO.openIn mmf in (case TextIO.inputLine inf of - NONE => (user, dom) + NONE => {user = user, dom = dom, vhost = "<<>>"} | SOME line => - (user, String.substring (line, 0, size line - 1))) + case String.tokens (fn ch => Char.isSpace ch orelse ch = #":" orelse ch = #"'" orelse ch = #",") line of + [vhost, _] => {user = user, dom = dom, vhost = vhost} + | _ => {user = user, dom = dom, vhost = "<<>>"}) before TextIO.closeIn inf - end handle _ => (user, dom) + end handle _ => {user = user, dom = dom, vhost = "<<>>"} else - (user, dom) + {user = user, dom = dom, vhost = dom} end | _ => raise (Fail "Bad mailing list name") diff --git a/util.sml b/util.sml index f1bdcbb..ee6c872 100644 --- a/util.sml +++ b/util.sml @@ -64,7 +64,7 @@ fun init () = rnd := Random.rand (SysWord.toInt (Posix.Process.pidToWord (Posix. fun randomPassword () = Int.toString (Int.abs (Random.randInt (!rnd))) fun domainDir dom = - String.concatWith "/" ("/etc/domains" :: String.fields (fn ch => ch = #".") dom) + String.concatWith "/" ("/afs/hcoop.net/common/etc/domtool/nodes/deleuze" :: List.rev (String.fields (fn ch => ch = #".") dom)) fun readFile fname = let -- 2.20.1