--- loncom/auth/migrateuser.pm 2013/09/29 13:07:25 1.19
+++ loncom/auth/migrateuser.pm 2014/10/05 13:49:11 1.22
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Starts a user off based of an existing token.
#
-# $Id: migrateuser.pm,v 1.19 2013/09/29 13:07:25 raeburn Exp $
+# $Id: migrateuser.pm,v 1.22 2014/10/05 13:49:11 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -72,18 +72,26 @@ sub ip_changed {
if (ref($dataref) eq 'HASH') {
my $title = 'LON-CAPA Session redirected';
my $message = &mt('Your internet address has changed since you logged in.');
- my $camefrom = &Apache::lonnet::hostname($dataref->{'server'});
- my $frombalancer = $dataref->{'balancer'};
my $rule_in_effect;
- if ($frombalancer) {
- my $balancerdom = &Apache::lonnet::host_domain($dataref->{'server'});
- my ($result,$cached)=&Apache::lonnet::is_cached_new('loadbalancing',$balancerdom);
+ if ($dataref->{'balancer'}) {
+ my $baldom = &Apache::lonnet::host_domain($camefrom);
+ my $balprimaryid = &Apache::lonnet::domain($baldom,'primary');
+ my $balintdom = &Apache::lonnet::internet_dom($balprimaryid);
+ my $uprimaryid = &Apache::lonnet::domain($udom,'primary');
+ my $uintdom = &Apache::lonnet::internet_dom($uprimaryid);
+ my $dom_in_use;
+ if (($uintdom ne '') && ($uintdom eq $balintdom)) {
+ $dom_in_use = $udom;
+ } else {
+ $dom_in_use = $baldom;
+ }
+ my ($result,$cached)=&Apache::lonnet::is_cached_new('loadbalancing',$dom_in_use);
unless (defined($cached)) {
my $cachetime = 60*60*24;
my %domconfig =
- &Apache::lonnet::get_dom('configuration',['loadbalancing'],$balancerdom);
+ &Apache::lonnet::get_dom('configuration',['loadbalancing'],$dom_in_use);
if (ref($domconfig{'loadbalancing'}) eq 'HASH') {
- $result = &Apache::lonnet::do_cache_new('loadbalancing',$balancerdom,
+ $result = &Apache::lonnet::do_cache_new('loadbalancing',$dom_in_use,
$domconfig{'loadbalancing'},$cachetime);
}
}
@@ -140,10 +148,10 @@ sub ip_changed {
}
}
if ($dataref->{'sso.login'}) {
- $url .= '/adm/roles?';
+ $url .= '/adm/roles';
} else {
- $url .= '/adm/login?';
- $message .= '
'.&mt('You will need to provide your password one more time');
+ $url .= '/adm/login';
+ $message .= '
'.&mt('You will need to provide your password one more time.');
}
my %info= (
'domain' => $dataref->{'domain'},
@@ -159,7 +167,7 @@ sub ip_changed {
}
my $iptoken = &Apache::lonnet::tmpput(\%info,$switchto);
unless ($iptoken eq 'conlost') {
- $url .= 'iptoken='.$iptoken;
+ $url .= '?iptoken='.$iptoken;
}
$r->print(&Apache::loncommon::start_page($title,undef,
{'redirect' =>
@@ -206,6 +214,9 @@ sub handler {
if ($data{'symb'} ne '') {
$form{'symb'} = $data{'symb'};
}
+ if ($data{'iptoken'} ne '') {
+ $form{'iptoken'} = $data{'iptoken'};
+ }
if (!$data{'role'}) {
my $handle = &Apache::lonnet::check_for_valid_session($r);