FritzBox Telefonbuch Service für Cisco Telefone

Habe jetzt noch das debug-logging um XML-Fehler beim Download/Import erweitert.

[...]
Im IIS habe ich testweise den Schreibzugriff auf den "books" Ordner für Jeder erlaubt.
Ich muss noch schauen welchen User der IIS während der Laufzeit für Aufrufe aus Webseiten verwendet, dann könnte man auch hier den Zugriff auf einen User statt Jeder reduzieren.
Das debug-logging gibt nun zu Beginn der Ausführung eines Skriptes den Namen des Betriebsystems und des Webservers sowie den Namen des Benutzers, welcher den Webserver-Prozess ausführt.
 
Jetzt wird es spannend!

Code:
Datum    Message
09.01.2020 15:06:29    --- START LOGGING ---
09.01.2020 15:06:29    Operation System: Windows NT HER-HOMESERVER 10.0 build 14393 (Windows Server 2016) AMD64
09.01.2020 15:06:29    Webserver - name:
09.01.2020 15:06:29    Webserver - user: iis apppool\defaultapppool
09.01.2020 15:06:29    directory.php: started
09.01.2020 15:06:29    directory.php: phonebook dosn't exist
09.01.2020 15:06:29    directory.php: execute: book
09.01.2020 15:06:31    --- START LOGGING ---
09.01.2020 15:06:31    Operation System: Windows NT HER-HOMESERVER 10.0 build 14393 (Windows Server 2016) AMD64
09.01.2020 15:06:31    Webserver - name:
09.01.2020 15:06:31    Webserver - user: iis apppool\defaultapppool
09.01.2020 15:06:31    directory.php: started
09.01.2020 15:06:31    directory.php: execute: refresh
09.01.2020 15:06:31    directory.php: execute: refresh > /books is writable
09.01.2020 15:06:31    directory.php: execute: refresh > Webserver is not running on Fritz!Box

Die Fritzbox ist aber eindeutig unter der konfigurierten 192.168.2.1 oder fritz.box erreichbar...
Code:
C:\Users\Administrator>ping fritz.box

Ping wird ausgeführt für fritz.box [192.168.2.1] mit 32 Bytes Daten:
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64

Ping-Statistik für 192.168.2.1:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

C:\Users\Administrator>ping 192.168.2.1

Ping wird ausgeführt für 192.168.2.1 mit 32 Bytes Daten:
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.2.1: Bytes=32 Zeit<1ms TTL=64

Ping-Statistik für 192.168.2.1:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
 
Ok, dass bedeutet schon einmal, dass PHP in dem Ordner '/books' über Schreibrechter verfügt.
Der letzte Log-Eintrag bedeutet, dass der Webserver nicht auf der Fritz!Box (freetz) läuft, sondern auf einem eigenem Rechner/Server (PC oder Raspbian pi etc.).

Ein erfolgreicher Log würde beispielsweise wie folgt aussehen:
Code:
Datum Message
09.01.2020 13:32:32 --- START LOGGING ---
09.01.2020 13:32:32 Operation System: Linux openhab 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l
09.01.2020 13:32:32 Webserver - name: Apache/2.4.38 (Raspbian) Server at openhab.fritz.box Port 80
09.01.2020 13:32:32 Webserver - user: www-data
09.01.2020 13:32:32 directory.php: started
09.01.2020 13:32:32 directory.php: execute: refresh
09.01.2020 13:32:32 directory.php: execute: refresh > /books is writable
09.01.2020 13:32:32 directory.php: execute: refresh > Webserver is not running on Fritz!Box
09.01.2020 13:32:32 directory.php: execute: refresh > SID=0000000000000000
09.01.2020 13:32:32 directory.php: execute: refresh > Username is not existing
09.01.2020 13:32:32 directory.php: execute: refresh > CURLOPT_POSTFIELDS=response=xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&page=/login_sid.lua
09.01.2020 13:32:32 directory.php: execute: refresh > Login successed
09.01.2020 13:32:32 directory.php: execute: refresh > try to download phonebook: id=0
09.01.2020 13:32:32 directory.php: execute: refresh > phonebook id=0 saved
09.01.2020 13:32:32 directory.php: execute: refresh > try to download phonebook: id=1
09.01.2020 13:32:32 directory.php: execute: refresh > phonebook id=1 does not exist - downloading is stopped
09.01.2020 13:32:32 directory.php: phonebook exists
09.01.2020 13:32:32 directory.php: execute: id
Zeilen 10 bis 13 zeigen den erfolgreichen Login bei der Fritz!Box an. Zeile 10 wird noch vor dem tatsächlichen Login ausgegeben. Das PHP-Skript fragt zunächst eine Seite bei der Fritz!Box ab, um eine "SID" und eine "challenge" (zur Kodierung des Kennwortes) zu erhalten. Somit müsste Zeile 10 in jedem Fall ausgegeben werden; auch wenn die Zugangsdaten nicht stimmen sollten.
 
