summaryrefslogtreecommitdiff
path: root/src/leap/common/events/events.proto
blob: a8eb82aba87ad2aa59c838aa98105be3f2f95c68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// signal.proto
// Copyright (C) 2013 LEAP
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.

package leap.common.events;
option py_generic_services = true;


// These are the events that can be signaled using the events mechanism.

enum Event {
  CLIENT_SESSION_ID = 1;
  CLIENT_UID = 2;
  SOLEDAD_CREATING_KEYS = 3;
  SOLEDAD_DONE_CREATING_KEYS = 4;
  SOLEDAD_UPLOADING_KEYS = 5;
  SOLEDAD_DONE_UPLOADING_KEYS = 6;
  SOLEDAD_DOWNLOADING_KEYS = 7;
  SOLEDAD_DONE_DOWNLOADING_KEYS = 8;
  SOLEDAD_NEW_DATA_TO_SYNC = 9;
  SOLEDAD_DONE_DATA_SYNC = 10;
  UPDATER_NEW_UPDATES = 11;
  UPDATER_DONE_UPDATING = 12;
  RAISE_WINDOW = 13;
  SMTP_SERVICE_STARTED = 14;
  SMTP_SERVICE_FAILED_TO_START = 15;
  SMTP_RECIPIENT_ACCEPTED_ENCRYPTED = 16;
  SMTP_RECIPIENT_ACCEPTED_UNENCRYPTED = 17;
  SMTP_RECIPIENT_REJECTED = 18;
  SMTP_START_ENCRYPT_AND_SIGN = 19;
  SMTP_END_ENCRYPT_AND_SIGN = 20;
  SMTP_START_SIGN = 21;
  SMTP_END_SIGN = 22;
  SMTP_SEND_MESSAGE_START = 23;
  SMTP_SEND_MESSAGE_SUCCESS = 24;
  SMTP_SEND_MESSAGE_ERROR = 25;
  SMTP_CONNECTION_LOST = 26;
  IMAP_SERVICE_STARTED = 30;
  IMAP_SERVICE_FAILED_TO_START = 31;
  IMAP_CLIENT_LOGIN = 32;
  IMAP_FETCHED_INCOMING = 33;
  IMAP_MSG_PROCESSING = 34;
  IMAP_MSG_DECRYPTED = 35;
  IMAP_MSG_SAVED_LOCALLY = 36;
  IMAP_MSG_DELETED_INCOMING = 37;
  IMAP_UNHANDLED_ERROR = 38;
  IMAP_UNREAD_MAIL = 39;
  KEYMANAGER_LOOKING_FOR_KEY = 40;
  KEYMANAGER_KEY_FOUND = 41;
  KEYMANAGER_KEY_NOT_FOUND = 42;
  KEYMANAGER_STARTED_KEY_GENERATION = 43;
  KEYMANAGER_FINISHED_KEY_GENERATION = 44;
  KEYMANAGER_DONE_UPLOADING_KEYS = 45;
  SOLEDAD_INVALID_AUTH_TOKEN = 46;
}


// A SignalRequest is the type of the message sent from one component to request
// that a signal be sent to every registered component.

message SignalRequest {
  required Event event = 1;
  required string content = 2;
  required string mac_method = 3;
  required bytes mac = 4;
  optional string enc_method = 5;
  optional bool error_occurred = 6;
}


// A RegisterRequest message tells the server that a component wants to
// be signaled whenever a specific event occurs.

message RegisterRequest {
  required Event event = 1;
  required int32 port = 2;
  required string mac_method = 3;
  required bytes mac = 4;
}


// An UnregisterRequest message tells the server that a component does not
// want to be signaled when a specific event occurs.

message UnregisterRequest {
  required Event event = 1;
  required int32 port = 2;
  required string mac_method = 3;
  required bytes mac = 4;
}


// A PingRequest message is used to find out if a server or component is
// alive.

message PingRequest {
}


// The EventResponse is the message sent back by server and components after
// they receive other kinds of requests.

message EventResponse {

  enum Status {
    OK = 1;
    UNAUTH = 2;
    ERROR = 3;
  }

  required Status status = 1;
  optional string result = 2;
}


// The EventsServerService is the service provided by the server.

service EventsServerService {
  rpc ping(PingRequest) returns (EventResponse);
  rpc register(RegisterRequest) returns (EventResponse);
  rpc unregister(UnregisterRequest) returns (EventResponse);
  rpc signal(SignalRequest) returns (EventResponse);
}


// EventsComponentService is the service provided by components (clients).

service EventsClientService {
  rpc ping(PingRequest) returns (EventResponse);
  rpc signal(SignalRequest) returns (EventResponse);
}