Commit Graph

3568 Commits

Author SHA1 Message Date
MumbleTransifexBot
1cd17698b6 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 34 languages
2015-07-04 17:18:19 +02:00
Stefan Hacker
5acf4af54f Fix qmake warning about qdbus CONFIG option being deprecated
The qmake CONFIG option qdbus has been replaced with
the QT module dbus which is available since Qt 4.4.
Simply use it instead.
2015-07-04 15:12:49 +02:00
Stefan Hacker
d3d6920da9 Fix various warnings in Linux build
This patch fixes various warnings encountered
in the build when using gcc 4.9.
2015-07-04 15:12:49 +02:00
Stefan Hacker
75feffb302 Suppress protobuf warnings in unix builds
The protobuf code creates lots of spurious warnings
throughout our compile which we can do nothing about.
This patch changes the way we integrate the generated
code in our build to work around this.

We now run protoc and generated code compilation as a seperate
mumble_proto target producing a static lib. This lib is then
linked by mumble and murmur.

The folder of this module is added to the include paths so
Mumble.pb.h is available. On Unix platforms a -isystem entry
is added for the directory.

The advantages of this approach is that we can disable warnings
for the compilation of this target like we do for 3rd party modules.
Additionally we no longer generate and compile the protobuf files
twice.
2015-07-04 15:12:49 +02:00
Will Tange
46cb8a371b Add UserRenamed MsgType
Categorise rename logmessages for themselves allowing users to filter
them how they please. Closes mumble-voip/mumble#1728
2015-06-28 00:12:45 +02:00
Will Tange
b4d48ef43d Handle input device suspend/recovery gracefully 2015-06-28 00:10:51 +02:00
Tim Cooper
d19e266f5d Add period after "renamed to" message. 2015-06-26 20:44:38 +02:00
Stefan Hacker
a1ff21bd1f Enable audio to be played during config restart query
The ConfigDialog::apply function also re-initializes
the audio input by stopping it at is beginning and
restarting it at the end. The modal restart query dialog
blocked this audio restart leaving the user with no
audio until the dialog was dismissed. This patch moves
the query until after the audio restart to resolve this.
2015-06-19 20:26:21 +02:00
MumbleTransifexBot
81f40a21e9 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 34 languages
2015-06-13 13:24:38 +02:00
Stefan Hacker
3f0e2d2c6b Make change of language and users top settings require restart
Changing these options will now trigger the new restart
request.
2015-06-13 04:46:00 +02:00
Stefan Hacker
d08336e59b Add capability to trigger restart to ConfigDialog
With this patch ConfigWidgets can set the new requireRestartToApply
variable to true to cause the ConfigDialog to ask the user wheter
he wants to restart to apply the settings immediatly. If the
user agrees we exit the event loop with the special
MUMBLE_EXIT_CODE_RESTART causing a relaunch of the client and
safe application of the new settings.
2015-06-13 04:45:59 +02:00
Stefan Hacker
c431d376f8 Add self-restart capability to client
For some option changes a client restart is required
to fully apply the changes. This patch enabled Mumble
to restart itself. This is accomplished by adding a
special MUMBLE_EXIT_CODE_RESTART exit code that is
cought right before the application terminates. Mumble
then uses available session information to launch
another instance of itself right before it exits. As
this happens after the vast majority of cleanup multiple
client restrictions and other resource contention issues
do not come into play.

