📄 index.cgi
字号:
#!/usr/local/bin/perlrequire './user-lib.pl';&header($text{'index_title'}, "", "intro", 1, 1);$formno = 0;%access = &get_module_acl();# List all local users@ulist = @allulist = &list_users();if ($access{'uedit_mode'} == 1) { @ulist = (); }elsif ($access{'uedit_mode'} == 2) { map { $canu{$_}++ } split(/\s+/, $access{'uedit'}); @ulist = grep { $canu{$_->{'user'}} } @ulist; }elsif ($access{'uedit_mode'} == 3) { map { $cannotu{$_}++ } split(/\s+/, $access{'uedit'}); @ulist = grep { !$cannotu{$_->{'user'}} } @ulist; }elsif ($access{'uedit_mode'} == 4) { @ulist = grep { (!$access{'uedit'} || $_->{'uid'} >= $access{'uedit'}) && (!$access{'uedit2'} || $_->{'uid'} <= $access{'uedit2'}) } @ulist; }elsif ($access{'uedit_mode'} == 5) { @ulist = grep { $_->{'gid'} == $access{'uedit'} } @ulist; }if (@ulist > $config{'display_max'}) { # Display user search form print "<hr>\n"; print "<b>$text{'index_toomany'}</b><br>\n"; print "<form action=search_user.cgi>\n"; print &hlink("<b>$text{'index_find'}</b>","findform"), " <select name=field>\n"; print "<option value=user checked>$text{'user'}\n"; print "<option value=real>$text{'real'}\n"; print "<option value=shell>$text{'shell'}\n"; print "<option value=home>$text{'home'}\n"; print "<option value=uid>$text{'uid'}\n"; print "</select> <select name=match>\n"; print "<option value=0 checked>$text{'index_equals'}\n"; print "<option value=1>$text{'index_matches'}\n"; print "<option value=2>$text{'index_nequals'}\n"; print "<option value=3>$text{'index_nmatches'}\n"; print "</select> <input name=what size=15> \n"; print "<input type=submit value=$text{'find'}></form>\n"; $formno++; }elsif (@ulist) { # Display a table of all users print "<hr>\n"; if ($config{'sort_mode'}) { @ulist = sort { $a->{'user'} cmp $b->{'user'} } @ulist; } if ($config{'display_mode'}) { # Show names, real names, home dirs and shells print "<h3>$text{'index_users'}</h3>\n"; print "<table width=100% border>\n"; print "<tr $tb> <td><b>$text{'user'}</b></td> ", "<td><b>$text{'uid'}</b></td> ", "<td><b>$text{'real'}</b></td> ", "<td><b>$text{'home'}</b></td> ", "<td><b>$text{'shell'}</b></td> </tr>\n"; foreach $u (@ulist) { print "<tr $cb> <td><a href='edit_user.cgi?", "num=$u->{'num'}'>$u->{'user'}</a></td> ", "<td>$u->{'uid'}</td> ", "<td>",&ifblank($u->{'real'}),"</td> ", "<td>",&ifblank($u->{'home'}),"</td> ", "<td>",&ifblank($u->{'shell'}),"</td> </tr>\n"; } print "</table>\n"; } else { # Just show names print "<table width=100% border>\n"; print "<tr $tb> <td><b>$text{'index_users'}</b></td> </tr>\n"; print "<tr $cb> <td><table width=100%>\n"; for($i=0; $i<@ulist; $i++) { if ($i%4 == 0) { print "<tr>\n"; } print "<td><a href=\"edit_user.cgi?", "num=$ulist[$i]->{'num'}\">", "$ulist[$i]->{'user'}</a></td>\n"; if ($i%4 == 3) { print "</tr>\n"; } } print "</table></td> </tr></table>\n"; } }elsif ($access{'ucreate'}) { print "<hr>\n"; print "<b>$text{'index_notusers'}</b>. <p>\n"; }if ($access{'ucreate'}) { local $cancreate; if ($access{'hiuid'} && !$access{'umultiple'}) { foreach $u (@allulist) { $useduid{$u->{'uid'}}++; } for($i=int($access{'lowuid'}); $i<=$access{'hiuid'}; $i++) { if (!$useduid{$i}) { $cancreate = 1; last; } } } else { $cancreate = 1; } if ($cancreate) { print "<a href=\"edit_user.cgi\">$text{'index_createuser'}</a> <p>\n"; } else { print "$text{'index_nomoreusers'}<p>\n"; } }# List all local groups@glist = @allglist = &list_groups();if ($access{'gedit_mode'} == 1) { @glist = (); }elsif ($access{'gedit_mode'} == 2) { map { $cang{$_}++ } split(/\s+/, $access{'gedit'}); @glist = grep { $cang{$_->{'group'}} } @glist; }elsif ($access{'gedit_mode'} == 3) { map { $cannotg{$_}++ } split(/\s+/, $access{'gedit'}); @glist = grep { !$cannotg{$_->{'group'}} } @glist; }elsif ($access{'gedit_mode'} == 4) { @glist = grep { (!$access{'gedit'} || $_->{'gid'} >= $access{'gedit'}) && (!$access{'gedit2'} || $_->{'gid'} <= $access{'gedit2'}) } @glist; }if (@glist) { print "<hr>\n"; if ($config{'sort_mode'}) { @glist = sort { $a->{'group'} cmp $b->{'group'} } @glist; } if ($config{'display_mode'}) { # Display group name, ID and members print "<h3>$text{'index_groups'}</h3>\n"; print "<table border width=100%>\n"; print "<tr $tb> <td><b>$text{'gedit_group'}</b></td> ", "<td><b>$text{'gedit_gid'}</b></td> ", "<td><b>$text{'gedit_members'}</b></td> </tr>\n"; foreach $g (@glist) { print "<tr $cb> <td><a href='edit_group.cgi?", "num=$g->{'num'}'>$g->{'group'}</a></td> ", "<td>$g->{'gid'}</td> ", "<td>",&ifblank($g->{'members'}),"</td> </tr>\n"; } print "</table>\n"; } else { # Just display group names print "<table width=100% border>\n"; print "<tr $tb> <td><b>$text{'index_groups'}</b></td> </tr>\n"; print "<tr $cb> <td><table width=100%>\n"; for($i=0; $i<@glist; $i++) { if ($i%4 == 0) { print "<tr>\n"; } print "<td><a href=\"edit_group.cgi?", "num=$glist[$i]->{'num'}\">", "$glist[$i]->{'group'}</a></td>\n"; if ($i%4 == 3) { print "</tr>\n"; } } print "</table></td> </tr></table>\n"; } }elsif ($access{'gcreate'} == 1) { print "<hr>\n"; print "<b>$text{'index_notgroups'}</b>. <p>\n"; }if ($access{'gcreate'} == 1) { local $cancreate; if ($access{'higid'} && !$access{'gmultiple'}) { foreach $g (@allglist) { $usedgid{$g->{'gid'}}++; } for($i=int($access{'lowgid'}); $i<=$access{'higid'}; $i++) { if (!$usedgid{$i}) { $cancreate = 1; last; } } } else { $cancreate = 1; } if ($cancreate) { print "<a href=\"edit_group.cgi\">$text{'index_creategroup'}</a> <p>\n"; } else { print "$text{'index_nomoregroups'}<p>\n"; } }if ($access{'logins'}) { print "<hr>\n"; print "<form action=list_logins.cgi>\n"; print "<input type=submit value=\"$text{'index_logins'}\">\n"; print "<input name=username size=8> ", &user_chooser_button("username",0,$formno),"</form>\n"; }print "<hr>\n";&footer("/", $text{'index'}); sub ifblank{return $_[0] ? $_[0] : " ";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -