FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jailbreaker07 am 02 Februar 2017, 21:38:13

Titel: HTTP-Requests keine funktion mehr nach Update
Beitrag von: jailbreaker07 am 02 Februar 2017, 21:38:13
Hallo,

ein paar Sachen steuere  ich in Fhem über externe Anwendungen per HTTP-Requests . Jetzt habe ich gestern in FHEM ein Update gemacht, leider musste ich heute festellen das keiner meiner eingerichteten HTTP-Requests mehr funktioniert. Wenn ich ein Sicherungsimage von FHEM  auf die Karte flashe dann funktioniert das mit dem HTTP-Requests solange bis ich das FHEM  Update durchführe...... hat einer von euch ein änliches Problem und evtl eine Lösung dafür? Ich habe schon ziemlich lange gebraucht um zu den Endschluss zu kommen das es an den Update liegt, nur für eine Lösung reicht meine "Anfängerwissen" nicht.

Über Logocontrol welches auch auf dem Raspi läuft sieht das mit dem HTTP Request wie folgt aus:

<method id="1" name="auf" url="http://localhost:8083/fhem?cmd=set Tuerschloss unlock" />

Vielen dank

Für eure Hilfe


Gruß

Thorsten
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: breezybadger am 20 Februar 2017, 23:27:10
Hi,
habe seit dem Update Heute genau das gleiche Problem. Wenn hier jemand eine Lösung hat oder mir ein Tipps gibt wie ich dazu beitragen kann eine zu finden würde ich mich freuen.

Gruß

breezy
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: Schlimbo am 20 Februar 2017, 23:36:13
attr WEB csrfToken none
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: marvin78 am 21 Februar 2017, 06:27:41
Das ist nicht die Lösung, sondern nur ein Workaround. Bitte die Änderungshinweise von Version 5.8 beachten (oben rechts in diesem Forum in fett rot).
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: CoolTux am 21 Februar 2017, 07:06:57
Um den CSRF Token zu bekommen.
HTTP GET machen.
Aus der Antwort suche im Header die Zeile X-FHEM-csrfToken: fhem_xxxxxxxxxxx heraus und Speicher den Token in eine Variable.
GET muss dann wie folgt erweitert werden:

http://<fhemIP>:8083/fhem?cmd=xmllist%20<device>%20&XHR=1&fwcsrf=<token>


Und bei HTTP POST:

http://<fhemIP>:8083/fhem?cmd=set%20<device>%20<befehl>&XHR=1&fwcsrf=<token>
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: Schlimbo am 21 Februar 2017, 10:49:07
Das hast du zwar schön geschrieben, kommt mir auch irgendwie bekannt vor, ;)
aber gerade bei den meisten externen Anwendungen, die Befehle über HTTP an FHEM schicken ist mir keine einfache Möglichkeit bekannt, den Token (der sich nach jedem FHEM Neustart ändert) zu aktualisieren. Viele IoT Geräte bieten nur die Möglichkeit eine Statische URL Adresse einzutragen.
Wie genau das bei der LogoControl funktioniert weiß ich nicht genau, ich denke aber auch dass die URLs irgendwo fest in einer Konfigurationsdatei stehen. Wenn die LogoControl auf einem Raspberry läuft könnte ich mir noch ein shell Skript vorstellen, dass den Token dann in der Konfigurationsdatei anpasst, dann ist aber immer noch die Frage ,ob LogoControl eine Änderung der Konfig zur Laufzeit überhaupt mitbekommt.
Bei vielen Anwendungen sehe ich deshalb keine andere Möglichkeit als csrfToken zu deaktivieren.

So wie ich es verstanden habe besteht die Gefahr von Cross-Site-Request-Forgery nur wenn in einem Browser mehrere Tabs gleichzeitig geöffnet sind.
Da hier aber nicht durch einem Browser der HTTP Request erfolgt, sollte es ja dann auch kein Sicherheitsrisiko darstellen, wenn csrfToken deaktiviert wird.
Natürlich macht es dann Sinn für solche Anwendungen ein separates WEB Device, mit deaktivierten csrfToken anzulegen, dass nur für diesen Zweck genutzt wird und nicht über einen Browser genutzt werden sollte.

