X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/4d5126e168a9671d01a0b57efcecd08ad68dcfbe..07d66c3691fac5239dfa1f5a8858623ef542c71f:/src/msg.sml diff --git a/src/msg.sml b/src/msg.sml index bd7b5ee..5b1125b 100644 --- a/src/msg.sml +++ b/src/msg.sml @@ -88,6 +88,21 @@ fun recvBool bio = | SOME 1 => SOME true | _ => NONE +fun sendSockPerm (bio, p) = + case p of + Any => OpenSSL.writeInt (bio, 0) + | Client => OpenSSL.writeInt (bio, 1) + | Server => OpenSSL.writeInt (bio, 2) + | Nada => OpenSSL.writeInt (bio, 3) + +fun recvSockPerm bio = + case OpenSSL.readInt bio of + SOME 0 => SOME Any + | SOME 1 => SOME Client + | SOME 2 => SOME Server + | SOME 3 => SOME Nada + | _ => NONE + fun sendQuery (bio, q) = case q of QApt s => (OpenSSL.writeInt (bio, 0); @@ -98,6 +113,10 @@ fun sendQuery (bio, q) = OpenSSL.writeString (bio, s)) | QTrustedPath s => (OpenSSL.writeInt (bio, 3); OpenSSL.writeString (bio, s)) + | QSocket s => (OpenSSL.writeInt (bio, 4); + OpenSSL.writeString (bio, s)) + | QFirewall s => (OpenSSL.writeInt (bio, 5); + OpenSSL.writeString (bio, s)) fun recvQuery bio = case OpenSSL.readInt bio of @@ -107,6 +126,8 @@ fun recvQuery bio = | 1 => Option.map QCron (OpenSSL.readString bio) | 2 => Option.map QFtp (OpenSSL.readString bio) | 3 => Option.map QTrustedPath (OpenSSL.readString bio) + | 4 => Option.map QSocket (OpenSSL.readString bio) + | 5 => Option.map QFirewall (OpenSSL.readString bio) | _ => NONE) | NONE => NONE @@ -196,6 +217,10 @@ fun send (bio, m) = | MsgNo => OpenSSL.writeInt (bio, 31) | MsgQuery q => (OpenSSL.writeInt (bio, 32); sendQuery (bio, q)) + | MsgSocket p => (OpenSSL.writeInt (bio, 33); + sendSockPerm (bio, p)) + | MsgFirewall ls => (OpenSSL.writeInt (bio, 34); + sendList OpenSSL.writeString (bio, ls)) fun checkIt v = case v of @@ -294,6 +319,8 @@ fun recv bio = | 30 => SOME MsgYes | 31 => SOME MsgNo | 32 => Option.map MsgQuery (recvQuery bio) + | 33 => Option.map MsgSocket (recvSockPerm bio) + | 34 => Option.map MsgFirewall (recvList OpenSSL.readString bio) | _ => NONE) end