Ich musste bei einem HTTPMOD-Device SSL_verify_mode setzen:
attr <dev> SSL_verify_mode,SSL_VERIFY_NONE
Beim Auruf erscheint folgendes im Log und FHEM "steht" danach. Ich habe jetzt den Prozess nicht im Detail überprüft, aber FHEM ist danach nicht mehr erreichbar:
ZitatSSL_verify_mode must be a number and not a string at /usr/share/perl5/IO/Socket/SSL.pm line 2386.
Ich habe mich jetzt mit
attr <dev> SSL_verify_mode,0
beholfen, aber ist halt unsauber.
Ist das ein Sonderfall bei mir gerade oder ein grundsätzliches Problem? Gut wäre ja, wenn der Fehler auch irgendwie gecatched würde.
Gruß
Chris
ZitatGut wäre ja, wenn der Fehler auch irgendwie gecatched würde.
Etwas gemein von start_SSL, statt Fehlermeldung gleich die() aufzurufen.
Ich habe jetzt IO::Socket:SSL->start_SSL in eval gepackt, auch in der nichtblockierenden Variante.
Ich vermute noch ein Problem in HTTPMOD, da der von HttpUtils.pm jetzt zurueckgelieferte Fehler nicht ausgegeben wird.
Immerhin stuerzt FHEM nicht mehr ab.
Wegen den Werten fuer dieses Attribut habe ich in /usr/include/opsnssl/ssl.h Folgendes gefunden:
/*
* use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are
* 'ored' with SSL_VERIFY_PEER if they are desired
*/
# define SSL_VERIFY_NONE 0x00
# define SSL_VERIFY_PEER 0x01
# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
# define SSL_VERIFY_CLIENT_ONCE 0x04
# define SSL_VERIFY_POST_HANDSHAKE 0x08
Die Voreinstellung ist SSL_VERIFY_NONE bzw. 0, d.h. attr <dev> sslArgs SSL_verify_mode,0 ist ueberfluessig.
Zitat von: rudolfkoenig am 17 September 2022, 15:20:37
Ich vermute noch ein Problem in HTTPMOD, da der von HttpUtils.pm jetzt zurueckgelieferte Fehler nicht ausgegeben wird.
Hallo Rudi,
ich habe Deine neue Version mal getestet und in HTTPMOD eine zusätzliche Logausgabe für die Fehlermeldung eingebaut.
###################################
# read / parse new data from device
# - callback for non blocking HTTP
sub ReadCallback {
my $huHash = shift; # hash reference passed to HttpUtils_NonblockingGet
my $err = shift; # error message from HttpUtils_NonblockingGet
my $body = shift // ''; # HTTP body received
my $hash = $huHash->{DEVHASH}; # our device hash
my $name = $hash->{NAME}; # our device name
my $request = $hash->{REQUEST}; # hash ref to the request that was sent
my $context = $request->{'context'}; # attribute context (reading, get, set, sid)
my $num = $request->{'num'};
my $type = $request->{'type'}; # type of request that was sent (like get01, update or auth01)
my $header = $huHash->{httpheader} // ''; # HTTP headers received
delete $huHash->{DEVHASH};
$hash->{HttpUtils} = $huHash; # make the httpUtils hash available in case anyone wants to use variables
$hash->{BUSY} = 0;
Log3 $name, 5, "$name: ReadCallback called from " . FhemCaller();
++ Log3 $name, 5, "$name: error >>>>> $err";
In HTTPMOD scheint bei gesetztem Attribut sslArgs keine Fehlermeldung anzukommen:
2022.09.17 15:42:39 5: covid_germany: ReadCallback called from HttpUtils_Connect2NonblockingSSL
2022.09.17 15:42:39 5: covid_germany: error >>>>>
Im Erfolgsfall (wenn das Attribut sslArgs nicht gesetzt ist) sieht das an der Stelle so aus:
2022.09.17 15:44:11 5: covid_germany: ReadCallback called from __ANON__
2022.09.17 15:44:11 5: covid_germany: error >>>>>
ZitatIn HTTPMOD scheint bei gesetztem Attribut sslArgs keine Fehlermeldung anzukommen:
Wo Du Recht hast... $@ wird von HttpUtils_Close entfernt.
Habs gefixt.
Und revidiere meine Aussage bzgl Problem in HTTPMOD. :)
sieht gut aus...
2022.09.17 16:14:57 5: covid_germany: ReadCallback called from HttpUtils_Connect2NonblockingSSL
2022.09.17 16:14:57 5: covid_germany: Read callback Error LogLvl set to 3, regex
2022.09.17 16:14:57 3: covid_germany: Read callback: Error: SSL_verify_mode must be a number and not a string at /usr/share/perl5/IO/Socket/SSL.pm line 2386.