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 <stefan.schantl@ipfire.org>
This commit is contained in:
Stefan Schantl
2017-12-06 11:44:30 +01:00
parent e3ab140634
commit f7fcd1c020

View File

@@ -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 "<table width='100%'><tr><td valign='top'><table>";
&Header::openbox('100%', 'LEFT', $Lang::tr{'intrusion detection system rules'});
# Output display table for rule files
print "<table width='100%'><tr><td valign='top'><table>";
print "<form method='post'>";
print "<form method='post'>";
# 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 "</table></td><td valign='top'><table>";
$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 "<tr><td class='base' valign='top'><input type='checkbox' NAME='SNORT_RULE_$rulefile' $rulechecked> <a href='$rulefilelink'>$rulefile</a></td></tr>";
print "<tr><td class='base' valign='top'>";
# Check for empty 'Description'
if ($snortrules{$rulefile}{'Description'} eq '') {
print "<table width='100%'><tr><td class='base'>No description available</td></tr>";
} else {
# Output rule file 'Description'
print "<table width='100%'><tr><td class='base'>$snortrules{$rulefile}{'Description'}</td></tr>";
}
# Check for display flag
if ($displayrulefilerules) {
# Rule file definition rule display
print "<tr><td class='base' valign='top'><table border='0'><tr>";
# 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 "</tr><tr>";
$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 "<td class='base'><input type='checkbox' NAME='$checkboxname' $ruledefchecked> $snortrules{$rulefile}{'Definition'}{$ruledef}{'Description'}</td>";
# Increment count
$ruledefdisplaycnt++;
}
# If do not have second rule for row, create empty cell
if (($ruledefdisplaycnt % 2) != 0) {
print "<td class='base'></td>";
}
# Close display table
print "</tr></table></td></tr>";
# 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 "</table></td><td valign='top'><table>";
$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 "<tr><td class='base' valign='top'><input type='checkbox' NAME='SNORT_RULE_$rulefile' $rulechecked> <a href='$rulefilelink'>$rulefile</a></td></tr>";
print "<tr><td class='base' valign='top'>";
# Check for empty 'Description'
if ($snortrules{$rulefile}{'Description'} eq '') {
print "<table width='100%'><tr><td class='base'>No description available</td></tr>";
} else {
# Output rule file 'Description'
print "<table width='100%'><tr><td class='base'>$snortrules{$rulefile}{'Description'}</td></tr>";
}
# Check for display flag
if ($displayrulefilerules) {
# Rule file definition rule display
print "<tr><td class='base' valign='top'><table border='0'><tr>";
# 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 "</tr><tr>";
$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 "<td class='base'><input type='checkbox' NAME='$checkboxname' $ruledefchecked> $snortrules{$rulefile}{'Definition'}{$ruledef}{'Description'}</td>";
# Increment count
$ruledefdisplaycnt++;
}
# If do not have second rule for row, create empty cell
if (($ruledefdisplaycnt % 2) != 0) {
print "<td class='base'></td>";
}
# Close display table
print "</table>";
# Increment ruledisplaycnt
$ruledisplaycnt++;
print "</tr></table></td></tr>";
}
print "</td></tr></table></td></tr></table>";
print <<END
# Close display table
print "</table>";
# Increment ruledisplaycnt
$ruledisplaycnt++;
}
print "</td></tr></table></td></tr></table>";
print <<END
<table width='100%'>
<tr>
<td width='100%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
@@ -500,8 +499,7 @@ if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable
</form>
END
;
&Header::closebox();
}
&Header::closebox();
&Header::closebigbox();
&Header::closepage();