mirror of
https://github.com/webmin/webmin.git
synced 2026-02-13 10:22:59 +00:00
78 lines
2.3 KiB
Perl
78 lines
2.3 KiB
Perl
|
|
use strict;
|
|
use warnings;
|
|
our (%text, $remote_user, %sessiondb, $module_name);
|
|
do 'acl-lib.pl';
|
|
|
|
# list_system_info(&data, &in)
|
|
# Show recent logins
|
|
sub list_system_info
|
|
{
|
|
my ($data, $in) = @_;
|
|
my @rv;
|
|
my %miniserv;
|
|
my $haslog = &foreign_available("webminlog");
|
|
&get_miniserv_config(\%miniserv);
|
|
&open_session_db(\%miniserv);
|
|
my @logins;
|
|
foreach my $k (keys %sessiondb) {
|
|
next if ($k =~ /^1111111/);
|
|
next if (!$sessiondb{$k});
|
|
my ($user, $ltime, $lip) = split(/\s+/, $sessiondb{$k});
|
|
next if ($user ne $remote_user && $user ne "!".$remote_user);
|
|
push(@logins, [ $user, $ltime, $lip, $k ]);
|
|
}
|
|
if (@logins) {
|
|
@logins = sort { $b->[1] <=> $a->[1] } @logins;
|
|
if (@logins > 5) {
|
|
@logins = @logins[0..4];
|
|
}
|
|
my $html = &ui_columns_start([ $text{'sessions_host'},
|
|
$text{'sessions_login'},
|
|
$text{'sessions_state'} ]);
|
|
my $open = 0;
|
|
foreach my $l (@logins) {
|
|
my $state;
|
|
my $candel = 0;
|
|
my $nbsp = " ";
|
|
if ($l->[0] =~ /^\!/) {
|
|
$state = $text{'sessions_out'};
|
|
}
|
|
elsif ($l->[3] eq $main::session_id ||
|
|
$l->[3] eq &hash_session_id($main::session_id)) {
|
|
$state = "<font color=green>$text{'sessions_this'}</a>";
|
|
}
|
|
else {
|
|
$state = $text{'sessions_in'};
|
|
$candel = 1;
|
|
if ($l->[2] ne $ENV{'REMOTE_HOST'}) {
|
|
$open++;
|
|
$state = "<font color=orange>$state</font>";
|
|
}
|
|
}
|
|
$main::theme_allow_make_date = 1;
|
|
$html .= &ui_columns_row([ $l->[2] .
|
|
($haslog ?
|
|
$nbsp . &ui_link("@{[&get_webprefix()]}/webminlog/search.cgi?uall=1&mall=1&tall=1&wall=1&fall=1&sid=$l->[3]",
|
|
$text{'sessions_lview'}) : undef) .
|
|
($candel ? (!$haslog ? $nbsp : undef) .
|
|
&ui_link("@{[&get_webprefix()]}/acl/delete_session.cgi?id=$l->[3]&redirect_ref=1",
|
|
$text{'sessions_kill'}) : undef) .
|
|
((!$haslog && !$candel ? $nbsp : undef) .
|
|
&ui_link("@{[&get_webprefix()]}/acl/list_sessions.cgi",
|
|
$text{'sessions_all'}, undef, "title=\"$text{'sessions_title'}\"")),
|
|
|
|
&make_date($l->[1]),
|
|
$state ]);
|
|
}
|
|
$html .= &ui_columns_end();
|
|
push(@rv, { 'type' => 'html',
|
|
'desc' => $text{'logins_title'},
|
|
'open' => $open,
|
|
'id' => $module_name.'_logins',
|
|
'priority' => -100,
|
|
'html' => $html });
|
|
}
|
|
return @rv;
|
|
}
|