--- loncom/lonnet/perl/londns.pm 2018/07/30 14:39:51 1.6 +++ loncom/lonnet/perl/londns.pm 2021/06/06 23:14:18 1.7 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # A debugging harness. # -# $Id: londns.pm,v 1.6 2018/07/30 14:39:51 raeburn Exp $ +# $Id: londns.pm,v 1.7 2021/06/06 23:14:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -41,6 +41,7 @@ sub serve_file { } if (open(my $config,"<","$dir/$file")) { my $contents = join('',<$config>); + close($config); $r->content_type($type); $r->send_http_header; return OK if $r->header_only; @@ -63,18 +64,15 @@ sub handler { } my $command = (split('/',$r->uri))[3]; - my $dir = $Apache::lonnet::perlvar{'lonTabDir'}; - if ($command eq 'hosts') { - return &serve_file($r,$dir,'dns_hosts.tab','loncapa/hosts'); - } elsif ($command eq '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,$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'); + my ($dir,$file) = &Apache::lonnet::parse_getdns_url($command,$r->uri); + my %types = ( + hosts => 'loncapa/hosts', + domain => 'loncapa/domain', + checksums => 'loncapa/versions', + loncapaCRL => 'application/x-pem-file', + ); + if (exists($types{$command})) { + return &serve_file($r,$dir,$file,$types{$command}); } return FORBIDDEN; }