Launching another client deviates from the usually
recommended way of not exiting the process but simply
doing a re-initialization of the application after the
cleanup. With Mumble this is tricky as we have some
objects for which we do not control the lifetime after
we initialized them once and others might be managed
sloppily as the design never expected to have to
re-initialize. We should strive to clean up these
weaknesses in resource management but for now the
approach taken here works around them.
2015-06-13 04:45:58 +02:00
Stefan Hacker
7fbe61e51f Strip schema and path component from new server addresses
We have had reports that a lot of users out of habit add
http:// or https:// schemas to server addresses when adding
a new server. This patch changes the ConnectDialogEdit to
drop schema and path components from server addresses if
present. This happens automatically when accepting the
dialog.
2015-06-09 23:25:25 +02:00
Stefan Hacker
c84916f908 SSL: Fix build for Qt 5 versions before Qt 5.3
Applies the Qt 4 workaround in 3283ac2fdd
also to Qt versions before 5.3 as those have the same API restrictions
on the QSslChiper constructor. Unfortunately the Qt documentation
doesn't have the usual note about it having been added later which
made this slip through. This should fix our builds on trusty.
2015-06-05 04:08:45 +02:00
Stefan Hacker
e934c1e648 Fix dual-stack UDP on Windows and improve dual-stack detection
This patch fixes dual-stack UDP on Windows as well as for unsual
Linux configurations by ensuring the UDP sockets we create
inherit their IPV6_V6ONLY sockopt from their corresponding
TCP socket. Previously on systems where IPV6_V6ONLY was enabled
by default (e.g. Windows) we would incorrectly create an
IPv6 only socket even though our TCP socket and the system
are dual-stacked.

The dual-stack detection moved from Meta.h to Server.h into the
SslServer class where it is a better fit. Also modified the function
to instead of querying the value of IPV6_V6ONLY on a test socket
it now tries to actively disable it. While previously dual stack
support was only detected if it was the default configuration for
that system, it should now be detected in all cases. The function
also now performs the same check on Windows socket where the default
actually is to have IPV6_V6ONLY enabled.
2015-06-05 02:08:12 +02:00
Stefan Hacker
9a426b1df7 Fix Qt 5 mumur incorrectly binding to IPv6 only by default
If no host string is given murmur should listen for Ipv4 as
well as IPv6 address on all devices. Due to a semantics change
for requesting dual-stacked sockets between Qt 4 and Qt 5 we
accidentally requested an IPv6 only socket for dual-stacked
systems in Qt 5. This patch remedies that.

Fixes #1668
2015-06-05 02:08:12 +02:00
Mikkel Krautz
3283ac2fdd SSL: fix build for Qt 4. 2015-06-05 02:04:20 +02:00
Mikkel Krautz
b90b42003a mumble_exe: fix expansion of baked-in MUMBLE_VERSION.
It was removed in a code review without thinking too deeply about it.

Oops.
2015-06-03 21:31:42 +02:00
Mikkel Krautz
e6b17b561d Add support for running with a versioned root path in mumble.exe.
This commit bakes the MUMBLE_VERSION string into mumble.exe.

This version string is used to determine where to load mumble_app.dll
from, and what to consider the root directory for other binaries.

In pseudo code, if the path

    ${MUMBLE_EXE_DIRECTORY}\Versions\${MUMBLE_VERSION}

exists, the mumble.exe binary will use that as the root for loading
mumble_app.dll, and all further binaries.

If mumble.exe finds the aforementioned directory, it sets the
MUMBLE_VERSION_ROOT environment variable to signal which directory
to use as the "application root" directory for loading further
binaries.
2015-06-01 20:38:26 +02:00
Mikkel Krautz
1250b0419a Use MumbleApplication::applicationVersionRootPath() throughout Mumble to support a versioned directory hierarchy. 2015-06-01 20:38:20 +02:00
Mikkel Krautz
83da95640a Add MumbleApplication::applicationVersionRootPath().
Also add MumbleApplication::instance() for easily getting
the MumbleApplication singleton.
2015-06-01 20:38:09 +02:00
Mikkel Krautz
ced3bf8d7c Do not delayload speex.dll. 2015-06-01 20:38:03 +02:00
Mikkel Krautz
e5ddf5566a SSL: move declaration of 'i' in MumbleSSL::ciphersFromOpenSSLCipherString() to the top of the function.
Again, something the MSVC allowed, but is obviously wrong.
2015-05-22 21:00:57 +02:00
Mikkel Krautz
63a6985d0d SSL: remove class name qualifier in SSL.h for new cipher string methods.
MSVC accepted it just fine, but it's obviously not the way it should be.
2015-05-22 20:05:37 +02:00
Mikkel Krautz
8ae710b589 Mumble: add 'net/sslciphers' hidden setting to allow configuring the client's advertised TLS cipher suites.
Like Murmur's "sslCiphers" option, this option also uses the
OpenSSL cipher list format.

