summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2012-07-11 17:57:42 -0500
committerEndi Sukma Dewata <edewata@redhat.com>2012-07-12 09:54:03 -0500
commit04f53ea43c1f6112f1d7aee00b615aad62c18c91 (patch)
treef584640b50cecf8dfe19a7c355101b9f931bde60 /base
parent30986e2e0eab9b0a99030935afb85c98d547726a (diff)
downloadpki-04f53ea43c1f6112f1d7aee00b615aad62c18c91.tar.gz
pki-04f53ea43c1f6112f1d7aee00b615aad62c18c91.tar.xz
pki-04f53ea43c1f6112f1d7aee00b615aad62c18c91.zip
Refactored ConfigurationRESTClient.
The ConfigurationRESTClient has been modified to extend CMSRestClient to address error handling issue in ConfigurationTest. Ticket #218
Diffstat (limited to 'base')
-rw-r--r--base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java155
1 files changed, 4 insertions, 151 deletions
diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java
index 59bb1caf9..92563d7d6 100644
--- a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java
+++ b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java
@@ -17,27 +17,9 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.cms.servlet.csadmin;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.URI;
import java.net.URISyntaxException;
-import java.net.UnknownHostException;
-import java.util.Enumeration;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.scheme.LayeredSchemeSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeSocketFactory;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.params.HttpParams;
-import org.jboss.resteasy.client.ClientExecutor;
import org.jboss.resteasy.client.ProxyFactory;
-import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
-import org.jboss.resteasy.spi.ResteasyProviderFactory;
-import org.mozilla.jss.ssl.SSLCertificateApprovalCallback;
-import org.mozilla.jss.ssl.SSLSocket;
import com.netscape.cms.servlet.csadmin.model.ConfigurationData;
import com.netscape.cms.servlet.csadmin.model.ConfigurationResponseData;
@@ -49,150 +31,21 @@ import com.netscape.cms.servlet.csadmin.model.InstallTokenRequest;
* @author alee
*
*/
-public class ConfigurationRESTClient {
- private class ServerCertApprovalCB implements SSLCertificateApprovalCallback {
+public class ConfigurationRESTClient extends CMSRestClient {
- public boolean approve(org.mozilla.jss.crypto.X509Certificate servercert,
- SSLCertificateApprovalCallback.ValidityStatus status) {
-
- //For now lets just accept the server cert. This is a test tool, being
- // pointed at a well known instance.
-
-
- if (servercert != null) {
- System.out.println("Peer cert details: " +
- "\n subject: " + servercert.getSubjectDN().toString() +
- "\n issuer: " + servercert.getIssuerDN().toString() +
- "\n serial: " + servercert.getSerialNumber().toString()
- );
- }
-
- SSLCertificateApprovalCallback.ValidityItem item;
- Enumeration<?> errors = status.getReasons();
- int i = 0;
- while (errors.hasMoreElements()) {
- i++;
- item = (SSLCertificateApprovalCallback.ValidityItem) errors.nextElement();
- System.out.println("item " + i +
- " reason=" + item.getReason() +
- " depth=" + item.getDepth());
-
- int reason = item.getReason();
-
- if (reason ==
- SSLCertificateApprovalCallback.ValidityStatus.UNTRUSTED_ISSUER ||
- reason == SSLCertificateApprovalCallback.ValidityStatus.BAD_CERT_DOMAIN) {
-
- //Allow these two since we haven't necessarily installed the CA cert for trust
- // and we are choosing "localhost" as the host for this client.
-
- return true;
-
- }
- }
-
- //For other errors return false
- return false;
- }
- }
-
- private class JSSProtocolSocketFactory implements SchemeSocketFactory, LayeredSchemeSocketFactory {
- @Override
- public Socket createSocket(HttpParams params)
- throws IOException {
- return null;
- }
-
- @Override
- public Socket connectSocket(Socket sock, InetSocketAddress remoteAddress,
- InetSocketAddress localAddress, HttpParams params)
- throws IOException, UnknownHostException {
- Socket socket;
- String hostName = null;
- int port = 0;
- if (remoteAddress != null) {
- hostName = remoteAddress.getHostName();
- port = remoteAddress.getPort();
-
- }
-
- int localPort = 0;
- InetAddress localAddr = null;
- if (localAddress != null) {
- localPort = localAddress.getPort();
- localAddr = localAddress.getAddress();
- }
-
- if (sock == null) {
- socket = new SSLSocket(InetAddress.getByName(hostName), port, localAddr, localPort,
- new ServerCertApprovalCB(), null);
-
- } else {
- socket = new SSLSocket(sock, hostName, new ServerCertApprovalCB(), null);
- }
-
- return socket;
- }
-
- @Override
- public boolean isSecure(Socket sock) {
- //We only use this factory in the case of SSL Connections
- return true;
- }
-
- @Override
- public Socket createLayeredSocket(Socket arg0, String arg1, int arg2, boolean arg3) throws IOException,
- UnknownHostException {
- //This method implementation is required to get SSL working.
- return null;
- }
- }
-
- private String clientCertNickname;
private SystemConfigurationResource configClient;
public ConfigurationRESTClient(String baseUri, String clientCertNick) throws URISyntaxException {
+ super(baseUri, clientCertNick);
- // For SSL we are assuming the caller has already intialized JSS and has
- // a valid CryptoManager and CryptoToken
- // optional clientCertNickname is provided for use if required.
-
-
- URI uri = new URI(baseUri);
-
- String protocol = uri.getScheme();
- int port = uri.getPort();
-
- clientCertNickname = null;
- HttpClient httpclient = new DefaultHttpClient();
- if(protocol != null && protocol.equals("https")) {
- if (clientCertNick != null) {
- clientCertNickname = clientCertNick;
- }
-
- Scheme scheme = new Scheme("https",port, new JSSProtocolSocketFactory());
-
- // Register for port 443 our SSLSocketFactory to the ConnectionManager
- httpclient.getConnectionManager().getSchemeRegistry().register(scheme);
-
- }
-
-
- ClientExecutor executor = new ApacheHttpClient4Executor(httpclient);
-
- ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
- providerFactory.addClientErrorInterceptor(new ConfigurationErrorInterceptor());
configClient = ProxyFactory.create(SystemConfigurationResource.class, uri, executor, providerFactory);
}
public ConfigurationResponseData configure(ConfigurationData data) {
- ConfigurationResponseData response = configClient.configure(data);
- return response;
+ return configClient.configure(data);
}
public InstallToken getInstallToken(InstallTokenRequest data) {
- InstallToken token = configClient.getInstallToken(data);
- return token;
+ return configClient.getInstallToken(data);
}
-
}