Handle hostnames with upper-case letters
[webmin.git] / squid / save_user.cgi
1 #!/usr/local/bin/perl
2 # save_user.cgi
3 # Save, create or delete a proxy user
4
5 require './squid-lib.pl';
6 $access{'proxyauth'} || &error($text{'eauth_ecannot'});
7 &ReadParse();
8 $conf = &get_config();
9 $file = &find_config("proxy_auth", $conf)->{'values'}->[0];
10 &lock_file($file);
11 @users = &list_auth_users($file);
12
13 $user = $users[$in{'index'}];
14 if ($in{'delete'}) {
15         &replace_file_line($file, $user->{'line'});
16         }
17 else {
18         $whatfailed = $text{'suser_ftsu'};
19         $in{'user'} =~ /^[^:\s]+$/ || &error($text{'suser_emsg1'});
20         $salt = substr(time(), -2);
21         local ($same) = grep { $_->{'user'} eq $in{'user'} } @users;
22         if ($in{'new'}) {
23                 !$same || &error($text{'suser_etaken'});
24                 &open_tempfile(FILE, ">>$file");
25                 &print_tempfile(FILE, $in{'user'},":",&unix_crypt($in{'pass'}, $salt),"\n");
26                 &close_tempfile(FILE);
27                 }
28         else {
29                 !$same || $same->{'user'} eq $user->{'user'} ||
30                          &error($text{'suser_etaken'});
31                 $pass = $in{'pass_def'} ? $user->{'pass'}
32                                         : &unix_crypt($in{'pass'}, $salt);
33                 &replace_file_line($file, $user->{'line'},
34                                    "$in{'user'}:$pass\n");
35                 }
36         }
37 &unlock_file($file);
38 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
39             'user', $in{'user'} ? $in{'user'} : $user->{'user'});
40 &redirect("edit_auth.cgi");
41