certificates ala communigate, RT#7515
authorivan <ivan>
Mon, 8 Nov 2010 07:35:59 +0000 (07:35 +0000)
committerivan <ivan>
Mon, 8 Nov 2010 07:35:59 +0000 (07:35 +0000)
FS/FS/svc_cert.pm
httemplate/view/svc_cert.cgi

index b77ff52..1d57113 100644 (file)
@@ -303,9 +303,30 @@ sub generate_csr {
   $self->csr($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;
 
 sub generate_selfsigned {
   my $self = shift;
@@ -360,7 +381,7 @@ sub check_x509 {
     $hash{$f} = { map { if ( /^\s*(\w+)=\s*(.*)\s*$/ ) {
                           ($1=>$2);
                         } else {
     $hash{$f} = { map { if ( /^\s*(\w+)=\s*(.*)\s*$/ ) {
                           ($1=>$2);
                         } else {
-                          (''=>'');
+                          ();
                         }
                       }
                       split('/', $hash{$f})
                         }
                       }
                       split('/', $hash{$f})
index 48494d2..0cd66b4 100644 (file)
@@ -33,9 +33,31 @@ my @fields = (
   { 'field'=>'csr',
     'value'=> sub {
       my $svc_cert = shift;
   { '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>);
       } 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>);