Commit Graph

655 Commits

Author SHA1 Message Date
Davide Beatrici
32c8de9d83 MAINT(vcpkg): Install protobuf
It probably used to be a dependency of at least another package we install.
2022-05-11 00:40:58 +02:00
Davide Beatrici
f999081ab8 MAINT(vcpkg): Install Qt's MySQL and PostgreSQL plugins
Otherwise the backends are not available.
2022-04-28 00:36:56 +02:00
Nik Reist
4a533fa64e MAINT(build): Modify helper folder and scripts to use custom zeroc-ice port 2022-04-15 08:29:24 -04:00
Robert Adam
74faaba32e
Merge PR #5594: 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

NOTE: When this gets merged, all clients and servers claiming to support the protocol version 1.5.0 that do not include these changes, will become incompatible with the ones that do integrate these changes. This is important for everyone closely following our upstream master branch. A simple update to the latest code changes (including the changes from this PR) should be enough to restore full compatibility.
All servers and clients of version < 1.5.0 will be not affected by this as this PR is completely backwards compatible with those clients.
2022-03-27 18:57:54 +02:00
Robert Adam
8500655d12 MAINT: Don't try to format files in build dirs
This speeds up the invocation of runClangFormat.sh dramatically.
2022-03-27 09:49:59 +02:00
Robert Adam
1017dab5c2 CHANGE(server): Enforce Opus by default
Previously the opusthreshold config option had a default value of 100
meaning that the first non-Opus client would cause everyone to fall back
to one of the legacy codecs.

Since Opus has been implemented for ages now and we eventually want to
get rid of the legacy codecs, this commit changes the default value of
this config option to be zero, meaning that the server will always
enforce the use of the Opus codec (regardless of what clients are
connected).
2022-03-27 09:49:59 +02:00
Robert Adam
677de63f98
Merge PR #5428: MAINT: Add script to sign macOS binaries and packages
ght now we are using osxdist.py to generate a DMG package from scratch.
The script also takes care of signing the content.

However, our mumble-releng repository has had a dedicated script called sign-dmg.py since 2013.
In fact, that's what we have always been using to sign the app bundle.

As we're planning to eventually ditch osxdist.py in favor of CPack's generator, we decided to complete sign-dmg.py.
The script now:

    Takes care of signing all binaries in the bundle in addition to it, effectively replacing osxdist.py.
    Supports single binaries, replacing sign-mach-o.py (which only called codesign() from sign-dmg.py).
    Supports PKG packages.
    Provides a --config option to specify the path to the configuration file. Default: $HOME/.sign_macOS.cfg.
    Provides a --entitlements option to specify the path to the plist file containing the requested capabilities.
    This is mandatory for notarization to succeed. More specifically, the --options runtime codesign parameter is.
    The parameter is not passed if this option is not used because it would cause Mumble to crash upon audio input use.

The name is changed to sign_macOS.py as the script does not only handle DMG packages anymore.
2022-03-26 15:00:16 +01:00
Robert Adam
b3dd3d3f79 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
2022-03-16 08:23:38 +01:00
Robert Adam
f2c8c9a2a6 CHANGE(client): Don't use hard-coded cipher info
PR #1825 introduced a hard-coded list of cipher information in order to
be able to display extended information about the encryption details of
a connection. Keeping this information up-to-date had to be done by
means of a dedicated python script.

The problem with this approach is that
a) hard-coding something like this is never a good idea
b) the updating has been forgotten in the last several years, leading to
outdated information
c) the update script is currently not working anymore

Additionally, the current code only used the extended information to
query the perfect forward secrecy support anyway and that has been
implemented in a different way in
de7b02fb3c3c8756377fd789006465bf2bd86ffd.

The only other thing we used the extended info for, was to obtain the
RFC name of ciphers, but since the list was outdated anyway, we nowadays
probably used the fallback (using the name provided by Qt) more often
than not.

