Fix Usermin restart with systemd

This commit is contained in:
Ilia
2022-06-15 13:32:57 +03:00
parent 6c793a06f2
commit f8758d663d
2 changed files with 6 additions and 18 deletions

View File

@@ -89,20 +89,8 @@ all configuration files.
sub restart_usermin_miniserv
{
return undef if (&is_readonly_mode());
return &miniserv_systemd_sig('HUP', 'usermin');
local($pid, %miniserv, $addr, $i);
if (&has_command('systemctl') &&
&foreign_available("init")) {
&foreign_require("init");
# Run native restart as SIGHUP on miniserv just kills Usermin process
my $unit_target = 'usermin';
my $unit_path = &init::get_systemd_root($unit_target);
if (-r "$unit_path/$unit_target.service") {
my $rs = &system_logged("systemctl restart $unit_target >/dev/null 2>&1 </dev/null");
if (!$rs) {
return;
}
}
}
&get_usermin_miniserv_config(\%miniserv) || return;
$miniserv{'inetd'} && return;
open(PID, "<".$miniserv{'pidfile'}) || &error("Failed to open PID file");

View File

@@ -2310,9 +2310,9 @@ it to restart. This will apply all configuration settings.
=cut
sub restart_miniserv
{
my ($nowait, $ignore) = @_;
return undef if (&is_readonly_mode());
return if (&miniserv_systemd_sig('HUP'));
my ($nowait, $ignore) = @_;
my %miniserv;
&get_miniserv_config(\%miniserv) || return;
if ($main::webmin_script_type eq 'web' && !$ENV{"MINISERV_CONFIG"} &&
@@ -2400,9 +2400,9 @@ IP addresses and ports to accept connections on.
=cut
sub reload_miniserv
{
my ($ignore) = @_;
return undef if (&is_readonly_mode());
return if (&miniserv_systemd_sig('USR1'));
my ($ignore) = @_;
my %miniserv;
&get_miniserv_config(\%miniserv) || return;
if ($main::webmin_script_type eq 'web' && !$ENV{"MINISERV_CONFIG"} &&
@@ -2454,7 +2454,7 @@ else {
}
}
=head2 miniserv_systemd_sig(signal)
=head2 miniserv_systemd_sig(signal, [product])
Uses systemd to send given signal to existing miniserv process.
Used to either fully restart it or just reload configuration
@@ -2462,11 +2462,11 @@ Used to either fully restart it or just reload configuration
=cut
sub miniserv_systemd_sig
{
my ($sig) = @_;
my ($sig, $product) = @_;
$sig =~ tr/A-Z0-9//cd;
if (&has_command('systemctl')) {
my $unit_target = &get_product_name();
my $unit_target = $product || &get_product_name();
my ($upathr,
$upathd,
$ufile) =