#!/usr/bin/perl $|=1; # The LearningOnline Network with CAPA # User Status # (Versions # (Running loncron # 09/06/01 Gerd Kortemeyer) # 02/18/02,02/19/02 Gerd Kortemeyer) use lib '/home/httpd/lib/perl/'; use LONCAPA::Configuration; use HTTP::Headers; use IO::File; print "Content-type: text/html\n\n"; # -------------------- Read loncapa.conf (and by default, loncapa_apache.conf). my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf'); my %perlvar=%{$perlvarref}; undef $perlvarref; # remove since sensitive and not needed 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'); unless ($oneline) { print "\n

User Status ".localtime()."

"; } my $filename; opendir(DIR,$perlvar{'lonIDsDir'}); %usercounts=(); while ($filename=readdir(DIR)) { unless ($filename=~/^\./) { my ($dev,$ino,$mode,$nlink, $uid,$gid,$rdev,$size, $atime,$mtime,$ctime, $blksize,$blocks)=stat($perlvar{'lonIDsDir'}.'/'.$filename); $now=time; $since=$now-$mtime; $sinceacc=$now-$atime; unless ($oneline) { print ("\n\n
"); } my %userinfo=(); undef $userinfo; my $fh=IO::File->new($perlvar{'lonIDsDir'}.'/'.$filename); while ($line=<$fh>) { chomp($line); my ($name,$value)=split(/\=/,$line); $userinfo{$name}=$value; } $fh->close(); $color="#000000"; $userclass="Active"; if ($since>300) { $color="#222222"; } if ($since>600) { $color="#444444"; } if ($since>3600) { $color="#666666"; $userclass="Moderately Active"; } if ($since>7200) { $color="#888888"; } if ($since>21600) { $color="#AAAAAA"; $userclass="Inactive"; } $usercount{$userclass}++; $usercount{'in Domain '.$userinfo{'user.domain'}}++; unless ($oneline) { print ''; print '

'.$userinfo{'environment.lastname'}.', '. $userinfo{'environment.firstname'}.' '. $userinfo{'environment.middlename'}.' '. $userinfo{'environment.generation'}." (". $userinfo{'user.name'}."\@".$userinfo{'user.domain'}. ")

\nLogin time: ". localtime($userinfo{'user.login.time'}). ' Browser: '.$userinfo{'browser.type'}." Client: ". $userinfo{'request.host'}."
\nRole: ". $userinfo{'request.role'}." "; if ($userinfo{'request.course.id'}) { print "Course: ". $userinfo{'course.'.$userinfo{'request.course.id'}.'.description'}. ' ('.$userinfo{'request.course.id'}.')'; $usercount{'in Course '. $userinfo{'course.'.$userinfo{'request.course.id'}.'.description'}. ' ('.$userinfo{'request.course.id'}.')'}++; } else { print "Not in a course."; } print "
Last Transaction: ".localtime($mtime). " (".$since." secs ago)
Last Access: ".localtime($atime). " (".$sinceacc." secs ago)"; print ("
"); } } } closedir(DIR); unless ($oneline) { print "

User Count

"; foreach (sort keys %usercount) { print "".$_.": ".$usercount{$_}."
"; } print ""; } else { foreach (sort keys %usercount) { print $_.'='.$usercount{$_}.'&'; } }