X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/2e96b9d42f6d2619f961c753ac3bbc9ba57c5147..4d5126e168a9671d01a0b57efcecd08ad68dcfbe:/src/msg.sml diff --git a/src/msg.sml b/src/msg.sml index 1d168af..bd7b5ee 100644 --- a/src/msg.sml +++ b/src/msg.sml @@ -88,6 +88,28 @@ fun recvBool bio = | SOME 1 => SOME true | _ => NONE +fun sendQuery (bio, q) = + case q of + QApt s => (OpenSSL.writeInt (bio, 0); + OpenSSL.writeString (bio, s)) + | QCron s => (OpenSSL.writeInt (bio, 1); + OpenSSL.writeString (bio, s)) + | QFtp s => (OpenSSL.writeInt (bio, 2); + OpenSSL.writeString (bio, s)) + | QTrustedPath s => (OpenSSL.writeInt (bio, 3); + OpenSSL.writeString (bio, s)) + +fun recvQuery bio = + case OpenSSL.readInt bio of + SOME n => + (case n of + 0 => Option.map QApt (OpenSSL.readString bio) + | 1 => Option.map QCron (OpenSSL.readString bio) + | 2 => Option.map QFtp (OpenSSL.readString bio) + | 3 => Option.map QTrustedPath (OpenSSL.readString bio) + | _ => NONE) + | NONE => NONE + fun send (bio, m) = case m of MsgOk => OpenSSL.writeInt (bio, 1) @@ -162,6 +184,18 @@ fun send (bio, m) = | MsgSaSet (addr, b) => (OpenSSL.writeInt (bio, 25); OpenSSL.writeString (bio, addr); sendBool (bio, b)) + | MsgSmtpLogReq domain => (OpenSSL.writeInt (bio, 26); + OpenSSL.writeString (bio, domain)) + | MsgSmtpLogRes domain => (OpenSSL.writeInt (bio, 27); + OpenSSL.writeString (bio, domain)) + | MsgDbPasswd {dbtype, passwd} => (OpenSSL.writeInt (bio, 28); + OpenSSL.writeString (bio, dbtype); + OpenSSL.writeString (bio, passwd)) + | MsgShutdown => OpenSSL.writeInt (bio, 29) + | MsgYes => OpenSSL.writeInt (bio, 30) + | MsgNo => OpenSSL.writeInt (bio, 31) + | MsgQuery q => (OpenSSL.writeInt (bio, 32); + sendQuery (bio, q)) fun checkIt v = case v of @@ -250,6 +284,16 @@ fun recv bio = | 25 => (case (OpenSSL.readString bio, recvBool bio) of (SOME user, SOME b) => SOME (MsgSaSet (user, b)) | _ => NONE) + | 26 => Option.map MsgSmtpLogReq (OpenSSL.readString bio) + | 27 => Option.map MsgSmtpLogRes (OpenSSL.readString bio) + | 28 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of + (SOME dbtype, SOME passwd) => + SOME (MsgDbPasswd {dbtype = dbtype, passwd = passwd}) + | _ => NONE) + | 29 => SOME MsgShutdown + | 30 => SOME MsgYes + | 31 => SOME MsgNo + | 32 => Option.map MsgQuery (recvQuery bio) | _ => NONE) end