From: Stefan Schantl Date: Wed, 26 Sep 2018 12:09:53 +0000 (+0200) Subject: ids-functions.pl: Add backend code to handle the "cron" function of suricatactrl X-Git-Tag: v2.23-core131~117^2~144 X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=commitdiff_plain;h=ed06bc811ffe055e2dadd226d27332892f4725db ids-functions.pl: Add backend code to handle the "cron" function of suricatactrl Signed-off-by: Stefan Schantl --- diff --git a/config/cfgroot/ids-functions.pl b/config/cfgroot/ids-functions.pl index 3f6cb3ee2e..e7cd5b2b36 100644 --- a/config/cfgroot/ids-functions.pl +++ b/config/cfgroot/ids-functions.pl @@ -48,7 +48,10 @@ our $idspidfile = "/var/run/suricata.pid"; my $suricatactrl = "/usr/local/bin/suricatactrl"; # Array with allowed commands of suricatactrl. -my @suricatactrl_cmds = ( 'start', 'stop', 'restart', 'reload', 'fix-rules-dir' ); +my @suricatactrl_cmds = ( 'start', 'stop', 'restart', 'reload', 'fix-rules-dir', 'cron' ); + +# Array with supported cron intervals. +my @cron_intervals = ('off', 'daily', 'weekly' ); # ## Function for checking if at least 300MB of free disk space are available @@ -347,7 +350,7 @@ sub ids_is_running () { # sub call_suricatactrl ($) { # Get called option. - my ($option) = @_; + my ($option, $interval) = @_; # Loop through the array of supported commands and check if # the given one is part of it. @@ -355,12 +358,34 @@ sub call_suricatactrl ($) { # Skip current command unless the given one has been found. next unless($cmd eq $option); - # Call the suricatactrl binary and pass the requrested - # option to it. - system("$suricatactrl $option &>/dev/null"); + # Check if the given command is "cron". + if ($option eq "cron") { + # Check if an interval has been given. + if ($interval) { + # Check if the given interval is valid. + foreach my $element (@cron_intervals) { + # Skip current element until the given one has been found. + next unless($element eq $interval); + + # Call the suricatactrl binary and pass the "cron" command + # with the requrested interval. + system("$suricatactrl $option $interval &>/dev/null"); + + # Return "1" - True. + return 1; + } + } - # Return "1" - True. - return 1; + # If we got here, the given interval is not supported or none has been given. - Return nothing. + return; + } else { + # Call the suricatactrl binary and pass the requrested + # option to it. + system("$suricatactrl $option &>/dev/null"); + + # Return "1" - True. + return 1; + } } # Command not found - return nothing.