Handle hostnames with upper-case letters
[webmin.git] / qmailadmin / save_assign.cgi
1 #!/usr/local/bin/perl
2 # save_assign.cgi
3 # Save or delete a mail user assignment
4
5 require './qmail-lib.pl';
6 &ReadParse();
7 &error_setup($text{'ssave_err'});
8
9 @assigns = &list_assigns();
10 $a = $assigns[$in{'idx'}] if (defined($in{'idx'}));
11
12 if ($in{'delete'}) {
13         # delete some assign
14         $loga = $a;
15         &delete_assign($a);
16         }
17 else {
18         # saving or creating .. check inputs
19         if ($in{'mode'} eq '=') {
20                 $in{'address0'} =~ /^[^:\s]+$/ || &error($text{'ssave_eaddress'});
21                 }
22         else {
23                 $in{'address1'} =~ /^[^:\s]*$/ || &error($text{'ssave_eaddress'});
24                 }
25         scalar(getpwnam($in{'user'})) || &error($text{'ssave_euser'});
26         $in{'uid'} =~ /^\d+$/ || &error($text{'ssave_euid'});
27         $in{'gid'} =~ /^\d+$/ || &error($text{'ssave_egid'});
28         -d $in{'home'} || &error($text{'ssave_ehome'});
29         $newa{'mode'} = $in{'mode'};
30         $newa{'address'} = $in{'mode'} eq '=' ? $in{'address0'} : $in{'address1'};
31         $newa{'user'} = $in{'user'};
32         $newa{'uid'} = $in{'uid'};
33         $newa{'gid'} = $in{'gid'};
34         $newa{'home'} = $in{'home'};
35         if ($a) {
36                 # Just keep these as before
37                 $newa{'dash'} = $a->{'dash'};
38                 $newa{'preext'} = $a->{'preext'};
39                 }
40
41         if ($in{'new'}) { &create_assign(\%newa); }
42         else { &modify_assign($a, \%newa); }
43         $loga = \%newa;
44         }
45 &system_logged("$qmail_bin_dir/qmail-newu");
46 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
47             "assign", $loga->{'mode'}.$loga->{'address'}, $loga);
48 &redirect("list_assigns.cgi");
49