[Release] Fritz.box Cisco Phonebook XML Applikation

Ausblick:
Version 4 wird etwas anders arbeiten.
Dafür kann dann jedes Telefon auf andere Telefonbücher zugreifen wenn es will :) Nur abhängig von der Eingestellten Directory.xml für das Telefon.
Mit der Busybox von dort enthaltenem crond wird dann einfach Nachts das Update gestartet. Dazu kommt noch das in einer Services.xml ("Weltkugel-Taste") manuell ein Abgleich gestartet werden kann.
Die Telefonbücher werden dann erzeugt.
Soweit läuft das schon alles auf meiner box, ich muss nur nochmal prüfen ob das mit dem crond wirklich stabil läuft.

Im nächsten Schritt wären dann optimierungen an den Scripten dran. Eventuell kann man mit den Features der neueren busybox ja etwas ein wenig einfacher machen.
Falls jemand lust hat den in der neueren busybox enthaltenen httpd so zu konfigurieren das er mit dem script läuft wäre es toll wenn derjenige hier die Vorgehensweise posten könnte.
 
Hallo disorganizer,
so, der apache läuft auf der 7390, allerdings habe ich das "www" verzeichnis nach /apache/htdocs verlagert und die Pfade angepasst. Die directory.xml kann ich im Browser und im Phone aufrufen. Allerdings bekomme ich einen "BTXML-Error" wenn ich eine der beiden Optionen aufrufen möchte.

Ich habe aber noch nicht herausgefunden, wie ich Deine Kommandozeile in der debug.sh anpassen muss. Was genau macht die Option :-c "PB-Full.sh"?

Meine Zeile sieht so aus:
Code:
/var/media/ftp/FlashDisk-01/apache_bin -f /var/media/ftp/FlashDisk-01/apache/conf/apache.conf
in der apache.conf habe ich den User "boxusr80" konfiguriert. Hängt der Fehler mit dem User zusammen?

Nachtrag:
wenn ich die PB-Fill.sh auf der Box zu Fuß starten, kommt ein Fehler:
Code:
/cat: can't open '/tmp/PB-Data.xml': No such file or directory
Das liegt daran, dass die datei in /tmp nicht existiert. Ich habe sie mal angelegt, dann kommt der Fehler nicht mehr, allerdings wird auch nichts in die datei geschrieben. Ich hätte erwartet, dass dort das Telefonbuch drin steht.

ich habe hier noch 2 Probleme:
1. wie kriege ich das cgi-script im apache gestartet
2. warum bekomme ich einen Fehler, wenn ich das "PB-Full.sh" ausführe?


Christian
 
Zuletzt bearbeitet:
@RalfFriedel:
Was ich im Endeffekt mache:
Ich habe feste xml Dateien und Shellscripte.
Die Shellscripte (.sh Endung, bin/sh) erzeugen per echo einen text/xml Datenstrom in welchem die xml tags an das Telefon geschickt werden.
Von dort wird per sed, grep, source und anderen shellskripten dann live erzeugt was benötigt wird.

@Schetti:
Die -c option sagt dem Webserver welche Dateien ausführbar sein sollen. Hier sind alle .sh Dateien aufgeführt die verwendet werden.

Dein Fehler kommt denke ich davon das entweder die init option nicht von der Directory.xml an das Script übergeben wird.
Hast du im Script auch den part
Code:
if [ "$INIT" != "" ]
then
  /var/media/NEW_LINK/www/fbpb2cisco.sh $INIT > $DATAXMLFILE
fi
An deinen neuen Pfad angepasst?
Das fbbp2cisco.sh erzeugt die /tmp/PB-Data.xml.
Diese wird von PB-Full.sh aus aufgerufen wenn an die PB-Full.sh ein init=<irgendwas> Parameter übergeben wurde.
Deswegen ist auch in der Directory.xml der Link zur PB-Full.sh anders als sonst in den Scripts.
Dein User für den Apache muss natürlich x-Berechtigung auf die Scripts haben.
BTXML-Error sagt nur aus das ein Fehler aufgetreten ist. Gibt es da eine Fehlernummer dazu?
 
Zuletzt bearbeitet:
Hallo,
ja, das script ist eigentlich korrekt angepasst. Es kann natürlich sein, dass man die dateien in htdocs des apache-Servers nicht ausführen darf.
Es ist aber auch zum K...., dass der mini-http nicht läuft und niemand das Dingen hat.

Nein, bei meinem Cisco 7960 wird kein weiterer Fehler ausgegeben. XML Parse Error, steht da noch.

Edit:
Ne, am Pfad innerhalb des apache liegt es nicht. er sagt immer noch das die PB-Data.xml nicht vorhanden ist.
Code:
-rwxrwxrwx    1 root     root          3376 Feb 18 17:44 PB-Full.sh
-rwxrwxrwx    1 root     root           375 Feb 18 17:29 PB-Search.xml
-rwxrwxrwx    1 root     root         45736 Jun 13  2010 php.ini


