Shelling out to dpkg-buildflags to get the preferred build flags
is now the way to go on Debian.
Previously, our PPA packages used hardening-wrapper to pass the
proper hardening flags to the package. That package is no longer
available in Debian unstable or Ubuntu zesty. To remedy that situation,
we have to add flags ourselves via dpkg-buildflags.
This commit implements a new CONFIG flag, CONFIG(dpkg-buildflags)
which will query dpkg-buildflags and append the retrieved CFLAGS,
CXXFLAGS, CPPFLAGS and LDFLAGS to QMAKE_CFLAGS, QMAKE_CXXFLAGS,
QMAKE_CPPFLAGS, QMAKE_LDFLAGS to ensure they are used in the Mumble
build.
Qt 5.8 introduced Qt Speech, a module that contains a TTS system which works on every OS.
This commit implements a new OS-independent Text-To-Speech engine using Qt Speech.
It can be enabled with CONFIG+=qtspeech, if the Qt version being used has the module available.
The option currently works only on Linux, since there was no need in Windows, until now.
During a MinGW build test we noticed that minhook can be compiled only with MSVC, for various macros and probably other things.
This commit adds native support for XInput to GlobalShortcut on Windows.
Most things XInput-related is named XboxInput in an attempt to reduce
confusion with X11's XInput.
This commit adds a new class, XboxInputLibrary, which is a thin wrapper
class for handling the XInput DLL.
XboxInput supports various versions of the XInput DLL, as well as
the non-public XInputGetStateEx function (ordinal 100) -- if it is
available in the loaded XInput DLL. XInputGetStateEx makes it possible to
query the state of the guide button, allowing it to be used as a global
shortcut in Mumble.
The most suitable GetState function is chosen by XboxInput and is
exposed simply via the GetState member variable.
This commit does nothing to prevent DirectInput from *also* getting input
from any connected Xbox controllers. However, no ill effects have been
observed yet.
For now, the result simply is that -- for the buttons that DirectInput
supports -- we get a button click from both engines. For example,
pressing A yields the equivalent of "DirectInput:A + Xbox1:A" as the
shortcut name, because both engines handled the button press.
In the future, we should blacklist the DirectInput device if XboxInput
is enabled to rule out any future incompatibilities.
The current implementation treats a shortcut from the first Xbox
controller as a different shortcut than the same button from a
potential second, third or fourth Xbox controller connected to
the system. As a result, if a button is bound on the first controller
in one session, Mumble will only respond if that button is pressed on
the first controller in future sessions.
Fixesmumble-voip/mumble#1995
This change allows server admins to specify Diffie-Hellman
parameters for Murmur to use. This is done using the sslDHParams
option in the config file. Diffie-Hellman parameters can also be
set on a per-server basis using the sslDHParams option.
Note: the functionality implemented in this change requires the
QSslDiffieHellmanParameters class in Qt, which has not yet landed
upstream in the Qt 5 'dev' branch. This means that the functionality
discussed in this change will, for now, only work in binaries provided
by the Mumble project, or binaries that are built using our build
environments, and not binaries that link against any released versions
of Qt at present.
This change modifies the default TLS cipher suite string to add
EDH+aRSA+AESGCM, DHE-RSA-AES256-SHA and DHE-RSA-AES128-SHA.
This yields the following ciphers, in TLS/RFC notation:
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
This change also allows Murmur servers to provide forward secrecy
to older clients, such as our own pre-built binaries before 1.2.9.
It also provides forward secrecy for users that use Mumble 1.2.x
versions on Linux distros, and other Unix-like systems. This is
because Mumble 1.2.x on Unix-like systems builds against Qt 4, which
limits the connection to TLS 1.0.
Before this change, Murmur was not able to negotiate an ephemeral
Diffie-Hellman key exchange for those clients. This is now possible.