Current File : //usr/share/webmin/qmailadmin/save_virt.cgi |
#!/usr/bin/perl
# save_virt.cgi
# Save or delete a new or existing virtual mapping
require './qmail-lib.pl';
&ReadParse();
&error_setup($text{'vsave_err'});
@virts = &list_virts();
$v = $virts[$in{'idx'}] if ($in{'idx'} ne '');
if ($in{'delete'}) {
# delete some virt
$logv = $v;
&delete_virt($v);
}
else {
# saving or creating .. check inputs
if ($in{'from_mode'} == 1) {
$in{'domain'} =~ /^[A-Za-z0-9\.\-]+$/ ||
&error(&text('vsave_edomain', $in{'domain'}));
$newv{'domain'} = $in{'domain'};
}
elsif ($in{'from_mode'} == 2) {
$in{'user'} =~ /^[^\@: ]+$/ ||
&error(&text('vsave_euser', $in{'user'}));
$in{'domain2'} =~ /^[A-Za-z0-9\.\-]+$/ ||
&error(&text('vsave_edomain', $in{'domain2'}));
$newv{'domain'} = $in{'domain2'};
$newv{'user'} = $in{'user'};
}
if ($in{'prepend_mode'} == 1) {
$in{'prepend'} =~ /^[^\@: ]+$/ ||
&error(&text('vsave_eprepend', $in{'prepend'}));
$newv{'prepend'} = $in{'prepend'};
}
elsif ($in{'prepend_mode'} == 0) {
$in{'from_mode'} || &error($text{'vsave_eboth'});
}
elsif ($in{'prepend_mode'} == 2) {
if ($in{'from_mode'} == 1) {
$newv{'prepend'} = $in{'domain'};
$newv{'prepend'} =~ s/\.(.*)$//;
}
elsif ($in{'from_mode'} == 2) {
$newv{'prepend'} = $in{'domain2'};
$newv{'prepend'} =~ s/\.(.*)$//;
}
else {
$newv{'prepend'} = 'catchall';
}
}
if ($in{'new'}) { &create_virt(\%newv); }
else { &modify_virt($v, \%newv); }
$logv = \%newv;
}
&restart_qmail();
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
"virt", $logv->{'user'} ? "$logv->{'user'}\@$logv->{'domain'}" :
$logv->{'domain'}, $logv);
&redirect("list_virts.cgi");