Files
webmin/zones/save_rctl.cgi
2007-06-01 01:00:34 +00:00

55 lines
1.4 KiB
Perl
Executable File

#!/usr/local/bin/perl
# Update, add or delete a resource control
require './zones-lib.pl';
do 'forms-lib.pl';
&ReadParse();
$zinfo = &get_zone($in{'zone'});
$zinfo || &error($text{'edit_egone'});
if (!$in{'new'}) {
# Find the rctl object
($rctl) = grep { $_->{'name'} eq $in{'old'} } @{$zinfo->{'rctl'}};
$rctl || &error($text{'rctl_egone'});
}
else {
$rctl = { 'keytype' => 'rctl' };
}
if ($in{'delete'}) {
# Just remove this resource control
&delete_zone_object($zinfo, $rctl);
}
else {
# Validate inputs
$form = &get_rctl_form(\%in, $zinfo, $rctl);
$table = $form->get_section(1);
$form->validate_redirect("edit_rctl.cgi");
$rctl->{'name'} = $form->get_value("name");
@values = ( );
for($i=0; $i<$table->get_rowcount(); $i++) {
local ($priv, $limit, $action) = $table->get_values($i);
if ($priv) {
push(@values,
"(priv=$priv,limit=$limit,action=$action)");
}
}
@values || &error($text{'rctl_evalues'});
$rctl->{'value'} = join("\0", @values);
&find_clash($zinfo, $rctl) &&
$form->validate_redirect("edit_fs.cgi",
[ [ "name", $text{'rctl_eclash'} ] ]);
# Save the rctl
if ($in{'new'}) {
&create_zone_object($zinfo, $rctl);
}
else {
&modify_zone_object($zinfo, $rctl);
}
}
&webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
"rctl", $in{'old'} || $rctl->{'name'}, $rctl);
&redirect("edit_zone.cgi?zone=$in{'zone'}");