version 1.116.2.1, 2008/12/10 16:42:51
|
version 1.119, 2008/11/18 19:14:34
|
Line 27
|
Line 27
|
# |
# |
### |
### |
|
|
|
=head1 NAME |
|
|
|
Apache::lonacc - Cookie Based Access Handler |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked (for various locations) by /etc/httpd/conf/srm.conf: |
|
|
|
PerlAccessHandler Apache::lonacc |
|
|
|
=head1 INTRODUCTION |
|
|
|
This module enables cookie based authentication and is used |
|
to control access for many different LON-CAPA URIs. |
|
|
|
Whenever the client sends the cookie back to the server, |
|
this cookie is handled by either lonacc.pm or loncacc.pm |
|
(see srm.conf for what is invoked when). If |
|
the cookie is missing or invalid, the user is re-challenged |
|
for login information. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 HANDLER SUBROUTINE |
|
|
|
This routine is called by Apache and mod_perl. |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
transfer profile into environment |
|
|
|
=item * |
|
|
|
load POST parameters |
|
|
|
=item * |
|
|
|
check access |
|
|
|
=item * |
|
|
|
if allowed, get symb, log, generate course statistics if applicable |
|
|
|
=item * |
|
|
|
otherwise return error |
|
|
|
=item * |
|
|
|
see if public resource |
|
|
|
=item * |
|
|
|
store attempted access |
|
|
|
=back |
|
|
|
=cut |
|
|
|
|
package Apache::lonacc; |
package Apache::lonacc; |
|
|
use strict; |
use strict; |
Line 93 sub get_posted_cgi {
|
Line 156 sub get_posted_cgi {
|
if (ref($fields) eq 'ARRAY') { |
if (ref($fields) eq 'ARRAY') { |
next if (!grep(/^\Q$name\E$/,@{$fields})); |
next if (!grep(/^\Q$name\E$/,@{$fields})); |
} |
} |
if ($fname) { |
if ($fname) { |
if ($env{'form.symb'} ne '') { |
if ($env{'form.symb'} ne '') { |
my $size = (length($value))/(1024.0 * 1024.0); |
my $size = (length($value))/(1024.0 * 1024.0); |
if (&upload_size_allowed($name,$size,$fname) eq 'ok') { |
if (&upload_size_allowed($name,$size,$fname) eq 'ok') { |
Line 102 sub get_posted_cgi {
|
Line 165 sub get_posted_cgi {
|
&Apache::loncommon::add_to_env("form.$name",$value); |
&Apache::loncommon::add_to_env("form.$name",$value); |
} |
} |
} else { |
} else { |
$env{"form.$name.filename"}=$fname; |
$env{"form.$name.filename"}=$fname; |
$env{"form.$name.mimetype"}=$fmime; |
$env{"form.$name.mimetype"}=$fmime; |
&Apache::loncommon::add_to_env("form.$name",$value); |
&Apache::loncommon::add_to_env("form.$name",$value); |
} |
} |
} else { |
} else { |
$value=~s/\s+$//s; |
$value=~s/\s+$//s; |
&Apache::loncommon::add_to_env("form.$name",$value); |
&Apache::loncommon::add_to_env("form.$name",$value); |
} |
} |
} |
} |
if ($i<$#lines) { |
if ($i<$#lines) { |
$i++; |
$i++; |
Line 161 sub get_posted_cgi {
|
Line 224 sub get_posted_cgi {
|
# Add form.HWFILESIZE.$part_$id to %env with file size (MB) |
# Add form.HWFILESIZE.$part_$id to %env with file size (MB) |
# If file exceeds maximum allowed size, add form.HWFILETOOBIG.$part_$id to %env. |
# If file exceeds maximum allowed size, add form.HWFILETOOBIG.$part_$id to %env. |
# |
# |
|
|
sub upload_size_allowed { |
sub upload_size_allowed { |
my ($name,$size,$fname) = @_; |
my ($name,$size,$fname) = @_; |
if ($name =~ /^HWFILE(\w+)$/) { |
if ($name =~ /^HWFILE(\w+)$/) { |
my $ident = $1; |
my $ident = $1; |
my $item = 'HWFILESIZE'.$ident; |
my $item = 'HWFILESIZE'.$ident; |
my $savesize = sprintf("%.6f",$size); |
&Apache::loncommon::add_to_env("form.$item",$size); |
&Apache::loncommon::add_to_env("form.$item",$savesize); |
|
my $maxsize= &Apache::lonnet::EXT("resource.$ident.maxfilesize"); |
my $maxsize= &Apache::lonnet::EXT("resource.$ident.maxfilesize"); |
if (!$maxsize) { |
if (!$maxsize) { |
$maxsize = 10.0; # FIXME This should become a domain configuration. |
$maxsize = 100.0; |
} |
} |
if ($size > $maxsize) { |
if ($size > $maxsize) { |
my $warn = 'HWFILETOOBIG'.$ident; |
my $warn = 'HWFILETOOBIG'.$ident; |
Line 182 sub upload_size_allowed {
|
Line 244 sub upload_size_allowed {
|
return 'ok'; |
return 'ok'; |
} |
} |
|
|
|
|
# handle the case of the single sign on user, at this point $r->user |
# handle the case of the single sign on user, at this point $r->user |
# will be set and valid now need to find the loncapa user info and possibly |
# will be set and valid now need to find the loncapa user info and possibly |
# balance them |
# balance them |
# returns OK if it was a SSO and user was handled |
# returns OK if it was a SSO and user was handled |
# undef if not SSO or no means to hanle the user |
# undef if not SSO or no means to hanle the user |
|
|
sub sso_login { |
sub sso_login { |
my ($r,$handle) = @_; |
my ($r,$handle) = @_; |
|
|
Line 460 sub handler {
|
Line 522 sub handler {
|
|
|
1; |
1; |
__END__ |
__END__ |
|
|
=head1 NAME |
|
|
|
Apache::lonacc - Cookie Based Access Handler |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked (for various locations) by /etc/httpd/conf/srm.conf: |
|
|
|
PerlAccessHandler Apache::lonacc |
|
|
|
=head1 INTRODUCTION |
|
|
|
This module enables cookie based authentication and is used |
|
to control access for many different LON-CAPA URIs. |
|
|
|
Whenever the client sends the cookie back to the server, |
|
this cookie is handled by either lonacc.pm or loncacc.pm |
|
(see srm.conf for what is invoked when). If |
|
the cookie is missing or invalid, the user is re-challenged |
|
for login information. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 HANDLER SUBROUTINE |
|
|
|
This routine is called by Apache and mod_perl. |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
transfer profile into environment |
|
|
|
=item * |
|
|
|
load POST parameters |
|
|
|
=item * |
|
|
|
check access |
|
|
|
=item * |
|
|
|
if allowed, get symb, log, generate course statistics if applicable |
|
|
|
=item * |
|
|
|
otherwise return error |
|
|
|
=item * |
|
|
|
see if public resource |
|
|
|
=item * |
|
|
|
store attempted access |
|
|
|
=back |
|
|
|
=cut |
|