From ceac5cb48a679ada2ccfe61638e9e4da7617a992 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 24 Oct 2022 13:43:17 +0000 Subject: [PATCH] MQTT2_SERVER/FHEMWEB: add reopen command (Forum #129788) git-svn-id: https://svn.fhem.de/fhem/trunk@26581 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_MQTT2_SERVER.pm | 17 +++++++++++++++++ fhem/FHEM/01_FHEMWEB.pm | 29 ++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/fhem/FHEM/00_MQTT2_SERVER.pm b/fhem/FHEM/00_MQTT2_SERVER.pm index bd15fcc03..59417f679 100644 --- a/fhem/FHEM/00_MQTT2_SERVER.pm +++ b/fhem/FHEM/00_MQTT2_SERVER.pm @@ -213,6 +213,7 @@ MQTT2_SERVER_Set($@) { my ($hash, @a) = @_; my %sets = ( publish=>":textField,[-r] topic message", + reopen=>":noArg", clearRetain=>":noArg" ); shift(@a); @@ -238,7 +239,18 @@ MQTT2_SERVER_Set($@) delete($hash->{READINGS}{$rname}); delete($hash->{retain}); return undef; + + } elsif($a[0] eq "reopen") { + TcpServer_Close($hash); + delete($hash->{stacktrace}); + my ($port, $global) = split("[ \t]+", $hash->{DEF}); + my $ret = TcpServer_Open($hash, $port, $global); + return $ret if($ret); + TcpServer_SetSSL($hash) if(AttrVal($hash->{NAME}, "SSL", 0)); + return undef; + } + } sub @@ -786,6 +798,11 @@ MQTT2_SERVER_ReadDebug($$)
  • clearRetain
    delete all the retained topics.
  • + +
  • reopen
    + reopen the server port. This is an alternative to restart FHEM when + the SSL certificate is replaced. +

  • diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index eb20e81aa..3d046ee57 100644 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -3463,7 +3463,10 @@ sub FW_Set($@) { my ($hash, @a) = @_; - my %cmd = ("rereadicons" => ":noArg", "clearSvgCache" => ":noArg"); + my %cmd = ("clearSvgCache" => ":noArg", + "reopen" => ":noArg", + "rereadicons" => ":noArg"); + if(AttrVal($hash->{NAME}, "rescueDialog", "")) { $cmd{"rescueStart"} = ""; $cmd{"rescueTerminate"} = ":noArg"; @@ -3492,6 +3495,16 @@ FW_Set($@) } } + if($a[1] eq "reopen") { + TcpServer_Close($hash); + delete($hash->{stacktrace}); + my ($port, $global) = split("[ \t]+", $hash->{DEF}); + my $ret = TcpServer_Open($hash, $port, $global); + return $ret if($ret); + TcpServer_SetSSL($hash) if(AttrVal($hash->{NAME}, "SSL", 0)); + return undef; + } + if($a[1] eq "rescueStart") { return "error: rescueStart needs two arguments: host and port" if(!$a[2] || !$a[3] || $a[3] !~ m/[0-9]{1,5}/ || $a[3] > 65536); @@ -3705,14 +3718,21 @@ FW_log($$) Set
    @@ -4514,15 +4534,22 @@ FW_log($$) Set