mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-12 20:16:49 +02:00
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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user