#!/usr/local/bin/perl # Display a list of users whose passwords can be changed require './passwd-lib.pl'; if (!$config{'passwd_cmd'} && !&foreign_check("useradmin")) { &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1); print "
$text{'index_euseradmin'}
\n";
&ui_print_footer("/", $text{'index'});
exit;
}
if ($access{'mode'} == 1) {
if ($access{'users'} =~ /^\S+$/) {
# Just one user - go to him
&redirect("edit_passwd.cgi?user=$access{'users'}&one=1");
exit;
}
map { $ucan{$_}++ } split(/\s+/, $access{'users'});
}
elsif ($access{'mode'} == 2) {
map { $ucannot{$_}++ } split(/\s+/, $access{'users'});
}
elsif ($access{'mode'} == 3) {
# Just this user - go to him
&redirect("edit_passwd.cgi?user=$remote_user&one=1");
exit;
}
elsif ($access{'mode'} == 5) {
%notusers = map { $_, 1 } split(/\s+/, $access{'notusers'});
foreach $g (split(/\s+/, $access{'users'})) {
@g = getgrnam($g);
$gcan{$g[2]}++;
if ($access{'sec'}) {
foreach $m (split(/,/, $g[3])) {
$insec{$m}++;
}
}
}
}
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
# Show all unix users who can be edited
setpwent();
while(local @u = getpwent()) {
if ($access{'mode'} == 0 ||
$access{'mode'} == 1 && $ucan{$u[0]} ||
$access{'mode'} == 2 && !$ucannot{$u[0]} ||
$access{'mode'} == 5 && ($gcan{$u[3]} ||
$access{'sec'} && $insec{$u[0]}) &&
!$notusers{$u[0]} ||
$access{'mode'} == 6 && $u[0] =~ /$access{'users'}/ ||
$access{'mode'} == 4 &&
(!$access{'low'} || $u[2] >= $access{'low'}) &&
(!$access{'high'} || $u[2] <= $access{'high'})) {
push(@ulist, \@u);
if ($config{'max_users'} && @ulist > $config{'max_users'}) {
# Reached limit already .. no need to go on
last;
}
}
}
endpwent() if ($gconfig{'os_type'} ne 'hpux');
if ($config{'sort_mode'}) {
@ulist = sort { lc($a->[0]) cmp lc($b->[0]) } @ulist;
}
if ($config{'max_users'} && @ulist > $config{'max_users'}) {
# Show as form for entering a username
print "$text{'index_toomany'}
\n";
print "
| $text{'index_header'} | ||
|
\n"; } else { # No users available print "$text{'index_none'}
\n"; } &ui_print_footer("/", $text{'index'});