diff options
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/edit/process/svc_cert.cgi | 20 | ||||
-rw-r--r-- | httemplate/edit/svc_cert/import_certificate.html | 22 | ||||
-rw-r--r-- | httemplate/view/svc_cert.cgi | 61 |
3 files changed, 90 insertions, 13 deletions
diff --git a/httemplate/edit/process/svc_cert.cgi b/httemplate/edit/process/svc_cert.cgi index 58b95a6e9..a8dc0ca8a 100644 --- a/httemplate/edit/process/svc_cert.cgi +++ b/httemplate/edit/process/svc_cert.cgi @@ -9,7 +9,7 @@ % } else { <% include('/elements/header-popup.html', $title ) %> <SCRIPT TYPE="text/javascript"> - window.top.location = '<% popurl(3). "edit/svc_cert.cgi?$svcnum" %>'; + window.top.location = '<% popurl(3). "$popup/svc_cert.cgi?$svcnum" %>'; </SCRIPT> </BODY></HTML> % } @@ -40,10 +40,10 @@ if ( $svcnum ) { $new->$_( $old->$_ ) for grep $old->$_, qw( privatekey csr certificate cacert ); } -my $popup = 0; +my $popup = ''; my $title = ''; if ( $cgi->param('privatekey') eq '_generate' ) { #generate - $popup = 1; + $popup = 'edit'; $title = 'Key generated'; $cgi->param('keysize') =~ /^(\d+)$/ or die 'illegal keysize'; @@ -51,12 +51,22 @@ if ( $cgi->param('privatekey') eq '_generate' ) { #generate $new->generate_privatekey($keysize); } elsif ( $cgi->param('privatekey') =~ /\S/ ) { #import - $popup = 1; + $popup = 'edit'; $title = 'Key imported'; $new->privatekey( $cgi->param('privatekey') ); -} #elsif ( $cgi->param('privatekey') eq '_clear' ) { #clear +#} #elsif ( $cgi->param('privatekey') eq '_clear' ) { #clear + +} elsif ( $cgi->param('certificate') ) { + + $popup = 'view'; + $title = 'Certificate imported'; + + $new->certificate( $cgi->param('certificate') ); + $new->$_( $old->$_ ) for grep $old->$_, qw( recnum common_name organization organization_unit city state country cert_contact ); + +} my $error = ''; if ($cgi->param('svcnum')) { diff --git a/httemplate/edit/svc_cert/import_certificate.html b/httemplate/edit/svc_cert/import_certificate.html new file mode 100644 index 000000000..337a7419e --- /dev/null +++ b/httemplate/edit/svc_cert/import_certificate.html @@ -0,0 +1,22 @@ +<% include('/elements/header-popup.html', 'Import issued certificate' ) %> + +<% include('/elements/error.html') %> + +<FORM NAME="ImportKeyForm" ACTION="<% $p %>process/svc_cert.cgi" METHOD="POST"> + +<INPUT TYPE="hidden" NAME="svcnum" VALUE="<% $svcnum %>"> + +<TEXTAREA NAME="certificate" COLS=64 ROWS=15 STYLE="font-family:monospace"></TEXTAREA> + +<BR><BR> +<INPUT TYPE="submit" VALUE="Import"> + +</FORM> +</BODY> +</HTML> +<%init> + +$cgi->param('svcnum') =~ /^(\d*)$/ or die 'illegal svcnum'; +my $svcnum = $1; + +</%init> diff --git a/httemplate/view/svc_cert.cgi b/httemplate/view/svc_cert.cgi index 36f598b9a..28a269bcc 100644 --- a/httemplate/view/svc_cert.cgi +++ b/httemplate/view/svc_cert.cgi @@ -34,8 +34,8 @@ my @fields = ( 'value'=> sub { my $svc_cert = shift; if ( $svc_cert->csr ) { #display the subject etc? - '<FONT STYLE="font-family:monospace"><PRE>'. $svc_cert->csr. - '</PRE></FONT>'; + '<PRE><FONT STYLE="font-family:monospace">'. "\n". $svc_cert->csr. + '</FONT></PRE>'; } 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>); @@ -50,15 +50,60 @@ my @fields = ( if ( $svc_cert->certificate ) { my %hash = $svc_cert->check_certificate; - my $out = '<TABLE>'; #XXX better formatting - foreach my $key ( keys %hash ) { - $out .= "<TR><TD>$key</TD><TD>$hash{$key}</TD></TR>"; + + tie my %w, 'Tie::IxHash', + 'subject' => 'Issued to', + 'issuer' => 'Issued by', + ; + + my $out = '<TABLE><TR><TD>'; + + foreach my $w ( keys %w ) { + + $out .= include('/elements/table-grid.html'). #'<TABLE>'. + '<TR><TH COLSPAN=2 BGCOLOR="#cccccc" ALIGN="center">'. + $w{$w}. '</TH></TR>'; + + my $col = $svc_cert->subj_col; + + my $subj = $hash{$w}; + foreach my $key (keys %$col) { #( keys %$subj ) { + $out .= "<TR><TD>". $labels{$col->{$key}}. "</TD>". + "<TD>". $subj->{$key}. "</TD></TR>"; + } + + $out .= '</TABLE></TD><TD>'; } - $out .= '</TABLE>'; + $out .= '</TD></TR></TABLE>'; + + $out .= '<TABLE>'. + '<TR><TH ALIGN="right">Serial number</TH>'. + "<TD>$hash{serial}</TD></TR>". + '<TR><TH ALIGN="right">Valid</TH>'. + "<TD>$hash{notBefore} - $hash{notAfter}</TD></TR>". + '</TABLE>'; - $out .= '<FONT STYLE="font-family:monospace"><PRE>'. + if ( $hash{'selfsigned'} ) { + my $svcnum = $svc_cert->svcnum; + $out .= qq(<BR> <A HREF="${p}misc/svc_cert-generate.html?action=generate_selfsigned;svcnum=$svcnum">Re-generate self-signed</A>). + ' '. + include('/elements/popup_link.html', { + 'action' => $p."edit/svc_cert/import_certificate.html". + "?svcnum=$svcnum", + 'label' => 'Import issued certificate', #link + 'actionlabel' => 'Import issued certificate', #title + #opt + 'width' => '544', + 'height' => '368', + #'color' => '#ff0000', + }). + '<BR>'; + } + + $out .= '<PRE><FONT STYLE="font-family:monospace">'. $svc_cert->certificate. - '</PRE></FONT>'; + '</FONT><PRE>'; + $out; } elsif ( $svc_cert->csr ) { my $svcnum = $svc_cert->svcnum; |