X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/fb6fac97106809e2b90f16e9f1d6176c329a5d40..0e0442b0650ceb74175905578054db8877b1bbbd:/src/msg.sml diff --git a/src/msg.sml b/src/msg.sml index 19a84b4..eb04648 100644 --- a/src/msg.sml +++ b/src/msg.sml @@ -1,5 +1,6 @@ (* HCoop Domtool (http://hcoop.sourceforge.net/) * Copyright (c) 2006, Adam Chlipala + * Copyright (c) 2011,2014 Clinton Ebadi * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -23,12 +24,14 @@ structure Msg :> MSG = struct open OpenSSL MsgTypes Slave val a2i = fn Add => 0 - | Delete => 1 + | Delete true => 1 | Modify => 2 + | Delete false => 3 val i2a = fn 0 => Add - | 1 => Delete + | 1 => Delete true | 2 => Modify + | 3 => Delete false | _ => raise OpenSSL.OpenSSL "Bad action number to deserialize" fun sendAcl (bio, {user, class, value}) = @@ -115,8 +118,11 @@ fun sendQuery (bio, q) = OpenSSL.writeString (bio, s)) | QSocket s => (OpenSSL.writeInt (bio, 4); OpenSSL.writeString (bio, s)) - | QFirewall s => (OpenSSL.writeInt (bio, 5); - OpenSSL.writeString (bio, s)) + | QFirewall {node, user} => (OpenSSL.writeInt (bio, 5); + OpenSSL.writeString (bio, node); + OpenSSL.writeString (bio, user)) + | QAptExists s => (OpenSSL.writeInt (bio, 6); + OpenSSL.writeString (bio, s)) fun recvQuery bio = case OpenSSL.readInt bio of @@ -127,7 +133,10 @@ fun recvQuery 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) + | 5 => (case ((OpenSSL.readString bio), (OpenSSL.readString bio)) of + (SOME node, SOME user) => SOME (QFirewall { node = node, user = user }) + | _ => NONE) + | 6 => Option.map QAptExists (OpenSSL.readString bio) | _ => NONE) | NONE => NONE @@ -171,9 +180,10 @@ fun send (bio, m) = | MsgCreateDbUser {dbtype, passwd} => (OpenSSL.writeInt (bio, 16); OpenSSL.writeString (bio, dbtype); sendOption OpenSSL.writeString (bio, passwd)) - | MsgCreateDbTable {dbtype, dbname} => (OpenSSL.writeInt (bio, 17); - OpenSSL.writeString (bio, dbtype); - OpenSSL.writeString (bio, dbname)) + | MsgCreateDb {dbtype, dbname, encoding} => (OpenSSL.writeInt (bio, 17); + OpenSSL.writeString (bio, dbtype); + OpenSSL.writeString (bio, dbname); + sendOption OpenSSL.writeString (bio, encoding)) | MsgNewMailbox {domain, user, passwd, mailbox} => (OpenSSL.writeInt (bio, 18); OpenSSL.writeString (bio, domain); @@ -222,6 +232,30 @@ fun send (bio, m) = | MsgFirewall ls => (OpenSSL.writeInt (bio, 34); sendList OpenSSL.writeString (bio, ls)) | MsgRegenerateTc => OpenSSL.writeInt (bio, 35) + | MsgDropDb {dbtype, dbname} => (OpenSSL.writeInt (bio, 36); + OpenSSL.writeString (bio, dbtype); + OpenSSL.writeString (bio, dbname)) + | MsgGrantDb {dbtype, dbname} => (OpenSSL.writeInt (bio, 37); + OpenSSL.writeString (bio, dbtype); + OpenSSL.writeString (bio, dbname)) + | MsgMysqlFixperms => OpenSSL.writeInt (bio, 38) + | MsgDescribe dom => (OpenSSL.writeInt (bio, 39); + OpenSSL.writeString (bio, dom)) + | MsgDescription s => (OpenSSL.writeInt (bio, 40); + OpenSSL.writeString (bio, s)) + | MsgReUsers => OpenSSL.writeInt (bio, 41) + | MsgVmailChanged => OpenSSL.writeInt (bio, 42) + | MsgFirewallRegen => OpenSSL.writeInt (bio, 43) + | MsgAptQuery {section, description} => (OpenSSL.writeInt (bio, 44); + OpenSSL.writeString (bio, section); + OpenSSL.writeString (bio, description)) + | MsgSaChanged => OpenSSL.writeInt (bio, 45) + | MsgPortalPasswdMailbox {domain : string, user : string, oldpasswd : string, newpasswd : string} => + (OpenSSL.writeInt (bio, 46); + OpenSSL.writeString (bio, domain); + OpenSSL.writeString (bio, user); + OpenSSL.writeString (bio, oldpasswd); + OpenSSL.writeString (bio, newpasswd)) fun checkIt v = case v of @@ -276,9 +310,9 @@ fun recv bio = (SOME dbtype, SOME passwd) => SOME (MsgCreateDbUser {dbtype = dbtype, passwd = passwd}) | _ => NONE) - | 17 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of - (SOME dbtype, SOME dbname) => - SOME (MsgCreateDbTable {dbtype = dbtype, dbname = dbname}) + | 17 => (case (OpenSSL.readString bio, OpenSSL.readString bio, recvOption OpenSSL.readString bio) of + (SOME dbtype, SOME dbname, SOME encoding) => + SOME (MsgCreateDb {dbtype = dbtype, dbname = dbname, encoding = encoding}) | _ => NONE) | 18 => (case (OpenSSL.readString bio, OpenSSL.readString bio, OpenSSL.readString bio, OpenSSL.readString bio) of @@ -323,6 +357,28 @@ fun recv bio = | 33 => Option.map MsgSocket (recvSockPerm bio) | 34 => Option.map MsgFirewall (recvList OpenSSL.readString bio) | 35 => SOME MsgRegenerateTc + | 36 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of + (SOME dbtype, SOME dbname) => + SOME (MsgDropDb {dbtype = dbtype, dbname = dbname}) + | _ => NONE) + | 37 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of + (SOME dbtype, SOME dbname) => + SOME (MsgGrantDb {dbtype = dbtype, dbname = dbname}) + | _ => NONE) + | 38 => SOME MsgMysqlFixperms + | 39 => Option.map MsgDescribe (OpenSSL.readString bio) + | 40 => Option.map MsgDescription (OpenSSL.readString bio) + | 41 => SOME MsgReUsers + | 42 => SOME MsgVmailChanged + | 43 => SOME MsgFirewallRegen + | 44 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of + (SOME section, SOME description) => SOME (MsgAptQuery {section = section, description = description}) + | _ => NONE) + | 45 => SOME MsgSaChanged + | 46 => (case (OpenSSL.readString bio, OpenSSL.readString bio, OpenSSL.readString bio, OpenSSL.readString bio) of + (SOME domain, SOME user, SOME oldpasswd, SOME newpasswd) => + SOME (MsgPortalPasswdMailbox {domain = domain, user = user, oldpasswd = oldpasswd, newpasswd = newpasswd}) + | _ => NONE) | _ => NONE) end