2.3. JSON-Konfigurationsformat#
Das JSON-Format erlaubt Daten in verschachtelten Strukturen zu speichern, und ist sowohl von Computern als auch Menschen zuverlässig zu lesen und zu schreiben. Nach dem Editieren einer JSON-Datei kann ihre syntaktische Korrektheit mit Hilfe einer Webseite zur JSON Validierung oder eines Kommandozeilenprogramms überprüft werden:
$ python3 -m json.tool < my_config.json
Im Folgenden werden alle Konfigurationsschlüssel und ihre möglichen Werte und Typen beschrieben.
Schlüssel sind immer als Zeichenketten (
string
) zu behandeln und müssen in doppelten Anführungszeichen ("
) stehen.Als Datentypen werden folgende Typen unterstützt:
Wahrheitswerte:
boolean
-true
/false
Ganzzahlen:
int
Gleitkommazahlen:
float
Listen:
list
- Werte die in[
und]
eingeschlossen sind.Objekte:
object
- Neue Verschachtelungsebene die in{
und}
eingeschlossen wird. Die Verschachtelungstiefe wird in den Schlüsseln wie oben beschrieben mit Doppelpunkten angezeigt.
Bemerkung
Eine Kurzreferenz aller Konfigurationsschlüssel findet sich auf dem
Primary Directory Node im Verzeichnis /usr/share/doc/ucs-school-import/
.
2.3.1. Globale Konfiguration#
- dry_run, -n, --dry-run#
Ob ein Testlauf gestartet werden soll. Es werden keine Änderungen vorgenommen.
- Standard (
boolean
): false
- Standard (
- logfile, -l, --logfile#
Datei in die das ausführliche Protokoll geschrieben werden soll. Es wird außerdem eine Datei, die auf
.info
endet, mit weniger technischen Details, angelegt.- Standard (
string
) /var/log/univention/ucs-school-import.log
- Standard (
- verbose, -v, --verbose#
Ob ein ausführliches Protokoll auf die Kommandozeile geschrieben werden soll.
- Standard (
boolean
) true
- Standard (
2.3.2. Konfiguration des Benutzerimports#
- classes#
Die Methoden der Klasse
DefaultUserImportFactory
können überschrieben werden, ohne die Klasse selbst zu ändern.Die Namen der überschriebenen Methoden ohne vorangestelltes
make_
sind die Schlüssel, der volle Python-Pfad der Wert.Standardmäßig ist das Objekt leer und die Klasse
DefaultUserImportFactory
wird unverändert verwendet.Ein Beispiel findet sich in Überschreiben einer Methode.
- Standard (
object
) {}
- Standard (
- factory#
Voller Python-Pfad zu einer Python-Klasse, die von
DefaultUserImportFactory
abgeleitet ist. Wenn gesetzt, wird sie an ihrer Stelle verwendet (siehe Ersetzen durch eigene Klasse).- Standard (
string
) ucsschool.importer.default_user_import_factory.DefaultUserImportFactory
- Standard (
- input#
Objekt, welches Informationen über die Eingabedaten enthält.
Standard (
object
)
- input:type#
Datenformat der angegebenen Eingabedatei. UCS@school unterstützt derzeit nur
CSV
als Datenformat.- Standard (
string
) csv
- Standard (
- input:filename, -i, --infile#
Einzulesende Datei.
- Standard (
string
) /var/lib/ucs-school-import/new-format-userimport.csv
- Standard (
- activate_new_users#
Objekt, welches Konfigurationsmöglichkeiten zur Benutzeraktivierung enthält.
Standardmäßig ist im Objekt nur der Schlüssel
default
gesetzt.Weitere Schlüssel
student
,staff
,teacher
,teacher_and_staff
sind möglich (siehe default-Schlüssel).- Standard (
object
) {"default": ..}
- Standard (
- activate_new_users:default#
Diese Variable definiert, ob ein neuer Benutzer automatisch aktiviert werden soll. Ist
false
eingestellt, wird das Benutzerkonto beim Anlegen automatisch deaktiviert.- Standard (
boolean
) true
- Standard (
- csv#
Dieses Objekt enthält Informationen darüber, wie CSV-Eingabedaten interpretiert werden sollen.
- Standard (
object
) {"header_lines": .., "incell-delimiter": .., "mapping": ..}
- Standard (
- csv:delimiter#
Diese Variable definiert das Trennzeichen zwischen zwei Spalten. Als Wert wird üblicherweise ein Komma, Semikolon oder Tabulator verwendet. Die Importschnittstelle versucht das Trennzeichen automatisch zu erkennen, wenn diese Variable nicht gesetzt ist.
- Standard (
string
) nicht gesetzt
- Standard (
- csv:header_lines#
Diese Variable definiert, wie viele Zeilen der Eingabedaten übersprungen werden sollen, bevor die eigentlichen Benutzerdaten anfangen.
Wird der Wert
1
(Kopfdatensatz) verwendet, wird der Inhalt der ersten Zeile als Namen der einzelnen Spalten interpretiert. Die dort verwendeten Namen können dann incsv:mapping
als Schlüssel verwendet werden.- Standard (
int
) 1
- Standard (
- csv:incell-delimiter#
Dieses Objekt enthält Informationen darüber, welches Zeichen innerhalb einer Zelle zwei Daten trennt und kann z.B. bei der Angabe von mehreren Telefonnummern verwendet werden. Es kann ein Standard (
default
) und pro Univention Directory Manager-Attribut eine Konfiguration (mit dem Namen des Schlüssels incsv:mapping
) definiert werden.- Standard (
object
) {"default": ..}
- Standard (
- csv:incell-delimiter:default#
Standard-Trennzeichen innerhalb einer Zelle, wenn kein spezieller Schlüssel für die Spalte existiert.
- Standard (
string
) ,
- Standard (
- csv:mapping#
Enthält Informationen über die Zuordnung von CSV-Spalten zum Benutzerobjekt. Ist standardmäßig leer. Siehe Zuordnung von Eingabedaten zu Benutzerattributen.
- Standard (
object
) {}
- Standard (
- deletion_grace_period#
Dieses Objekt enthält Einstellungen zum Löschen von Benutzern.
- Standard (
object
) {"deactivation": .., "deletion": ..}
- Standard (
- deletion_grace_period:deactivation#
Definiert in wie vielen Tagen ein Benutzer, der nicht mehr in den Eingabedaten enthalten ist, deaktiviert (nicht gelöscht) werden soll.
Wenn
0
gesetzt ist, wird das betroffene UCS@school-Benutzerkonto sofort deaktiviert.Wenn
deletion_grace_period:deletion
auf einen kleineren oder den gleichen Wert gesetzt ist, wird das Benutzerobjekt gelöscht statt deaktiviert.- Standard (
int
) 0
- Standard (
- deletion_grace_period:deletion#
Definiert die Anzahl der Tage, die nach dem Import vergehen sollen, bevor der Benutzer gelöscht aus dem Verzeichnisdienst wird.
Bei einem Wert von
0
wird der Benutzer sofort gelöscht.Bei größeren Zahlen wird das geplante Löschdatum im Univention Directory Manager-Attribut
ucsschoolPurgeTimestamp
gesetzt. Ein Cron Job löscht automatisch Benutzer, deren geplanter Löschzeitpunkt erreicht ist.- Standard (
int
) 0
- Standard (
- normalize:firstname#
Definiert, ob der in der CSV-Datei angegebene Wert für den Vornamen (i.d.R. UTF-8-kodiert) auf die Kodierung ASCII normalisiert wird. Umlaute und Sonderzeichen werden dabei ersetzt (
ä
wird zuae
) oder entfernt.- Standard (
boolean
) false
- Standard (
- normalize:lastname#
Definiert, ob der in der CSV-Datei angegebene Wert für den Vornamen (i.d.R. UTF-8-kodiert) auf die Kodierung ASCII normalisiert wird. Umlaute und Sonderzeichen werden dabei ersetzt (
ä
wird zuae
) oder entfernt.- Standard (
boolean
) false
- Standard (
- scheme#
Enthält Informationen über die Erzeugung von Werten aus anderen Werten und Regeln.
Es können Ersetzungen wie in den Benutzervorlagen verwendet werden sowie alle Schlüssel aus
csv:mapping
. Neben Formatvorlagen füremail
,record_uid
undusername
können Konfigurationen für beliebige Univention Directory Manager-Attribute hinterlegt werden.[ALWAYSCOUNTER]
und[COUNTER2]
werden nur inscheme:email
undscheme:username
verarbeitet.- Standard (
object
) {"email": .., "record_uid": .., "username": {..}}
- Standard (
- scheme:email#
Schema, aus dem die E-Mailadresse erzeugt werden soll. Zusätzlich zu den in Formatierungsschema beschriebenen Ersetzungen kommen noch zwei weitere hinzu:
[ALWAYSCOUNTER]
und[COUNTER2]
(siehe Einmalige Benutzernamen und E-Mailadressen).Für die Verwendung des
email
-Schemas ist es erforderlich, dassmaildomain
oder die Univention Configuration Registry-Variablemail/hosteddomains
gesetzt ist. Anderenfalls wird keine Mailadresse generiert.- Standard (
string
) "<firstname>[0].<lastname>@<maildomain>"
- Standard (
- scheme:record_uid#
Schema aus dem die eindeutige ID des Benutzers in der Quelldatenbank (Schulverwaltungssoftware) erzeugt werden soll.
- Standard (
string
) "<email>"
- Standard (
- scheme:username#
Enthält Informationen über die Erzeugung von Benutzernamen. Standardmäßig enthält das Objekt nur den Schlüssel
default
.Weitere Schlüssel
student
,staff
,teacher
,teacher_and_staff
sind möglich (siehe default-Schlüssel).Zusätzlich zu den in Formatierungsschema beschriebenen Ersetzungen kommen noch zwei weitere hinzu:
[ALWAYSCOUNTER]
und[COUNTER2]
(siehe Einmalige Benutzernamen und E-Mailadressen).- Standard (
object
) {"default": ..}
- Standard (
- scheme:username:default#
Schema aus dem der Benutzername erzeugt werden soll, wenn kein Schema speziell für diesen Benutzertyp (
scheme:username:teacher
etc.) existiert.- Standard (
string
) "<:umlauts><firstname>[0].<lastname>[COUNTER2]"
- Standard (
- scheme:<udm attribute name>#
Univention Directory Manager-Attribute, die aus einem Schema erzeugt werden sollen. Der Schlüssel braucht nicht in
csv:mapping
vorzukommen.- Standard (
string
) nicht gesetzt
- Standard (
- maildomain#
Der Wert dieser Variable wird beim Formatieren mit einem Schema in die Variable
<maildomain>
eingesetzt.Wenn nicht gesetzt, wird versucht
<maildomain>
durch Daten aus dem System zu füllen. Dafür wird die UCR-Variablemail/hosteddomains
herangezogen. Sindmaildomain
undmail/hosteddomains
nicht gesetzt, werden keine Mailadressen automatisch generiert.- Standard (
string
) nicht gesetzt
- Standard (
- mandatory_attributes#
Liste von Univention Directory Manager Attributen, die an jedem Benutzer gesetzt sein müssen.
- Standard (
list
) ["firstname", "lastname", "name", "record_uid", "school", "source_uid"]
- Standard (
- no_delete, -m, --no-delete#
Wenn auf
true
gesetzt, werden keine Benutzer gelöscht, oder nur solche, für die es in den Eingabedaten explizit vermerkt ist.Dies kann genutzt werden, um eine Änderung an UCS@school-Benutzern vorzunehmen, ohne einen vollständigen Soll-Zustand zu übergeben oder um neue Benutzer hinzuzufügen.
- Standard (
boolean
) false
- Standard (
- output#
Dieses Objekt enthält Informationen über zu produzierende Dokumente.
- Standard (
object
) {"import_summary": ..}
- Standard (
- output:new_user_passwords#
Diese Variable definiert den Pfad zu der CSV-Datei, in die Passwörter neuer Benutzer geschrieben werden.
Auf den Dateinamen wird die Python-Funktion
datetime.datetime.strftime()
angewandt. Wenn ein Python-Format-String in ihm vorkommt, wird dieser umgewandelt (siehe Beispieloutput:user_import_summary
).- Standard (
string
) nicht gesetzt
- Standard (
- output:user_import_summary#
Diese Variable definiert den Pfad zu der CSV-Datei, in die eine Zusammenfassung des Import-Vorganges geschrieben wird. Auf den Dateinamen wird, wie bei
output:new_user_passwords
, die Python-Funktiondatetime.datetime.strftime()
angewandt.- Standard (
string
) "/var/lib/ucs-school-import/summary/%Y/%m/user_import_summary_%Y-%m-%d_%H:%M:%S.csv"
- Standard (
- password_length#
Definiert die Länge des zufälligen Passwortes, das für neue Benutzer erzeugt wird.
- Standard (
int
) 15
Abhängig vom Vorhandensein spezifischer Benutzerpasswörter in den Importdaten geht der Importvorgang wie folgt mit Passwörtern um:
- Keine Passwörter definiert
In den Importdaten sind keine Passwörter definiert: Der Importvorgang erzeugt zufällige Benutzerpasswörter in der konfigurierten Passwortlänge.
- Passwörter definiert
In den Importdaten sind Benutzerpasswörter definiert:
Länge der Benutzerpasswörter
< password_length
: Der Importvorgang bricht ab mit folgender Meldung:ucsschool.importer.exceptions.BadPassword: Password is shorter than 15 characters
.Länge der Benutzerpasswörter
> password_length
: Der Importvorgang wird durchgeführt. Die Benutzerpasswörter werden auf die Länge vonpassword_length
gekürzt.
Benutzer können zu jedem späteren Zeitpunkt ihr Passwort selbst setzen. Dabei greift die Passwortrichtlinie für Benutzer. Der Wert aus
password_length
hat keinen Einfluss auf die Passwortrichtlinie. Nur der Importvorgang verwendet den Wert auspassword_length
.Siehe auch
- Informationen über Passwortrichtlinien für Benutzer
Verwaltung der Benutzerpasswörter in Univention Corporate Server - Handbuch für Benutzer und Administratoren [1]
- Standard (
- evaluate_password_policies#
Ab UCS@school Version 5.0 v3: Schaltet die Evaluierung von Passwort Richtlinien während des Imports neuer Benutzer ein.
- Standard (
boolean
) false
- Standard (
- school, -s, --school#
Schulkürzel/OU-Name der Schule, für die der Import sein soll. Dieser Wert gilt für alle Benutzer in den Eingabedaten.
Vorsicht
Der Wert sollte nur gesetzt werden, wenn die Schule nicht über die Eingabedaten gesetzt wird.
- Standard (
string
) nicht gesetzt
- Standard (
- source_uid, --source_uid#
Eindeutige und unveränderliche Kennzeichnung der Datenquelle. Muss zwingend entweder in einer Konfigurationsdatei oder an der Kommandozeile gesetzt werden.
- Standard (
string
) nicht gesetzt
- Standard (
- tolerate_errors#
Definiert die Anzahl an für die Import-Software nicht-kritischen Fehlern, die toleriert werden sollen, bevor der Import abgebrochen wird.
Wird der Wert
-1
verwendet, bricht der Import nicht ab und fährt mit dem nächsten Eingabedatensatz fort.- Standard (
int
) 0
- Standard (
- user_deletion#
Veraltet ab Version 4.2: Bitte
deletion_grace_period
verwenden.- Standard (
object
) nicht gesetzt
- Standard (
- user_role, -u, --user_role#
Definiert die Benutzerrolle für alle Eingabedatensätze.
Vorsicht
Diese Variable sollte nur gesetzt werden, wenn die Benutzerrolle nicht in den Eingabedaten enthalten ist und die Eingabedatensätze homogen alle die gleiche Benutzerrolle verwenden sollen.
Erlaubte Werte sind
student
,staff
,teacher
undteacher_and_staff
.- Standard (
string
) nicht gesetzt
- Standard (
- username#
Enthält Informationen über die Erzeugung von Benutzernamen.
- Standard (
object
) {"max_length": {..}
- Standard (
- username:max_length#
Enthält Informationen über die Länge von Benutzernamen.
- Standard (
object
) {"default": .., "student": ..}
- Standard (
- username:max_length:default#
Länge eines Benutzernamens, wenn keine Konfiguration speziell für diesen Benutzertyp (
username:max_length:staff
etc.) existiert.Warnung
Benutzerkonten mit Benutzernamen über 20 Zeichen Länge sind vom Support für Samba, Samba 4 Connector und Active Directory Connector ausgeschlossen.
Für eine fehlerfreie Funktionalität von Windows-Clients in der Domäne dürfen Benutzernamen nicht über mehr als 20 Zeichen verfügen.
Der Wert darf den Wert der Univention Configuration Registry-Variablen
ucsschool/username/max_length
nicht überschreiten.Der Wert von
username:max_length:student
wird automatisch berechnet, wenn nicht explizit gesetzt. Er muss um die Länge desexam-prefix
(normalerweiseexam-
, also5
) niedriger sein, als der vonusername:max_length:default
.- Standard (
int
) 20
- Standard (
- username:allowed_special_chars#
Enthält die erlaubten Sonderzeichen in Benutzernamen. Außer dem Punkt (
.
) sind Bindestrich (-
) und Unterstrich (_
) erlaubt. Die Liste wird als einstring
dargestellt und wäre für alle drei Zeichen:".-_"
.- Standard (
string
) "."
- Standard (
- school_classes_invalid_character_replacement#
Unerlaubte Zeichen im Namen einer Schulklasse werden mit diesem Wert ersetzt. Erlaubt sind Zahlen, Buchstaben (keine Umlaute) und die Zeichen
. -_
.- Standard (
string
) "-"
- Standard (