3 # Save or delete a new or existing virtual mapping
5 require './qmail-lib.pl';
7 &error_setup($text{'vsave_err'});
9 @virts = &list_virts();
10 $v = $virts[$in{'idx'}] if ($in{'idx'} ne '');
18 # saving or creating .. check inputs
19 if ($in{'from_mode'} == 1) {
20 $in{'domain'} =~ /^[A-Za-z0-9\.\-]+$/ ||
21 &error(&text('vsave_edomain', $in{'domain'}));
22 $newv{'domain'} = $in{'domain'};
24 elsif ($in{'from_mode'} == 2) {
25 $in{'user'} =~ /^[^\@: ]+$/ ||
26 &error(&text('vsave_euser', $in{'user'}));
27 $in{'domain2'} =~ /^[A-Za-z0-9\.\-]+$/ ||
28 &error(&text('vsave_edomain', $in{'domain2'}));
29 $newv{'domain'} = $in{'domain2'};
30 $newv{'user'} = $in{'user'};
32 if ($in{'prepend_mode'} == 1) {
33 $in{'prepend'} =~ /^[^\@: ]+$/ ||
34 &error(&text('vsave_eprepend', $in{'prepend'}));
35 $newv{'prepend'} = $in{'prepend'};
37 elsif ($in{'prepend_mode'} == 0) {
38 $in{'from_mode'} || &error($text{'vsave_eboth'});
40 elsif ($in{'prepend_mode'} == 2) {
41 if ($in{'from_mode'} == 1) {
42 $newv{'prepend'} = $in{'domain'};
43 $newv{'prepend'} =~ s/\.(.*)$//;
45 elsif ($in{'from_mode'} == 2) {
46 $newv{'prepend'} = $in{'domain2'};
47 $newv{'prepend'} =~ s/\.(.*)$//;
50 $newv{'prepend'} = 'catchall';
53 if ($in{'new'}) { &create_virt(\%newv); }
54 else { &modify_virt($v, \%newv); }
58 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
59 "virt", $logv->{'user'} ? "$logv->{'user'}\@$logv->{'domain'}" :
60 $logv->{'domain'}, $logv);
61 &redirect("list_virts.cgi");