Christian.
 
Zuletzt bearbeitet:
Ich vermute das wirklich der Apache die Skriptausführung verhindert.
Hast du mal versucht auch die anderen Skripte in das selbe Verzeichnis zu legen (und dann natürlich die Pfade anzulegen)?

EDIT:
Kannst du mal probieren die fbpb2cisco.sh aufzurufen?
Wird dann etwas ausgegeben? (Es sollten xml tags für das Cisco Phonebook sein)
Wenn Fehler kommen:
Wird wenn du per telnet "pbd --export" eingibst eine "/tmp/pbd.export" angelegt?

Es könnte nämlich sein das der pbd bei deiner box irgendwie "anders" läuft.
 
Zuletzt bearbeitet:
Versuch es mal mit dem httpd:
Code:
PORT=81
DIR=/var/media/ftp/htdocs
httpd -p $PORT -h $DIR
Sie ausführbaren Skripte müssen dazu im Unterverzeichnis $DIR/cgi-bin liegen.
 
@RalfFriedl: schaut gut aus.
Muss nur noch rausfinden was genau für die funktion wo liegen muss und etwas testen.
Danach wird die v4 dann mit dem busybox httpd laufen. Coole Sache :)
Da v4 die meisten Pfade sowieso über eine separate per source eingebundene Datei verwenden wird muss man für neue IP, Port, Pfade sowieso nur an 1 Stelle was ändern.
 
4.0 Beta1

Hier mal eine Beta-Version.
Noch nicht genau getestet, sollte aber gehen.
Es wird die busybox von dort verwendet für cron und http.

Neue Features:
* Per cron wird nachts um 03:00 das Telefonbuch ausgelesen.
* Anderer Webserver (busybox)
* Auslagerung vieler Pfadangaben etc. in die Datei PB-Constants
* Auslagerung der Directory.xml und Services.xml in entsprechende .sh Scripts
* Suche funktioniert richtig.
und viele bugfixes.

WICHTIG:
In der Config der phones müssen folgende einträge (Analog zu eurem Setup) vorhanden sein:
Code:
<directoryURL>http://192.168.2.2:81/cgi-bin/Directory.sh</directoryURL>
<servicesURL>http://192.168.2.2:81/cgi-bin/Services.sh</servicesURL>
Vorher waren das XML-Dateien!

Anpassungen sind an folgenden Dateien zu machen:
Code:
www/cgi-bin/Directory.sh          modify for phonebooks used
www/cgi-bin/update-phonebooks.sh	modify for phonebooks used and path to PB-Constants.sh
www/cgi-bin/Services.xml          modify path to PB-Update.sh
www/cgi-bin/PB-Constants.sh       edit all necessary constants

XML-Configfiles for Cisco Phones:
<directoryURL>http://192.168.2.2:81/cgi-bin/Directory.sh</directoryURL>
<servicesURL>http://192.168.2.2:81/cgi-bin/Services.sh</servicesURL>
Update to correct url

debug.sh				edit path to update-phonebooks.sh, web-port and web-path
crontabs				edit path to update-phonebooks.sh and maybe time

check if crond really has correct time and path for daily update:
/var/media/NEW_LINK/busybox1.11.3 crontab -c /var/media/NEW_LINK -l

check if processes are running:
ps -w | grep http
ps -w | grep cron
ps -w | grep tftp

Ihr müsstet besonders nachschauen ob cron wirklich nach der installation automatisch die richtige Zeit nimmt oder ob man per crontab die immer initialisieren muss.

Das Kommando für das manuell initialisieren wäre:
Code:
/var/media/NEW_LINK/busybox1.11.3 crontab -c /var/media/NEW_LINK crontabs
 

Anhänge

  • package-4.0-beta1.zip
    291 KB · Aufrufe: 22
Hi,
kurze Frage: In welcher Config Datei muss ich die URLs für service und directory eintragen. Ich habe derzeit nur eine SIPMAC.cnf-Datei für meine Phones.
kannst Du ggf. mal ein Beispiel posten?

Nachtrag:
In der Busy Box für die 7390 scheint der httpd nicht enthalten zu sein..... (Fehler applet not found...) kann das wahr sein? cron läuft aber.

Nachtrag 2:
nachdem ich eine Version mit httpd gefunden habe, läuft auch der Webserver.
Da das 7960 bzw. 7940 offensichtich keine SIPMAC.cfg.XML unterstützt, habe ich die directoryUrl in meine SIPMAC.cfg eingetragen
Code:
directory_url: "http://192.168.1.254:81/cgi-bin/Directory.sh"
Das funktioniert aber nicht. Jetzt kommt ein Fehlercode 404 am Telefon.