Therefore the hard-coded information has been removed and we now simply
always stick to the cipher name as reported by Qt. If someone
desperately requires the RFC names, they'll have to take it up with Qt
to expose this name in their API as curating a hard-coded list in our
code base is not a viable option.
2022-02-14 08:09:08 +01:00
Felix Singer
b4fe92dee0 MAINT(manpages): Replace murmur with mumble-server
The name `murmur` is deprecated and shouldn't be used anymore, as
decided by the Mumble project. While the server binary already uses the
"new" name, the man pages don't. Thus, rework the man pages so that its
successor `mumble-server` instead `murmur` is used and rename the
filenames of the man pages accordingly.

Also, rename the script `murmur-user-wrapper` to
`mumble-server-user-wrapper`, since also its man page is renamed.

This does not affect the configuration file `murmur.ini`.

Signed-off-by: Felix Singer <felixsinger@posteo.net>
2022-02-07 08:32:23 +01:00
Robert Adam
535c2b5c83
Merge PR #5514: CI: scripts/runClangFormat.sh: Use git-ls-files(1)
Current problems:

    bash(1) is not always installed (by default), /bin/sh is
    (Open)BSD find(1) requires at least one path argument, i.e. . which GNU
    find(1) implies
    (Open)BSD find(1) does not support -ipath

git-ls-files(1) benefits:

    gitignore(5) files are honored
    simpler/more powerful patterns (see gitglossary(7) wrt. pathspec)
    runClangFormat.sh can be run from git subdirectories to only format
    selected files (explicitl passing files could be easil implemented)
    works on every system with git(1), no portability issues (see above)

The one "drawback" with git-ls-files(1) is requiring git(1) working tree
rather than a release tarball, but active development requries git
anyway, so that does not seem like a blocker.

Only run xargs(1) if files were listed (-r), since we can now run the
script from subdirectories without source code.
2022-02-06 18:35:27 +01:00
Klemens Nanni
16c94a4dd0 CI: scripts/runClangFormat.sh: Use git-ls-files(1)
Current problems:
- bash(1) is not always installed (by default), /bin/sh is
- (Open)BSD find(1) requires at least one path argument, i.e. `.` which GNU
  find(1) implies
- (Open)BSD find(1) does not support `-ipath`

git-ls-files(1) benefits:
- gitignore(5) files are honored
- simpler/more powerful patterns (see gitglossary(7) wrt. `pathspec`)
- `runClangFormat.sh` can be run from git subdirectories to only format
  selected files (explicitl passing files could be easil implemented)
- works on every system with git(1), no portability issues (see above)

The one "drawback" with git-ls-files(1) is requiring git(1) working tree
rather than a release tarball, but active development requries git
anyway, so that does not seem like a blocker.

Only run xargs(1) if files were listed (`-r`), since we can now run the
script from subdirectories without source code.

Avoid brace expansion (`'**/*'.{cpp,c,hpp,h,cxx,cc}`) to be compatible
with dash.
2022-01-25 11:19:19 +03:00
Robert Adam
d55bb99ce1
Merge PR #5458: MAINT: Remove AUTHORS & CHANGES files 2022-01-24 08:14:56 +01:00
Jonah Brüchert
36e6592603
FIX(client): Improve appstream metadata
This changes the appstream id to info.mumble.Mumble, which is correct in regards to the specification.

Fixes #5441
2022-01-19 19:23:28 +01:00
Robert Adam
e0890d5b04 MAINT: Remove CHANGES file
This file hasn't been updated in ages and is therefore removed.
Consequently the corresponding script is also removed.

The actual changes can be taken from the git commit history or (more
compact) in the changelogs published with out releases.
2022-01-18 12:14:40 +01:00
Robert Adam
1dcf678a68 MAINT: Remove AUTHORS file
This file is not used anymore, since GitHub has a dedicated tab of
listing all contributions. Therefore, we now remove the AUTHORS file in
favor of that.

As a consequence, we also remove the generate-AUTHORS.py script.
2022-01-18 12:12:41 +01:00
Davide Beatrici
e4c3959f36 MAINT: Add script to sign macOS binaries and packages
Right now we are using "osxdist.py" to generate a DMG package from scratch.
The script also takes care of signing the content.

