diff options
Diffstat (limited to 'pki/base/console/src/com/netscape/admin/certsrv/task/CMSCertRequest.java')
-rw-r--r-- | pki/base/console/src/com/netscape/admin/certsrv/task/CMSCertRequest.java | 418 |
1 files changed, 0 insertions, 418 deletions
diff --git a/pki/base/console/src/com/netscape/admin/certsrv/task/CMSCertRequest.java b/pki/base/console/src/com/netscape/admin/certsrv/task/CMSCertRequest.java deleted file mode 100644 index bf391c4e4..000000000 --- a/pki/base/console/src/com/netscape/admin/certsrv/task/CMSCertRequest.java +++ /dev/null @@ -1,418 +0,0 @@ -// --- BEGIN COPYRIGHT BLOCK --- -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; version 2 of the License. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this program; if not, write to the Free Software Foundation, Inc., -// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -// -// (C) 2007 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.admin.certsrv.task; - -import java.util.*; -import javax.swing.*; -import com.netscape.management.client.*; -import com.netscape.admin.certsrv.*; -import com.netscape.admin.certsrv.keycert.*; -import com.netscape.certsrv.common.*; -import com.netscape.management.client.util.*; -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.event.*; -import com.netscape.management.client.console.*; -import com.netscape.management.client.topology.*; -import com.netscape.management.client.comm.*; -import java.net.*; -import java.io.*; -import netscape.ldap.*; -import netscape.ldap.util.*; - -/** - * Perform certificate request in certificate setup wizard. - * - * @author Michelle Zhao - * @version $Revision$, $Date$ - */ -public class CMSCertRequest extends CGITask { - - /*========================================================== - * variables - *==========================================================*/ - private static final String PREFIX = "CGITASK"; - private String mCgiTask = null; // CGI task to call - private CertSetupWizardInfo mWizardInfo; - private String mPolicyMsg = null; - - /*========================================================== - * constructors - *==========================================================*/ - public CMSCertRequest() { - super(); - } - - /*========================================================== - * public methods - *==========================================================*/ - public void initialize(CertSetupWizardInfo info) { - Debug.println("CMSRequestCert: initialize()"); - _consoleInfo = info.getAdminConsoleInfo(); - - // the results coming back from the daemon will be added to the - // wizard information. - mWizardInfo = info; - } - - /** - * Collect the data in name value pairs format and then send them to the - * cgi process. - */ - public boolean requestCert(Hashtable data) { - boolean status = false; // return value - - try { - status = run(data); - } catch (Exception e) { - Debug.println("Unexpected Error"+e.toString()); - status = false; - } - Debug.println("CMSRequestCert: requestCert() after run status=" + - status + " mSuccess=" + mSuccess); - - return mSuccess; - } - - /** - * the operation is finished after we receive the http stream - */ - public void replyHandler(InputStream response, CommRecord cr) { - mSuccess = false; - - try { - BufferedReader rspStream = - new BufferedReader(new InputStreamReader(response, "UTF8")); - String rspStr; - - Debug.println("CMSRequestCert: replyHandler() - start"); - mErrorMsg = mResource.getString("REQUESTRESULTWIZARD_TEXT_ERRORDESC_LABEL"); - while ((rspStr = rspStream.readLine()) != null && !mSuccess) - { - Debug.println("RequestCert: replyHandler() - read [" + rspStr + "]"); - // NMC_ messages are parsed, but not shown to the user - parse2(rspStr); - } - mErrorMsg = mErrorMsg + - mResource.getString("REQUESTRESULTWIZARD_TEXT_ERROREND_LABEL"); - String requestStatus =mWizardInfo.getRequestStatus(); - if ((mWizardInfo.getRequestError() != null) && - mWizardInfo.getRequestError().equals("true")) { - mWizardInfo.setRequestError(mErrorMsg); - mErrorMsg = null; - mSuccess = true; - } else if (requestStatus == null) { - // agent port, Unauthorizied access - mErrorMsg = mResource.getString("CGITASK_DIALOG_WRONGSERVER_MESSAGE"); - } else if (requestStatus.equals("5")) { - // rejected - if (mPolicyMsg == null) { - mWizardInfo.setRequestError(mResource.getString("REQUESTRESULTWIZARD_TEXT_NODETAIL_LABEL")); - } else { - mWizardInfo.setRequestError(mPolicyMsg); - mPolicyMsg = null; - } - mSuccess = true; - } - // Use the same format for other status:success,pending,svcPending - } catch (Exception e) { - Debug.println("RequestCert.Exception : " + e.toString()); - } - - Debug.println("RequestCert.replyHandler: finished, mSuccess=" + - mSuccess); - - finish(); - } - - private void parse2(String s) - { - int iIndex; - Debug.println("Parse2 input: " + s); - if ((iIndex=s.indexOf("errorCode")) != (-1)) - { - String errorCode = s.substring(s.indexOf("\"") + 1, - s.lastIndexOf("\"")); - Debug.println("errorCode: " + errorCode); - if (errorCode.equals("2")) { // pending - mWizardInfo.setRequestError("false"); - mSuccess = true; - mWizardInfo.setRequestStatus("0"); - } else if (errorCode.equals("1")) { // error - mWizardInfo.setRequestError("true"); - mWizardInfo.setRequestStatus("5"); - mSuccess = false; - } else { - mWizardInfo.setRequestError("true"); - mWizardInfo.setRequestStatus("0"); - mSuccess = false; - } - } - else if ((iIndex=s.indexOf("requestList.requestId")) != (-1)) - { - String requestId = s.substring(s.indexOf("\"") + 1, - s.lastIndexOf("\"")); - Debug.println("requestId: " + requestId); - mWizardInfo.setRequestID(requestId); - } - else if ((iIndex=s.indexOf("errorReason")) != (-1)) - { - String errorReason = s.substring(s.indexOf("\"") + 1, - s.lastIndexOf("\"")); - Debug.println("errorReason: " + errorReason); - mErrorMsg = mErrorMsg + "\n " + errorReason; - } - } - - /** - * return the value for the given keyword in the reply - */ - private void parse(String s) { - String sName; - String sValue = null; - int iIndex; - - Debug.println("Parse input: " + s); - - // XXXX We need to know all possible response. - // If cmsgateway changes, this will be broken. - if ((iIndex=s.indexOf("requestStatus = ")) != (-1)) - { - sName = s.substring(iIndex + 17).trim(); - if ((iIndex = sName.indexOf("\"")) != (-1)) - sValue = sName.substring(0,iIndex); - - Debug.println("Parse input: name=" + sName + " output=" - + sValue + " index=" + iIndex); - if (sValue != null && !sValue.equals("")) { - mWizardInfo.setRequestStatus(sValue); - if (sValue.equals("2") || sValue.equals("3") - || sValue.equals("4")) - // success, pending, svcPending - mSuccess = true; - } - } - else if ((iIndex=s.indexOf("requestId = ")) != (-1)) - { - sName = s.substring(iIndex + 13).trim(); - if ((iIndex = sName.indexOf("\"")) != (-1)) - sValue = sName.substring(0,iIndex); - - Debug.println("Parse input: name=" + sName + " output=" - + sValue + " index=" + iIndex); - if (sValue != null && !sValue.equals("")) { - mWizardInfo.setRequestID(sValue); - //mSuccess = true; - } - } - else if ((iIndex=s.indexOf("unexpectedError = ")) != (-1)) - { - sName = s.substring(iIndex + 19).trim(); - if ((iIndex = sName.indexOf("\"")) != (-1)) - sValue = sName.substring(0,iIndex); - - Debug.println("Parse input: name=" + sName + " output=" - + sValue + " index=" + iIndex); - if (sValue != null && !sValue.equals("")) { - mErrorMsg = mErrorMsg + "\n " + sValue; - mWizardInfo.setRequestError("true"); - } - } - else if ((iIndex=s.indexOf("errorDetails = ")) != (-1)) - { - sName = s.substring(iIndex + 16).trim(); - if ((iIndex = sName.indexOf("\"")) != (-1)) - sValue = sName.substring(0,iIndex); - - Debug.println("Parse input: name=" + sName + " output=" - + sValue + " index=" + iIndex); - if (sValue != null && !sValue.equals("")) { - mErrorMsg = mErrorMsg + "\n " + sValue; - mWizardInfo.setRequestError("true"); - } - } - else if ((iIndex=s.indexOf("result.recordSet.length = ")) != (-1)) - { - sName = s.substring(iIndex + 27).trim(); - if ((iIndex = sName.indexOf("\"")) != (-1)) - sValue = sName.substring(0,iIndex); - - Debug.println("Parse input: name=" + sName + " output=" - + sValue + " index=" + iIndex); - if (sValue != null && !sValue.equals("") && !sValue.equals("0")) { - mErrorMsg = mErrorMsg + mResource.getString("REQUESTRESULTWIZARD_TEXT_DETAIL_LABEL");; - } - } - else if ((iIndex=s.indexOf("errorDescription = ")) != (-1)) - { - sName = s.substring(iIndex + 20).trim(); - if ((iIndex = sName.indexOf("\"")) != (-1)) - sValue = sName.substring(0,iIndex); - - Debug.println("Parse input: name=" + sName + " output=" - + sValue + " index=" + iIndex); - if (sValue != null && !sValue.equals("")) { - mErrorMsg = mErrorMsg + "\n " + sValue; - } - } - else if ((iIndex=s.indexOf("record.policyMessage=")) != (-1)) - { - sName = s.substring(iIndex + 22).trim(); - if ((iIndex = sName.indexOf("\"")) != (-1)) - sValue = sName.substring(0,iIndex); - - Debug.println("Parse input: name=" + sName + " output=" - + sValue + " index=" + iIndex); - if (sValue != null && !sValue.equals("")) { - if (mPolicyMsg == null) - mPolicyMsg = " " + sValue; - else - mPolicyMsg = mPolicyMsg + "\n " + sValue; - } - } - - Debug.println("Parse finished"); - } - - /** - * Send an http request to the server. Return true if we're sure it - * succeeded, otherwise false. - */ - boolean run(Hashtable args) { - - String fullCmd = mWizardInfo.getCMEEType() + "://" + - mWizardInfo.getCMHost() + ":" + - mWizardInfo.getCMEEPort() + "/ca/ee/ca/profileSubmit"; - - HttpManager h = new HttpManager(); - // tell the http manager to use UTF8 encoding - h.setSendUTF8(true); - - try { - mSuccess = false; - mFinished = false; - - ByteArrayInputStream data = null; - if (args != null && !args.isEmpty()) - data = encode(args); - Debug.println( "Posting " + fullCmd ); - // tell the http manager to notify us immediately of replies - // if we're using async mode - int flags = 0; - CommRecord postResult = null; - if (data == null) - postResult = h.post(new URL(fullCmd), this, null, null, 0, - flags); - else - postResult = h.post(new URL(fullCmd), this, null, data, data.available(), - flags); - - /* - AdmTask admTask = new AdmTask(new URL(fullCmd),null,null); - admTask.setArguments(args); - admTask.exec(h); - */ - - awaitSuccess(); - - Object postStatus = postResult.getStatus(); - //Debug.println("status: " + postStatus); - if (postStatus != null && - postStatus.toString().equals(CommRecord.ERROR)) { - // If it happens to be it's not CMS server who is listening - // e.g. the cms agent port or yahoo server - // you may get here - mErrorMsg = mResource.getString("CGITASK_DIALOG_WRONGSERVER_MESSAGE"); - } - - Debug.println( "Command executed: " + fullCmd ); - } catch (Exception e) { - // This is very fragile. We have to handle it case by case. - // Handled the ones that I know of properly, but there may - // be other cases that I don't know, display the exception - // detail. - String detail = e.toString(); - if (detail == null || detail.trim().equals("")) - detail = "No detail of the exception provided."; - if ( e instanceof java.net.ConnectException ) { - mErrorMsg = mResource.getString("CGITASK_DIALOG_CMSDOWN_MESSAGE"); - //CMSAdminUtil.showMessageDialog(mResource, - // PREFIX, "CMSDOWN", CMSAdminUtil.ERROR_MESSAGE); - } else if ( e instanceof java.net.NoRouteToHostException ) { - // java.net.NoRouteToHostException: Connection timed out - // It takes 3-4 mins to time out, looks like hang to impatient - // ones. https://www.netscape.com:443 - mErrorMsg = - mResource.getString("CGITASK_DIALOG_CMSDOWN_MESSAGE") -; - } else if ( e instanceof java.net.SocketException ) { - if (detail.indexOf("Socket write failed") > -1){ - // retry - run(args); - } else if ((detail.indexOf("Connection shutdown") > -1) || - (detail.indexOf("Connection timed out") > -1) ) { - // java.net.NoRouteToHostException: Connection timed out - // double insurance - mErrorMsg = - mResource.getString("CGITASK_DIALOG_CMSDOWN_MESSAGE"); - } else { - // need to determine case by case - mErrorMsg = - mResource.getString("CGITASK_DIALOG_CMSDOWN_MESSAGE")+ " java.net.SocketException: " + detail; - } - - } else if ( e instanceof java.io.IOException ) { - if (e.toString().indexOf("Broken pipe") > -1){ - // broken pipe, retry - run(args); - } else if (detail.indexOf("Unknown public-key algorithm") -> -1) { - mErrorMsg = - mResource.getString("CGITASK_DIALOG_UNKNOWNALG_MESSAGE") -; - } else if (detail.indexOf("End of input") > -1) { - // http://www.netscape.com:80/enrollment - mErrorMsg = - mResource.getString("CGITASK_DIALOG_CMSDOWN_MESSAGE") -; - } else if (detail.indexOf("Certificate fingerprint =") > -1) { - // reject the cms certificate - mErrorMsg = - mResource.getString("CGITASK_DIALOG_REJECTCERT_MESSAGE"); - } else { - // need to determine case by case - mErrorMsg = - mResource.getString("CGITASK_DIALOG_CMSDOWN_MESSAGE" -) + " java.io.IOException: " + detail; - } - } else { - // need to determine case by case - mErrorMsg = - mResource.getString("CGITASK_DIALOG_CMSDOWN_MESSAGE") -+ " Exception: " + detail; - } - Debug.println( "Command " + fullCmd + " failed: " + e ); - } - return mSuccess; - } - -} - - - |