See: https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT
2015-05-22 18:24:27 +02:00
Mikkel Krautz
a3f93f7801 Murmur: add 'sslCiphers' option to allow server admins full control of Murmur's advertised TLS cipher suites.
This commit adds the 'sslCiphers' option to Murmur.

The 'sslCiphers' option is used to configure the list of advertised
TLS cipher suites. The option lives on Meta, so it is a server-wide
configuration, and cannot be configured on a per-virtual-server basis.

The 'sslCiphers' option uses the OpenSSL's cipher list format to
describe the cipher suite selection. For more information on this
format, see:

https://www.openssl.org/docs/apps/ciahers.html#CIPHER-LIST-FORMAT
2015-05-22 18:24:26 +02:00
Mikkel Krautz
49f57d3da5 SSL: add MumbleSSL::defaultOpenSSLCipherString().
This commit adds a new method to MumbleSSL that returns Mumble's
preferred cipher suites represented in the OpenSSL cipher list format.

This commit does not hook up the function to anything. It merely
implements it.

Previously, Mumble relied on OpenSSL's default cipher suites. However,
that decision has increasingly turned out to be unwise. Often, new TLS
vulnerabilities require server admins and users to be able to change the
cipher suites advertised by their software to help mitigate the damage.
This was not previously possible in Mumble.

