Natenoms Wiki

Weil Teilen Spaß macht :)

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Übersetzungen dieser Seite:

Navigation



Lizenz dieses Wikis
Über dieses Wiki
Feed des Wikis
Impressum


Was gerade in meinem Blog geschieht:

mumble:namen_in_mumble

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: 5)

  • 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.

Zeichenvielfalt in Mumble

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), siehe hier.

Weitere Inhalte zu Sonderzeichen

1) , 3)
nur im Quellcode des Servers änderbar
2) , 4)
verschiedene Arten von Leerzeichen
5)
entnommen aus einem Artikel im Blog - siehe hier
mumble/namen_in_mumble.txt · Zuletzt geändert: 2015/12/13 18:55 von Natenom