📄 viewreq
字号:
## OpenCA - CA Command## (c) 1998-2001 by Massimiliano Pala and OpenCA Group#### File Name: viewReq## Brief: View Request## Description: Display given Request to the CA Manager## Parameters: dataType, keymy $cmdName = "viewReq";if ( $cmd !~ /$cmdName/i ) { configError( "Wrong Command Usage ($cmd over $cmdName)!" ); exit 1;}## Get the Configuration parameters ...my ( $ou, $ouList, $def, $op, $opCert, $info, $opStatus, $dnLabel);my ( $sigStatus, $signer, $signature, $myDN, $myCN, $myEmail, @myDnInfo );my ( @opCertList, $reqDataTable, @cols, $opCert, $serLink, $lnk, $sigInfo );my ( %labels, @values, $opencaDir, $extfile );my ( $reqStatus, $cmdsPanel, $reqDesc );my $dataType = $query->param('dataType' );my $key = $query->param('key');## Required Configuration Keymy $opencaDir = getRequired('BaseDir');my $sheetsDir = getRequired( 'SheetsDir' );my $includeDir = getRequired( 'IncludeDir' );my $txtDir = getRequired( 'TextDir' );my $baseDoc = getRequired('ViewRequestSheet');configError( "Error, needed dB key!" ) if ( not $key );if ( $dataType eq "PENDING_REQUEST" ) { $reqStatus = "Waiting for Approval"; $cmdsPanel = "$includeDir/pending_cmds.inc"; $reqDesc = "$txtDir/pending_desc.txt";} elsif ( $dataType eq "RENEW_REQUEST" ) { $reqStatus = "Renewal Request Waiting for Approval"; $cmdsPanel = "$includeDir/pending_cmds.inc"; $reqDesc = "$txtDir/pending_desc.txt";} elsif ( $dataType eq "DELETED_REQUEST" ) { $reqStatus = "Deleted Request"; $cmdsPanel = "$includeDir/deleted_cmds.inc"; $reqDesc = "$txtDir/deleted_desc.txt";} elsif ( $dataType eq "APPROVED_REQUEST" ) { $reqStatus = "Approved Request"; $cmdsPanel = "$includeDir/managed_cmds.inc"; $reqDesc = "$txtDir/approved_desc.txt";} elsif ( $dataType eq "ARCHIVIED_REQUEST" ) { $reqStatus = "Archivied Request"; $cmdsPanel = "$includeDir/managed_cmds.inc"; $reqDesc = "$txtDir/archivied_desc.txt";} elsif ( $dataType eq "PENDING_CRR" ) { $reqstatus = "Revocation Request Waiting for Approval"; $cmdsPanel = "$includeDir/pending_cmds.inc"; $reqDesc = "$txtDir/pending_crr_desc.txt";} else { configError ( "Invalid or missing dataType ($dataType) !");}if( not ( $page = $query->getFile( $baseDoc )) ) { configError ("Error while loading $baseDoc!" );};## Substitute the cmdsPanel, reqStatus and reqDesc$page = $query->subVar( $page, '@STATUS@', $reqStatus );$page = $query->subVar( $page, '@REQDESC@', $tools->getFile( "$reqDesc") );$page = $query->subVar( $page, '@CMDSPANEL@', $tools->getFile("$cmdsPanel") );my $req = $db->getItem( DATATYPE=>$dataType, KEY=>$key );configError ("Request not present in DB!" ) if ( not $req );## Get the parsed Requestmy $parsed_req = $req->getParsed();@cols = ( "Variable", "Value" );$reqDataTable = $query->startTable( COLS=>[ @cols ], WIDTH=>"100%", ## BGCOLOR=>"#F1F0F8", PADDING=>"2", CELLPADDING=>"4", TABLE_BGCOLOR=>"#F1F0F8", TITLE_BGCOLOR=>"#DDCCFF" );$myDN = $req->getParsed()->{DN};$myDN =~ s/\, /<BR>\n/g;if ( $req->getParsed()->{CN} ne "" ) { $lnk = new CGI({cmd=>"search", dataType=>"CERTIFICATE", name=>"CN", value=>$req->getParsed()->{CN}} ); $myCN = $lnk->a({-href=>$lnk->self_url()}, $req->getParsed()->{CN});}if ( $req->getParsed()->{EMAIL} ne "" ) { $lnk = new CGI({cmd=>"search", dataType=>"CERTIFICATE", name=>"EMAIL", value=>$req->getParsed()->{EMAIL}} ); $myEmail = $lnk->a({-href=>$lnk->self_url()}, $req->getParsed()->{EMAIL});};## If the Request is signedif ( $req->getParsed()->{TYPE} =~ /with .*? Signature/i ) { $lnk = new CGI({cmd=>"viewSignature", dataType=>$dataType, key=>$key}); if( libCheckSignature( OBJECT=>$req ) ) { $tmp = $query->img({src=>"/images/validSig.png", border=>"0", align=>"MIDDLE"}); } else { $tmp = $query->img({-src=>"/images/sigError.png", -border=>"0", -align=>"MIDDLE"}); } $sigInfo = $lnk->a({-href=>$lnk->self_url()}, $tmp ); } else { $def = "<FONT COLOR=\"RED\">Not Signed</FONT>"; $parsed_req->{OPERATOR} = $def;}if ( $dataType =~ /PENDING/ ) { editRequest( REQ=>$req, DATATYPE=>$dataType, PAGE=>$page );}## Check if another valid Certificate exists with the same DN of the## current Request (only for PENDING_CERTIFICATE)$dnLabel = "<B>Distinguished Name:</B><BR>";if( $dataType eq "PENDING_REQUEST" ) { @myDnList = $db->searchItems( DATATYPE=>"VALID_CERTIFICATE", MODE=>"RAW", DN=>$parsed_req->{DN}); if( $#myDnList > -1 ) { $lnk = new CGI({ cmd=>"search", dataType=>"VALID_CERTIFICATE" }); $dnLabel .= "<BR><B><FONT SIZE=-1>[Warning: a " . $lnk->a({-href=>$lnk->self_url()}, "certificate with same DN") . " exists!]" . "</FONT></B>"; }}## $reqDataTable .=$query->addTableLine(DATA=>[ "<B>:</B>",## ($parsed_req->{} or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>["<B>Request Version:</B>", ($parsed_req->{VERSION} or "0") ]);$reqDataTable .=$query->addTableLine(DATA=>[ "<B>Serial Number:</B>", ($parsed_req->{HEADER}->{SERIAL} or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>["<B>Request Type:</B>", ($parsed_req->{TYPE} or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>["<B>Certificate Request Type:</B>", ($parsed_req->{HEADER}->{CERTTYPE} or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>[ "<B>Distinguished Name:</B>", ($myDN or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>[ "<B>Approved on:</B>", ($parsed_req->{HEADER}->{APPROVED} or "n/a") ]);$reqDataTable.=$query->addTableLine(DATA=>["<B>Used Identification PIN:</B>", ($parsed_req->{HEADER}->{PIN} or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>[ "<B>Modulus (key size):</B>", ($parsed_req->{KEYSIZE} or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>[ "<B>Public Key Algorithm:</B>", ($parsed_req->{PK_ALGORITHM} or "n/a") ]);$reqDataTable .=$query->addTableLine(DATA=>[ "<B>Signature Algorithm:</B>", ($parsed_req->{SIG_ALGORITHM} or "n/a") ]);$reqDataTable .= $query->endTable();$page = $query->subVar( $page, '@REQDATA@', $reqDataTable );$page = $query->subVar( $page, '@EXTFILE@', $extfile );## Substitute dB coordinates$page = $query->subVar( $page, '@DATATYPE@', $dataType );$page = $query->subVar( $page, '@KEY@', $key );## View the Signature Logo$page = $query->subVar( $page, '@SIGINFO@', $sigInfo );print "$page";1;sub editRequest { my $keys = { @_ }; my $req = $keys->{REQ}; my $dataType = $keys->{DATATYPE}; my $page = $keys->{PAGE}; my ( $tmp, $i, $subjArea ); my $parsed_req = $req->getParsed(); my $head = $req->getParsed()->{HEADER}; my $dbKey = $req->getParsed()->{DBKEY}; my ( $subjArea, $certType ); ## $tmpOU = ""; $i = 1; ## foreach $tmp ( @{$req->getParsed()->{OU}} ) { ## $tmpOU = $query->newInput( -regx=>'*', ## -name=>"${i}.OU", -intype=>'textfield', ## -value=>$tmp ); ## push ( @ouInput, $tmpOU ); ## $i++; ## } ## $tmpOU = ""; ## for $tmp (@ouInput) { ## $tmpOU .= $tmp . "<BR>\n"; ## } ## my @parNameList = ( "EMAIL","CN","L","S","O","C" ); ## for $tmp ( @parNameList ) { ## push( @parList, $query->newInput( -regx=>'*', ## -name=>$tmp, ## -intype=>'textfield', ## -value=>$parsed_req->{$tmp} )); ## } $tmp = $req->getParsed()->{DN}; $tmp =~ s/(\,|\/)\s*/\n/g; $subjArea = $query->newInput( -regx=>'*', -intype=>'textarea', -name=>'subj', -rows=>6, -columns=>35, -default=>$tmp); $certType = $query->newInput( -regx=>'*', -intype=>"popup_menu", -name=>"certtype", -values=> ($config->getParam('RequestCertificateType'))->{VALUES}, -default=>$head->{CERTTYPE}); $tmp = $head->{OPERATOR_DN}; $tmp =~ s/(,|\/)/<br>/g; @cols = ( "Variable", "Value" ); $reqDataTable = $query->startTable( COLS=>[ @cols ], WIDTH=>"100%", BGCOLOR=>"#F1F0F8", PADDING=>"2", CELLPADDING=>"4", TABLE_BGCOLOR=>"#F1F0F8", TITLE_BGCOLOR=>"#DDCCFF" ); $reqDataTable .=$query->addTableLine(DATA=>["<B>Request Version:</B>", ($parsed_req->{VERSION} or "n/a") ]); $reqDataTable .=$query->addTableLine(DATA=>[ "<B>Serial Number:</B>", ($parsed_req->{HEADER}->{SERIAL} or "n/a") ]); $reqDataTable .=$query->addTableLine(DATA=>["<B>Request Type:</B>", ($parsed_req->{TYPE} or "n/a") ]); $reqDataTable .=$query->addTableLine(DATA=>["<B>Submission Date:</B>", ($head->{NOTBEFORE} or "n/a") ]); ## $reqDataTable .=$query->addTableLine(DATA=>[ "<B>E-Mail:</B>", ## ($parList[0] or "n/a") ]); ## $reqDataTable .=$query->addTableLine(DATA=>[ "<B>Common Name:</B>", ## ($parList[1] or "n/a") ]); ## $reqDataTable .=$query->addTableLine(DATA=> ## ["<B>Organization Unit(s):</B>", ## ($tmpOU or "n/a") ]); ## $reqDataTable .=$query->addTableLine(DATA=> ## ["<B>Locality:</B>", ## ($parList[2] or "n/a") ]); ## $reqDataTable .=$query->addTableLine(DATA=> ## ["<B>State:</B>", ## ($parList[3] or "n/a") ]); ## $reqDataTable .=$query->addTableLine(DATA=> ## ["<B>Organization:</B>", ## ($parList[4] or "n/a") ]); ## $reqDataTable .=$query->addTableLine(DATA=> ## ["<B>Country:</B>", ## ($parList[5] or "n/a") ]); $reqDataTable .=$query->addTableLine(DATA=> [ "<B>Subject:</B>", $subjArea ]); $reqDataTable .=$query->addTableLine(DATA=> ["<B>Certificate Request Type:</B>", ($certType or "n/a") ]); $reqDataTable.=$query->addTableLine(DATA=> ["<B>Used Identification PIN:</B>", ($parsed_req->{HEADER}->{PIN} or "n/a") ]); $reqDataTable .=$query->addTableLine(DATA=> [ "<B>Modulus (key size):</B>", ($parsed_req->{KEYSIZE} or "n/a") ]); $reqDataTable .=$query->addTableLine(DATA=> [ "<B>Public Key Algorithm:</B>", ($parsed_req->{PK_ALGORITHM} or "n/a") ]); $reqDataTable .=$query->addTableLine(DATA=> [ "<B>Signature Algorithm:</B>", ($parsed_req->{SIG_ALGORITHM} or "n/a") ]); $reqDataTable .= $query->endTable(); $page = $query->subVar( $page, '@KEY@', $dbKey ); $page = $query->subVar( $page, '@DATATYPE@',$dataType ); $page = $query->subVar( $page, '@REQDATA@', $reqDataTable ); ## View the Signature Logo $page = $query->subVar( $page, '@SIGINFO@', $sigInfo ); print "$page"; exit(1);} 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -