Proto commits in mumble-voip/mumble

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:d274b73
Author:Robert Adam
Committer:Robert Adam

FEAT(server): Allow running while DB is in read-only mode Note that the server's feature set is reduced to the absolute minimum and most requests to the server will simply be dropped. Only users that have already been on the server when it entered this mode will be able to stay on the server and keep talking to each other. No new connections will be accepted and nobody can move channels or perform any other noteworthy actions (except writing text messages, which will still work). This mode is explicitly meant to be used only for short periods of time that might be needed to perform a database backup etc.

The documentation is generated from this commit.

Commit:d52928a
Author:Hartmnt
Committer:Hartmnt

FEAT(server, client): Add rolling connection quality stats Previously, only the total packet statistics since the user had connected were tracked. While a good start, these stats are not really helping to understand sudden connection problems. This commit adds additional server-side rolling packet stats which are updated every few seconds/minutes. These new stats are sent using additional fields in the UserStats protocol message and rendered in the UserInformation dialog in the client. Closes #5872

Commit:330c356
Author:Robert Adam

MAINT: Remove copyright year from all copyright notices Keeping these up-to-date is just super tedious and they don't really fulfill any purpose these days.

Commit:8d65b12
Author:Robert Adam
Committer:Robert Adam

MAINT: Update copyright headers to 2023 (cherry picked from commit 249d2c6298cbce059a619dd32b1fde6131ab022f) # Conflicts: # src/mumble/AudioOutputToken.h

Commit:249d2c6
Author:Robert Adam

MAINT: Update copyright headers to 2023

Commit:68c31e5
Author:Martin Varga
Committer:Robert Adam

FEAT(server): Flag bot connections This commit introduces a new flag that connecting clients can use to tell the server they are connecting to that they consider themselves bot clients. This information can then be used (as is the case for the official server implementation) to e.g. correct the reported user count on the server to only include "real" clients - aka: no bots. Fixes #5461

Commit:3f4b00a
Author:Robert Adam
Committer:Robert Adam

FEAT: Make channel listeners persistent on server For registered users, the server will now remember their channel listeners (and their volume adjustments) and will restore them once the user rejoins this server.

Commit:79a2024
Author:Hartmnt
Committer:Robert Adam

FIX(client, server): Fix patch versions > 255 Previously, the Mumble version was encoded with a uint32 in the network protocol reserving 2 bytes for the major component and 1 byte for each minor and patch. The versioning format was changed to include a build number in the patch field. With a recent update (1.4.274) the patch field exceeded 255 for the first time and broke the protocol version. This commit completely reworks how the version is stored internally and transfered with the network protocol. The new version is a uint64 and consists of 4 fields with 2 bytes each. This allows each version component to reach up to 65535. Furthermore, all instances of integer version types have been replaced with the alias Version::full_t for a better abstraction. Version literals have been replaced by Version::fromComponents calls. Fixes #5827

Commit:79762ce
Author:Hartmnt
Committer:Hartmnt

FIX(client, server): Fix patch versions > 255 Previously, the Mumble version was encoded with a uint32 in the network protocol reserving 2 bytes for the major component and 1 byte for each minor and patch. The versioning format was changed to include a build number in the patch field. With a recent update (1.4.274) the patch field exceeded 255 for the first time and broke the protocol version. This commit completely reworks how the version is stored internally and transfered with the network protocol. The new version is a uint64 and consists of 4 fields with 2 bytes each. This allows each version component to reach up to 65535. Furthermore, all instances of integer version types have been replaced with the alias Version::full_t for a better abstraction. Version literals have been replaced by Version::fromComponents calls. Fixes #5827

Commit:1d45d99
Author:Robert Adam
Committer:Robert Adam

