mirror of
https://github.com/webmin/webmin.git
synced 2025-07-23 00:30:33 +00:00
86 lines
2.3 KiB
Perl
86 lines
2.3 KiB
Perl
|
|
use strict;
|
|
use warnings;
|
|
no warnings 'redefine';
|
|
no warnings 'uninitialized';
|
|
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;
|
|
&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'},
|
|
$text{'sessions_action'} ]);
|
|
my $open = 0;
|
|
foreach my $l (@logins) {
|
|
my $state;
|
|
my $candel = 0;
|
|
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>";
|
|
}
|
|
}
|
|
my @links;
|
|
if (&foreign_available("webminlog")) {
|
|
push(@links,
|
|
&ui_link("@{[&get_webprefix()]}/webminlog/search.cgi?uall=1&mall=1&tall=1&wall=1&fall=1&sid=$l->[3]",
|
|
$text{'sessions_lview'}))
|
|
}
|
|
if ($candel) {
|
|
push(@links,
|
|
&ui_link("@{[&get_webprefix()]}/acl/delete_session.cgi?id=$l->[3]&redirect_ref=1",
|
|
$text{'sessions_kill'}))
|
|
}
|
|
$html .= &ui_columns_row([
|
|
$l->[2],
|
|
&make_date($l->[1]),
|
|
$state,
|
|
&ui_links_row(\@links) ]);
|
|
}
|
|
$html .= &ui_columns_end();
|
|
if (&foreign_available("acl")) {
|
|
$html .= &ui_link("@{[&get_webprefix()]}/acl/list_sessions.cgi",
|
|
$text{'sessions_all'}, undef,
|
|
"title=\"$text{'sessions_title'}\"");
|
|
}
|
|
push(@rv, { 'type' => 'html',
|
|
'desc' => $text{'logins_title'},
|
|
'open' => $open,
|
|
'id' => $module_name.'_logins',
|
|
'priority' => -100,
|
|
'html' => $html });
|
|
}
|
|
return @rv;
|
|
}
|