summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2010-11-08 07:35:59 +0000
committerivan <ivan>2010-11-08 07:35:59 +0000
commit0c084bd209251525e6441cb2b56c46f4ff788a5f (patch)
tree466e71c1a2c6762249c94f1ab3fcf37d1dd1dc4e
parent246e76618447bb7ac436e9bfb8c0b042f9613326 (diff)
certificates ala communigate, RT#7515
-rw-r--r--FS/FS/svc_cert.pm29
-rw-r--r--httemplate/view/svc_cert.cgi28
2 files changed, 50 insertions, 7 deletions
diff --git a/FS/FS/svc_cert.pm b/FS/FS/svc_cert.pm
index b77ff52..1d57113 100644
--- a/FS/FS/svc_cert.pm
+++ b/FS/FS/svc_cert.pm
@@ -303,9 +303,30 @@ sub generate_csr {
$self->csr($csr);
}
-#sub check_csr {
-# my $self = shift;
-#}
+sub check_csr {
+ my $self = shift;
+
+ my $in = $self->csr;
+
+ run( [qw( openssl req -subject -noout ), ],
+ '<'=>\$in,
+ '>pipe'=>\*OUT, '2>'=>'/dev/null'
+ )
+ ;#or die "error running openssl: $!";
+
+ #subject=/CN=cn.example.com/ST=AK/O=Tofuy/OU=Soybean dept./C=US/L=Tofutown
+ my $line = <OUT>;
+ $line =~ /^subject=\/(.*)$/ or return ();
+ my $subj = $1;
+
+ map { if ( /^\s*(\w+)=\s*(.*)\s*$/ ) {
+ ($1=>$2);
+ } else {
+ ();
+ }
+ }
+ split('/', $subj);
+}
sub generate_selfsigned {
my $self = shift;
@@ -360,7 +381,7 @@ sub check_x509 {
$hash{$f} = { map { if ( /^\s*(\w+)=\s*(.*)\s*$/ ) {
($1=>$2);
} else {
- (''=>'');
+ ();
}
}
split('/', $hash{$f})
diff --git a/httemplate/view/svc_cert.cgi b/httemplate/view/svc_cert.cgi
index 48494d2..0cd66b4 100644
--- a/httemplate/view/svc_cert.cgi
+++ b/httemplate/view/svc_cert.cgi
@@ -33,9 +33,31 @@ my @fields = (
{ 'field'=>'csr',
'value'=> sub {
my $svc_cert = shift;
- if ( $svc_cert->csr ) { #display the subject etc?
- '<PRE><FONT STYLE="font-family:monospace">'. "\n". $svc_cert->csr.
- '</FONT></PRE>';
+ if ( $svc_cert->csr ) {
+
+ my $out = '';
+
+ my %hash = $svc_cert->check_csr;
+
+ $out .= include('/elements/table-grid.html'). #'<TABLE>'.
+ '<TR><TH COLSPAN=2 BGCOLOR="#cccccc" ALIGN="center">'.
+ 'Requested by</TH></TR>';
+
+ my $col = $svc_cert->subj_col;
+
+ foreach my $key (keys %hash) {
+ $out .= "<TR><TD>". $labels{$col->{$key}}. "</TD>".
+ "<TD>". $hash{$key}. "</TD></TR>";
+ }
+
+ $out .= '</TABLE>';
+
+ $out .=
+ '<PRE><FONT STYLE="font-family:monospace">'. $svc_cert->csr.
+ '</FONT></PRE>';
+
+ $out;
+
} elsif ( $svc_cert->common_name ) {
my $svcnum = $svc_cert->svcnum;
qq(<A HREF="${p}misc/svc_cert-generate.html?action=generate_csr;svcnum=$svcnum">Generate</A>);