Update mumble proto to latest version.
This commit is contained in:
parent
429e1a54f7
commit
38f4805660
35
Mumble.proto
35
Mumble.proto
@ -1,3 +1,10 @@
|
|||||||
|
// Copyright 2005-2018 The Mumble Developers. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license
|
||||||
|
// that can be found in the LICENSE file at the root of the
|
||||||
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
|
syntax = "proto2";
|
||||||
|
|
||||||
package MumbleProto;
|
package MumbleProto;
|
||||||
|
|
||||||
option optimize_for = SPEED;
|
option optimize_for = SPEED;
|
||||||
@ -63,7 +70,8 @@ message Ping {
|
|||||||
// Sent by the server when it rejects the user connection.
|
// Sent by the server when it rejects the user connection.
|
||||||
message Reject {
|
message Reject {
|
||||||
enum RejectType {
|
enum RejectType {
|
||||||
// TODO ??
|
// The rejection reason is unknown (details should be available
|
||||||
|
// in Reject.reason).
|
||||||
None = 0;
|
None = 0;
|
||||||
// The client attempted to connect with an incompatible version.
|
// The client attempted to connect with an incompatible version.
|
||||||
WrongVersion = 1;
|
WrongVersion = 1;
|
||||||
@ -98,7 +106,7 @@ message ServerSync {
|
|||||||
optional uint32 max_bandwidth = 2;
|
optional uint32 max_bandwidth = 2;
|
||||||
// Server welcome text.
|
// Server welcome text.
|
||||||
optional string welcome_text = 3;
|
optional string welcome_text = 3;
|
||||||
// Current user permissions TODO: Confirm??
|
// Current user permissions in the root channel.
|
||||||
optional uint64 permissions = 4;
|
optional uint64 permissions = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,6 +142,10 @@ message ChannelState {
|
|||||||
optional int32 position = 9 [default = 0];
|
optional int32 position = 9 [default = 0];
|
||||||
// SHA1 hash of the description if the description is 128 bytes or more.
|
// SHA1 hash of the description if the description is 128 bytes or more.
|
||||||
optional bytes description_hash = 10;
|
optional bytes description_hash = 10;
|
||||||
|
// Maximum number of users allowed in the channel. If this value is zero,
|
||||||
|
// the maximum number of users allowed in the channel is given by the
|
||||||
|
// server's "usersperchannel" setting.
|
||||||
|
optional uint32 max_users = 11;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used to communicate user leaving or being kicked. May be sent by the client
|
// Used to communicate user leaving or being kicked. May be sent by the client
|
||||||
@ -180,9 +192,14 @@ message UserState {
|
|||||||
optional bool self_deaf = 10;
|
optional bool self_deaf = 10;
|
||||||
// User image if it is less than 128 bytes.
|
// User image if it is less than 128 bytes.
|
||||||
optional bytes texture = 11;
|
optional bytes texture = 11;
|
||||||
// TODO ??
|
// The positional audio plugin identifier.
|
||||||
|
// Positional audio information is only sent to users who share
|
||||||
|
// identical plugin contexts.
|
||||||
|
//
|
||||||
|
// This value is not trasmitted to clients.
|
||||||
optional bytes plugin_context = 12;
|
optional bytes plugin_context = 12;
|
||||||
// TODO ??
|
// The user's plugin-specific identity.
|
||||||
|
// This value is not transmitted to clients.
|
||||||
optional string plugin_identity = 13;
|
optional string plugin_identity = 13;
|
||||||
// User comment if it is less than 128 bytes.
|
// User comment if it is less than 128 bytes.
|
||||||
optional string comment = 14;
|
optional string comment = 14;
|
||||||
@ -209,7 +226,7 @@ message BanList {
|
|||||||
required uint32 mask = 2;
|
required uint32 mask = 2;
|
||||||
// User name for identification purposes (does not affect the ban).
|
// User name for identification purposes (does not affect the ban).
|
||||||
optional string name = 3;
|
optional string name = 3;
|
||||||
// TODO ??
|
// The certificate hash of the banned user.
|
||||||
optional string hash = 4;
|
optional string hash = 4;
|
||||||
// Reason for the ban (does not affect the ban).
|
// Reason for the ban (does not affect the ban).
|
||||||
optional string reason = 5;
|
optional string reason = 5;
|
||||||
@ -403,9 +420,9 @@ message VoiceTarget {
|
|||||||
message Target {
|
message Target {
|
||||||
// Users that are included as targets.
|
// Users that are included as targets.
|
||||||
repeated uint32 session = 1;
|
repeated uint32 session = 1;
|
||||||
// Channels that are included as targets.
|
// Channel that is included as a target.
|
||||||
optional uint32 channel_id = 2;
|
optional uint32 channel_id = 2;
|
||||||
// TODO ??
|
// ACL group that is included as a target.
|
||||||
optional string group = 3;
|
optional string group = 3;
|
||||||
// True if the voice should follow links from the specified channel.
|
// True if the voice should follow links from the specified channel.
|
||||||
optional bool links = 4 [default = false];
|
optional bool links = 4 [default = false];
|
||||||
@ -529,6 +546,8 @@ message ServerConfig {
|
|||||||
optional uint32 message_length = 4;
|
optional uint32 message_length = 4;
|
||||||
// Maximum image message length.
|
// Maximum image message length.
|
||||||
optional uint32 image_message_length = 5;
|
optional uint32 image_message_length = 5;
|
||||||
|
// The maximum number of users allowed on the server.
|
||||||
|
optional uint32 max_users = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sent by the server to inform the clients of suggested client configuration
|
// Sent by the server to inform the clients of suggested client configuration
|
||||||
@ -541,4 +560,4 @@ message SuggestConfig {
|
|||||||
optional bool positional = 2;
|
optional bool positional = 2;
|
||||||
// True if the administrator suggests push to talk to be used on this server.
|
// True if the administrator suggests push to talk to be used on this server.
|
||||||
optional bool push_to_talk = 3;
|
optional bool push_to_talk = 3;
|
||||||
}
|
}
|
@ -48,8 +48,6 @@ namespace mumlib {
|
|||||||
|
|
||||||
void disconnect();
|
void disconnect();
|
||||||
|
|
||||||
void reconnect();
|
|
||||||
|
|
||||||
void run();
|
void run();
|
||||||
|
|
||||||
ConnectionState getConnectionState();
|
ConnectionState getConnectionState();
|
||||||
|
@ -50,8 +50,6 @@ namespace mumlib {
|
|||||||
|
|
||||||
void disconnect();
|
void disconnect();
|
||||||
|
|
||||||
void reconnect();
|
|
||||||
|
|
||||||
ConnectionState getConnectionState() {
|
ConnectionState getConnectionState() {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,6 @@ void mumlib::Transport::connect(
|
|||||||
|
|
||||||
void mumlib::Transport::disconnect() {
|
void mumlib::Transport::disconnect() {
|
||||||
|
|
||||||
pingTimer.cancel();
|
|
||||||
if (state != ConnectionState::NOT_CONNECTED) {
|
if (state != ConnectionState::NOT_CONNECTED) {
|
||||||
boost::system::error_code errorCode;
|
boost::system::error_code errorCode;
|
||||||
|
|
||||||
@ -120,16 +119,6 @@ void mumlib::Transport::disconnect() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mumlib::Transport::reconnect() {
|
|
||||||
boost::system::error_code errorCode;
|
|
||||||
|
|
||||||
udpSocket.close(errorCode);
|
|
||||||
if (errorCode) {
|
|
||||||
logger.warn("SSL socket close return an error: %s.", errorCode.message().c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void mumlib::Transport::sendVersion() {
|
void mumlib::Transport::sendVersion() {
|
||||||
MumbleProto::Version version;
|
MumbleProto::Version version;
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
|
#include <boost/uuid/sha1.hpp>
|
||||||
#include <log4cpp/Category.hh>
|
#include <log4cpp/Category.hh>
|
||||||
|
|
||||||
#include <Mumble.pb.h>
|
#include <Mumble.pb.h>
|
||||||
@ -201,6 +202,9 @@ namespace mumlib {
|
|||||||
int32_t priority_speaker = userState.has_priority_speaker() ? userState.priority_speaker() : -1;
|
int32_t priority_speaker = userState.has_priority_speaker() ? userState.priority_speaker() : -1;
|
||||||
int32_t recording = userState.has_recording() ? userState.recording() : -1;
|
int32_t recording = userState.has_recording() ? userState.recording() : -1;
|
||||||
|
|
||||||
|
if(session == this->sessionId) {
|
||||||
|
this->channelId = channel_id;
|
||||||
|
}
|
||||||
callback.userState(session,
|
callback.userState(session,
|
||||||
actor,
|
actor,
|
||||||
userState.name(),
|
userState.name(),
|
||||||
@ -381,15 +385,6 @@ namespace mumlib {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mumlib::reconnect() {
|
|
||||||
if (not impl->externalIoService) {
|
|
||||||
impl->ioService.reset();
|
|
||||||
}
|
|
||||||
if (impl->transport.getConnectionState() != ConnectionState::NOT_CONNECTED) {
|
|
||||||
impl->transport.disconnect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Mumlib::run() {
|
void Mumlib::run() {
|
||||||
if (impl->externalIoService) {
|
if (impl->externalIoService) {
|
||||||
throw MumlibException("can't call run() when using external io_service");
|
throw MumlibException("can't call run() when using external io_service");
|
||||||
@ -473,8 +468,23 @@ namespace mumlib {
|
|||||||
|
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case UserState::COMMENT:
|
case UserState::COMMENT:
|
||||||
// TODO: if comment longer than 128 bytes, we need to set the SHA1 hash
|
|
||||||
userState.set_comment(val);
|
if(val.size() < 128) {
|
||||||
|
userState.set_comment(val);
|
||||||
|
} else {
|
||||||
|
// if comment longer than 128 bytes, we need to set the SHA1 hash
|
||||||
|
boost::uuids::detail::sha1 sha1;
|
||||||
|
uint hash[5];
|
||||||
|
sha1.process_bytes(val.c_str(), val.size());
|
||||||
|
sha1.get_digest(hash);
|
||||||
|
|
||||||
|
std::stringstream valStream;
|
||||||
|
for(std::size_t i=0; i<sizeof(hash)/sizeof(hash[0]); ++i) {
|
||||||
|
valStream << std::hex << hash[i];
|
||||||
|
}
|
||||||
|
userState.set_comment_hash(valStream.str());
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// in any other case, just ignore the command
|
// in any other case, just ignore the command
|
||||||
|
Loading…
Reference in New Issue
Block a user