--- loncom/lonnet/perl/lonnet.pm 2002/05/13 09:32:56 1.219 +++ loncom/lonnet/perl/lonnet.pm 2002/05/18 19:21:54 1.227 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.219 2002/05/13 09:32:56 albertel Exp $ +# $Id: lonnet.pm,v 1.227 2002/05/18 19:21:54 harris41 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -77,7 +77,7 @@ use Apache::File; use LWP::UserAgent(); use HTTP::Headers; use vars -qw(%perlvar %hostname %homecache %hostip %spareid %hostdom +qw(%perlvar %hostname %homecache %badhomecache %hostip %spareid %hostdom %libserv %pr %prp %metacache %packagetab %courselogs %accesshash $processmarker $dumpcount %coursedombuf %coursehombuf %courseresdatacache); @@ -482,18 +482,23 @@ sub authenticate { sub homeserver { my ($uname,$udom)=@_; - my $index="$uname:$udom"; - if ($homecache{$index}) { return "$homecache{$index}"; } - + if ($homecache{$index}) { + return "$homecache{$index}"; + } my $tryserver; foreach $tryserver (keys %libserv) { + next if (exists($badhomecache{$index}->{$tryserver})); if ($hostdom{$tryserver} eq $udom) { my $answer=reply("home:$udom:$uname",$tryserver); if ($answer eq 'found') { - $homecache{$index}=$tryserver; + $homecache{$index}=$tryserver; return $tryserver; - } + } else { + $badhomecache{$index}->{$tryserver}=1; + } + } else { + $badhomecache{$index}->{$tryserver}=1; } } return 'no_host'; @@ -2758,6 +2763,7 @@ sub hreflocation { unless (($file=~/^http:\/\//i) || ($file=~/^\//)) { my $finalpath=filelocation($dir,$file); $finalpath=~s/^\/home\/httpd\/html//; + $finalpath=~s-/home/(\w+)/public_html/-/~$1/-; return $finalpath; } else { return $file; @@ -2799,12 +2805,12 @@ sub goodbye { } BEGIN { -# ------------------------------------------- Read access.conf and loncapa.conf +# ---------------------------------- Read loncapa_apache.conf and loncapa.conf # (eventually access.conf will become deprecated) unless ($readit) { { - my $config=Apache::File->new("/etc/httpd/conf/access.conf"); + my $config=Apache::File->new("/etc/httpd/conf/loncapa_apache.conf"); while (my $configline=<$config>) { if ($configline =~ /^[^\#]*PerlSetVar/) { @@ -2825,6 +2831,17 @@ BEGIN { } } } +{ + my $config=Apache::File->new("/etc/httpd/conf/loncapa_apache.conf"); + + while (my $configline=<$config>) { + if ($configline =~ /^[^\#]*PerlSetVar/) { + my ($dummy,$varname,$varvalue)=split(/\s+/,$configline); + chomp($varvalue); + $perlvar{$varname}=$varvalue; + } + } +} # ------------------------------------------------------------- Read hosts file { @@ -3287,7 +3304,7 @@ replicates and subscribes to the file =item * filelocation($dir,$file) : returns file system location of a file based on URI; -meant to be "fairly clean" absolute reference +meant to be "fairly clean" absolute reference, $dir is a directory that relative $file lookups are to looked in ($dir of /a/dir and a file of ../bob will become /a/bob) =item *