Age | Commit message (Collapse) | Author |
|
The idea here is that sometimes you really do have a lot of folks connecting from a single IP,
and if those connections are successful you don't want to ban any of them.
However, in cases where the server needs to guard against malicious users attempting a DDOS
by reconnecting their valid user account over and over, we need to be able to configure the
server to still ban those successful attempts.
|
|
Instead, we'll turn off the autoban feature if either are negative.
|
|
The idea here is that sometimes you really do have a lot of folks connecting from a single IP,
and if those connections are successful you don't want to ban any of them.
However, in cases where the server needs to guard against malicious users attempting a DDOS
by reconnecting their valid user account over and over, we need to be able to configure the
server to still ban those successful attempts.
|
|
This PR fixes a compilation error that occurs when building murmur with GRPC enabled with an older version of the GRPC lib (probably a version less than 1.28 but I'm not sure of the exact version).
Furthermore it fixes a Qt warning about a deprecated function (Qt >= 5.14) in the GRPC code.
Finally it adds GRPC to be built on our CI in order to catch errors in the GRPC code in the CI as well.
|
|
We have had multiple cases now in which there have been some errors in
changes related to GRPC that weren't detected by the CI because it
excluded the GRPC code from the build process. This will bw changed now.
As all other CIs have been stubborn, for now we'll only build GRPC on
travis as these use a new-enough Ubuntu version to be able to build
GRPC.
MacOS CI I haven't got to work with the whole homebrew stuff and Windows
is done in its own repo (which I won't touch either).
m
|
|
QAtomicInteger::load() for Qt >= 5.14
|
|
It appears as if more modern versions of GRPC-c++ have moved their
classes from namespace grpc to namespace grpc_impl, which is what the
most recent contribution to this file was using. However in older
versions of the GRPC library this namespace doesn't exist yet and thus
causes compile errors.
Luckily it seems however that the GRPC devs were smart about this
change as they added typedefs to the grpc namespace (which still exists)
that reroute to the grpc_impl namespace. Thus we can simply use the grpc
namespace and in newer versions this will redirect us to the grpc_impl
namespace automatically.
As a reference on the GRPC side see
https://github.com/grpc/grpc/commit/d684ddc7e3091b8b5205b0cadbd786bd5f37487d
|
|
Building a docker image with the current Dockerfile seems to run into
issues caused by not finding files on the Ubuntu disco repositories
anymore. So, this patch updates the Ubuntu version in the Dockerfile
from disco to latest.
|
|
The latest Ubuntu LTS Docker image is version 18.04 and will switch to
version 20.04 soon. The package names of libprotobuf and libgrpc differ
in version 18.04 and 20.04. As suggested by Bartosz Zieba, this patch
uses regex for installing these packages to make the Dockerfile work
with both LTS versions.
Co-authored-by: Bartosz Zieba <bartosz@zieba.pro>
Signed-off-by: hwipl <33433250+hwipl@users.noreply.github.com>
|
|
Building a docker image with the current Dockerfile seems to run into
issues caused by not finding files on the Ubuntu disco repositories
anymore. So, this patch updates the Ubuntu version in the Dockerfile
from disco to latest.
Signed-off-by: hwipl <33433250+hwipl@users.noreply.github.com>
|
|
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 listener proxy so that audio received through them can be tuned in volume.
Finally the ACLEditor is changed so that every time you fiddle with the Enter privilege, you'll also set the Listen privilege automatically. For why I think this to be necessary see the commit message of 77e89e4
|
|
Updating 'mumble_en.ts'...
Found 1738 source text(s) (17 new and 1721 already existing)
Removed 1 obsolete entries
|
|
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.
|
|
|
|
|
|
versions
|
|
|
|
|
|
|
|
|
|
This icon is referenced/needed from ConnectDialog and before this
commit, an error would be printed that this icon can't be found (#4057).
|
|
Libraries were already in versioned directories, but in recent versions of the Windows 10 SDK that's the case for executables and includes as well.
This commit also removes duplicate backslashes in the paths. Fortunately it was only a cosmetic issue (in the console output).
|
|
Updating 'mumble_en.ts'...
Found 1726 source text(s) (7 new and 1719 already existing)
Removed 3 obsolete entries
|
|
Before it was only possible to set hotkeys for whispering/shouting to
fixed targets (e.g. a certain list of users or a certain channel).
This commit adds the possibility to set up a hotkey to whisper/shout to
whatever is the current selection in the UI. That means if I have
another user selected, then I'll whisper to that user and if I have a
channel selected, then I'll shout to that instead.
|
|
assigned
|
|
|
|
|
|
Having the server perform 2 syscalls per TCP audio packet is extreme - turning this
off led to 30% lower CPU utilization in a test with 200 music-playing bots.
Switching to TCP_NODELAY for all packets is probably a win as well - TCP is only
typically used for control packets like users joining and leaving channels, of
which there are few. (As alluded to above, TCP is also sometimes used for audio,
in which case it should be in TCP_NODELAY mode anyway).
|
|
|
|
|
|
|
|
|
|
g.iTarget is not protected by a lock or a Mutex. This means that it can
change its value while AudioInput::encodeAudioFrame is running. However
the value is accessed at multiple stages (including
AudioInput::flushCheck that is called from encodeAudioFrame) meaning
that there could be inconsistencies of what g.iTarget was meaning for
this audio frame.
This commit makes sure that g.iTarget is only accessed once at the
beginnign of AudioInput::encodeAudioFrame and then copied to a local
variable which is then used for all the places in which g.iTarget
previously was access directly.
One scenario this race condition could be observed was pressing and
immediately releasing a whisper shortcut. This could sometimes cause one
of the whisper frames (the second last to be more precise) to be sent as
normal audio instead of whispering (the last message would have been
affected by this as well however for that there's a special workaround
in place already [9d16137393bd8a33307cac41c0b55ea1392173a3] which
covered the effects of the racecondition for that one).
|
|
speech
In order to send the last audio frame of a whisper-action to the correct
target, we have to do some workaround introduced in
9d16137393bd8a33307cac41c0b55ea1392173a3. The current implementation
bleeds into normal speech, if VoiceActivation is used (#2604).
This is due to iPrevTarget not getting reset automatically once it has
fulfilled its purpose. If PTT is used as transmission mode, it doesn't
matter as the button-pushing also resets iPrevTarget as needed.
VoiceActivation doesn't do that though, so this commit adds a little
housekeeping to the iPrevTarget logic.
|
|
works
|
|
|
|
|
|
|
|
|
|
Co-Authored-By: Davide Beatrici <davidebeatrici@gmail.com>
|
|
As requested in #3515 this commit disables the overlay by default. This
is so that Mumbke doesn't try to hook into all system processes for
users that don't explicitly want this behavior.
|
|
|
|
Right now the Overlay will start hooking into processes on its
construction. This will cause this to happen even if the overlay is
actually disabled. This is a rather intrusive behavior and can lead to
warnings of the OS (for now macOS only - #3552).
This commit refactors the Overlay class so that it will only start
hooking into processes, if it is actually enabled (that is setActive is
called with true).
|
|
|
|
|
|
b380274e3d85b8de1370a2dad43ec501bb43ca08 (#3476) changed the way we look
for the GRPC_CPP_PLUGIN but forgot to include an assignment for that
variable on non-Windows systems, which caused the build to fail for
them.
|
|
don't use "which" on Windows
|
|
In b263b91340fb8b359e34626de880f606cfd9c116 I exchanged QString::sprintf
with QString::asprintf as the former was declared deprecated from Qt 5.5
onwards. I forgot to check the docs though. If I had, I would have
noticed that in contrast to sprintf, asprintf is a static function which
returns the assembled String (sprintf wrote it to the object it was
being called on). Thus I also have to assign the return value of
asprintf to a variable in order to have it have an effect.
|
|
on Windows
This allows to build gRPC support for Windows.
|
|
|