From f5ad0a4c6078089c33ed536866a80c47cc18eccc Mon Sep 17 00:00:00 2001 From: Luna Anni Lux Date: Tue, 3 Mar 2026 23:13:44 +0100 Subject: [PATCH 1/3] FEAT(client, server): Added PrivateMessage ChanACL with translations FEAT(client, server): Added check for PrivateMessage ACL Only show the ACL when proper server version is given FIX(client, server): ChanACL::PrivateMessage is now a channel permission FIX(client): ChanACL range FIX(ACL): Use TextMessage as fallback for PrivateMessage ACL REVERT(ACL): Using TextMessage as a fallback for PrivateMessage --- src/ACL.cpp | 4 ++++ src/ACL.h | 3 ++- src/mumble/ACLEditor.cpp | 4 ++++ src/mumble/MainWindow.cpp | 21 +++++++++++++++++---- src/murmur/Messages.cpp | 4 ++-- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/ACL.cpp b/src/ACL.cpp index 86aeaeef7b6..15b23c269ab 100644 --- a/src/ACL.cpp +++ b/src/ACL.cpp @@ -314,6 +314,8 @@ QString ChanACL::whatsThis(Perm p) { case Listen: return tr("This represents the permission to use the listen-feature allowing to listen to a channel " "without being in it."); + case PrivateMessage: + return tr("This represents the permission to write direct text messages to other users on the server."); default: break; } @@ -369,6 +371,8 @@ QString ChanACL::permName(Perm p) { return tr("Register Self"); case Listen: return tr("Listen"); + case PrivateMessage: + return tr("Private message"); default: break; } diff --git a/src/ACL.h b/src/ACL.h index f9046c9ce47..a58d5fd5297 100644 --- a/src/ACL.h +++ b/src/ACL.h @@ -32,6 +32,7 @@ class ChanACL : public QObject { TextMessage = 0x200, MakeTempChannel = 0x400, Listen = 0x800, + PrivateMessage = 0x1000, // Root channel only Kick = 0x10000, @@ -42,7 +43,7 @@ class ChanACL : public QObject { Cached = 0x8000000, All = Write + Traverse + Enter + Speak + MuteDeafen + Move + MakeChannel + LinkChannel + Whisper + TextMessage - + MakeTempChannel + Listen + Kick + Ban + Register + SelfRegister + ResetUserContent + + MakeTempChannel + Listen + PrivateMessage + Kick + Ban + Register + SelfRegister + ResetUserContent }; Q_DECLARE_FLAGS(Permissions, Perm) diff --git a/src/mumble/ACLEditor.cpp b/src/mumble/ACLEditor.cpp index 01c05e8b885..4825a77bd20 100644 --- a/src/mumble/ACLEditor.cpp +++ b/src/mumble/ACLEditor.cpp @@ -120,6 +120,10 @@ ACLEditor::ACLEditor(unsigned int channelid, const MumbleProto::ACL &mea, QWidge && (perm == ChanACL::ResetUserContent || perm == ChanACL::Listen)) { continue; } + else if (Global::get().sh->m_version < Version::fromComponents(1, 7, 0) + && (perm == ChanACL::PrivateMessage)) { + continue; + } QCheckBox *qcb; l = new QLabel(name, qgbACLpermissions); diff --git a/src/mumble/MainWindow.cpp b/src/mumble/MainWindow.cpp index 057005fd85f..757558ec4db 100644 --- a/src/mumble/MainWindow.cpp +++ b/src/mumble/MainWindow.cpp @@ -2057,7 +2057,6 @@ void MainWindow::on_qaUserBan_triggered() { void MainWindow::on_qaUserTextMessage_triggered() { ClientUser *p = getContextMenuUser(); - if (!p) return; @@ -2627,7 +2626,12 @@ void MainWindow::updateMenuPermissions() { qaUserDeaf->setEnabled(p & (ChanACL::Write | ChanACL::MuteDeafen) && ((target.user != user) || target.user->bDeaf)); qaUserPrioritySpeaker->setEnabled(p & (ChanACL::Write | ChanACL::MuteDeafen)); - qaUserTextMessage->setEnabled(p & (ChanACL::Write | ChanACL::TextMessage)); + if (Global::get().sh && (Global::get().sh->m_version >= Version::fromComponents(1, 7, 0))) { + qaUserTextMessage->setEnabled(p & (ChanACL::Write | ChanACL::PrivateMessage)); + } + else { + qaUserTextMessage->setEnabled(p & (ChanACL::Write | ChanACL::TextMessage)); + } qaUserInformation->setEnabled((Global::get().pPermissions & (ChanACL::Write | ChanACL::Register)) || (p & (ChanACL::Write | ChanACL::Enter)) || (target.user == user)); } else { @@ -2653,11 +2657,20 @@ void MainWindow::updateMenuPermissions() { qaChannelSendMessage->setEnabled(p & (ChanACL::Write | ChanACL::TextMessage)); qaChannelHide->setEnabled(target.channel); qaChannelPin->setEnabled(target.channel); - bool chatBarEnabled = false; if (Global::get().uiSession) { if (Global::get().s.bChatBarUseSelection && (target.channel || target.user)) { - chatBarEnabled = p & (ChanACL::Write | ChanACL::TextMessage); + if (Global::get().sh && (Global::get().sh->m_version >= Version::fromComponents(1, 7, 0))) { + if (target.user) { + chatBarEnabled = p & (ChanACL::Write | ChanACL::PrivateMessage); + } + else if (target.channel) { + chatBarEnabled = p & (ChanACL::Write | ChanACL::TextMessage); + } + } + else{ + chatBarEnabled = p & (ChanACL::Write | ChanACL::TextMessage); + } } else if (homec) { chatBarEnabled = homep & (ChanACL::Write | ChanACL::TextMessage); } diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp index 62a6880f4f5..3a86ea4b5c9 100644 --- a/src/murmur/Messages.cpp +++ b/src/murmur/Messages.cpp @@ -1738,8 +1738,8 @@ void Server::msgTextMessage(ServerUser *uSource, MumbleProto::TextMessage &msg) unsigned int session = msg.session(i); ServerUser *u = qhUsers.value(session); if (u) { - if (!ChanACL::hasPermission(uSource, u->cChannel, ChanACL::TextMessage, &acCache)) { - PERM_DENIED(uSource, u->cChannel, ChanACL::TextMessage); + if (!ChanACL::hasPermission(uSource, u->cChannel, ChanACL::PrivateMessage, &acCache)) { + PERM_DENIED(uSource, u->cChannel, ChanACL::PrivateMessage); return; } users.insert(u); From 324c9fcafb77f5c20bce62c4d8566beba5a3c1d6 Mon Sep 17 00:00:00 2001 From: luxanna Date: Fri, 6 Mar 2026 20:52:09 +0100 Subject: [PATCH 2/3] TRANSLATION: Update translation files --- 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 ++++++++ 45 files changed, 360 insertions(+) diff --git a/src/mumble/mumble_ar.ts b/src/mumble/mumble_ar.ts index 3db10db4512..bac705ebdd4 100644 --- a/src/mumble/mumble_ar.ts +++ b/src/mumble/mumble_ar.ts @@ -2988,6 +2988,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_bg.ts b/src/mumble/mumble_bg.ts index 7c609998816..a126eb14ff8 100644 --- a/src/mumble/mumble_bg.ts +++ b/src/mumble/mumble_bg.ts @@ -2985,6 +2985,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_br.ts b/src/mumble/mumble_br.ts index 269d0747d65..271b4b68d1f 100644 --- a/src/mumble/mumble_br.ts +++ b/src/mumble/mumble_br.ts @@ -2984,6 +2984,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_ca.ts b/src/mumble/mumble_ca.ts index 71eb27b3d9b..57c95dd9ab2 100644 --- a/src/mumble/mumble_ca.ts +++ b/src/mumble/mumble_ca.ts @@ -3025,6 +3025,14 @@ Esteu segur que vols substituir el vostre certificat? Reset User Content Reinicia el Contingut de l'Usuaei + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_cs.ts b/src/mumble/mumble_cs.ts index 90c929687e5..abe683deadb 100644 --- a/src/mumble/mumble_cs.ts +++ b/src/mumble/mumble_cs.ts @@ -3026,6 +3026,14 @@ Jste si jisti, že chcete certifikát nahradit? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_cy.ts b/src/mumble/mumble_cy.ts index bb40b1ab8fc..ebc89245f1b 100644 --- a/src/mumble/mumble_cy.ts +++ b/src/mumble/mumble_cy.ts @@ -2988,6 +2988,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_da.ts b/src/mumble/mumble_da.ts index 14e06985ff4..a4ea988e346 100644 --- a/src/mumble/mumble_da.ts +++ b/src/mumble/mumble_da.ts @@ -3025,6 +3025,14 @@ Er du sikker på du vil erstatte dit certifikat? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_de.ts b/src/mumble/mumble_de.ts index d2354fc3d5a..9946e3488b0 100644 --- a/src/mumble/mumble_de.ts +++ b/src/mumble/mumble_de.ts @@ -3025,6 +3025,14 @@ Sind Sie sicher, dass Sie Ihr Zertifikat ersetzen möchten? Reset User Content Setze Benutzer-Inhalt zurück + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_el.ts b/src/mumble/mumble_el.ts index f8adf2e99df..4ec1f97e78b 100644 --- a/src/mumble/mumble_el.ts +++ b/src/mumble/mumble_el.ts @@ -3025,6 +3025,14 @@ Are you sure you wish to replace your certificate? Reset User Content Επαναφορά περιεχομένου χρήστη + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_en.ts b/src/mumble/mumble_en.ts index efe1fea961e..26c859cbb34 100644 --- a/src/mumble/mumble_en.ts +++ b/src/mumble/mumble_en.ts @@ -2983,6 +2983,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_en_GB.ts b/src/mumble/mumble_en_GB.ts index cb8ec9b69a1..90a17043243 100644 --- a/src/mumble/mumble_en_GB.ts +++ b/src/mumble/mumble_en_GB.ts @@ -3025,6 +3025,14 @@ Are you sure you wish to replace your certificate? Reset User Content Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_eo.ts b/src/mumble/mumble_eo.ts index 539cf8cec44..0756829152c 100644 --- a/src/mumble/mumble_eo.ts +++ b/src/mumble/mumble_eo.ts @@ -2992,6 +2992,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_es.ts b/src/mumble/mumble_es.ts index 78741f9c4ea..c3c32f33ef9 100644 --- a/src/mumble/mumble_es.ts +++ b/src/mumble/mumble_es.ts @@ -3025,6 +3025,14 @@ Are you sure you wish to replace your certificate? Reset User Content Restablecer contenido del usuario + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_et.ts b/src/mumble/mumble_et.ts index 0302021ea4e..174d83a4e90 100644 --- a/src/mumble/mumble_et.ts +++ b/src/mumble/mumble_et.ts @@ -2985,6 +2985,14 @@ Are you sure you wish to replace your certificate? Reset User Content Nulli kasutaja sisu + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_eu.ts b/src/mumble/mumble_eu.ts index fb052715f51..e3c03bf6bd8 100644 --- a/src/mumble/mumble_eu.ts +++ b/src/mumble/mumble_eu.ts @@ -2995,6 +2995,14 @@ adierazten du. Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_fa_IR.ts b/src/mumble/mumble_fa_IR.ts index 7685d73347d..e4e15dd0978 100644 --- a/src/mumble/mumble_fa_IR.ts +++ b/src/mumble/mumble_fa_IR.ts @@ -2985,6 +2985,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_fi.ts b/src/mumble/mumble_fi.ts index b1c35ceb7ac..0863b6f4184 100644 --- a/src/mumble/mumble_fi.ts +++ b/src/mumble/mumble_fi.ts @@ -3025,6 +3025,14 @@ Haluatko varmasti korvata varmenteen? Reset User Content Poista käyttäjän sisältö + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_fr.ts b/src/mumble/mumble_fr.ts index b7a3f9484bf..144d8c2b040 100644 --- a/src/mumble/mumble_fr.ts +++ b/src/mumble/mumble_fr.ts @@ -3025,6 +3025,14 @@ Are you sure you wish to replace your certificate? Reset User Content Réinitialiser le contenu utilisateur + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_gl.ts b/src/mumble/mumble_gl.ts index 51690ba3c25..d59fc236e73 100644 --- a/src/mumble/mumble_gl.ts +++ b/src/mumble/mumble_gl.ts @@ -2986,6 +2986,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_he.ts b/src/mumble/mumble_he.ts index dd0d1206350..9a8bc2874e0 100644 --- a/src/mumble/mumble_he.ts +++ b/src/mumble/mumble_he.ts @@ -3023,6 +3023,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_hi.ts b/src/mumble/mumble_hi.ts index 109e2d6c90a..053dd796a91 100644 --- a/src/mumble/mumble_hi.ts +++ b/src/mumble/mumble_hi.ts @@ -2971,6 +2971,14 @@ Are you sure you wish to replace your certificate? Listen + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_hu.ts b/src/mumble/mumble_hu.ts index ffb22e4a4c3..88eba62be85 100644 --- a/src/mumble/mumble_hu.ts +++ b/src/mumble/mumble_hu.ts @@ -3014,6 +3014,14 @@ Biztos abban, hogy le akarja cserélni a tanúsítványát? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_it.ts b/src/mumble/mumble_it.ts index 7e03557a63a..3e5a821274f 100644 --- a/src/mumble/mumble_it.ts +++ b/src/mumble/mumble_it.ts @@ -3025,6 +3025,14 @@ Sei sicuro di voler sostituire il tuo certificato? Reset User Content Cancella Contenuto Utente + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_ja.ts b/src/mumble/mumble_ja.ts index fc72386a94f..a5da070ba8e 100644 --- a/src/mumble/mumble_ja.ts +++ b/src/mumble/mumble_ja.ts @@ -3020,6 +3020,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_ko.ts b/src/mumble/mumble_ko.ts index fd1cbe8122b..e1a3d547431 100644 --- a/src/mumble/mumble_ko.ts +++ b/src/mumble/mumble_ko.ts @@ -3024,6 +3024,14 @@ Are you sure you wish to replace your certificate? Reset User Content 유저 내용 초기화 + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_lt.ts b/src/mumble/mumble_lt.ts index f97957e7cee..578fa518a08 100644 --- a/src/mumble/mumble_lt.ts +++ b/src/mumble/mumble_lt.ts @@ -3016,6 +3016,14 @@ Ar tikrai norite pakeisti savo liudijimą? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_nl.ts b/src/mumble/mumble_nl.ts index f2c9abe6884..d77786173be 100644 --- a/src/mumble/mumble_nl.ts +++ b/src/mumble/mumble_nl.ts @@ -3025,6 +3025,14 @@ Weet je zeker dat je jouw certificaat wilt vervangen? Reset User Content Gebruikersinhoud wissen + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_no.ts b/src/mumble/mumble_no.ts index 6992c1a8d36..a95025cad9f 100644 --- a/src/mumble/mumble_no.ts +++ b/src/mumble/mumble_no.ts @@ -3039,6 +3039,14 @@ Er du sikker på at du vil erstatte ditt sertifikat? Reset User Content Tilbakestill brukerinnhold + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_oc.ts b/src/mumble/mumble_oc.ts index 62a61e74219..d44a5039559 100644 --- a/src/mumble/mumble_oc.ts +++ b/src/mumble/mumble_oc.ts @@ -2985,6 +2985,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_pl.ts b/src/mumble/mumble_pl.ts index 64fce966348..4348c04fa45 100644 --- a/src/mumble/mumble_pl.ts +++ b/src/mumble/mumble_pl.ts @@ -3026,6 +3026,14 @@ Czy na pewno chcesz zastąpić swój bieżący certyfikat? Reset User Content Resetuj treści użytkownika + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_pt_BR.ts b/src/mumble/mumble_pt_BR.ts index 41ff3da98a4..444b3336dda 100644 --- a/src/mumble/mumble_pt_BR.ts +++ b/src/mumble/mumble_pt_BR.ts @@ -3025,6 +3025,14 @@ Você tem certeza de que quer substituir o seu certificado? Reset User Content Restaurar Conteúdo de Usuários + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_pt_PT.ts b/src/mumble/mumble_pt_PT.ts index 8781d7dfbf7..9ffaeba42ca 100644 --- a/src/mumble/mumble_pt_PT.ts +++ b/src/mumble/mumble_pt_PT.ts @@ -3025,6 +3025,14 @@ Tem certeza de que quer substituir o seu certificado? Reset User Content Redefinir conteúdo de utilizadores + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_ro.ts b/src/mumble/mumble_ro.ts index 05d4cd91321..438d56a6f04 100644 --- a/src/mumble/mumble_ro.ts +++ b/src/mumble/mumble_ro.ts @@ -2993,6 +2993,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_ru.ts b/src/mumble/mumble_ru.ts index dab51179d1a..9d4930b27c0 100644 --- a/src/mumble/mumble_ru.ts +++ b/src/mumble/mumble_ru.ts @@ -3026,6 +3026,14 @@ Are you sure you wish to replace your certificate? Reset User Content Удалить данные пользователя + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_si.ts b/src/mumble/mumble_si.ts index ab08ed89903..bccfdfd1c17 100644 --- a/src/mumble/mumble_si.ts +++ b/src/mumble/mumble_si.ts @@ -2966,6 +2966,14 @@ Are you sure you wish to replace your certificate? Listen + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_sk.ts b/src/mumble/mumble_sk.ts index 210782b206d..58a353ddeed 100644 --- a/src/mumble/mumble_sk.ts +++ b/src/mumble/mumble_sk.ts @@ -2970,6 +2970,14 @@ Are you sure you wish to replace your certificate? Listen + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_sq.ts b/src/mumble/mumble_sq.ts index bf792cd97d6..9369e9a8f7c 100644 --- a/src/mumble/mumble_sq.ts +++ b/src/mumble/mumble_sq.ts @@ -2972,6 +2972,14 @@ Are you sure you wish to replace your certificate? Listen Dëgjojeni + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_sv.ts b/src/mumble/mumble_sv.ts index 8ee33c44661..d6679643401 100644 --- a/src/mumble/mumble_sv.ts +++ b/src/mumble/mumble_sv.ts @@ -3025,6 +3025,14 @@ Are you sure you wish to replace your certificate? Reset User Content Återställ användarinnehåll + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_te.ts b/src/mumble/mumble_te.ts index 8d44cdb11e7..7bb8b0b9ebb 100644 --- a/src/mumble/mumble_te.ts +++ b/src/mumble/mumble_te.ts @@ -2996,6 +2996,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_th.ts b/src/mumble/mumble_th.ts index 66c9169181b..b23d935abc2 100644 --- a/src/mumble/mumble_th.ts +++ b/src/mumble/mumble_th.ts @@ -2983,6 +2983,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_tr.ts b/src/mumble/mumble_tr.ts index 2be0c9604cd..7fb4a9c5a17 100644 --- a/src/mumble/mumble_tr.ts +++ b/src/mumble/mumble_tr.ts @@ -3024,6 +3024,14 @@ Sertifikanızı değiştirmek istediğinize emin misiniz? Reset User Content Kullanıcı İçeriğini Sıfırla + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_uk.ts b/src/mumble/mumble_uk.ts index 09133e20d4c..48c303131fe 100644 --- a/src/mumble/mumble_uk.ts +++ b/src/mumble/mumble_uk.ts @@ -3026,6 +3026,14 @@ Are you sure you wish to replace your certificate? Reset User Content Скинути вміст користувача + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_zh_CN.ts b/src/mumble/mumble_zh_CN.ts index 50e2d4a1987..97d3ce9f83f 100644 --- a/src/mumble/mumble_zh_CN.ts +++ b/src/mumble/mumble_zh_CN.ts @@ -3024,6 +3024,14 @@ Are you sure you wish to replace your certificate? Reset User Content 重置用户信息 + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_zh_HK.ts b/src/mumble/mumble_zh_HK.ts index 4dd7d9578c5..3f34c57aa7a 100644 --- a/src/mumble/mumble_zh_HK.ts +++ b/src/mumble/mumble_zh_HK.ts @@ -2983,6 +2983,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit diff --git a/src/mumble/mumble_zh_TW.ts b/src/mumble/mumble_zh_TW.ts index 2039b91111a..62115637967 100644 --- a/src/mumble/mumble_zh_TW.ts +++ b/src/mumble/mumble_zh_TW.ts @@ -3004,6 +3004,14 @@ Are you sure you wish to replace your certificate? Reset User Content + + This represents the permission to write direct text messages to other users on the server. + + + + Private message + + ChatbarTextEdit From f3a80fe3d193ca12b29a87d7531f1b17809a82d3 Mon Sep 17 00:00:00 2001 From: luxanna Date: Fri, 3 Apr 2026 10:36:34 +0200 Subject: [PATCH 3/3] FIX(server): Add ACL migration + test data --- src/murmur/database/ACLTable.cpp | 6 ++ src/murmur/database/ServerDatabase.h | 2 +- .../server/table_data/acl_table_input.json | 91 ++++++++++++++++++- .../server/table_data/acl_table_migrated.json | 89 ++++++++++++++++++ 4 files changed, 186 insertions(+), 2 deletions(-) diff --git a/src/murmur/database/ACLTable.cpp b/src/murmur/database/ACLTable.cpp index 2dcc48ef6be..35b80c19ba2 100644 --- a/src/murmur/database/ACLTable.cpp +++ b/src/murmur/database/ACLTable.cpp @@ -503,6 +503,12 @@ namespace server { soci::use(accessToken, accessTokenInd), soci::use(groupModifiers, groupModInd), soci::use(applyHere), soci::use(applySub), soci::use(grantPriv), soci::use(revokePriv); } + } else if (fromSchemaVersion < 12) { + ::mdb::TransactionHolder transaction = ensureTransaction(); + m_sql << "UPDATE " << NAME << " SET " + << column::granted_flags << "= " << column::granted_flags << "| ((" << column::granted_flags << " & 0x200) << 3), " + << column::revoked_flags << "= " << column::revoked_flags << "| ((" << column::revoked_flags << " & 0x200) << 3);"; + transaction.commit(); } else { // Use default implementation to handle migration without change of format mdb::Table::migrate(fromSchemaVersion, toSchemaVersion); diff --git a/src/murmur/database/ServerDatabase.h b/src/murmur/database/ServerDatabase.h index da960b467b3..15e1454bb2b 100644 --- a/src/murmur/database/ServerDatabase.h +++ b/src/murmur/database/ServerDatabase.h @@ -37,7 +37,7 @@ namespace server { * has to be accompanied by increasing this number. A decrease is never allowed! * Using a schema version like this allows us to be able to create migration paths between schema versions. */ - static constexpr unsigned int DB_SCHEMA_VERSION = 11; + static constexpr unsigned int DB_SCHEMA_VERSION = 12; ServerDatabase(::mumble::db::Backend backend); ~ServerDatabase() = default; diff --git a/src/tests/TestDatabase/server/table_data/acl_table_input.json b/src/tests/TestDatabase/server/table_data/acl_table_input.json index f40fc27e8ea..8066ce2cdf2 100644 --- a/src/tests/TestDatabase/server/table_data/acl_table_input.json +++ b/src/tests/TestDatabase/server/table_data/acl_table_input.json @@ -127,7 +127,7 @@ 1, 0, 0, - 5 + 512 ], [ 0, @@ -140,7 +140,96 @@ "!;,3,2", 1, 0, + 520, + 5 + ], + [ + 0, + 1, + 2, + null, + null, + null, + "letmein", + null, + 1, + 0, + 0, + 5 + ] + ] + }, + "v12": { + "table_name": "access_control_lists", + "column_names": [ + "server_id", + "channel_id", + "priority", + "affected_user_id", + "affected_group_id", + "affected_meta_group_id", + "access_token", + "group_modifiers", + "apply_in_current_channel", + "apply_in_sub_channels", + "granted_privilege_flags", + "revoked_privilege_flags" + ], + "column_types": [ + "INTEGER", + "INTEGER", + "INTEGER", + "INTEGER", + "INTEGER", + "INTEGER", + "VARCHAR(255)", + "VARCHAR(31)", + "SMALLINT", + "SMALLINT", + "INTEGER", + "INTEGER" + ], + "rows": [ + [ + 0, + 0, + 3, + null, + 1, + null, + null, + null, + 1, + 0, + 1, + 0 + ], + [ + 0, + 0, + 4, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 4608 + ], + [ + 0, + 1, + 1, + null, + null, + 6, + null, + "!;,3,2", + 1, 0, + 4616, 5 ], [ diff --git a/src/tests/TestDatabase/server/table_data/acl_table_migrated.json b/src/tests/TestDatabase/server/table_data/acl_table_migrated.json index 762f2e16e6c..5ad7fcee7b2 100644 --- a/src/tests/TestDatabase/server/table_data/acl_table_migrated.json +++ b/src/tests/TestDatabase/server/table_data/acl_table_migrated.json @@ -73,5 +73,94 @@ 5 ] ] + }, + "v10": { + "table_name": "access_control_lists", + "column_names": [ + "server_id", + "channel_id", + "priority", + "affected_user_id", + "affected_group_id", + "affected_meta_group_id", + "access_token", + "group_modifiers", + "apply_in_current_channel", + "apply_in_sub_channels", + "granted_privilege_flags", + "revoked_privilege_flags" + ], + "column_types": [ + "INTEGER", + "INTEGER", + "INTEGER", + "INTEGER", + "INTEGER", + "INTEGER", + "VARCHAR(255)", + "VARCHAR(31)", + "SMALLINT", + "SMALLINT", + "INTEGER", + "INTEGER" + ], + "rows": [ + [ + 0, + 0, + 3, + null, + 1, + null, + null, + null, + 1, + 0, + 1, + 0 + ], + [ + 0, + 0, + 4, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 4608 + ], + [ + 0, + 1, + 1, + null, + null, + 6, + null, + "!;,3,2", + 1, + 0, + 4616, + 5 + ], + [ + 0, + 1, + 2, + null, + null, + null, + "letmein", + null, + 1, + 0, + 0, + 5 + ] + ] } }