--- loncom/auth/lonacc.pm 2014/10/04 02:59:32 1.158 +++ loncom/auth/lonacc.pm 2016/08/16 20:36:45 1.159.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: lonacc.pm,v 1.158 2014/10/04 02:59:32 raeburn Exp $ +# $Id: lonacc.pm,v 1.159.2.4 2016/08/16 20:36:45 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -109,7 +109,6 @@ sub cleanup { my ($r)=@_; if (! $r->is_initial_req()) { return DECLINED; } &Apache::lonnet::save_cache(); - &Apache::lontexconvert::jsMath_reset(); return OK; } @@ -290,7 +289,10 @@ sub sso_login { return undef; } - my ($user) = ($r->user =~ m/([a-zA-Z0-9_\-@.]*)/); + my ($user) = ($r->user =~ m/^($match_username)$/); + if ($user eq '') { + return undef; + } my $query = $r->args; my %form; @@ -350,14 +352,7 @@ sub sso_login { } else { # need to login them in, so generate the need data that # migrate expects to do login - my $ip; - my $c = $r->connection; - eval { - $ip = $c->remote_ip(); - }; - if ($@) { - $ip = $c->client_ip(); - } + my $ip = $r->get_remote_host(); my %info=('ip' => $ip, 'domain' => $domain, 'username' => $user, @@ -445,7 +440,10 @@ sub handler { my ($is_balancer,$otherserver); if ($handle eq '') { - unless (($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) { + unless ((($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) || + ($requrl =~ m{^/public/$match_domain/$match_courseid/syllabus}) || + ($requrl =~ m{^/adm/help/}) || + ($requrl =~ m{^/res/$match_domain/$match_username/})) { $r->log_reason("Cookie not valid", $r->filename); } } elsif ($handle ne '') { @@ -566,6 +564,13 @@ sub handler { if ($requrl !~ m{^/(?:adm|public|prtspool)/} || $requrl =~ /^\/adm\/.*\/(smppg|bulletinboard)(\?|$ )/x) { my $access=&Apache::lonnet::allowed('bre',$requrl); + if ($handle eq '') { + unless ($access eq 'F') { + if ($requrl =~ m{^/res/$match_domain/$match_username/}) { + $r->log_reason("Cookie not valid", $r->filename); + } + } + } if ($access eq '1') { $env{'user.error.msg'}="$requrl:bre:0:0:Choose Course"; return HTTP_NOT_ACCEPTABLE; @@ -593,6 +598,12 @@ sub handler { return HTTP_NOT_ACCEPTABLE; } } + } elsif (($handle =~ /^publicuser_\d+$/) && (&Apache::lonnet::is_portfolio_url($requrl))) { + my $clientip = $r->get_remote_host(); + if (&Apache::lonnet::allowed('bre',$requrl,undef,undef,$clientip) ne 'F') { + $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied"; + return HTTP_NOT_ACCEPTABLE; + } } else { $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied"; return HTTP_NOT_ACCEPTABLE; @@ -731,7 +742,8 @@ sub handler { } # ------------------------------------ See if this is a viewable portfolio file if (&Apache::lonnet::is_portfolio_url($requrl)) { - my $access=&Apache::lonnet::allowed('bre',$requrl); + my $clientip = $r->get_remote_host(); + my $access=&Apache::lonnet::allowed('bre',$requrl,undef,undef,$clientip); if ($access eq 'A') { &Apache::restrictedaccess::setup_handler($r); return OK;