Handle hostnames with upper-case letters
[webmin.git] / acl / list_sessions.cgi
1 #!/usr/local/bin/perl
2 # list_sessions.cgi
3 # Display current login sessions
4
5 require './acl-lib.pl';
6 $access{'sessions'} || &error($text{'sessions_ecannot'});
7 &ui_print_header(undef, $text{'sessions_title'}, "");
8
9 &get_miniserv_config(\%miniserv);
10 &open_session_db(\%miniserv);
11 $time_now = time();
12
13 foreach $u (&list_users()) {
14         $hasuser{$u->{'name'}}++;
15         }
16
17 $haslog = &foreign_available("webminlog");
18
19 print "<b>$text{'sessions_desc'}</b><p>\n";
20 print &ui_columns_start([ $text{'sessions_id'},
21                           $text{'sessions_user'},
22                           $text{'sessions_host'},
23                           $haslog ? ( $text{'sessions_login'} ) : ( ),
24                           "" ], 100);
25 foreach $k (sort { @a=split(/\s+/, $sessiondb{$a}); @b=split(/\s+/, $sessiondb{$b}); $b[1] <=> $a[1] } keys %sessiondb) {
26         next if ($k =~ /^1111111/);
27         local ($user, $ltime, $lip) = split(/\s+/, $sessiondb{$k});
28         next if ($miniserv{'logouttime'} &&
29                  $time_now - $ltime > $miniserv{'logouttime'}*60);
30         local @cols;
31         if ($k eq $main::session_id ||
32             $k eq &hash_session_id($main::session_id)) {
33                 # Cannot self-terminate
34                 push(@cols, "<b>$k</b>");
35                 }
36         else {
37                 push(@cols, "<a href='delete_session.cgi?id=$k'>$k</a>");
38                 }
39         if ($hasuser{$user}) {
40                 push(@cols, "<a href='edit_user.cgi?user=$user'>$user</a>");
41                 }
42         elsif ($miniserv{'unixauth'}) {
43                 push(@cols, "$user (<a href='edit_user.cgi?user=$miniserv{'unixauth'}'>$miniserv{'unixauth'}</a>)");
44                 }
45         else {
46                 push(@cols, $user);
47                 }
48         push(@cols, $lip);
49         push(@cols, &make_date($ltime));
50         if ($haslog) {
51                 push(@cols, "<a href='../webminlog/search.cgi?uall=1&mall=1&tall=1&wall=1&fall=1&sid=$k'>$text{'sessions_lview'}</a>");
52                 }
53         print &ui_columns_row(\@cols);
54         }
55 print &ui_columns_end();
56
57 &ui_print_footer("", $text{'index_return'});
58