Navigation
- Startseite
- Alle Kategorien
- Univention Corporate Server (UCS)
- Installation
- Services for Windows
- Kolab2 für UCS
- Scalix für UCS
- Nagios
- Backup
- Virtualisierung
- Softwarepflege und Paketverwaltung
- Bootloader und Bootsplash
- LDAP-Server und Listener/Notifier-Replikation
- SSL-Zertifikate
- Univention Directory Manager (UDM)
- Maildienste, Viren- und Spamerkennung
- Univention Management Console (UMC)
- AD Connector
- DNS und DHCP
- Basis-Systemdienste
- Univention Configuration Registry (UCR)
- Freigaben
- Weitere Serverdienste
- 3rd Party Produkte
- Univention Corporate Desktop (UCD)
- UCS Thin Client Services (UCS TCS)
- UCS@school
- UCS Desktop Virtualization Services (DVS)
- Sitemap
FAQs in dieser Kategorie
- Wichtige Funktionen im UDM nicht verfügbar
- UDM CLI meldet: superordinate object not present
- Übergabe von Werten an den Univention Directory Manager mittels Import einer CSV Datei
- Verknüpfung von LDAP-Richtlinien an der UDM Kommandozeile
- Anlegen eines benutzerdefinierten Attributs
- Timeout Änderung für den Univention Directory Manager bzw. für die Univention Management Console
- Konfiguration des Anzeige-Limits im Univention Directory Manager
- Erstellung von Hook-Funktionen für erweiterte Attribute
- Zugriff auf UDM/UMC nur aus bestimmten Netzen
- Deaktivieren der Anzeige von Icons in den Suchergebnissen
- Konfiguration von Modulen des Univention Directory Manager
- Anpassen des Layouts des Univention Directory Manager
- Wie kann der Hintergrund im Univention Directory Manager (UDM) durchgängig angezeigt werden?
- Wie kann das UDM/UMC-Design aus UCS 2.2 weiterverwendet werden?
- Benutzer können ihr Passwort im UDM nicht ändern (Permission Denied)
- Ändern der Suchvorgabe eines Assistenten
- Wie kann das Logging für den UDM aktiviert werden?
Tags
Univention Corporate Server (UCS) » Univention Directory Manager (UDM)
Erstellung von Hook-Funktionen für erweiterte Attribute
Die im Univention Directory Manager verfügbaren erweiterten Attribute stellen im Gegensatz zu den benutzerdefinierten Attributen einen neuen, sehr flexiblen Mechanismus zur Verfügung: Hooks. Durch sie können bei der Verwendung von erweiterten Attributen automatisch Änderungen an beliebigen Objekten durchgeführt werden.
Hinweis: Für die Erstellung eigener Hooks sind mindestens Programmierkenntnisse in Python notwendig!
Was ist ein Hook?
Ein Hook stellt eine Python-Funktion dar, die zu einem bestimmten Zeitpunkt während der Modifikation eines LDAP-Objektes ausgeführt wird und in der Lage ist, in den Modifikationsvorgang einzugreifen. Die aufzurufenden Python-Funktionen werden in einer Hook-Klasse zusammengefasst. Die Hook-Klasse kann derzeit Funktionen für folgende Ansprungspunkte bereitstellen:
- hook_open
- hook_ldap_pre_create
- hook_ldap_addlist
- hook_ldap_post_create
- hook_ldap_pre_modify
- hook_ldap_modlist
- hook_ldap_post_modify
- hook_ldap_pre_remove
- hook_ldap_post_remove
Die Pre- und Post-Funktionen werden jeweils vor bzw. nach dem Anlegen/Modifizieren/Löschen eines LDAP-Objektes aufgerufen und können verwendet werden, um zum Beispiel
- vor dem Anlegen/Modifizieren Attributwerte des LDAP-Objektes automatisch anzupassen
- andere LDAP-Objekte zu modifizieren
- Plausibilitätschecks durchzuführen und ggf. eine Fehlermeldung zu erzeugen
- u.v.m.
Die Funktionen hook_ldap_addlist und hook_ldap_modlist geben lesenden und schreibenden Zugriff auf eine Liste mit LDAP-Modifikationen beim Erzeugen/Verändern eines LDAP-Objektes. Über diese Funktionen können ebenfalls Werte automatisch angepasst werden. Die Funktion hook_open wird beim Öffnen eines Objektes im Univention Directory Manager (UDM) bzw. beim Start des UDM-CLI ausgeführt und kann z.B. für zu berechnende Vorgabewerte verwendet werden.
Hook-Interna
Alle Funktionen der Hook-Klasse bekommen beim Aufruf eine Referenz auf die UDM-Modul-Instanz übergeben, für die sie gerade aufgerufen wurde. Über diese Referenz können sämtliche Informationen des UDM-Moduls abgerufen und ggf. modifiziert werden. So ist z.B. der lesende und schreibende Zugriff auf die Modul-Variablen info, oldinfo, attr, oldattr usw. möglich. Zusätzlich erhalten die Funktionen hook_ldap_addlist und hook_ldap_modlist als zweiten Parameter eine Liste mit LDAP-Modifikationen. Diese Liste kann von der Funktion modifiziert werden und muss als Rückgabewert wieder zurückgegeben werden.
Sollten für ein UDM-Modul über mehrere erweiterten Attribute auch mehrere unterschiedliche Hook-Klasse definiert worden sein, ist zu beachten, daß die Reihenfolge, in der die Funktionen der unterschiedlichen Hook-Klassen aufgerufen werden, nicht deterministisch ist! Es kann also nicht sichergestellt werden, daß die Hook-Funktion hook_ldap_modlist des erweiterten Attributs A grundsätzlich vor der Hook-Funktion des erweiterten Attributs B aufgerufen wird.
Die Hook-Klasse muss als eigenständige Python-Datei unterhalb von /usr/lib/python2.4/site-packages/univention/admin/hooks.d/ abgelegt werden. Als Vorlage kann die in der Datei /usr/lib/python2.4/site-packages/univention/admin/hook.py vorhandene Hook-Klasse simpleHook dienen.
Die im hooks.d-Verzeichnis abgelegten Python-Dateien werden automatisch geladen und aufgerufen, sofern der jeweilige Hook-Klassenname an einem erweiterten Attribut im Feld "hook" angegeben wurde.
Beispiel für eine Hook-Klasse
Ein Beispiel für eine Hook-Klasse ist unter myhook.py zu finden. Darüber hinaus findet sich eine Anleitung zum Erstellen eines erweiterten Attributs mit Hook-Klasse im Univention Wiki unter http://wiki.univention.de/index.php?title=Erstellen_eines_erweiterten_Attributs_mit_Hook.
Verwendung von Hook-Klassen
Um diese Hook-Klasse mit einem erweiterten Attribut mit dem Namen myattr zu verknüpfen, kann folgender Befehl verwendet werden:
udm settings/extended_attribute modify \
--dn cn=myattr,cn=univention,dc=univention,dc=test \
--set hook="MyHook"
Tags: Erweiterte Attribute, Hook, Python, UDM
Verwandte Artikel:
- Erneuern der SSL-Zertifikate
- Einführung in Bacula
- Wichtige Funktionen im UDM nicht verfügbar
- UCS Pakete selbst erstellen
- Replikationsstörung durch nicht beendete Prozesse beheben.
Letzte Änderung der FAQ: 2011-01-27 15:10
Autor: Sönke Schwardt
Revision: 1.10
Kommentieren nicht möglich