version 1.4, 2017/11/30 14:33:35
|
version 1.6, 2018/07/30 14:39:51
|
Line 31 package Apache::londns;
|
Line 31 package Apache::londns;
|
|
|
use strict; |
use strict; |
use LONCAPA; |
use LONCAPA; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http :remotehost); |
use Apache::lonnet; |
use Apache::lonnet; |
|
|
sub serve_file { |
sub serve_file { |
my ($r,$file,$type)=@_; |
my ($r,$dir,$file,$type)=@_; |
if (open(my $config,"<","$Apache::lonnet::perlvar{'lonTabDir'}/$file")) { |
if (($dir eq '') || ($file eq '')) { |
|
return FORBIDDEN; |
|
} |
|
if (open(my $config,"<","$dir/$file")) { |
my $contents = join('',<$config>); |
my $contents = join('',<$config>); |
$r->content_type($type); |
$r->content_type($type); |
$r->send_http_header; |
$r->send_http_header; |
Line 51 sub serve_file {
|
Line 54 sub serve_file {
|
sub handler { |
sub handler { |
my ($r) = @_; |
my ($r) = @_; |
|
|
|
my $reqhost = $r->get_remote_host(REMOTE_NOLOOKUP); |
|
my @hostids= &Apache::lonnet::get_hosts_from_ip($reqhost); |
|
if (!@hostids && $reqhost ne '127.0.0.1' ) { |
|
$r->log_reason("Unable to find a host for ". |
|
$r->get_remote_host(REMOTE_NOLOOKUP)); |
|
return FORBIDDEN; |
|
} |
|
|
my $command = (split('/',$r->uri))[3]; |
my $command = (split('/',$r->uri))[3]; |
|
my $dir = $Apache::lonnet::perlvar{'lonTabDir'}; |
if ($command eq 'hosts') { |
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') { |
} 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') { |
} elsif ($command eq 'checksums') { |
my $version = (split('/',$r->uri))[4]; |
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; |
return FORBIDDEN; |
} |
} |