The other thing that prompted this change is the Logjam TLS vulnerablity
(https://weakdh.org/, CVE-2015-4000). Mumble is not vulnerable to Logjam,
because Mumble has never allowed export grade DH groups. However, one of
the other key takeaways from the Logjam paper, "Imperfect Forward Secrecy:
How Diffie-Hellman Fails in Practice", is that the Internet community
should move towards DH groups bigger than 1024 bits, and preferably use
unique groups on a per-server basis. Unfortunately, neither of these two
solutions are possible with API that Qt provides for TLS.

To remedy this, we instead drop support for non-Elliptic Curve DH
in the default cipher configuration. We don't have any legacy clients
to support that can only use DH, so this is fine.

The OpenSSL cipher list in MumbleSSL::defaultOpenSSLCipherString()
evaluates to the following set of cipher suites, in order of preference:

  ECDHE-RSA-AES256-GCM-SHA384    (TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384)
  ECDHE-ECDSA-AES256-GCM-SHA384  (TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384)
  ECDHE-RSA-AES128-GCM-SHA256    (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)
  ECDHE-ECDSA-AES128-GCM-SHA256  (TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)
  AES256-SHA                     (TLS_RSA_WITH_AES_256_CBC_SHA)
  AES128-SHA                     (TLS_RSA_WITH_AES_128_CBC_SHA)

The CBC-mode cipher suites are included for backwards compatibility with
older 1.2.x Mumble clients and other implementations that only use
TLSv1.0.
2015-05-22 18:24:26 +02:00
Mikkel Krautz
1dc6ecc519 SSL: implement OpenSSL cipher list format reader.
This commit implements MumbleSSL::ciphersFromOpenSSLCipherString(),
which reads a string in OpenSSL's cipher list format and returns a list
of QSslCiphers for use with QSsl.

This function will be used for implementing user-configurable cipher
suites in Mumble and Murmur.

This commit also changes our precompiled headers slightly by rearranging
the OpenSSL includes. This is done because the ssl.h header on Windows
requires winsock2.h (and perhaps others). By moving the includes, we
ensure that winsock2.h is included.
2015-05-22 18:24:25 +02:00
Stefan Hacker
5026c4798e Fix ice documentation mistake 2015-05-17 21:52:28 +02:00
Kissaki
fcb908b757 Initialize fields in OverlayClient 2015-05-16 11:48:04 +02:00
Mikkel Krautz
57740e7e1b Rename overlay helpers to avoid PDB name clashes with DLLs.
Right now, we do not get PDB files for our overlay DLLs because
the overlay DLL PDB files share their name with the overlay helper
PDB files.

To avoid this madness, we rename the overlay helpers as follows:

  mumble_ol.exe -> mumble_ol_helper.exe
  mumble_ol_x64.exe -> mumble_ol_helper_x64.exe
2015-05-16 00:48:35 +02:00
Stefan Hacker
15fbe1d72f Remove ICC support and some VC10 workarounds
We do not plan on using ICC to build mumble now or in the
foreseeable future. Hence this patch drops it.

It also removes some backwards compatibility code that
worked around bad C compatibility with VC10 mostly
related to math header usage.
2015-05-15 10:10:34 +02:00
Kissaki
3282887fca Fix access violations on exit with Overlay active
* Prevent duplicate object deletion triggered by disconnect signal upon us
deleting an overlay client.
2015-05-14 15:24:39 +02:00
Nikolaj Dombrow
de27cd7b72 Add RTMP as an allowed protocol for links 2015-05-14 11:05:20 +02:00
Will Tange
ab78e6c90c Sensible warning message
Might as well show a meaningful message, just in case.
2015-05-12 18:58:59 +02:00
Will Tange
78604d85f0 Connect button should be disabled by default
Since ConnectDialog::accept calls are refused if no item is selected,
and the server last connected to is selected in ConnectDialog::timeTick
(after initialisation), it doesn't make sense for the Connect button
to be enabled before a server is selected.
2015-05-12 18:58:59 +02:00
Evan Purkhiser
82ca800803 Follow XDG directory spec for RPC socket & overlay pipe
If the XDG_RUNTIME_DIR environment variable is present the overlay
pipe and RPC socket will be created at..

    $XDG_RUNTIME_DIR/MumbleSocket
    $XDG_RUNTIME_DIR/MumbleOverlayPipe
2015-05-11 20:19:55 +02:00
Stefan Hacker
a96a8e79a2 Add deprecation warning for building client with Qt 4
Since we plan to drop Qt 4 support for building the client
soon'ish add an explicit 'qt4-legacy-compat' flag that has
to be set to still build the client with qt 4. If the flag
is not set we error out of the build to ensure the maintainer
has to actively aknowledge using a legacy version. Even
when the flag is set we still show a warning as a reminder.
2015-05-10 10:39:15 +02:00
Charles Ricketts
5b104e09c0 PulseAudio: Add options to disable attenuating applications on other audio outputs and to disable attenuation of loopback modules.
Before this commit, Mumble indiscriminately attenuates applications.
A simple example: it would attenuate applications that were set to output
to HDMI -- something that wasn't always desirable. My HDMI wouldn't need
to be attenuated because I am able to physically distinguish between sound
coming from either my HDMI or my laptop and "tune in" accordingly.

A more advanced use case is my PulseAudio streaming setup. I create two
additional sinks: "stream" and "stream_spkr." The "stream" sink is used
when I want to send audio from an application to my stream but not to
my speakers/headset (i.e., background music or something). In this case,
before this commit Mumble would attenuate my program playing the
background music. If I am running Mumble off-stream (which I often am),
this leads the background music volume fluctuating for seemingly no reason.

The second sink, "stream_spkr" routes both to "stream" and my
speakers/headset via two module-loopbacks. In this way, anything I attach
to stream_spkr can be heard both by my viewers and myself.

The option to include attenuation on loopback modules is for advanced
configurations. Loopback modules are used to route audio, usually between
a sink monitor and a sink. Sometimes it might be beneficial to attenuate a
loopback module that goes into Mumble's sink. Sometimes, however it's
inconvenient such as in the case where a user moves an application to
another sink that uses a loopback to Mumble's sink in order to specifically
have Mumble ignore attenuation on that application. But, if the loopback
that carries the non-Mumble sink's audio back to Mumble's sink is attenuated
then there would still be indirect attenuation of that application. In my
configuration, an example is the loopback from stream_spkr.monitor to the
physical speakers.

Only PulseAusio is supported in this patch, but this functionality could
potentially be extended to other audio systems.
2015-05-10 00:45:35 +02:00
MumbleTransifexBot
dc9ea2cfad Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 33 languages
2015-05-09 22:11:41 +02:00
Joël Troch
c3236b3055 Fix for Windows 10 detection in murmur
Murmur now uses Mumble's appcompat.manifest so it
can query and report its host operating system
correctly on Windows 10. Previously it reported
as Windows 8 on that platform.
2015-05-09 15:09:54 +02:00
Stefan Hacker
4e459a9b1f Do not consider a default hostname from clipboard to be custom
The connect dialog has the capability to pre-fill itself from
mumble:// style URLs in the users clipboard. If those are not
given a custom ?title= argument the name was defaulted to the
host name which caused them to be considered custom by the
edit dialog. This patch resolves this issue.
2015-05-07 23:20:52 +02:00
Stefan Hacker
78d0db8d6a Fix title from URLs not being picked up in connect dialog.
Fixing the connect dialog after the Qt 5 transition wasn't
done correctly. The QUrlQuery class for parsing the url was
instantiated before the url itself was extracted from the
mime data and hence was always empty. This probably slipped
by as the query data is only used for setting the name of
the server item from the '?title=' part of the url.
2015-05-07 23:20:52 +02:00
Nik Johnson
b2282e7402 Move label to bottom of connect dialog and default it to hostname
This patch improves the usability of the connect dialog by
moving the server label to the bottom of the dialog and making
it track the hostname. This way the user gets a sensible default
while also being able to manually edit it afterwards.

Once the user edits the label it is seen as custom and will no
longer track the server address until the label field is
manually cleared by the user.
2015-05-07 23:18:58 +02:00
Stefan Hacker
2c0d37f9ef Switch from old speex to new speex and speexdsp
The speex library has been split into a codec part
(speex) and a dsp part (speex-dsp). As we still need
the codec for compatibility with 3rd party clients
only sending speex but still want the updates that
went into the dsp and codec since then this patch
modifies our build to enable that. To achieve that
we combined the two libraries back together. Doing
it this way might brittle but is only a temporary
solution until we can actually drop the codec part.
2015-05-06 20:22:11 +02:00
Tim Cooper
263a2928ca fix minor spelling mistake
Continous -> Continuous
2015-05-06 00:53:13 +02:00
Stefan Hacker
ad1ed22114 Prevent OverlayClient destructor from hanging on disconnect
Limit the maximum time a clean disconnect may take to 1s. Previously
our GUI thread could become semi-permanently blocked.
2015-04-30 23:09:52 +02:00
MumbleTransifexBot
9a2c0ee2b6 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 33 languages
2015-04-29 20:08:02 +02:00
Jordan Cristiano
445cdf0e10 Do not set the Mumble process's priority to High on Windows.
Setting Mumble's priority class higher than the games
is a bad behavior which can cause inconsistency for
input timing in games such as Team Fortress 2.
2015-04-22 22:15:38 +02:00
Ferdinand Thiessen
67ed33f328 Do not show TTS options when speechd is disabled.
A new define, USE_NO_TTS is added. For now, this define
is set when no TTS engine is available on Linux.

Fixes #961
2015-04-22 22:10:18 +02:00