Multiline-POST an FWEXT in 01_FHEMWEB

Begonnen von henryk, 13 September 2015, 15:05:27

Vorheriges Thema - Nächstes Thema

henryk

Moin,

im Codefluss von FHEMWEB zu per FWEXT registrierten Erweiterungen gibt es einen Regex der dafür sorgt, dass nur die erste Zeile des übergebenen Bodys weiterverarbeitet wird (Zeile 565 im aktuellen SVN trunk: http://sourceforge.net/p/fhem/code/9242/tree/trunk/fhem/FHEM/01_FHEMWEB.pm#l565), ich brauche aber den ganzen Body. Das kann man relativ einfach lösen: Modifier //s für den Regex verwenden, Patch angehängt. Im Gegensatz zu meinem vorherigen Patch sehe ich mich aber ausserstande, mögliche Nebenwirkungen zu beurteilen, da $arg von dort an ganz schön viele Stellen fliesst.

--
Henryk Plötz
Grüße aus Berlin

rudolfkoenig

Bin etwas ueberrascht, dass im Body \n vorkommen kann. Habs aber eingecheckt, da $arg ab dieser Stelle das komplette Body enthalten sollte, damit digestCgi alle Daten erwischt.
Wurde der Patch mit einem uralten oder mit einem abgespeckten Version von 01_FHEMWEB.pm erstellt?

henryk

Im Body darf natürlich alles vorkommen, sogar ganze Dateien :) Konkret repariere ich grade HMRPC unter anderem so, dass die CCU sich mit XML-RPC durch FHEMWEB zurückmelden kann, und das hat eben auch zum ersten mal funktioniert. Demnächst dann hoffentlich mehr dazu.

Der Patch war gegen fhem-5.6, damit hatte ich meine Entwicklung begonnen.

rudolfkoenig

ZitatIm Body darf natürlich alles vorkommen, sogar ganze Dateien

Klar, aber ich dachte, dass ein normales (nicht multi-part) GET oder POST Request URL-Encoded sein muss, und da ist kein NL drin.

henryk

Ah, ja, ein GET hat keinen Body und ein url-encoded POST keine Newlines. Aber an dieser Stelle ist der Code nicht eingeschränkt und verarbeitet beliebige HTTP-Requests. Das XML-RPC kommt zum Beispiel als ein POST mit einem XML-Dokument im Body rein.

rudolfkoenig