diff options
author | ivan <ivan> | 2010-11-08 07:35:59 +0000 |
---|---|---|
committer | ivan <ivan> | 2010-11-08 07:35:59 +0000 |
commit | 0c084bd209251525e6441cb2b56c46f4ff788a5f (patch) | |
tree | 466e71c1a2c6762249c94f1ab3fcf37d1dd1dc4e | |
parent | 246e76618447bb7ac436e9bfb8c0b042f9613326 (diff) |
certificates ala communigate, RT#7515
-rw-r--r-- | FS/FS/svc_cert.pm | 29 | ||||
-rw-r--r-- | httemplate/view/svc_cert.cgi | 28 |
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>); |