mirror of
https://github.com/webmin/webmin.git
synced 2025-08-17 19:06:28 +00:00
63 lines
1.6 KiB
Perl
Executable File
63 lines
1.6 KiB
Perl
Executable File
#!/usr/local/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");
|
|
|