X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/21d921a56a850857f6ea883c6dff6a411a659bbf..2fc6b0dd10a94cf365b48df7fe6b0518e5dabdd1:/src/msg.sml diff --git a/src/msg.sml b/src/msg.sml index 53dfbfa..747572a 100644 --- a/src/msg.sml +++ b/src/msg.sml @@ -119,6 +119,30 @@ fun send (bio, m) = | MsgCreateDbTable {dbtype, dbname} => (OpenSSL.writeInt (bio, 17); OpenSSL.writeString (bio, dbtype); OpenSSL.writeString (bio, dbname)) + | MsgNewMailbox {domain, user, passwd, mailbox} => + (OpenSSL.writeInt (bio, 18); + OpenSSL.writeString (bio, domain); + OpenSSL.writeString (bio, user); + OpenSSL.writeString (bio, passwd); + OpenSSL.writeString (bio, mailbox)) + | MsgPasswdMailbox {domain, user, passwd} => + (OpenSSL.writeInt (bio, 19); + OpenSSL.writeString (bio, domain); + OpenSSL.writeString (bio, user); + OpenSSL.writeString (bio, passwd)) + | MsgRmMailbox {domain, user} => + (OpenSSL.writeInt (bio, 20); + OpenSSL.writeString (bio, domain); + OpenSSL.writeString (bio, user)) + | MsgListMailboxes domain => + (OpenSSL.writeInt (bio, 21); + OpenSSL.writeString (bio, domain)) + | MsgMailboxes users => + (OpenSSL.writeInt (bio, 22); + sendList (fn (bio, {user, mailbox}) => + (OpenSSL.writeString (bio, user); + OpenSSL.writeString (bio, mailbox))) + (bio, users)) fun checkIt v = case v of @@ -177,6 +201,31 @@ fun recv bio = (SOME dbtype, SOME dbname) => SOME (MsgCreateDbTable {dbtype = dbtype, dbname = dbname}) | _ => NONE) + | 18 => (case (OpenSSL.readString bio, OpenSSL.readString bio, + OpenSSL.readString bio, OpenSSL.readString bio) of + (SOME domain, SOME user, SOME passwd, SOME mailbox) => + SOME (MsgNewMailbox {domain = domain, user = user, + passwd = passwd, mailbox = mailbox}) + | _ => NONE) + | 19 => (case (OpenSSL.readString bio, OpenSSL.readString bio, + OpenSSL.readString bio) of + (SOME domain, SOME user, SOME passwd) => + SOME (MsgPasswdMailbox {domain = domain, user = user, + passwd = passwd}) + | _ => NONE) + | 20 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of + (SOME domain, SOME user) => + SOME (MsgRmMailbox {domain = domain, user = user}) + | _ => NONE) + | 21 => Option.map MsgListMailboxes (OpenSSL.readString bio) + | 22 => Option.map MsgMailboxes (recvList + (fn bio => + case (OpenSSL.readString bio, + OpenSSL.readString bio) of + (SOME user, SOME mailbox) => + SOME {user = user, mailbox = mailbox} + | _ => NONE) + bio) | _ => NONE) end