Difference between revisions of "Entwicklung und Integration eigener Module in Univention Directory Manager"

From Univention Wiki

Jump to: navigation, search
Line 61: Line 61:
 
==== '''property-descriptions'''  ====
 
==== '''property-descriptions'''  ====
  
Dieses Python-Dictionary enthält allAttribute, die dieses Modul zur Verfügung stellt. Dabei werden die Attribute (als ''univention.admin.property''-Objekte), wie schon die Optionen, über eine eindeutige Zeichenkette als Schlüssel referenziert. Ein solches Modul-Attribut entspricht in der Regel einem LDAP-Attribut. Ein Beispiel:  
+
Dieses Python-Dictionary enthält alle Attribute, die dieses Modul zur Verfügung stellt. Dabei werden die Attribute (als ''univention.admin.property''-Objekte), wie schon die Optionen, über eine eindeutige Zeichenkette als Schlüssel referenziert. Ein solches Modul-Attribut entspricht in der Regel einem LDAP-Attribut. Ein Beispiel:  
 
<pre>property_descriptions = { 'prop1'&nbsp;: univention.admin.property(
 
<pre>property_descriptions = { 'prop1'&nbsp;: univention.admin.property(
 
short_description = 'name'
 
short_description = 'name'
Line 77: Line 77:
 
Die Parameter haben folgende Bedeutung:  
 
Die Parameter haben folgende Bedeutung:  
  
#'''short_description'''  
+
*'''short_description'''  
#'''long_description''': Eine ausführlichere Beschreibung, die im Web-Frontend des Univention Directory Manager für die Tooltips genutzt wird.  
+
*'''long_description''': Eine ausführlichere Beschreibung, die im Web-Frontend des Univention Directory Manager für die Tooltips genutzt wird.  
#'''syntax''': Dieser Parameter definiert den Typ eines Attributs. Die folgende Liste enthält die wichtigsten Beispiele für mögliche Werte. All diesen Werten ist das Prefix&nbsp; ''univention.admin.syntax.'' voranzustellen: '''string''' (eine beliebige Zeichenkette), '''integer''' (ein ganzzahliger positiver Wert), '''boolean''' (kann nur eine 0 oder eine 1 enthalten), '''filesize''' (ein ganzzahliger positiver Wert mit einer optional folgenden Angabe der Einheit. Unterstützt werden die Einheiten: B, KB, MB, GB, die Groß- und Kleinschreibung ist irrelevant), '''phone''' (eine Telefonnummer),&nbsp; '''uid''' (ein Benutzername), '''uid_umlauts'''&nbsp; (ein Benutzername mit Umlauten), '''gid''' (ein Gruppenname), '''sharePath''' (ein Pfad einer Freigabe), '''passwd''' (ein Passwort von min. acht Zeichen Länge), '''userPasswd''' (ein Passwort mit min. einem Zeichen), '''hostName''' (ein Rechnername nach RfC 952), '''ipAddress''' (eine IPv4-Adresse), '''hostOrIP''' (ein Rechnername oder eine IPv4-Adresse), '''netmask''' (eine Netzmaske), '''absolutePath''' (ein absoluter Pfad nach UNIX-Syntax, d.h. der Wert muss mit einem '/' anfangen), <br>'''emailAddress''' (eine Email-Adresse), '''emailAddressTemplate''' (eine E-Mail Adresse mit Nutzername),&nbsp; '''date''' (ein Datum in verschiedenen Kurzschreibweisen: TT.MM.JJ oder \\ TT.MM.JJJJ oder JJJJ-MM-TT). Anhand dieser Typ-Definitionen&nbsp; kann der Univention Directory Manager die angegebenen Werte für das Attribut überprüfen und bei ungültigen Werten eine detaillierte Fehlermeldung liefern. Zusätzlich zu den vordefinierten Typdefinitionen können auch eigene Typen erstellt werden. Dies sollte im Normalfall nicht notwendig sein  
+
*'''syntax''': Dieser Parameter definiert den Typ eines Attributs. Die folgende Liste enthält die wichtigsten Beispiele für mögliche Werte. All diesen Werten ist das Prefix&nbsp; ''univention.admin.syntax.'' voranzustellen: '''string''' (eine beliebige Zeichenkette), '''integer''' (ein ganzzahliger positiver Wert), '''boolean''' (kann nur eine 0 oder eine 1 enthalten), '''filesize''' (ein ganzzahliger positiver Wert mit einer optional folgenden Angabe der Einheit. Unterstützt werden die Einheiten: B, KB, MB, GB, die Groß- und Kleinschreibung ist irrelevant), '''phone''' (eine Telefonnummer),&nbsp; '''uid''' (ein Benutzername), '''uid_umlauts'''&nbsp; (ein Benutzername mit Umlauten), '''gid''' (ein Gruppenname), '''sharePath''' (ein Pfad einer Freigabe), '''passwd''' (ein Passwort von min. acht Zeichen Länge), '''userPasswd''' (ein Passwort mit min. einem Zeichen), '''hostName''' (ein Rechnername nach RfC 952), '''ipAddress''' (eine IPv4-Adresse), '''hostOrIP''' (ein Rechnername oder eine IPv4-Adresse), '''netmask''' (eine Netzmaske), '''absolutePath''' (ein absoluter Pfad nach UNIX-Syntax, d.h. der Wert muss mit einem '/' anfangen),&nbsp; '''emailAddress''' (eine Email-Adresse), '''emailAddressTemplate''' (eine E-Mail Adresse mit Nutzername),&nbsp; '''date''' (ein Datum in verschiedenen Kurzschreibweisen: TT.MM.JJ oder \\ TT.MM.JJJJ oder JJJJ-MM-TT). Anhand dieser Typ-Definitionen&nbsp; kann der Univention Directory Manager die angegebenen Werte für das Attribut überprüfen und bei ungültigen Werten eine detaillierte Fehlermeldung liefern. Zusätzlich zu den vordefinierten Typdefinitionen können auch eigene Typen erstellt werden. Dies sollte im Normalfall nicht notwendig sein  
#multivalue
+
*'''multivalue'''

Revision as of 15:07, 4 March 2010

Einführung

Univention Directory Manager verwendet zur Verwaltung der Daten des Verzeichnisdienstes flexible und erweiterbare Struktur aus Python-Modulen. Zusätzlich einzubindende Module werden nach Ablage im Dateisystem automatisch erkannt und zur Verwendung an Kommandozeile und Web-Interface angeboten.

Die Entwicklung eigener Module erlaubt Univention Directory Manager über den Funktionsumfang von erweiterten Attributen hinaus flexibel zu erweitern.

Univention Directory Manager-Module

Übersicht

Univention Directory Manager (kurz UDM) verwendet zur Abbildung von LDAP-Objekten eine eigene Modulstruktur. Im Regelfall entspricht eines dieser UDM-Module einem LDAP-Objekt (z.B. einem Benutzer, einer Gruppe oder einem Container).

Die Module sind nach Aufgabenbereichen strukturiert im Verzeichnis /usr/lib/python2.4/site-packages/univention/admin/handlers/. Die Module für die Verwaltung der verschiedenen Rechnerobjekte befinden sich beispielsweise unterhalb des Ordners computers. Dieses Objekt kann von der Kommandzeilenschnittstelle durch computers/windows angesprochen werden.

Eigene Module sollten nach Möglichkeit in einem eigenen Unterverzeichnis abgelegt werden, um Konflikte mit eventuell später in UCS integrierten Standardmodulen zu vermeiden. Damit die Module initialisiert werden können, muss im Verzeichnis eine Datei __init__.py existieren.

Aufbau eines Moduls

Ein Modul besteht aus der Definition der Modul-Attribute und der Definition einer von univention.admin.simpleLdap abgeleiteten Klasse object.

Im folgenden wird mit einer ausführlichen Beschreibung der zu definierenden Variablen begonnen. Im darauf folgenden Abschnitt wird die Klasse object genauer betrachtet und notwendige Definitionen und Funktionen in der Klasse aufgelistet. Abschließend werden noch zwei optionale Funktionen definiert und erklärt.

Globale Variablen

Im folgende werden die globalen Variablen definiert, die in einem Univention Directory Manager-Modul besondere Bedeutungen haben. Dabei wird zwischen zwingend notwendigen und optionalen Variablen unterschieden. Die folgende Liste enthält die erforderlichen Variablen, die jedes Modul definieren muss:

module

String, der dem Namen des UDM-Moduls entsprechen muss, z.B. computers/computer

operations

Liste von Strings, enthält alle mit diesem Objekt erlaubten LDAP-Operationen. Mögliche Operationen sind: ['add','edit','remove','search','move']

short_description

Diese Beschreibung wird im Web-Frontend des Univention Directory Manager als Name angezeigt. Im Bereich Navigation wird dieser Text in der Auswahlliste für mögliche Objekttypen angezeigt.

childs

Gibt an, ob es sich bei diesem LDAP-Objekt um einen Container handelt. In diesem Fall wird diese Variable auf den Wert 1 gesetzt und andernfalls auf 0.

long_description

Eine ausführliche Beschreibung des Moduls

options

Ein Python-Dictionary, das Optionen definiert, die genutzt werden können um einzelne Attribute (properties) dieses Moduls auszublenden. In diesem Dictionary werden die Optionen (als univention.admin.option Objekte) einer eindeutigen Zeichenkette zugeordnet, die später zur Referenzierung verwendet wird (siehe property-descriptions). Jede Option erhält zwei Parameter:

  • short_description: Eine kurze Beschreibung der Option, die beispielsweise im Web-Frontend des Univention Directory Manager als beschreibender Text zu den Eingabefeldern genutzt wird.
  • default Definiert, ob diese Option standardmäßig aktiviert sein soll. Eine 1 steht dabei für aktiv und eine 0 für inaktiv.

Beispiel:

options = { 'opt1' : univention.admin.option(
 short_description = 'short description',
 default = 1 ) 
 }

property-descriptions

Dieses Python-Dictionary enthält alle Attribute, die dieses Modul zur Verfügung stellt. Dabei werden die Attribute (als univention.admin.property-Objekte), wie schon die Optionen, über eine eindeutige Zeichenkette als Schlüssel referenziert. Ein solches Modul-Attribut entspricht in der Regel einem LDAP-Attribut. Ein Beispiel:

property_descriptions = { 'prop1' : univention.admin.property(
		short_description = 'name'
		long_description = 'long description',
		syntax = univention.admin.syntax.string,
		multivalue = 0,
		required = 1,
		may_change = 1,
		identifies = 0,
		dontsearch = 0,
		show_in_lists = 0,
		one_only = 0,
		options = [ 'opt1' ] )

Die Parameter haben folgende Bedeutung:

  • short_description
  • long_description: Eine ausführlichere Beschreibung, die im Web-Frontend des Univention Directory Manager für die Tooltips genutzt wird.
  • syntax: Dieser Parameter definiert den Typ eines Attributs. Die folgende Liste enthält die wichtigsten Beispiele für mögliche Werte. All diesen Werten ist das Prefix  univention.admin.syntax. voranzustellen: string (eine beliebige Zeichenkette), integer (ein ganzzahliger positiver Wert), boolean (kann nur eine 0 oder eine 1 enthalten), filesize (ein ganzzahliger positiver Wert mit einer optional folgenden Angabe der Einheit. Unterstützt werden die Einheiten: B, KB, MB, GB, die Groß- und Kleinschreibung ist irrelevant), phone (eine Telefonnummer),  uid (ein Benutzername), uid_umlauts  (ein Benutzername mit Umlauten), gid (ein Gruppenname), sharePath (ein Pfad einer Freigabe), passwd (ein Passwort von min. acht Zeichen Länge), userPasswd (ein Passwort mit min. einem Zeichen), hostName (ein Rechnername nach RfC 952), ipAddress (eine IPv4-Adresse), hostOrIP (ein Rechnername oder eine IPv4-Adresse), netmask (eine Netzmaske), absolutePath (ein absoluter Pfad nach UNIX-Syntax, d.h. der Wert muss mit einem '/' anfangen),  emailAddress (eine Email-Adresse), emailAddressTemplate (eine E-Mail Adresse mit Nutzername),  date (ein Datum in verschiedenen Kurzschreibweisen: TT.MM.JJ oder \\ TT.MM.JJJJ oder JJJJ-MM-TT). Anhand dieser Typ-Definitionen  kann der Univention Directory Manager die angegebenen Werte für das Attribut überprüfen und bei ungültigen Werten eine detaillierte Fehlermeldung liefern. Zusätzlich zu den vordefinierten Typdefinitionen können auch eigene Typen erstellt werden. Dies sollte im Normalfall nicht notwendig sein
  • multivalue
Personal tools