FHEM Forum

FHEM => Automatisierung => Thema gestartet von: FhemPiUser am 25 August 2019, 14:02:35

Titel: [gelöst] allowed: Einschränkung (lesender) Zugriff auf nicht möglich?
Beitrag von: FhemPiUser am 25 August 2019, 14:02:35
Ich habe einen Client, der ohne Passwort auf genau ein fhem device X lesend zugreifen soll. Mehr Geräte soll der Client aus Sicherheitsgründen auch nicht sehen. Dazu habe ich eine separate FHEMWEB Instanz angelegt und habe diese mit allowed abgesichert mit folgenden Attrributen:


attr allowed_WEBinstanz allowedCommands get
attr allowed_WEBinstanz  allowedDevices X


Ich hatte immer angenommen, dass ich mit der Konfiguration wenn ich die WEBinstanz aufrufe nur das eine Gerät X sehe. Ein Testaufruf bestätigt jedoch, dass dies nicht der Fall ist. Ich sehe trotzdem alle Geräte.

Nach Aufruf der Commandref ist mir das klar, denn dort steht:

ZitatallowedDevices
Komma getrennte Liste von Gerätenamen, die mit dem passenden Frontend (siehe validFor) geändert werden können.

Scheinbar kann ich also mit allowedDevices nur Änderungen bzw. Schreibrechte, nicht die Leserechte konfigurieren. Das wundert mich, da ich die Schreibrechte ja in Kombination mit allowedCommands ohnehin auf Leserechte bzw. get einschränken könnte.

Gibt es eine andere Möglichkeit, wie ich einem Client nur den lesenden Zugriff auf bestimmte Geräte erlauben kann und er andere Geräte garnicht zu sehen bekommt?

Falls nein, könnte man z.B. ein allowedDeviceAccess oder so einführen, so dass ein Client beim Zugriff auf diese WebInstanz nur die dort konfigurierten Geräte sieht?


Titel: Antw:alllowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: betateilchen am 25 August 2019, 14:47:56
Gute Frage. Beim Nachdenken darüber kommt mir noch eine weitergehende Frage in den Sinn:

Die kommagetrennte Liste bei allowedDevices ist zwar nett, aber warum wird an dieser Stelle nicht devspec unterstützt? Dann hätte man über FILTER sehr viel mehr Möglichkeiten, die entsprechenden Geräte zu definieren.
Titel: Antw:alllowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: LuckyDay am 25 August 2019, 16:52:44
Das ist garnicht so einfach

alle Räume verbieten
alle links Input usw verbieten

attr extraRooms definieren

leider lassen sich die webCmd nicht ausblenden, daher noch ein cloneDummy auf das org.Device gesetzt (stateFormat dort dann entsprechend gesetzt)

defmod WEB8084 FHEMWEB 8084 global
attr WEB8084 defaultRoom dyn
attr WEB8084 extraRooms name=dyn:devspec=NAME=testMysens(1|2)
attr WEB8084 hiddenroom save,Everything,input,detail,Commandref,Remote doc,Logfile,Edit files,Event monitor,Select style
attr WEB8084 hiddenroomRegexp .*
attr WEB8084 iconPath default:fhemSVG:openautomation:
attr WEB8084 plotfork 1
attr WEB8084 reverseLogs 1
attr WEB8084 styleData {\
"f18": {\
  "Pinned.menu": "true",\
  "hidePin": "true",\
  "cols.bg": "F8F8F8",\
  "cols.fg": "366a70",\
  "cols.link": "5257ff",\
  "cols.evenrow": "E8E8E8",\
  "cols.oddrow": "F0F0F0",\
  "cols.header": "DDDDDD",\
  "cols.menu": "EEEEEE",\
  "cols.sel": "CAC8CF",\
  "cols.inpBack": "FFFFFF",\
  "savePinChanges": true,\
  "fixedInput": true,\
  "hideTextInput": true,\
  "hideInput": true\
}\
}
attr WEB8084 stylesheetPrefix f18
attr WEB8084 title HC1


EDIT:
attr WEB8084 defaultRoom dyn
funktioniert natürlich nicht  >:( für dynamische Räume
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: FhemPiUser am 25 August 2019, 20:28:02
Im Prinzip geht das mit hiddenroom, aber der Blacklist-Ansatz ist sehr mühsam und ist fehleranfällig bzw. schlecht zu warten, da ich die Liste jedesmal neu anpassen muss, wenn ich einen neuen room erstelle. Schöner wäre ein Whitelist-Ansatz, bei dem ich festlegen kann, welche Devices oder rooms erlaubt sind.

Im Übrigen müsste man forbiddenroom nehmen, andernfalls kann man in das Verzeichnis wechseln.

Die andere Frage wäre, ob ein JSONList-Abfrage auch nur geräte aus gewhitelisteten räumen zeigen würde und direkte aufrufe über cmd=get/set... auch nur für geräte ginge, die in gewhitlisteten räumen sind. Hat das mal jemand getestet?
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: LuckyDay am 25 August 2019, 23:02:16
Zitatda ich die Liste jedesmal neu anpassen muss, wenn ich einen neuen room erstelle.

ne siehe

attr WEB8084 hiddenroomRegexp .*

alle Räume !

attr WEB8084 extraRooms name=dyn:devspec=NAME=testMysens(1|2)

und das ist ein dynamischer Raum über devspec, den gibt es garnicht als Raum  ;)

