Commit Graph

9864 Commits

Author SHA1 Message Date
Hosted Weblate
b0976aadde TRANSLATION: Update Turkish translation
Currently translated at 100.0% (2088 of 2088 strings)

TRANSLATION: Update Turkish translation

Currently translated at 100.0% (2086 of 2086 strings)

TRANSLATION: Update Turkish translation

Currently translated at 100.0% (2085 of 2085 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/tr/
Translation: Mumble/Mumble Client
2022-03-21 12:32:43 +01:00
Hosted Weblate
1fb00b397b TRANSLATION: Update Norwegian Bokmål translation
Currently translated at 91.4% (1907 of 2086 strings)

TRANSLATION: Update Norwegian Bokmål translation

Currently translated at 89.1% (1859 of 2085 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/nb_NO/
Translation: Mumble/Mumble Client
2022-03-21 12:32:43 +01:00
Hosted Weblate
5b2a8fab57 TRANSLATION: Update Dutch translation
Currently translated at 100.0% (2080 of 2080 strings)

Co-authored-by: Gert-dev <qnyasgjhapqyuhoibr@kiabws.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/nl/
Translation: Mumble/Mumble Client
2022-03-21 12:28:16 +01:00
Hosted Weblate
9d03085520 TRANSLATION: Update Chinese (Simplified) translation
Currently translated at 100.0% (2088 of 2088 strings)

TRANSLATION: Update Chinese (Simplified) translation

Currently translated at 100.0% (2086 of 2086 strings)

TRANSLATION: Update Chinese (Simplified) translation

Currently translated at 100.0% (2085 of 2085 strings)

TRANSLATION: Update Chinese (Simplified) translation

Currently translated at 100.0% (2080 of 2080 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: deluxghost <deluxghost@gmail.com>
Co-authored-by: yzqzss <yzqzss@yandex.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/zh_Hans/
Translation: Mumble/Mumble Client
2022-03-21 12:28:16 +01:00
Hosted Weblate
0e7609d218 TRANSLATION: Update Polish translation
Currently translated at 100.0% (2088 of 2088 strings)

TRANSLATION: Update Polish translation

Currently translated at 100.0% (2086 of 2086 strings)

TRANSLATION: Update Polish translation

Currently translated at 100.0% (2085 of 2085 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matthaiks <kitynska@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/pl/
Translation: Mumble/Mumble Client
2022-03-21 12:28:16 +01:00
Hosted Weblate
039cbf84e8 TRANSLATION: Update Basque translation
Currently translated at 60.6% (1261 of 2080 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Konstantin Goncharik <botankras@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/eu/
Translation: Mumble/Mumble Client
2022-03-21 12:28:16 +01:00
Hosted Weblate
cc9c20427c TRANSLATION: Update Spanish translation
Currently translated at 89.8% (1875 of 2086 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/es/
Translation: Mumble/Mumble Client
2022-03-21 12:28:16 +01:00
Hosted Weblate
cc961d374c TRANSLATION: Update Romanian translation
Currently translated at 10.9% (227 of 2080 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ty3r0X <ty3r0x@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ro/
Translation: Mumble/Mumble Client
2022-03-21 12:28:16 +01:00
Hosted Weblate
bab4305843 TRANSLATION: Update Chinese (Traditional) translation
Currently translated at 67.5% (1406 of 2080 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Konstantin Goncharik <botankras@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/zh_Hant/
Translation: Mumble/Mumble Client
2022-03-21 12:28:16 +01:00
Robert Adam
d818af8759
Merge PR #5599: FEAT(client, server): Support --version CLI flag
The server already supported this flag, but printed the version
information in a weird format and for the client this flag is completely
new.

Fixes #5598
2022-03-21 11:45:50 +01:00
Robert Adam
0d8220e362 TRANSLATION: Update translation files 2022-03-21 08:28:46 +01:00
Robert Adam
613c282bb4 FEAT(client, server): Support --version CLI flag
The server already supported this flag, but printed the version
information in a weird format and for the client this flag is completely
new.

Fixes #5598
2022-03-21 08:28:46 +01:00
Robert Adam
3db3ec22f3 REFAC: Removed debug print statement 2022-03-21 07:58:57 +01:00
Robert Adam
681d0018de
Merge PR #5596: FIX(client): Audio wizard being shown repeatedly
The switch to a new settings format messed up the setting for whether or
not the audio wizard has been shown already or not. For new
installations, the wizard would be shown, but the fact that it has been
shown is not reflected in the settings causing the wizard to be re-shown
upon a restart.

This commit fixes this by making sure that the respective setting is set
after the wizard has been shown for the first time.
2022-03-16 10:14:08 +01:00
Robert Adam
e909c239d7
Merge PR #5552: 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 10:13:29 +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
2dab6a2c02
Merge PR #5565: FEAT(client): Add option to toggle TTS in settings menu
Previously TTS could only be toggled from the Configure dropdown menu,
but not from within the settings. This was confusing, especially since
other TTS related settings were editable from within the settings UI.

This commit introduces a new checkbox into the settings UI that allows
users to toggle TTS right then and there, which should take care of the
created confusion.

Fixes #5561
2022-03-16 08:21:30 +01:00
Robert Adam
b8cd0bea77
Merge PR #5593: FIX(client): Data dir migration issues
This PR contains fixes related to the migration of the data directory as performed
in #5531.

The following issues are fixed

 1.   The database wouldn't be found on Windows, after the migration has been performed (after having restarted Mumble once)
 2.   Plugin settings were lost due their explicit dependence on the plugin's path
2022-03-16 08:18:50 +01:00
Robert Adam
8a6b9019a6 REFAC(client): Use smart-pointer for AudioWizard 2022-03-16 08:17:25 +01:00
Robert Adam
a4ebeefc4f FIX(client): Audio wizard being shown repeatedly
The switch to a new settings format messed up the setting for whether or
not the audio wizard has been shown already or not. For new
installations, the wizard would be shown, but the fact that it has been
shown is not reflected in the settings causing the wizard to be re-shown
upon a restart.

This commit fixes this by making sure that the respective setting is set
after the wizard has been shown for the first time.
2022-03-15 18:49:39 +01:00
Robert Adam
50c035b3f1 FIX(client): Plugin settings not getting migrated
When migrating the data directory, the plugin settings have been let
untouched. However, since these contain the plugin's absolute path (both
as a immediate property and also in the hash identifying the plugin),
the settings wouldn't apply to the migrated plugins. Therefore, the
migration would lead to a loss of plugin settings.

This commit adds dedicated code that remedies this situation by
explicitly adapting the plugin settings to the migrated plugin paths.
2022-03-12 10:04:58 +01:00
Robert Adam
6e829d97dd FIX(client): DB not found after migration on Windows
When the DB is migrated, it won't be found anymore after a restart,
because the new DB location was not saved in the settings.

This commit makes sure that during the migration, the path stored in the
settings gets updated and then subsequently saved.

Because of this, the dedicated migration code block in the Database
class is no longer needed (at the point it runs, the DB setting has
already been migrated) and was therefore removed.
2022-03-12 09:23:45 +01:00
Robert Adam
7b55ed7efa
Merge PR #5585: BUILD(client): Add option to use system JSON lib
This commit introduces an option that toggles between using a bundled
version of nlohmann_json (default) and looking for a version installed
on the system instead.

Fixes #5584
2022-03-01 11:19:53 +01:00
Robert Adam
f271d7bec7
Merge PR #5587: BUILD(positional-audio): Fix missing <memory> include
Without the change the build fails on upcoming gcc-12
2022-02-27 19:24:13 +01:00
Sergei Trofimovich
36398fb3b2 BUILD(positional-audio): Fix missing <memory> include
Without the change the build fails on upcoming gcc-12 as:

    /build/mumble/plugins/gtav/gtav.cpp:13:13:
      error: 'unique_ptr' in namespace 'std' does not name a template type
       13 | static std::unique_ptr< Game > game;
          |             ^~~~~~~~~~
    /build/mumble/plugins/gtav/gtav.cpp:12:1:
      note: 'std::unique_ptr' is defined in header '<memory>';
        did you forget to '#include <memory>'?
       11 | #include <cstring>
      +++ |+#include <memory>
       12 |
2022-02-27 17:24:07 +00:00
Robert Adam
a239ccf623 BUILD(client): Add option to use system JSON lib
This commit introduces an option that toggles between using a bundled
version of nlohmann_json (default) and looking for a version installed
on the system instead.

Fixes #5584
2022-02-25 18:42:53 +01:00
BombJovi
3d585c106e TRANSLATION: Update translation files 2022-02-15 08:39:04 +01:00
BombJovi
cd0de275cc FEAT(client): Add option to toggle TTS in settings menu
Previously TTS could only be toggled from the Configure dropdown menu,
but not from within the settings. This was confusing, especially since
other TTS related settings were editable from within the settings UI.

This commit introduces a new checkbox into the settings UI that allows
users to toggle TTS right then and there, which should take care of the
created confusion.

Fixes #5561
2022-02-15 08:38:40 +01:00
Robert Adam
ef79268165
Merge PR #5566: FIX(client,ui): PFS information being incorrect
The information about perfect forwards secrecy (PFS) displayed within
the server information dialog (TCP tab) was missing for newer ciphers.
The reason was, that we are using a hard-coded list of cipher
information and the new ones (TLS 1.3) are not part of that.

However, in the meantime Qt has implemented indirect support for
checking whether PFS is used, so we change the implementation to make
use of that instead.

Fixes #5469

Additionally the hard-coded cipher info list has been removed in a second commit.
2022-02-14 11:48:24 +01:00
Robert Adam
0f6ff0bd8d TRANSLATION: Update translation files 2022-02-14 08:09:34 +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
Robert Adam
379140fb56 FIX(client,ui): PFS information being incorrect
The information about perfect forwards secrecy (PFS) displayed within
the server information dialog (TCP tab) was missing for newer ciphers.
The reason was, that we are using a hard-coded list of cipher
information and the new ones (TLS 1.3) are not part of that.

However, in the meantime Qt has implemented indirect support for
checking whether PFS is used, so we change the implementation to make
use of that instead.

Fixes #5469
2022-02-14 08:08:53 +01:00
Robert Adam
070fac6dd3
Merge PR #5554: FIX(client): Context and identity not getting cleared
If a plugin loses link, the context and identity that have been
broadcast to the server are not cleared.

This commit makes sure that an additional message is sent to the server
that does take care of the clearing.

Fixes #5466
2022-02-12 18:08:59 +01:00
Robert Adam
84d49d5c9b
Merge PR #5531: CHANGE(client): Use JSON file for storing settings
This PR streamlines the settings format on all OS and (hopefully) increases the readability
of the settings file A LOT (more or less self-explaining settings identifiers instead of some
weird terms or variable names only understood by the core devs themselves (if at all)).

In addition to and surrounding this feature, several changes, improvements and fixes on
the general topic of handling settings are included as well. See individual commit messages
for details.

Fixes #1940

As an aside: This change is an important step towards being able to provide portable Mumble
installations.
2022-02-11 18:47:11 +01:00
Robert Adam
dc47fe2ccc
Merge PR #5564: FIX(client): Percent encoded links not clickable
If a link contains any percent encoded characters (e.g. umlauts),
the markdown parser sets a wrong offset, thus resulting in a cut off
link in the log.

This is fixed by adjusting the url parsing regex to include a percent
symbol.
2022-02-10 21:00:11 +01:00
issue
727049c526 FIX(client): Percent encoded links not clickable
If a link contains any percent encoded characters (e.g. umlauts),
the markdown parser sets a wrong offset, thus resulting in a cut off
link in the log.

This is fixed by adjusting the url parsing regex to include a percent
symbol.
2022-02-10 19:32:19 +01:00
Robert Adam
c317d57008
Merge PR #5560: MAINT: Update tracy submodule
Upstream tracy had a few more bug fixes and improvements. In particular
a fix for wolfpld/tracy#318.
2022-02-08 20:36:09 +01:00
Robert Adam
a19cbcbb6d MAINT: Update tracy submodule
Upstream tracy had a few more bug fixes and improvements. In particular
a fix for https://github.com/wolfpld/tracy/issues/318.
2022-02-08 17:45:05 +01:00
Robert Adam
f4d8e01b6d REFAC(client): Convert Screen to namespace
The Screen struct has only been used as a namespace anyway and thus, it
is now converted into a proper namespace. This has the nice side-effect
of fixing name-clash issues with e.g. the X11 headers that also define a
Screen struct.
2022-02-07 20:22:34 +01:00
Robert Adam
2a97bc219f TRANSLATION: Update translation files 2022-02-07 20:22:30 +01:00
Robert Adam
c06bdbca3c FIX(client): Save shortcuts in a single DB transaction
The server-specific shortcuts, which are saved to the DB, were
previously saved in two steps: First deleting all old shortcuts that are
stored in the DB for that server and then inserting the new shortcuts
afterwards.

However, if Mumble was to crash or forcefully quit for another reason
between these two steps, the server-specific shortcuts would be lost
completely (the old ones have been intentionally deleted from the DB and
the new ones haven't been saved yet).

Therefore, this commit now wraps these two steps into a single
transaction, which will execute atomically. So either the full
transaction succeeds (in which case the new shortcuts are saved as
expected) or it fails (or is aborted) in which case it will undo all
changes made so far (thus, in this case at least the old shortcuts that
have been stored previously are retained).
2022-02-07 20:20:10 +01:00
Robert Adam
6fa909f7f0 FIX(client): DB transactions not effective
In the DB code at some places several SQL statements where packed in a
transaction to ensure atomicity of these instructions. However, instead
of accessing our created DB instance directly, they started the
transaction on the DB returned by the static function
QSqlDatabase::database(), which returns a DB with a default name. Since
we are using an explicit name for our DB, this default DB does not exist
and therefore starting the transaction on it will do nothing.

This commit fixes this by starting and committing the transaction on our
created DB instance directly.
2022-02-07 20:17:53 +01:00
Robert Adam
db5fd27a71 REFAC(client): Use in-class initialization for settings
Previously the default values for the member fields in the Settings
struct (and related structs) have been performed explicitly in the
corresponding constructor (if there even was one).

Besides the constructors not using initialization lists but instead
assigning a value in the constructor body (supposedly slower than member
initialization lists), this also blew up the constructor's size and
required to duplicate all variables in there (and not forget any, which
could in turn cause UB due to uninitialized memory).

For these reasons, this commit refactors these structs to us in-class
initialization of all member variables. Some of these values might get
overwritten in the corresponding constructor (e.g. if the value depends
on a preprocessor flag) but for most variables, this is not the case.

The script for generating the Settings JSON serialization was adapted
accordingly.
2022-02-07 20:15:32 +01:00
Robert Adam
c2b42aecb4 CI: Use --output-on-failure flag for ctest
This flag makes sure that the verbose output of running the test cases
is not shown, unless the test fails. In that case the full output is
displayed (for that test case).
2022-02-07 20:13:03 +01:00
Robert Adam
2480e1342e TEST(client): Settings JSON serialization 2022-02-07 20:10:23 +01:00
Robert Adam
900378756c BUILD(cmake): Use object-library for client-sources
Previously all source files were added to a single executable file
(library on Windows). This makes reusing the source files (e.g. linking
them to test cases) close to impossible.

Therefore, this commit changes this by compiling all source files into
an object library that can be used for the aforementioned
executable/library but also be reused (e.g. in tests).
2022-02-07 20:07:58 +01:00
Robert Adam
20f47f1bbf FEAT(client): Immediately save settings
Previously settings were only saved upon Mumble's exit. This commit
makes sure that the settings are also saved to file every time, the user
accepts the settings window. That way settings are guaranteed to survive
potential crashes or other hard-exits of Mumble (e.g. Ctrl+C, Task
manager, etc.).
2022-02-07 20:05:35 +01:00
Robert Adam
d0628628d3 REFAC(client): Don't delete shortcuts on save
The Database::setShortcut function is used to save server-specific
shortcuts to the DB. However, at the same time it also deletes these
shortcuts from the passed list. This is a very unintuitive side-effect
of this function that also prevents saving shortcuts intermediately
instead of only upon disconnecting from a server (at which point we
indeed want to remove server-specific shortcuts).

Therefore, this commit removes this side-effect and instead explicitly
removes these shortcuts on disconnecting from a server.
2022-02-07 20:03:03 +01:00
Robert Adam
fe9f48331b FEAT(client): Prompt to load backup settings after crash
We save a flag into our settings that indicates whether Mumble has quit
normally at the time the settings were saved. If upon loading, we don't
find this flag set, we have to assume that this may be because Mumble
has crashed the last time. Since the crash may be caused by changed
settings, we offer the user the possibility to load the backup settings
instead.
2022-02-07 20:00:43 +01:00
Robert Adam
2002e6d668 CHANGE(client): Use JSON file for storing settings
Previously we used different formats on different platforms (registry on
Windows, plists on macOS, ini files on Linux). This commit makes sure
that the same format is used on all platforms, regardless of the used
OS.

In this process a few unneeded settings have been removed and the
settings migration path has been tidied up as well (the code from
main.cpp was moved to Settings.cpp and the original uiUpdateCounter
variable was completely removed and replaced with logic inside the
routines handling the JSON (de)serialization of settings.

The old settings should be overtaken without issues and converted into
the new format on-the-fly without the user taking any notice of this.
From that on, the JSON settings file will be used instead.

Fixes #1940
2022-02-07 20:00:41 +01:00