--- loncom/lonsql 2002/06/18 15:04:05 1.46 +++ loncom/lonsql 2002/06/24 14:22:05 1.49 @@ -3,7 +3,7 @@ # The LearningOnline Network # lonsql - LON TCP-MySQL-Server Daemon for handling database requests. # -# $Id: lonsql,v 1.46 2002/06/18 15:04:05 www Exp $ +# $Id: lonsql,v 1.49 2002/06/24 14:22:05 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -195,7 +195,7 @@ sub logthis { sub courselog { my ($path,$command)=@_; my %filters=(); - foreach (split(/\=/,&unescape($command))) { + foreach (split(/\:/,&unescape($command))) { my ($name,$value)=split(/\=/,$_); $filters{$name}=$value; } @@ -204,10 +204,45 @@ sub courselog { while ($line=) { chomp($line); my ($timestamp,$host,$log)=split(/\:/,$line); - foreach (split(/\&/,&unescape($log))) { - my ($res,$uname,$udom,$action,$values)=split(/\:/,$_); +# +# $log has the actual log entries; currently still escaped, and +# %26(timestamp)%3a(url)%3a(user)%3a(domain) +# then additionally +# %3aPOST%3a(name)%3d(value)%3a(name)%3d(value) +# or +# %3aCSTORE%3a(name)%3d(value)%26(name)%3d(value) +# +# get delimiter between timestamped entries to be &&& + $log=~s/\%26(\d+)\%3a/\&\&\&$1\%3a/g; +# now go over all log entries + foreach (split(/\&\&\&/,&unescape($log))) { + my ($time,$res,$uname,$udom,$action,@values)=split(/\:/,$_); + my $values=&unescape(join(':',@values)); + $values=~s/\&/\:/g; + $res=&unescape($res); my $include=1; - } + if (($filters{'username'}) && ($uname ne $filters{'username'})) + { $include=0; } + if (($filters{'domain'}) && ($udom ne $filters{'domain'})) + { $include=0; } + if (($filters{'url'}) && ($res!~/$filters{'url'}/)) + { $include=0; } + if (($filters{'start'}) && ($time<$filters{'start'})) + { $include=0; } + if (($filters{'end'}) && ($time>$filters{'end'})) + { $include=0; } + if (($filters{'action'} eq 'view') && ($action)) + { $include=0; } + if (($filters{'action'} eq 'submit') && ($action ne 'POST')) + { $include=0; } + if (($filters{'action'} eq 'grade') && ($action ne 'CSTORE')) + { $include=0; } + if ($include) { + push(@results,($time<1000000000?'0':'').$time.':'.$res.':'. + $uname.':'.$udom.':'. + $action.':'.$values); + } + } } close IN; return join('&',sort(@results)); @@ -218,7 +253,7 @@ sub courselog { sub userlog { my ($path,$command)=@_; my %filters=(); - foreach (split(/\=/,&unescape($command))) { + foreach (split(/\:/,&unescape($command))) { my ($name,$value)=split(/\=/,$_); $filters{$name}=$value; } @@ -229,7 +264,13 @@ sub userlog { my ($timestamp,$host,$log)=split(/\:/,$line); $log=&unescape($log); my $include=1; + if (($filters{'start'}) && ($timestamp<$filters{'start'})) + { $include=0; } + if (($filters{'end'}) && ($timestamp>$filters{'end'})) + { $include=0; } if (($filters{'action'} eq 'log') && ($log!~/^Log/)) { $include=0; } + if (($filters{'action'} eq 'check') && ($log!~/^Check/)) + { $include=0; } if ($include) { push(@results,$timestamp.':'.$log); } @@ -337,7 +378,7 @@ sub make_new_child { $queryid .= $run; print $client "$queryid\n"; - &logthis("QUERY: $query"); + &logthis("QUERY: $query - $arg1 - $arg2 - $arg3"); sleep 1; my $result='';