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
+
- rereadicons
reads the names of the icons from the icon path. Use after adding or
deleting icons.
+
- clearSvgCache
delete all files found in the www/SVGcache directory, which is used to
cache SVG data, if the SVGcache attribute is set.
+
+ - reopen
+ reopen the server port. This is an alternative to restart FHEM when
+ the SSL certificate is replaced.
+
@@ -4514,15 +4534,22 @@ FW_log($$)
Set
+
- rereadicons
Damit wird die Liste der Icons neu eingelesen, für den Fall, dass
Sie Icons löschen oder hinzufügen.
+
- clearSvgCache
Im Verzeichnis www/SVGcache werden SVG Daten zwischengespeichert, wenn
das Attribut SVGcache gesetzt ist. Mit diesem Befehl leeren Sie diesen
Zwischenspeicher.
+
+ - reopen
+ Schließt und öffnet der Serverport. Das kann eine Alternative
+ zu FHEM-Neustart sein, wenn das SSL-Zertifikat sich geändert hat.
+