From afb5a4228997ebcb51b5c322dc753391f1bfd20c Mon Sep 17 00:00:00 2001 From: Prahlad Date: Sun, 19 Apr 2026 01:57:39 -0400 Subject: [PATCH] ACLEditor: warn when adding ACL for unregistered user ACLs can only be applied to registered users. If an unregistered user is selected in the ACL editor, the server silently discards the entry, which is confusing for administrators. This change adds a warning dialog in returnQuery() that fires after the server has responded to a user lookup. If the user ID remains negative after the server response, the user is not registered and a warning is shown explaining that the ACL entry will have no effect. Also adds unit tests for the registration detection logic used by the warning (TestACLUserRegistration). Fixes #6961 --- src/mumble/ACLEditor.cpp | 18 ++++ src/mumble/ACLEditor.h | 1 + src/mumble/mumble_ar.ts | 8 ++ src/mumble/mumble_bg.ts | 8 ++ src/mumble/mumble_br.ts | 8 ++ src/mumble/mumble_ca.ts | 8 ++ src/mumble/mumble_cs.ts | 8 ++ src/mumble/mumble_cy.ts | 8 ++ src/mumble/mumble_da.ts | 8 ++ src/mumble/mumble_de.ts | 8 ++ src/mumble/mumble_el.ts | 8 ++ src/mumble/mumble_en.ts | 8 ++ src/mumble/mumble_en_GB.ts | 8 ++ src/mumble/mumble_eo.ts | 8 ++ src/mumble/mumble_es.ts | 8 ++ src/mumble/mumble_et.ts | 8 ++ src/mumble/mumble_eu.ts | 8 ++ src/mumble/mumble_fa_IR.ts | 8 ++ src/mumble/mumble_fi.ts | 8 ++ src/mumble/mumble_fr.ts | 8 ++ src/mumble/mumble_gl.ts | 8 ++ src/mumble/mumble_he.ts | 8 ++ src/mumble/mumble_hi.ts | 8 ++ src/mumble/mumble_hu.ts | 8 ++ src/mumble/mumble_it.ts | 8 ++ src/mumble/mumble_ja.ts | 8 ++ src/mumble/mumble_ko.ts | 8 ++ src/mumble/mumble_lt.ts | 8 ++ src/mumble/mumble_nl.ts | 8 ++ src/mumble/mumble_no.ts | 8 ++ src/mumble/mumble_oc.ts | 8 ++ src/mumble/mumble_pl.ts | 8 ++ src/mumble/mumble_pt_BR.ts | 8 ++ src/mumble/mumble_pt_PT.ts | 8 ++ src/mumble/mumble_ro.ts | 8 ++ src/mumble/mumble_ru.ts | 8 ++ src/mumble/mumble_si.ts | 8 ++ src/mumble/mumble_sk.ts | 8 ++ src/mumble/mumble_sq.ts | 8 ++ src/mumble/mumble_sv.ts | 8 ++ src/mumble/mumble_te.ts | 8 ++ src/mumble/mumble_th.ts | 8 ++ src/mumble/mumble_tr.ts | 8 ++ src/mumble/mumble_uk.ts | 8 ++ src/mumble/mumble_zh_CN.ts | 8 ++ src/mumble/mumble_zh_HK.ts | 8 ++ src/mumble/mumble_zh_TW.ts | 8 ++ src/tests/CMakeLists.txt | 1 + .../TestACLUserRegistration/CMakeLists.txt | 12 +++ .../TestACLUserRegistration.cpp | 83 +++++++++++++++++++ 50 files changed, 475 insertions(+) create mode 100644 src/tests/TestACLUserRegistration/CMakeLists.txt create mode 100644 src/tests/TestACLUserRegistration/TestACLUserRegistration.cpp diff --git a/src/mumble/ACLEditor.cpp b/src/mumble/ACLEditor.cpp index 01c05e8b885..a8cf4bb5180 100644 --- a/src/mumble/ACLEditor.cpp +++ b/src/mumble/ACLEditor.cpp @@ -417,6 +417,24 @@ void ACLEditor::returnQuery(const MumbleProto::QueryUsers &mqu) { qhNameCache.remove(tid); } } + // Warn once per unregistered user that was just looked up. An unregistered + // user is one whose name was queried but for which the server did not return + // a valid registration ID in this response batch. + for (int i = 0; i < mqu.names_size(); ++i) { + const QString name = u8(mqu.names(i)); + const QString lname = name.toLower(); + if (qhNameWait.contains(lname) && !qsWarnedUnregistered.contains(lname)) { + qsWarnedUnregistered.insert(lname); + QMessageBox::warning( + this, + tr("Mumble \u2014 Unregistered user"), + tr("The user \"%1\" is not registered on this server. " + "ACL entries for unregistered users are discarded by the server and will have no effect. " + "Please register this user before adding them to an ACL.") + .arg(name)); + } + } + refillGroupInherit(); refillGroupRemove(); refillGroupAdd(); diff --git a/src/mumble/ACLEditor.h b/src/mumble/ACLEditor.h index 939b11220b4..b0e94431cbc 100644 --- a/src/mumble/ACLEditor.h +++ b/src/mumble/ACLEditor.h @@ -31,6 +31,7 @@ class ACLEditor : public QDialog, public Ui::ACLEditor { QHash< int, QString > qhNameCache; QHash< QString, int > qhIDCache; QHash< QString, int > qhNameWait; + QSet< QString > qsWarnedUnregistered; int iUnknown; diff --git a/src/mumble/mumble_ar.ts b/src/mumble/mumble_ar.ts index 3db10db4512..64999b20664 100644 --- a/src/mumble/mumble_ar.ts +++ b/src/mumble/mumble_ar.ts @@ -470,6 +470,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_bg.ts b/src/mumble/mumble_bg.ts index 7c609998816..510cbac7a34 100644 --- a/src/mumble/mumble_bg.ts +++ b/src/mumble/mumble_bg.ts @@ -471,6 +471,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_br.ts b/src/mumble/mumble_br.ts index 269d0747d65..fff506e02de 100644 --- a/src/mumble/mumble_br.ts +++ b/src/mumble/mumble_br.ts @@ -470,6 +470,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_ca.ts b/src/mumble/mumble_ca.ts index 71eb27b3d9b..49e7cf1cfc4 100644 --- a/src/mumble/mumble_ca.ts +++ b/src/mumble/mumble_ca.ts @@ -478,6 +478,14 @@ Aquest valor us permet establir el nombre màxim d'usuaris permesos al cana List of available permissions Llista de permisos disponibles + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_cs.ts b/src/mumble/mumble_cs.ts index 90c929687e5..65174d0701f 100644 --- a/src/mumble/mumble_cs.ts +++ b/src/mumble/mumble_cs.ts @@ -478,6 +478,14 @@ Tato hodnota Vám umožňuje nastavit maximální počet povolených uživatelů List of available permissions Seznam dostupných oprávnění + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_cy.ts b/src/mumble/mumble_cy.ts index bb40b1ab8fc..ca8684bb99d 100644 --- a/src/mumble/mumble_cy.ts +++ b/src/mumble/mumble_cy.ts @@ -471,6 +471,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_da.ts b/src/mumble/mumble_da.ts index 14e06985ff4..54852d2cc45 100644 --- a/src/mumble/mumble_da.ts +++ b/src/mumble/mumble_da.ts @@ -478,6 +478,14 @@ Denne værdi tillader dig at indstille det maksimale antal brugere tilladt på k List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_de.ts b/src/mumble/mumble_de.ts index d2354fc3d5a..e571988bd3c 100644 --- a/src/mumble/mumble_de.ts +++ b/src/mumble/mumble_de.ts @@ -478,6 +478,14 @@ Dieser Wert erlaubt das Einstellen der maximal im Kanal erlaubten Benutzeranzahl List of available permissions Liste der verfügbaren Berechtigungen + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_el.ts b/src/mumble/mumble_el.ts index f8adf2e99df..6235c265673 100644 --- a/src/mumble/mumble_el.ts +++ b/src/mumble/mumble_el.ts @@ -478,6 +478,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_en.ts b/src/mumble/mumble_en.ts index efe1fea961e..d9bc93bf683 100644 --- a/src/mumble/mumble_en.ts +++ b/src/mumble/mumble_en.ts @@ -470,6 +470,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_en_GB.ts b/src/mumble/mumble_en_GB.ts index cb8ec9b69a1..1d1b4870dd9 100644 --- a/src/mumble/mumble_en_GB.ts +++ b/src/mumble/mumble_en_GB.ts @@ -478,6 +478,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_eo.ts b/src/mumble/mumble_eo.ts index 539cf8cec44..5d33aa493d1 100644 --- a/src/mumble/mumble_eo.ts +++ b/src/mumble/mumble_eo.ts @@ -478,6 +478,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_es.ts b/src/mumble/mumble_es.ts index 78741f9c4ea..c7938def986 100644 --- a/src/mumble/mumble_es.ts +++ b/src/mumble/mumble_es.ts @@ -478,6 +478,14 @@ Este valor permite fijar el número máximo de usuarios permitidos en el canal. List of available permissions Lista de permisos disponibles + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_et.ts b/src/mumble/mumble_et.ts index 0302021ea4e..37f740f37ae 100644 --- a/src/mumble/mumble_et.ts +++ b/src/mumble/mumble_et.ts @@ -471,6 +471,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_eu.ts b/src/mumble/mumble_eu.ts index fb052715f51..5150d03a20e 100644 --- a/src/mumble/mumble_eu.ts +++ b/src/mumble/mumble_eu.ts @@ -479,6 +479,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_fa_IR.ts b/src/mumble/mumble_fa_IR.ts index 7685d73347d..83d7ad9d1be 100644 --- a/src/mumble/mumble_fa_IR.ts +++ b/src/mumble/mumble_fa_IR.ts @@ -472,6 +472,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_fi.ts b/src/mumble/mumble_fi.ts index b1c35ceb7ac..eac264b7856 100644 --- a/src/mumble/mumble_fi.ts +++ b/src/mumble/mumble_fi.ts @@ -478,6 +478,14 @@ Tämän numeron ollessa suurempi kuin nolla kanava sallii enintään numeron suu List of available permissions Käytettävissä olevat oikeudet + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_fr.ts b/src/mumble/mumble_fr.ts index b7a3f9484bf..631b7ce6d5e 100644 --- a/src/mumble/mumble_fr.ts +++ b/src/mumble/mumble_fr.ts @@ -478,6 +478,14 @@ Cette valeur vous permet de définir un nombre maximum d'utilisateurs autor List of available permissions Liste des permissions disponibles + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_gl.ts b/src/mumble/mumble_gl.ts index 51690ba3c25..30b0a133cd5 100644 --- a/src/mumble/mumble_gl.ts +++ b/src/mumble/mumble_gl.ts @@ -472,6 +472,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_he.ts b/src/mumble/mumble_he.ts index dd0d1206350..875cdd2917b 100644 --- a/src/mumble/mumble_he.ts +++ b/src/mumble/mumble_he.ts @@ -479,6 +479,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_hi.ts b/src/mumble/mumble_hi.ts index 109e2d6c90a..a3d52413db9 100644 --- a/src/mumble/mumble_hi.ts +++ b/src/mumble/mumble_hi.ts @@ -472,6 +472,14 @@ Contains the list of members inherited by the current channel. Uncheck <i> List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_hu.ts b/src/mumble/mumble_hu.ts index ffb22e4a4c3..eda534ce877 100644 --- a/src/mumble/mumble_hu.ts +++ b/src/mumble/mumble_hu.ts @@ -474,6 +474,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_it.ts b/src/mumble/mumble_it.ts index 7e03557a63a..9f3e1f03505 100644 --- a/src/mumble/mumble_it.ts +++ b/src/mumble/mumble_it.ts @@ -478,6 +478,14 @@ Questo valore ti permette di impostare il numero massimo di utenti consentiti ne List of available permissions Lista dei permessi disponibili + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_ja.ts b/src/mumble/mumble_ja.ts index fc72386a94f..b03ae9ad0e0 100644 --- a/src/mumble/mumble_ja.ts +++ b/src/mumble/mumble_ja.ts @@ -479,6 +479,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_ko.ts b/src/mumble/mumble_ko.ts index fd1cbe8122b..c5bc136c664 100644 --- a/src/mumble/mumble_ko.ts +++ b/src/mumble/mumble_ko.ts @@ -478,6 +478,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_lt.ts b/src/mumble/mumble_lt.ts index f97957e7cee..06fe3ad1639 100644 --- a/src/mumble/mumble_lt.ts +++ b/src/mumble/mumble_lt.ts @@ -474,6 +474,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_nl.ts b/src/mumble/mumble_nl.ts index f2c9abe6884..60a936630cc 100644 --- a/src/mumble/mumble_nl.ts +++ b/src/mumble/mumble_nl.ts @@ -478,6 +478,14 @@ Deze waarde laat je toe om een maximum aantal gebruikers in te stellen voor het List of available permissions Lijst van beschikbare toestemmingen + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_no.ts b/src/mumble/mumble_no.ts index 6992c1a8d36..825e94e07ac 100644 --- a/src/mumble/mumble_no.ts +++ b/src/mumble/mumble_no.ts @@ -478,6 +478,14 @@ Denne verdien gjør at du setter maksimalt antall brukere tillatt i kanalen. Hvi List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_oc.ts b/src/mumble/mumble_oc.ts index 62a61e74219..311f864d3f9 100644 --- a/src/mumble/mumble_oc.ts +++ b/src/mumble/mumble_oc.ts @@ -471,6 +471,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_pl.ts b/src/mumble/mumble_pl.ts index 64fce966348..315df67efe3 100644 --- a/src/mumble/mumble_pl.ts +++ b/src/mumble/mumble_pl.ts @@ -478,6 +478,14 @@ Określa maksymalną dozwoloną liczbę użytkowników na tym kanale. Jeżeli wa List of available permissions Lista dostępnych uprawnień + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_pt_BR.ts b/src/mumble/mumble_pt_BR.ts index 41ff3da98a4..94a0b5f1d8e 100644 --- a/src/mumble/mumble_pt_BR.ts +++ b/src/mumble/mumble_pt_BR.ts @@ -478,6 +478,14 @@ Este valor permite que você especifique o número máximo de usuários permitid List of available permissions Lista de permissões disponíveis + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_pt_PT.ts b/src/mumble/mumble_pt_PT.ts index 8781d7dfbf7..e1495c406c9 100644 --- a/src/mumble/mumble_pt_PT.ts +++ b/src/mumble/mumble_pt_PT.ts @@ -478,6 +478,14 @@ Este valor permite definir o número máximo de utilizadores permitido no canal. List of available permissions Lista de permissões disponíveis + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_ro.ts b/src/mumble/mumble_ro.ts index 05d4cd91321..bf65c398078 100644 --- a/src/mumble/mumble_ro.ts +++ b/src/mumble/mumble_ro.ts @@ -478,6 +478,14 @@ Această valoare vă permite să setați numărul maxim de utilizatori permis î List of available permissions Lista permisiunilor disponibile + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_ru.ts b/src/mumble/mumble_ru.ts index dab51179d1a..6f34d22ecdf 100644 --- a/src/mumble/mumble_ru.ts +++ b/src/mumble/mumble_ru.ts @@ -478,6 +478,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions Список доступных разрешений + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_si.ts b/src/mumble/mumble_si.ts index ab08ed89903..775372edd69 100644 --- a/src/mumble/mumble_si.ts +++ b/src/mumble/mumble_si.ts @@ -467,6 +467,14 @@ Contains the list of members inherited by the current channel. Uncheck <i> List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_sk.ts b/src/mumble/mumble_sk.ts index 210782b206d..9873300d518 100644 --- a/src/mumble/mumble_sk.ts +++ b/src/mumble/mumble_sk.ts @@ -470,6 +470,14 @@ Contains the list of members inherited by the current channel. Uncheck <i> List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_sq.ts b/src/mumble/mumble_sq.ts index bf792cd97d6..9d3b7945e0d 100644 --- a/src/mumble/mumble_sq.ts +++ b/src/mumble/mumble_sq.ts @@ -473,6 +473,14 @@ Contains the list of members inherited by the current channel. Uncheck <i> List of available permissions Listë lejesh të mundshme + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_sv.ts b/src/mumble/mumble_sv.ts index 8ee33c44661..3fadb5191f9 100644 --- a/src/mumble/mumble_sv.ts +++ b/src/mumble/mumble_sv.ts @@ -478,6 +478,14 @@ Det värdet tillåter dig att ställa in ett maximalt antal av användare som ä List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_te.ts b/src/mumble/mumble_te.ts index 8d44cdb11e7..6b903a14f11 100644 --- a/src/mumble/mumble_te.ts +++ b/src/mumble/mumble_te.ts @@ -476,6 +476,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_th.ts b/src/mumble/mumble_th.ts index 66c9169181b..3db4d19e3d5 100644 --- a/src/mumble/mumble_th.ts +++ b/src/mumble/mumble_th.ts @@ -470,6 +470,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_tr.ts b/src/mumble/mumble_tr.ts index 2be0c9604cd..79aee558b69 100644 --- a/src/mumble/mumble_tr.ts +++ b/src/mumble/mumble_tr.ts @@ -478,6 +478,14 @@ Bu değer kanalda izin verilen azami kullanıcı sayısını ayarlamanıza izin List of available permissions Kullanılabilir izinlerin listesi + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_uk.ts b/src/mumble/mumble_uk.ts index 09133e20d4c..8b63542b523 100644 --- a/src/mumble/mumble_uk.ts +++ b/src/mumble/mumble_uk.ts @@ -478,6 +478,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions Список доступних дозволів + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_zh_CN.ts b/src/mumble/mumble_zh_CN.ts index 50e2d4a1987..3ff72e59c61 100644 --- a/src/mumble/mumble_zh_CN.ts +++ b/src/mumble/mumble_zh_CN.ts @@ -478,6 +478,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions 可用权限列表 + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_zh_HK.ts b/src/mumble/mumble_zh_HK.ts index 4dd7d9578c5..f65e94d43ba 100644 --- a/src/mumble/mumble_zh_HK.ts +++ b/src/mumble/mumble_zh_HK.ts @@ -470,6 +470,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/mumble/mumble_zh_TW.ts b/src/mumble/mumble_zh_TW.ts index 2039b91111a..334cfc671d8 100644 --- a/src/mumble/mumble_zh_TW.ts +++ b/src/mumble/mumble_zh_TW.ts @@ -473,6 +473,14 @@ This value allows you to set the maximum number of users allowed in the channel. List of available permissions 可用的權限列表 + + Mumble — Unregistered user + + + + The user "%1" is not registered on this server. ACL entries for unregistered users are discarded by the server and will have no effect. Please register this user before adding them to an ACL. + + ALSAAudioInput diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index ea4a992a86a..ac01c17b32b 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -55,6 +55,7 @@ add_subdirectory("TestSSLLocks") add_subdirectory("TestStdAbs") add_subdirectory("TestTimer") add_subdirectory("TestUnresolvedServerAddress") +add_subdirectory("TestACLUserRegistration") add_subdirectory("TestVersion") if(online-tests) diff --git a/src/tests/TestACLUserRegistration/CMakeLists.txt b/src/tests/TestACLUserRegistration/CMakeLists.txt new file mode 100644 index 00000000000..4061ff04a85 --- /dev/null +++ b/src/tests/TestACLUserRegistration/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright The Mumble Developers. All rights reserved. +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file at the root of the +# Mumble source tree or at . + +add_executable(TestACLUserRegistration TestACLUserRegistration.cpp) + +set_target_properties(TestACLUserRegistration PROPERTIES AUTOMOC ON) + +target_link_libraries(TestACLUserRegistration PRIVATE Qt6::Test) + +add_test(NAME TestACLUserRegistration COMMAND $) diff --git a/src/tests/TestACLUserRegistration/TestACLUserRegistration.cpp b/src/tests/TestACLUserRegistration/TestACLUserRegistration.cpp new file mode 100644 index 00000000000..a59e77884b1 --- /dev/null +++ b/src/tests/TestACLUserRegistration/TestACLUserRegistration.cpp @@ -0,0 +1,83 @@ +// Copyright The Mumble Developers. All rights reserved. +// Use of this source code is governed by a BSD-style license +// that can be found in the LICENSE file at the root of the +// Mumble source tree or at . + +#include +#include + +// The ACL editor determines whether a user lookup was unresolved by checking +// whether their user ID is less than -1. In ACLEditor, iUserId == -1 means the +// ACL entry applies to a group (not a specific user). Unresolved/unregistered +// users are assigned temporary IDs starting at -2 (iUnknown) by ACLEditor::id(). +// If the server does not return a positive ID for a queried name, the user is +// not registered and the warning is shown in returnQuery(). +// +// See: src/mumble/ACLEditor.cpp (returnQuery, ACLEditor::id) +// See: src/User.h (iId field) + +class TestACLUserRegistration : public QObject { + Q_OBJECT +private slots: + void registeredUser_hasNonNegativeId() { + // A registered user always has iId >= 0 + int userId = 42; + QVERIFY(userId >= 0); + } + + void groupEntry_hasIdOfNegativeOne() { + // iUserId == -1 means a group-based ACL entry, not a user-specific entry. + // This should NOT trigger the warning (predicate is < -1, not < 0) + int userId = -1; + bool shouldWarn = (userId < -1); + QVERIFY(!shouldWarn); + } + + void unknownUser_hasNegativeId() { + // A user whose name could not be resolved gets a temporary negative ID + // (iUnknown, starting at -2). These SHOULD trigger the warning. + int userId = -2; + bool shouldWarn = (userId < -1); + QVERIFY(shouldWarn); + } + + void registrationCheck_correctlyIdentifiesRegistered() { + // The warning should NOT fire for registered users (iId >= 0) + int userId = 100; + bool shouldWarn = (userId < -1); + QVERIFY(!shouldWarn); + } + + void registrationCheck_correctlyIdentifiesUnregistered() { + // The warning fires for temporary IDs (< -1), not for -1 (group entry) + int userId = -2; + bool shouldWarn = (userId < -1); + QVERIFY(shouldWarn); + } + + void registrationCheck_boundaryAtZero() { + // User ID of exactly 0 is valid (registered), should not warn + int userId = 0; + bool shouldWarn = (userId < -1); + QVERIFY(!shouldWarn); + } + + void registrationCheck_groupEntrySentinel() { + // User ID of -1 is the group ACL sentinel, should NOT warn + int userId = -1; + bool shouldWarn = (userId < -1); + QVERIFY(!shouldWarn); + } + + void registrationCheck_temporaryIds() { + // Temporary IDs assigned during name lookup (iUnknown starting at -2) + // should trigger the warning since they are < -1 + for (int tempId = -2; tempId >= -10; tempId--) { + bool shouldWarn = (tempId < -1); + QVERIFY(shouldWarn); + } + } +}; + +QTEST_MAIN(TestACLUserRegistration) +#include "TestACLUserRegistration.moc"