Trusted-path permission checking
[hcoop/domtool2.git] / src / msg.sml
index 555b079..bd7b5ee 100644 (file)
@@ -88,6 +88,28 @@ fun recvBool bio =
       | SOME 1 => SOME true
       | _ => NONE
 
       | 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)
 fun send (bio, m) =
     case m of
        MsgOk => OpenSSL.writeInt (bio, 1)
@@ -172,8 +194,8 @@ fun send (bio, m) =
       | MsgShutdown => OpenSSL.writeInt (bio, 29)
       | MsgYes => OpenSSL.writeInt (bio, 30)
       | MsgNo => OpenSSL.writeInt (bio, 31)
       | MsgShutdown => OpenSSL.writeInt (bio, 29)
       | MsgYes => OpenSSL.writeInt (bio, 30)
       | MsgNo => OpenSSL.writeInt (bio, 31)
-      | MsgApt s => (OpenSSL.writeInt (bio, 32);
-                    OpenSSL.writeString (bio, s))
+      | MsgQuery q => (OpenSSL.writeInt (bio, 32);
+                      sendQuery (bio, q))
 
 fun checkIt v =
     case v of
 
 fun checkIt v =
     case v of
@@ -271,7 +293,7 @@ fun recv bio =
                   | 29 => SOME MsgShutdown
                   | 30 => SOME MsgYes
                   | 31 => SOME MsgNo
                   | 29 => SOME MsgShutdown
                   | 30 => SOME MsgYes
                   | 31 => SOME MsgNo
-                  | 32 => Option.map MsgApt (OpenSSL.readString bio)
+                  | 32 => Option.map MsgQuery (recvQuery bio)
                   | _ => NONE)
         
 end
                   | _ => NONE)
         
 end