Files
webmin/itsecur-firewall/save_sep.cgi
2011-03-25 17:11:27 -07:00

53 lines
1.1 KiB
Perl
Executable File

#!/usr/bin/perl
# Create, update or delete a rules section separator
require './itsecur-lib.pl';
&can_edit_error("rules");
&ReadParse();
@rules = &list_rules();
if (!$in{'new'}) {
$rule = $rules[$in{'idx'}];
}
&lock_itsecur_files();
if ($in{'delete'}) {
# Just take out rule
splice(@rules, $in{'idx'}, 1);
}
else {
# Validate and store inputs
&error_setup($text{'sep_err'});
$in{'desc'} || &error($text{'sep_edesc'});
$rule->{'desc'} = $in{'desc'};
$rule->{'sep'} = 1;
if ($in{'new'}) {
# Add to list at chosen position
if ($in{'pos'} == -1) {
push(@rules, $rule);
}
else {
splice(@rules, $in{'pos'}, 0, $rule);
}
}
else {
# Maybe change position
foreach $r (grep { $_ ne $rule } @rules) {
if ($r->{'index'} == $in{'pos'}) {
push(@newrules, $rule);
}
push(@newrules, $r);
}
push(@newrules, $rule) if ($in{'pos'} == -1);
@rules = @newrules;
}
}
# Save rules list
&save_rules(@rules);
&unlock_itsecur_files();
&remote_webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "update",
"sep", $rule->{'index'}+1, $rule);
&redirect("list_rules.cgi");