du musst das mal ausprobieren.
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: FhemPiUser am 26 August 2019, 19:21:21
ok, aber hiddenroom reicht mit nicht. da kommt man über den roomnamen in der url noch immer in alle räume und bei forbiddenroom gibt es keine regex.
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: LuckyDay am 26 August 2019, 20:07:10
Nur mal ein Bild um deine Aussage zu widerlegen

Du hast es nicht ausprobiert ;)
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: FhemPiUser am 26 August 2019, 21:27:33
ok, sorry, du hast recht. ich habe es nicht ausprobiert. es stand so in der commandref...
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: riker1 am 26 August 2019, 21:47:58
Zitat von: fhem-hm-knecht am 26 August 2019, 20:07:10
Nur mal ein Bild um deine Aussage zu widerlegen

Du hast es nicht ausprobiert ;)

Hallo, könnte ich mal dazu die allow und fhem instance als code sehen?

Danke

Bekomme es auch nicht hin.
VG T
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: LuckyDay am 26 August 2019, 22:23:23
defmod allowed_WEB8084 allowed
attr allowed_WEB8084 allowedCommands ,
attr allowed_WEB8084 allowedDevices testIAD
attr allowed_WEB8084 validFor WEB8084

setstate allowed_WEB8084 validFor:WEB8084
setstate allowed_WEB8084 2019-08-25 15:11:41 state validFor:WEB8084


FHEMWEB habe ich im #2 Beitrag
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: riker1 am 27 August 2019, 09:33:32
Hallo Hary,

danke.

habe es jetzt - also ohne diesen dyn raum - hinbekommen.

War mir etwas unklar, was ich in der webinstanz und was in der allowed instanz machen kann/muss.

Danke
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: rudolfkoenig am 27 August 2019, 10:41:35
ZitatIch hatte immer angenommen, dass ich mit der Konfiguration wenn ich die WEBinstanz aufrufe nur das eine Gerät X sehe. Ein Testaufruf bestätigt jedoch, dass dies nicht der Fall ist. Ich sehe trotzdem alle Geräte.
Ich habe das jetzt gefixt, indem ich FHEMWEB.pm von "keys %defs" auf devspec2array(".*", $FW_chash) umgestellt habe.
Das wird zwar langsamer sein, ich hoffe aber, dass die Performance-Unterschiede ertraeglich sind.

Damit das Log nicht mit Fehlermeldungen geflutet wird (wie bei list, falls man allowedDevices gesetzt hat), hat AllowedFn jetzt einen optionalen $silent Attribut.

Zusaetzlich hat f18.pm eine "Hide menu" Option bekommen.
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: riker1 am 27 August 2019, 12:35:52
Hallo,
mal eine andere Frage in dem Zusammenhang.

Wieviel Ressourcen kostet eine zusätzlich Webinstanz?

habe nun einige zum Testen, leider kann ich die nicht mit einem Attribut auf disabled oder inactive setzen.

Oder habe ich da etwas übersehen?

Danke Thomas
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: rudolfkoenig am 27 August 2019, 14:07:47
ZitatWieviel Ressourcen kostet eine zusätzlich Webinstanz?
Wenig
Titel: Antw:allowed: Einschränkung (lesender) Zugriff auf bestimmte Devices nicht möglich?
Beitrag von: FhemPiUser am 31 August 2019, 11:35:18
Zitat von: rudolfkoenig am 27 August 2019, 10:41:35
Ich habe das jetzt gefixt, indem ich FHEMWEB.pm von "keys %defs" auf devspec2array(".*", $FW_chash) umgestellt habe.
Das wird zwar langsamer sein, ich hoffe aber, dass die Performance-Unterschiede ertraeglich sind.

Damit das Log nicht mit Fehlermeldungen geflutet wird (wie bei list, falls man allowedDevices gesetzt hat), hat AllowedFn jetzt einen optionalen $silent Attribut.

Zusaetzlich hat f18.pm eine "Hide menu" Option bekommen.

Vielen Dank Rudolf, das klappt jetzt, ich sehe jetzt auch wirklich nur dei allowedDevices.