Diff for /loncom/cgi/ping.pl between versions 1.1 and 1.9

version 1.1, 2002/02/18 20:59:36 version 1.9, 2011/10/17 17:23:25
Line 1 Line 1
 #!/usr/bin/perl  #!/usr/bin/perl
   
 # The LearningOnline Network with CAPA  
 # ping cgi-script  # ping cgi-script
   # $Id$
   #
   # Copyright Michigan State University Board of Trustees
   #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # http://www.lon-capa.org/
   #
   
   use strict;
 $|=1;  $|=1;
   
 use IO::File;  use lib '/home/httpd/lib/perl/';
 use IO::Socket;  use Apache::lonnet;
   use LONCAPA::loncgi;
 # -------------------------------------------------- Non-critical communication  use LONCAPA::lonauthcgi;
 sub reply {  
     my ($cmd,$server)=@_;  print("Content-type: text/plain\n\n");
     my $peerfile="$perlvar{'lonSockDir'}/$server";  
     my $client=IO::Socket::UNIX->new(Peer    =>"$peerfile",  &main();
                                      Type    => SOCK_STREAM,  
                                      Timeout => 10)  sub main {
        or return "con_lost";      my $remote_ip = $ENV{'REMOTE_ADDR'};
     print $client "$cmd\n";      my $allowed;
     my $answer=<$client>;      my @hosts = &Apache::lonnet::get_hosts_from_ip($remote_ip);
     chomp($answer);      if (@hosts > 0) {
     if (!$answer) { $answer="con_lost"; }          $allowed = 1;
     return $answer;      } elsif (&LONCAPA::lonauthcgi::check_ipbased_access('ping',$remote_ip)) {
 }          $allowed = 1;
       } elsif (&LONCAPA::loncgi::check_cookie_and_load_env()) {
           if (&LONCAPA::lonauthcgi::can_view('ping')) {
 # ------------------------------------------------------------ Read access.conf              $allowed = 1;
 {          }
     my $config=IO::File->new("/etc/httpd/conf/access.conf");      }
       if ($allowed) {
     while (my $configline=<$config>) {          my $testhost=$ENV{'QUERY_STRING'};
         if ($configline =~ /PerlSetVar/) {          $testhost=~s/\W//g;
    my ($dummy,$varname,$varvalue)=split(/\s+/,$configline);          if (&Apache::lonnet::hostname($testhost) ne '') {
            $perlvar{$varname}=$varvalue;              print &Apache::lonnet::reply('ping',$testhost)."\n";
           } else {
               print 'unknown_host';
         }          }
       } else {
           print 'forbidden';
     }      }
     delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed      return;
     delete $perlvar{'lonSqlAccess'}; # remove since sensitive and not needed  
 }  }
   
 $testhost=$ENV{'QUERY_STRING'};  
 $testhost=~s/\W//g;  
   
 print "Content-type: text/plain\n\n".  
       &reply('ping',$testhost)."\n";  

Removed from v.1.1  
changed lines
  Added in v.1.9


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>