Hallo Freunde,
wie bereits hier (http://forum.fhem.de/index.php?topic=16215.msg404273#msg404273) beschrieben, fand ich dass das Modul die Acknowledgements nicht nach der API Spezifikation (https://pushover.net/api#receipt) verarbeitet. Daher habe ich versucht das etwas zu verbessern. Der Patch anbei verändert das folgende Verhalten:
- URLs werden jetzt immer direkt in die Message geschrieben, der Umweg über den Callback entfällt
- Acknowledgements werden nur noch bei expliziten Klick auf den "Acknowledge" Button in Pushover verwertet, nicht mehr wenn man auf den Link klickt (dies sind nun zwei voneinander unabhängige Aktionen)
- Das Acknowledge-Device wird jetzt in FHEM angezeigt
- alte Readings werden erst gelöscht, wenn die Nachricht acknowledged wurde UND die Aktion ausgeführt worden ist ODER die Nachricht abgelaufen (=expired) ist
- die übergebene Parameter ans Callback werden jetzt alle auf Plausibilität überprüft
- Einen Fehler im Callback behoben, der das ausführen von Aktionen unmöglich gemacht hat (weil die Aktion/Nachricht nicht gefunden wurde)
- Die Überprüfung des User-Keys entfernt, da dies je nach verwendetem User/Gruppen-Key scheiterte
Natürlich bin ich offen für Veränderungen wenn etwas keinen Sinn ergibt, aber ich denke der Patch ist insgesamt konsistenter als das vorherige Verhalten.
Viele Grüße
Hanjo
Hallo Hanjo,
Danke zunächst für den Patch. Ich kann noch nicht genau sagen, wann ich ihn mir genauer ansehen kann, wollte aber zumindest schonmal auf deinen Post reagieren.
Im Einzelnen kann ich erst dann etwas zu Sinn oder nicht Sinn sagen. Zumindest einige deiner beschrieben Punkte muss ich mit vorher direkt angucken um zu verstehen, was da genau gemeint ist, um keine voreiligen Schlüsse zu ziehen.
Gruß
Julian
Hi Julian,
alles klar, sag einfach Bescheid falls du weitere Erläuterungen brauchst.
Vielen Dank
Grüße
Hanjo
Hi Julian,
hattest du schon Gelegenheit dir meine Vorschläge anzuschauen?
Viele Grüße
Hanjo
Hi Julian,
ich habe meinen Patch auf die neuste Version 19366 vom 11. May 2019 (https://github.com/mhop/fhem-mirror/commits/master/fhem/FHEM/70_Pushover.pm) portiert.
Vielleicht kannst du dir das ja doch noch mal anschauen und ggf. in den Master implementieren.
Viele Grüße
Hanjo
Bitte der Einfachheit halber als PR über Github einreichen.
Zitat von: Hanjo am 05 Februar 2016, 14:18:21
- URLs werden jetzt immer direkt in die Message geschrieben, der Umweg über den Callback entfällt
Dieses Verhalten ist ein Sicherheitsfeature und beabsichtigt, damit URLs FHEM intern bleiben und nicht von außen eingeschleust werden können. Wenn der Patch akzeptiert werden soll, bitte dies berücksichtigen.
Zitat von: Hanjo am 05 Februar 2016, 14:18:21
- Acknowledgements werden nur noch bei expliziten Klick auf den "Acknowledge" Button in Pushover verwertet, nicht mehr wenn man auf den Link klickt (dies sind nun zwei voneinander unabhängige Aktionen)
- Das Acknowledge-Device wird jetzt in FHEM angezeigt
- alte Readings werden erst gelöscht, wenn die Nachricht acknowledged wurde UND die Aktion ausgeführt worden ist ODER die Nachricht abgelaufen (=expired) ist
- die übergebene Parameter ans Callback werden jetzt alle auf Plausibilität überprüft
- Einen Fehler im Callback behoben, der das ausführen von Aktionen unmöglich gemacht hat (weil die Aktion/Nachricht nicht gefunden wurde)
- Die Überprüfung des User-Keys entfernt, da dies je nach verwendetem User/Gruppen-Key scheiterte
Bitte diese Punkte an den relevanten Stellen im PR kommentieren, um diese entsprechend identifizieren zu können.
Zitat von: Loredo am 02 Januar 2020, 15:43:50Dieses Verhalten ist ein Sicherheitsfeature und beabsichtigt, damit URLs FHEM intern bleiben und nicht von außen eingeschleust werden können. Wenn der Patch akzeptiert werden soll, bitte dies berücksichtigen.
Könntest du dafür ein Beispiel geben? In der Commandref ist als Beispiel für eine URL folgendes vermerkt:
set Pushover1 msg title=Link Have a look to this website: url_title="Open" action="http://fhem.de/" expire=3600
Meiner Meinung nach ist die URL in solch einer Nachricht nicht besonders schützenswert. Selbst wenn sie es wäre, hilft die aktuelle Implementierung nicht, da der Link mit der FhemCallbackId ebenfalls von jedermann aufgerufen werden kann, der die Pushover-Nachricht abfängt. So wie ich das sehe, erhöht das nur die Komplexität, nicht aber die Sicherheit.
Würde mich über eine Erläuterung freuen.
Den PR erstelle ich.
Danke & Gruß
Zitat von: Hanjo am 02 Januar 2020, 20:46:03
Den PR erstelle ich.
Siehe https://github.com/fhem/mod-Pushover/pull/1 (https://github.com/fhem/mod-Pushover/pull/1)
Wie besprochen nun ohne den URL Change:
https://github.com/fhem/mod-Pushover/pull/2 (https://github.com/fhem/mod-Pushover/pull/2)
Danke! Kleiner Hinweis am Rande: Du hättest auch den bestehenden PR erweitern können, indem du einfach im selben Branch die Änderungen commited hättest. Ein PR bezieht sich immer auf einen Branch, nicht auf einen bestimmten Commit.
Hatte mich schon gewundert wie das geht... :-)
Hallo Hanjo,
Ich habe den callback für Pushover erfolgreich mit einem Webhook implementiert. Ich habe im Modul "define WEBhook FHEMWEB 8088 global attr allowed basicAuth {"$user:$password" eq "user:password"}
gesetzt, und dann in Modul "define pushmsg Pushover 1234 abcd pushCallBackURL"attr pushmsg callbackUrl http://user:password@IP.AD.RE.SS:8088/webhook/pushCallBackURL
eingetragen.
Dann kommt beim klicken auf den Link in der iPhone Pushover Meldung immer ein passwort fenster hoch, das mich auffordert user / passwort einzutragen, obwohl ich doch im FHEM CallBackURL user und password schon mitgegeben habe.
Wie sichere ich denn den callback URL mit User/Password ab?
Oder muss ich das überhaupt absichern?
Danke!
Jamo
Hi Jamo,
ich habe mich über genau das gleich Problem auch schon geärgert. Leider scheint das ein "Feature" von iOS zu sein, dass das nicht funktioniert, siehe z.B. hier (https://apple.stackexchange.com/questions/307522/ios-11-safari-how-to-pass-user-password-in-url-for-basic-authentication).
Ich habe leider noch keine gute Lösung dafür; derzeit arbeite ich mit einem Always-on-VPN, so dass außer mir niemand auf die URL drauf kommt. In jedem Fall würde ich empfehlen SSL zu aktivieren, weil dann jemand der den Traffic belauscht 1. Username und Passwort nicht einfach mitschneiden kann und 2. nicht die URL mitbekommt.
Grüße
Hanjo