Diff for /loncom/auth/lonlogout.pm between versions 1.45.2.7 and 1.50

version 1.45.2.7, 2019/08/03 22:52:25 version 1.50, 2017/02/25 20:00:36
Line 45  use strict; Line 45  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::File;  use Apache::File;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon;  
 use Apache::lonmenu;  use Apache::lonmenu;
 use CGI::Cookie();  use CGI::Cookie();
 use Apache::lonlocal;  use Apache::lonlocal;
 use LONCAPA qw(:DEFAULT :match);  
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 71  sub handler { Line 69  sub handler {
     my @profile;      my @profile;
     my $lonidsdir=$r->dir_config('lonIDsDir');      my $lonidsdir=$r->dir_config('lonIDsDir');
     &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);      &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
     if (unlink("$lonidsdir/$handle.id")) {      unlink("$lonidsdir/$handle.id");
         if (($env{'user.linkedenv'} =~ /^[a-f0-9]+_linked$/) &&      if ($env{'user.linkedenv'} ne '') {
             (-l "$lonidsdir/$env{'user.linkedenv'}.id") &&          my $lonhost = $r->dir_config('lonHostID');
             (readlink("$lonidsdir/$env{'user.linkedenv'}.id") eq "$lonidsdir/$handle.id")) {          if ((-l $env{'user.linkedenv'}) && 
             unlink("$lonidsdir/$env{'user.linkedenv'}.id");              (readlink($env{'user.linkedenv'}) eq "$lonidsdir/$handle.id")) {
               unlink($env{'user.linkedenv'});
         }          }
     }      }
     if (!$Apache::lonlocal::lh) {      if (!$Apache::lonlocal::lh) {
Line 90  sub handler { Line 89  sub handler {
   
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
   
     #expire the cookies      #expire the cookie
     my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));      my $name = 'lonID';
     foreach my $name (keys(%cookies)) {      if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) {
         next unless ($name =~ /^lon(|S|Link|Pub)ID$/);          $name = 'lonPubID';
         my $c = new CGI::Cookie(-name    => $name,      }
                                 -value   => '',      my $c = new CGI::Cookie(-name    => $name,
                                 -expires => '-10y',);      -value   => '',
         $r->headers_out->add('Set-cookie' => $c);      -expires => '-10y',);
       $r->headers_out->add('Set-cookie' => $c);
       if (($name eq 'lonID') && ($env{'user.linkeenv'})) {
           my $other = new CGI::Cookie(-name    => 'lonLinkID',
                                       -value   => '',
                                       -expires => '-10y',);
           $r->headers_out->add('Set-cookie' => $other);
     }      }
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
 # -------------------------------------------------------- Menu script and info  # -------------------------------------------------------- Menu script and info
   
     my $windowinfo=&Apache::lonmenu::close();  
 # ---------------------------------------------------------------- Get handover  # ---------------------------------------------------------------- Get handover
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['handover']);      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['handover']);
     my $switch='';      my $switch='';
