diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 9a68dafd0..7c4c6deea 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -130,6 +130,7 @@ FHEMWEB_Initialize($) $hash->{DefFn} = "FW_Define"; $hash->{UndefFn} = "FW_Undef"; $hash->{NotifyFn}= "FW_Notify"; + $hash->{NotifyFn}= ($init_done ? "FW_Notify" : "FW_SecurityCheck"); $hash->{AsyncOutputFn} = "FW_AsyncOutput"; $hash->{ActivateInformFn} = "FW_ActivateInform"; no warnings 'qw'; @@ -217,13 +218,15 @@ FHEMWEB_Initialize($) FW_readIcons($pe); } } - InternalTimer(1, "FW_SecurityCheck", $hash); } ##################################### sub FW_SecurityCheck($$) { + my ($ntfy, $dev) = @_; + return if($dev->{NAME} ne "global" || + !grep(m/^INITIALIZED$/, @{$dev->{CHANGED}})); my $motd = AttrVal("global", "motd", ""); if($motd =~ "^SecurityCheck") { my @list1 = devspec2array("TYPE=FHEMWEB"); @@ -244,6 +247,8 @@ FW_SecurityCheck($$) if(@list3); $attr{global}{motd} = $motd; } + $modules{FHEMWEB}{NotifyFn}= "FW_Notify"; + return; } ##################################### @@ -801,7 +806,8 @@ FW_answerCall($) my $supplied = $FW_webArgs{fwcsrf} ? $FW_webArgs{fwcsrf} : ""; my $want = $defs{$FW_wname}{CSRFTOKEN}; if($supplied ne $want) { - Log3 $FW_wname, 3, "FHEMWEB $FW_wname CSRF error: $supplied ne $want"; + Log3 $FW_wname, 3, "FHEMWEB $FW_wname CSRF error: $supplied ne $want. ". + "For detals see the csrfToken FHEMWEB attribute"; return 0; } } diff --git a/fhem/FHEM/98_telnet.pm b/fhem/FHEM/98_telnet.pm index c4eb55ff7..9977e5be9 100644 --- a/fhem/FHEM/98_telnet.pm +++ b/fhem/FHEM/98_telnet.pm @@ -20,6 +20,7 @@ telnet_Initialize($) $hash->{AsyncOutputFn} = "telnet_Output"; $hash->{UndefFn} = "telnet_Undef"; $hash->{AttrFn} = "telnet_Attr"; + $hash->{NotifyFn}= "telnet_SecurityCheck"; $hash->{AttrList} = "globalpassword password prompt allowedCommands ". "allowfrom SSL connectTimeout connectInterval ". "encoding:utf8,latin1 sslVersion"; @@ -33,7 +34,6 @@ telnet_Initialize($) $cmds{inform} = { Fn=>"CommandTelnetInform", ClientFilter => "telnet", Hlp=>"{on|off|log|raw|timer|status},echo all events to this client" }; - InternalTimer(1, "telnet_SecurityCheck", $hash); } sub @@ -58,8 +58,11 @@ CommandTelnetEncoding($$) ##################################### sub -telnet_SecurityCheck() +telnet_SecurityCheck($$) { + my ($ntfy, $dev) = @_; + return if($dev->{NAME} ne "global" || + !grep(m/^INITIALIZED$/, @{$dev->{CHANGED}})); my $motd = AttrVal("global", "motd", ""); if($motd =~ "^SecurityCheck") { my @list1 = devspec2array("TYPE=telnet"); @@ -82,6 +85,8 @@ telnet_SecurityCheck() if(@list3); $attr{global}{motd} = $motd; } + delete $modules{telnet}{NotifyFn}; + return; } ##########################