version 1.5, 1999/11/22 17:23:13
|
version 1.8, 2000/01/13 14:48:36
|
Line 2
|
Line 2
|
# TCP networking package |
# TCP networking package |
# 6/1/99,6/2,6/10,6/11,6/12,6/14,6/26,6/28,6/29,6/30, |
# 6/1/99,6/2,6/10,6/11,6/12,6/14,6/26,6/28,6/29,6/30, |
# 7/1,7/2,7/9,7/10,7/12,7/14,7/15,7/19, |
# 7/1,7/2,7/9,7/10,7/12,7/14,7/15,7/19, |
# 11/8,11/16,11/18,11/22 Gerd Kortemeyer |
# 11/8,11/16,11/18,11/22,11/23,12/22, |
|
# 01/06,01/13 Gerd Kortemeyer |
|
|
package Apache::lonnet; |
package Apache::lonnet; |
|
|
use strict; |
use strict; |
use Apache::File; |
use Apache::File; |
|
use LWP::UserAgent(); |
use vars qw(%perlvar %hostname %homecache %spareid %hostdom %libserv $readit); |
use vars qw(%perlvar %hostname %homecache %spareid %hostdom %libserv $readit); |
use IO::Socket; |
use IO::Socket; |
|
use Apache::Constants qw(:common :http); |
|
|
# --------------------------------------------------------------------- Logging |
# --------------------------------------------------------------------- Logging |
|
|
Line 101 sub critical {
|
Line 104 sub critical {
|
{ |
{ |
my $dfh; |
my $dfh; |
if ($dfh=Apache::File->new(">$dfilename")) { |
if ($dfh=Apache::File->new(">$dfilename")) { |
print $dfh "$server:$cmd\n"; |
print $dfh "$cmd\n"; |
} |
} |
} |
} |
sleep 2; |
sleep 2; |
Line 113 sub critical {
|
Line 116 sub critical {
|
} |
} |
} |
} |
chomp($wcmd); |
chomp($wcmd); |
if ($wcmd eq "$server:$cmd") { |
if ($wcmd eq $cmd) { |
&logthis("Connection buffer $dfilename: $cmd"); |
&logthis("Connection buffer $dfilename: $cmd"); |
&logperm("D:$server:$cmd"); |
&logperm("D:$server:$cmd"); |
return 'con_delayed'; |
return 'con_delayed'; |
Line 130 sub critical {
|
Line 133 sub critical {
|
# ---------------------------------------------------------- Append Environment |
# ---------------------------------------------------------- Append Environment |
|
|
sub appenv { |
sub appenv { |
my ($name,$value)=@_; |
my %newenv=@_; |
my $fh; |
my @oldenv; |
unless ($fh=Apache::File->new(">>$ENV{'user.environment'}")) { |
{ |
|
my $fh; |
|
unless ($fh=Apache::File->new("$ENV{'user.environment'}")) { |
return 'error'; |
return 'error'; |
|
} |
|
@oldenv=<$fh>; |
|
} |
|
for (my $i=0; $i<=$#oldenv; $i++) { |
|
chomp($oldenv[$i]); |
|
my ($name,$value)=split(/=/,$oldenv[$i]); |
|
$newenv{$name}=$value; |
|
} |
|
{ |
|
my $fh; |
|
unless ($fh=Apache::File->new(">$ENV{'user.environment'}")) { |
|
return 'error'; |
|
} |
|
my $newname; |
|
foreach $newname (keys %newenv) { |
|
print $fh "$newname=$newenv{$newname}\n"; |
|
} |
} |
} |
print $fh "$name=$value\n"; |
|
return 'ok'; |
return 'ok'; |
} |
} |
|
|
Line 215 sub subscribe {
|
Line 236 sub subscribe {
|
return $answer; |
return $answer; |
} |
} |
|
|
|
# -------------------------------------------------------------- Replicate file |
|
|
|
sub repcopy { |
|
my $filename=shift; |
|
my $transname="$filename.in.transfer"; |
|
my $remoteurl=subscribe($filename); |
|
if ($remoteurl eq 'con_lost') { |
|
&logthis("Subscribe returned con_lost: $filename"); |
|
return HTTP_SERVICE_UNAVAILABLE; |
|
} elsif ($remoteurl eq 'not_found') { |
|
&logthis("Subscribe returned not_found: $filename"); |
|
return HTTP_NOT_FOUND; |
|
} elsif ($remoteurl eq 'forbidden') { |
|
&logthis("Subscribe returned forbidden: $filename"); |
|
return FORBIDDEN; |
|
} else { |
|
my @parts=split(/\//,$filename); |
|
my $path="/$parts[1]/$parts[2]/$parts[3]/$parts[4]"; |
|
if ($path ne "$perlvar{'lonDocRoot'}/res") { |
|
&logthis("Malconfiguration for replication: $filename"); |
|
return HTTP_BAD_REQUEST; |
|
} |
|
my $count; |
|
for ($count=5;$count<$#parts;$count++) { |
|
$path.="/$parts[$count]"; |
|
if ((-e $path)!=1) { |
|
mkdir($path,0777); |
|
} |
|
} |
|
my $ua=new LWP::UserAgent; |
|
my $request=new HTTP::Request('GET',"$remoteurl"); |
|
my $response=$ua->request($request,$transname); |
|
if ($response->is_error()) { |
|
unlink($transname); |
|
my $message=$response->status_line; |
|
$r->log_reason("LWP GET: $message",$filename); |
|
return HTTP_SERVICE_UNAVAILABLE; |
|
} else { |
|
rename($transname,$filename); |
|
$r->filename($filename); |
|
return OK; |
|
} |
|
} |
|
} |
|
|
|
|
# ================================================================ Main Program |
# ================================================================ Main Program |
|
|
Line 227 if ($readit ne 'done') {
|
Line 293 if ($readit ne 'done') {
|
while (my $configline=<$config>) { |
while (my $configline=<$config>) { |
if ($configline =~ /PerlSetVar/) { |
if ($configline =~ /PerlSetVar/) { |
my ($dummy,$varname,$varvalue)=split(/\s+/,$configline); |
my ($dummy,$varname,$varvalue)=split(/\s+/,$configline); |
|
chomp($varvalue); |
$perlvar{$varname}=$varvalue; |
$perlvar{$varname}=$varvalue; |
} |
} |
} |
} |