CHANGE: Use Protobuf for UDP messages Previously Mumble was using a custom binary format for transmitting data via UDP (mainly audio). This has worked for a long time but besides being inconvenient for 3rdParty implementors (they had to manually re-implement encoding and decoding support for this format) this format was not very flexible and changes to the data format were very hard. In order to improve on this situation, this commit introduces changes that allow to use Protobuf for the UDP messages as well (it's already used for TCP). With that it should be relatively easy to extend/change the UDP packet formats in the future and 3rdParty implementors can now simply use Protobuf to handle decoding/encoding packets for them (much less work and much less prone to errors). Since the new Protobuf format is incompatible with the old UDP format, this commit also includes support for dealing with older clients or servers that don't recognize the new protocol yet. That way the new protocol format is only used if both the client and the server are recent enough to have it implemented (assumed to be the case >=1.5.0). Note also that the server will make sure that clients using the old and the new format can seamlessly communicate with one another. Therefore, on the surface it should not be noticeable to the user which protocol is currently used. Note also that the new protocol format only supports Opus as an audio codec. If one of the legacy codecs is to be used, the legacy packet format has to be used as well. However, all codecs except for Opus will be removed from Mumble in the future anyway. Fixes #4350

Commit:b3dd3d3
Author:Robert Adam
Committer:Robert Adam

CHANGE(server): Remove gRPC implementation The gRPC implementation never left the experimental state and never reached a properly stable state to the point where we would feel good about enabling it by default. In addition to that, there has been no further attempts at finding and fixing the encountered issues in the implementation (except #3947 but that was discontinued). As such we had an essentially unmaintained piece of code in our server implementation that was known to be buggy and that nobody wanted to fix. In addition to that the implementation itself could not be considered very clean or elegant and therefore only represented a few smelly corners in our code base. For this reason, we decided to remove the gRPC support entirely from Mumble (for now). What we hope to gain by that is: - Prevent people from building unstable server versions and then coming to us complaining that it crashed/misbehaved - Removing (essentially) dead code - Reduce the RPC implementation complexity That last piece is crucial: By removing gRPC support we reduce the amount of supported RPC frameworks to only one (ignoring DBus for now). Our future plans include a refactoring of how RPC is being handled and implemented and only having to worry about maintaining compatibility with one RPC system is much easier than having to worry about two (with (slightly) different APIs). Once the RPC implementation has been rewritten, more RPC backends may be reintroduced and in that process we might investigate adding a proper gRPC implementation to the code (that then hopefully is more stable than the current one). Fixes #4567 Fixes #4197 Fixes #3496 Fixes #3429 Fixes #3265

Commit:d100ff1
Author:Robert Adam

MAINT: Update copyright to 2022

Commit:8d857e8
Author:Robert Adam
Committer:Robert Adam

FEAT(server): Add option to disallow recording This commit adds a new server-configuration that can be used in the murmur.ini file. It can be used to forbid anyone on the server from using Mumble's built-in recording functionality. Any client trying to start a recording nonetheless, will be kicked from the server. From Mumble 1.5.0 clients will know about this configuration and will disable the recording action in the UI, if recording is not allowed on the server.

Commit:c1af828
Author:Robert Adam

DOCS: Add note to Mumble.proto The datatype used for permissions in proto messages is inconsistent. In 2 of 3 message types it is uint32 but in erverSync it is uint64. We can't change that anymore but this commit adds a note about it into the proto file. Ref: #5139

Commit:27dbee8
Author:Robert Adam
Committer:Robert Adam

FEAT(client): Plugin framework This commit introduces a new plugin framework into the codebase of the Mumble client. Note that "plugin" here really refers to a (more or less) general purpose plugin and is therefore not to be confused with the previously available positional data plugins (only responsible for fetching positional data from a running game and passing that to Mumble). The plugin interface is written in C, removing the compiler-dependence the old "plugins" had. Instead plugins can now be written in an arbitrary language as long as that language is capable of being compiled into a shared library and also being capable of being C-compatible. As already indicated a plugin is essentially a shared library that provides certain functions that allow Mumble to interface with it. Inside Mumble the so-called PluginManager is responsible for managing the plugins and relaying events to the respective callbacks. Plugins themselves can also interact with Mumble on their own initiative by using the provided API functions. Fixes #2455 Fixes #2148 Fixes #1594 Fixes #2051 Fixes #3742 Fixes #4575 Fixes #4751

Commit:59ae429
Author:Robert Adam
Committer:Robert Adam

MAINT: Update copyright notice to 2021 This was done by running scripts/updateLicenseHeaders.py and then manually editing the LICENSE file.

Commit:9889a0f
Author:freddii

DOCS: fixed typos

Commit:42271b1
Author:Arkadiusz Ryś
Committer:Arkadiusz Ryś

DOCS: Fix typos in Mumble.proto

Commit:5735f29
Author:Jabasukuriputo Wang
Committer:wfjsw

src/Mumble.proto: Documention on ContextActionModify closes #4115

Commit:8aadee9
Author:Robert Adam
Committer:Robert Adam

Feature: Channel Listeners This implements #3319 by allowing users to "listen" to a channel they have not joined. Doing so will place a "listener proxy" (in other software this is sometimes known as a "phantom") in that channel which will look like a normal user except that it'll have the same name as the user listening to that channel and an ear-icon instead of the normal avatar-icon. It will also always show a muted-icon next to it. If a listener proxy is in a channel, the server will route all audio packets from that channel to the user the proxy belongs to (as if that user was in the channel). Note though that the opposite of this is not true: The users in the channel will not hear audio from the listening user unless that user decides to join the channel. Furthermore it is possible to set a local volume adjustment for each individual proxy that will be applied to all audio that is received through it.

Commit:5a4f529
Author:Robert Adam
Committer:GitHub

Merge pull request #3929: Improve channel password handling

Commit:69fe7c6
Author:Robert Adam
Committer:Robert Adam

Protocol: Added fields 'is_enter_restricted' and 'can_enter' to the ChannelState message in order for the protocol to be able to tell clients about which channels they will be able to enter

Commit:8473565
Author:Robert Adam
Committer:GitHub

Merge pull request #3978: Fixups for #3927

Commit:4d1f98b
Author:Robert Adam

Mumble.proto: Fixed comment formatting

Commit:8bb5caf
Author:Robert Adam
Committer:GitHub

Merge PR #3927: Added support for temporary access tokens

Commit:4e67a2f
Author:Davide Beatrici

Auto-update LICENSE.header in source files

Commit:1c38b53
Author:Robert Adam

AccessTokens: Added support for temporary access tokens in the UserState message

Commit:b427333
Author:Davide Beatrici
Committer:Davide Beatrici

Auto-update LICENSE.header in source files

Commit:9e0526c
Author:Stefan Hacker
Committer:Stefan Hacker

Introduce channelcountlimit to limit max channels per server Having to many channels on a server can impact performance to the point of making the instance unusably slow. This can be a problem for hosters that allow their users unlimited channel creation. This patch introduces a new per-server configuration parameter channelcountlimit which can be used to configure a maximum number of channels that may be created on each of the virtual servers. Once the limit is reached channel creation will be rejected with permission denied. To allow a translated error message we have to bump the client version to 1.3.1 to be able to use a fallback message for older clients. As usual dbus, ice and grpc can ignore this limit. It is only enforced against clients.

Commit:f6ba3a5
Author:Mikkel Krautz

Auto-update LICENSE.header in source files.

Commit:4e6d3bf
Author:Mikkel Krautz

Mumble.proto: explicitly use proto2 syntax. The protoc compiler in protobuf 3.x.y complains (warns) about Mumble.proto not explicitly specifying a syntax. This commit fixes that. The syntax=XXX declaration is mentioned in language spec for proto 2, so this should still work for protobuf 2.6, etc. See https://developers.google.com/protocol-buffers/docs/reference/proto2-spec

Commit:91ebb8b
Author:Mikkel Krautz

Update tree copyrights to 2017.

Commit:395c084
Author:Mikkel Krautz
Committer:Mikkel Krautz

src: update to use LICENSE.header.

Commit:54c28d3
Author:Mikkel Krautz
Committer:Mikkel Krautz

src/murmur: update to use LICENSE.header.

Commit:412c0d1
Author:Tim Cooper
Committer:Stefan Hacker

Document undocumented fields in Mumble.proto (#2261) Fixes #1990

Commit:8d46083
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: do renames and add notes to MurmurRPC.proto

Commit:4c54bb2
Author:Mikkel Krautz
Committer:Mikkel Krautz

grpc: update license headers to use the new-style header.

Commit:acfa8e8
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: update docs

Commit:9b84646
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: change Server.uptime to Update from uint32

Commit:17498d1
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: fix ServerService.Get for stopped servers

Commit:11eefc0
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: remove proto field Authenticator.Response.Initialize.updating

Commit:a5cbcfa
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: add Find message to Authenticator

Commit:ac2418f
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: start AuthenticatorService.Stream implementation

Commit:5c071f0
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: change AuthenticatorService to a (hopefully) easier to use API

Commit:28e6041
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ACLService.Get

Commit:57dc921
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ACLService.Set

Commit:7f537d3
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ConfigService.GetDefaults

Commit:9b6eaed
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ConfigService.Get

Commit:ba30ef1
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ConfigService.SetField

Commit:729fad4
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ConfigService.GetField

Commit:51b5050
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: replace individual Config fields in favour of a map<string, string>

Commit:59340c3
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ACLService.GetEffectivePermissions

Commit:24e9400
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ACLService.RemoveTemporaryGroup

Commit:cf77593
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ACLService.AddTemporaryGroup

Commit:e279bef
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: start ServerService.Events implementation

Commit:95d4ab4
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement AudioService.SetRedirectWhisperGroup

Commit:e9ec7d7
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement LogService.Query

Commit:12e70ed
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement BanService.Set

Commit:62a627e
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement BanService.Get

Commit:b5afebe
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement MetaService.Events

Commit:f8677db
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement DatabaseService.Query

Commit:3fdd054
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement DatabaseService.Verify

Commit:3b44029
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement DatabaseService.Deregister

Commit:9d0899e
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement DatabaseService.Register

Commit:dee4fbd
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement DatabaseService.Update

Commit:cb85565
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement DatabaseService.Get

Commit:3f9d0a9
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ServerService.Query.

Commit:d5e8ef3
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement UserService.Query

Commit:48f9b00
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ChannelService.Query.

Commit:45f90c0
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement TreeService.Get.

Commit:a8d772a
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement targeting of TextMessageService.Send messages

Commit:c748dbb
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement UserService.Update

Commit:9269ab9
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ServerService.Start

Commit:0462dff
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ServerService.Remove

Commit:3b9bf4f
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement (rough) ContextActionService.Events

Commit:b6aca49
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implemented streaming generator, temporary removed certain streaming RPC methods

Commit:d711b8c
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ServerService.Get

Commit:f952591
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ServerService.Stop

Commit:a3c80ad
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ServerService.Create

Commit:fb97e5e
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ContextActionService.Remove

Commit:b929b2d
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ContextActionService.Add

Commit:0041ab3
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: switch to async grpc API, change naming of service methods

Commit:d681631
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ChannelService.add

Commit:08971f3
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ChannelService.remove

Commit:ab3c520
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ChannelService.update

Commit:bb86b3a
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement ChannelService.get

Commit:f68b35d
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement UserService.kick

Commit:418ff98
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement UserService.query

Commit:2c0b3dc
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: start UserService, implement UserService::get

Commit:5a7536c
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: add broadcasting to TextMessageService.send

Commit:776c084
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: start implementation

Commit:7b0bb82
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: switch to proto2 from proto3 proto3 does not support empty fields, which is at odds with how the current Mumble protocol operates

Commit:375d0ae
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: add first MurmurRPC protobuf draft

Commit:3960228
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: add empty MurmurRPC.proto file

Commit:4a56a24
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: add User.Kick.actor

Commit:9bd982c
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: add TextMessageFilter method comment

Commit:805c047
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: implement TextMessageFilter

Commit:6c68dec
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: only allow users to trigger explicitly added context actions

Commit:92320bf
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: add comment about incomplete embedded protobuf messages

Commit:8401b51
Author:Tim Cooper
Committer:Mikkel Krautz

grpc: document more of the RPC protocol