--- loncom/auth/migrateuser.pm 2020/12/18 15:23:03 1.49 +++ loncom/auth/migrateuser.pm 2021/05/04 18:47:37 1.50 @@ -1,7 +1,7 @@ # The LearningOnline Network # Starts a user off based of an existing token. # -# $Id: migrateuser.pm,v 1.49 2020/12/18 15:23:03 raeburn Exp $ +# $Id: migrateuser.pm,v 1.50 2021/05/04 18:47:37 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,7 +30,7 @@ package Apache::migrateuser; use strict; use LONCAPA qw(:DEFAULT :match); -use Apache::Constants qw(:common :http :methods); +use Apache::Constants qw(:common :http :methods :remotehost); use Apache::lonauth; use Apache::lonnet; use Apache::loncommon; @@ -253,6 +253,8 @@ sub ip_changed { if ($hostname) { my $protocol = $Apache::lonnet::protocol{$switchto}; $protocol = 'http' if ($protocol ne 'https'); + my $alias = &Apache::lonnet::use_proxy_alias($r,$switchto); + $hostname = $alias if ($alias ne ''); $url = $protocol.'://'.$hostname; if ($rule_in_effect eq 'balancer') { $message .= '
'. @@ -308,7 +310,7 @@ sub ip_changed { } sub logout { - my ($r,$handle,$data,$lti_env) = @_; + my ($r,$ip,$handle,$data,$lti_env) = @_; my $lonidsdir=$r->dir_config('lonIDsDir'); if (unlink("$lonidsdir/$handle.id")) { if (($env{'user.linkedenv'} =~ /^[a-f0-9]+_linked$/) && @@ -319,7 +321,6 @@ sub logout { } my %temp=('logout' => time); &Apache::lonnet::put('email_status',\%temp); - my $ip = &Apache::lonnet::get_requestor_ip(); &Apache::lonnet::log($env{'user.domain'}, $env{'user.name'}, $env{'user.home'}, @@ -588,7 +589,7 @@ sub handler { } my ($home,@ids); @ids=&Apache::lonnet::current_machine_ids(); - my $ip = &Apache::lonnet::get_requestor_ip(); + my $ip = &Apache::lonnet::get_requestor_ip($r,REMOTE_NOLOOKUP); if ($data{'ip'} ne $ip) { &Apache::lonnet::logthis('IP change when session migration requested -- was: '. $data{'ip'}.'; now: '.$ip.' for '.$data{'username'}.':'.$data{'domain'}); @@ -772,7 +773,7 @@ sub handler { # (and session) or has an LTI session cookie for a different username, # logout the existing session, and start a new one if ($needslogout) { - &logout($r,$handle,\%data,$lti_env); + &logout($r,$ip,$handle,\%data,$lti_env); } elsif (($data{'lti.reqcrs'}) && ($data{'lti.reqrole'} eq 'cc')) { $form{'lti.reqcrs'} = $data{'lti.reqcrs'}; $form{'lti.reqrole'} = $data{'lti.reqrole'}; @@ -918,7 +919,7 @@ sub handler { $needslogout = 1; } if ($needslogout) { - &logout($r,$handle,\%data,$lti_env); + &logout($r,$ip,$handle,\%data,$lti_env); return OK; } }