version 1.11, 2004/09/22 15:00:04
|
version 1.16, 2007/10/02 01:36:31
|
Line 30 $|=1;
|
Line 30 $|=1;
|
use strict; |
use strict; |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
|
use LONCAPA; |
use HTTP::Headers; |
use HTTP::Headers; |
use IO::File; |
use GDBM_File; |
|
|
|
|
my %usercount; |
my %usercount; |
Line 48 sub analyze_time {
|
Line 48 sub analyze_time {
|
my ($since)=@_; |
my ($since)=@_; |
my $color="#000000"; |
my $color="#000000"; |
my $userclass=$actl[0]; |
my $userclass=$actl[0]; |
if ($since>300) { $color="#222222"; } |
if ($since>300) { $color="#222222"; $userclass=$actl[1]; } |
if ($since>600) { $color="#444444"; } |
if ($since>600) { $color="#444444"; } |
if ($since>1800) { $color="#666666"; $userclass=$actl[1]; } |
if ($since>1800) { $color="#666666"; } |
if ($since>7200) { $color="#888888"; } |
if ($since>7200) { $color="#888888"; } |
if ($since>21600) { $color="#AAAAAA"; $userclass=$actl[2]; } |
if ($since>21600) { $color="#AAAAAA"; $userclass=$actl[2]; } |
return ($color,$userclass); |
return ($color,$userclass); |
Line 78 sub main {
|
Line 78 sub main {
|
|
|
opendir(DIR,$$perlvar{'lonIDsDir'}); |
opendir(DIR,$$perlvar{'lonIDsDir'}); |
my @allfiles=(sort(readdir(DIR))); |
my @allfiles=(sort(readdir(DIR))); |
|
my %users; |
foreach my $filename (@allfiles) { |
foreach my $filename (@allfiles) { |
if ($filename=~/^\./) { next; } |
if ($filename=~/^\./) { next; } |
|
if ($filename=~/^publicuser_/) { next; } |
my ($dev,$ino,$mode,$nlink, |
my ($dev,$ino,$mode,$nlink, |
$uid,$gid,$rdev,$size, |
$uid,$gid,$rdev,$size, |
$atime,$mtime,$ctime, |
$atime,$mtime,$ctime, |
Line 87 sub main {
|
Line 89 sub main {
|
my $now=time; |
my $now=time; |
my $since=$now-$mtime; |
my $since=$now-$mtime; |
my $sinceacc=$now-$atime; |
my $sinceacc=$now-$atime; |
unless ($oneline || $justsummary) { print ("\n\n<hr />"); } |
#unless ($oneline || $justsummary) { print ("\n\n<hr />"); } |
my %userinfo; |
my %userinfo; |
($userinfo{'user.name'},undef,$userinfo{'user.domain'})= |
($userinfo{'user.name'},undef,$userinfo{'user.domain'})= |
split('_',$filename); |
split('_',$filename); |
Line 96 sub main {
|
Line 98 sub main {
|
&add_count('Domain',$userinfo{'user.domain'},$userclass); |
&add_count('Domain',$userinfo{'user.domain'},$userclass); |
|
|
unless ($oneline) { |
unless ($oneline) { |
my $fh=IO::File->new($$perlvar{'lonIDsDir'}.'/'.$filename); |
if (!tie(%userinfo,'GDBM_File', |
while (my $line=<$fh>) { |
$$perlvar{'lonIDsDir'}.'/'.$filename, |
chomp($line); |
&GDBM_READER(),0640)) { |
my ($name,$value)=split(/\=/,$line); |
next; |
$userinfo{$name}=$value; |
|
} |
} |
$fh->close(); |
|
if (!$justsummary) { |
if (!$justsummary) { |
print '<font color="'.$color.'">'; |
$users{$userclass}{$filename} .= |
print '<h3>'.$userinfo{'environment.lastname'}.', '. |
'<font color="'.$color.'">'. |
|
'<h3>'.$userinfo{'environment.lastname'}.', '. |
$userinfo{'environment.firstname'}.' '. |
$userinfo{'environment.firstname'}.' '. |
$userinfo{'environment.middlename'}.' '. |
$userinfo{'environment.middlename'}.' '. |
$userinfo{'environment.generation'}." (". |
$userinfo{'environment.generation'}." (". |
$userinfo{'user.name'}."\@".$userinfo{'user.domain'}. |
$userinfo{'user.name'}."\@".$userinfo{'user.domain'}. |
")</h3>\n<b>Login time:</b> ". |
")</h3>\n". |
|
"<p><tt>$filename</tt></p>". |
|
"<b>Login time:</b> ". |
localtime($userinfo{'user.login.time'}). |
localtime($userinfo{'user.login.time'}). |
' <b>Browser</b>: '.$userinfo{'browser.type'}. |
' <b>Browser</b>: '.$userinfo{'browser.type'}. |
" on ".$userinfo{'browser.os'}."<b>Client:</b> ". |
" on ".$userinfo{'browser.os'}."<b>Client:</b> ". |
Line 123 sub main {
|
Line 126 sub main {
|
my $cid=$userinfo{'request.course.id'}; |
my $cid=$userinfo{'request.course.id'}; |
my $coursename= $userinfo{'course.'.$cid.'.description'}. |
my $coursename= $userinfo{'course.'.$cid.'.description'}. |
' ('.$cid.')'; |
' ('.$cid.')'; |
if (!$justsummary) { print "<b>Course:</b> ".$coursename; } |
if (!$justsummary) { |
|
$users{$userclass}{$filename} .= |
|
"<b>Course:</b> ".$coursename; |
|
} |
&add_count('Course',$coursename,$userclass); |
&add_count('Course',$coursename,$userclass); |
} else { |
} else { |
if (!$justsummary) { print "Not in a course."; } |
if (!$justsummary) { |
|
$users{$userclass}{$filename} .= |
|
"Not in a course."; |
|
} |
&add_count('Course','No Course',$userclass); |
&add_count('Course','No Course',$userclass); |
} |
} |
if (!$justsummary) { |
if (!$justsummary) { |
print "<br /><b>Last Transaction:</b> ".localtime($mtime). |
$users{$userclass}{$filename} .= |
|
"<br /><b>Last Transaction:</b> ".localtime($mtime). |
" (".$since." secs ago) <br /><b>Last Access:</b> ". |
" (".$since." secs ago) <br /><b>Last Access:</b> ". |
localtime($atime)." (".$sinceacc." secs ago)"; |
localtime($atime)." (".$sinceacc." secs ago)". |
print ("</font>"); |
"</font>"; |
} |
} |
} |
} |
|
untie(%userinfo); |
} |
} |
|
if (!$oneline && !$justsummary) { |
|
foreach my $class (@actl) { |
|
print("\n\n<hr /><h1>$class</h1>"); |
|
foreach my $filename (sort(keys(%{$users{$class}}))) { |
|
print("\n\n".$users{$class}{$filename}."\n\n<hr />"); |
|
} |
|
} |
|
} |
|
|
closedir(DIR); |
closedir(DIR); |
open (LOADAVGH,"/proc/loadavg"); |
open (LOADAVGH,"/proc/loadavg"); |
my $loadavg=<LOADAVGH>; |
my $loadavg=<LOADAVGH>; |