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
sieht auch ok aus...
Ich bin für jede Hilfe dankbar!!!!
Gruss,
Tenere
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