LDAP, Verzeichnisdienst

H

holgertavares

Guest
Hallo Forum,

gibt es eine Möglichkeit an Stelle oder zusätzlich zu den vorhandenen Diensten andere Verzeichnisdienste analog klickTel bzw. Gigaset.net anzugeben? Welcher Verzeichnisdienst, sprich Protokoll kommt beim S450IP zum Einsatz?

Grüße,
 
holgertavares schrieb:
gibt es eine Möglichkeit an Stelle oder zusätzlich zu den vorhandenen Diensten andere Verzeichnisdienste analog klickTel bzw. Gigaset.net anzugeben? Welcher Verzeichnisdienst, sprich Protokoll kommt beim S450IP zum Einsatz?
Das scheint etwas selbstgestricktes von Siemens zu sein.

Für das Klickte Telefonbuch wird
http://api.klicktel.de/gigasetpb/1.0/search.php
aufgerufen und für gigaset.net
http://pbs.gigaset.net/snipweb/phonebookservlet.do

In beiden Fällen werden die Suchparameter in gleicher Weise über die URL mitgegeben und das Ergebnis kommt in einer XML Datei zurück. Der Aufbau der XML Datei is auch in beiden Fällen ähnlich. Nix was mir bekannt ist.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<list response="get_list" type="pb" total="1" first="1" last="1" reqid="1234">
<entry>
<ln>Nachname</ln>
<fn>Vorname</fn>
<ct>Ort</ct>
<st>Straße</st>
<nr>Hausnummer</nr>
<hm>Telefonnummer</hm>
</entry>
</list>

Da die Abfrage dieser beiden Dienste ja wohl in der Firmware hardcodiert ist, wüßte ich auch nicht, wie man da zusätzliche Dienste hinzufügen kann.

Ausser vieleicht Du biegst in Deinem Router die DNS Auflösung für api.klicktel.de oder pbs.gigaset.net auf eine andere IP um und programmierst Dir selbst etwas, das Anfragen in dem Gigaset Format empfängt und das Ergebnis in entsprechenden XML Dateien zurückgibt.
 
  • Like
Reaktionen: LeeB
Hi,

vielleicht stelle ich mir das ja zu einfach vor, aber das Gigaset unterstuetzt doch Jabber/XMPP. Wenn man dann noch einen entsprechenden Transport aufsetzt, sollte doch z.B. LDAP moeglich sein, oder?

Gruss
Catalonia
 
XML - Schnittstelle klingt erstmal sehr gut. Was dann im Endeffekt auf dem Server darunter hängt ist somit nebensächlich, also auch ein LDAP bzw. (mySQL-)DB mit einem WebServer davor.
... Der Aufbau der XML Datei is auch in beiden Fällen ähnlich ...
, das könnte der Ansatz zu "gleiche" (Eingabe-) Maske zu verschiedenen Diensten sein, sprich in den Einstellungen einen zusätzlichen "Verzeichnisprovider" zuzulassen. Den DNS umzubiegen, na ja ne Varriante, eben tricky und temporär.

Andererseits einen Netzdienst (DNS-Namen) fest einzuprogrammieren halte ich auch für wenig glücklich. Zumindestens bei einem Telefon, wo man so schön viele Einstellungen (mittlerweile) machen kann.
 
XML - Schnittstelle klingt erstmal sehr gut. Was dann im Endeffekt auf dem Server darunter hängt ist somit nebensächlich, also auch ein LDAP bzw. (mySQL-)DB mit einem WebServer davor.

, das könnte der Ansatz zu "gleiche" (Eingabe-) Maske zu verschiedenen Diensten sein, sprich in den Einstellungen einen zusätzlichen "Verzeichnisprovider" zuzulassen. Den DNS umzubiegen, na ja ne Varriante, eben tricky und temporär.

Andererseits einen Netzdienst (DNS-Namen) fest einzuprogrammieren halte ich auch für wenig glücklich. Zumindestens bei einem Telefon, wo man so schön viele Einstellungen (mittlerweile) machen kann.
Hello!
What does reqid="1234" parameter stays for in the list tag? What is response="get_list"?
What are the first and last parameters?
What are those parameters sent in the URL (particularly reqsrc=auto, regsrc=user and lang=0 or lang=23 - how do they affect the results)
I am creating my own search.php script, but I can't understand its behaviour.
 
Es klappt!

Ich habe mir heute mal die Mühe gemacht, sowas zu realisieren. Und siehe da: es klappt!

Notwendige Schritte:

