Fix to bring back support for limit in last command

https://forum.virtualmin.com/t/is-this-process-normal-or-should-i-worry/128835/10?u=ilia
This commit is contained in:
Ilia Ross
2024-10-20 15:59:41 +03:00
parent c1196f744a
commit 21e110cc8a
4 changed files with 19 additions and 14 deletions

View File

@@ -17,12 +17,13 @@ sub groupfiles_type
return 0;
}
# open_last_command(handle, user)
# open_last_command(handle, user, [max])
sub open_last_command
{
local ($fh, $user) = @_;
local $quser = quotemeta($user);
open($fh, "(last -w $quser || last $quser) |");
my ($fh, $user, $max) = @_;
my $quser = quotemeta($user);
$max = " -n $max" if ($max);
open($fh, "(last -w$max $quser || last$max $quser) |");
}
# read_last_line(handle)

View File

@@ -17,12 +17,13 @@ sub groupfiles_type
return &password_file($config{'gshadow_file'}) ? 2 : 0;
}
# open_last_command(handle, user)
# open_last_command(handle, user, [max])
sub open_last_command
{
local ($fh, $user) = @_;
local $quser = quotemeta($user);
open($fh, "(last -F -w $quser || last -w $quser) |");
my ($fh, $user, $max) = @_;
my $quser = quotemeta($user);
$max = " -n $max" if ($max);
open($fh, "(last -F -w$max $quser || last -w$max $quser) |");
}
# read_last_line(handle)

View File

@@ -54,11 +54,12 @@ else {
}
}
# open_last_command(handle, user)
# open_last_command(handle, user, [max])
sub open_last_command
{
local ($fh, $user) = @_;
open($fh, "last $user |");
my ($fh, $user, $max) = @_;
$max = " -n $max" if ($max);
open($fh, "last$max $user |");
}
# read_last_line(handle)

View File

@@ -2552,11 +2552,13 @@ Returns a list of array references, each containing the details of a login.
=cut
sub list_last_logins
{
local @rv;
&open_last_command(LAST, $_[0]);
my ($user, $max) = @_;
my @rv;
undef($max) if (defined($max) && $max <= 0); # sanity check
&open_last_command(LAST, $user, $max);
while(@last = &read_last_line(LAST)) {
push(@rv, [ @last ]);
if ($_[1] && scalar(@rv) >= $_[1]) {
if ($max && scalar(@rv) >= $max) {
last; # reached max
}
}