Calendar Password mit Sonderzeichen

Begonnen von sliderffm, 01 Januar 2020, 23:02:41

Vorheriges Thema - Nächstes Thema

sliderffm

Hallo Zusammen,

Ich versuche meinen Kalender auf meiner Synology in fhem über das Modul Calendar einzubinden und
habe das Problem, das die URL nicht korrekt ist. Das Problem liegt wohl an meinem Kennwort, welches
Sonderzeichen wie Ausrufezeichen, Fragezeichen und auch ein Doppelpunkt enthält und das Modul damit
nicht klar kommt.

Dabei wird folgender Fehler protokolliert:
Calendar benutzer_cal retrieval failed with error message <hidden>: malformed or unsupported URL
Calendar benutzer_cal retrieved no or empty data
Calendar benutzer_cal Checking times...


Über einen Test mit wget auf der Konsole konnte ich den Kalender abrufen, indem ich Prozentkodierung
benutzte. Dabei werden die Sonderzeichen mit folgenden Zeichen ersetzt:

! = %21
? = %3F
: = %3A

Hierbei schaut der URL-Aufruf bei dem Passwortbeispiel !123:456? wie folgt aus:
wget https://BENUTZERNAME:%21123%3A456%3F@SERVERNAME/caldav/benutzername/home?export

Versuche ich nun den Kalender mit

define benutzer_cal Calendar ical url https://benutzer:%21123%3A456%3F@SERVERNAME/caldav/benutzername/home?export 600

anzulegen, bekomme ich folgende Fehlermeldung im Logfile:

Calendar benutzer_cal retrieval failed with error message <hidden>: wrong authentication
Calendar benutzer_cal retrieved no or empty data
Calendar benutzer_cal Checking times...



Wie funktioniert das define, wenn Sonderzeichen im Passwort vorkommen?

Natürlich könnte ich die Sonderzeichen aus dem Kennwort nehmen, das würde aber bedeuten,
das ich bei vielen Geräte das anpassen müsste, weil nicht nur der Kalender über dieses Kennwort bedient
wird. Das würde ich gerne vermeiden!

Hat jemand eine Idee, wie das Problem zu lösen wäre?

Vielen Dank

Dr. Boris Neubert

Hallo,

möglicherweise wird die URL irgendwo zwischen Calendar-Modul und HttpUtils noch verändert.

Bitte stelle man die globale Verbosity auf 5 und ersetze in 57_Calendar.pm in Zeile 2577 bei hideurl die 1 durch eine 0. Dann Modul mit reload 57_Calendar neu laden oder FHEM neu starten.

Wenn Du dann ein Update vom Kalender anstößt, wird im Log die volle URL ausgeschrieben. Du kannst dann schauen, welche URL wirklich gesendet wird. Diese kannst Du dann auch mal im Browser angeben, um zu sehen, ob das grundsätzlich funktioniert und nur hier nicht.

Vorsicht: hier dann keine Logs posten, um Dein Kennwort nicht zu verraten.

Viele Grüße
Boris

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

sliderffm

Hallo Boris,

Zitat von: Dr. Boris Neubert am 04 Januar 2020, 12:40:02
möglicherweise wird die URL irgendwo zwischen Calendar-Modul und HttpUtils noch verändert.

Wenn Du dann ein Update vom Kalender anstößt, wird im Log die volle URL ausgeschrieben. Du kannst dann schauen, welche URL wirklich gesendet wird. Diese kannst Du dann auch mal im Browser angeben, um zu sehen, ob das grundsätzlich funktioniert und nur hier nicht.

vielen Dank für den Hinweis, im Protokoll wird folgendes Angezeigt, wenn ich das Passwort direkt eingeben (hier mit den Daten aus meinem Beispiel):

HttpUtils url=https://BENUTZERNAME:!123:456?@SERVER/caldav/BENUTZER/home?export


Es wird also 1 zu 1 weitergegeben, das kann dann nicht funktionieren, da die URL eigentlich umgeschrieben werden müsste mit der Prozentkodierung.
Trage ich nun selbst die Prozentkodierung in der URL ein, mit meinem Beispielkenntwort wird es korrekt weitergegeben 1 zu 1.

Benutze ich allerdings mein richtiges Kennwort, dann werden wohl irgendwelche Variablen eingefügt, wie z.b. der aktuelle Tag und auch das aktuelle Datum, sowie mehrere Leerzeichen.

Ich habe das jetzt mal ausprobiert, was hier genau passiert, das Modul schreibt folgende Prozentcodierungszeichen wie folgt um:

Aus "!e" also "%21e" wird "                    5"
https://BENUTZER:%21e@SERVER/PFAD
HttpUtils url=https://BENUTZER:                    5@SERVER/PFAD


Aus ":k" also "%3Ak" wird "Sonntagk"
https://BENUTZER:%3Ak@SERVER/PFAD
HttpUtils url=https://BENUTZER:Sonntagk@SERVER/PFAD


Aus "?" als "%3F" wird "2020-01-05"
https://BENUTZER:%3F@SERVER/PFAD
HttpUtils url=https://BENUTZER:2020-01-05@SERVER/PFAD



Im Calendar Modul wird die Funktion HttpUtils_NonblockingGet benutzt, hier werden keine Angaben in der Doku zum Kennwort gemacht, nur bei den anderen HttpUtils-Funktionen, das die URL mittels urlEncode umgeschrieben werden soll.

Okay, jetzt weiß ich zumindest warum es nicht geht, weil das Modul - warum auch immer - die drei Sonderzeichen durch Werte aus wahrscheinlich irgendwelchen Variablen umschreibt in der URL und daher das Kennwort natürlich nicht mehr korrekt ist.

Ich müsste also das Modul dazu bringen, meine Prozentcodierung 1 zu 1 weiterzugeben und nicht als Variablen zu benutzen.
Also müsste der String gequotet/escapt werden, dann könnte es doch gehen?


Gruß
Andreas


xenos1984

Hast du es mal mit doppelten Prozentzeichen versucht? Also wo du bisher % hast, stattdessen %%.

Dr. Boris Neubert

Zitat von: sliderffm am 05 Januar 2020, 21:51:37
Benutze ich allerdings mein richtiges Kennwort, dann werden wohl irgendwelche Variablen eingefügt, wie z.b. der aktuelle Tag und auch das aktuelle Datum, sowie mehrere Leerzeichen.

Probier mal bitte den quirk noWildcards (siehe Attribute in der CommandRef).
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

sliderffm

Hallo Boris,
Hallo xenos1984,

ich habe beide Vorschläge ausprobiert und mit beiden Möglichkeiten konnte mein Kalender abgerufen werden. :)

Ich benutzte das Attribut 'quirks' mit 'noWildcards', das scheint auch genau die Lösung für mein Problem zu sein.

commandref:
-Die Auswertung von wildcards kann bei Bedarf fü einen Kalender deaktiviert werden, indem das Schlüsselwort
'noWildcards' dem Attribut 'quirks' hinzugefügt wird. Das ist nützlich bei url die bereits ein % enthalten,
ohne damit ein wildcard zu kennzeichnen.



Super, vielen Dank.

Gruß
Andreas

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!