Handle hostnames with upper-case letters
[webmin.git] / apache / save_authuser.cgi
1 #!/usr/local/bin/perl
2 # save_authuser.cgi
3 # Save, create or delete a user
4
5 require './apache-lib.pl';
6 require './auth-lib.pl';
7
8 &ReadParse();
9 &allowed_auth_file($in{'file'}) ||
10         &error(&text('authu_ecannot', $in{'file'}));
11 if ($in{'delete'}) {
12         # Deleting a user
13         &delete_authuser($in{'file'}, $in{'olduser'});
14         }
15 else {
16         # Creating or updating
17         &error_setup($text{'authu_err'});
18         $in{'user'} =~ /\S/ || &error($text{'authu_euser'});
19         $in{'user'} !~ /:/ || &error($text{'authu_euser2'});
20
21         $oldu = &get_authuser($in{'file'}, $in{'olduser'});
22         $uinfo{'user'} = $in{'user'};
23         if ($in{'mode'}) {
24                 $uinfo{'pass'} = $in{'enc'};
25                 }
26         else {
27                 $salt = chr(int(rand(26))+65).chr(int(rand(26))+65);
28                 $uinfo{'pass'} = &unix_crypt($in{'pass'}, $salt);
29                 }
30
31         if (defined($in{'olduser'})) {
32                 # updating an old user
33                 if ($in{'olduser'} ne $in{'user'} &&
34                     &get_authuser($in{'file'}, $in{'user'})) {
35                         &error(&text('authu_edup', $in{'user'}));
36                         }
37                 &save_authuser($in{'file'}, $in{'olduser'}, \%uinfo);
38                 }
39         else {
40                 # creating a new one
41                 if (&get_authuser($in{'file'}, $in{'user'})) {
42                         &error(&text('authu_edup', $in{'user'}));
43                         }
44                 &create_authuser($in{'file'}, \%uinfo);
45                 }
46         }
47 &redirect($in{'url'});
48