Einmalige Benutzernamen und E-Mailadressen

2.7. Einmalige Benutzernamen und E-Mailadressen#

Benutzernamen und E-Mailadressen müssen in der gesamten Domäne, nicht nur an einer Schule, einmalig sein. Darüber hinaus kann es die Anforderung geben, dass Benutzernamen und E-Mailadressen auch historisch einmalig sind, also auch dann nicht wiederverwendet werden, wenn die vorherigen Konten bereits lange gelöscht sind.

Aus diesem Grund können zur Erzeugung von Benutzernamen und E-Mailadressen, über die üblichen Variablen in Formatierungsschema (siehe Formatierungsschema) hinaus, spezielle Zählervariablen verwendet werden. Diese Variablen werden bei ihrer Verwendung automatisch hochgezählt. Ihr Wert wird pro Benutzername bzw. E-Mailadresse gespeichert. Es existieren zwei Variablen, die sich darin unterscheiden, wie die ersten Benutzer mit gleichem Benutzernamen bzw. E-Mailadresse, benannt werden:

[ALWAYSCOUNTER]

[ALWAYSCOUNTER] ist ein Zähler, der bei seiner ersten Verwendung eine 1 einsetzt.

Benutzernamen für anton wären: anton1, anton2, anton3

Analog für anton@dom.ain: anton1@dom.ain, anton2@dom.ain, anton3@dom.ain

[COUNTER2]

[COUNTER2] ist ein Zähler, der bei seiner ersten Verwendung keine Zahl einsetzt, erst bei seiner zweiten.

Benutzernamen für anton wären: anton, anton2, anton3

Analog für anton@dom.ain: anton@dom.ain, anton2@dom.ain, anton3@dom.ain

Im folgenden Beispiel würden für Bea Schmidt die Benutzernamen b.schmidt, b.schmidt2, b.schmidt3 sowie E-Mailadressen bea.schmidt1@dom.ain, bea.schmidt2@dom.ain, bea.schmidt3@dom.ain erzeugt werden:

{
    "scheme": {
        "username": {
            "default": "<:umlauts><firstname>[0].<lastname><:lower>[COUNTER2]"
        },
        "email": "<firstname>.<lastname>[ALWAYSCOUNTER]@<maildomain>"
    },
    "maildomain": "dom.ain",
}

Die [0] im Beispiel bedeutet, dass nur das erste Zeichen des davor stehenden Attributes genommen wird. Es ist auch möglich Bereiche anzugeben. Weitere Informationen dazu finden sich in Benutzervorlagen in Univention Corporate Server - Handbuch für Benutzer und Administratoren [1].

Um Zählervariablen nach Tests auf 0 zurück zu setzen, kann das Skript /usr/share/ucs-school-import/scripts/reset_schema_counter verwendet werden. Mit Hilfe eines Filters kann beschränkt werden, welche Zähler gelöscht werden sollen. In einem Testlauf kann dies überprüft werden. Mit der Option --help werden die Aufrufparameter angezeigt. Standardmäßig werden die Zähler für Benutzernamen zurück gesetzt. Um Zähler für E-Mailadressen zu löschen, muss --email verwendet werden.

Warnung

Um einen aussagekräftigen Benutzernamen zu gewährleisten, geht die Logik von maximal drei Zeichen für die Zählervariablen aus, wenn ein Benutzername unter Berücksichtigung der maximalen Länge generiert wird. Dies bedeutet, dass davon ausgegangen wird, dass der Zähler maximal bis 999 zählen muss.

Technisch wird es allerdings nicht verhindert, dass der Zähler über 999 hinausgeht und somit vierstellig wird. Sollte dieser Fall eintreten, werden Benutzernamen generiert, die ein Zeichen länger als das konfigurierte Maximum sein können.

Wird in der Umgebung keine Unterstützung für Samba, Samba 4 Connector und Active Directory Connector benötigt, hat dies keine negativen Auswirkungen.

Muss allerdings eine maximale Länge für Benutzernamen eingehalten werden, so wird empfohlen ein alternatives Schema zu entwickeln, welches weniger doppelte Benutzernamen erzeugt.

2.7.1. Programmierung neuer Zählervariablen#

Um neue Zählervariablen hinzuzufügen, muss von der Klasse ucsschool.importer.utils.username_handler.UsernameHandler abgeleitet und die Methode counter_variable_to_function() überschrieben werden (siehe Subclassing).

Um diese neuen Zählervariablen auch für E-Mailadressen zu verwenden, muss ucsschool.importer.utils.username_handler.EmailHandler von der neuen, abgeleiteten UsernameHandler Klasse sowie von EmailHandler abgeleitet werden. Um Zählervariablen nur für E-Mailadressen hinzuzufügen, muss nur von der Klasse EmailHandler abgeleitet, und oben beschriebene Methoden überschrieben werden.