Handle hostnames with upper-case letters
[webmin.git] / useradmin / search_user.cgi
1 #!/usr/local/bin/perl
2 # search_user.cgi
3 # Search the password file, and display a list of results
4
5 require './user-lib.pl';
6 &ReadParse();
7
8 # Build fields to search
9 $m = $in{'match'};
10 $w = lc($in{'what'});
11 @fields = ( );
12 if ($in{'field'} eq "group") {
13         @fields = ( 'gid' );
14         $w = &my_getgrnam($w) || $w;
15         }
16 elsif ($in{'field'} eq 'userreal') {
17         @fields = ( 'user', 'real' );
18         }
19 else {
20         @fields = ( $in{'field'} );
21         }
22
23 # Search users for matches
24 @ulist = &list_users();
25 for($i=0; $i<@ulist; $i++) {
26         $u = $ulist[$i];
27         FIELD: foreach my $field (@fields) {
28                 $f = lc($u->{$field});
29                 if ($m == 0 && $f eq $w ||
30                     $m == 1 && eval { $f =~ /$w/i } ||
31                     $m == 4 && index($f, $w) >= 0 ||
32                     $m == 2 && $f ne $w ||
33                     $m == 3 && eval { $f !~ /$w/i } ||
34                     $m == 5 && index($f, $w) < 0 ||
35                     $m == 6 && $f < $w ||
36                     $m == 7 && $f > $w) {
37                         if (&can_edit_user(\%access, $u)) {
38                                 push(@match, $u);
39                                 last FIELD;
40                                 }
41                         }
42                 }
43         }
44 if (@match == 1) {
45         &redirect("edit_user.cgi?user=".$match[0]->{'user'});
46         }
47 else {
48         &ui_print_header(undef, $text{'search_title'}, "");
49         if (@match == 0) {
50                 print "<b>$text{'search_notfound'}</b>. <p>\n";
51                 }
52         else {
53                 print "<b>",&text('search_found', scalar(@match)),"</b><br>\n";
54                 @match = &sort_users(\@match, $config{'sort_mode'});
55                 &users_table(\@match);
56                 }
57         &ui_print_footer("", $text{'index_return'});
58         }
59