Schnittstellenfunktion handler() in Listenermodulen

german

#1

Unter wiki.univention.de/index.php?tit … des_Moduls wird beschrieben, dass die Funktion handler() 3 Parameter erwartet:

dn, new, old

Im Handlermodul cyrus-shared-folder.py finde ich auch folgende Variante mit einem 4. Parameter command:


modrdn=‘1’

def handler(dn, new, old, command):

Augenscheinlich ist mit der Abfrage command==‘r’ so feststellbar, dass nur ein Verschieben des entsprechenden Objekts stattgefunden hat.

Frage 1:
Handelt es sich hierbei um ein undokumentiertes Feature, dass nur von Univention und Partnerfirmen wie OX (ox-user.py) eingesetzt werden kann, oder ist das ganze offiziell verwendbar?
Frage 2:
Muss modrdn=‘1’ gesetzt sein, um diese Funktionalität nutzen zu können?


#2

Hallo,

hierbei handelt es sich in der Tat um eine bisher nich dokumentierte Ergänzung. Es ist aber davon auszugehen dass diese Erweiterung auch in kommenden UCS-Versionen beibehalten wird, sie kann daher auch in eigenen Modulen verwendet werden.
Durch Registrieren der Option “modrdn=1” im Listener-Modul wird der Listener veranlasst den changetype der Änderung als zusätzlichen Parameter (command) an die Funktion “handler()” zu übergeben.
Es werden vier changetypes (auch zu sehen in /var/lib/univention-ldap/notify/transaction) verwendet:
[ul]
[li]a (Add)[/li]
[li]d (Delete)[/li]
[li]m (Modify)[/li]
[li]r (Modrdn/Verschieben)[/li]
[li]n (Wird als “dummy” bei der Schemareplikation verwendet)[/li][/ul]

Mit freundlichen Grüßen
Janis Meybohm