[Dresden-pm] Frage zur Implementation von einer Schnittstelle

Hans-Dietrich Kirmse hd.kirmse at gmx.de
Mi Okt 26 06:26:23 PDT 2011


Hallo,

ich komme wieder mit einer sicherlich exotischen Frage:
wie gestaltet man eine Schnittstelle für eine "externe" Funktion.

Ich meine damit Folgendes: ich habe für unser Schulserverprojekt eine 
ganze Reihe von Perl-Scripten zur User- und Rechnerverwaltung erstellt. 
Diese Scripte habe ich dann in ein Debian-Paket gesteckt und die werden 
darüber eingespielt.

Nun ist es aber so, das diese Scripte nicht die Anforderungen von allen 
potentiellen Nutzern erfüllen werden. Es soll jetzt die Möglichkeit 
eingerichtet werden, dass andere Entwickler Scripte (Funktionen) 
schreiben, die sich in die von mir bereitgestellten Funktionen einklinken.

Ein einfaches Beispiel: Beim Versetzen von Usern bzw. Klassen wird durch 
mein Script folgendes Codefragment aufgerufen:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# wir bilden den kompletten Name
$name_curr = $forename_curr . ' ' . $lastname_curr;

# und tragen den in den LDAP ein
$mesg = $ldap->modify( $entry->dn,
                        replace => { cn           => $name_curr,
                                     sn           => $lastname_curr,
                                     givenName    => $forename_curr,
                                     displayName  => $name_curr } );
$mesg->code and die "Abbruch: $mesg->error";

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Es wurden Wünsche geäußert, dass der displayname anders gebildert werden 
sollte, nämlich neben dem Name auch die Klasse angegeben werden. Andere 
lehnen das grundsätzlich ab, weil die Klasse ein eigener Entry im LDAP 
ist und es damit zu nicht gewollten Redundanzen kommt.

Lösung des Problems, das für die, die das Attribut 'displayName' anders 
haben wollen, ein Funktion bereitzustellen, die eben für diesen User die 
Klasse im LDAP sucht und dann einen anderen Displaynamen bereitstellt.

Das Problem ist nicht, wie so eine Funktion aussieht - das ist eher 
trivial. Das Problem ist, wie mache ich das, dass ein anderer 
Programmierer eine solche Funktion erstellen kann, diese in ein Modul 
steckt, dieses Modul in ein Debian-Paket steckt und wenn dieses 
Debian-Paket eingespielt wird, dass dann automatisch diese Funktion 
aufgerufen wird.

Diese Sache hier mit dem Displayname ist dabei nur ein Beispiel. Es geht 
überhaupt darum, wie man so eine Schnittstelle implementiert. Ich habe 
dazu in der Literatur und im Netz (aber nur deutschsprachig) nicht 
gefunden. :(

Ich hoffe, ich konnte mein Problem verständlich genug ausdrücken.

Für jeden Hinweis, Idee wäre ich sehr dankbar.

Viele Grüße
Hans-Dietrich


Mehr Informationen über die Mailingliste Dresden-pm