From e17abe5e333afaac23d77c44aa917a485dc42c5a Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Wed, 29 Mar 2017 21:57:02 -0700 Subject: [PATCH] Support multiple init scripts https://sourceforge.net/p/webadmin/bugs/4925/ --- fail2ban/atboot.cgi | 40 ++++++++++++++++++++++------------------ fail2ban/fail2ban-lib.pl | 14 ++++++++++---- fail2ban/index.cgi | 3 ++- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/fail2ban/atboot.cgi b/fail2ban/atboot.cgi index c57b6326a..e06ab704c 100755 --- a/fail2ban/atboot.cgi +++ b/fail2ban/atboot.cgi @@ -8,25 +8,29 @@ our (%text, %in, %config, $module_config_directory); &ReadParse(); &foreign_require("init"); -my $starting = &init::action_status($config{'init_script'}); -if ($starting != 2 && $in{'boot'}) { - # Enable at boot - my $startscript = &has_command($config{'client_cmd'})." -x start"; - my $stopscript = &has_command($config{'client_cmd'})." stop"; - &init::enable_at_boot($config{'init_script'}, - "Start Fail2Ban server", - $startscript, - $stopscript, - undef, - { 'fork' => 1 }, - ); - &webmin_log("atboot"); - } -elsif ($starting == 2 && !$in{'boot'}) { - # Disable at boot - &init::disable_at_boot($config{'init_script'}); - &webmin_log("delboot"); +my $log; +foreach my $init (split(/\s+/, $config{'init_script'})) { + my $starting = &init::action_status($init); + if ($starting != 2 && $in{'boot'}) { + # Enable at boot + my $startscript = &has_command($config{'client_cmd'})." -x start"; + my $stopscript = &has_command($config{'client_cmd'})." stop"; + &init::enable_at_boot($config{'init_script'}, + "Start Fail2Ban server", + $startscript, + $stopscript, + undef, + { 'fork' => 1 }, + ); + $log = "atboot"; + } + elsif ($starting == 2 && !$in{'boot'}) { + # Disable at boot + &init::disable_at_boot($config{'init_script'}); + $log = "delboot"; + } } +&webmin_log($log) if ($log); &redirect(""); diff --git a/fail2ban/fail2ban-lib.pl b/fail2ban/fail2ban-lib.pl index 5eeb75118..e689a44c2 100644 --- a/fail2ban/fail2ban-lib.pl +++ b/fail2ban/fail2ban-lib.pl @@ -417,8 +417,11 @@ sub start_fail2ban_server { if ($config{'init_script'}) { &foreign_require("init"); - my ($ok, $out) = &init::start_action($config{'init_script'}); - return $ok ? undef : $out; + foreach my $init (split(/\s+/, $config{'init_script'})) { + my ($ok, $out) = &init::start_action($init); + return $out if (!$ok); + } + return undef; } else { my $out = &backquote_logged("$config{'client_cmd'} -x start 2>&1 &1