#!/usr/bin/perl
# edit_rule.cgi
# Show a form for editing or creating a rule
require './itsecur-lib.pl';
&can_use_error("rules");
&ReadParse();
@rules = &list_rules();
if ($in{'new'}) {
&header(defined($in{'insert'}) ? $text{'rule_title3'}
: $text{'rule_title1'}, "",
undef, undef, undef, undef, &apply_button());
$rule = { 'enabled' => 1,
'action' => &default_action(),
'service' => '',
'source' => '',
'dest' => '',
'time' => '*',
'index' => scalar(@rules) };
}
else {
&header($text{'rule_title2'}, "",
undef, undef, undef, undef, &apply_button());
$rule = $rules[$in{'idx'}];
}
print &ui_hr();
print &ui_form_start("save_rule.cgi", "post");
print &ui_hidden("new", $in{'new'});
print &ui_hidden("idx", $in{'idx'});
print &ui_hidden("insert", $in{'insert'});
print &ui_table_start($text{'rule_header'}, undef, 2);
# Show comment
print &ui_table_row($text{'rule_desc'},
&ui_textbox("desc", ($rule->{'desc'} eq "*" ? "" : $rule->{'desc'}), 60),undef,
["valign=middle","valign=middle"]);
# Show source and destination
foreach $s ('source', 'dest') {
$not = ($rule->{$s} =~ s/^!//g);
$sm = $rule->{$s} eq '*' ? 0 :
$rule->{$s} =~ /^\@/ ? 2 :
$rule->{$s} =~ /^\%/ ? 3 : 1;
# Any address options
print &ui_table_row($text{'rule_'.$s},
&ui_oneradio(${s}."_mode", 0, $text{'rule_anywhere'}, ($sm == 0 ? 1 : 0 ))."
".
# Specific host option
&ui_oneradio(${s}."_mode", 1, $text{'rule_host'}, ($sm == 1 ? 1 : 0))." ".
&ui_textbox(${s}."_host", ($sm == 1 ? $rule->{$s} : ""), 30)." ".$text{'rule_named'}." ".
&ui_textbox(${s}."_name", undef, 15)."
".
&ui_checkbox(${s}."_resolv", 1, $text{'rule_resolv'},undef,"style=margin-left:15px;"), undef, ["valign=top","valign=middle"] );
# Host group option
local $gv;
if ($rule->{$s} =~ /^\@(.*)$/) {
$gv = $rule->{$s};
$gv =~ s/(^|\s)@/$1/g;
}
$gi = &group_input("${s}_group", $gv, 0, 1);
if ($gi || $sm == 2) {
print &ui_table_row(" ",
"
| ".&ui_oneradio(${s}."_mode", 2, $text{'rule_group'}, ($sm == 2 ? 1 : 0))." | ". $gi." |
"; if ($in{'new'}) { print &ui_submit($text{'create'}); } else { print &ui_submit($text{'save'}); print &ui_submit($text{'delete'}, "delete"); } print &ui_form_end(undef,undef,1); &can_edit_disable("rules"); print &ui_hr(); &footer("list_rules.cgi", $text{'rules_return'});