- Mit Wireshark den Netzwerkverkehr mitsniffen, um zu erfahren, welche URL das Gigaset mittels GET aufruft und welche Parameter es dabei mitgibt. Dabei festgestellt, dass das Gigaset seine MAC-Adresse mitschickt und eine Digest Authentication durchführt. Letzteres ist aber nicht notwendig zu konfigurieren, wenn man einen eigenen Webserver aufsetzt.

- Im lokalen DNS-Server (in meinem Fall BIND9) den Hostnamen "api.klicktel.de" auf die IP-Adresse des eigenen Webservers auflösen. Ich habe dazu eine eigene DNS-Zone erstellt.

- Im eigenen Webserver (in meinem Fall Apache 2.2) einen VirtualHost einrichten mit ServerName api.klicktel.de. Außerdem eine RewriteRule von ^/gigasetpb/1.0/search.php$ auf /cgi-bin/klicktel.cgi.

- Eine klicktel.cgi im CGI-Verzeichnis erstellen, die die Daten wie von Littlewhoo beschrieben zurückgibt. Die "Reqid" kann dabei beliebig gewählt werden. Aus der Umgebungsvariable QUERY_STRING kann der Typ der Anfrage entnommen werden, bei Telefonbuch ist das "type=pb" und "ln=Nachname", wobei "Nachname" als Platzhalter für den gesuchten Nachnamen steht. Beim Branchenbuch ist das "type=yp" und "wh=Branche", wobei "Branche" wieder der Platzhalter für die Branche ist. Die Strings sind mit %2a terminiert, Umlaute sind ebenfalls mit %irgendwas kodiert, aber das kriegt man mit "recode" zurückgewandelt.

Das war’s auch schon. Analog dazu kann für pbs.gigaset.net eine DNS-Zone erstellt werden, ein weiterer entsprechender Apache-VirtualHost und eine RewriteRule von ^/snipweb/phonebookservlet.do$ auf /cgi-bin/gigasetnet.cgi. Im QUERY_STRING wird nun "nn=Nickname" übertragen, wobei "Nickname" der Platzhalter für den gesuchten Gigaset.net-Namen ist. Der XML-Aufbau ist geringfügig anders, als Typ muß type="shcpb" angegeben werden, die einzelnen Treffer in der Form <entry id="0000"><usr>Nickname</usr><nn>Max Mustermann</nn></entry>, wobei "Nickname" und "Max Mustermann" wieder Platzhalter sind. Die "enty id" ist beliebig, darf auch bei allen Einträgen gleich sein.

Allerdings lassen sich die von der Gigaset.net zurückgegebenen Suchergebnisse nicht nutzen/speichern, wenn der Nickname nicht mit "#9" endet. Ein "#9" am Ende des Nicknames sorgt aber dafür, dass diese Nummer immer über das Gigaset.net gewählt wird. Damit ist es zwecklos, die Gigaset-Suchfunktion für eigene Einträge umbiegen zu wollen. Macht aber nix, mit der Klicktel-Suche klappt es ja.

Resultat: ich gehe auf Klicktel-Telefonbuchsuche oder Klicktel-Branchensuche, gebe die Anfangsbuchstaben des gewünschten Nachnamens ein und einen beliebigen Buchstaben bei "Ort", klicke "Suchen", das S450IP ruft mit der Abfrage meinem Apache auf, dort wird ein CGI gestartet, das fragt den LDAP-Server und generiert aus den Resultaten des LDAP-Servers eine XML-Antwort, die über den Apache beim S450IP ankommt. Und das Handset am S450IP zeigt ganz brav die Treffer an. :)

Zwei Tipps noch:
- Bei Umlauten in den Attributen spuckt ein ldapsearch base64 aus, das muß man im CGI also prüfen und bei Bedarf mit "recode" in UTF8 umwandeln.
- Da die LDAP-Attribute "telephoneNumber" und "homePhone" multivalue sind, das S450IP aber exakt eine Nummer pro XML-Eintrag erwartet, muß man pro Nummer einen vollständigen XML-Eintrag generieren.
 
Telefonbuch LDAP / SQL Datenbank

Über eine versteckte Seite im Web UI kann bei den Geräten auch eine eigene URL für den Telefonbuchdienst angegeben werden. Das erspart den Weg über einen "umgebogenen" DNS.

Siehe auch hier: Link

Gruß,
klo25
 
Danke für den Link zum Thread, klo25. Diese versteckte Seite kannte ich noch nicht, daher war aus meiner Sicht der einzige Weg, die DNS-Einträge umzubiegen.

Grüße, svenfried
 
Hat jemand eine Ahnung wie die Digest Authentifizierung bei Klicktel läuft?

Wird hier MAC-Adresse übertragen, oder noch mehr? Gibt es ein "geheimes" Passwort?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.