[PATCH] <> in Raum-Namen

Begonnen von MarcelK, 06 Februar 2016, 23:09:06

Vorheriges Thema - Nächstes Thema

MarcelK

Als Follow-up zu http://forum.fhem.de/index.php/topic,48615.0.html, der leider geschlossen wurde:

In FHEMWEB gibt es Code der explizit "<" und ">" im Raum-Namen behandelt, LongPoll bzw devspec funktionieren mit solchen Räumen aber derzeit nicht. Der Patch  ist einfach:


--- ../fhem.pl  (revision 10744)
+++ ../fhem.pl  (working copy)
@@ -1099,7 +1099,7 @@
     my @res;
     foreach my $dName (split(":FILTER=", $l)) {
       my ($n,$op,$re) = ("NAME","=",$dName);
-      if($dName =~ m/^([^!<>]*)(=|!=|<=|>=|<|>)(.*)$/) {
+      if($dName =~ m/^([^=!<>]*)(=|!=|<=|>=|<|>)(.*)$/) {
         ($n,$op,$re) = ($1,$2,$3);
         $isAttr = 1;    # Compatibility: return "" instead of $name
       }


Ohne die Änderung würde "room=Blah<>" in "room=Blah","<",">" aufgedröselt werden statt "room","=","Blah<>".

Und eine Stelle bezüglich Room-Encoding hab ich noch übersehen:

--- 01_FHEMWEB.pm       (revision 10744)
+++ 01_FHEMWEB.pm       (working copy)
@@ -2715,7 +2715,7 @@
       } else {
         $room =~ s/,.*//;
       }
-      $link .= "&room=$room";
+      $link .= "&room=".urlEncode($room);
     }
     $txt = "<a href=\"$FW_ME$FW_subdir?$link$rf$FW_CSRF\">$txt</a>"
        if($link !~ m/ noFhemwebLink\b/);


Cheers, Marcel

rudolfkoenig

Den ersten Bug habe ich mit non-greedy geloest (ist mAn einfacher/zukunftsicherer):
      if($dName =~ m/^(.*?)(=|!=|<=|>=|<|>)(.*)$/) {
den zweiten Patch habe ich uebernommen.