1// server -> client 2message GG110LoginOK 3{ 4 required int32 dummy1 = 1 [default = 1]; 5 required string dummyhash = 2; 6 required uint32 uin = 3; 7 required fixed32 server_time = 4; 8} 9 10// server -> client 11message GG110Pong 12{ 13 required fixed32 server_time = 1; 14} 15 16// client -> server 17message GG110Ack 18{ 19 enum Type 20 { 21 MSG = 1; 22 CHAT = 2; 23 CHAT_INFO = 3; 24 MAGIC_NOTIFICATION = 5; 25 MPA = 6; 26 TRANSFER_INFO = 7; 27 } 28 29 required Type type = 1; 30 required uint32 seq = 2; 31 required uint32 dummy1 = 3 [default = 1]; 32} 33 34// client -> server 35message GG105Login 36{ 37 required string lang = 1; 38 required bytes uin = 2; 39 required bytes hash = 3; 40 required string client = 7; 41 required fixed32 initial_status = 8 [default = 0x2023]; // GG_STATUS_NOT_SET | USE_LAST_STATUS 42 required string initial_descr = 9 [default = ""]; 43 required string supported_features = 11; 44 45 /** 46 * GG11.2: 0x02 47 * GG11.3: 0x04 48 */ 49 required int32 dummy1 = 4 [default = 4]; 50 51 /* GG10.5: 0x0002e737 52 * GG11.0: 0x01aeff77 53 * GG11.2: 0x03eeff77 54 */ 55 required fixed32 dummy2 = 5 [default = 0x03eeff77]; 56 57 /* privacy flag: 0x00000600 58 * GG11.0: 0x00030014 59 * GG10.5: 0x00000003 60 */ 61 required fixed32 dummy3 = 6 [default = 0x00030614]; 62 63 required bytes dummy4 = 10; // 4x 0x00 64 required int32 dummy5 = 12 [default = 0xFF]; 65 required int32 dummy6 = 13 [default = 100]; 66 optional fixed32 dummy7 = 14 [default = 0x7F]; // GG11.0+ 67 optional int32 dummy8 = 15 [default = 0]; // GG11.0+ 68 //optional unknown_type dummy9 = 16; 69 optional uint32 dummy10 = 17 [default = 0]; // GG11.0+ 70} 71 72// komponent GG110MessageAck 73message GG110MessageAckLink 74{ 75 required fixed64 id = 1; 76 required string url = 2; 77} 78 79// server -> client 80message GG110MessageAck 81{ 82 required uint32 msg_type = 1; 83 required uint32 seq = 2; 84 required fixed32 time = 3; 85 optional fixed64 msg_id = 4; 86 optional fixed64 conv_id = 5; 87 repeated GG110MessageAckLink links = 6; 88 required uint32 dummy1 = 7 [default = 0]; 89} 90 91// server -> client 92message GG110Event 93{ 94 enum Type 95 { 96 XML = 0; 97 JSON = 2; 98 } 99 100 required Type type = 1; 101 required uint32 seq = 2; 102 required string data = 3; 103 required string subtype = 4; 104 optional uint64 id = 5; 105} 106 107// server -> client 108message GG110RecvMessage 109{ 110 optional bytes sender = 1; // nieobecne w GG_CHAT_RECV_OWN_MSG 111 112 /* 0x09: archiwalna wiadomość 113 * 0x4040: odbierany obrazek 114 * 0x00080008: GG w orange 115 */ 116 required uint32 flags = 2; 117 118 required uint32 seq = 3; 119 required fixed32 time = 4; 120 required string msg_plain = 5 [default = ""]; 121 optional string msg_xhtml = 6; 122 optional bytes data = 7; 123 //optional unknown_type dummy1 = 8; 124 optional fixed64 msg_id = 9; 125 optional fixed64 chat_id = 10; // tylko w GG_CHAT_RECV_MSG i GG_CHAT_RECV_OWN_MSG 126 optional fixed64 conv_id = 11; 127} 128 129// client -> server 130// bardzo podobne do GG110RecvMessage 131message GG110SendMessage 132{ 133 optional bytes recipient = 1; 134 required uint32 dummy1 = 2 [default = 0x08]; 135 required uint32 seq = 3; 136 //optional unknown_type dummy2 = 4; 137 required string msg_plain = 5; 138 required string msg_xhtml = 6; 139 optional string dummy3 = 7 [default = ""]; // tylko, gdy chat_id jest ustawiony 140 //optional uknown_type dummy4 = 8; 141 //optional uknown_type dummy5 = 9; 142 optional fixed64 chat_id = 10; 143} 144 145// server -> client 146message GG110Imtoken 147{ 148 required string imtoken = 1; 149} 150 151// server -> client 152message GG110ChatInfoUpdate 153{ 154 required bytes participant = 1; 155 required bytes inviter = 2; 156 required fixed32 update_type = 3; 157 required fixed32 time = 4; 158 required fixed32 dummy1 = 5; 159 required uint32 version = 6; 160 required uint32 dummy2 = 7; 161 //optional unknown_type dummy3 = 8; 162 required fixed64 msg_id = 9; 163 required fixed64 chat_id = 10; 164 required fixed64 conv_id = 11; 165} 166 167message ProtobufKVP 168{ 169 required string key = 1; 170 required string value = 2; 171} 172 173/* aol_enabled: zawsze 1 174 * expires_at: 0 lub data (z przeszłości?) powiązana z kontem 175 * state: 1 (jeżeli expires_at=0) lub 2 176 * subnet: zawsze 1 177 */ 178// server -> client 179message GG110Options 180{ 181 repeated ProtobufKVP options = 1; 182 required uint32 dummy1 = 2 [default = 0]; 183} 184 185// server -> client 186message GG110AccessInfo 187{ 188 required uint32 dummy1 = 1 [default = 1]; 189 required uint32 dummy2 = 2; // 1 - stare numery, 2 - nowsze 190 required uint32 last_message = 3; 191 required uint32 last_file_transfer = 4; 192 required uint32 last_conference_ch = 5; 193} 194 195// komponent GG112TransferInfo 196message GG112TransferInfoUin 197{ 198 required uint32 dummy1 = 1 [default = 1]; 199 required bytes uin = 2; 200} 201 202// komponent GG112TransferInfo 203message GG112TransferInfoFile 204{ 205 required string type = 1 [default = "other"]; // other, image 206 required string url = 2; // drive://... 207 // nieznane pola: 3-5 208 required string content_type = 6; 209 required string filename = 7; 210 required uint32 filesize = 8; 211 required fixed64 msg_id = 1001; 212} 213 214/* tablica data: 215 * contentType 216 * deliveryStatus = delivered 217 * fileName 218 * fileSize 219 * fileUrl 220 */ 221// server -> client 222message GG112TransferInfo 223{ 224 required uint32 dummy1 = 1; // 6 for file transfers; 5 for missed video call info 225 required GG112TransferInfoUin peer = 2; // osoba, z którą się wymieniamy plikiem 226 required GG112TransferInfoUin sender = 4; // nadawca (my, albo peer) 227 required fixed32 time = 3; 228 repeated ProtobufKVP data = 5; 229 optional GG112TransferInfoFile file = 6; // only for dummy1 = 6 230 required uint32 seq = 7; 231 required fixed64 msg_id = 1001; 232 required fixed64 conv_id = 1002; 233} 234 235// server -> client 236message GG110MagicNotification 237{ 238 required int32 dummy1 = 1 [default = 2]; 239 required int32 seq = 2; 240 required int32 dummy2 = 3 [default = 1]; 241 required int32 dummy3 = 4 [default = 1]; 242 required bytes uin = 5; 243 required string dummy4 = 6 [default = ""]; 244} 245