Bei mir endet das Log immer mit Webserver is not running on Fritz!Box
Mehr passiert nicht...

FritzBox und Cisco 7975G befinden sich im selben Subnetz.
Ansonsten habe ich auch keine Probleme mit dem Netz.
Von der FritzBox geht es in einen Switch im Arbeitszimmer (Netgear 16 Port) und direkt ins Cisco.
 
Ich habe jetzt das debug-logging um HTTP-Fehler und Fehler, die durch cURL auftreten hinzugefügt. Das bedeutet, wenn der Webserver einen Fehlercode zurück gibt (größer/kleiner 200) oder die Adresse/URL nicht erreichbar ist, wird ein entsrechender Eintrag geloggt.
 
Ändert leider nichts :-(

Code:
10.01.2020 08:01:21    --- START LOGGING ---
10.01.2020 08:01:21    operation system: Windows NT HER-HOMESERVER 10.0 build 14393 (Windows Server 2016) AMD64
10.01.2020 08:01:21    webserver - name:
10.01.2020 08:01:21    webserver - user: iis apppool\defaultapppool
10.01.2020 08:01:21    directory.php: started
10.01.2020 08:01:21    directory.php: execute: refresh
10.01.2020 08:01:21    directory.php: execute: refresh > /books is writable
10.01.2020 08:01:21    directory.php: execute: refresh > webserver is not running on Fritz!Box

Ist auch definitiv die neue Version, ich hab das Repository als zip geladen und alles überschrieben.
Anschließend den IIS neugestartet und am Cisco das Telefonbuch geöffnet.

Ab Zeile 48 in der directory.php
Code:
            if (curl_errno($ch)) {
                $log->newEntry ("directory.php: execute: refresh > ERROR: ".curl_error($ch));
            }
 
Das PHP-Skript scheint bei der Ausführung seitens des PHP-Interpreters abgebrochen zu werden. Hier müsste es entsprechende Fehlermeldungen in den Webserver-Logdateien geben.

Ich habe den Verdacht, dass die Bibliothek "libcurl" nicht installiert bzw. nicht verfügbar ist.
Ich habe das debug-logging nochmals erweitert. Es wird nun geprüft, ob die Bibliothek "libcurl" zur Verfügung steht. Wenn dies nicht der Fall sein sollte, wird dies entsprechend in die Log-Datei geschrieben.
  1. Was gibt das debug-logging jetzt aus?
  2. Hast Du die Extension "libcurl" mit installiert/aktiviert?
  3. Hast Du mal die Logdateien vom Webserver (IIS) auf PHP-Fehlermeldungen geprüft? (Die Logfiles solltest Du vermutlich unter "%SystemDrive%\inetpub\logs\LogFiles" finden.)
 
Damit liegst du richtig.
Code:
10.01.2020 10:33:46    --- START LOGGING ---
10.01.2020 10:33:46    operation system: Windows NT HER-HOMESERVER 10.0 build 14393 (Windows Server 2016) AMD64
10.01.2020 10:33:46    webserver - name:
10.01.2020 10:33:46    webserver - user: iis apppool\defaultapppool
10.01.2020 10:33:46    directory.php: started
10.01.2020 10:33:46    directory.php: execute: refresh
10.01.2020 10:33:46    directory.php: execute: refresh > the library 'libcurl' is not available

Unter C:\Program Files\PHP\ext liegt zwar eine php_curl.dll, anscheinend wird die aber nicht benutzt.
Jetzt habe ich die php.ini um den Eintrag extension="C:\Program Files\PHP\ext\php_curl.dll" ergänzt.
Über phpinfo(); sieht man jetzt auch cURL support: enabled, cURL Information:7.67.0
Seither zeigt er mir beim aufrufen der directory.php einen Fehler 500 an...
Genauso bei der weather.php
Die Datei ist aber eindeutig vorhanden und die services.php kann ich problemlos aufrufen...
Rechte habe ich auch geprüft, IIS_IUSRS ist berechtigt.

Code:
localhost - /fritzco/

[Zum übergeordneten Verzeichnis]
09.01.2020    21:25         1139 authenticate.php
09.01.2020    15:58        <dir> books
09.01.2020    21:25          665 CHANGELOG
09.01.2020    15:58        <dir> config
10.01.2020    11:13        17696 directory.php
09.01.2020    15:58        <dir> lib
09.01.2020    21:25        18026 LICENSE
09.01.2020    15:58        <dir> locale
09.01.2020    16:06        <dir> log
08.01.2020    12:12         1240 OLD.config.inc.php
09.01.2020    21:25          400 quickdial.php
09.01.2020    21:25          687 README.md
09.01.2020    21:25         9885 services.php
09.01.2020    21:25          299 VERSION
09.01.2020    21:25        12259 weather.php
10.01.2020    11:57          168 web.config

Edit: Das Standard W3SVC1 Log wird geschrieben, da steht leider nichts hilfreiches drin.
2020-01-10 11:00:11 192.168.2.2 GET /fritzco/directory.php - 80 - 192.168.2.18 Allegro-Software-WebClient/4.34 - 500 0 0 93

Ein PHP Log wird trotz Eintrag in der php.ini nicht geschrieben
Code:
log_errors = On
error_log="C:\inetpub\logs\LogFiles\PHP\php_errors.log"

Edit: Das Problem hat sich durch ändern von error_log = syslog erledigt.
Code:
10.01.2020 11:50:39    --- START LOGGING ---
10.01.2020 11:50:39    operation system: Windows NT HER-HOMESERVER 10.0 build 14393 (Windows Server 2016) AMD64
10.01.2020 11:50:39    webserver - name:
10.01.2020 11:50:39    webserver - user: iis apppool\defaultapppool
10.01.2020 11:50:39    directory.php: started
10.01.2020 11:50:39    directory.php: execute: refresh
10.01.2020 11:50:39    directory.php: execute: refresh > /books is writable
10.01.2020 11:50:39    directory.php: execute: refresh > webserver is not running on Fritz!Box
10.01.2020 11:50:39    directory.php: execute: refresh > SID=0000000000000000
 

Anhänge

  • Bildschirmfoto 2020-01-10 um 12.06.08 PM.png
    Bildschirmfoto 2020-01-10 um 12.06.08 PM.png
    105.1 KB · Aufrufe: 8
Zuletzt bearbeitet:
Schon einmal ein Schritt weiter. ;)
  1. Was gibt den das debug-logging nach Aktivierung der "libcurl" aus?
  2. Welche letzten Einträge stehen in den Webserver-Logdateien (beim "IIS" vermutlich unter: "%SystemDrive%\inetpub\logs\LogFiles")?

