[FIX] HTTPMOD zusätzlicher Aufruf einer zweiten URL vor dem eigentlichen SET

Begonnen von JoeALLb, 30 August 2017, 12:32:47

Vorheriges Thema - Nächstes Thema

JoeALLb

Hallo,

vielleicht kann mir jemand helfen.
Ich muss schlicht vor einer SET-URL eine andere URL für das Login aufrufen. Idealerweise sollte ich nach dem SET wieder eine andere URL zum schließen der Session aufrufen.

Könnt ihr mir bitte einen Hinweis geben?
Mit einem simplen "reAuthRegex login.htm" komme ich nicht weiter.

Was als Workaround funktioniert ist der manuelle Aufruf eines Login-Sets:
vor dem eigentlichen Aufruf des SET-Befehls.

attr xDevice set4Name zLogin
attr xDevice set4URL http://xxxxxxx?login=yes


Danke, schöne Grüße
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JoeALLb

Als kombinierten Workaround nutze ich im moment cmdalias, um beide URLs direkt hintereinander aufzurufen...

Hat niemand eine bessere Idee?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

StefanStrobel

Hallo Joe,

die sid-Attribute mit reAuthRegex sind eigentlich genau dafür gemacht.
Voraussetzung ist aber dass Du beim Aufruf Deiner Ziel-Seite ohne vorheriges Login eine Art Fehler-Seite oder Login-Seite bekommst.
Die muss von der reAuthRegex erkannt werden.

Dein Workaround ist aber auch ok.

Gruss
   Stefan

JoeALLb

Zitat von: StefanStrobel am 02 September 2017, 09:12:17
die sid-Attribute mit reAuthRegex sind eigentlich genau dafür gemacht.

Hallo Stefan,
danke für deine Antwort. Ich habe weiter geforscht:
reAuthRegex geht nicht, da ich, wenn ich nicht erfolgreich eingeloggt bin, einfach den alten wert zurück bekomme,
wenn ich erfolgreich eingeloggt bin, den neuen.(eine zahl).
Der Dienst benötigt eigentlich IMMER einfrisches Login, schön wäre also, wenn ich das wo einstellen könnte.

Das problemm ist auch, dass der Dienst nach einem falschen versuch mich für 5 minuten sperrt.... daher bräuchte ich immer die konstellation
"loginURL -> abfrage -> logoutURL".

Klingt doch eigentlich recht simpel, aber ich denke, diese folge ist so im Modul nicht vorgesehen, oder?

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

StefanStrobel

Hallo Joe,

ein Login mit sid.* Attributen ohne reAuthRegex ist tatsächlich bisher nicht vorgesehen.
Ich könnte mir aber ein neues Attribut reAuthAlways vorstellen ...
Wenn ich demnächst mal Zeit habe, versiche ich das einzubauen.

Gruss
   Stefan

JoeALLb

Hallo Stefan,

Zitat von: StefanStrobel am 03 September 2017, 19:54:19
Ich könnte mir aber ein neues Attribut reAuthAlways vorstellen ...
Wenn ich demnächst mal Zeit habe, versiche ich das einzubauen.

Das wäre natürlich schön! Oder, gegenvorschlag: Wenn reAuthRegex auf ".*" gesetzt ist (als Sonderfall),
könnte das IMMER ausgeführt werden, da der regex immer trifft!
Dann wäre kein eigenes neues Attribut notwendig und logisch wäre es (denk ich) auch!

Vielen Dank,

schöne Grüße
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

StefanStrobel

Hallo Joe,

Hast Du mal die reAuthRegex auf .* gesetzt und probiert was passiert?
Eigentlich sollte HTTPMOD nach dem ersten set bemerken, dass die reAuthRegex matcht, die Authentisierung senden und danach den Request aus dem set nochmals senden.
Danach wird zwar eine Meldung geloggt, dass die reAuthRegex schon wieder matcht, und dass die Authentisierung vermutlich nicht erfolgreich war, aber der set sollte erfolgt sein ...

Gruß
    Stefan

JoeALLb

Hallo Stefan,

ja, ich wurde für 5 Minuten gesperrt wegen ungültigem Versuch.
Daher mein Vorschlag, in diesem Fall eine Sonderbehandlung einführen und in diesem Fall immer das Login senden..
Aber dabei würden wir die Möglichkeit verlieren, schon gültige Logins für diesen Fall "wiederzuverwenden", vielleicht ist also dein Vorschlag doch der bessere?!?

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

StefanStrobel

Hi Joe,

Eine Sperre wegen ungültiger Versuche scheint aber eher ein anderes Problem zu sein.
Evt. hat bei der Definition der Login-Schritte etwas nicht funktioniert.

Probier das doch nochmal mit verbose 5 ...

Gruss
   Stefan

JoeALLb

Hallo Stefan,

nein, das ist eine ganz zickige Appliance.
Eine Abfrage ohne vorheriges Login bedeutet 1 Minute gesperrt. Eine zweite Abfrage inerhalb von 5 Minuten bedeutet 5 Minuten gesperrt.
Außerdem rebootet das Gerät nach jeder Änderung und ist dann für 52 Sekunden nicht erreichbar, weshalb ich prinzipiell ein "retry" von Setbefehlen bräuchte, wenn
diese nicht gelingen. Aber das ist wohl alles "Nice to have" und für meinen Anwendungsfall nicht unbedingt notwendig.
Wenn ich eine Möglichkeit habe, die 2-3 URLs in Serie abzusetzen (was über deinen Vorschlag des neuen Attributes für 2 URLs ja für mich ginge),
dann wäre ich happy und das ganze wäre viel übersichtlicher. Mein Workaround per cmdalias ist recht unhandlich, vorallem, wenn man viele Befehle damit abdecken muss.

Danke fürs mitdenken!

schöne Grüße
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

StefanStrobel

Hallo Joe,

probier doch mal die angehängte neue Version.
Da habe ich zum Testen ein neues Attribut mit Namen reAuthAll eingebaut. Wenn das auf 1 steht, wird vor jedem update, get und set der Login-Prozess aus den sid-Attributen durchlaufen.

Gruss
   Stefan

JoeALLb

Hallo Stefan,

nur kurz, da ich noch im Urlaub bin, habs aber von der Ferne geprüft: Klappt bestens!
Herzlichen Dank!!!
Habe jetzt aber nur speziell diese Funktion, nichts sonst geprüft.

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

StefanStrobel

Hallo Joe,

danke für's Testen.
Es war nur eine kleine Änderung, die eigentlich keine Auswirkungen haben kann wenn man das neue Attribut nicht setzt.
Ich werde die neue Version dann demnächst einchecken.

Gruss
   Stefan