]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/configuration/sgconfig2/proto.h
7dc4b50f7bec7548e2f6abdf194dbaba2ffdd4c2
[stg.git] / projects / stargazer / plugins / configuration / sgconfig2 / proto.h
1 #ifndef __PROTO_H__
2 #define __PROTO_H__
3
4 namespace SGCONF2 {
5
6 /*
7  * --- Protocol structure (binary part) ---
8  *
9  *  Request:
10  *  |---------------|
11  *  |PROTOHEADER    |
12  *  |REQUESTHEADER  |
13  *  |---------------|
14  *  |   cryptodata  |
15  *  ~~~~~~~~~~~~~~~~~
16  *  |---------------|
17  *
18  *  Response:
19  *  |---------------|
20  *  |PROTOHEADER    |
21  *  |RESPONSEHEADER |
22  *  | error message |
23  *  |   cryptodata  |
24  *  ~~~~~~~~~~~~~~~~~
25  *  |---------------|
26  *
27  */
28
29     static char magic[8] = "STGCONF2";
30
31     enum RESPONSECODES {
32         E_OK = 0,       // No error
33         E_NET_ERROR,    // Network error (i.e. - timeout)
34         E_PROTO_ERROR,  // Protocol error (invalid magic, unsupported version, etc.)
35         E_INVALID_LOGIN,// Invalid login
36         E_PERMISSIONS   // Operation not permitted
37     };
38
39     struct PROTOHEADER {
40         char     magic[8];
41         uint32_t version;
42     };
43
44     struct REQUESTHEADER {
45         char     login[32];
46     };
47
48     struct CRYPTOHEADER {
49         char     login[32];
50         uint32_t dataSize; // Can't be 0
51     };
52
53     struct RESPONSEHEADER {
54         uint32_t code;
55         uint32_t errorMessageSize; // May be 0
56         uint32_t dataSize; // May be 0
57     };
58
59 }
60
61 #endif