[LON-CAPA-cvs] cvs: loncom /auth lonlogout.pm

raeburn raeburn at source.lon-capa.org
Fri Aug 18 14:13:33 EDT 2017


raeburn		Fri Aug 18 18:13:33 2017 EDT

  Modified files:              
    /loncom/auth	lonlogout.pm 
  Log:
  - Sanity checking
  
  
Index: loncom/auth/lonlogout.pm
diff -u loncom/auth/lonlogout.pm:1.50 loncom/auth/lonlogout.pm:1.51
--- loncom/auth/lonlogout.pm:1.50	Sat Feb 25 20:00:36 2017
+++ loncom/auth/lonlogout.pm	Fri Aug 18 18:13:33 2017
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Logout Handler
 #
-# $Id: lonlogout.pm,v 1.50 2017/02/25 20:00:36 raeburn Exp $
+# $Id: lonlogout.pm,v 1.51 2017/08/18 18:13:33 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -45,9 +45,11 @@
 use Apache::Constants qw(:common);
 use Apache::File;
 use Apache::lonnet;
+use Apache::loncommon;
 use Apache::lonmenu;
 use CGI::Cookie();
 use Apache::lonlocal;
+use LONCAPA qw(:DEFAULT :match); 
 
 sub handler {
     my $r = shift;
@@ -120,19 +122,32 @@
 						   $switch);
     } else {
         my $domain = $env{'user.domain'};
-        my $headextra;
-        if ($env{'request.sso.login'}
-            && defined($r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) {
-            if (open(my $fh,$r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) {
-                $headextra = join('',<$fh>);
-                close($fh);
-            }
-        }
-        if ($env{'request.sso.login'}
-            && defined($r->dir_config('lonSSOUserLogoutHeadFile'))) {
-            if (open(my $fh,$r->dir_config('lonSSOUserLogoutHeadFile'))) {
-                $headextra.= join('',<$fh>);
-                close($fh);
+        my ($headextra,$ssofile);
+        if ($env{'request.sso.login'}) {
+            my $londocroot = $r->dir_config('lonDocRoot');
+            if ($domain =~ /^$match_domain$/) {
+                if (defined($r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) {
+                    $ssofile = '/'.&Apache::loncommon::clean_path($r->dir_config("lonSSOUserLogoutHeadFile_$domain"));
+                    if ($ssofile eq $r->dir_config("lonSSOUserLogoutHeadFile_$domain")) {
+                        if ($ssofile =~ /^\Q$londocroot\E/) {
+                            if (open(my $fh,"<$ssofile")) {
+                                $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,




More information about the LON-CAPA-cvs mailing list