However, our "mumble-releng" repository has had a dedicated script called "sign-dmg.py" since 2013.
In fact, that's what we have always been using to sign the app bundle.

As we're planning to eventually ditch "osxdist.py" in favor of CPack's generator, we decided to complete "sign-dmg.py".
The script now:

- Takes care of signing all binaries in the bundle in addition to it, effectively replacing "osxdist.py".
- Supports single binaries, replacing "sign-mach-o.py" (which only called codesign() from "sign-dmg.py").
- Supports PKG packages.
- Provides a "--config" option to specify the path to the configuration file. Default: "$HOME/.sign_macOS.cfg".
- Provides a "--entitlements" option to specify the path to the plist file containing the requested capabilities.
  This is mandatory for notarization to succeed. More specifically, the "--options runtime" codesign parameter is.
  The parameter is not passed if this option is not used because it would cause Mumble to crash upon audio input use.

The name is changed to "sign_macOS.py" as the script does not only handle DMG packages anymore.
2022-01-18 01:25:14 +01:00
pataquets
36fba0524c MAINT(docker): Set Docker Compose restart policy to 'unless-stopped'. 2022-01-17 13:41:13 +01:00
Robert Adam
c794aabd43 MAINT: Fix password use in build-number script
There were a few typos in the program's logic regarding the handling of
a provided password which rendered its use invalid.
2022-01-11 09:41:18 +01:00
Robert Adam
4f6c89b571 MAINT: Use python3 for mumble-version script 2022-01-09 19:54:49 +01:00
Robert Adam
6de094482d MAINT: Add script to fetch build number 2022-01-09 19:54:49 +01:00
Robert Adam
d100ff1467 MAINT: Update copyright to 2022 2022-01-04 20:17:33 +01:00
Robert Adam
6caa808e67 BUILD: Remove concept of an RELEASE_ID
Having a separate RELEASE_ID just unnecessarily complicates drafting
releases. Plus, now that we are using different build numbers for every
new build anyway, a separate release ID is really not necessary.
2022-01-01 20:38:40 +01:00
TheNamelessWonderer
a056a23f3a
MAINT(docker): Docker Compose UDP Support 2021-12-29 13:12:28 +00:00
TheNamelessWonderer
6fc2c88338 DOCS(docker): Docker compose 2021-12-21 10:36:10 +00:00
Robert Adam
8d857e8f2b 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.
2021-11-10 10:20:43 +01:00
Robert Adam
3c3af619c0 MAINT: Make changelog script work with backports
Merge commits of backports follow a little different pattern than
regular merge commits. This has to be accounted for in the script
generating the changelog.
2021-07-24 16:53:35 +02:00
koyu
2df6c8915d MAINT(desktop-file): Add StartupWMClass
This adds the StartupWMClass to the .desktop file which allows pinning Mumble to the dash/dock/whatever in all major desktop environments. Since most package maintainers ship their own .desktop file where this is fixed this fixes it for everyone who compiles Mumble from source.
2021-07-19 22:24:15 +02:00
Robert Adam
36dc6f387b MAINT: Translations backport script
Up to now when a stable release series was split off from the master
branch, there was essentially no (good) way of backporting new
translations for source strings in the stable series.

This is because usually the master branch contains new or changed source
strings and thus simply merging the respective commits into the stable
series can cause all sorts of trouble.

The script added by this commit takes care of that by comparing
translation files translation by translation and only updates the
translation if there is a newer translation for the exact same source
string in the target (master) branch.

This takes care of cases in which translations are added or altered
after the stable series has been split off.
It does not however work as soon as the source string for that
translation has changed as that will cause the script to consider these
as different strings and thus no updating will be performed.

Fixes #4740
2021-06-02 20:17:50 +02:00
Robert Adam
3511ba5a41 MAINT: Introduce REVERT commit type 2021-05-17 08:49:07 +02:00
Robert Adam
f7886d29a3 MAINT: Reworked translation-bundle script 2021-05-13 14:10:00 +02:00
Robert Adam
0eb6d1e091 MAINT: Change tabs to spaces for Python script 2021-05-13 13:34:04 +02:00
Septarius
44e270094c
MAINT(vcpkg): Restore profiledir variable in get_mumble_dependencies.ps1
Removes invalid characters (UTF-16 BOM) at the start of line 6.
The profiledir variable is set properly again. Fixing the vcpkg directory being created in the root of the system directory.

