Privilege setting code
[hcoop/domtool2.git] / src / msg.sml
index 4dcc3ff..43b6386 100644 (file)
@@ -31,6 +31,16 @@ val i2a = fn 0 => Add
           | 2 => Modify
           | _ => raise OpenSSL.OpenSSL "Bad action number to deserialize"
 
+fun sendAcl (bio, {user, class, value}) =
+    (OpenSSL.writeString (bio, user);
+     OpenSSL.writeString (bio, class);
+     OpenSSL.writeString (bio, value))
+
+fun recvAcl bio =
+    case (OpenSSL.readString bio, OpenSSL.readString bio, OpenSSL.readString bio) of
+       (SOME user, SOME class, SOME value) => SOME {user = user, class = class, value = value}
+      | _ => NONE
+
 fun send (bio, m) =
     case m of
        MsgOk => OpenSSL.writeInt (bio, 1)
@@ -45,6 +55,8 @@ fun send (bio, m) =
         OpenSSL.writeString (bio, dir);
         OpenSSL.writeString (bio, file))
       | MsgDoFiles => OpenSSL.writeInt (bio, 5)
+      | MsgGrant acl => (OpenSSL.writeInt (bio, 6);
+                        sendAcl (bio, acl))
 
 fun checkIt v =
     case v of
@@ -70,6 +82,9 @@ fun recv bio =
                                              file = file})
                             | _ => NONE)
                   | 5 => SOME MsgDoFiles
+                  | 6 => (case recvAcl bio of
+                              SOME acl => SOME (MsgGrant acl)
+                            | _ => NONE)
                   | _ => NONE)
         
 end