version 1.472, 2011/05/13 02:58:02
|
version 1.480, 2011/08/05 04:35:45
|
Line 92 my %managers; # Ip -> manager names
|
Line 92 my %managers; # Ip -> manager names
|
|
|
my %perlvar; # Will have the apache conf defined perl vars. |
my %perlvar; # Will have the apache conf defined perl vars. |
|
|
|
my $dist; |
|
|
# |
# |
# The hash below is used for command dispatching, and is therefore keyed on the request keyword. |
# The hash below is used for command dispatching, and is therefore keyed on the request keyword. |
# Each element of the hash contains a reference to an array that contains: |
# Each element of the hash contains a reference to an array that contains: |
Line 421 sub ReadManagerTable {
|
Line 423 sub ReadManagerTable {
|
|
|
my $tablename = $perlvar{'lonTabDir'}."/managers.tab"; |
my $tablename = $perlvar{'lonTabDir'}."/managers.tab"; |
if (!open (MANAGERS, $tablename)) { |
if (!open (MANAGERS, $tablename)) { |
if (&loncapa_dns_server()) { |
my $hostname = &Apache::lonnet::hostname($perlvar{'lonHostID'}); |
|
if (&Apache::lonnet::is_LC_dns($hostname)) { |
&logthis('<font color="red">No manager table. Nobody can manage!!</font>'); |
&logthis('<font color="red">No manager table. Nobody can manage!!</font>'); |
} |
} |
return; |
return; |
Line 677 sub PushFile {
|
Line 680 sub PushFile {
|
return "error:$!"; |
return "error:$!"; |
} else { |
} else { |
&logthis('<font color="green"> Installed new '.$tablefile |
&logthis('<font color="green"> Installed new '.$tablefile |
."</font>"); |
." - transaction by: $clientname ($clientip)</font>"); |
my $adminmail = $perlvar{'lonAdmEMail'}; |
my $adminmail = $perlvar{'lonAdmEMail'}; |
my $admindom = &Apache::lonnet::host_domain($perlvar{'lonHostID'}); |
my $admindom = &Apache::lonnet::host_domain($perlvar{'lonHostID'}); |
if ($admindom ne '') { |
if ($admindom ne '') { |
Line 691 sub PushFile {
|
Line 694 sub PushFile {
|
} |
} |
if ($adminmail =~ /^[^\@]+\@[^\@]+$/) { |
if ($adminmail =~ /^[^\@]+\@[^\@]+$/) { |
my $msg = new Mail::Send; |
my $msg = new Mail::Send; |
my $senderaddress = $perlvar{'lonSysEMail'}; |
|
$msg->to($adminmail); |
$msg->to($adminmail); |
$msg->subject('LON-CAPA DNS update on '.$perlvar{'lonHostID'}); |
$msg->subject('LON-CAPA DNS update on '.$perlvar{'lonHostID'}); |
if ($senderaddress) { |
|
$msg->add('From',$senderaddress); |
|
} |
|
$msg->add('Content-type','text/plain; charset=UTF-8'); |
$msg->add('Content-type','text/plain; charset=UTF-8'); |
if (my $fh = $msg->open()) { |
if (my $fh = $msg->open()) { |
print $fh 'Update to '.$tablefile.' from Cluster Manager '. |
print $fh 'Update to '.$tablefile.' from Cluster Manager '. |
$client."\n"; |
"$clientname ($clientip)\n"; |
$fh->close; |
$fh->close; |
} |
} |
} |
} |
Line 712 sub PushFile {
|
Line 711 sub PushFile {
|
|
|
} |
} |
|
|
sub loncapa_dns_server { |
|
my $lonhost = &Apache::lonnet::get_host_ip($perlvar{'lonHostID'}); |
|
my $hoststable = "$perlvar{'lonTabDir'}/hosts.tab"; |
|
my $is_dns_server; |
|
if (!open(HOSTS,"<$hoststable")) { |
|
&logthis('<font color="yellow">Could not open hosts.tab to check for LON-CAPA DNS servers.</font>'); |
|
while (my $host = <HOSTS>) { |
|
chomp($host); |
|
$host =~ s/(^\s+|\s+$)//g; |
|
if ($host =~ /^\Q^$lonhost\E/) { |
|
$is_dns_server = 1; |
|
last; |
|
} |
|
} |
|
close(HOSTS); |
|
} |
|
return $is_dns_server; |
|
} |
|
|
|
# |
# |
# Called to re-init either lonc or lond. |
# Called to re-init either lonc or lond. |
# |
# |
Line 1663 sub ls3_handler {
|
Line 1643 sub ls3_handler {
|
} |
} |
®ister_handler("ls3", \&ls3_handler, 0, 1, 0); |
®ister_handler("ls3", \&ls3_handler, 0, 1, 0); |
|
|
|
sub read_lonnet_global { |
|
my ($cmd,$tail,$client) = @_; |
|
my $userinput = "$cmd:$tail"; |
|
my $requested = &Apache::lonnet::thaw_unescape($tail); |
|
my $result; |
|
my %packagevars = ( |
|
spareid => \%Apache::lonnet::spareid, |
|
perlvar => \%Apache::lonnet::perlvar, |
|
); |
|
my %limit_to = ( |
|
perlvar => { |
|
lonOtherAuthen => 1, |
|
lonBalancer => 1, |
|
lonVersion => 1, |
|
lonSysEMail => 1, |
|
lonHostID => 1, |
|
lonRole => 1, |
|
lonDefDomain => 1, |
|
lonLoadLim => 1, |
|
lonUserLoadLim => 1, |
|
} |
|
); |
|
if (ref($requested) eq 'HASH') { |
|
foreach my $what (keys(%{$requested})) { |
|
my $response; |
|
my $items = {}; |
|
if (exists($packagevars{$what})) { |
|
if (ref($limit_to{$what}) eq 'HASH') { |
|
foreach my $varname (keys(%{$packagevars{$what}})) { |
|
if ($limit_to{$what}{$varname}) { |
|
$items->{$varname} = $packagevars{$what}{$varname}; |
|
} |
|
} |
|
} else { |
|
$items = $packagevars{$what}; |
|
} |
|
if ($what eq 'perlvar') { |
|
if (!exists($packagevars{$what}{'lonBalancer'})) { |
|
if ($dist =~ /^(centos|rhes|fedora|scientific)/) { |
|
my $othervarref=LONCAPA::Configuration::read_conf('httpd.conf'); |
|
if (ref($othervarref) eq 'HASH') { |
|
$items->{'lonBalancer'} = $othervarref->{'lonBalancer'}; |
|
} |
|
} |
|
} |
|
} |
|
$response = &Apache::lonnet::freeze_escape($items); |
|
} |
|
$result .= &escape($what).'='.$response.'&'; |
|
} |
|
} |
|
$result =~ s/\&$//; |
|
&Reply($client,\$result,$userinput); |
|
return 1; |
|
} |
|
®ister_handler("readlonnetglobal", \&read_lonnet_global, 0, 1, 0); |
|
|
|
sub server_devalidatecache_handler { |
|
my ($cmd,$tail,$client) = @_; |
|
my $userinput = "$cmd:$tail"; |
|
my ($name,$id) = map { &unescape($_); } split(/:/,$tail); |
|
&Apache::lonnet::devalidate_cache_new($name,$id); |
|
my $result = 'ok'; |
|
&Reply($client,\$result,$userinput); |
|
return 1; |
|
} |
|
®ister_handler("devalidatecache", \&devalidatecache_handler, 0, 1, 0); |
|
|
sub server_timezone_handler { |
sub server_timezone_handler { |
my ($cmd,$tail,$client) = @_; |
my ($cmd,$tail,$client) = @_; |
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
Line 2300 sub fetch_user_file_handler {
|
Line 2348 sub fetch_user_file_handler {
|
|
|
my $destname=$udir.'/'.$ufile; |
my $destname=$udir.'/'.$ufile; |
my $transname=$udir.'/'.$ufile.'.in.transit'; |
my $transname=$udir.'/'.$ufile.'.in.transit'; |
my $remoteurl='http://'.$clientip.'/userfiles/'.$fname; |
my $clientprotocol=$Apache::lonnet::protocol{$clientname}; |
|
$clientprotocol = 'http' if ($clientprotocol ne 'https'); |
|
my $remoteurl=$clientprotocol.'://'.$clientip.'/userfiles/'.$fname; |
my $response; |
my $response; |
Debug("Remote URL : $remoteurl Transfername $transname Destname: $destname"); |
Debug("Remote URL : $remoteurl Transfername $transname Destname: $destname"); |
alarm(120); |
alarm(120); |
Line 6114 sub HUPSMAN { # sig
|
Line 6164 sub HUPSMAN { # sig
|
# a setuid perl script that can be root for us to do this job. |
# a setuid perl script that can be root for us to do this job. |
# |
# |
sub ReloadApache { |
sub ReloadApache { |
my $execdir = $perlvar{'lonDaemons'}; |
# --------------------------- Handle case of another apachereload process (locking) |
my $script = $execdir."/apachereload"; |
if (&LONCAPA::try_to_lock('/tmp/lock_apachereload')) { |
system($script); |
my $execdir = $perlvar{'lonDaemons'}; |
|
my $script = $execdir."/apachereload"; |
|
system($script); |
|
unlink('/tmp/lock_apachereload'); # Remove the lock file. |
|
} |
} |
} |
|
|
# |
# |
Line 6380 $SIG{USR2} = \&UpdateHosts;
|
Line 6434 $SIG{USR2} = \&UpdateHosts;
|
&Apache::lonnet::load_hosts_tab(); |
&Apache::lonnet::load_hosts_tab(); |
my %iphost = &Apache::lonnet::get_iphost(1); |
my %iphost = &Apache::lonnet::get_iphost(1); |
|
|
my $dist=`$perlvar{'lonDaemons'}/distprobe`; |
$dist=`$perlvar{'lonDaemons'}/distprobe`; |
|
|
my $arch = `uname -i`; |
my $arch = `uname -i`; |
|
chomp($arch); |
if ($arch eq 'unknown') { |
if ($arch eq 'unknown') { |
$arch = `uname -m`; |
$arch = `uname -m`; |
|
chomp($arch); |
} |
} |
|
|
# -------------------------------------------------------------- |
# -------------------------------------------------------------- |
Line 7183 sub subscribe {
|
Line 7239 sub subscribe {
|
# the metadata |
# the metadata |
unless ($fname=~/\.meta$/) { &unsub("$fname.meta",$clientip); } |
unless ($fname=~/\.meta$/) { &unsub("$fname.meta",$clientip); } |
$fname=~s/\/home\/httpd\/html\/res/raw/; |
$fname=~s/\/home\/httpd\/html\/res/raw/; |
$fname="http://".&Apache::lonnet::hostname($perlvar{'lonHostID'})."/".$fname; |
my $protocol = $Apache::lonnet::protocol{$perlvar{'lonHostID'}}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
$fname=$protocol.'://'.&Apache::lonnet::hostname($perlvar{'lonHostID'})."/".$fname; |
$result="$fname\n"; |
$result="$fname\n"; |
} |
} |
} else { |
} else { |