From f7fcd1c020f0eaaacf9068182e9f64750ccf7ea7 Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Wed, 6 Dec 2017 11:44:30 +0100 Subject: [PATCH] ids.cgi: Always display ruleset Display the rule categories any time and do not hide them if no instance of snort is runing. Signed-off-by: Stefan Schantl --- html/cgi-bin/ids.cgi | 264 +++++++++++++++++++++---------------------- 1 file changed, 131 insertions(+), 133 deletions(-) diff --git a/html/cgi-bin/ids.cgi b/html/cgi-bin/ids.cgi index d78bcd20d..ccde15a22 100644 --- a/html/cgi-bin/ids.cgi +++ b/html/cgi-bin/ids.cgi @@ -351,145 +351,144 @@ if ($results ne '') { &Header::closebox(); -if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable_green" || -e "${General::swroot}/snort/enable_blue" || -e "${General::swroot}/snort/enable_orange" ) { - &Header::openbox('100%', 'LEFT', $Lang::tr{'intrusion detection system rules'}); - # Output display table for rule files - print "
"; +&Header::openbox('100%', 'LEFT', $Lang::tr{'intrusion detection system rules'}); + # Output display table for rule files + print "
"; - print ""; + print ""; - # Local vars - my $ruledisplaycnt = 1; - my $rulecnt = keys %snortrules; - $rulecnt++; - $rulecnt = $rulecnt / 2; + # Local vars + my $ruledisplaycnt = 1; + my $rulecnt = keys %snortrules; + $rulecnt++; + $rulecnt = $rulecnt / 2; - # Loop over each rule file - foreach my $rulefile (sort keys(%snortrules)) { - my $rulechecked = ''; + # Loop over each rule file + foreach my $rulefile (sort keys(%snortrules)) { + my $rulechecked = ''; - # Hide inkompatible Block rules - if ($rulefile =~'-BLOCK.rules') { - next; - } - - # Check if reached half-way through rule file rules to start new column - if ($ruledisplaycnt > $rulecnt) { - print "
"; - $ruledisplaycnt = 0; - } - - # Check if rule file is enabled - if ($snortrules{$rulefile}{"State"} eq 'Enabled') { - $rulechecked = 'CHECKED'; - } - - # Create rule file link, vars array, and display flag - my $rulefilelink = "?RULEFILE=$rulefile"; - my $rulefiletoclose = ''; - my @queryvars = (); - my $displayrulefilerules = 0; - - # Check for passed in query string - if ($ENV{'QUERY_STRING'}) { - # Split out vars - @queryvars = split(/\&/, $ENV{'QUERY_STRING'}); - - # Loop over values - foreach $value (@queryvars) { - # Split out var pairs - ($var, $linkedrulefile) = split(/=/, $value); - - # Check if var is 'RULEFILE' - if ($var eq 'RULEFILE') { - # Check if rulefile equals linkedrulefile - if ($rulefile eq $linkedrulefile) { - # Set display flag - $displayrulefilerules = 1; - - # Strip out rulefile from rulefilelink - $rulefilelink =~ s/RULEFILE=$linkedrulefile//g; - } else { - # Add linked rule file to rulefilelink - $rulefilelink .= "&RULEFILE=$linkedrulefile"; - } - } - } - } - - # Strip out extra & & ? from rulefilelink - $rulefilelink =~ s/^\?\&/\?/i; - - # Check for a single '?' and replace with page for proper link display - if ($rulefilelink eq '?') { - $rulefilelink = "ids.cgi"; - } - - # Output rule file name and checkbox - print ""; - print "
$rulefile
"; - - # Check for empty 'Description' - if ($snortrules{$rulefile}{'Description'} eq '') { - print ""; - } else { - # Output rule file 'Description' - print "
No description available
"; - } - - # Check for display flag - if ($displayrulefilerules) { - # Rule file definition rule display - print ""; + # Hide inkompatible Block rules + if ($rulefile =~'-BLOCK.rules') { + next; } + # Check if reached half-way through rule file rules to start new column + if ($ruledisplaycnt > $rulecnt) { + print "
$snortrules{$rulefile}{'Description'}
"; - - # Local vars - my $ruledefdisplaycnt = 0; - my $ruledefcnt = keys %{$snortrules{$rulefile}{"Definition"}}; - $ruledefcnt++; - $ruledefcnt = $ruledefcnt / 2; - - # Loop over rule file rules - foreach my $ruledef (sort {$a <=> $b} keys(%{$snortrules{$rulefile}{"Definition"}})) { - # Local vars - my $ruledefchecked = ''; - - # If have display 2 rules, start new row - if (($ruledefdisplaycnt % 2) == 0) { - print ""; - $ruledefdisplaycnt = 0; - } - - # Check for rules state - if ($snortrules{$rulefile}{'Definition'}{$ruledef}{'State'} eq 'Enabled') { - $ruledefchecked = 'CHECKED'; - } - - # Create rule file rule's checkbox - $checkboxname = "SNORT_RULE_$rulefile"; - $checkboxname .= "_$ruledef"; - print ""; - - # Increment count - $ruledefdisplaycnt++; - } - - # If do not have second rule for row, create empty cell - if (($ruledefdisplaycnt % 2) != 0) { - print ""; - } - - # Close display table - print "
$snortrules{$rulefile}{'Definition'}{$ruledef}{'Description'}
"; + $ruledisplaycnt = 0; + } + + # Check if rule file is enabled + if ($snortrules{$rulefile}{"State"} eq 'Enabled') { + $rulechecked = 'CHECKED'; + } + + # Create rule file link, vars array, and display flag + my $rulefilelink = "?RULEFILE=$rulefile"; + my $rulefiletoclose = ''; + my @queryvars = (); + my $displayrulefilerules = 0; + + # Check for passed in query string + if ($ENV{'QUERY_STRING'}) { + # Split out vars + @queryvars = split(/\&/, $ENV{'QUERY_STRING'}); + + # Loop over values + foreach $value (@queryvars) { + # Split out var pairs + ($var, $linkedrulefile) = split(/=/, $value); + + # Check if var is 'RULEFILE' + if ($var eq 'RULEFILE') { + # Check if rulefile equals linkedrulefile + if ($rulefile eq $linkedrulefile) { + # Set display flag + $displayrulefilerules = 1; + + # Strip out rulefile from rulefilelink + $rulefilelink =~ s/RULEFILE=$linkedrulefile//g; + } else { + # Add linked rule file to rulefilelink + $rulefilelink .= "&RULEFILE=$linkedrulefile"; + } + } + } + } + + # Strip out extra & & ? from rulefilelink + $rulefilelink =~ s/^\?\&/\?/i; + + # Check for a single '?' and replace with page for proper link display + if ($rulefilelink eq '?') { + $rulefilelink = "ids.cgi"; + } + + # Output rule file name and checkbox + print ""; + print ""; } - print "
$rulefile
"; + + # Check for empty 'Description' + if ($snortrules{$rulefile}{'Description'} eq '') { + print ""; + } else { + # Output rule file 'Description' + print "
No description available
"; + } + + # Check for display flag + if ($displayrulefilerules) { + # Rule file definition rule display + print "
$snortrules{$rulefile}{'Description'}
"; + + # Local vars + my $ruledefdisplaycnt = 0; + my $ruledefcnt = keys %{$snortrules{$rulefile}{"Definition"}}; + $ruledefcnt++; + $ruledefcnt = $ruledefcnt / 2; + + # Loop over rule file rules + foreach my $ruledef (sort {$a <=> $b} keys(%{$snortrules{$rulefile}{"Definition"}})) { + # Local vars + my $ruledefchecked = ''; + + # If have display 2 rules, start new row + if (($ruledefdisplaycnt % 2) == 0) { + print ""; + $ruledefdisplaycnt = 0; + } + + # Check for rules state + if ($snortrules{$rulefile}{'Definition'}{$ruledef}{'State'} eq 'Enabled') { + $ruledefchecked = 'CHECKED'; + } + + # Create rule file rule's checkbox + $checkboxname = "SNORT_RULE_$rulefile"; + $checkboxname .= "_$ruledef"; + print ""; + + # Increment count + $ruledefdisplaycnt++; + } + + # If do not have second rule for row, create empty cell + if (($ruledefdisplaycnt % 2) != 0) { + print ""; + } + # Close display table - print "
$snortrules{$rulefile}{'Definition'}{$ruledef}{'Description'}
"; - - # Increment ruledisplaycnt - $ruledisplaycnt++; + print "
"; - print <"; + + # Increment ruledisplaycnt + $ruledisplaycnt++; + } +print "
"; +print < @@ -500,8 +499,7 @@ if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable END ; - &Header::closebox(); -} +&Header::closebox(); &Header::closebigbox(); &Header::closepage();