File:  [LON-CAPA] / loncom / cgi / ping.pl
Revision 1.9: download - view: text, annotated - select for diffs
Mon Oct 17 17:23:25 2011 UTC (13 years ago) by raeburn
Branches: MAIN
CVS tags: version_2_12_X, version_2_11_X, version_2_11_5_msu, version_2_11_5, version_2_11_4_uiuc, version_2_11_4_msu, version_2_11_4, version_2_11_3_uiuc, version_2_11_3_msu, version_2_11_3, version_2_11_2_uiuc, version_2_11_2_msu, version_2_11_2_educog, version_2_11_2, version_2_11_1, version_2_11_0_RC3, version_2_11_0_RC2, version_2_11_0_RC1, version_2_11_0, version_2_10_X, version_2_10_1, loncapaMITrelate_1, language_hyphenation_merge, language_hyphenation, HEAD, BZ4492-merge, BZ4492-feature_horizontal_radioresponse, BZ4492-feature_Support_horizontal_radioresponse, BZ4492-Support_horizontal_radioresponse
- Rights to run /cgi-bin/ping.pl on any server in the cluster, from any other host
  in the cluster.
- For scripts using lonauthcgi::check_ipbased_access(), access permitted for both 127.0.0.1
  and also if remote IP is same as IP of host server.
- check_domain_ip() - new routine: allows access to scripts from any server which belongs
  to the same domain as the host server.
- update POD for check_ipbased_access().
- Add new global hash: Apache::lonnet::managerstab to store contents of:
  /home/httpd/lonTabs/managers.tab, loaded within BEGIN {} block.
- No automatic access to toggledebug and takeoffline items from server listed in
  managers.tab (unlike other keys in %serverstatus_titles).

#!/usr/bin/perl
# ping cgi-script
# $Id: ping.pl,v 1.9 2011/10/17 17:23:25 raeburn Exp $
#
# 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;

use lib '/home/httpd/lib/perl/';
use Apache::lonnet;
use LONCAPA::loncgi;
use LONCAPA::lonauthcgi;

print("Content-type: text/plain\n\n");

&main();

sub main {
    my $remote_ip = $ENV{'REMOTE_ADDR'};
    my $allowed;
    my @hosts = &Apache::lonnet::get_hosts_from_ip($remote_ip);
    if (@hosts > 0) {
        $allowed = 1;
    } 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')) {
            $allowed = 1;
        }
    }
    if ($allowed) {
        my $testhost=$ENV{'QUERY_STRING'};
        $testhost=~s/\W//g;
        if (&Apache::lonnet::hostname($testhost) ne '') {
            print &Apache::lonnet::reply('ping',$testhost)."\n";
        } else {
            print 'unknown_host';
        }
    } else {
        print 'forbidden';
    }
    return;
}

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