Nachtrag 3:
die update-phone.sh funktioniert bei mir nicht. Die test1 und test2 werden zwar neu geshrieben, es steht aber kein Inhalt drin. Ehrlich gesagt, ich kann auch nicht nachvollziehen, was wo die fbpb2cisco.sh die Daten hinschreibt. Wenn ich in dieser Datei die letzte Zeile weglasse, (rm /tmp/pbd.export) und in die pbd.export zu Fuß reingucke, finde ich die Daten. Wie gesagt, er schreibt zwar die test-Dateien, haben aber leider die keinen inhalt.
Code:
-rwxrwxrwx    1 root     root             0 Feb 20 16:51 PB-test1.xml
-rwxrwxrwx    1 root     root             0 Feb 20 16:51 PB-test2.xml


Christian.
 
Zuletzt bearbeitet:
ruf mal die fbpb2cisco.sh manuell mit einem Telefonbuchnamen als Parameter auf.
Also z.B. fbpb2cisco.sh Telefonbuch.
Es sollte eine Ausgabe per stdin erfolgen.
Wenn das funktioniert dann ist zumindest prinzipiell alles mit den Filtern etc in Ordnung.
Wie die Directory.sh in einem Telefon ohne xml-configfiles reingeschrieben wird weiss ich nicht. Bei mir ist es in der default configdatei für alle Phones drin.

Die update.sh schreibt die Dateien dorthin wo es im PB-Constants.xml file angegeben ist.
Defaultmäßig nach /tmp/PB-*.xml oder nach /var/media/NEW_LINK/www/PB-*.xml
 
Zuletzt bearbeitet:
4.0 Beta 2

Hier die 2. Beta.
Änderung:
* Konfigurationseinträge nur noch in einer Datei nötig.
* Scripte müssen in das selbe Verzeichnis da sie sich das aktuelle directory selbst suchen
* Kleine Bugfixes.

Installation:
www/cgi-bin files auf den Webserver einspielen.
Configfiles der Phones anpassen
Crond konfigurieren für die Erfassung der Telefonbuchdaten.

Konfiguration:
in www/cgi-bin/PB-Constants.sh alle nötigen Einträge durchführen.
Die Telefonbücher welche verwendet werden sollen müssen dort eingetragen werden.
 

Anhänge

  • package-4.0-beta2.zip
    291.6 KB · Aufrufe: 49
Hallo,
ja, das geht jetzt. Ich dachte, die fbpb2cisco.sh liesst das Std.-Telefonbuch aus. Daas Dein Telefonbuch "test1" heisst das habe ich erst jetzt gelernt. Und da ich kein "test1" - Telefonbuch habe, hat er natürlich nix ausgelesen....

Jetzt muss er nur noch die directoy.sh vom Telefonbrowser ausführen... Das klappt halt nicht und es kommt der Fehler 404. Das klappt übergens auch nicht mit dem IE9. Ist das Korrekt? Beim Aufruf von
http://192.168.2.2:81//cgi-bin/Directory.sh passier nix.(Webseite kann nicht angezeigt werden). kann man das auch irgendwie testen?

Christian.
 
Das ist nicht normal. Warum //? Es sollte eigentlich http://192.168.2.2:81/cgi-bin/Directory.sh sein.
Dort sollte dann so etwas rauskommen:
Code:
<?xml version="1.0"?>
<CiscoIPPhoneMenu>
  <MenuItem><Name>Phonebook xxxxx</Name><URL>http://192.168.2.2:81/cgi-bin/PB-Full.sh?book=xxxxxx?search=A?mode=L</URL></MenuItem>
  <MenuItem><Name>Phonebook yyyyy</Name><URL>http://192.168.2.2:81/cgi-bin/PB-Full.sh?book=yyyyyy?search=A?mode=L</URL></MenuItem>
</CiscoIPPhoneMenu>

Ist die Directory.sh wirklich im richtigen Verzeichnis und je nach Webserver zur Ausführung freigegeben?
 
Hi,
sorry das "//" ist ein Tippfehler....ich checke das aber noch mal heute Abend.

Ja was soll ich sagen, ich habe im Prinzip Dein Package 4.0 genommen und nur den httpd (gleiche Quelle) für die 7390 ausgetauscht. Die Pfade habe ich gelassen und in der Konstanten-Datei meine IP geändert. Der Webserver läuft auch. Der TFTP-Server läuft auf meiner qnap, das sollte aber kein Problem sein.

Ich habe allerdings den Verdacht, dass die bin für die 7390 etwas anders ist als die bin für die72xx. Mir ist auch aufgefallen, dass meine Cisco 7940/7960 Phones und aktueller Firmware (POS03-8-12-00) mit dem httpd nicht klarkommen. Irgendwo im Forum habe ich ein ähnliches Problem in Verbindung mit dem httpd und dieser Firmware gefunden. Ein Downgrade auf eine 7er SIP-Version akzepiert zunindest meine alte Telefonbuch.xml, die statisch ist und derzeit über einen apache-Server auf der qnap veröffentlicht wird und bislang auch von der 8er FW akzeptiert wurde. Mit dem httpd und 8er FW. gibt es den XML-Fehler...

