# The LearningOnline Network # Logout Handler # (Cookie Based Access Handler # 5/21/99,5/22,5/29,5/31,6/15,16/11,22/11, # 01/06,01/13 Gerd Kortemeyer) # 05/31 Gerd Kortemeyer package Apache::lonlogout; use strict; use Apache::Constants qw(:common); use Apache::File; use Apache::lonnet; use Apache::lonmenu; use CGI::Cookie(); sub handler { my $r = shift; my $requrl=$r->uri; my %cookies=CGI::Cookie->parse($r->header_in('Cookie')); my $lonid=$cookies{'lonID'}; my $cookie; if ($lonid) { my $handle=$lonid->value; $handle=~s/\W//g; my $lonidsdir=$r->dir_config('lonIDsDir'); if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) { my @profile; my %sessionhash; { my $idf=Apache::File->new("$lonidsdir/$handle.id"); @profile=<$idf>; } my $envi; for ($envi=0;$envi<=$#profile;$envi++) { chomp($profile[$envi]); my ($envname,$envvalue)=split(/=/,$profile[$envi]); $sessionhash{$envname}=$envvalue; } unlink("$lonidsdir/$handle.id"); &Apache::lonnet::log($sessionhash{'user.domain'}, $sessionhash{'user.name'}, $sessionhash{'user.home'}, "Logout $ENV{'REMOTE_ADDR'}"); $r->content_type('text/html'); $r->send_http_header; return OK if $r->header_only; # -------------------------------------------------------- Menu script and info my $windowinfo=&Apache::lonmenu::close(); # --------------------------------------------------------------- Screen Output $r->print(< The LearningOnline Network with CAPA Logout $windowinfo

Goodbye!

ENDDOCUMENT return OK; } else { $r->log_reason("Cookie $handle not valid", $r->filename); } } return FORBIDDEN; } 1; __END__