--- loncom/configuration/SSL.pm 2016/08/01 13:55:05 1.2
+++ loncom/configuration/SSL.pm 2017/05/18 22:13:57 1.5
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Checksum installed LON-CAPA modules and some configuration files
#
-# $Id: SSL.pm,v 1.2 2016/08/01 13:55:05 raeburn Exp $
+# $Id: SSL.pm,v 1.5 2017/05/18 22:13:57 raeburn Exp $
#
# The LearningOnline Network with CAPA
#
@@ -35,6 +35,8 @@ use Apache::lonlocal();
use Apache::lonnet();
use Apache::loncommon();
use Apache::lonhtmlcommon();
+use DateTime;
+use DateTime::Format::x509;
use LONCAPA;
sub print_certstatus {
@@ -57,6 +59,10 @@ sub print_certstatus {
'host' => 'Connections Certificate',
'hostname' => 'Replication Certificate',
'ca' => 'LON-CAPA CA Certificate',
+ 'expired' => 'Expired',
+ 'future' => 'Future validity',
+ 'nokey' => 'No key',
+ 'otherkey' => 'No matching key',
);
my @files = qw(key host hostname ca);
my @fields = qw(status cn start end alg size email);
@@ -83,28 +89,96 @@ sub print_certstatus {
$message .= $file.'=';
}
if (ref($hashref->{$file}) eq 'HASH') {
+ my ($starttime,$endtime,$dateinvalid);
if ($target eq 'web') {
$message .= '
'.$lt{'yes'}.' | ';
} else {
- $message .= $lt{'yes'}.',';
+ $message .= 'yes,';
+ }
+ unless ($file eq 'key') {
+ if ($hashref->{$file}->{'end'} ne '') {
+ my $dt = DateTime::Format::x509->parse_datetime($hashref->{$file}->{'end'});
+ if (ref($dt)) {
+ $endtime = $dt->epoch;
+ if ($endtime < time) {
+ if ($target eq 'web') {
+ $dateinvalid = $lt{'expired'};
+ } else {
+ $dateinvalid = 'expired';
+ }
+ }
+ }
+ }
+ if ($hashref->{$file}->{'start'} ne '') {
+ my $dt = DateTime::Format::x509->parse_datetime($hashref->{$file}->{'start'});
+ if (ref($dt)) {
+ $starttime = $dt->epoch;
+ if ($starttime > time) {
+ unless ($dateinvalid) {
+ if ($target eq 'web') {
+ $dateinvalid = $lt{'future'};
+ } else {
+ $dateinvalid = 'future';
+ }
+ }
+ }
+ }
+ }
}
foreach my $item (@fields) {
my $display = $hashref->{$file}->{$item};
- if ($target eq 'web') {
- if ($item eq 'status') {
- $display = &Apache::lonhtmlcommon::confirm_success($display);
+ if ($item eq 'status') {
+ if ($file eq 'key') {
+ if ($display =~ /ok$/) {
+ if ($target eq 'web') {
+ $display = &Apache::lonhtmlcommon::confirm_success($display);
+ }
+ }
+ } elsif ($file eq 'ca') {
+ if ($dateinvalid) {
+ $display = $dateinvalid;
+ } elsif ($target eq 'web') {
+ $display = &Apache::lonhtmlcommon::confirm_success($display);
+ }
+ } elsif ($display =~ /^ok/) {
+ if ($dateinvalid) {
+ $display = $dateinvalid;
+ } elsif ($target eq 'web') {
+ $display = &Apache::lonhtmlcommon::confirm_success($display);
+ }
+ } elsif (($display eq 'nokey') || ($display eq 'otherkey')) {
+ if ($target eq 'web') {
+ $display = $lt{$display};
+ }
}
+ } elsif ($item eq 'start') {
+ if ($starttime) {
+ if ($target eq 'web') {
+ $display = &Apache::lonlocal::locallocaltime($starttime);
+ } else {
+ $display = $starttime;
+ }
+ }
+ } elsif ($item eq 'end') {
+ if ($endtime) {
+ if ($target eq 'web') {
+ $display = &Apache::lonlocal::locallocaltime($endtime);
+ } else {
+ $display = $endtime;
+ }
+ }
+ }
+ if ($target eq 'web') {
$message .= "$display | ";
} else {
$message .= "$display,";
}
}
-
} else {
if ($target eq 'web') {
$message .= ''.$lt{'no'}.' | ';
} else {
- $message .= $lt{'no'}.',';
+ $message .= 'no,';
}
foreach my $item (@fields) {
if ($target eq 'web') {
@@ -129,9 +203,9 @@ sub print_certstatus {
$message .= "\n";
} else {
if ($target eq 'web') {
- $message .= "$server error\n";
+ $message .= "$server:error\n";
} else {
- $message .= "$server error\n";
+ $message .= "$server:error\n";
}
}
}
|