public void commit() { if (!committed) { if (responseContentType != null) { apiServletContext.getResponse().setHeader("Content-Type", responseContentType); } apiServletContext.getResponse().setStatus(responseCode); committed = true; } }
public InputStream getInputStream() throws IOException { if (apiServletContext == null) { return null; } return apiServletContext.getRequest().getInputStream(); }
@Override public boolean challenge(ApiRequest request) { if ("upgrade".equalsIgnoreCase(request.getServletContext().getRequest().getHeader(CONNECTION))) { return false; } if ("true".equalsIgnoreCase(request.getServletContext().getRequest().getHeader(NO_CHALLENGE_HEADER))) { return false; } HttpServletResponse response = request.getServletContext().getResponse(); String realm = REALM.get(); if (realm == null) { response.setHeader(CHALLENGE_HEADER, BASIC); } else { response.setHeader(CHALLENGE_HEADER, String.format(BASIC_REALM, realm)); } return true; }
protected Object deleteToken(Object obj, ApiRequest request) { Token token = new Token(); String jwt = ""; token = listToken(); jwt = token.getJwt(); if(StringUtils.isBlank(jwt)) { throw new ClientVisibleException(ResponseCodes.INTERNAL_SERVER_ERROR, "JWTNotProvided", "Request does not contain JWT cookie", null); } request.setResponseCode(ResponseCodes.NO_CONTENT); HttpServletResponse response = request.getServletContext().getResponse(); String cookieString="token=;Path=/;Expires=Thu, 01 Jan 1970 00:00:00 GMT;"; response.addHeader("Set-Cookie", cookieString); request.getServletContext().setResponse(response); if(authTokenDao.deleteToken(jwt)) { return obj; } return null; } }
@Override public boolean parse(ApiRequest apiRequest) throws IOException { HttpServletRequest request = apiRequest.getServletContext().getRequest(); String path = request.getServletPath(); String[] parts = path.split("/"); if (parts.length > 4 && "projects".equalsIgnoreCase(parts[2]) && !"projectMembers".equalsIgnoreCase(parts[4])) { String projectId = parts[3]; apiRequest.setSubContext(String.format("/%s/%s", parts[2], projectId)); String[] newPath = ArrayUtils.addAll(new String[]{"", parts[1]}, ArrayUtils.subarray(parts, 4, Integer.MAX_VALUE)); String servletPath = StringUtils.join(newPath, "/"); request = new ProjectHttpServletRequest(request, projectId, servletPath); apiRequest.getServletContext().setRequest(request); } return super.parse(apiRequest); }
@Override public void setContentEncoding(String contentEncoding) { request.getServletContext().getResponse().setHeader("Content-Encoding", contentEncoding); }
public ApiRequest(ApiServletContext requestServletContext, SchemaFactory schemaFactory) { super(); this.apiServletContext = requestServletContext; this.locale = requestServletContext == null ? null : requestServletContext.getRequest().getLocale(); this.schemaFactory = schemaFactory; }
public static void prepareRequest(String filename, ApiRequest request) throws IOException { HttpServletResponse response = request.getServletContext().getResponse(); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + filename); response.setHeader("Cache-Control", "private"); response.setHeader("Pragma", "private"); response.setHeader("Expires", "Wed 24 Feb 1982 18:42:00 GMT"); }
public static String[] getUsernamePassword(ApiRequest request) { return getUsernamePassword(request.getServletContext().getRequest().getHeader(AUTH_HEADER)); }
public OutputStream getOutputStream() throws IOException { if (committed) { throw new IllegalStateException("Response is commited"); } commit(); committed = true; return apiServletContext.getResponse().getOutputStream(); }
@Override public Account getAccount(ApiRequest request) { if (SecurityConstants.SECURITY.get()) { return null; } String authHeader = StringUtils.trim(request.getServletContext().getRequest().getHeader(ENFORCE_AUTH_HEADER)); if (StringUtils.equals("true", authHeader)) { return null; } return authDao.getAdminAccount(); }
@Override public void handle(ApiRequest request) throws IOException { if (request.isCommitted()) { return; } request.getServletContext().getResponse().addHeader(CLIENT_IP, request.getClientIp()); }
Cookie[] cookies = request.getServletContext().getRequest().getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { jwt = request.getServletContext().getRequest().getHeader(ProjectConstants.AUTH_HEADER); jwt = request.getServletContext().getRequest().getParameter(TOKEN);
@Override public boolean handle(ApiRequest request) throws IOException { if (!BOOTSTRAP.equals(request.getId())) { return false; } byte[] content = getBootstrapSource(request); IOUtils.copy(new ByteArrayInputStream(content), request.getServletContext().getResponse().getOutputStream()); return true; }
@Override public boolean parse(ApiRequest apiRequest) throws IOException { HttpServletRequest request = apiRequest.getServletContext().getRequest(); apiRequest.setLocale(getLocale(apiRequest, request)); apiRequest.setMethod(parseMethod(apiRequest, request)); apiRequest.setAction(parseAction(apiRequest, request)); apiRequest.setRequestParams(parseParams(apiRequest, request)); apiRequest.setRequestUrl(parseRequestUrl(apiRequest, request)); apiRequest.setClientIp(parseClientIp(apiRequest, request)); apiRequest.setResponseUrlBase(parseResponseUrlBase(apiRequest, request)); apiRequest.setVersion(parseVersion(apiRequest, request)); apiRequest.setResponseFormat(parseResponseType(apiRequest, request)); apiRequest.setQueryString(parseQueryString(apiRequest, request)); parsePath(apiRequest, request); return true; }
@Override public boolean handle(ApiRequest request) throws IOException { String id = request.getId(); if (!FILENAME.equals(id)) { return false; } Certificate cert = rsaKeyProvider.getCACertificate(); byte[] content = rsaKeyProvider.toBytes(cert); HttpServletResponse response = request.getServletContext().getResponse(); response.setContentLength(content.length); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + FILENAME); response.setHeader("Cache-Control", "private"); response.setHeader("Pragma", "private"); response.setHeader("Expires", "Wed 24 Feb 1982 18:42:00 GMT"); response.getOutputStream().write(content); return true; }
@Override public Object link(String name, Object obj, ApiRequest request) throws IOException { if (obj instanceof Credential) { String secretValue = ((Credential) obj).getSecretValue(); if (secretValue == null) { return null; } byte[] content = secretValue.getBytes("UTF-8"); HttpServletResponse response = request.getServletContext().getResponse(); response.setContentLength(content.length); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + getFilename((Credential) obj, request)); response.setHeader("Cache-Control", "private"); response.setHeader("Pragma", "private"); response.setHeader("Expires", "Wed 24 Feb 1982 18:42:00 GMT"); response.getOutputStream().write(content); return new Object(); } return null; }
@Override public Object handleResponse(HttpResponse response) throws ClientProtocolException, IOException { int statusCode = response.getStatusLine().getStatusCode(); request.setResponseObject(new Object()); request.setResponseCode(statusCode); request.commit(); OutputStream writer = request.getServletContext().getResponse().getOutputStream(); Header[] headers = response.getAllHeaders(); for (int i = 0; i < headers.length; i++) { request.getServletContext().getResponse().setHeader(headers[i].getName(), headers[i].getValue()); } HttpEntity entity = response.getEntity(); if (entity != null) { entity.writeTo(writer); } return null; } });
@Override public Object link(String name, Object obj, ApiRequest request) throws IOException { Stack stack = (Stack) obj; List<? extends Service> services = objectManager.find(Service.class, SERVICE.STACK_ID, stack.getId(), SERVICE.REMOVED, null); String dockerCompose = discoverySvc.buildDockerComposeConfig(services, stack); String rancherCompose = discoverySvc.buildRancherComposeConfig(services); if (StringUtils.isNotEmpty(dockerCompose) || StringUtils.isNotEmpty(rancherCompose)) { ByteArrayOutputStream baos = zipFiles(dockerCompose, rancherCompose); HttpServletResponse response = request.getServletContext().getResponse(); response.setContentLength(baos.toByteArray().length); response.setContentType("application/zip"); response.setHeader("Content-Encoding", "zip"); response.setHeader("Content-Disposition", "attachment; filename=compose.zip"); response.setHeader("Cache-Control", "private"); response.setHeader("Pragma", "private"); response.setHeader("Expires", "Wed 24 Feb 1982 18:42:00 GMT"); response.getOutputStream().write(baos.toByteArray()); return new Object(); } return null; }
protected void saveInContext(ApiRequest request, Policy policy, SchemaFactory schemaFactory, Account authorizedAccount) { if (schemaFactory != null) { request.setSchemaFactory(schemaFactory); } String accountId = (String) ApiContext.getContext().getIdFormatter().formatId(objectManager.getType(Account.class), policy.getAccountId()); request.getServletContext().getResponse().addHeader(ACCOUNT_ID_HEADER, accountId); String userId = (String) ApiContext.getContext().getIdFormatter().formatId(objectManager.getType(Account.class), policy.getAuthenticatedAsAccountId()); request.getServletContext().getResponse().addHeader(USER_ID_HEADER, userId); request.getServletContext().getResponse().addHeader(ACCOUNT_KIND_HEADER, authorizedAccount.getKind()); request.getServletContext().getResponse().addHeader(ACCOUNT_NAME_HEADER, authorizedAccount.getName()); ApiContext.getContext().setPolicy(policy); }