Join script should rule out retired usernames
[bpt/portal.git] / mailinglist.sml
CommitLineData
37cec107
AC
1structure MailingList =
2struct
9d1c0e98 3
37cec107
AC
4structure R = Request(struct
5 val table = "MailingList"
6 val adminGroup = "lists"
7 fun subject list = "Mailman list request: " ^ list
8 val template = "list"
9 val descr = "mailing list"
10
11 fun body (mail, lst) =
12 (Mail.mwrite (mail, "List name: ");
13 Mail.mwrite (mail, lst);
14 Mail.mwrite (mail, "\n"))
15 end)
16open R
17
18fun listWebHost name =
19 case String.tokens (fn ch => ch = #"@") name of
20 [user, dom] =>
21 let
acb31ead 22 val mmf = Util.domainDir dom ^ "/mailman"
37cec107
AC
23 in
24 if Posix.FileSys.access (mmf, []) then
25 let
26 val inf = TextIO.openIn mmf
27 in
28 (case TextIO.inputLine inf of
acb31ead 29 NONE => {user = user, dom = dom, vhost = "<<<No darned data in " ^ mmf ^ ">>>"}
37cec107 30 | SOME line =>
acb31ead 31 case String.tokens (fn ch => Char.isSpace ch orelse ch = #":" orelse ch = #"'" orelse ch = #",") line of
4f10deb0 32 [vhost, _] => {user = user, dom = dom, vhost = "http://" ^ vhost}
acb31ead 33 | _ => {user = user, dom = dom, vhost = "<<<Parse failure in " ^ mmf ^ ">>>"})
37cec107 34 before TextIO.closeIn inf
acb31ead 35 end handle _ => {user = user, dom = dom, vhost = "<<<A darn old exception reading " ^ mmf ^ ">>>"}
37cec107 36 else
4f10deb0 37 {user = user, dom = dom, vhost = "https://lists.hcoop.net"}
37cec107
AC
38 end
39 | _ => raise (Fail "Bad mailing list name")
40
41end