version 1.1.1.1, 1999/10/13 17:48:51
|
version 1.6, 1999/11/23 15:43:34
|
Line 1
|
Line 1
|
# The LearningOnline Network |
# The LearningOnline Network |
# 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 Gerd Kortemeyer |
# 7/1,7/2,7/9,7/10,7/12,7/14,7/15,7/19, |
|
# 11/8,11/16,11/18,11/22,11/23 Gerd Kortemeyer |
|
|
package Apache::lonnet; |
package Apache::lonnet; |
|
|
Line 54 sub reply {
|
Line 55 sub reply {
|
return $answer; |
return $answer; |
} |
} |
|
|
# ------------------------------------------------ Try to send delayed messages |
|
|
|
sub senddelayed { |
|
my $server=shift; |
|
my $dfname; |
|
my $path="$perlvar{'lonSockDir'}/delayed"; |
|
while ($dfname=<$path/*.$server>) { |
|
my $wcmd; |
|
{ |
|
my $dfh=Apache::File->new($dfname); |
|
$wcmd=<$dfh>; |
|
} |
|
my ($server,$cmd)=split(/:/,$wcmd); |
|
chomp($cmd); |
|
my $answer=subreply($cmd,$server); |
|
if ($answer ne 'con_lost') { |
|
unlink("$dfname"); |
|
&logthis("Delayed $cmd to $server: $answer"); |
|
&logperm("S:$server:$cmd"); |
|
} |
|
} |
|
} |
|
|
|
# ----------------------------------------------------------- Send USR1 to lonc |
# ----------------------------------------------------------- Send USR1 to lonc |
|
|
sub reconlonc { |
sub reconlonc { |
Line 106 sub reconlonc {
|
Line 84 sub reconlonc {
|
# ------------------------------------------------------ Critical communication |
# ------------------------------------------------------ Critical communication |
sub critical { |
sub critical { |
my ($cmd,$server)=@_; |
my ($cmd,$server)=@_; |
&senddelayed($server); |
|
my $answer=reply($cmd,$server); |
my $answer=reply($cmd,$server); |
if ($answer eq 'con_lost') { |
if ($answer eq 'con_lost') { |
my $pingreply=reply('ping',$server); |
my $pingreply=reply('ping',$server); |
Line 117 sub critical {
|
Line 94 sub critical {
|
if ($answer eq 'con_lost') { |
if ($answer eq 'con_lost') { |
my $now=time; |
my $now=time; |
my $middlename=$cmd; |
my $middlename=$cmd; |
|
$middlename=substr($middlename,0,16); |
$middlename=~s/\W//g; |
$middlename=~s/\W//g; |
my $dfilename= |
my $dfilename= |
"$perlvar{'lonSockDir'}/delayed/$now.$middlename.$server"; |
"$perlvar{'lonSockDir'}/delayed/$now.$middlename.$server"; |
Line 149 sub critical {
|
Line 127 sub critical {
|
return $answer; |
return $answer; |
} |
} |
|
|
|
# ---------------------------------------------------------- Append Environment |
|
|
|
sub appenv { |
|
my %newenv=@_; |
|
my @oldenv; |
|
{ |
|
my $fh; |
|
unless ($fh=Apache::File->new("$ENV{'user.environment'}")) { |
|
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"; |
|
} |
|
} |
|
return 'ok'; |
|
} |
|
|
# ------------------------------ Find server with least workload from spare.tab |
# ------------------------------ Find server with least workload from spare.tab |
sub spareserver { |
sub spareserver { |
Line 171 sub authenticate {
|
Line 178 sub authenticate {
|
|
|
if (($perlvar{'lonRole'} eq 'library') && |
if (($perlvar{'lonRole'} eq 'library') && |
($udom eq $perlvar{'lonDefDomain'})) { |
($udom eq $perlvar{'lonDefDomain'})) { |
my $subdir=$uname; |
my $answer=reply("encrypt:auth:$udom:$uname:$upass",$perlvar{'lonHostID'}); |
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; |
if ($answer =~ /authorized/) { |
my $passfilename="$perlvar{'lonUsersDir'}/$udom/$subdir/$uname/passwd"; |
if ($answer eq 'authorized') { return $perlvar{'lonHostID'}; } |
if (-e $passfilename) { |
if ($answer eq 'non_authorized') { return 'no_host'; } |
my $pf = Apache::File->new($passfilename); |
} |
my $realpasswd=<$pf>; |
|
chomp($realpasswd); |
|
if ( $realpasswd eq $upass ) { |
|
return $perlvar{'lonHostID'}; |
|
} else { |
|
return 'no_host'; |
|
} |
|
} |
|
} |
} |
|
|
my $tryserver; |
my $tryserver; |
foreach $tryserver (keys %libserv) { |
foreach $tryserver (keys %libserv) { |
if ($hostdom{$tryserver} eq $udom) { |
if ($hostdom{$tryserver} eq $udom) { |
my $answer=reply("auth:$udom:$uname:$upass",$tryserver); |
my $answer=reply("enc:auth:$udom:$uname:$upass",$tryserver); |
if ($answer =~ /authorized/) { |
if ($answer =~ /authorized/) { |
if ($answer eq 'authorized') { return $tryserver; } |
if ($answer eq 'authorized') { return $tryserver; } |
} |
} |