--- loncom/lonnet/perl/londns.pm 2017/11/30 14:33:35 1.4 +++ loncom/lonnet/perl/londns.pm 2018/07/18 13:45:03 1.5 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # A debugging harness. # -# $Id: londns.pm,v 1.4 2017/11/30 14:33:35 raeburn Exp $ +# $Id: londns.pm,v 1.5 2018/07/18 13:45:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -35,8 +35,11 @@ use Apache::Constants qw(:common :http); use Apache::lonnet; sub serve_file { - my ($r,$file,$type)=@_; - if (open(my $config,"<","$Apache::lonnet::perlvar{'lonTabDir'}/$file")) { + my ($r,$dir,$file,$type)=@_; + if (($dir eq '') || ($file eq '')) { + return FORBIDDEN; + } + if (open(my $config,"<","$dir/$file")) { my $contents = join('',<$config>); $r->content_type($type); $r->send_http_header; @@ -52,13 +55,18 @@ sub handler { my ($r) = @_; my $command = (split('/',$r->uri))[3]; + my $dir = $Apache::lonnet::perlvar{'lonTabDir'}; if ($command eq 'hosts') { - return &serve_file($r,'dns_hosts.tab','loncapa/hosts'); + return &serve_file($r,$dir,'dns_hosts.tab','loncapa/hosts'); } elsif ($command eq 'domain') { - return &serve_file($r,'dns_domain.tab','loncapa/domain'); + return &serve_file($r,$dir,'dns_domain.tab','loncapa/domain'); } elsif ($command eq 'checksums') { my $version = (split('/',$r->uri))[4]; - return &serve_file($r,"dns_checksums/$version.tab",'loncapa/versions'); + return &serve_file($r,$dir,"dns_checksums/$version.tab",'loncapa/versions'); + } elsif ($command eq 'loncapaCRL') { + $dir = $Apache::lonnet::perlvar{'lonCertificateDirectory'}; + return &serve_file($r,$dir,$Apache::lonnet::perlvar{'lonnetCertRevocationList'}, + 'application/x-pem-file'); } return FORBIDDEN; }