Bitte korrigiert mich, wenn ich hier falsch liege oder ihr eine andere Möglichkeit seht.

Gruß Schlimbo
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: CoolTux am 21 Februar 2017, 10:56:19
Im Grunde hast Du Recht. Solange ich dafür einen eigenen Webhook verwende sollte es kein Problem darstellen.
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: justme1968 am 21 Februar 2017, 11:09:36
ihr habt schon gesehen das das das token auch auf einen festen wert setzen kann den man dann in die urls für so ein extra web device einbauen kann?
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: CoolTux am 21 Februar 2017, 11:15:12
Zitat von: justme1968 am 21 Februar 2017, 11:09:36
ihr habt schon gesehen das das das token auch auf einen festen wert setzen kann den man dann in die urls für so ein extra web device einbauen kann?
Noch nicht. Habe noch kein Update gemacht. Danke für den Tip
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: justme1968 am 21 Februar 2017, 11:16:10
das steht auch ohne update in der commandref :)
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: betateilchen am 21 Februar 2017, 11:32:16
Zitat von: CoolTux am 21 Februar 2017, 07:06:57
Um den CSRF Token zu bekommen.
HTTP GET machen.

Das geht auch einfacher. Das Token steht in der globalen Variablen $FW_CSRF

Gib mal in der FHEMWEB Befehlszeile folgendes ein:

{$FW_CSRF}

dann bekommst Du den kompletten String zurück, den Du einfach an einen HTTP-Request anhängen musst.
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: justme1968 am 21 Februar 2017, 11:36:44
die direkte abfrage mit {$FW_CSRF} funktioniert nicht wenn man mehrere web devices verwendet da hier immer das token der zuletzt abgerufen seite eingetragen ist.

um das token einer bestimmten fhemweb instanz zu bekommen ist es besser das internal CSRFTOKEN abzufragen.

wenn man das token nicht per attribut fest vergibt ändert sich das token auch bei jedem fhem neu start.
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: betateilchen am 21 Februar 2017, 11:52:29
ja, Du hast ja recht... ich wollte doch nur verdeutlichen, dass man das Token einfach aus FHEM selbst bekommen kann, ohne erst HTML Code parsen zu müssen.


my $csrf= ($FW_CSRF ? "fwcsrf='$defs{$FW_wname}{CSRFTOKEN}'" : "");


Ein Token fest vorzugeben macht für mich eigentlich keinen Sinn, dann kann man es auch gleich abschalten.
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: Schlimbo am 21 Februar 2017, 12:27:11
Zitat von: betateilchen am 21 Februar 2017, 11:32:16
Das geht auch einfacher. Das Token steht in der globalen Variablen $FW_CSRF
Gib mal in der FHEMWEB Befehlszeile folgendes ein:
{$FW_CSRF}
dann bekommst Du den kompletten String zurück, den Du einfach an einen HTTP-Request anhängen musst.
Das versteh ich noch nicht so ganz, ich benötige doch den Token auf dem entfernten System. Was bringt es mir dann, wenn es in FHEM dafür eine Variable gibt? Kann ich diese über HTTP irgendwie auslesen?

Gruß
Schlimbo
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: Master_Nick am 21 Februar 2017, 13:25:58
Ui jetzt wo ich das hier sehe, ich triggere ein Script über NFC-Tags (App Automate) im Android Handy und schalte per http get mein Qi-Ladegerät an.
Dann muss ich mich da auch mal mit außeinander setzen ob ich die token Antwort auffangen kann. Habe da allerdings nur die von Automate vorgegebenen Möglichkeiten.

Einfach aus Prinzip würde ich ungern das Token festsetzen. ;-)

Alternative wäre natürlich Telnet.
Titel: Antw:HTTP-Requests keine funktion mehr nach Update
Beitrag von: CoolTux am 21 Februar 2017, 13:28:40
Du könntest dafür AMAD und Automagic einsetzen. Nur so als Tip.