Handle hostnames with upper-case letters
[webmin.git] / qmailadmin / save_virt.cgi.bak
1 #!/usr/local/bin/perl
2 # save_virt.cgi
3 # Save or delete a new or existing virtual mapping
4
5 require './qmail-lib.pl';
6 &ReadParse();
7 &error_setup($text{'vsave_err'});
8
9 @virts = &list_virts();
10 $v = $virts[$in{'idx'}] if ($in{'idx'} ne '');
11
12 if ($in{'delete'}) {
13         # delete some virt
14         $logv = $v;
15         &delete_virt($v);
16         }
17 else {
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'};
23                 }
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'};
31                 }
32         if ($in{'prepend_mode'} == 1) {
33                 $in{'prepend'} =~ /^[^\@: ]+$/ ||
34                         &error(&text('vsave_eprepend', $in{'prepend'}));
35                 $newv{'prepend'} = $in{'prepend'};
36                 }
37         elsif ($in{'prepend_mode'} == 0) {
38                 $in{'from_mode'} || &error($text{'vsave_eboth'});
39                 }
40         elsif ($in{'prepend_mode'} == 2) {
41                 if ($in{'from_mode'} == 1) {
42                         $newv{'prepend'} = $in{'domain'};
43                         $newv{'prepend'} =~ s/\.(.*)$//;
44                         }
45                 elsif ($in{'from_mode'} == 2) {
46                         $newv{'prepend'} = $in{'domain2'};
47                         $newv{'prepend'} =~ s/\.(.*)$//;
48                         }
49                 else {
50                         $newv{'prepend'} = 'catchall';
51                         }
52                 }
53         if ($in{'new'}) { &create_virt(\%newv); }
54         else { &modify_virt($v, \%newv); }
55         $logv = \%newv;
56         }
57 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
58             "virt", $logv->{'user'} ? "$logv->{'user'}\@$logv->{'domain'}" :
59                     $logv->{'domain'}, $logv);
60 &redirect("list_virts.cgi");
61