version 1.1455, 2021/05/11 17:51:23
|
version 1.1456, 2021/06/06 23:14:18
|
Line 97 use Digest::MD5;
|
Line 97 use Digest::MD5;
|
use Math::Random; |
use Math::Random; |
use File::MMagic; |
use File::MMagic; |
use Net::CIDR; |
use Net::CIDR; |
|
use Sys::Hostname::FQDN(); |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
use LONCAPA::lonmetadata; |
use LONCAPA::lonmetadata; |
Line 8572 sub allowed {
|
Line 8573 sub allowed {
|
my ($start,$end) = split(/\./,$env{$envkey}); |
my ($start,$end) = split(/\./,$env{$envkey}); |
next unless (($now >= $start) && (!$end || $end > $now)); |
next unless (($now >= $start) && (!$end || $end > $now)); |
} |
} |
|
|
my $expiretime=600; |
my $expiretime=600; |
if ($env{'request.role'} eq $roleid) { |
if ($env{'request.role'} eq $roleid) { |
$expiretime=120; |
$expiretime=120; |
Line 14680 sub get_dns {
|
Line 14680 sub get_dns {
|
} |
} |
while (%alldns) { |
while (%alldns) { |
my ($dns) = sort { $b cmp $a } keys(%alldns); |
my ($dns) = sort { $b cmp $a } keys(%alldns); |
my $request=new HTTP::Request('GET',"$alldns{$dns}://$dns$url"); |
my ($contents,@content); |
my $response = &LONCAPA::LWPReq::makerequest('',$request,'',\%perlvar,30,0); |
if ($dns eq Sys::Hostname::FQDN::fqdn()) { |
delete($alldns{$dns}); |
my $command = (split('/',$url))[3]; |
next if ($response->is_error()); |
my ($dir,$file) = &parse_getdns_url($command,$url); |
|
delete($alldns{$dns}); |
|
next if (($dir eq '') || ($file eq '')); |
|
if (open(my $config,'<',"$dir/$file")) { |
|
@content = <$config>); |
|
close($config); |
|
} |
|
if ($url eq '/adm/dns/loncapaCRL') { |
|
$contents = join('',@content); |
|
} |
|
} else { |
|
my $request=new HTTP::Request('GET',"$alldns{$dns}://$dns$url"); |
|
my $response = &LONCAPA::LWPReq::makerequest('',$request,'',\%perlvar,30,0); |
|
delete($alldns{$dns}); |
|
next if ($response->is_error()); |
|
if ($url eq '/adm/dns/loncapaCRL') { |
|
$contents = $response->content; |
|
} else { |
|
@content = split("\n",$response->content); |
|
} |
|
} |
if ($url eq '/adm/dns/loncapaCRL') { |
if ($url eq '/adm/dns/loncapaCRL') { |
return &$func($response); |
return &$func($contents); |
} else { |
} else { |
my @content = split("\n",$response->content); |
|
unless ($nocache) { |
unless ($nocache) { |
&do_cache_new('dns',$url,\@content,30*24*60*60); |
&do_cache_new('dns',$url,\@content,30*24*60*60); |
} |
} |
Line 14775 sub fetch_crl_pemfile {
|
Line 14794 sub fetch_crl_pemfile {
|
} |
} |
|
|
sub save_crl_pem { |
sub save_crl_pem { |
my ($response) = @_; |
my ($content) = @_; |
my ($msg,$hadchanges); |
my ($msg,$hadchanges); |
if (ref($response)) { |
if ($content ne '') { |
my $now = time; |
my $now = time; |
my $lonca = $perlvar{'lonCertificateDirectory'}.'/'.$perlvar{'lonnetCertificateAuthority'}; |
my $lonca = $perlvar{'lonCertificateDirectory'}.'/'.$perlvar{'lonnetCertificateAuthority'}; |
my $tmpcrl = $tmpdir.'/'.$perlvar{'lonnetCertRevocationList'}.'_'.$now.'.'.$$.'.tmp'; |
my $tmpcrl = $tmpdir.'/'.$perlvar{'lonnetCertRevocationList'}.'_'.$now.'.'.$$.'.tmp'; |
if (open(my $fh,'>',"$tmpcrl")) { |
if (open(my $fh,'>',"$tmpcrl")) { |
print $fh $response->content; |
print $fh $content; |
close($fh); |
close($fh); |
if (-e $lonca) { |
if (-e $lonca) { |
if (open(PIPE,"openssl crl -in $tmpcrl -inform pem -CAfile $lonca -noout 2>&1 |")) { |
if (open(PIPE,"openssl crl -in $tmpcrl -inform pem -CAfile $lonca -noout 2>&1 |")) { |
Line 14843 sub save_crl_pem {
|
Line 14862 sub save_crl_pem {
|
return ($msg,$hadchanges); |
return ($msg,$hadchanges); |
} |
} |
|
|
|
sub parse_getdns_url { |
|
my ($command,$url) = @_; |
|
my $dir = $perlvar{'lonTabDir'}; |
|
my $file; |
|
if ($command eq 'hosts') { |
|
$file = 'dns_hosts.tab'; |
|
} elsif ($command eq 'domain') { |
|
$file = 'dns_domain.tab'; |
|
} elsif ($command eq 'checksums') { |
|
my $version = (split('/',$url))[4]; |
|
$file = "dns_checksums/$version.tab", |
|
} elsif ($command eq 'loncapaCRL') { |
|
$dir = $perlvar{'lonCertificateDirectory'}; |
|
$file = $perlvar{'lonnetCertRevocationList'}; |
|
} |
|
return ($dir,$file); |
|
} |
|
|
# ------------------------------------------------------------ Read domain file |
# ------------------------------------------------------------ Read domain file |
{ |
{ |
my $loaded; |
my $loaded; |