Inhaltsverzeichnis
Namen von Kanälen und Benutzern in Mumble und Mumble-Server
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.
Allgemeine Eigenschaften von Benutzer- und Kanalnamen
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.
Groß-/Kleinschreibung von Benutzernamen
- Ist ein Benutzer mit dem Namen „benutzer“ unregistriert auf einem Server drauf, so kann sich ein anderer Benutzer mit dem Namen „BENUTZER“ trotzdem gleichzeitig anmelden.
- Ist der Benutzer mit dem Namen „benutzer“ jedoch registriert, kann sich „BENUTZER“ nicht mehr anmelden sondern wird nach einem Passwort gefragt.
Länge bestimmen
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.
Backslashes maskieren
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: \\\\.
Einzelne Zeichen explizit hinzufügen
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.
Beispiele, um mehr Zeichen zu erlauben
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.
Beispiel 1 - Fast alle Zeichen erlauben - mit sicherheitsrelevanten Einschränkungen
Mit den folgenden Einstellungen ist alles erlaubt, mit folgenden Bedingungen:
- kein < im Namen
- kein > im Namen
- kein(e) Leerzeichen am Anfang
- kein(e) Leerzeichen am Ende
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.
Für murmur.ini
username=[^\\s<>](?:(?!\\s)\\s|[^<>])*[^\\s<>] channelname=[^\\s<>](?:(?!\\s)\\s|[^<>])*[^\\s<>]
Für Mumble-Django
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.
Beispiel 2 - Alle Zeichen erlauben - ohne Einschränkungen
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.
Mit Hilfe von Ice die Servereinstellungen umgehen
Ü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).
Weitere Inhalte zu Sonderzeichen
Eine Liste aller UTF-Zeichen: https://www.isthisthingon.org/unicode/allchars1.php.