--- loncom/cgi/userstatus.pl 2006/09/19 21:36:31 1.15 +++ loncom/cgi/userstatus.pl 2009/01/09 07:06:27 1.19 @@ -1,7 +1,7 @@ #!/usr/bin/perl $|=1; # User Status -# $Id: userstatus.pl,v 1.15 2006/09/19 21:36:31 albertel Exp $ +# $Id: userstatus.pl,v 1.19 2009/01/09 07:06:27 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,23 +26,24 @@ $|=1; # http://www.lon-capa.org/ # - use strict; + use lib '/home/httpd/lib/perl/'; +use Apache::lonlocal; use LONCAPA::Configuration; -use LONCAPA; +use LONCAPA::loncgi; +use LONCAPA::lonauthcgi; use HTTP::Headers; use GDBM_File; +# -------------------- Read loncapa.conf (and by default, loncapa_apache.conf). +my $perlvar=&LONCAPA::Configuration::read_conf('loncapa.conf'); +print "Content-type: text/html\n\n"; my %usercount; my @actl=('Active','Moderately Active','Inactive'); - -print "Content-type: text/html\n\n"; - -# -------------------- Read loncapa.conf (and by default, loncapa_apache.conf). -&main(); +&main($perlvar); sub analyze_time { my ($since)=@_; @@ -68,13 +69,61 @@ sub add_count { } sub main { - my $perlvar=LONCAPA::Configuration::read_conf('loncapa.conf'); + my ($perlvar) = @_; delete $$perlvar{'lonReceipt'}; # remove since sensitive and not needed delete $$perlvar{'lonSqlAccess'}; # remove since sensitive and not needed - my $oneline=($ENV{'QUERY_STRING'} eq 'simple'); - my $justsummary=($ENV{'QUERY_STRING'} eq 'summary'); - unless ($oneline) { print "\n

User Status ".localtime()."

"; } + if (!&LONCAPA::lonauthcgi::check_ipbased_access('userstatus')) { + if (!&LONCAPA::loncgi::check_cookie_and_load_env()) { + &Apache::lonlocal::get_language_handle(); + print &LONCAPA::loncgi::missing_cookie_msg(); + return; + } + + if (!&LONCAPA::lonauthcgi::can_view('userstatus')) { + &Apache::lonlocal::get_language_handle(); + print &LONCAPA::lonauthcgi::unauthorized_msg('userstatus'); + return; + } + } + + &Apache::lonlocal::get_language_handle(); + my (%gets,$dom,$oneline,$justsummary); + &LONCAPA::loncgi::cgi_getitems($ENV{'QUERY_STRING'},\%gets); + if (defined($gets{'simple'})) { + $oneline = 'simple'; + } + if (defined($gets{'summary'})) { + $justsummary = 'summary'; + } + + my %lt = &Apache::lonlocal::texthash( + usrs => 'User Status', + login => 'Login time', + on => 'on', + Client => 'Client', + role => 'Role', + notc => 'Not in a course', + ltra => 'Last Transaction', + lacc => 'Last Access', + secs => 'secs ago', + usrc => 'User Counts', + load => 'Load Average', + Overall => 'Overall', + Domain => 'Domain', + Course => 'Course', + Browser => 'Browser', + OS => 'OS', + Active => 'Active', + 'Moderately Active' => 'Moderately Active', + Inactive => 'Inactive', + ); + + unless ($oneline) { + my $now = time(); + print ''."\n". + "

$lt{'usrs'} ".&Apache::lonlocal::locallocaltime($now).'

'; + } opendir(DIR,$$perlvar{'lonIDsDir'}); my @allfiles=(sort(readdir(DIR))); @@ -111,11 +160,13 @@ sub main { $userinfo{'environment.middlename'}.' '. $userinfo{'environment.generation'}." (". $userinfo{'user.name'}."\@".$userinfo{'user.domain'}. - ")\nLogin time: ". - localtime($userinfo{'user.login.time'}). - ' Browser: '.$userinfo{'browser.type'}. - " on ".$userinfo{'browser.os'}."Client: ". - $userinfo{'request.host'}."
\nRole: ". + ")\n". + "

$filename

". + "$lt{'login'}: ". + &Apache::lonlocal::locallocaltime($userinfo{'user.login.time'}). + " $lt{'Browser'}: ".$userinfo{'browser.type'}. + " $lt{'on'} ".$userinfo{'browser.os'}."$lt{'Client'}:". + $userinfo{'request.host'}."
\n$lt{'role'}: ". $userinfo{'request.role'}." "; } &add_count('Browser',$userinfo{'browser.type'},$userinfo{'browser.version'}); @@ -126,21 +177,20 @@ sub main { ' ('.$cid.')'; if (!$justsummary) { $users{$userclass}{$filename} .= - "Course: ".$coursename; + "$lt{'Course'}: ".$coursename; } &add_count('Course',$coursename,$userclass); } else { if (!$justsummary) { - $users{$userclass}{$filename} .= - "Not in a course."; + $users{$userclass}{$filename} .= $lt{'notc'}; } &add_count('Course','No Course',$userclass); } if (!$justsummary) { $users{$userclass}{$filename} .= - "
Last Transaction: ".localtime($mtime). - " (".$since." secs ago)
Last Access: ". - localtime($atime)." (".$sinceacc." secs ago)". + "
$lt{'ltra'}: ".&Apache::lonlocal::locallocaltime($mtime). + " (".$since." $lt{'secs'})
$lt{'lacc'}: ". + &Apache::lonlocal::locallocaltime($atime)." (".$sinceacc." $lt{'secs'})". ""; } } @@ -148,7 +198,7 @@ sub main { } if (!$oneline && !$justsummary) { foreach my $class (@actl) { - print("\n\n

$class

"); + print("\n\n

$lt{$class}

"); foreach my $filename (sort(keys(%{$users{$class}}))) { print("\n\n".$users{$class}{$filename}."\n\n
"); } @@ -160,16 +210,16 @@ sub main { my $loadavg=; close(LOADAVGH); unless ($oneline) { - print "

User Counts

"; + print "

$lt{'usrc'}

"; # print "
\n";
-	&showact('Overall',%usercount);
-	&showact('Domain',%usercount);
-	&showact('Course',%usercount);
-	&show('Browser',%usercount);
-	&show('OS',%usercount);
+	&showact('Overall',\%lt,%usercount);
+	&showact('Domain',\%lt,%usercount);
+	&showact('Course',\%lt,%usercount);
+	&show('Browser',\%lt,%usercount);
+	&show('OS',\%lt,%usercount);
 
 #	print "\n
"; - print "Load Average: ".$loadavg; + print "$lt{'load'}: ".$loadavg; print ""; } else { foreach my $l1 (sort keys %usercount) { @@ -188,8 +238,8 @@ sub main { } sub show { - my ($cat,%usercount)=@_; - print("

$cat

\n"); + my ($cat,$ltref,%usercount)=@_; + print("

$ltref->{$cat}

\n"); foreach my $type (sort(keys(%{$usercount{$cat}}))) { print("
$type"); print(join("",sort(keys(%{$usercount{$cat}{$type}})))); @@ -206,8 +256,8 @@ sub show { } sub showact { - my ($cat,%usercount)=@_; - print("

$cat

\n"); + my ($cat,$ltref,%usercount)=@_; + print("

$ltref->{$cat}

\n"); print("
"); print(join("",('Any',@actl)));