fhemweb einschränken/readonly machen

Begonnen von justme1968, 06 Februar 2014, 12:42:53

Vorheriges Thema - Nächstes Thema

justme1968

anbei ein kleiner patch mit dem es möglich ist fhemweb so einzuschränken das nur noch devices geschaltet werden können oder komplett alles read only ist. dazu gibt es ein neues attribut allowedCommands:

um in einer fhemweb instanz nur noch das schalten aber keinerlei änderung der konfiguration zu erlauben kann man es so verwenden:attr WEB allowedCommands get,set

um eine fhemweb instanz komplett readonly zu machen kann man es so verwenden:attr WEB allowedCommands ,

das ganze ist als ergänzung zu hiddenroom/hiddengroup zu sehen. mit hidden.* werden dinge im gui ausgeblendet, mit allowedCommands werden zusätzlich alle kommandos verboten mit denen z.b. über url manipulation oder ändern von definitionen und attributen das ausblenden umgangen oder wieder rückgängig gemacht werden kann.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Das Patch erlaubt noch {fhem "set Lampe on"}, und sowas kann man im URL auch eingeben. Waere einfach zu fixen.
fhem.cfg & Module editieren ist auch erlaubt. Ob stylesheet aendern/icons setzen/etc ok ist, ist vermutlich Geschmacksache, ist aber auch einfach zu fixen.

Ich habe das Gefuehl, dass es auch noch weitere Moeglichkeiten gibt FHEM-Befehle oder Perl-Code auszufuehren (bin kein Experte), und die Leute mir uebelnehmen werden, wenn ich das Versprechen "read-only" nicht halten kann.

Aber vielleicht reicht es fuer manche Faelle, wenn wir das als solches dokumentieren.

justme1968

stimmt. die {fhem(...)} variante hatte ich nicht berücksichtigt. ich vermute es reicht das $allowed auch im AnalyzePerlCommand durchzureichen.

da man im perl vollen zugriff auf alle internas hat und jede globale variable direkt modifizieren kann ist es vielleicht sicherer perl optional komplett zu verbieten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

das ganze noch mal etwas erweitert so das perl komplett verboten ist wenn das schlüsselwort 'perl' nicht in der allowedCommands liste auftaucht. damit gibt es dann auch keinen zugriff mehr hintenrum über globale variablen.

ich hab auch mal versucht die doku zu schreiben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

- In FHEMWEB ist die allowedCommands Abfrage fuer save und fuer input doppelt, das gleiche geht auch mit hiddenroom save/input
- Doku typo: intendet -> intended. Und es fehlt mir die deutliche Warnung, dass es ohne Gewaehr ist.

- In fhem.pl wuerde ich die Pruefung in AnalyzePerlCommand sparen, stattdessen die Pruefung in AnalyzeCommand nach oben schieben, unter dem ersten return. Damit wuerde man auch shell Kommandos erwischen, und wenn jemand perl haben will, dann muss er { als Argument spezifizieren, und Kommandos mit "{ " anfangen. Ist aber vermutlich ein sehr esoterisches Problem :)

Ich check das nicht sofort ein, weil dir ueblicherweise noch einiges einfaellt :)

justme1968

#5
noch eine version :):

- die beiden doppelten abfragen raus geschmissen
- die prüfung aus AnalyzePerlCommand nach AnalyzeCommand geschoben
- die shell kommandos auch abgefangen
- perl und shell können jeweils mit den schlüsselwörtern 'perl' bzw 'shell' in allowedCommands erlaubt werden (das ging übrigens vorher auch schon :) ).
- die doku ist jetzt mit der warnung länger als der ganze rest des patches

ich glaube hier für fällt mir nichts weiter ein.

eine sache die ich noch machen möchte ist die kommandos auf devices einzuschränken die auch gerade sichtbar sind. aber das ist eine andere baustelle und wird aufwändiger.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig


justme1968

in dem patch war natürlich noch ein fehler. sorry.

anbei die reparatur.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Habs auch repariert und eingecheckt, bevor ich dein Patch gesehen habe.

justme1968

mir sind noch zwei dinge aufgefallen:

- im floorplan muss noch eingebaut werden das die allowedCommands an AnalyzeCommand übergeben werden.
  bis uli das geändert hat kann man einen floorplan nicht readonly schalten

- wenn die detail seiten mit hiddenroom versteckt sind sollte man sie vielleicht dort verhindern wo die detail seiten aufgebaut werden und nicht dort wo wo die links jeweils erzeugt werden. dann hat man es an einer zentralen stelle abgefangen und kann auch keine url mehr manipulieren.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968