Und wie ist jetzt der Stand? Funktioniert es jetzt?
Oder erhältst Du immernoch eine HTTP-Fehlermeldung mit Code 500? Wenn, ja, was sagt sagen die Webserver- bzw. PHP-Logdateien?
 
Habe ich oben jeweils eingefügt.
Mit curl schafft directoy.php es bis zu 10.01.2020 11:50:39 directory.php: execute: refresh > SID=0000000000000000

Der IIS loggt folgendes:
Code:
#Software: Microsoft Internet Information Services 10.0
#Version: 1.0
#Date: 2020-01-10 11:52:25
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2020-01-10 11:52:25 192.168.2.2 GET /fritzco/directory.php - 80 - 192.168.2.18 Allegro-Software-WebClient/4.34 - 200 0 0 187
2020-01-10 11:52:27 192.168.2.2 GET /fritzco/directory.php refresh 80 - 192.168.2.18 Allegro-Software-WebClient/4.34 - 500 0 0 187
2020-01-10 11:53:21 ::1 GET /fritzco/directory.php - 80 - ::1 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+10.0;+WOW64;+Trident/7.0;+.NET4.0C;+.NET4.0E;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.30729;+.NET+CLR+3.5.30729) - 200 0 0 46
2020-01-10 11:53:25 ::1 GET /fritzco/directory.php refresh 80 - ::1 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+10.0;+WOW64;+Trident/7.0;+.NET4.0C;+.NET4.0E;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.30729;+.NET+CLR+3.5.30729) - 500 0 0 171
2020-01-10 11:54:48 192.168.2.2 GET /fritzco/directory.php - 80 - 192.168.2.18 Allegro-Software-WebClient/4.34 - 200 0 0 62
2020-01-10 11:54:49 192.168.2.2 GET /fritzco/directory.php refresh 80 - 192.168.2.18 Allegro-Software-WebClient/4.34 - 500 0 0 203

