Probleme mit LDAP Telefonbuchabfrage

Tenere

Neuer User
Mitglied seit
7 Mrz 2006
Beiträge
32
Punkte für Reaktionen
0
Punkte
0
Hallo Allerseits,

ich betreibe ein Cisco 7965 an einem Asterisk 1.8.4 mit Chan_SCCP_b.
Soweit funktioniert alles gut. Nun versuche ich das Telefonbuch mit meinem LDAP Server (OpenSUSE 11.4) abzugleichen.

Als Anhalt habe ich auf der Seite von Florian Wolters ein Skript gefunden, was ich angepasst habe.

Nur leider wird ein leeres Telefonbuch angezeigt.

ldapsearch -x -b 'ou=phonebook,dc=localdomain' '(objectclass=inetOrgPerson)' gibt Folgendes aus:

# extended LDIF
#
# LDAPv3
# base <ou=phonebook,dc=localdomain> with scope subtree
# filter: (objectclass=inetOrgPerson)
# requesting: ALL
#

# Tom Thumb, phonebook, localdomain
dn: cn=Tom Thumb,ou=phonebook,dc=localdomain
cn: Tom Thumb
givenName: Tom
sn: Thumb
o: Home
l: Brisbane
street: 12 Banana Ave
st: QLD
postalCode: 41199
pager: 5555 1111
homePhone: 5555 1234
mobile: 5555 1235
telephoneNumber: 5555 1236
facsimileTelephoneNumber: 5555 1240
mail: [email protected]
objectClass: top
objectClass: inetOrgPerson

# search result
search: 1
result: 0 Success

# numResponses: 2
# numEntries: 1

Somit ist ein Eintrag im LDAP erreichbar.

Der Code
PHP:
<?php
header("Content-type: text/xml; charset=utf-8");
$filter = $_REQUEST["filter"];
$ds=ldap_connect("localhost");
$myldap="ou=phonebook,dc=localdomain"; 
if ($ds) { 
   $filterldap="(&(objectclass=inetOrgPerson) \
     (|(givenname=*".$filter."*)(sn=*".$filter."*)(cn=*".$filter."*)(mail=*".$filter."*)))";
   $sr=ldap_search($ds, $myldap, $filterldap); 
   echo "<CiscoIPPhoneDirectory>\n";
   echo "<Title>Telefonbuch</Title>\n";
   $info = ldap_get_entries($ds, $sr);
   echo "<Prompt>";
   echo $info["count"];
   echo " Reachable people</Prompt>\n";
   for ($i=0; $i<$info["count"]; $i++) {
      if ($info[$i]["homePbhone"][0]) {
         echo "<DirectoryEntry>\n";
         echo "<Name>H:" . iconv("UTF-8","ISO-8859-1",$info[$i]["cn"][0]) . "</Name>\n";
         echo "<Telephone>" .str_replace(" ","", \
            str_replace("+49","0", $info[$i]["homePhone"][0])) ."</Telephone>\n";
         echo "</DirectoryEntry>\n";
      }
      if ($info[$i]["mobile"][0]) {
         echo "<DirectoryEntry>\n";
         echo "<Name>M:" . iconv("UTF-8","ISO-8859-1",$info[$i]["cn"][0]) . "</Name>\n"; 
         echo "<Telephone>" .str_replace(" ","", \
            str_replace("+49","0", $info[$i]["mobile"][0])) ."</Telephone>\n";
         echo "</DirectoryEntry>\n";
      }
      if ($info[$i]["telephoneNumber"][0]) {
         echo "<DirectoryEntry>\n";
         echo "<Name>W:" . iconv("UTF-8","ISO-8859-1",$info[$i]["cn"][0]) . "</Name>\n";
         echo "<Telephone>" .str_replace(" ","", \
            str_replace("+49","0", $info[$i]["telephoneNumber"][0])) ."</Telephone>\n";
         echo "</DirectoryEntry>\n";
      }
   }  
   echo "</CiscoIPPhoneDirectory>";
   ldap_close($ds);
} else {
   echo "error";
}
?>

sieht auch ok aus...

Ich bin für jede Hilfe dankbar!!!!

Gruss,

Tenere
 
hast du mal versucht das ding direkt über browser aufzurufen??

was sagt den ddas log vom ldapserver und dem webserver?

Sven
 
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.