Original error message below:
$profiledir : The term '$profiledir' is not recognized as the name of a cmdlet, function, script file, or
operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
again.
At C:\Dev\Git\mumble\scripts\vcpkg\get_mumble_dependencies.ps1:6 char:1
+ $profiledir = $Env:USERPROFILE
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: ($profiledir:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
2021-05-09 12:03:23 -06:00
Davide Beatrici
ebd5fc88cd MAINT(vcpkg): Add "qt5-translations", in order for CMake to embed translations
The package provides translations for Qt strings, such as the text of the standard button "OK".
2021-04-26 08:19:43 +02:00
Davide Beatrici
09730f6428 MAINT(vcpkg): Remove opus, provided by submodule
Follow-up to 6b7897c7e5.
2021-04-26 08:19:40 +02:00
Robert Adam
22383865bf
MAINT: Fixed typo in generateChangelog.py
In that script the commit type was referenced as "CHANGED" but the correct type is "CHANGE".
2021-04-18 19:34:41 +02:00
Robert
56db3410c5 MAINT: Update copyright notice to 2021 (Part II)
Apparently the first commit (59ae429972)
did not include all files.

Furthermore the used script tended to produce funny results in certain
cases. This has been fixed and as a result thereof a few more changes
were made in this second run.
2021-04-09 15:41:49 +02:00
Robert
6023035f50 MAINT: Fix updateLixcenseHeaders.py script
Don't use the --follow option for git log as this produces funny
results.
2021-04-09 15:41:49 +02:00
Robert Adam
eabee58e68 MAINT: Add CHANGE commit type
This commit type is supposed to be used when e.g. a setting is changed.
2021-04-05 18:06:48 +02:00
Robert Adam
e1943b9982 MAINT: Fix endless loop in translation update script 2021-04-03 21:30:33 +02:00
Robert Adam
2902913d68 MAINT: Loop until there are no more translation changes
Before it could happen that one had to run the script twice in a row in
order to make sure e.g. sametext heuristics are applied.
2021-03-28 20:17:38 +02:00
Robert Adam
0c26ff14b5 FORMAT: Removed CRLF line endings 2021-03-28 20:17:24 +02:00
Robert Adam
0343d2b002 MAINT/CI: Add --ci-mode option to translation update script
In this mode the sametext heuristic is disabled which _should_ fix the
issue of the Weblate PR's CI failing because of Weblate not applying
such heuristics.
2021-03-28 19:58:54 +02:00
Robert Adam
8a9a915c1b MAINT: Extend grouping in changelog script
This commit adds a few more grouping rules to the generateChangelog.py
script which should further reduce the manual labor needed to create
changelogs.
2021-03-20 19:29:52 +01:00
Robert Adam
7159d5e885 MAINT: Make changelog script more robust
The assumptions about the format of the merge commit message were rather
strict and thus slight deviations would cause the script to fail.

Therefore the script got overhauled and is now using a (hopefully) more
versatile RegEx to do the job.
2021-03-20 19:14:39 +01:00
Jan Klass
ecf679e2de MAINT: Consistently use apostrophes for strings in updatetranslations.py 2021-03-08 18:55:29 +01:00
Jan Klass
b6b5b6fb12 MAINT: Fix output on git command failures in updatetranslations.py
The previous code caused exceptions if git returned an error code.
2021-03-08 18:55:27 +01:00
Jan Klass
63a86c421c MAINT: Remove obsolete comment in updatetranslations.py 2021-03-08 18:55:25 +01:00
Jan Klass
030ef317ba MAINT: Fix EOL from CRLF to LF in updatetranslations.py 2021-03-08 18:55:21 +01:00
Jan Klass
fd147945f9 MAINT: Enable sametext heuristic for translation updates 2021-03-03 19:09:17 +01:00