diff options
Diffstat (limited to 'base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java')
-rw-r--r-- | base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java | 420 |
1 files changed, 0 insertions, 420 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java b/base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java deleted file mode 100644 index df50a007e..000000000 --- a/base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java +++ /dev/null @@ -1,420 +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) 2011 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- - -package com.netscape.cms.servlet.request; - -import java.net.URI; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; - -import org.jboss.resteasy.plugins.providers.atom.Link; - -import com.netscape.certsrv.apps.CMS; -import com.netscape.certsrv.authentication.EAuthException; -import com.netscape.certsrv.authorization.EAuthzException; -import com.netscape.certsrv.base.BadRequestDataException; -import com.netscape.certsrv.base.BadRequestException; -import com.netscape.certsrv.base.EBaseException; -import com.netscape.certsrv.base.PKIException; -import com.netscape.certsrv.base.UnauthorizedException; -import com.netscape.certsrv.cert.CertEnrollmentRequest; -import com.netscape.certsrv.cert.CertRequestInfo; -import com.netscape.certsrv.cert.CertRequestInfos; -import com.netscape.certsrv.cert.CertRequestResource; -import com.netscape.certsrv.cert.CertReviewResponse; -import com.netscape.certsrv.profile.EDeferException; -import com.netscape.certsrv.profile.EProfileException; -import com.netscape.certsrv.profile.ERejectException; -import com.netscape.certsrv.profile.IProfile; -import com.netscape.certsrv.profile.IProfileSubsystem; -import com.netscape.certsrv.profile.ProfileAttribute; -import com.netscape.certsrv.profile.ProfileDataInfo; -import com.netscape.certsrv.profile.ProfileDataInfos; -import com.netscape.certsrv.profile.ProfileInput; -import com.netscape.certsrv.property.EPropertyException; -import com.netscape.certsrv.request.RequestId; -import com.netscape.certsrv.request.RequestNotFoundException; -import com.netscape.cms.servlet.base.PKIService; -import com.netscape.cms.servlet.cert.CertRequestDAO; -import com.netscape.cms.servlet.profile.ProfileService; -import com.netscape.cmsutil.ldap.LDAPUtil; - -/** - * @author alee - * - */ -public class CertRequestService extends PKIService implements CertRequestResource { - - @Context - private UriInfo uriInfo; - - @Context - private HttpHeaders headers; - - @Context - private Request request; - - @Context - private HttpServletRequest servletRequest; - - public static final int DEFAULT_START = 0; - public static final int DEFAULT_PAGESIZE = 20; - public static final int DEFAULT_MAXRESULTS = 100; - public static final int DEFAULT_MAXTIME = 10; - - /** - * Used to retrieve key request info for a specific request - */ - @Override - public Response getRequestInfo(RequestId id) { - if (id == null) { - CMS.debug("getRequestInfo: id is null"); - throw new BadRequestException("Unable to get request: invalid id"); - } - CertRequestInfo info; - - CertRequestDAO dao = new CertRequestDAO(); - try { - info = dao.getRequest(id, uriInfo); - } catch (EBaseException e) { - // log error - e.printStackTrace(); - throw new PKIException("Error getting Cert request info!"); - } - - if (info == null) { - throw new RequestNotFoundException(id); - } - - return createOKResponse(info); - } - - // Enrollment - used to test integration with a browser - @Override - public Response enrollCert(MultivaluedMap<String, String> form) { - CertEnrollmentRequest data = new CertEnrollmentRequest(form); - return enrollCert(data); - } - - @Override - public Response enrollCert(CertEnrollmentRequest data) { - - if (data == null) { - CMS.debug("enrollCert: data is null"); - throw new BadRequestException("Unable to create enrollment reequest: Invalid input data"); - } - - CertRequestDAO dao = new CertRequestDAO(); - - CertRequestInfos infos; - try { - infos = dao.submitRequest(data, servletRequest, uriInfo, getLocale(headers)); - } catch (EAuthException e) { - CMS.debug("enrollCert: authentication failed: " + e); - throw new UnauthorizedException(e.toString()); - } catch (EAuthzException e) { - CMS.debug("enrollCert: authorization failed: " + e); - throw new UnauthorizedException(e.toString()); - } catch (BadRequestDataException e) { - CMS.debug("enrollCert: bad request data: " + e); - throw new BadRequestException(e.toString()); - } catch (EBaseException e) { - throw new PKIException(e.toString()); - } - - // this will return an error code of 200, instead of 201 - // because it is possible to create more than one request - // as a result of this enrollment - - return createOKResponse(infos); - } - - @Override - public Response approveRequest(RequestId id, CertReviewResponse data) { - changeRequestState(id, data, "approve"); - return createNoContentResponse(); - } - - @Override - public Response rejectRequest(RequestId id, CertReviewResponse data) { - changeRequestState(id, data, "reject"); - return createNoContentResponse(); - } - - @Override - public Response cancelRequest(RequestId id, CertReviewResponse data) { - changeRequestState(id, data, "cancel"); - return createNoContentResponse(); - } - - @Override - public Response updateRequest(RequestId id, CertReviewResponse data) { - changeRequestState(id, data, "update"); - return createNoContentResponse(); - } - - @Override - public Response validateRequest(RequestId id, CertReviewResponse data) { - changeRequestState(id, data, "validate"); - return createNoContentResponse(); - } - - @Override - public Response unassignRequest(RequestId id, CertReviewResponse data) { - changeRequestState(id, data, "unassign"); - return createNoContentResponse(); - } - - @Override - public Response assignRequest(RequestId id, CertReviewResponse data) { - changeRequestState(id, data, "assign"); - return createNoContentResponse(); - } - - public void changeRequestState(RequestId id, CertReviewResponse data, String op) { - if (id == null) { - throw new BadRequestException("Bad data input in CertRequestResourceService. op:" + op); - } - CertRequestDAO dao = new CertRequestDAO(); - try { - dao.changeRequestState(id, servletRequest, data, getLocale(headers), op); - } catch (ERejectException e) { - CMS.debug("changeRequestState: execution rejected " + e); - throw new BadRequestException(CMS.getUserMessage(getLocale(headers), "CMS_PROFILE_REJECTED", e.toString())); - } catch (EDeferException e) { - CMS.debug("changeRequestState: execution defered " + e); - // TODO do we throw an exception here? - throw new BadRequestException(CMS.getUserMessage(getLocale(headers), "CMS_PROFILE_DEFERRED", e.toString())); - } catch (BadRequestDataException e) { - CMS.debug("changeRequestState: bad request data: " + e); - throw new BadRequestException(e.toString()); - } catch (EPropertyException e) { - CMS.debug("changeRequestState: execution error " + e); - throw new PKIException(CMS.getUserMessage(getLocale(headers), - "CMS_PROFILE_PROPERTY_ERROR", e.toString())); - } catch (EProfileException e) { - CMS.debug("ProfileProcessServlet: execution error " + e); - throw new PKIException(CMS.getUserMessage(getLocale(headers), "CMS_INTERNAL_ERROR")); - } catch (EBaseException e) { - e.printStackTrace(); - throw new PKIException("Problem approving request in CertRequestResource.assignRequest! " + e); - } catch (RequestNotFoundException e) { - CMS.debug(e); - throw e; - } - } - - @Override - public Response reviewRequest(@PathParam("id") RequestId id) { - if (id == null) { - CMS.debug("reviewRequest: id is null"); - throw new BadRequestException("Unable to review request: invalid id"); - } - CertReviewResponse info; - - CertRequestDAO dao = new CertRequestDAO(); - try { - info = dao.reviewRequest(servletRequest, id, uriInfo, getLocale(headers)); - } catch (EBaseException e) { - // log error - e.printStackTrace(); - throw new PKIException("Error getting Cert request info!"); - } - - if (info == null) { - // request does not exist - throw new RequestNotFoundException(id); - } - - return createOKResponse(info); - } - - /** - * Used to generate list of cert requests based on the search parameters - */ - @Override - public Response listRequests(String requestState, String requestType, - RequestId start, Integer pageSize, Integer maxResults, Integer maxTime) { - // get ldap filter - String filter = createSearchFilter(requestState, requestType); - CMS.debug("listRequests: filter is " + filter); - - start = start == null ? new RequestId(CertRequestService.DEFAULT_START) : start; - pageSize = pageSize == null ? DEFAULT_PAGESIZE : pageSize; - maxResults = maxResults == null ? DEFAULT_MAXRESULTS : maxResults; - maxTime = maxTime == null ? DEFAULT_MAXTIME : maxTime; - - CertRequestDAO reqDAO = new CertRequestDAO(); - CertRequestInfos requests; - try { - requests = reqDAO.listRequests(filter, start, pageSize, maxResults, maxTime, uriInfo); - } catch (EBaseException e) { - CMS.debug("listRequests: error in obtaining request results" + e); - e.printStackTrace(); - throw new PKIException("Error listing cert requests!"); - } - return createOKResponse(requests); - } - - private String createSearchFilter(String requestState, String requestType) { - String filter = ""; - int matches = 0; - - if ((requestState == null) && (requestType == null)) { - filter = "(requeststate=*)"; - return filter; - } - - if (requestState != null) { - filter += "(requeststate=" + LDAPUtil.escapeFilter(requestState) + ")"; - matches++; - } - - if (requestType != null) { - filter += "(requesttype=" + LDAPUtil.escapeFilter(requestType) + ")"; - matches++; - } - - if (matches > 1) { - filter = "(&" + filter + ")"; - } - - return filter; - } - - @Override - public Response getEnrollmentTemplate(String profileId) { - if (profileId == null) { - CMS.debug("getEnrollmenTemplate: invalid request. profileId is null"); - throw new BadRequestException("Invalid ProfileId"); - } - - IProfileSubsystem ps = (IProfileSubsystem) CMS.getSubsystem(IProfileSubsystem.ID); - if (ps == null) { - CMS.debug("getEnrollmentTemplate: ps is null"); - throw new PKIException("Error modifying profile state. Profile Service not available"); - } - - IProfile profile = null; - try { - profile = ps.getProfile(profileId); - if (profile == null) { - throw new BadRequestException("Cannot provide enrollment template for profile `" + profileId + - "`. Profile not found"); - } - } catch (EBaseException e) { - CMS.debug("getEnrollmentTemplate(): error obtaining profile `" + profileId + "`: " + e); - e.printStackTrace(); - throw new PKIException("Error generating enrollment template. Cannot obtain profile."); - } - - if (! profile.isVisible()) { - CMS.debug("getEnrollmentTemplate(): attempt to get enrollment template for non-visible profile"); - throw new BadRequestException("Cannot provide enrollment template for profile `" + profileId + - "`. Profile not marked as visible"); - } - - CertEnrollmentRequest request = new CertEnrollmentRequest(); - request.setProfileId(profileId); - request.setRenewal(Boolean.parseBoolean(profile.isRenewal())); - request.setRemoteAddr(""); - request.setRemoteHost(""); - request.setSerialNum(""); - - // populate inputs - Enumeration<String> inputIds = profile.getProfileInputIds(); - while (inputIds.hasMoreElements()) { - String id = inputIds.nextElement(); - try { - ProfileInput input = ProfileService.createProfileInput(profile, id, getLocale(headers)); - for (ProfileAttribute attr : input.getAttributes()) { - attr.setValue(""); - } - request.addInput(input); - } catch (EBaseException e) { - CMS.debug("getEnrollmentTemplate(): Failed to add input " + id + " to request template: " + e); - e.printStackTrace(); - throw new PKIException("Failed to add input" + id + "to request template"); - } - } - - return createOKResponse(request); - } - - @Override - public Response listEnrollmentTemplates(Integer start, Integer size) { - - start = start == null ? DEFAULT_START : start; - size = size == null ? DEFAULT_PAGESIZE : size; - - IProfileSubsystem ps = (IProfileSubsystem) CMS.getSubsystem(IProfileSubsystem.ID); - - if (ps == null) { - throw new PKIException("Profile subsystem unavailable."); - } - - ProfileDataInfos infos = new ProfileDataInfos(); - boolean visibleOnly = true; - - Enumeration<String> e = ps.getProfileIds(); - if (e == null) return createOKResponse(infos); - - // store non-null results in a list - List<ProfileDataInfo> results = new ArrayList<ProfileDataInfo>(); - while (e.hasMoreElements()) { - try { - String id = e.nextElement(); - ProfileDataInfo info = ProfileService.createProfileDataInfo(id, visibleOnly, uriInfo, getLocale(headers)); - if (info == null) continue; - results.add(info); - } catch (EBaseException ex) { - continue; - } - } - - int total = results.size(); - infos.setTotal(total); - - // return entries in the requested page - for (int i = start; i < start + size && i < total; i++) { - infos.addEntry(results.get(i)); - } - - if (start > 0) { - URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build(); - infos.addLink(new Link("prev", uri)); - } - - if (start + size < total) { - URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build(); - infos.addLink(new Link("next", uri)); - } - - return createOKResponse(infos); - } -} |