Angeblich versteht er den refresh nicht.

Ich habe das PHP Log nun aug syslog gestellt und sehe drei Fehler:
Code:
Protokollname: Application
Quelle:        PHP-7.4.1
Datum:         10.01.2020 13:58:29
Ereignis-ID:   2
Aufgabenkategorie:(6)
Ebene:         Informationen
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Computer:      HER-Homeserver
Beschreibung:
Die Beschreibung für die Ereignis-ID "2" aus der Quelle "PHP-7.4.1" wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem lokalen Computer installiert, oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren.

Falls das Ereignis auf einem anderen Computer aufgetreten ist, mussten die Anzeigeinformationen mit dem Ereignis gespeichert werden.

Die folgenden Informationen wurden mit dem Ereignis gespeichert: 

php
PHP Notice:  Undefined index: SERVER_SIGNATURE in C:\inetpub\wwwroot\fritzco\lib\logging\logging.php on line 31

Code:
Protokollname: Application
Quelle:        PHP-7.4.1
Datum:         10.01.2020 13:58:29
Ereignis-ID:   3
Aufgabenkategorie:(4)
Ebene:         Warnung
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Computer:      HER-Homeserver
Beschreibung:
Die Beschreibung für die Ereignis-ID "3" aus der Quelle "PHP-7.4.1" wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem lokalen Computer installiert, oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren.

Falls das Ereignis auf einem anderen Computer aufgetreten ist, mussten die Anzeigeinformationen mit dem Ereignis gespeichert werden.

Die folgenden Informationen wurden mit dem Ereignis gespeichert:

php
PHP Fatal error:  Uncaught Error: Call to undefined function mb_convert_encoding() in C:\inetpub\wwwroot\fritzco\directory.php:69
Stack trace:
#0 {main}
  thrown in C:\inetpub\wwwroot\fritzco\directory.php on line 69

Code:
Protokollname: Application
Quelle:        PHP-7.4.1
Datum:         10.01.2020 13:58:32
Ereignis-ID:   2
Aufgabenkategorie:(6)
Ebene:         Informationen
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Computer:      HER-Homeserver
Beschreibung:
Die Beschreibung für die Ereignis-ID "2" aus der Quelle "PHP-7.4.1" wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem lokalen Computer installiert, oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren.

Falls das Ereignis auf einem anderen Computer aufgetreten ist, mussten die Anzeigeinformationen mit dem Ereignis gespeichert werden.

Die folgenden Informationen wurden mit dem Ereignis gespeichert:

