File:
[LON-CAPA] /
loncom /
auth /
lonipcheck.pm
Revision
1.1:
download - view:
text,
annotated -
select for diffs
Fri Sep 5 17:43:31 2008 UTC (16 years ago) by
raeburn
Branches:
MAIN
CVS tags:
version_2_9_X,
version_2_9_99_0,
version_2_9_1,
version_2_9_0,
version_2_8_X,
version_2_8_99_1,
version_2_8_99_0,
version_2_8_2,
version_2_8_1,
version_2_8_0,
version_2_7_X,
version_2_7_99_1,
version_2_7_99_0,
version_2_7_1,
version_2_11_X,
version_2_11_5,
version_2_11_4_uiuc,
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,
version_2_10_0_RC2,
version_2_10_0_RC1,
version_2_10_0,
loncapaMITrelate_1,
language_hyphenation_merge,
language_hyphenation,
bz6209-base,
bz6209,
bz5969,
bz2851,
PRINT_INCOMPLETE_base,
PRINT_INCOMPLETE,
HEAD,
GCI_3,
GCI_2,
GCI_1,
BZ5971-printing-apage,
BZ5434-fox,
BZ4492-merge,
BZ4492-feature_horizontal_radioresponse,
BZ4492-feature_Support_horizontal_radioresponse,
BZ4492-Support_horizontal_radioresponse
Bug 5777
- IP-based access control extending to encompass additional resources (i.e., HTML files, Bulletin Boards, External Resources, Simpe Pages), beyond existing support for problem/exam/survey files.
- New lonipcheck.pm added as a chained content handler, called after londatecheck.
- &check_ip_acc() moved form lonhomework.pm to loncommon.pm to be more widely available.
1: # Checks IP access settings - disable subsequent PerlHandlers if client IP blocked
2: # $Id: lonipcheck.pm,v 1.1 2008/09/05 17:43:31 raeburn Exp $
3: #
4: # Copyright Michigan State University Board of Trustees
5: #
6: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
7: #
8: # LON-CAPA is free software; you can redistribute it and/or modify
9: # it under the terms of the GNU General Public License as published by
10: # the Free Software Foundation; either version 2 of the License, or
11: # (at your option) any later version.
12: #
13: # LON-CAPA is distributed in the hope that it will be useful,
14: # but WITHOUT ANY WARRANTY; without even the implied warranty of
15: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16: # GNU General Public License for more details.
17: #
18: # You should have received a copy of the GNU General Public License
19: # along with LON-CAPA; if not, write to the Free Software
20: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21: #
22: # /home/httpd/html/adm/gpl.txt
23: #
24: # http://www.lon-capa.org/
25: #
26:
27: use strict;
28: package Apache::lonipcheck;
29: use Apache::lonnet;
30: use Apache::lonlocal;
31: use Apache::loncommon();
32: use Apache::Constants qw(:common :http :methods);
33:
34: sub ip_access_check {
35: my $symb=$env{'request.symb'};
36: if ($env{'request.state'} ne "construct") {
37: my $idacc = &Apache::lonnet::EXT('resource.0.acc',$symb);
38: my $allowed=&Apache::loncommon::check_ip_acc($idacc);
39: if (!$allowed) {
40: return('INVALID_ACCESS',
41: '<h1>'.&mt('Not open to be viewed').'</h1>'.
42: &mt("This resource can not be accessed from your location."));
43:
44: }
45: }
46: return ('OPEN');
47: }
48:
49: sub handler {
50: my ($r)=@_;
51: if (&Apache::lonnet::allowed('bre',$r->uri) eq 'F') {
52: return DECLINED;
53: }
54: my ($status,$msg)=&ip_access_check();
55: if ($status ne 'OPEN') {
56: $r->set_handlers('PerlHandler'=>undef);
57: &Apache::loncommon::content_type($r,'text/html');
58: $r->send_http_header;
59: return OK if $r->header_only;
60: my $start_page =
61: &Apache::loncommon::start_page('Not Open',undef,
62: {'bgcolor' => '#FFFFFF',
63: 'force_register' => 1,});
64: my $end_page = &Apache::loncommon::end_page();
65: $r->print($start_page.$msg.$end_page);
66:
67: return OK;
68: }
69: return DECLINED;
70: }
71: 1;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>