--- loncom/lond 2011/05/13 02:58:02 1.472 +++ loncom/lond 2011/07/31 22:55:48 1.477 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.472 2011/05/13 02:58:02 raeburn Exp $ +# $Id: lond,v 1.477 2011/07/31 22:55:48 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,7 +60,7 @@ my $DEBUG = 0; # Non zero to ena my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.472 $'; #' stupid emacs +my $VERSION='$Revision: 1.477 $'; #' stupid emacs my $remoteVERSION; my $currenthostid="default"; my $currentdomainid; @@ -421,7 +421,8 @@ sub ReadManagerTable { my $tablename = $perlvar{'lonTabDir'}."/managers.tab"; if (!open (MANAGERS, $tablename)) { - if (&loncapa_dns_server()) { + my $hostname = &Apache::lonnet::hostname($perlvar{'lonHostID'}); + if (&Apache::lonnet::is_LC_dns($hostname)) { &logthis('No manager table. Nobody can manage!!'); } return; @@ -677,7 +678,7 @@ sub PushFile { return "error:$!"; } else { &logthis(' Installed new '.$tablefile - .""); + ." - transaction by: $clientname ($clientip)"); my $adminmail = $perlvar{'lonAdmEMail'}; my $admindom = &Apache::lonnet::host_domain($perlvar{'lonHostID'}); if ($admindom ne '') { @@ -691,16 +692,12 @@ sub PushFile { } if ($adminmail =~ /^[^\@]+\@[^\@]+$/) { my $msg = new Mail::Send; - my $senderaddress = $perlvar{'lonSysEMail'}; $msg->to($adminmail); $msg->subject('LON-CAPA DNS update on '.$perlvar{'lonHostID'}); - if ($senderaddress) { - $msg->add('From',$senderaddress); - } $msg->add('Content-type','text/plain; charset=UTF-8'); if (my $fh = $msg->open()) { print $fh 'Update to '.$tablefile.' from Cluster Manager '. - $client."\n"; + "$clientname ($clientip)\n"; $fh->close; } } @@ -712,25 +709,6 @@ 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('Could not open hosts.tab to check for LON-CAPA DNS servers.'); - while (my $host = ) { - 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. # @@ -1663,6 +1641,35 @@ sub ls3_handler { } ®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; + if (ref($requested) eq 'HASH') { + foreach my $what (keys(%{$requested})) { + my $type = $requested->{$what}; + my $lonnetglobal = 'Apache::lonnet::'.$what; + my $response; + if ($type eq 'HASH') { + if (defined(%{$lonnetglobal})) { + my $hashref = \%{$lonnetglobal}; + $response = &Apache::lonnet::freeze_escape($hashref); + } + } else { + if (defined(${$lonnetglobal})) { + $response = &escape(${$item}); + } + } + } + $result .= &escape($what).'='.$response.'&'; + } + $result =~ s/\&$//; + &Reply($client,\$result,$userinput); + return 1; +} +®ister_handler("readlonnetglobal", \&read_lonnet_global, 0, 1, 0); + sub server_timezone_handler { my ($cmd,$tail,$client) = @_; my $userinput = "$cmd:$tail"; @@ -2300,7 +2307,9 @@ sub fetch_user_file_handler { my $destname=$udir.'/'.$ufile; 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; Debug("Remote URL : $remoteurl Transfername $transname Destname: $destname"); alarm(120); @@ -6114,9 +6123,13 @@ sub HUPSMAN { # sig # a setuid perl script that can be root for us to do this job. # sub ReloadApache { - my $execdir = $perlvar{'lonDaemons'}; - my $script = $execdir."/apachereload"; - system($script); +# --------------------------- Handle case of another apachereload process (locking) + if (&LONCAPA::try_to_lock('/tmp/lock_apachereload')) { + my $execdir = $perlvar{'lonDaemons'}; + my $script = $execdir."/apachereload"; + system($script); + unlink('/tmp/lock_apachereload'); # Remove the lock file. + } } # @@ -6383,8 +6396,10 @@ my %iphost = &Apache::lonnet::get_iphost my $dist=`$perlvar{'lonDaemons'}/distprobe`; my $arch = `uname -i`; +chomp($arch); if ($arch eq 'unknown') { $arch = `uname -m`; + chomp($arch); } # -------------------------------------------------------------- @@ -7183,7 +7198,9 @@ sub subscribe { # the metadata unless ($fname=~/\.meta$/) { &unsub("$fname.meta",$clientip); } $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"; } } else {