Line 116  sub handler { Line 120  sub handler {
    $switch);     $switch);
     } else {      } else {
         my $domain = $env{'user.domain'};          my $domain = $env{'user.domain'};
         my ($headextra,$ssofile);          my $headextra;
         if ($env{'request.sso.login'}) {          if ($env{'request.sso.login'}
             my $londocroot = $r->dir_config('lonDocRoot');              && defined($r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) {
             if ($domain =~ /^$match_domain$/) {              if (open(my $fh,$r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) {
                 if (defined($r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) {                  $headextra = join('',<$fh>);
                     $ssofile = '/'.&Apache::loncommon::clean_path($r->dir_config("lonSSOUserLogoutHeadFile_$domain"));                  close($fh);
                     if ($ssofile eq $r->dir_config("lonSSOUserLogoutHeadFile_$domain")) {              }
                         if ($ssofile =~ /^\Q$londocroot\E/) {          }
                             if (open(my $fh,'<',$ssofile)) {          if ($env{'request.sso.login'}
                                 $headextra = join('',<$fh>);              && defined($r->dir_config('lonSSOUserLogoutHeadFile'))) {
                                 close($fh);              if (open(my $fh,$r->dir_config('lonSSOUserLogoutHeadFile'))) {
                             }                  $headextra.= join('',<$fh>);
                         }                  close($fh);
                     }  
                 }  
             }  
             if (defined($r->dir_config('lonSSOUserLogoutHeadFile'))) {  
                 $ssofile = '/'.&Apache::loncommon::clean_path($r->dir_config('lonSSOUserLogoutHeadFile'));  
                 if ($ssofile eq $r->dir_config('lonSSOUserLogoutHeadFile')) {  
                     if ($ssofile =~ /^\Q$londocroot\E/) {  
                         if (open(my $fh,'<',$ssofile)) {  
                             $headextra.= join('',<$fh>);  
                             close($fh);  
                         }  
                     }  
                 }  
             }              }
         }          }
  $start_page=&Apache::loncommon::start_page('Logged Out',$headextra,   $start_page=&Apache::loncommon::start_page('Logged Out',$headextra,
                            {'no_inline_link' => 1,                             {'no_nav_bar'     => 1,});
                             'no_nav_bar'     => 1,});  
   
         $relogmessage.='<h1>'.&mt('Goodbye').'</h1>'          $relogmessage.='<h1>'.&mt('Goodbye').'</h1>'
                       .'<p>'.&mt('Thank you for using LON-CAPA.').'</p>';                        .'<p>'.&mt('Thank you for using LON-CAPA.').'</p>';
Line 205  Due to security reasons in new web brows Line 195  Due to security reasons in new web brows
         }          }
         if ($env{'request.sso.login'}          if ($env{'request.sso.login'}
     && defined($r->dir_config("lonSSOUserLogoutMessageFile_$domain"))) {      && defined($r->dir_config("lonSSOUserLogoutMessageFile_$domain"))) {
     if (open(my $fh,'<',$r->dir_config("lonSSOUserLogoutMessageFile_$domain"))) {      if (open(my $fh,$r->dir_config("lonSSOUserLogoutMessageFile_$domain"))) {
         $relogmessage.= join('',<$fh>);          $relogmessage.= join('',<$fh>);
                 close($fh);                  close($fh);
             }              }
  }   }
  if ($env{'request.sso.login'}   if ($env{'request.sso.login'}
     && defined($r->dir_config('lonSSOUserLogoutMessageFile'))) {      && defined($r->dir_config('lonSSOUserLogoutMessageFile'))) {
     if (open(my $fh,'<',$r->dir_config('lonSSOUserLogoutMessageFile'))) {      if (open(my $fh,$r->dir_config('lonSSOUserLogoutMessageFile'))) {
         $relogmessage.= join('',<$fh>);          $relogmessage.= join('',<$fh>);
                 close($fh);                  close($fh);
             }              }
Line 222  Due to security reasons in new web brows Line 212  Due to security reasons in new web brows
 # --------------------------------------------------------------- Screen Output  # --------------------------------------------------------------- Screen Output
     $r->print(<<ENDDOCUMENT);      $r->print(<<ENDDOCUMENT);
 $start_page  $start_page
 $windowinfo  
 $relogmessage  $relogmessage
 $end_page  $end_page
 ENDDOCUMENT  ENDDOCUMENT
     if ($env{'request.balancercookie'}) {  
         my ($balancer,$cookie) = split(/:/,$env{'request.balancercookie'});  
         if ((&Apache::lonnet::hostname($balancer)) && ($cookie =~ /^[a-f0-9]{32}$/)) {  
             $cookie = $env{'user.domain'}.'_'.$env{'user.name'}.'_'.$cookie;  
             &Apache::lonnet::delbalcookie($cookie,$balancer);  
         }  
     }  
     $r->register_cleanup(\&flush_course_logs);      $r->register_cleanup(\&flush_course_logs);
     return OK;       return OK; 
 }  }

Removed from v.1.45.2.7  
changed lines
  Added in v.1.50


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>