Fhemweb: Eigene Funktion zum Ausliefern von Inhalten geht nur noch zum Teil

Begonnen von Reinerlein, 14 Januar 2015, 00:12:38

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo Rudi,

ich habe in meinem Sonos-Modul Code zum eigenen Ausliefern von Inhalten (in diesem Fall Coverbilder).
Das funktionierte bislang prima.

Nun ist in den letzten beiden Tagen (mein Produktivstand ist zwei Tage alt, mein Entwicklungsstand gerade aktualisiert) eine Änderung eingetreten:
Wenn meine URL auf .jpg (oder auch .png) endet, dann wird mein Code nicht mehr aufgerufen.

Beispiel:
Es existiert die "virtuelle" URL "/fhem/sonos/cover/input_default.jpg".
Ich habe bei mir in der Web-Funktion Log-Ausgaben eingebaut, die mir zeigen, dass jetzt beim Aufruf dieser URL kein Aufruf meines Codes mehr passiert.
Wenn ich die URL verstümmele: z.B. "/fhem/sonos/cover/input_default.jp", wird mein Code wieder aufgerufen (liefert halt eine Fehlermeldung, dass er mit dieser URL so nix anfangen kann, und macht den Logeintrag).

Da scheint eine Art Priorisierung zu erfolgen, dass Fhemweb sich um diese URLs selber kümmern möchte...

Kannst du das korrigieren? Oder hatte diese Änderung einen bestimmten Grund, und ich muss was umbauen?

Danke schon mal...

Grüße
Reinerlein

rudolfkoenig

Dieses Probem ("RSS funktioniert nicht") habe ich am Montag behoben.

Reinerlein

Hi Rudi,

soll das heißen, dass ich das nicht mehr so wie früher verwenden kann, und das jetzige Verhalten gewollt ist?
Das von mir beschriebene Problem ist in der aktuellsten SVN-Version (gerade eben aktualisiert) noch enthalten...

Grüße
Reinerlein

rudolfkoenig

Das Problem ist, dass die Pruefung nur ein / nach dem definierten FWEXT (in deinem Fall ist das /sonos) erlaubt.

D.h. entweder muss ein /sonos/cover FWEXT angelegt werden, oder die Datei muss cover_input_default.jpg heissen.
Oder ich muss meine Pruefung in 01_FHEMWEB.pm:
  } elsif($arg =~ m,^$FW_ME/(.*)/([^/]*)$, && !$data{FWEXT}{"/$1"}) {
    my ($dir, $ofile, $ext) = ($1, $2, "");

anpassen. Falls du dafuer eine einfache Loesung hast...

Reinerlein

Hi Rudi,

ok, könnte man nicht einfach einen eigenen elsif-Zweig für diese Extensionverarbeitung machen?
Also sowas wie

} elsif($arg =~ m,^$FW_ME/(.*?)/(.*)$, && $data{FWEXT}{"/$1"}{FUNC}) {
... hier der Aufruf der Funktion mit der kompletten URL und evtl. mit return raus ...
} elsif($arg =~ m,^$FW_ME/(.*)/([^/]*)$, && !$data{FWEXT}{"/$1"}) {
davorsetzen?

Damit würde erstmal alles, was in einer Extension bearbeitet werden soll, auch dort ankommen, und wenn da keine Extension existiert, würde das Standardverhalten (z.B. für {CONTENTFUNC}) greifen, oder sehe ich das falsch?

Eine "/sonos/cover" EXT würde hier ja auch nicht matchen, so wie ich das verstehe...

Grüße
Reinerlein

rudolfkoenig

/sonos/cover matcht:
% perl -e '"/fhem/sonos/cover/input_default.png" =~ m,^/fhem/(.*)/([^/]*)$, && print "$1 and $2\n"'
sonos/cover and input_default.png


Ein eigener Zweig wuerde entweder zum Aufschrei fuehren (kein FW_webArgs, FW_plotsize, etc), oder einiges an Code doppeln muessen. Wenn schon patch, dann bitte richtig.

Ich habe das Regexp so umgebaut, dass man auf FWEXT genauer pruefen kann, damit sollte /fhem/sonos/cover/input_default.jpg im SONOS Modul landen.

Reinerlein

Hi Rudi,

ja das $-Zeichen hatte ich da übersehen.
Ich wollte auch gar keinen fertigen Patch liefern, sondern, da ich mich noch nicht tiefer damit beschäftigt hatte, fragend zu einer Lösung kommen...

Ich habe es gerade getestet. Die Anfragen landen nun wieder bei mir im Modul. Danke
Allerdings werden bei mir die Icons des RemoteControls nicht mehr angezeigt. Da bin ich aber noch nicht tiefer hinterhergekommen...

Grüße
Reinerlein

Reinerlein

Hi Rudi,

also die Icons des RemoteControl werden angezeigt, wenn ich die SVG-Icons verwende (prefix "rc_") und nicht angezeigt, wenn ich die Black-Buttons verwende (prefix "black_btn_").
Leider werden die SVG-Icons sehr, sehr groß angezeigt, und sind damit für mich nicht verwendbar.

Die Funktionalität selbst ist übrigens normal da, es werden nur graue Rahmen anstatt der Icons angezeigt...

Kann das mit den fehlenden Black-Buttons vielleicht noch jemand nachstellen?

Grüße
Reinerlein

Reinerlein

Hi Rudi,

danke für den Fix. Die Icons der RemoteControls sind wieder da...

Grüße
Reinerlein

Reinerlein

Hallo Rudi,

ich muss den Thread nochmal rauskramen, da ich hier einen Zusammenhang vermute.
Ich wollte gerade etwas in der commandref nachschlagen, und habe dabei bemerkt, dass diese nicht mehr angezeigt wird.
Ich bekomme stattdessen nur die Fhem-Startseite angezeigt.

In der URL steht der normale Link zur commandref drin (/fhem/docs/commandref.html), der deutsche Verweis geht auch nicht...

Grüße
Reinerlein

rudolfkoenig