version 1.4, 2016/08/07 04:18:21
|
version 1.8, 2018/12/22 17:06:06
|
Line 31
|
Line 31
|
package LONCAPA::SSL; |
package LONCAPA::SSL; |
use strict; |
use strict; |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use Apache::lonlocal(); |
use Apache::lonlocal; |
use Apache::lonnet(); |
use Apache::lonnet(); |
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
Line 48 sub print_certstatus {
|
Line 48 sub print_certstatus {
|
'avai' => 'Available', |
'avai' => 'Available', |
'yes' => 'Yes', |
'yes' => 'Yes', |
'no' => 'No', |
'no' => 'No', |
'cn' => 'Common Name', |
'cn' => 'Common Name (CN)', |
'start' => 'Valid From', |
'start' => 'Valid From', |
'end' => 'Valid To', |
'end' => 'Valid To', |
'alg' => 'Signature Algorithm', |
'alg' => 'Signature Algorithm', |
Line 61 sub print_certstatus {
|
Line 61 sub print_certstatus {
|
'ca' => 'LON-CAPA CA Certificate', |
'ca' => 'LON-CAPA CA Certificate', |
'expired' => 'Expired', |
'expired' => 'Expired', |
'future' => 'Future validity', |
'future' => 'Future validity', |
|
'nokey' => 'No key', |
|
'otherkey' => 'No matching key', |
|
'revoked' => 'Revoked by CA', |
|
'wrongcn' => 'Incorrect CN', |
|
'mismatch' => 'Mismatched Issuer', |
); |
); |
my @files = qw(key host hostname ca); |
my @files = qw(key host hostname ca); |
my @fields = qw(status cn start end alg size email); |
my @fields = qw(status cn start end alg size email); |
foreach my $server (sort(keys(%{$servers}))) { |
foreach my $server (sort(keys(%{$servers}))) { |
my ($result,$hashref) = &Apache::lonnet::get_servercerts_info($server,$context); |
my $hostname = $servers->{$server}; |
|
my ($result,$hashref) = &Apache::lonnet::get_servercerts_info($server, |
|
$hostname, |
|
$context); |
if ($result eq 'ok' && ref($hashref) eq 'HASH') { |
if ($result eq 'ok' && ref($hashref) eq 'HASH') { |
if ($target eq 'web') { |
if ($target eq 'web') { |
my $hostname = &Apache::lonnet::hostname($server); |
|
$message .= "<fieldset><legend>$hostname ($server)</legend>". |
$message .= "<fieldset><legend>$hostname ($server)</legend>". |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row()."\n"; |
&Apache::loncommon::start_data_table_header_row()."\n"; |
Line 79 sub print_certstatus {
|
Line 86 sub print_certstatus {
|
} else { |
} else { |
$message .= $server.':'; |
$message .= $server.':'; |
} |
} |
|
my %csr; |
foreach my $file (@files) { |
foreach my $file (@files) { |
if ($target eq 'web') { |
if ($target eq 'web') { |
$message .= &Apache::loncommon::start_data_table_row()."\n". |
$message .= &Apache::loncommon::start_data_table_row()."\n". |
Line 91 sub print_certstatus {
|
Line 99 sub print_certstatus {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$message .= '<td>'.$lt{'yes'}.'</td>'; |
$message .= '<td>'.$lt{'yes'}.'</td>'; |
} else { |
} else { |
$message .= $lt{'yes'}.','; |
$message .= 'yes,'; |
} |
} |
unless ($file eq 'key') { |
unless ($file eq 'key') { |
if ($hashref->{$file}->{'end'} ne '') { |
if ($hashref->{$file}->{'end'} ne '') { |
Line 99 sub print_certstatus {
|
Line 107 sub print_certstatus {
|
if (ref($dt)) { |
if (ref($dt)) { |
$endtime = $dt->epoch; |
$endtime = $dt->epoch; |
if ($endtime < time) { |
if ($endtime < time) { |
$dateinvalid = $lt{'expired'}; |
if ($target eq 'web') { |
|
$dateinvalid = $lt{'expired'}; |
|
} else { |
|
$dateinvalid = 'expired'; |
|
} |
} |
} |
} |
} |
} |
} |
Line 109 sub print_certstatus {
|
Line 121 sub print_certstatus {
|
$starttime = $dt->epoch; |
$starttime = $dt->epoch; |
if ($starttime > time) { |
if ($starttime > time) { |
unless ($dateinvalid) { |
unless ($dateinvalid) { |
$dateinvalid = $lt{'future'}; |
if ($target eq 'web') { |
|
$dateinvalid = $lt{'future'}; |
|
} else { |
|
$dateinvalid = 'future'; |
|
} |
} |
} |
} |
} |
} |
} |
Line 136 sub print_certstatus {
|
Line 152 sub print_certstatus {
|
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
$display = &Apache::lonhtmlcommon::confirm_success($display); |
$display = &Apache::lonhtmlcommon::confirm_success($display); |
} |
} |
|
} elsif (($display eq 'nokey') || ($display eq 'otherkey') || |
|
($display eq 'revoked') || ($display eq 'expired') || |
|
($display eq 'wrongcn') || ($display eq 'mismatch')) { |
|
if ($target eq 'web') { |
|
$display = $lt{$display}; |
|
} |
|
if (ref($hashref->{$file.'-csr'}) eq 'HASH') { |
|
if ($hashref->{$file.'-csr'}->{$item} eq 'ok') { |
|
if ($target eq 'web') { |
|
$display .= '<br />'.&mt('(New request awaiting signature)'); |
|
} |
|
$csr{$file} = 1; |
|
} |
|
} |
} |
} |
} elsif ($item eq 'start') { |
} elsif ($item eq 'start') { |
if ($starttime) { |
if ($starttime) { |
Line 162 sub print_certstatus {
|
Line 192 sub print_certstatus {
|
} |
} |
} else { |
} else { |
if ($target eq 'web') { |
if ($target eq 'web') { |
$message .= '<td>'.$lt{'no'}.'<td>'; |
$message .= '<td>'.$lt{'no'}.'</td>'; |
} else { |
} else { |
$message .= $lt{'no'}.','; |
$message .= 'no,'; |
|
} |
|
if ((($file eq 'host') || ($file eq 'hostname')) && |
|
(ref($hashref->{$file.'-csr'}) eq 'HASH')) { |
|
if ($hashref->{$file.'-csr'}->{'status'} eq 'ok') { |
|
if ($target eq 'web') { |
|
my $colspan = scalar(@fields); |
|
$message .= '<td colspan="'.$colspan.'">'. |
|
&mt('Request for [_1] awaiting signature', |
|
$lt{$file}).'</td>'; |
|
} |
|
$csr{$file} = 1; |
|
} |
} |
} |
foreach my $item (@fields) { |
foreach my $item (@fields) { |
if ($target eq 'web') { |
if ($target eq 'web') { |
$message .= '<td> </td>'; |
unless ($csr{$file}) { |
|
$message .= '<td> </td>'; |
|
} |
} else { |
} else { |
$message .= ','; |
$message .= ','; |
} |
} |
Line 184 sub print_certstatus {
|
Line 228 sub print_certstatus {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$message .= &Apache::loncommon::end_data_table().'</fieldset>'; |
$message .= &Apache::loncommon::end_data_table().'</fieldset>'; |
} else { |
} else { |
|
if (keys(%csr)) { |
|
foreach my $file (keys(%csr)) { |
|
if (ref($hashref->{$file.'-csr'}) eq 'HASH') { |
|
$message .= $file.'-csr=yes,'; |
|
foreach my $item (@fields) { |
|
$message .= $hashref->{$file.'-csr'}->{$item}.','; |
|
} |
|
$message =~ s/,$//; |
|
$message .= '&'; |
|
} |
|
} |
|
} |
$message =~ s/\&$//; |
$message =~ s/\&$//; |
} |
} |
$message .= "\n"; |
$message .= "\n"; |