Schnittstellenfunktion handler() in Listenermodulen

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?

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

Mastodon