Fehler durch [PATCH] - HttpUtils - Support von HTTP Digest Authentifizierung

Begonnen von baumeister, 29 Oktober 2015, 17:37:32

Vorheriges Thema - Nächstes Thema

baumeister

Hallo,

seit dem Patch von gestern [PATCH] - HttpUtils - Support von HTTP Digest Authentifizierung vgl. http://forum.fhem.de/index.php/topic,43043.msg350353.html#msg350353. kann ich folgenden Code nicht mehr nutzen:

{GetFileFromURL ("http://LOGIN:PASSWORT\@IPADRESSE/cgi-bin/trigger.cgi")}

Es wird einfach nicht mehr ausgeführt. Spiele ich die alte HttpUtils.pm wieder ein, funktioniert alles wie gewünscht. Ist das so gewollt oder ein Fehler, so dass ich hier etwas umstellen muss? Danke für ein Feedback.


rudolfkoenig

Kann ich so nicht nachvollziehen:
Zitatfhem> { GetFileFromURL("http://useName:password\@requestb.in/1e0ru1m1?Test.me") }
ok

http://requestb.in/1e0ru1m1?inspect sagt (unter anderem):
ZitatAuthorization: Basic dXNlTmFtZTpwYXNzd29yZA==

Dekodiert:
% echo "dXNlTmFtZTpwYXNzd29yZA==" | base64 -D
useName:password

betateilchen

Das beschriebene Verhalten konnte ich heute mit mehreren Geräten nachvollziehen, die über einen integrierten Webserver - beisipelsweise zur Konfiguration- verfügen. Unter den betroffenen Geräten befinden sich VoIP Adapter und Netzwerkdrucker.

Deshalb arbeite auch ich aktuell wieder mit der vorherigen Version von HttpUtils und alles ist gut.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Habe den Patch bis auf weiteres entfernt. Es waere wichtig, einen Testfall zur Verfuegung zu stellen, wozu man kein spezielles Hardware oder Logins braucht.

baumeister

Hallo,

habe ein Testcase auf einem unserer Server zur Verfügung gestellt:

{GetFileFromURL ("http://testuser:testuser\@http://preview.mediata.net/cgi-bin/test.cgi")}

Das Script liefert im Erfolgsfall "OK" zurück.

Markus Bloch

Zitat von: baumeister am 30 Oktober 2015, 09:03:36
Hallo,

habe ein Testcase auf einem unserer Server zur Verfügung gestellt:

{GetFileFromURL ("http://testuser:testuser\@http://preview.mediata.net/cgi-bin/test.cgi")}

Das Script liefert im Erfolgsfall "OK" zurück.

Vielen Dank. Werde ich am Wochenende ausprobieren und schauen wo der Hase begraben liegt.

Wundert mich total, da ich es extra im Vorfeld mit Apache und anderen Webseiten intensiv getestet hatte.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

betateilchen

Es gibt aber nicht nur Apache und andere "richtige" Webserver.

In vielen Geräten hast Du einfach nur allersimpelste Web-"server" die sich bei weitem nicht an alle Standards halten.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

Ich hatte auch eine IP Kamera dabei, sowie meinen AV-Receiver und einen LG-TV. Alle haben eine eigene Implementation eines Web-Servers ;-)

Ich schau nochmal nach und wir werden sehen.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

betateilchen

Nur so am Rande: Ich hatte noch nie ein webbasiertes Gerät (und ich hatte schon VIELE), bei dem ich Digest gebraucht hätte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

baumeister

Hallo,

leider kann ich den Webserver meiner Kamera nicht in einem Testcase bereitstellen. Deshalb der apache. Aber ich kann den response header zur Verfügung stellen:

Date: Thu, 01 Jan 1970 00:00:00 GMT
nServer: avtech/1.0..Expires: 0
Pragma: no-cache
Cache-Control: no-cache
Connection: close
Content-Type: text/html;charset=ISO-8859-1
WWW-Authenticate: Basic realm=server
Content-Length: 0
401 Unauthorized

Vielleicht hilft das weiter. Device ist ein digitus DN-16062. Danke

Markus Bloch

Hallo zusammen,

anbei eine Version von HttpUtils mit meiner Digest-implementierung sowie mit Logausgaben was an HTTP Daten gesendet und empfangen wurde.

Es wäre toll, wenn ihr diese mal ausprobieren könnt, mit den Geräten/URL's die nicht funktionieren. Damit ich sehen kann, wieso und weshalb.

Bitte darauf achten, dass in Zeilen mit "Authorization: Basic [XXX]" das [XXX] unkenntlich gemacht ist, da sich dahinter der Username+Passwort in BASE64 verbirgt, welches sich entschlüsseln lässt.

Vielen Dank

Gruß
Markus

edit:

Zitat von: betateilchen am 30 Oktober 2015, 14:18:03
Nur so am Rande: Ich hatte noch nie ein webbasiertes Gerät (und ich hatte schon VIELE), bei dem ich Digest gebraucht hätte.

Bei mir leider schon, bei Basic kommt als Status 401 mit einer Digest Challenge (WWW-Authenticate).
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Zitat von: baumeister am 30 Oktober 2015, 09:03:36
Hallo,

habe ein Testcase auf einem unserer Server zur Verfügung gestellt:

{GetFileFromURL ("http://testuser:testuser\@http://preview.mediata.net/cgi-bin/test.cgi")}

Das Script liefert im Erfolgsfall "OK" zurück.

Funktioniert mit meiner Digest-Variante ohne Probleme:



{GetFileFromURL ("http://testuser:testuser\@preview.mediata.net/cgi-bin/test.cgi")}

GET /cgi-bin/test.cgi HTTP/1.0
Host: preview.mediata.net
User-Agent: fhem
Authorization: Basic dGVzdHVzZXI6dGVzdHVzZXI=



HTTP/1.1 200 OK
Date: Fri, 30 Oct 2015 18:24:14 GMT
Server: Apache/2.2.16 (Debian)
Connection: close
Content-Type: text/plain

OK
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

baumeister

Hallo,

ich habe es mit dieser Version getestet. Nachfolgend der Auszug aus dem Logfile

2015.11.01 11:03:09 2: ROOMMATE set rr_Bjoern location checkinhome
2015.11.01 11:03:09 3: HttpUtils sent: GET /cgi-bin/user/Config.cgi?action=set&Notification.Trigger.Alarm=DISABLE&Notification.Trigger.Motion=DISABLE&Notification.Trigger.FaceDetect=ENABLE&Notification.Trigger.Duration=5&Notification.Method=FTP,MAIL&Notification.RecordTime=5&rnd=0.41910738991194374 HTTP/1.0
Host: 192.168.178.38
User-Agent: fhem
Authorization: Basic XXXX


2015.11.01 11:03:09 3: HttpUtils received:
2015.11.01 11:03:15 1: FHEMWEB SSL/HTTPS error:

Der Aufruf hat funktioniert. Der Trigger an die Kamera wurde ausgelöst. Mich wundert nur, dass die IP nicht im Logfile zu sehen ist.