php[5484]
PHP Notice:  Undefined index: SERVER_SIGNATURE in C:\inetpub\wwwroot\fritzco\lib\logging\logging.php on line 31
 
Dann mal extension=php_mbstring.dll in die Konfigurationisdatei "php.ini" eintragen.
 
Das ist die Lösung :)
Vielen Dank für deine Hilfe!

Code:
10.01.2020 13:43:25    --- START LOGGING ---
10.01.2020 13:43:25    operation system: Windows NT HER-HOMESERVER 10.0 build 14393 (Windows Server 2016) AMD64
10.01.2020 13:43:25    webserver - name:
10.01.2020 13:43:25    webserver - user: iis apppool\defaultapppool
10.01.2020 13:43:25    directory.php: started
10.01.2020 13:43:25    directory.php: execute: refresh
10.01.2020 13:43:25    directory.php: execute: refresh > /books is writable
10.01.2020 13:43:25    directory.php: execute: refresh > webserver is not running on Fritz!Box
10.01.2020 13:43:25    directory.php: execute: refresh > SID=0000000000000000
10.01.2020 13:43:25    directory.php: execute: refresh > Username is set to 'XYX'
10.01.2020 13:43:25    directory.php: execute: refresh > CURLOPT_POSTFIELDS=&username=XYX&response=XZX&page=/login_sid.lua
10.01.2020 13:43:25    directory.php: execute: refresh > Login successful
10.01.2020 13:43:25    directory.php: execute: refresh > try to download phonebook: id=0
10.01.2020 13:43:25    directory.php: execute: refresh > phonebook id=0 saved
10.01.2020 13:43:25    directory.php: execute: refresh > try to download phonebook: id=1
10.01.2020 13:43:25    directory.php: execute: refresh > phonebook id=1 does not exist - download-process is stopped
10.01.2020 13:43:25    directory.php: phonebook exists
10.01.2020 13:43:25    directory.php: execute: id

Ich kann die Tage gerne einen Pull Request mit einer ausführlichen Beschreibung für die Einrichtung im IIS erstellen.
 
Zuletzt bearbeitet:
Das ist die Lösung :)
Vielen Dank für deine Hilfe!
[...]
Das war ja eine schwere Geburt. ;) Aber das Ergebnis zählt! Solche steinigeren Wege haben dafür den Vorteil, dass man immer was dazu lernt.

Ich habe das debug-logging nochmals erweitert: Nun wird auch geprüft, ob die Erweiterung bzw. das Modul "mbstring" verfügbar ist.

Die nächsten "fritzco-newbies" dürften es bei einer etwaigen Fehlersuche erheblich leichter haben, wenn sie zumindest das debug-logging zum Laufen bekommen. Auch der Support dürfte sich mit dem debug-logging (neben dem Webserver-Logging) zukünftig leichter gestalten.

Ich kann die Tage gerne einen Pull Request mit einer ausführlichen Beschreibung für die Einrichtung im IIS erstellen.
Sehr gerne!
 
  • Like
Reaktionen: ja_genau_anfaenger
Muss man das Wiki auch erst forken und dann Pull Request stellen oder wie kann man dort beitragen?
 
Das ist eine Möglichkeit oder Du nennst mir deinen dortigen Usernamen, dann kann ich dich als Contributor hinzufügen, so dass Du direkt in meinem Repository arbeiten kannst.
 
Hab dir eine PN geschickt.
Und da wartet noch eine andere von mir auf dich ;)
 
Wow vielen Dank @Xava,

wenn ich mein Google Telefonbuch in der Fritzbox nutze bin ich aber verratzt und habe viel Tipparbeit vor mir oder? ;-)
 
Weil ich die Nummer vom Google Telefonbuch ins interne eintippen muss oder?
zumindest wenn ich id=1 fürs zweite Telefonbuch (mein Google Telefonbuch in der fritte) auswähle zeigt mein 7975G nix mehr an...
Der Contact Conversion Wizard war meine Hilfe :)
 
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.