diff --git a/itsecur-firewall/list_rules.cgi b/itsecur-firewall/list_rules.cgi index b055ca9dd..1e3e14910 100755 --- a/itsecur-firewall/list_rules.cgi +++ b/itsecur-firewall/list_rules.cgi @@ -9,42 +9,65 @@ require './itsecur-lib.pl'; print "
\n"; -# 0-No. 1-Source,2-Destination, 3-Services, 4-Time, 5-Action, 6-Enabled, 7-Comment -local @CW=( "5%", "15%", "15%", "20%", "5%", "5%", "5%", "20%"); -$C_drop="#FFCCcc"; -$C_reject="#FFDDAA"; -$C_accept=""; -$C_disabled="#FF3333"; -$C_separator="#ffffcc"; +# 0-No. 1-Source,2-Destination, 3-Services, 4-Time, 5-Action, 6-Enabled, 7-Comment 8-move +my @CW=( "5%", "15%", "15%", "20%", "5%", "10%", "5%", "10%", "2%"); +my $C_drop="#FFCCcc"; +my $C_reject="#FFDDAA"; +my $C_accept=""; +my $C_disabled="#FF3333"; +my $C_separator="#ffffcc"; -local $Row_Color=""; +my $Row_Color=""; + +my @rules = &list_rules(); +my @servs = &list_services(); +my $edit = &can_edit("rules"); +my $times = &supports_time() && &list_times() > 0; +my $rules_cnt = scalar(@rules); +my @links; +if ( $rules_cnt > 1 ) { + push(@links, &select_all_link("r")); + push(@links, &select_invert_link("r")); +} +if ($edit) { + push(@links, &ui_link("edit_rule.cgi?new=1", $text{'rules_add'}) ); + push(@links, &ui_link("edit_sep.cgi?new=1", $text{'rules_sadd'}) ); +} -@rules = &list_rules(); -@servs = &list_services(); -$edit = &can_edit("rules"); -$times = &supports_time() && &list_times() > 0; if (@rules) { if ($edit) { - print "$text{'rules_add'}\n"; - print " " x 2; - print "$text{'rules_sadd'}\n"; + print &ui_links_row(\@links); print "
\n"; - print "
\n"; + print &ui_form_start("enable_rules.cgi", "post"); } - $cols = $times ? 8 : 7; - print "\n"; - print " ", - " ", - " ", - " ", - " ", - ($times ? " " : ""), - " ", - " ", - ($config{'show_desc'} ? " " : - ""), - "\n"; - foreach $r (@rules) { + + my @cols_text = ( "rule_num", "rule_source", "rule_dest", + "rules_service", "rule_time", + "rule_action", "rule_enabled", + "rules_desc", "rules_move" ); + my @cols_header; + my @cols_header_width; + my $cols = 0; + foreach my $cc (@cols_text) { + if ( $cc eq 'rule_time' && !$times ) { + $cols++; + next; + } + if ( $cc eq 'rules_desc' && !$config{'show_desc'} ) { + $cols++; + next; + } + if ( $cc eq 'rules_move' && $rules_cnt <= 1 ) { + $cols++; + next; + } + push(@cols_header, $text{$cc}); + push(@cols_header_width, "width='".$CW[$cols]."'"); + $cols++; + } + print &ui_columns_start(\@cols_header, "100", undef, \@cols_header_width); + + foreach my $r (@rules) { if ($r->{'sep'}){ $Row_Color="bgcolor=\"$C_separator\" "; } elsif (!$r->{'enabled'}){ @@ -57,93 +80,69 @@ if (@rules) { $Row_Color=""; } - # case('accept') {} - # case('allow') {} - # case('drop') {} - #case('reject') {} - #case('ignore') {} - - - - print "\n"; if ($r->{'sep'}) { # Actually a separator - just show it's description - print "\n"; + print &ui_columns_row([ &ui_link("edit_sep.cgi?idx=".$r->{'index'}, + $r->{'desc'}, undef, "style='font-weight:bold;'") ], + [ "colspan='".$cols."' ".$Row_Color ] ); } else { # Show full rule details + my @cols_row; + my @cols_row_tag; + my $link = &ui_link("edit_rule.cgi?idx=".$r->{'index'}, $r->{'num'}); + push(@cols_row, ( $edit ? &ui_checkbox("r", $r->{'index'}, " ").$link : $link ) ); + push(@cols_row, &group_names_link($r->{'source'}, 'rules') ); + push(@cols_row, &group_names_link($r->{'dest'}, 'rules', ( &allow_action($r) ? 'dest' : undef) ) ); + push(@cols_row, &protocol_names($r->{'service'},\@servs) ); + push(@cols_row, ($r->{'time'} eq '*' ? $text{'rule_anytime'} : $r->{'time'} ) ) if ($times); + push(@cols_row, $text{'rule_'.$r->{'action'}}." ".($r->{'log'} ? " $text{'rules_log'}" : "") ); + push(@cols_row, ($r->{'enabled'} ? $text{'yes'} : "$text{'no'}" ) ); + + if ($config{'show_desc'}) { + push(@cols_row, ($r->{'desc'} eq "*" ? "" : $r->{'desc'} ) ); + } + if ( $rules_cnt > 1 ) { + $link = ""; + if ($r eq $rules[0] || !$edit) { + $link = ""; + } else { + $link = &ui_link("up.cgi?idx=".$r->{'index'}, ""); + } + if ($r eq $rules[$#rules] || !$edit) { + $link .= ""; + } else { + $link .= &ui_link("down.cgi?idx=".$r->{'index'}, ""); + } + push(@cols_row, $link ) if ( $link ne "" ); + } - - print "\n"; - print "\n"; - print "\n"; - print "\n"; - if ($times) { - print "\n"; - } - print "\n"; - print "\n"; - if ($config{'show_desc'}) { - print "\n"; - } - else { - if ($r eq $rules[0] || !$edit) { - print "\n"; - } - else { - print "", - "\n"; - } - } - } - print "\n"; + foreach (@cols_row) { + push(@cols_row_tag, $Row_Color ); + } + print &ui_columns_row(\@cols_row, \@cols_row_tag); } - print "
$text{'rule_num'}$text{'rule_source'}$text{'rule_dest'}$text{'rules_service'}$text{'rule_time'}$text{'rule_action'}$text{'rule_enabled'}$text{'rules_desc'}$text{'rules_move'}
$r->{'desc'}"; - if ($edit) { - print "{'index'}> "; - } - print "$r->{'num'}", - &group_names_link($r->{'source'}, 'rules'), - "", - &group_names_link($r->{'dest'}, 'rules', - &allow_action($r) ? 'dest' : undef), - "",&protocol_names($r->{'service'},\@servs),"",$r->{'time'} eq '*' ? - $text{'rule_anytime'} : - $r->{'time'},"",$text{'rule_'.$r->{'action'}}, - $r->{'log'} ? " $text{'rules_log'}" : "","",$r->{'enabled'} ? $text{'yes'} : - "$text{'no'}", - "",$r->{'desc'} eq "*" ? "
" - : $r->{'desc'},"
\n"; - } - else { - print "", - "\n"; - } - if ($r eq $rules[$#rules] || !$edit) { - print "
\n"; + } + print &ui_columns_end(); } else { print "$text{'rules_none'}

\n"; } if ($edit) { - print "$text{'rules_add'}\n"; - print " " x 2; - print "$text{'rules_sadd'}\n"; + print &ui_links_row(\@links); print "

\n"; } if ($edit && @rules) { - print "\n"; - print "\n"; - + print &ui_submit($text{'rules_enable'}, "enable" ); + print &ui_submit($text{'rules_disable'}, "disable" ); print " \n"; - print "\n"; - print "\n"; + print &ui_submit($text{'rules_logon'}, "logon" ); + print &ui_submit($text{'rules_logoff'}, "logoff" ); print " \n"; - print "\n"; - print "

\n"; + print &ui_submit($text{'rules_delete'}, "delete" ); + print &ui_form_end(undef,undef,1); } -print "
\n"; +print &ui_hr(); &footer("", $text{'index_return'});