Alles sehr merkwürdig. Welche Cisco Phones verwendest Du in Deinem Projekt? Es scheint hier wirklich gravierende Unterschiede zu geben. Auch das XML-Format für die 79xx Phones scheint unterschiedlich zu sein. Da forsche ich noch. Ob sich der Aufwand allerdings lohnt, keine Ahnung. ich habe zwar mittlerweile 5 7940er und 2 7960er da rumstehen (keine Ahnung wie viele SIP-Phones man an einer Fritte betreiben kann) aber wenn das so kompliziert ist, die Teile vernünftig einzubinden, kommt der Mist halt in die Tonne. ...aber noch ist es nicht so weit.

Christian.
 
Ich verwende ein 7961. Das xml format ist das selbe, aber man kann beim httpd aus der busybox wohl nicht einfach die xml Dateien blanko auf den Server legen (falscher Mimetyp?).
Wenn man das per script bedient wird ja der type=text/xml gesetzt, und dann funktioniert das auch mit den Phones.

In obigem Setup (1:1 nur die IP geändert) solltest du nach Aufruf der Directory.sh im IE eine richtige xml-Datei angezeigt bekommen.
Wenn das nicht der Fall ist stimmt noch was nicht am Webserver der 7390.
Eventuell kannst du ja mal im modification forum nachfragen bzw suchen ob da Jemand schon so etwas hatte.
Könnte sein das man da noch irgendetwas einstellen muss das bei den anderen Versionen default ist.
 
Hallo, hat das ganze schon jemand auf einer 7390 zum laufen gebracht und ist im Besitz der nötigen Busybox und des tftpd? Bei mir scheitert das ganze leider wegen Kleinigkeiten, ich habe die busybox von :

http://radislav.dyndns.org/index.php?site=Fritzbox/Modification/busybox.php busybox1.16.1 (nur für die Fritzbox 7390)

leider ist in dieser busybox der httpd server nicht mit drin... und den tftpd für die 7390 finde ich leider auch nirgends. Sollte also jemand die Binaries schon haben währe ich und andere sehr dankbar.

übrigens danke an den Entwickler disorganizer für die tolle Arbeit!!!
 
Ich habe die richtige busybox gefunden mit httpd für die 7390:

http://www.busybox.net/downloads/binaries/latest/busybox-mips

damit funktioniert der Server und die "4.0 Beta 2" . Allerdings habe ich das Gefühl das mein tolles Cisco nicht fähig ist die Ausgabe des Servers richtig umzusetzen. Weder das Directory noch die Services funktionieren. Ich erhalte nur einen 404 not found. Ich habe ein Cisco 7975 mit der 9 Firmware am laufen, denke die firmware ist das Problem...
 
Das glaub ich kaum das es an der Firmware / Phone Version liegt. Das ist Business zeugs, da wird das Format normal Jahrelang unterstützt.
Leider hab ich mit meiner 7170 und einem 7960 (non-g) noch keinen erfolg. busybox läuft, die skripte auch.
Allerdings hat die 7170 nur EIN Telefonbuch und daher funktioniert wohl fb2cisco.sh nicht wirklich - da ich die sed syntax noch nicht ganz verstehe hab ich von hand mal eine PB-Telefonbuch1.xml angelegt mit den Zeilen als
Code:
<MenuItem><Name>Name  1</Name><URL>Dial:068135416854</URL></MenuItem>
<MenuItem><Name>Name 2</Name><URL>Dial:01854658544</URL></MenuItem>
Funktioniert leider auch nicht, im Browser sehen alle XML Dateien gut aus - auf dem Phone gibts leider ein 404 und BTXML Error! Pfade zu den Dateien passen soweit auch.
Jemand eine Idee?

EDIT:
Also das mit dem Telefonbuch liegt wohl tatsächlich daran, dass es auf einer 7170 kein <phonebook name="Name"> gibt sondern nur ein <phonebook>...
 
Zuletzt bearbeitet:
...

Funktioniert leider auch nicht, im Browser sehen alle XML Dateien gut aus - auf dem Phone gibts leider ein 404 und BTXML Error! Pfade zu den Dateien passen soweit auch.
Jemand eine Idee? ...

// EDIT: Problem gelöst. Hatte einen HTTP-Proxy eingetragen.

Habe genau das selbe Problem.
Die Services XML wird auch nicht geladen und es gibt den BTXML Error, 404 Not Found!

Grüße
 
Zuletzt bearbeitet:
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.