From 56768d1bd274228a391ac8a4272ab9ccf5ac3e51 Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Sat, 11 Aug 2012 04:53:30 -0500 Subject: Cleaned up REST client class names. The REST client classes have been renamed for better clarity and consistency. Ticket #259 --- .../com/netscape/cms/servlet/test/CAClient.java | 141 ++++++++++ .../netscape/cms/servlet/test/CARestClient.java | 141 ---------- .../src/com/netscape/cms/servlet/test/CATest.java | 10 +- .../cms/servlet/test/ConfigurationTest.java | 6 +- .../src/com/netscape/cms/client/cert/CertCLI.java | 4 +- .../com/netscape/cms/client/cert/CertClient.java | 84 ++++++ .../netscape/cms/client/cert/CertRestClient.java | 84 ------ .../com/netscape/cms/client/group/GroupCLI.java | 4 +- .../com/netscape/cms/client/group/GroupClient.java | 89 ++++++ .../netscape/cms/client/group/GroupRestClient.java | 89 ------ .../src/com/netscape/cms/client/user/UserCLI.java | 4 +- .../com/netscape/cms/client/user/UserClient.java | 89 ++++++ .../netscape/cms/client/user/UserRestClient.java | 89 ------ .../cms/servlet/csadmin/CMSErrorInterceptor.java | 62 ----- .../cms/servlet/csadmin/CMSRestClient.java | 305 --------------------- .../csadmin/ConfigurationErrorInterceptor.java | 65 ----- .../servlet/csadmin/ConfigurationRESTClient.java | 50 ---- .../cms/servlet/csadmin/ConfigurationUtils.java | 2 +- .../netscape/cms/servlet/csadmin/PKIClient.java | 305 +++++++++++++++++++++ .../cms/servlet/csadmin/PKIErrorInterceptor.java | 62 +++++ .../cms/servlet/csadmin/SystemConfigClient.java | 50 ++++ base/deploy/src/scriptlets/pkijython.py | 4 +- .../com/netscape/cms/servlet/test/DRMClient.java | 130 +++++++++ .../netscape/cms/servlet/test/DRMRestClient.java | 130 --------- .../src/com/netscape/cms/servlet/test/DRMTest.java | 4 +- 25 files changed, 969 insertions(+), 1034 deletions(-) create mode 100644 base/ca/functional/src/com/netscape/cms/servlet/test/CAClient.java delete mode 100644 base/ca/functional/src/com/netscape/cms/servlet/test/CARestClient.java create mode 100644 base/common/src/com/netscape/cms/client/cert/CertClient.java delete mode 100644 base/common/src/com/netscape/cms/client/cert/CertRestClient.java create mode 100644 base/common/src/com/netscape/cms/client/group/GroupClient.java delete mode 100644 base/common/src/com/netscape/cms/client/group/GroupRestClient.java create mode 100644 base/common/src/com/netscape/cms/client/user/UserClient.java delete mode 100644 base/common/src/com/netscape/cms/client/user/UserRestClient.java delete mode 100644 base/common/src/com/netscape/cms/servlet/csadmin/CMSErrorInterceptor.java delete mode 100644 base/common/src/com/netscape/cms/servlet/csadmin/CMSRestClient.java delete mode 100644 base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationErrorInterceptor.java delete mode 100644 base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java create mode 100644 base/common/src/com/netscape/cms/servlet/csadmin/PKIClient.java create mode 100644 base/common/src/com/netscape/cms/servlet/csadmin/PKIErrorInterceptor.java create mode 100644 base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigClient.java create mode 100644 base/kra/functional/src/com/netscape/cms/servlet/test/DRMClient.java delete mode 100644 base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java (limited to 'base') diff --git a/base/ca/functional/src/com/netscape/cms/servlet/test/CAClient.java b/base/ca/functional/src/com/netscape/cms/servlet/test/CAClient.java new file mode 100644 index 000000000..cc6aa19d5 --- /dev/null +++ b/base/ca/functional/src/com/netscape/cms/servlet/test/CAClient.java @@ -0,0 +1,141 @@ +//--- 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) 2012 Red Hat, Inc. +//All rights reserved. +//--- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.test; + +import java.net.URISyntaxException; +import java.util.Collection; + +import com.netscape.certsrv.dbs.certdb.CertId; +import com.netscape.certsrv.request.RequestId; +import com.netscape.cms.client.cli.ClientConfig; +import com.netscape.cms.servlet.cert.CertResource; +import com.netscape.cms.servlet.cert.model.CertDataInfos; +import com.netscape.cms.servlet.cert.model.CertSearchData; +import com.netscape.cms.servlet.cert.model.CertificateData; +import com.netscape.cms.servlet.csadmin.PKIClient; +import com.netscape.cms.servlet.profile.ProfileResource; +import com.netscape.cms.servlet.profile.model.ProfileData; +import com.netscape.cms.servlet.profile.model.ProfileDataInfos; +import com.netscape.cms.servlet.request.CertRequestResource; +import com.netscape.cms.servlet.request.model.AgentEnrollmentRequestData; +import com.netscape.cms.servlet.request.model.CertRequestInfo; +import com.netscape.cms.servlet.request.model.CertRequestInfos; +import com.netscape.cms.servlet.request.model.EnrollmentRequestData; + +public class CAClient extends PKIClient { + + private CertResource certClient; + private CertRequestResource certRequestClient; + private ProfileResource profileClient; + + public CAClient(ClientConfig config) throws URISyntaxException { + super(config); + + certRequestClient = createProxy(CertRequestResource.class); + certClient = createProxy(CertResource.class); + profileClient = createProxy(ProfileResource.class); + } + + public Collection listRequests(String requestState, String requestType) { + CertRequestInfos infos = null; + Collection list = null; + infos = certRequestClient.listRequests( + requestState, requestType, new RequestId(0), 100, 100, 10); + list = infos.getRequests(); + + return list; + } + + public CertDataInfos listCerts(String status) { + return certClient.listCerts(status, 100, 10); + } + + public CertDataInfos searchCerts(CertSearchData data) { + return certClient.searchCerts(data, 100, 10); + } + + public ProfileDataInfos listProfiles() { + return profileClient.listProfiles(); + } + + public ProfileData getProfile(String id) { + + if (id == null) { + return null; + } + + return profileClient.retrieveProfile(id); + } + + public CertificateData getCertData(CertId id) { + + if (id == null) { + return null; + } + + return certClient.getCert(id); + + } + + public CertRequestInfos enrollCertificate(EnrollmentRequestData data) { + if (data == null) { + return null; + } + + return certRequestClient.enrollCert(data); + } + + public CertRequestInfo getRequest(RequestId id) { + if (id == null) { + return null; + } + return certRequestClient.getRequestInfo(id); + } + + public AgentEnrollmentRequestData reviewRequest(RequestId id) { + if (id == null) { + return null; + } + return certRequestClient.reviewRequest(id); + } + + public void approveRequest(RequestId id, AgentEnrollmentRequestData data) { + certRequestClient.approveRequest(id, data); + } + + public void rejectRequest(RequestId id, AgentEnrollmentRequestData data) { + certRequestClient.rejectRequest(id, data); + } + + public void cancelRequest(RequestId id, AgentEnrollmentRequestData data) { + certRequestClient.cancelRequest(id, data); + } + + public void updateRequest(RequestId id, AgentEnrollmentRequestData data) { + certRequestClient.updateRequest(id, data); + } + + public void validateRequest(RequestId id, AgentEnrollmentRequestData data) { + certRequestClient.validateRequest(id, data); + } + + public void unassignRequest(RequestId id, AgentEnrollmentRequestData data) { + certRequestClient.unassignRequest(id, data); + } + +} diff --git a/base/ca/functional/src/com/netscape/cms/servlet/test/CARestClient.java b/base/ca/functional/src/com/netscape/cms/servlet/test/CARestClient.java deleted file mode 100644 index 24ce21277..000000000 --- a/base/ca/functional/src/com/netscape/cms/servlet/test/CARestClient.java +++ /dev/null @@ -1,141 +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) 2012 Red Hat, Inc. -//All rights reserved. -//--- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.test; - -import java.net.URISyntaxException; -import java.util.Collection; - -import com.netscape.certsrv.dbs.certdb.CertId; -import com.netscape.certsrv.request.RequestId; -import com.netscape.cms.client.cli.ClientConfig; -import com.netscape.cms.servlet.cert.CertResource; -import com.netscape.cms.servlet.cert.model.CertDataInfos; -import com.netscape.cms.servlet.cert.model.CertSearchData; -import com.netscape.cms.servlet.cert.model.CertificateData; -import com.netscape.cms.servlet.csadmin.CMSRestClient; -import com.netscape.cms.servlet.profile.ProfileResource; -import com.netscape.cms.servlet.profile.model.ProfileData; -import com.netscape.cms.servlet.profile.model.ProfileDataInfos; -import com.netscape.cms.servlet.request.CertRequestResource; -import com.netscape.cms.servlet.request.model.AgentEnrollmentRequestData; -import com.netscape.cms.servlet.request.model.CertRequestInfo; -import com.netscape.cms.servlet.request.model.CertRequestInfos; -import com.netscape.cms.servlet.request.model.EnrollmentRequestData; - -public class CARestClient extends CMSRestClient { - - private CertResource certClient; - private CertRequestResource certRequestClient; - private ProfileResource profileClient; - - public CARestClient(ClientConfig config) throws URISyntaxException { - super(config); - - certRequestClient = createProxy(CertRequestResource.class); - certClient = createProxy(CertResource.class); - profileClient = createProxy(ProfileResource.class); - } - - public Collection listRequests(String requestState, String requestType) { - CertRequestInfos infos = null; - Collection list = null; - infos = certRequestClient.listRequests( - requestState, requestType, new RequestId(0), 100, 100, 10); - list = infos.getRequests(); - - return list; - } - - public CertDataInfos listCerts(String status) { - return certClient.listCerts(status, 100, 10); - } - - public CertDataInfos searchCerts(CertSearchData data) { - return certClient.searchCerts(data, 100, 10); - } - - public ProfileDataInfos listProfiles() { - return profileClient.listProfiles(); - } - - public ProfileData getProfile(String id) { - - if (id == null) { - return null; - } - - return profileClient.retrieveProfile(id); - } - - public CertificateData getCertData(CertId id) { - - if (id == null) { - return null; - } - - return certClient.getCert(id); - - } - - public CertRequestInfos enrollCertificate(EnrollmentRequestData data) { - if (data == null) { - return null; - } - - return certRequestClient.enrollCert(data); - } - - public CertRequestInfo getRequest(RequestId id) { - if (id == null) { - return null; - } - return certRequestClient.getRequestInfo(id); - } - - public AgentEnrollmentRequestData reviewRequest(RequestId id) { - if (id == null) { - return null; - } - return certRequestClient.reviewRequest(id); - } - - public void approveRequest(RequestId id, AgentEnrollmentRequestData data) { - certRequestClient.approveRequest(id, data); - } - - public void rejectRequest(RequestId id, AgentEnrollmentRequestData data) { - certRequestClient.rejectRequest(id, data); - } - - public void cancelRequest(RequestId id, AgentEnrollmentRequestData data) { - certRequestClient.cancelRequest(id, data); - } - - public void updateRequest(RequestId id, AgentEnrollmentRequestData data) { - certRequestClient.updateRequest(id, data); - } - - public void validateRequest(RequestId id, AgentEnrollmentRequestData data) { - certRequestClient.validateRequest(id, data); - } - - public void unassignRequest(RequestId id, AgentEnrollmentRequestData data) { - certRequestClient.unassignRequest(id, data); - } - -} diff --git a/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java b/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java index 8fa4b9bb4..185f01f24 100644 --- a/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java +++ b/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java @@ -148,13 +148,13 @@ public class CATest { log("Exception in logging into token:" + e.toString()); } - CARestClient client; + CAClient client; try { ClientConfig config = new ClientConfig(); config.setServerURI(protocol + "://" + host + ":" + port + "/ca"); config.setCertNickname(clientCertNickname); - client = new CARestClient(config); + client = new CAClient(config); } catch (Exception e) { e.printStackTrace(); return; @@ -275,7 +275,7 @@ public class CATest { } - private static void enrollAndApproveCertRequest(CARestClient client, EnrollmentRequestData data) { + private static void enrollAndApproveCertRequest(CAClient client, EnrollmentRequestData data) { CertRequestInfos reqInfo = null; try { reqInfo = client.enrollCertificate(data); @@ -295,7 +295,7 @@ public class CATest { } } - private static void enrollCertRequest(CARestClient client, EnrollmentRequestData data) { + private static void enrollCertRequest(CAClient client, EnrollmentRequestData data) { CertRequestInfos reqInfo = null; try { reqInfo = client.enrollCertificate(data); @@ -560,7 +560,7 @@ public class CATest { private static void usage(Options options) { HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp("CARestClient Test:", options); + formatter.printHelp("CAClient Test:", options); System.exit(1); } diff --git a/base/common/functional/src/com/netscape/cms/servlet/test/ConfigurationTest.java b/base/common/functional/src/com/netscape/cms/servlet/test/ConfigurationTest.java index 67b67fca0..dfa79c650 100644 --- a/base/common/functional/src/com/netscape/cms/servlet/test/ConfigurationTest.java +++ b/base/common/functional/src/com/netscape/cms/servlet/test/ConfigurationTest.java @@ -57,7 +57,7 @@ import org.mozilla.jss.pkix.primitive.SubjectPublicKeyInfo; import org.mozilla.jss.util.Password; import com.netscape.cms.client.cli.ClientConfig; -import com.netscape.cms.servlet.csadmin.ConfigurationRESTClient; +import com.netscape.cms.servlet.csadmin.SystemConfigClient; import com.netscape.cms.servlet.csadmin.model.CertData; import com.netscape.cms.servlet.csadmin.model.ConfigurationData; import com.netscape.cms.servlet.csadmin.model.ConfigurationResponseData; @@ -184,12 +184,12 @@ public class ConfigurationTest { System.out.println("Exception in logging into token:" + e.toString()); } - ConfigurationRESTClient client = null; + SystemConfigClient client = null; try { ClientConfig config = new ClientConfig(); config.setServerURI(protocol + "://" + host + ":" + port + "/" + cstype); - client = new ConfigurationRESTClient(config); + client = new SystemConfigClient(config); } catch (URISyntaxException e1) { e1.printStackTrace(); System.exit(1); diff --git a/base/common/src/com/netscape/cms/client/cert/CertCLI.java b/base/common/src/com/netscape/cms/client/cert/CertCLI.java index 70ad9021e..2f7ab668e 100644 --- a/base/common/src/com/netscape/cms/client/cert/CertCLI.java +++ b/base/common/src/com/netscape/cms/client/cert/CertCLI.java @@ -35,7 +35,7 @@ import com.netscape.cms.servlet.request.model.CertRequestInfo; public class CertCLI extends CLI { public MainCLI parent; - public CertRestClient client; + public CertClient client; public CertCLI(MainCLI parent) { super("cert", "Certificate management commands"); @@ -75,7 +75,7 @@ public class CertCLI extends CLI { public void execute(String[] args) throws Exception { - client = new CertRestClient(parent.config); + client = new CertClient(parent.config); client.setVerbose(verbose); if (args.length == 0) { diff --git a/base/common/src/com/netscape/cms/client/cert/CertClient.java b/base/common/src/com/netscape/cms/client/cert/CertClient.java new file mode 100644 index 000000000..b8fdde703 --- /dev/null +++ b/base/common/src/com/netscape/cms/client/cert/CertClient.java @@ -0,0 +1,84 @@ +//--- 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) 2012 Red Hat, Inc. +//All rights reserved. +//--- END COPYRIGHT BLOCK --- +package com.netscape.cms.client.cert; + +import java.net.URISyntaxException; + +import com.netscape.certsrv.dbs.certdb.CertId; +import com.netscape.certsrv.request.RequestId; +import com.netscape.cms.client.cli.ClientConfig; +import com.netscape.cms.servlet.cert.CertResource; +import com.netscape.cms.servlet.cert.model.CertDataInfos; +import com.netscape.cms.servlet.cert.model.CertRevokeRequest; +import com.netscape.cms.servlet.cert.model.CertSearchData; +import com.netscape.cms.servlet.cert.model.CertUnrevokeRequest; +import com.netscape.cms.servlet.cert.model.CertificateData; +import com.netscape.cms.servlet.csadmin.PKIClient; +import com.netscape.cms.servlet.request.CertRequestResource; +import com.netscape.cms.servlet.request.model.AgentEnrollmentRequestData; +import com.netscape.cms.servlet.request.model.CertRequestInfo; +import com.netscape.cms.servlet.request.model.CertRequestInfos; +import com.netscape.cms.servlet.request.model.EnrollmentRequestData; + +/** + * @author Endi S. Dewata + */ +public class CertClient extends PKIClient { + + public CertResource certClient; + public CertRequestResource certRequestResource; + + public CertClient(ClientConfig config) throws URISyntaxException { + super(config); + + certClient = createProxy(CertResource.class); + certRequestResource = createProxy(CertRequestResource.class); + } + + public CertificateData getCert(CertId id) { + return certClient.getCert(id); + } + + public CertDataInfos findCerts(CertSearchData data, Integer start, Integer size) { + return certClient.searchCerts(data, start, size); + } + + public CertRequestInfo revokeCert(CertId id, CertRevokeRequest request) { + return certClient.revokeCert(id, request); + } + + public CertRequestInfo revokeCACert(CertId id, CertRevokeRequest request) { + return certClient.revokeCACert(id, request); + } + + public CertRequestInfo unrevokeCert(CertId id, CertUnrevokeRequest request) { + return certClient.unrevokeCert(id, request); + } + + public CertRequestInfos enrollRequest(EnrollmentRequestData data){ + return certRequestResource.enrollCert(data); + } + + public AgentEnrollmentRequestData reviewRequest(RequestId id){ + return certRequestResource.reviewRequest(id); + } + + public void approveRequest(RequestId id, AgentEnrollmentRequestData data) { + certRequestResource.approveRequest(id, data); + } +} diff --git a/base/common/src/com/netscape/cms/client/cert/CertRestClient.java b/base/common/src/com/netscape/cms/client/cert/CertRestClient.java deleted file mode 100644 index 7c8b9f3e4..000000000 --- a/base/common/src/com/netscape/cms/client/cert/CertRestClient.java +++ /dev/null @@ -1,84 +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) 2012 Red Hat, Inc. -//All rights reserved. -//--- END COPYRIGHT BLOCK --- -package com.netscape.cms.client.cert; - -import java.net.URISyntaxException; - -import com.netscape.certsrv.dbs.certdb.CertId; -import com.netscape.certsrv.request.RequestId; -import com.netscape.cms.client.cli.ClientConfig; -import com.netscape.cms.servlet.cert.CertResource; -import com.netscape.cms.servlet.cert.model.CertDataInfos; -import com.netscape.cms.servlet.cert.model.CertRevokeRequest; -import com.netscape.cms.servlet.cert.model.CertSearchData; -import com.netscape.cms.servlet.cert.model.CertUnrevokeRequest; -import com.netscape.cms.servlet.cert.model.CertificateData; -import com.netscape.cms.servlet.csadmin.CMSRestClient; -import com.netscape.cms.servlet.request.CertRequestResource; -import com.netscape.cms.servlet.request.model.AgentEnrollmentRequestData; -import com.netscape.cms.servlet.request.model.CertRequestInfo; -import com.netscape.cms.servlet.request.model.CertRequestInfos; -import com.netscape.cms.servlet.request.model.EnrollmentRequestData; - -/** - * @author Endi S. Dewata - */ -public class CertRestClient extends CMSRestClient { - - public CertResource certClient; - public CertRequestResource certRequestResource; - - public CertRestClient(ClientConfig config) throws URISyntaxException { - super(config); - - certClient = createProxy(CertResource.class); - certRequestResource = createProxy(CertRequestResource.class); - } - - public CertificateData getCert(CertId id) { - return certClient.getCert(id); - } - - public CertDataInfos findCerts(CertSearchData data, Integer start, Integer size) { - return certClient.searchCerts(data, start, size); - } - - public CertRequestInfo revokeCert(CertId id, CertRevokeRequest request) { - return certClient.revokeCert(id, request); - } - - public CertRequestInfo revokeCACert(CertId id, CertRevokeRequest request) { - return certClient.revokeCACert(id, request); - } - - public CertRequestInfo unrevokeCert(CertId id, CertUnrevokeRequest request) { - return certClient.unrevokeCert(id, request); - } - - public CertRequestInfos enrollRequest(EnrollmentRequestData data){ - return certRequestResource.enrollCert(data); - } - - public AgentEnrollmentRequestData reviewRequest(RequestId id){ - return certRequestResource.reviewRequest(id); - } - - public void approveRequest(RequestId id, AgentEnrollmentRequestData data) { - certRequestResource.approveRequest(id, data); - } -} diff --git a/base/common/src/com/netscape/cms/client/group/GroupCLI.java b/base/common/src/com/netscape/cms/client/group/GroupCLI.java index fefc1b0c9..b106c6fc1 100644 --- a/base/common/src/com/netscape/cms/client/group/GroupCLI.java +++ b/base/common/src/com/netscape/cms/client/group/GroupCLI.java @@ -34,7 +34,7 @@ import com.netscape.cms.client.cli.MainCLI; public class GroupCLI extends CLI { public MainCLI parent; - public GroupRestClient client; + public GroupClient client; public GroupCLI(MainCLI parent) { super("group", "Group management commands"); @@ -74,7 +74,7 @@ public class GroupCLI extends CLI { public void execute(String[] args) throws Exception { - client = new GroupRestClient(parent.config); + client = new GroupClient(parent.config); client.setVerbose(verbose); if (args.length == 0) { diff --git a/base/common/src/com/netscape/cms/client/group/GroupClient.java b/base/common/src/com/netscape/cms/client/group/GroupClient.java new file mode 100644 index 000000000..410c1ad3d --- /dev/null +++ b/base/common/src/com/netscape/cms/client/group/GroupClient.java @@ -0,0 +1,89 @@ +//--- 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) 2012 Red Hat, Inc. +//All rights reserved. +//--- END COPYRIGHT BLOCK --- +package com.netscape.cms.client.group; + +import java.net.URISyntaxException; + +import org.jboss.resteasy.client.ClientResponse; + +import com.netscape.certsrv.group.GroupCollection; +import com.netscape.certsrv.group.GroupData; +import com.netscape.certsrv.group.GroupMemberCollection; +import com.netscape.certsrv.group.GroupMemberData; +import com.netscape.certsrv.group.GroupMemberResource; +import com.netscape.certsrv.group.GroupResource; +import com.netscape.cms.client.cli.ClientConfig; +import com.netscape.cms.servlet.csadmin.PKIClient; + +/** + * @author Endi S. Dewata + */ +public class GroupClient extends PKIClient { + + public GroupResource groupClient; + public GroupMemberResource groupMemberClient; + + public GroupClient(ClientConfig config) throws URISyntaxException { + super(config); + + groupClient = createProxy(GroupResource.class); + groupMemberClient = createProxy(GroupMemberResource.class); + } + + public GroupCollection findGroups(String groupIDFilter, Integer start, Integer size) { + return groupClient.findGroups(groupIDFilter, start, size); + } + + public GroupData getGroup(String groupID) { + return groupClient.getGroup(groupID); + } + + public GroupData addGroup(GroupData groupData) { + @SuppressWarnings("unchecked") + ClientResponse response = (ClientResponse)groupClient.addGroup(groupData); + return getEntity(response); + } + + public GroupData modifyGroup(String groupID, GroupData groupData) { + @SuppressWarnings("unchecked") + ClientResponse response = (ClientResponse)groupClient.modifyGroup(groupID, groupData); + return getEntity(response); + } + + public void removeGroup(String groupID) { + groupClient.removeGroup(groupID); + } + + public GroupMemberCollection findGroupMembers(String groupID, Integer start, Integer size) { + return groupMemberClient.findGroupMembers(groupID, start, size); + } + + public GroupMemberData getGroupMember(String groupID, String memberID) { + return groupMemberClient.getGroupMember(groupID, memberID); + } + + public GroupMemberData addGroupMember(String groupID, String memberID) { + @SuppressWarnings("unchecked") + ClientResponse response = (ClientResponse)groupMemberClient.addGroupMember(groupID, memberID); + return getEntity(response); + } + + public void removeGroupMember(String groupID, String memberID) { + groupMemberClient.removeGroupMember(groupID, memberID); + } +} diff --git a/base/common/src/com/netscape/cms/client/group/GroupRestClient.java b/base/common/src/com/netscape/cms/client/group/GroupRestClient.java deleted file mode 100644 index 1b98035ea..000000000 --- a/base/common/src/com/netscape/cms/client/group/GroupRestClient.java +++ /dev/null @@ -1,89 +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) 2012 Red Hat, Inc. -//All rights reserved. -//--- END COPYRIGHT BLOCK --- -package com.netscape.cms.client.group; - -import java.net.URISyntaxException; - -import org.jboss.resteasy.client.ClientResponse; - -import com.netscape.certsrv.group.GroupCollection; -import com.netscape.certsrv.group.GroupData; -import com.netscape.certsrv.group.GroupMemberCollection; -import com.netscape.certsrv.group.GroupMemberData; -import com.netscape.certsrv.group.GroupMemberResource; -import com.netscape.certsrv.group.GroupResource; -import com.netscape.cms.client.cli.ClientConfig; -import com.netscape.cms.servlet.csadmin.CMSRestClient; - -/** - * @author Endi S. Dewata - */ -public class GroupRestClient extends CMSRestClient { - - public GroupResource groupClient; - public GroupMemberResource groupMemberClient; - - public GroupRestClient(ClientConfig config) throws URISyntaxException { - super(config); - - groupClient = createProxy(GroupResource.class); - groupMemberClient = createProxy(GroupMemberResource.class); - } - - public GroupCollection findGroups(String groupIDFilter, Integer start, Integer size) { - return groupClient.findGroups(groupIDFilter, start, size); - } - - public GroupData getGroup(String groupID) { - return groupClient.getGroup(groupID); - } - - public GroupData addGroup(GroupData groupData) { - @SuppressWarnings("unchecked") - ClientResponse response = (ClientResponse)groupClient.addGroup(groupData); - return getEntity(response); - } - - public GroupData modifyGroup(String groupID, GroupData groupData) { - @SuppressWarnings("unchecked") - ClientResponse response = (ClientResponse)groupClient.modifyGroup(groupID, groupData); - return getEntity(response); - } - - public void removeGroup(String groupID) { - groupClient.removeGroup(groupID); - } - - public GroupMemberCollection findGroupMembers(String groupID, Integer start, Integer size) { - return groupMemberClient.findGroupMembers(groupID, start, size); - } - - public GroupMemberData getGroupMember(String groupID, String memberID) { - return groupMemberClient.getGroupMember(groupID, memberID); - } - - public GroupMemberData addGroupMember(String groupID, String memberID) { - @SuppressWarnings("unchecked") - ClientResponse response = (ClientResponse)groupMemberClient.addGroupMember(groupID, memberID); - return getEntity(response); - } - - public void removeGroupMember(String groupID, String memberID) { - groupMemberClient.removeGroupMember(groupID, memberID); - } -} diff --git a/base/common/src/com/netscape/cms/client/user/UserCLI.java b/base/common/src/com/netscape/cms/client/user/UserCLI.java index a5104135b..cc9bc8aa5 100644 --- a/base/common/src/com/netscape/cms/client/user/UserCLI.java +++ b/base/common/src/com/netscape/cms/client/user/UserCLI.java @@ -34,7 +34,7 @@ import com.netscape.cms.client.cli.MainCLI; public class UserCLI extends CLI { public MainCLI parent; - public UserRestClient client; + public UserClient client; public UserCLI(MainCLI parent) { super("user", "User management commands"); @@ -75,7 +75,7 @@ public class UserCLI extends CLI { public void execute(String[] args) throws Exception { - client = new UserRestClient(parent.config); + client = new UserClient(parent.config); client.setVerbose(verbose); if (args.length == 0) { diff --git a/base/common/src/com/netscape/cms/client/user/UserClient.java b/base/common/src/com/netscape/cms/client/user/UserClient.java new file mode 100644 index 000000000..ea2991ac8 --- /dev/null +++ b/base/common/src/com/netscape/cms/client/user/UserClient.java @@ -0,0 +1,89 @@ +//--- 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) 2012 Red Hat, Inc. +//All rights reserved. +//--- END COPYRIGHT BLOCK --- +package com.netscape.cms.client.user; + +import java.net.URISyntaxException; + +import org.jboss.resteasy.client.ClientResponse; + +import com.netscape.certsrv.user.UserCertCollection; +import com.netscape.certsrv.user.UserCertData; +import com.netscape.certsrv.user.UserCertResource; +import com.netscape.certsrv.user.UserCollection; +import com.netscape.certsrv.user.UserData; +import com.netscape.certsrv.user.UserResource; +import com.netscape.cms.client.cli.ClientConfig; +import com.netscape.cms.servlet.csadmin.PKIClient; + +/** + * @author Endi S. Dewata + */ +public class UserClient extends PKIClient { + + public UserResource userClient; + public UserCertResource userCertClient; + + public UserClient(ClientConfig config) throws URISyntaxException { + super(config); + + userClient = createProxy(UserResource.class); + userCertClient = createProxy(UserCertResource.class); + } + + public UserCollection findUsers(String filter, Integer start, Integer size) { + return userClient.findUsers(filter, start, size); + } + + public UserData getUser(String userID) { + return userClient.getUser(userID); + } + + public UserData addUser(UserData userData) { + @SuppressWarnings("unchecked") + ClientResponse response = (ClientResponse)userClient.addUser(userData); + return getEntity(response); + } + + public UserData modifyUser(String userID, UserData userData) { + @SuppressWarnings("unchecked") + ClientResponse response = (ClientResponse)userClient.modifyUser(userID, userData); + return getEntity(response); + } + + public void removeUser(String userID) { + userClient.removeUser(userID); + } + + public UserCertCollection findUserCerts(String userID, Integer start, Integer size) { + return userCertClient.findUserCerts(userID, start, size); + } + + public UserCertData getUserCert(String userID, String certID) { + return userCertClient.getUserCert(userID, certID); + } + + public UserCertData addUserCert(String userID, UserCertData userCertData) { + @SuppressWarnings("unchecked") + ClientResponse response = (ClientResponse)userCertClient.addUserCert(userID, userCertData); + return getEntity(response); + } + + public void removeUserCert(String userID, String certID) { + userCertClient.removeUserCert(userID, certID); + } +} diff --git a/base/common/src/com/netscape/cms/client/user/UserRestClient.java b/base/common/src/com/netscape/cms/client/user/UserRestClient.java deleted file mode 100644 index 54c1e3fa1..000000000 --- a/base/common/src/com/netscape/cms/client/user/UserRestClient.java +++ /dev/null @@ -1,89 +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) 2012 Red Hat, Inc. -//All rights reserved. -//--- END COPYRIGHT BLOCK --- -package com.netscape.cms.client.user; - -import java.net.URISyntaxException; - -import org.jboss.resteasy.client.ClientResponse; - -import com.netscape.certsrv.user.UserCertCollection; -import com.netscape.certsrv.user.UserCertData; -import com.netscape.certsrv.user.UserCertResource; -import com.netscape.certsrv.user.UserCollection; -import com.netscape.certsrv.user.UserData; -import com.netscape.certsrv.user.UserResource; -import com.netscape.cms.client.cli.ClientConfig; -import com.netscape.cms.servlet.csadmin.CMSRestClient; - -/** - * @author Endi S. Dewata - */ -public class UserRestClient extends CMSRestClient { - - public UserResource userClient; - public UserCertResource userCertClient; - - public UserRestClient(ClientConfig config) throws URISyntaxException { - super(config); - - userClient = createProxy(UserResource.class); - userCertClient = createProxy(UserCertResource.class); - } - - public UserCollection findUsers(String filter, Integer start, Integer size) { - return userClient.findUsers(filter, start, size); - } - - public UserData getUser(String userID) { - return userClient.getUser(userID); - } - - public UserData addUser(UserData userData) { - @SuppressWarnings("unchecked") - ClientResponse response = (ClientResponse)userClient.addUser(userData); - return getEntity(response); - } - - public UserData modifyUser(String userID, UserData userData) { - @SuppressWarnings("unchecked") - ClientResponse response = (ClientResponse)userClient.modifyUser(userID, userData); - return getEntity(response); - } - - public void removeUser(String userID) { - userClient.removeUser(userID); - } - - public UserCertCollection findUserCerts(String userID, Integer start, Integer size) { - return userCertClient.findUserCerts(userID, start, size); - } - - public UserCertData getUserCert(String userID, String certID) { - return userCertClient.getUserCert(userID, certID); - } - - public UserCertData addUserCert(String userID, UserCertData userCertData) { - @SuppressWarnings("unchecked") - ClientResponse response = (ClientResponse)userCertClient.addUserCert(userID, userCertData); - return getEntity(response); - } - - public void removeUserCert(String userID, String certID) { - userCertClient.removeUserCert(userID, certID); - } -} diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/CMSErrorInterceptor.java b/base/common/src/com/netscape/cms/servlet/csadmin/CMSErrorInterceptor.java deleted file mode 100644 index 870422391..000000000 --- a/base/common/src/com/netscape/cms/servlet/csadmin/CMSErrorInterceptor.java +++ /dev/null @@ -1,62 +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.cms.servlet.csadmin; - -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; - -import org.jboss.resteasy.client.ClientResponse; -import org.jboss.resteasy.client.core.ClientErrorInterceptor; - -import com.netscape.cms.servlet.base.CMSException; - -public class CMSErrorInterceptor implements ClientErrorInterceptor { - - public void handle(ClientResponse response) { - - // handle HTTP code 4xx and 5xx - int code = response.getResponseStatus().getStatusCode(); - if (code < 400) - return; - - MultivaluedMap headers = response.getHeaders(); - String contentType = headers.getFirst("Content-Type"); - - // handle XML content only - if (contentType == null || !contentType.startsWith(MediaType.APPLICATION_XML)) - return; - - CMSException exception; - - try { - // Requires RESTEasy 2.3.2 - // https://issues.jboss.org/browse/RESTEASY-652 - CMSException.Data data = response.getEntity(CMSException.Data.class); - - Class clazz = Class.forName(data.className); - exception = (CMSException) clazz.getConstructor(CMSException.Data.class).newInstance(data); - - } catch (Exception e) { - e.printStackTrace(); - return; - } - - throw exception; - } - -} diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/CMSRestClient.java b/base/common/src/com/netscape/cms/servlet/csadmin/CMSRestClient.java deleted file mode 100644 index 9d7f2f9ac..000000000 --- a/base/common/src/com/netscape/cms/servlet/csadmin/CMSRestClient.java +++ /dev/null @@ -1,305 +0,0 @@ -package com.netscape.cms.servlet.csadmin; - -import java.io.File; -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.ArrayList; -import java.util.Enumeration; -import java.util.List; - -import org.apache.commons.httpclient.ConnectTimeoutException; -import org.apache.http.Header; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; -import org.apache.http.ProtocolException; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.auth.params.AuthPNames; -import org.apache.http.client.methods.HttpUriRequest; -import org.apache.http.client.params.AuthPolicy; -import org.apache.http.client.params.HttpClientParams; -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.ClientParamsStack; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.impl.client.DefaultRedirectStrategy; -import org.apache.http.impl.client.EntityEnclosingRequestWrapper; -import org.apache.http.impl.client.RequestWrapper; -import org.apache.http.params.HttpParams; -import org.apache.http.protocol.HttpContext; -import org.jboss.resteasy.client.ClientExecutor; -import org.jboss.resteasy.client.ClientResponse; -import org.jboss.resteasy.client.ClientResponseFailure; -import org.jboss.resteasy.client.ProxyFactory; -import org.jboss.resteasy.client.core.BaseClientResponse; -import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor; -import org.jboss.resteasy.client.core.extractors.ClientErrorHandler; -import org.jboss.resteasy.spi.ResteasyProviderFactory; -import org.mozilla.jss.CryptoManager; -import org.mozilla.jss.crypto.AlreadyInitializedException; -import org.mozilla.jss.ssl.SSLCertificateApprovalCallback; -import org.mozilla.jss.ssl.SSLSocket; - -import com.netscape.cms.client.cli.ClientConfig; - -public abstract class CMSRestClient { - - protected boolean verbose; - - protected ClientConfig config; - - protected ResteasyProviderFactory providerFactory; - protected ClientErrorHandler errorHandler; - protected ClientExecutor executor; - - public CMSRestClient(ClientConfig config) { - this.config = config; - - DefaultHttpClient httpClient = new DefaultHttpClient(); - - // Register https scheme. - Scheme scheme = new Scheme("https", 443, new JSSProtocolSocketFactory()); - httpClient.getConnectionManager().getSchemeRegistry().register(scheme); - - if (config.getUsername() != null && config.getPassword() != null) { - List authPref = new ArrayList(); - authPref.add(AuthPolicy.BASIC); - httpClient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, authPref); - - httpClient.getCredentialsProvider().setCredentials( - AuthScope.ANY, - new UsernamePasswordCredentials(config.getUsername(), config.getPassword())); - } - - httpClient.addRequestInterceptor(new HttpRequestInterceptor() { - @Override - public void process(HttpRequest request, HttpContext context) throws HttpException, IOException { - if (verbose) { - System.out.println("HTTP request: "+request.getRequestLine()); - for (Header header : request.getAllHeaders()) { - System.out.println(" "+header.getName()+": "+header.getValue()); - } - } - - // Set the request parameter to follow redirections. - HttpParams params = request.getParams(); - if (params instanceof ClientParamsStack) { - ClientParamsStack paramsStack = (ClientParamsStack)request.getParams(); - params = paramsStack.getRequestParams(); - } - HttpClientParams.setRedirecting(params, true); - } - }); - - httpClient.addResponseInterceptor(new HttpResponseInterceptor() { - @Override - public void process(HttpResponse response, HttpContext context) throws HttpException, IOException { - if (verbose) { - System.out.println("HTTP response: "+response.getStatusLine()); - for (Header header : response.getAllHeaders()) { - System.out.println(" "+header.getName()+": "+header.getValue()); - } - } - } - }); - - httpClient.setRedirectStrategy(new DefaultRedirectStrategy() { - @Override - public HttpUriRequest getRedirect(HttpRequest request, HttpResponse response, HttpContext context) - throws ProtocolException { - - HttpUriRequest uriRequest = super.getRedirect(request, response, context); - - URI uri = uriRequest.getURI(); - if (verbose) System.out.println("HTTP redirect: "+uri); - - // Redirect the original request to the new URI. - RequestWrapper wrapper; - if (request instanceof HttpEntityEnclosingRequest) { - wrapper = new EntityEnclosingRequestWrapper((HttpEntityEnclosingRequest)request); - } else { - wrapper = new RequestWrapper(request); - } - wrapper.setURI(uri); - - return wrapper; - } - - @Override - public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) - throws ProtocolException { - - // The default redirection policy does not redirect POST or PUT. - // This overrides the policy to follow redirections for all HTTP methods. - return response.getStatusLine().getStatusCode() == 302; - } - }); - - executor = new ApacheHttpClient4Executor(httpClient); - providerFactory = ResteasyProviderFactory.getInstance(); - providerFactory.addClientErrorInterceptor(new CMSErrorInterceptor()); - errorHandler = new ClientErrorHandler(providerFactory.getClientErrorInterceptors()); - } - - private class ServerCertApprovalCB implements SSLCertificateApprovalCallback { - - // Callback to approve or deny returned SSL server cert. - // Right now, simply approve the cert. - public boolean approve(org.mozilla.jss.crypto.X509Certificate serverCert, - SSLCertificateApprovalCallback.ValidityStatus status) { - - if (verbose) System.out.println("Server certificate: "+serverCert.getSubjectDN()); - - SSLCertificateApprovalCallback.ValidityItem item; - - Enumeration errors = status.getReasons(); - while (errors.hasMoreElements()) { - item = (SSLCertificateApprovalCallback.ValidityItem) errors.nextElement(); - int reason = item.getReason(); - - if (reason == SSLCertificateApprovalCallback.ValidityStatus.UNTRUSTED_ISSUER || - reason == SSLCertificateApprovalCallback.ValidityStatus.BAD_CERT_DOMAIN) { - - // Allow these two since we haven't installed the CA cert for trust. - - 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, - ConnectTimeoutException { - - // Initialize JSS before using SSLSocket, - // otherwise it will throw UnsatisfiedLinkError. - if (config.getCertDatabase() == null) { - try { - // No database specified, use $HOME/.pki/nssdb. - File homeDir = new File(System.getProperty("user.home")); - File pkiDir = new File(homeDir, ".pki"); - File nssdbDir = new File(pkiDir, "nssdb"); - nssdbDir.mkdirs(); - - CryptoManager.initialize(nssdbDir.getAbsolutePath()); - - } catch (AlreadyInitializedException e) { - // ignore - - } catch (Exception e) { - throw new Error(e); - } - - } else { - // Database specified, already initialized by the main program. - } - - 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(); - } - - SSLSocket socket; - if (sock == null) { - socket = new SSLSocket(InetAddress.getByName(hostName), - port, - localAddr, - localPort, - new ServerCertApprovalCB(), - null); - - } else { - socket = new SSLSocket(sock, hostName, new ServerCertApprovalCB(), null); - } - - String certNickname = config.getCertNickname(); - if (certNickname != null) { - if (verbose) System.out.println("Client certificate: "+certNickname); - socket.setClientCertNickname(certNickname); - } - - 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 socket, String target, int port, boolean autoClose) - throws IOException, UnknownHostException { - // This method implementation is required to get SSL working. - return null; - } - - } - - public T createProxy(Class clazz) throws URISyntaxException { - URI uri = new URI(config.getServerURI()+"/rest"); - return ProxyFactory.create(clazz, uri, executor, providerFactory); - } - - @SuppressWarnings("unchecked") - public T getEntity(ClientResponse response) { - BaseClientResponse clientResponse = (BaseClientResponse)response; - try { - clientResponse.checkFailureStatus(); - - } catch (ClientResponseFailure e) { - errorHandler.clientErrorHandling((BaseClientResponse) e.getResponse(), e); - - } catch (RuntimeException e) { - errorHandler.clientErrorHandling(clientResponse, e); - } - - return response.getEntity(); - } - - public boolean isVerbose() { - return verbose; - } - - public void setVerbose(boolean verbose) { - this.verbose = verbose; - } -} diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationErrorInterceptor.java b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationErrorInterceptor.java deleted file mode 100644 index 63af4101a..000000000 --- a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationErrorInterceptor.java +++ /dev/null @@ -1,65 +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) 2012 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.csadmin; - -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; - -import org.jboss.resteasy.client.ClientResponse; -import org.jboss.resteasy.client.core.ClientErrorInterceptor; - -import com.netscape.cms.servlet.base.CMSException; - -/** - * @author alee - * - */ -public class ConfigurationErrorInterceptor implements ClientErrorInterceptor { - - public void handle(ClientResponse response) { - - // handle HTTP code 4xx and 5xx - int code = response.getResponseStatus().getStatusCode(); - if (code < 400) return; - - MultivaluedMap headers = response.getHeaders(); - String contentType = headers.getFirst("Content-Type"); - - // handle XML content only - System.out.println("Content-type: "+contentType); - if (!contentType.startsWith(MediaType.APPLICATION_XML)) return; - - CMSException exception; - - try { - // Requires RESTEasy 2.3.2 - // https://issues.jboss.org/browse/RESTEASY-652 - CMSException.Data data = response.getEntity(CMSException.Data.class); - - Class clazz = Class.forName(data.className); - exception = (CMSException) clazz.getConstructor(CMSException.Data.class).newInstance(data); - - } catch (Exception e) { - e.printStackTrace(); - return; - } - - throw exception; - } - -} diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java deleted file mode 100644 index 7fe8af2f3..000000000 --- a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationRESTClient.java +++ /dev/null @@ -1,50 +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) 2012 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.csadmin; - -import java.net.URISyntaxException; - -import com.netscape.cms.client.cli.ClientConfig; -import com.netscape.cms.servlet.csadmin.model.ConfigurationData; -import com.netscape.cms.servlet.csadmin.model.ConfigurationResponseData; -import com.netscape.cms.servlet.csadmin.model.InstallToken; -import com.netscape.cms.servlet.csadmin.model.InstallTokenRequest; - - -/** - * @author alee - * - */ -public class ConfigurationRESTClient extends CMSRestClient { - - private SystemConfigurationResource configClient; - - public ConfigurationRESTClient(ClientConfig config) throws URISyntaxException { - super(config); - - configClient = createProxy(SystemConfigurationResource.class); - } - - public ConfigurationResponseData configure(ConfigurationData data) { - return configClient.configure(data); - } - - public InstallToken getInstallToken(InstallTokenRequest data) { - return configClient.getInstallToken(data); - } -} diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java index 50c7853df..be66f5cf7 100644 --- a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java +++ b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java @@ -299,7 +299,7 @@ public class ConfigurationUtils { ClientConfig config = new ClientConfig(); config.setServerURI("https://" + sdhost + ":" + sdport + "/ca"); - ConfigurationRESTClient client = new ConfigurationRESTClient(config); + SystemConfigClient client = new SystemConfigClient(config); InstallToken token = client.getInstallToken(data); diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/PKIClient.java b/base/common/src/com/netscape/cms/servlet/csadmin/PKIClient.java new file mode 100644 index 000000000..647056bd1 --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/csadmin/PKIClient.java @@ -0,0 +1,305 @@ +package com.netscape.cms.servlet.csadmin; + +import java.io.File; +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.ArrayList; +import java.util.Enumeration; +import java.util.List; + +import org.apache.commons.httpclient.ConnectTimeoutException; +import org.apache.http.Header; +import org.apache.http.HttpEntityEnclosingRequest; +import org.apache.http.HttpException; +import org.apache.http.HttpRequest; +import org.apache.http.HttpRequestInterceptor; +import org.apache.http.HttpResponse; +import org.apache.http.HttpResponseInterceptor; +import org.apache.http.ProtocolException; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.auth.params.AuthPNames; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.client.params.AuthPolicy; +import org.apache.http.client.params.HttpClientParams; +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.ClientParamsStack; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.DefaultRedirectStrategy; +import org.apache.http.impl.client.EntityEnclosingRequestWrapper; +import org.apache.http.impl.client.RequestWrapper; +import org.apache.http.params.HttpParams; +import org.apache.http.protocol.HttpContext; +import org.jboss.resteasy.client.ClientExecutor; +import org.jboss.resteasy.client.ClientResponse; +import org.jboss.resteasy.client.ClientResponseFailure; +import org.jboss.resteasy.client.ProxyFactory; +import org.jboss.resteasy.client.core.BaseClientResponse; +import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor; +import org.jboss.resteasy.client.core.extractors.ClientErrorHandler; +import org.jboss.resteasy.spi.ResteasyProviderFactory; +import org.mozilla.jss.CryptoManager; +import org.mozilla.jss.crypto.AlreadyInitializedException; +import org.mozilla.jss.ssl.SSLCertificateApprovalCallback; +import org.mozilla.jss.ssl.SSLSocket; + +import com.netscape.cms.client.cli.ClientConfig; + +public abstract class PKIClient { + + protected boolean verbose; + + protected ClientConfig config; + + protected ResteasyProviderFactory providerFactory; + protected ClientErrorHandler errorHandler; + protected ClientExecutor executor; + + public PKIClient(ClientConfig config) { + this.config = config; + + DefaultHttpClient httpClient = new DefaultHttpClient(); + + // Register https scheme. + Scheme scheme = new Scheme("https", 443, new JSSProtocolSocketFactory()); + httpClient.getConnectionManager().getSchemeRegistry().register(scheme); + + if (config.getUsername() != null && config.getPassword() != null) { + List authPref = new ArrayList(); + authPref.add(AuthPolicy.BASIC); + httpClient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, authPref); + + httpClient.getCredentialsProvider().setCredentials( + AuthScope.ANY, + new UsernamePasswordCredentials(config.getUsername(), config.getPassword())); + } + + httpClient.addRequestInterceptor(new HttpRequestInterceptor() { + @Override + public void process(HttpRequest request, HttpContext context) throws HttpException, IOException { + if (verbose) { + System.out.println("HTTP request: "+request.getRequestLine()); + for (Header header : request.getAllHeaders()) { + System.out.println(" "+header.getName()+": "+header.getValue()); + } + } + + // Set the request parameter to follow redirections. + HttpParams params = request.getParams(); + if (params instanceof ClientParamsStack) { + ClientParamsStack paramsStack = (ClientParamsStack)request.getParams(); + params = paramsStack.getRequestParams(); + } + HttpClientParams.setRedirecting(params, true); + } + }); + + httpClient.addResponseInterceptor(new HttpResponseInterceptor() { + @Override + public void process(HttpResponse response, HttpContext context) throws HttpException, IOException { + if (verbose) { + System.out.println("HTTP response: "+response.getStatusLine()); + for (Header header : response.getAllHeaders()) { + System.out.println(" "+header.getName()+": "+header.getValue()); + } + } + } + }); + + httpClient.setRedirectStrategy(new DefaultRedirectStrategy() { + @Override + public HttpUriRequest getRedirect(HttpRequest request, HttpResponse response, HttpContext context) + throws ProtocolException { + + HttpUriRequest uriRequest = super.getRedirect(request, response, context); + + URI uri = uriRequest.getURI(); + if (verbose) System.out.println("HTTP redirect: "+uri); + + // Redirect the original request to the new URI. + RequestWrapper wrapper; + if (request instanceof HttpEntityEnclosingRequest) { + wrapper = new EntityEnclosingRequestWrapper((HttpEntityEnclosingRequest)request); + } else { + wrapper = new RequestWrapper(request); + } + wrapper.setURI(uri); + + return wrapper; + } + + @Override + public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) + throws ProtocolException { + + // The default redirection policy does not redirect POST or PUT. + // This overrides the policy to follow redirections for all HTTP methods. + return response.getStatusLine().getStatusCode() == 302; + } + }); + + executor = new ApacheHttpClient4Executor(httpClient); + providerFactory = ResteasyProviderFactory.getInstance(); + providerFactory.addClientErrorInterceptor(new PKIErrorInterceptor()); + errorHandler = new ClientErrorHandler(providerFactory.getClientErrorInterceptors()); + } + + private class ServerCertApprovalCB implements SSLCertificateApprovalCallback { + + // Callback to approve or deny returned SSL server cert. + // Right now, simply approve the cert. + public boolean approve(org.mozilla.jss.crypto.X509Certificate serverCert, + SSLCertificateApprovalCallback.ValidityStatus status) { + + if (verbose) System.out.println("Server certificate: "+serverCert.getSubjectDN()); + + SSLCertificateApprovalCallback.ValidityItem item; + + Enumeration errors = status.getReasons(); + while (errors.hasMoreElements()) { + item = (SSLCertificateApprovalCallback.ValidityItem) errors.nextElement(); + int reason = item.getReason(); + + if (reason == SSLCertificateApprovalCallback.ValidityStatus.UNTRUSTED_ISSUER || + reason == SSLCertificateApprovalCallback.ValidityStatus.BAD_CERT_DOMAIN) { + + // Allow these two since we haven't installed the CA cert for trust. + + 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, + ConnectTimeoutException { + + // Initialize JSS before using SSLSocket, + // otherwise it will throw UnsatisfiedLinkError. + if (config.getCertDatabase() == null) { + try { + // No database specified, use $HOME/.pki/nssdb. + File homeDir = new File(System.getProperty("user.home")); + File pkiDir = new File(homeDir, ".pki"); + File nssdbDir = new File(pkiDir, "nssdb"); + nssdbDir.mkdirs(); + + CryptoManager.initialize(nssdbDir.getAbsolutePath()); + + } catch (AlreadyInitializedException e) { + // ignore + + } catch (Exception e) { + throw new Error(e); + } + + } else { + // Database specified, already initialized by the main program. + } + + 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(); + } + + SSLSocket socket; + if (sock == null) { + socket = new SSLSocket(InetAddress.getByName(hostName), + port, + localAddr, + localPort, + new ServerCertApprovalCB(), + null); + + } else { + socket = new SSLSocket(sock, hostName, new ServerCertApprovalCB(), null); + } + + String certNickname = config.getCertNickname(); + if (certNickname != null) { + if (verbose) System.out.println("Client certificate: "+certNickname); + socket.setClientCertNickname(certNickname); + } + + 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 socket, String target, int port, boolean autoClose) + throws IOException, UnknownHostException { + // This method implementation is required to get SSL working. + return null; + } + + } + + public T createProxy(Class clazz) throws URISyntaxException { + URI uri = new URI(config.getServerURI()+"/rest"); + return ProxyFactory.create(clazz, uri, executor, providerFactory); + } + + @SuppressWarnings("unchecked") + public T getEntity(ClientResponse response) { + BaseClientResponse clientResponse = (BaseClientResponse)response; + try { + clientResponse.checkFailureStatus(); + + } catch (ClientResponseFailure e) { + errorHandler.clientErrorHandling((BaseClientResponse) e.getResponse(), e); + + } catch (RuntimeException e) { + errorHandler.clientErrorHandling(clientResponse, e); + } + + return response.getEntity(); + } + + public boolean isVerbose() { + return verbose; + } + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } +} diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/PKIErrorInterceptor.java b/base/common/src/com/netscape/cms/servlet/csadmin/PKIErrorInterceptor.java new file mode 100644 index 000000000..166c02eb9 --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/csadmin/PKIErrorInterceptor.java @@ -0,0 +1,62 @@ +// --- 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.cms.servlet.csadmin; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; + +import org.jboss.resteasy.client.ClientResponse; +import org.jboss.resteasy.client.core.ClientErrorInterceptor; + +import com.netscape.cms.servlet.base.CMSException; + +public class PKIErrorInterceptor implements ClientErrorInterceptor { + + public void handle(ClientResponse response) { + + // handle HTTP code 4xx and 5xx + int code = response.getResponseStatus().getStatusCode(); + if (code < 400) + return; + + MultivaluedMap headers = response.getHeaders(); + String contentType = headers.getFirst("Content-Type"); + + // handle XML content only + if (contentType == null || !contentType.startsWith(MediaType.APPLICATION_XML)) + return; + + CMSException exception; + + try { + // Requires RESTEasy 2.3.2 + // https://issues.jboss.org/browse/RESTEASY-652 + CMSException.Data data = response.getEntity(CMSException.Data.class); + + Class clazz = Class.forName(data.className); + exception = (CMSException) clazz.getConstructor(CMSException.Data.class).newInstance(data); + + } catch (Exception e) { + e.printStackTrace(); + return; + } + + throw exception; + } + +} diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigClient.java b/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigClient.java new file mode 100644 index 000000000..6167b0521 --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigClient.java @@ -0,0 +1,50 @@ +// --- 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) 2012 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.csadmin; + +import java.net.URISyntaxException; + +import com.netscape.cms.client.cli.ClientConfig; +import com.netscape.cms.servlet.csadmin.model.ConfigurationData; +import com.netscape.cms.servlet.csadmin.model.ConfigurationResponseData; +import com.netscape.cms.servlet.csadmin.model.InstallToken; +import com.netscape.cms.servlet.csadmin.model.InstallTokenRequest; + + +/** + * @author alee + * + */ +public class SystemConfigClient extends PKIClient { + + private SystemConfigurationResource configClient; + + public SystemConfigClient(ClientConfig config) throws URISyntaxException { + super(config); + + configClient = createProxy(SystemConfigurationResource.class); + } + + public ConfigurationResponseData configure(ConfigurationData data) { + return configClient.configure(data); + } + + public InstallToken getInstallToken(InstallTokenRequest data) { + return configClient.getInstallToken(data); + } +} diff --git a/base/deploy/src/scriptlets/pkijython.py b/base/deploy/src/scriptlets/pkijython.py index 5adc7e022..95fc4ae1d 100644 --- a/base/deploy/src/scriptlets/pkijython.py +++ b/base/deploy/src/scriptlets/pkijython.py @@ -140,7 +140,7 @@ from org.mozilla.jss.util import Password # PKI Java Imports -from com.netscape.cms.servlet.csadmin import ConfigurationRESTClient +from com.netscape.cms.servlet.csadmin import SystemConfigClient from com.netscape.cms.servlet.csadmin.model import CertData from com.netscape.cms.servlet.csadmin.model import ConfigurationData from com.netscape.cms.servlet.csadmin.model import ConfigurationResponseData @@ -262,7 +262,7 @@ class rest_client: log.PKI_JYTHON_INITIALIZING_REST_CLIENT, client_config.serverURI) if not pki_dry_run_flag: - self.client = ConfigurationRESTClient(client_config) + self.client = SystemConfigClient(client_config) return self.client except URISyntaxException, e: e.printStackTrace() diff --git a/base/kra/functional/src/com/netscape/cms/servlet/test/DRMClient.java b/base/kra/functional/src/com/netscape/cms/servlet/test/DRMClient.java new file mode 100644 index 000000000..0f12eada2 --- /dev/null +++ b/base/kra/functional/src/com/netscape/cms/servlet/test/DRMClient.java @@ -0,0 +1,130 @@ +package com.netscape.cms.servlet.test; + +import java.net.URISyntaxException; +import java.util.Collection; +import java.util.Iterator; + +import org.jboss.resteasy.client.ClientResponse; + +import com.netscape.certsrv.dbs.keydb.KeyId; +import com.netscape.certsrv.request.RequestId; +import com.netscape.cms.client.cli.ClientConfig; +import com.netscape.cms.servlet.admin.SystemCertificateResource; +import com.netscape.cms.servlet.cert.model.CertificateData; +import com.netscape.cms.servlet.csadmin.PKIClient; +import com.netscape.cms.servlet.key.KeyResource; +import com.netscape.cms.servlet.key.model.KeyData; +import com.netscape.cms.servlet.key.model.KeyDataInfo; +import com.netscape.cms.servlet.key.model.KeyDataInfos; +import com.netscape.cms.servlet.request.KeyRequestResource; +import com.netscape.cms.servlet.request.model.ArchivalRequestData; +import com.netscape.cms.servlet.request.model.KeyRequestInfo; +import com.netscape.cms.servlet.request.model.KeyRequestInfos; +import com.netscape.cms.servlet.request.model.RecoveryRequestData; +import com.netscape.cmsutil.util.Utils; + +public class DRMClient extends PKIClient { + + private KeyResource keyClient; + private KeyRequestResource keyRequestClient; + private SystemCertificateResource systemCertClient; + + public DRMClient(ClientConfig config) throws URISyntaxException { + super(config); + + systemCertClient = createProxy(SystemCertificateResource.class); + keyRequestClient = createProxy(KeyRequestResource.class); + keyClient = createProxy(KeyResource.class); + } + + public String getTransportCert() { + @SuppressWarnings("unchecked") + ClientResponse response = (ClientResponse) systemCertClient + .getTransportCert(); + CertificateData certData = getEntity(response); + String transportCert = certData.getEncoded(); + return transportCert; + } + + public Collection listRequests(String requestState, String requestType) { + KeyRequestInfos infos = keyRequestClient.listRequests( + requestState, requestType, null, new RequestId(0), 100, 100, 10 + ); + Collection list = infos.getRequests(); + return list; + } + + public KeyRequestInfo archiveSecurityData(byte[] encoded, String clientId, String dataType) { + // create archival request + ArchivalRequestData data = new ArchivalRequestData(); + String req1 = Utils.base64encode(encoded); + data.setWrappedPrivateData(req1); + data.setClientId(clientId); + data.setDataType(dataType); + + KeyRequestInfo info = keyRequestClient.archiveKey(data); + return info; + } + + public KeyDataInfo getKeyData(String clientId, String status) { + KeyDataInfos infos = keyClient.listKeys(clientId, status, 100, 10); + Collection list = infos.getKeyInfos(); + Iterator iter = list.iterator(); + + while (iter.hasNext()) { + KeyDataInfo info = iter.next(); + if (info != null) { + // return the first one + return info; + } + } + return null; + } + + public KeyRequestInfo requestRecovery(KeyId keyId, byte[] rpwd, byte[] rkey, byte[] nonceData) { + // create recovery request + RecoveryRequestData data = new RecoveryRequestData(); + data.setKeyId(keyId); + if (rpwd != null) { + data.setSessionWrappedPassphrase(Utils.base64encode(rpwd)); + } + if (rkey != null) { + data.setTransWrappedSessionKey(Utils.base64encode(rkey)); + } + + if (nonceData != null) { + data.setNonceData(Utils.base64encode(nonceData)); + } + + KeyRequestInfo info = keyRequestClient.recoverKey(data); + return info; + } + + public void approveRecovery(RequestId recoveryId) { + keyRequestClient.approveRequest(recoveryId); + } + + public KeyData retrieveKey(KeyId keyId, RequestId requestId, byte[] rpwd, byte[] rkey, byte[] nonceData) { + // create recovery request + RecoveryRequestData data = new RecoveryRequestData(); + data.setKeyId(keyId); + data.setRequestId(requestId); + if (rkey != null) { + data.setTransWrappedSessionKey(Utils.base64encode(rkey)); + } + if (rpwd != null) { + data.setSessionWrappedPassphrase(Utils.base64encode(rpwd)); + } + + if (nonceData != null) { + data.setNonceData(Utils.base64encode(nonceData)); + } + + KeyData key = keyClient.retrieveKey(data); + return key; + } + + public KeyRequestInfo getRequest(RequestId id) { + return keyRequestClient.getRequestInfo(id); + } +} diff --git a/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java b/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java deleted file mode 100644 index 372b8aea6..000000000 --- a/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.netscape.cms.servlet.test; - -import java.net.URISyntaxException; -import java.util.Collection; -import java.util.Iterator; - -import org.jboss.resteasy.client.ClientResponse; - -import com.netscape.certsrv.dbs.keydb.KeyId; -import com.netscape.certsrv.request.RequestId; -import com.netscape.cms.client.cli.ClientConfig; -import com.netscape.cms.servlet.admin.SystemCertificateResource; -import com.netscape.cms.servlet.cert.model.CertificateData; -import com.netscape.cms.servlet.csadmin.CMSRestClient; -import com.netscape.cms.servlet.key.KeyResource; -import com.netscape.cms.servlet.key.model.KeyData; -import com.netscape.cms.servlet.key.model.KeyDataInfo; -import com.netscape.cms.servlet.key.model.KeyDataInfos; -import com.netscape.cms.servlet.request.KeyRequestResource; -import com.netscape.cms.servlet.request.model.ArchivalRequestData; -import com.netscape.cms.servlet.request.model.KeyRequestInfo; -import com.netscape.cms.servlet.request.model.KeyRequestInfos; -import com.netscape.cms.servlet.request.model.RecoveryRequestData; -import com.netscape.cmsutil.util.Utils; - -public class DRMRestClient extends CMSRestClient { - - private KeyResource keyClient; - private KeyRequestResource keyRequestClient; - private SystemCertificateResource systemCertClient; - - public DRMRestClient(ClientConfig config) throws URISyntaxException { - super(config); - - systemCertClient = createProxy(SystemCertificateResource.class); - keyRequestClient = createProxy(KeyRequestResource.class); - keyClient = createProxy(KeyResource.class); - } - - public String getTransportCert() { - @SuppressWarnings("unchecked") - ClientResponse response = (ClientResponse) systemCertClient - .getTransportCert(); - CertificateData certData = getEntity(response); - String transportCert = certData.getEncoded(); - return transportCert; - } - - public Collection listRequests(String requestState, String requestType) { - KeyRequestInfos infos = keyRequestClient.listRequests( - requestState, requestType, null, new RequestId(0), 100, 100, 10 - ); - Collection list = infos.getRequests(); - return list; - } - - public KeyRequestInfo archiveSecurityData(byte[] encoded, String clientId, String dataType) { - // create archival request - ArchivalRequestData data = new ArchivalRequestData(); - String req1 = Utils.base64encode(encoded); - data.setWrappedPrivateData(req1); - data.setClientId(clientId); - data.setDataType(dataType); - - KeyRequestInfo info = keyRequestClient.archiveKey(data); - return info; - } - - public KeyDataInfo getKeyData(String clientId, String status) { - KeyDataInfos infos = keyClient.listKeys(clientId, status, 100, 10); - Collection list = infos.getKeyInfos(); - Iterator iter = list.iterator(); - - while (iter.hasNext()) { - KeyDataInfo info = iter.next(); - if (info != null) { - // return the first one - return info; - } - } - return null; - } - - public KeyRequestInfo requestRecovery(KeyId keyId, byte[] rpwd, byte[] rkey, byte[] nonceData) { - // create recovery request - RecoveryRequestData data = new RecoveryRequestData(); - data.setKeyId(keyId); - if (rpwd != null) { - data.setSessionWrappedPassphrase(Utils.base64encode(rpwd)); - } - if (rkey != null) { - data.setTransWrappedSessionKey(Utils.base64encode(rkey)); - } - - if (nonceData != null) { - data.setNonceData(Utils.base64encode(nonceData)); - } - - KeyRequestInfo info = keyRequestClient.recoverKey(data); - return info; - } - - public void approveRecovery(RequestId recoveryId) { - keyRequestClient.approveRequest(recoveryId); - } - - public KeyData retrieveKey(KeyId keyId, RequestId requestId, byte[] rpwd, byte[] rkey, byte[] nonceData) { - // create recovery request - RecoveryRequestData data = new RecoveryRequestData(); - data.setKeyId(keyId); - data.setRequestId(requestId); - if (rkey != null) { - data.setTransWrappedSessionKey(Utils.base64encode(rkey)); - } - if (rpwd != null) { - data.setSessionWrappedPassphrase(Utils.base64encode(rpwd)); - } - - if (nonceData != null) { - data.setNonceData(Utils.base64encode(nonceData)); - } - - KeyData key = keyClient.retrieveKey(data); - return key; - } - - public KeyRequestInfo getRequest(RequestId id) { - return keyRequestClient.getRequestInfo(id); - } -} diff --git a/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java b/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java index 62cdfe992..9954ba94f 100644 --- a/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java +++ b/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java @@ -194,13 +194,13 @@ public class DRMTest { // Set base URI and get client - DRMRestClient client; + DRMClient client; try { ClientConfig config = new ClientConfig(); config.setServerURI(protocol + "://" + host + ":" + port + "/kra"); config.setCertNickname(clientCertNickname); - client = new DRMRestClient(config); + client = new DRMClient(config); } catch (Exception e) { e.printStackTrace(); -- cgit