mirror of
https://github.com/webmin/webmin.git
synced 2026-02-08 08:19:57 +00:00
42 lines
1.2 KiB
Perl
Executable File
42 lines
1.2 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_user.cgi
|
|
# Save, create or delete a proxy user
|
|
|
|
require './squid-lib.pl';
|
|
$access{'proxyauth'} || &error($text{'eauth_ecannot'});
|
|
&ReadParse();
|
|
$conf = &get_config();
|
|
$file = &find_config("proxy_auth", $conf)->{'values'}->[0];
|
|
&lock_file($file);
|
|
@users = &list_auth_users($file);
|
|
|
|
$user = $users[$in{'index'}];
|
|
if ($in{'delete'}) {
|
|
&replace_file_line($file, $user->{'line'});
|
|
}
|
|
else {
|
|
$whatfailed = $text{'suser_ftsu'};
|
|
$in{'user'} =~ /^[^:\s]+$/ || &error($text{'suser_emsg1'});
|
|
$salt = substr(time(), -2);
|
|
local ($same) = grep { $_->{'user'} eq $in{'user'} } @users;
|
|
if ($in{'new'}) {
|
|
!$same || &error($text{'suser_etaken'});
|
|
&open_tempfile(FILE, ">>$file");
|
|
&print_tempfile(FILE, $in{'user'},":",&unix_crypt($in{'pass'}, $salt),"\n");
|
|
&close_tempfile(FILE);
|
|
}
|
|
else {
|
|
!$same || $same->{'user'} eq $user->{'user'} ||
|
|
&error($text{'suser_etaken'});
|
|
$pass = $in{'pass_def'} ? $user->{'pass'}
|
|
: &unix_crypt($in{'pass'}, $salt);
|
|
&replace_file_line($file, $user->{'line'},
|
|
"$in{'user'}:$pass\n");
|
|
}
|
|
}
|
|
&unlock_file($file);
|
|
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
|
|
'user', $in{'user'} ? $in{'user'} : $user->{'user'});
|
|
&redirect("edit_auth.cgi");
|
|
|