summaryrefslogtreecommitdiff
path: root/src/mumble.proto
blob: 33ee20ea593a8ef946965e552648c1b11ad35920 (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
/* NOTE: Do not replace this file directly with future mumble.proto.
	 We derive the message id from the position in this file. */

package MumbleProto;

option optimize_for = SPEED;

message	Version {
	optional uint32 version = 1;
	optional string release = 2;
	optional string os = 3;
	optional string os_version = 4;
}

message UDPTunnel {
	required bytes packet = 1;
}

message Authenticate {
	optional string username = 1;
	optional string password = 2;
	repeated string tokens = 3;
	repeated int32 celt_versions = 4;
}

message Ping {
	optional uint64 timestamp = 1;
	optional uint32 good = 2;
	optional uint32 late = 3;
	optional uint32 lost = 4;
	optional uint32 resync = 5;
	optional uint32 udp_packets = 6;
	optional uint32 tcp_packets = 7;
	optional float udp_ping_avg = 8;
	optional float udp_ping_var = 9;
	optional float tcp_ping_avg = 10;
	optional float tcp_ping_var = 11;
}

message Reject {
	enum RejectType {
		None = 0;
		WrongVersion = 1;
		InvalidUsername = 2;
		WrongUserPW = 3;
		WrongServerPW = 4;
		UsernameInUse = 5;
		ServerFull = 6;
		NoCertificate = 7;
	}
	optional RejectType type = 1;
	optional string reason = 2;
}

message ServerSync {
	optional uint32 session = 1;
	optional uint32 max_bandwidth = 2;
	optional string welcome_text = 3;
	optional uint64 permissions = 4;
}

message ChannelRemove {
	required uint32 channel_id = 1;
}

message ChannelState {
	optional uint32 channel_id = 1;
	optional uint32 parent = 2;
	optional string name = 3;
	repeated uint32 links = 4;
	optional string description = 5;
	repeated uint32 links_add = 6;
	repeated uint32 links_remove = 7;
	optional bool temporary = 8 [default = false];
	optional int32 position = 9 [default = 0];
	optional bytes description_hash = 10;
}

message UserRemove {
	required uint32 session = 1;
	optional uint32 actor = 2;
	optional string reason = 3;
	optional bool ban = 4;
}

message UserState {
	optional uint32 session = 1;
	optional uint32 actor = 2;
	optional string name = 3;
	optional uint32 user_id = 4;
	optional uint32 channel_id = 5;
	optional bool mute = 6;
	optional bool deaf = 7;
	optional bool suppress = 8;
	optional bool self_mute = 9;
	optional bool self_deaf = 10;
	optional bytes texture = 11;
	optional bytes plugin_context = 12;
	optional string plugin_identity = 13;
	optional string comment = 14;
	optional string hash = 15;
	optional bytes comment_hash = 16;
	optional bytes texture_hash = 17;
	optional bool priority_speaker = 18;
	optional bool recording = 19;
}

message BanList {
	message BanEntry {
		required bytes address = 1;
		required uint32 mask = 2;
		optional string name = 3;
		optional string hash = 4;
		optional string reason = 5;
		optional string start = 6;
		optional uint32 duration = 7;
	}
	repeated BanEntry bans = 1;
	optional bool query = 2 [default = false];
}

message TextMessage {
	optional uint32 actor = 1;
	repeated uint32 session = 2;
	repeated uint32 channel_id = 3;
	repeated uint32 tree_id = 4;
	required string message = 5;
}

message PermissionDenied {
	enum DenyType {
		Text = 0;
		Permission = 1;
		SuperUser = 2;
		ChannelName = 3;
		TextTooLong = 4;
		H9K = 5;
		TemporaryChannel = 6;
		MissingCertificate = 7;
		UserName = 8;
		ChannelFull = 9;
	}
	optional uint32 permission = 1;
	optional uint32 channel_id = 2;
	optional uint32 session = 3;
	optional string reason = 4;
	optional DenyType type = 5;
	optional string name = 6;
}

message ACL {
	message ChanGroup {
		required string name = 1;
		optional bool inherited = 2 [default = true];
		optional bool inherit = 3 [default = true];
		optional bool inheritable = 4 [default = true];
		repeated uint32 add = 5;
		repeated uint32 remove = 6;
		repeated uint32 inherited_members = 7;
	}
	message ChanACL {
		optional bool apply_here = 1 [default = true];
		optional bool apply_subs = 2 [default = true];
		optional bool inherited = 3 [default = true];
		optional uint32 user_id = 4;
		optional string group = 5;
		optional uint32 grant = 6;
		optional uint32 deny = 7;
	}
	required uint32 channel_id = 1;
	optional bool inherit_acls = 2 [default = true];
	repeated ChanGroup groups = 3;
	repeated ChanACL acls = 4;
	optional bool query = 5 [default = false];
}

message QueryUsers {
	repeated uint32 ids = 1;
	repeated string names = 2;
}

message CryptSetup {
	optional bytes key = 1;
	optional bytes client_nonce = 2;
	optional bytes server_nonce = 3;
}

message ContextActionModify {
	enum Context {
		Server = 0x01;
		Channel = 0x02;
		User = 0x04;
	}
	enum Operation {
		Add = 0;
		Remove = 1;
	}
	required string action = 1;
	optional string text = 2;
	optional uint32 context = 3;
	optional Operation operation = 4;
}

message ContextAction {
	optional uint32 session = 1;
	optional uint32 channel_id = 2;
	required string action = 3;
}

message UserList {
	message User {
		required uint32 user_id = 1;
		optional string name = 2;
	}
	repeated User users = 1;
}

message VoiceTarget {
	message Target {
		repeated uint32 session = 1;
		optional uint32 channel_id = 2;
		optional string group = 3;
		optional bool links = 4 [default = false];
		optional bool children = 5 [default = false];
	}
	optional uint32 id = 1;
	repeated Target targets = 2;
}

message PermissionQuery {
	optional uint32 channel_id = 1;
	optional uint32 permissions = 2;
	optional bool flush = 3 [default = false];
}

message CodecVersion {
	required int32 alpha = 1;
	required int32 beta = 2;
	required bool prefer_alpha = 3 [default = true];
}

message UserStats {
	message Stats {
		optional uint32 good = 1;
		optional uint32 late = 2;
		optional uint32 lost = 3;
		optional uint32 resync = 4;
	}

	optional uint32 session = 1;
	optional bool stats_only = 2 [default = false];
	repeated bytes certificates = 3;
	optional Stats from_client = 4;
	optional Stats from_server = 5;

	optional uint32 udp_packets = 6;
	optional uint32 tcp_packets = 7;
	optional float udp_ping_avg = 8;
	optional float udp_ping_var = 9;
	optional float tcp_ping_avg = 10;
	optional float tcp_ping_var = 11;

	optional Version version = 12;
	repeated int32 celt_versions = 13;
	optional bytes address = 14;
	optional uint32 bandwidth = 15;
	optional uint32 onlinesecs = 16;
	optional uint32 idlesecs = 17;
	optional bool strong_certificate = 18 [default = false];
}

message RequestBlob {
	repeated uint32 session_texture = 1;
	repeated uint32 session_comment = 2;
	repeated uint32 channel_description = 3;
}

message ServerConfig {
	optional uint32 max_bandwidth = 1;
	optional string welcome_text = 2;
	optional bool allow_html = 3;
	optional uint32 message_length = 4;
	optional uint32 image_message_length = 5;
}

message SuggestConfig {
	optional uint32 version = 1;
	optional bool positional = 2;
	optional bool push_to_talk = 3;
}