--- loncom/cgi/userstatus.pl 2004/01/14 01:42:09 1.10 +++ loncom/cgi/userstatus.pl 2006/06/02 21:39:02 1.12.2.1 @@ -1,7 +1,7 @@ #!/usr/bin/perl $|=1; # User Status -# $Id: userstatus.pl,v 1.10 2004/01/14 01:42:09 albertel Exp $ +# $Id: userstatus.pl,v 1.12.2.1 2006/06/02 21:39:02 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -80,6 +80,7 @@ sub main { my @allfiles=(sort(readdir(DIR))); foreach my $filename (@allfiles) { if ($filename=~/^\./) { next; } + if ($filename=~/^publicuser_/) { next; } my ($dev,$ino,$mode,$nlink, $uid,$gid,$rdev,$size, $atime,$mtime,$ctime, @@ -89,18 +90,22 @@ sub main { my $sinceacc=$now-$atime; unless ($oneline || $justsummary) { print ("\n\n
"); } my %userinfo; - my $fh=IO::File->new($$perlvar{'lonIDsDir'}.'/'.$filename); - while (my $line=<$fh>) { - chomp($line); - my ($name,$value)=split(/\=/,$line); - $userinfo{$name}=$value; - } - $fh->close(); + ($userinfo{'user.name'},undef,$userinfo{'user.domain'})= + split('_',$filename); my ($color,$userclass)=&analyze_time($since); &add_count('Overall','all',$userclass); &add_count('Domain',$userinfo{'user.domain'},$userclass); unless ($oneline) { + my $fh=IO::File->new($$perlvar{'lonIDsDir'}.'/'.$filename); + while (my $line=<$fh>) { + chomp($line); + my ($name,$value)=split(/\=/,$line); + $name = &unescape($name); + $value = &unescape($value); + $userinfo{$name}=$value; + } + $fh->close(); if (!$justsummary) { print ''; print '

'.$userinfo{'environment.lastname'}.', '. @@ -206,3 +211,18 @@ sub showact { print("\n"); } +# -------------------------------------------------------- Escape Special Chars + +sub escape { + my $str=shift; + $str =~ s/(\W)/"%".unpack('H2',$1)/eg; + return $str; +} + +# ----------------------------------------------------- Un-Escape Special Chars + +sub unescape { + my $str=shift; + $str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; + return $str; +}