In Mumble wird per RegExp (Regular Expression = Regulärer Ausdruck) explizit und voneinander unabhängig festgelegt, welche Zeichen in Kanal- und Benutzernamen erlaubt sind.
Weitere Informationen zu im Mumble-Server verwendbaren Regulären Ausdrücken gibt es unter folgendem Link.
Die erlaubten Zeichen werden durch den Server festgelegt, nämlich in den beiden Servervariablen username und channelname.
Typ | Servereinstellung | Maximale Länge | Voreinstellung des Regex | Dadurch erlaubte Zeichen |
---|---|---|---|---|
Benutzername | username | 512 Zeichen1) | [-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+ | -, =, Whitespaces2), [, ], {, }, (, ), @, ¦, ., a-z, A-Z, 0-9, generell Schriftzeichen, Zahlen und der Unterstrich, jedoch KEINE Leerzeichen |
Kanalname | channelname | 512 Zeichen3) | [ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+ | -, =, Whitespaces4), #, [, ], {, }, (, ), @, ¦, a-z, A-Z, 0-9, generell Schriftzeichen, Zahlen und der Unterstrich |
Wie man sieht, sind z. B. Leerzeichen nur im Kanalnamen erlaubt, jedoch nicht in Benutzernamen.
Um weitere Zeichen zu erlauben, müssen diese zum regulären Ausdruck hinzugefügt werden, siehe unten.
Bei Verwendung mancher Zeichen muss der Wert der Variable in Anführungszeichen gesetzt werden, siehe hier.
Die Gültigkeit von Benutzernamen wird nicht angewendet auf bereits registrierte Benutzer. Solle also ein Administrator eines Servers bestimmte Zeichen für Benutzernamen entfernen, die ein Benutzer verwendet, so kann er trotzdem den Server betreten. Dasselbe gilt bei bestehenden Kanälen.
Man kann z. B. auch die Länge der Namen bestimmen mit sowas wie {5,30} statt eines + am Ende des Regex; damit muss jeder Benutzername zwischen 5 und 30 Zeichen lang sein. In diesem Fall muss man jedoch den Wert der Variablen in Anführungszeichen setzen, weil in dem Wert ein Komma enthalten ist. Details hierzu siehe hier.
Aufgrund einer Eigenschaft von C++ müssen Backslashes (\) maskiert werden, indem man diese doppelt schreibt.
Statt z. B. \s zu verwenden, muss man \\s schreiben. Soll ein Backslash als solches direkt verwendet werden, muss man es vier mal schreiben: \\\\.
Um z. B. Leerzeichen auch im Benutzernamen zu erlauben, müsste man nur „\\“ gefolgt von einem Leerzeichen vor die schließende, eckige Klammer einfügen.
Dann sieht der geänderte Regex für Benutzernamen so aus:
[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.\\ ]+
Dies ist jedoch bei den vielen möglichen Zeichen ziemlich umständlich; deshalb ist es einfacher den Regex so aufzubauen, dass nur Zeichen genannt werden, die verboten sind, siehe weiter unten im Text.
Allgemein gilt, dass Zeichen direkt in der .ini-Konfigurationsdatei (z. B. murmur.ini) anders maskiert werden müssen als direkt z. B. in Mumble-Django.
Mit den folgenden Einstellungen ist alles erlaubt, mit folgenden Bedingungen:
Die beiden Zeichen < und > sind deshalb gesperrt, weil man sonst unsinnige Dinge mit URLs anstellen könnte und Leerzeichen am Anfang und Ende sind unnötig.
username=[^\\s<>](?:(?!\\s)\\s|[^<>])*[^\\s<>] channelname=[^\\s<>](?:(?!\\s)\\s|[^<>])*[^\\s<>]
username=[^\s<>](?:(?!\s)\s|[^<>])*[^\s<>] channelname=[^\s<>](?:(?!\s)\s|[^<>])*[^\s<>]
Danach kann man sämtliche UTF-Zeichen verwenden: https://www.isthisthingon.org/unicode/allchars1.php.
Um ohne Einschränkung wirklich alle Zeichen, auch nur Leerzeichen, verwenden zu können, reichen die folgende Werte aus:
username=.*
bzw.
channelname=.*
Dies sollte man aber nicht tun, da sonst auch Benutzernamen verwendet werden können, die nur aus einer Anzahl Leerzeichen bestehen.
Über Ice kann man unabhängig von diesen Einstellungen jeden Kanalnamen bzw. Benutzernamen verwenden :)
Wie z. B. mit Mumble-Django (bis einschließlich 2.4).
Eine Liste aller UTF-Zeichen: https://www.isthisthingon.org/unicode/allchars1.php.