version 1.1448, 2021/04/18 02:24:05
|
version 1.1451, 2021/05/04 18:47:38
|
Line 976 sub userload {
|
Line 976 sub userload {
|
# ------------------------------ Find server with least workload from spare.tab |
# ------------------------------ Find server with least workload from spare.tab |
|
|
sub spareserver { |
sub spareserver { |
my ($loadpercent,$userloadpercent,$want_server_name,$udom) = @_; |
my ($r,$loadpercent,$userloadpercent,$want_server_name,$udom) = @_; |
my $spare_server; |
my $spare_server; |
if ($userloadpercent !~ /\d/) { $userloadpercent=0; } |
if ($userloadpercent !~ /\d/) { $userloadpercent=0; } |
my $lowest_load=($loadpercent > $userloadpercent) ? $loadpercent |
my $lowest_load=($loadpercent > $userloadpercent) ? $loadpercent |
Line 1021 sub spareserver {
|
Line 1021 sub spareserver {
|
if ($protocol{$spare_server} eq 'https') { |
if ($protocol{$spare_server} eq 'https') { |
$protocol = $protocol{$spare_server}; |
$protocol = $protocol{$spare_server}; |
} |
} |
|
my $alias = &Apache::lonnet::use_proxy_alias($r,$spare_server); |
|
$hostname = $alias if ($alias ne ''); |
$spare_server = $protocol.'://'.$hostname; |
$spare_server = $protocol.'://'.$hostname; |
} |
} |
} |
} |
Line 2781 sub get_domain_defaults {
|
Line 2783 sub get_domain_defaults {
|
} |
} |
} |
} |
if (ref($domconfig{'wafproxy'}) eq 'HASH') { |
if (ref($domconfig{'wafproxy'}) eq 'HASH') { |
foreach my $item ('ipheader','trusted','vpnint','vpnext') { |
foreach my $item ('ipheader','trusted','vpnint','vpnext','sslopt') { |
if ($domconfig{'wafproxy'}{$item}) { |
if ($domconfig{'wafproxy'}{$item}) { |
$domdefaults{'waf_'.$item} = $domconfig{'wafproxy'}{$item}; |
$domdefaults{'waf_'.$item} = $domconfig{'wafproxy'}{$item}; |
} |
} |
Line 2851 sub retrieve_instcodes {
|
Line 2853 sub retrieve_instcodes {
|
} |
} |
|
|
sub course_portal_url { |
sub course_portal_url { |
my ($cnum,$cdom) = @_; |
my ($cnum,$cdom,$r) = @_; |
my $chome = &homeserver($cnum,$cdom); |
my $chome = &homeserver($cnum,$cdom); |
my $hostname = &hostname($chome); |
my $hostname = &hostname($chome); |
my $protocol = $protocol{$chome}; |
my $protocol = $protocol{$chome}; |
Line 2861 sub course_portal_url {
|
Line 2863 sub course_portal_url {
|
if ($domdefaults{'portal_def'}) { |
if ($domdefaults{'portal_def'}) { |
$firsturl = $domdefaults{'portal_def'}; |
$firsturl = $domdefaults{'portal_def'}; |
} else { |
} else { |
|
my $alias = &Apache::lonnet::use_proxy_alias($r,$chome); |
|
$hostname = $alias if ($alias ne ''); |
$firsturl = $protocol.'://'.$hostname; |
$firsturl = $protocol.'://'.$hostname; |
} |
} |
return $firsturl; |
return $firsturl; |
Line 14354 sub uses_sts {
|
Line 14358 sub uses_sts {
|
return; |
return; |
} |
} |
|
|
|
sub waf_allssl { |
|
my ($host_name) = @_; |
|
my $alias = &get_proxy_alias(); |
|
if ($host_name eq '') { |
|
$host_name = $ENV{'SERVER_NAME'}; |
|
} |
|
if (($host_name ne '') && ($alias eq $host_name)) { |
|
my $serverhomedom = &host_domain($perlvar{'lonHostID'}); |
|
my %defdomdefaults = &get_domain_defaults($serverhomedom); |
|
if ($defdomdefaults{'waf_sslopt'}) { |
|
return $defdomdefaults{'waf_sslopt'}; |
|
} |
|
} |
|
return; |
|
} |
|
|
sub get_requestor_ip { |
sub get_requestor_ip { |
my ($r,$nolookup,$noproxy) = @_; |
my ($r,$nolookup,$noproxy) = @_; |
my $from_ip; |
my $from_ip; |
Line 14422 sub get_proxy_settings {
|
Line 14442 sub get_proxy_settings {
|
trusted => $domdefaults{'waf_trusted'}, |
trusted => $domdefaults{'waf_trusted'}, |
vpnint => $domdefaults{'waf_vpnint'}, |
vpnint => $domdefaults{'waf_vpnint'}, |
vpnext => $domdefaults{'waf_vpnext'}, |
vpnext => $domdefaults{'waf_vpnext'}, |
|
sslopt => $domdefaults{'waf_sslopt'}, |
}; |
}; |
return $proxyinfo; |
return $proxyinfo; |
} |
} |
Line 14436 sub ip_match {
|
Line 14457 sub ip_match {
|
} |
} |
|
|
sub get_proxy_alias { |
sub get_proxy_alias { |
my $lonhost = $perlvar{'lonHostID'}; |
my ($lonid) = @_; |
if ($lonhost ne '') { |
if ($lonid eq '') { |
my ($alias,$cached) = &is_cached_new('proxyalias',$lonhost); |
$lonid = $perlvar{'lonHostID'}; |
|
} |
|
if (!defined(&hostname($lonid))) { |
|
return; |
|
} |
|
if ($lonid ne '') { |
|
my ($alias,$cached) = &is_cached_new('proxyalias',$lonid); |
if ($cached) { |
if ($cached) { |
return $alias; |
return $alias; |
} |
} |
my $dom = &Apache::lonnet::host_domain($lonhost); |
my $dom = &Apache::lonnet::host_domain($lonid); |
if ($dom ne '') { |
if ($dom ne '') { |
my $cachetime = 60*60*24; |
my $cachetime = 60*60*24; |
my %domconfig = |
my %domconfig = |
Line 14450 sub get_proxy_alias {
|
Line 14477 sub get_proxy_alias {
|
my $alias; |
my $alias; |
if (ref($domconfig{'wafproxy'}) eq 'HASH') { |
if (ref($domconfig{'wafproxy'}) eq 'HASH') { |
if (ref($domconfig{'wafproxy'}{'alias'}) eq 'HASH') { |
if (ref($domconfig{'wafproxy'}{'alias'}) eq 'HASH') { |
$alias = $domconfig{'wafproxy'}{'alias'}{$lonhost}; |
$alias = $domconfig{'wafproxy'}{'alias'}{$lonid}; |
|
} |
|
} |
|
return &do_cache_new('proxyalias',$lonid,$alias,$cachetime); |
|
} |
|
} |
|
return; |
|
} |
|
|
|
sub use_proxy_alias { |
|
my ($r,$lonid) = @_; |
|
my $alias = &get_proxy_alias($lonid); |
|
if ($alias) { |
|
my $dom = &host_domain($lonid); |
|
if ($dom ne '') { |
|
my $proxyinfo = &get_proxy_settings($dom ); |
|
my ($vpnint,$remote_ip); |
|
if (ref($proxyinfo) eq 'HASH') { |
|
$vpnint = $proxyinfo->{'vpnint'}; |
|
if ($vpnint) { |
|
$remote_ip = &get_requestor_ip($r,1,1); |
} |
} |
} |
} |
return &do_cache_new('proxyalias',$lonhost,$alias,$cachetime); |
unless ($vpnint && &ip_match($remote_ip,$vpnint)) { |
|
return $alias; |
|
} |
} |
} |
} |
} |
return; |
return; |