X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=ONAP-PAP-REST%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fpap%2Fxacml%2Frest%2FUpdateOthersPAPS.java;h=1b25c3b9f6e82e44eeff2e9c601db376bf480e54;hp=c1891b352e54bdbebd8ddc61dbcd35992e434425;hb=2f3ca9fc5edc5a52659b3486605e0db508143318;hpb=7bb6ef9ad8a483bdac3ff1544cd0910ecebe5a98 diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java index c1891b352..1b25c3b9f 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,8 +17,12 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pap.xacml.rest; +import com.att.research.xacml.util.XACMLProperties; +import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; @@ -40,12 +44,12 @@ import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.pap.xacml.rest.adapters.UpdateObjectData; import org.onap.policy.pap.xacml.rest.components.Policy; import org.onap.policy.pap.xacml.rest.util.JsonMessage; -import org.onap.policy.rest.XACMLRestProperties; +import org.onap.policy.rest.XacmlRestProperties; import org.onap.policy.rest.dao.CommonClassDao; import org.onap.policy.rest.jpa.ActionBodyEntity; import org.onap.policy.rest.jpa.ConfigurationDataEntity; -import org.onap.policy.rest.jpa.PolicyDBDaoEntity; -import org.onap.policy.utils.CryptoUtils; +import org.onap.policy.rest.jpa.PolicyDbDaoEntity; +import org.onap.policy.utils.PeCryptoUtils; import org.onap.policy.xacml.api.XACMLErrorConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; @@ -60,181 +64,189 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; -import com.fasterxml.jackson.databind.ObjectMapper; - @Controller public class UpdateOthersPAPS { - - private static final Logger policyLogger = FlexLogger.getLogger(UpdateOthersPAPS.class); - - private static CommonClassDao commonClassDao; - - private static final String contentType = "application/json"; - private static String configType =".Config_"; - private static String actionType =".Action_"; - private static String error ="error"; - public static CommonClassDao getCommonClassDao() { - return commonClassDao; - } - - public static void setCommonClassDao(CommonClassDao commonClassDao) { - UpdateOthersPAPS.commonClassDao = commonClassDao; - } - - @Autowired - private UpdateOthersPAPS(CommonClassDao commonClassDao){ - UpdateOthersPAPS.commonClassDao = commonClassDao; - } - - public UpdateOthersPAPS() { - //Empty Constructor - } - - @RequestMapping(value="/notifyOtherPAPs", method= RequestMethod.POST) - public void notifyOthersPAPsToUpdateConfigurations(HttpServletRequest request, HttpServletResponse response){ - Map model = new HashMap<>(); - ObjectMapper mapper = new ObjectMapper(); - UpdateObjectData body = new UpdateObjectData(); - body.setAction(request.getParameter("action")); - body.setNewPolicyName(request.getParameter("newPolicyName")); - body.setOldPolicyName(request.getParameter("oldPolicyName")); - - String currentPap = XACMLRestProperties.getProperty("xacml.rest.pap.url"); - List getPAPUrls = commonClassDao.getData(PolicyDBDaoEntity.class); - if(getPAPUrls != null && !getPAPUrls.isEmpty()){ - for(int i = 0; i < getPAPUrls.size(); i++){ - PolicyDBDaoEntity papId = (PolicyDBDaoEntity) getPAPUrls.get(i); - String papUrl = papId.getPolicyDBDaoUrl(); - if(!papUrl.equals(currentPap)){ - String userName = papId.getUsername(); - String password = papId.getPassword(); - Base64.Encoder encoder = Base64.getEncoder(); - String txt; - try{ - txt = new String(CryptoUtils.decryptTxt(password), StandardCharsets.UTF_8); - } catch(Exception e){ - policyLogger.debug(e); - //if we can't decrypt, might as well try it anyway - txt = password; - } - String encoding = encoder.encodeToString((userName+":"+txt).getBytes(StandardCharsets.UTF_8)); - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", "Basic " + encoding); - headers.set("Content-Type", contentType); - - RestTemplate restTemplate = new RestTemplate(); - HttpEntity requestEntity = new HttpEntity<>(body, headers); - HttpClientErrorException exception = null; - - try{ - restTemplate.exchange(papUrl + "onap/updateConfiguration", HttpMethod.POST, requestEntity, String.class); - }catch(Exception e){ - policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl, e); - exception = new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage()); - if("409 Conflict".equals(e.getMessage())){ - policyLogger.error(e.getMessage()); - response.addHeader(error, e.getMessage()); - } - } - if(exception != null && exception.getStatusCode()!=null){ - String message; - if(exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)){ - message = XACMLErrorConstants.ERROR_PERMISSIONS +":"+exception.getStatusCode()+":" + "ERROR_AUTH_GET_PERM" ; - policyLogger.error(message); - }else if(exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); - policyLogger.error(message); - }else if(exception.getStatusCode().equals(HttpStatus.NOT_FOUND)){ - message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl + exception; - policyLogger.error(message); - }else{ - message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); - policyLogger.error(message); - } - model.put(papUrl, message); - }else{ - model.put(papUrl, "Success"); - } - } - } - JsonMessage msg; - try { - msg = new JsonMessage(mapper.writeValueAsString(model)); - JSONObject j = new JSONObject(msg); - response.getWriter().write(j.toString()); - } catch (Exception e) { - policyLogger.error("Exception Occured"+e); - } - } - } - - @RequestMapping(value="/updateConfiguration", method= RequestMethod.POST) - @ResponseBody - public void updateConfiguration(@RequestBody UpdateObjectData data, HttpServletResponse response){ - String action = data.getAction(); - String newPolicyName = data.getNewPolicyName(); - String oldPolicyName = data.getOldPolicyName(); - try{ - if("rename".equals(action)){ - if(oldPolicyName.contains(configType) || oldPolicyName.contains(actionType)){ - File file; - if(oldPolicyName.contains(configType)){ - file = new File(Policy.getConfigHome() + File.separator + oldPolicyName); - }else{ - file = new File(Policy.getActionHome() + File.separator + oldPolicyName); - } - if(file.exists()){ - File renamefile; - if(oldPolicyName.contains(configType)){ - renamefile = new File(Policy.getConfigHome() + File.separator + newPolicyName); - }else{ - renamefile = new File(Policy.getActionHome() + File.separator + newPolicyName); - } - if(file.renameTo(renamefile)){ - policyLogger.info("Policy has been renamed Successfully"+newPolicyName); - response.addHeader("rename", "Success"); - }else{ - response.addHeader("rename", "Failure"); - } - } - } - }else if("delete".equals(action)){ - if(oldPolicyName.contains(configType)){ - Files.deleteIfExists(Paths.get(Policy.getConfigHome() + File.separator + oldPolicyName)); - }else if(oldPolicyName.contains("Action_")){ - Files.deleteIfExists(Paths.get(Policy.getActionHome() + File.separator + oldPolicyName)); - } - }else if("clonePolicy".equals(action) || "exportPolicy".equals(action)){ - if(newPolicyName.contains(configType)){ - ConfigurationDataEntity configEntiy = (ConfigurationDataEntity) commonClassDao.getEntityItem(ConfigurationDataEntity.class, "configurationName", newPolicyName); - saveConfigurationData(configEntiy, newPolicyName); - }else if(newPolicyName.contains(actionType)){ - ActionBodyEntity actionEntiy = (ActionBodyEntity) commonClassDao.getEntityItem(ActionBodyEntity.class, "actionBodyName", newPolicyName); - saveActionBodyData(actionEntiy, newPolicyName); - } - } - } catch (IOException e) { - policyLogger.error("Exception Occured While updating Configuration"+e); - } - } - - private void saveConfigurationData(ConfigurationDataEntity configEntiy, String newPolicyName){ - try(FileWriter fw = new FileWriter(Policy.getConfigHome() + File.separator + newPolicyName)){ - BufferedWriter bw = new BufferedWriter(fw); - bw.write(configEntiy.getConfigBody()); - bw.close(); - }catch (IOException e) { - policyLogger.error("Exception Occured While closing the File input stream"+e); - } - } - - private void saveActionBodyData(ActionBodyEntity actionEntiy , String newPolicyName){ - try(FileWriter fw = new FileWriter(Policy.getActionHome() + File.separator + newPolicyName)){ - BufferedWriter bw = new BufferedWriter(fw); - bw.write(actionEntiy.getActionBody()); - bw.close(); - }catch (IOException e) { - policyLogger.error("Exception Occured While closing the File input stream"+e); - } - } -} \ No newline at end of file + + private static final Logger policyLogger = FlexLogger.getLogger(UpdateOthersPAPS.class); + + private static CommonClassDao commonClassDao; + + private static final String contentType = "application/json"; + private static String configType = ".Config_"; + private static String actionType = ".Action_"; + private static String error = "error"; + + public static CommonClassDao getCommonClassDao() { + return commonClassDao; + } + + public static void setCommonClassDao(CommonClassDao commonClassDao) { + UpdateOthersPAPS.commonClassDao = commonClassDao; + } + + @Autowired + private UpdateOthersPAPS(CommonClassDao commonClassDao) { + UpdateOthersPAPS.commonClassDao = commonClassDao; + } + + public UpdateOthersPAPS() { + // Empty Constructor + } + + @RequestMapping(value = "/notifyOtherPAPs", method = RequestMethod.POST) + public void notifyOthersPAPsToUpdateConfigurations(HttpServletRequest request, HttpServletResponse response) { + Map model = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); + UpdateObjectData body = new UpdateObjectData(); + body.setAction(request.getParameter("action")); + body.setNewPolicyName(request.getParameter("newPolicyName")); + body.setOldPolicyName(request.getParameter("oldPolicyName")); + + String currentPap = XacmlRestProperties.getProperty("xacml.rest.pap.url"); + List getPAPUrls = commonClassDao.getData(PolicyDbDaoEntity.class); + if (getPAPUrls != null && !getPAPUrls.isEmpty()) { + for (int i = 0; i < getPAPUrls.size(); i++) { + PolicyDbDaoEntity papId = (PolicyDbDaoEntity) getPAPUrls.get(i); + String papUrl = papId.getPolicyDbDaoUrl(); + if (!papUrl.equals(currentPap)) { + String userName = papId.getUsername(); + String password = papId.getPassword(); + Base64.Encoder encoder = Base64.getEncoder(); + String txt; + try { + PeCryptoUtils.initAesKey(XACMLProperties.getProperty(XacmlRestProperties.PROP_AES_KEY)); + txt = PeCryptoUtils.decrypt(password); + } catch (Exception e) { + policyLogger.debug(e); + // if we can't decrypt, might as well try it anyway + txt = password; + } + String encoding = encoder.encodeToString((userName + ":" + txt).getBytes(StandardCharsets.UTF_8)); + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", "Basic " + encoding); + headers.set("Content-Type", contentType); + + RestTemplate restTemplate = new RestTemplate(); + HttpEntity requestEntity = new HttpEntity<>(body, headers); + HttpClientErrorException exception = null; + + try { + restTemplate.exchange(papUrl + "onap/updateConfiguration", HttpMethod.POST, requestEntity, + String.class); + } catch (Exception e) { + policyLogger.error( + XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl, e); + exception = new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage()); + if ("409 Conflict".equals(e.getMessage())) { + policyLogger.error(e.getMessage()); + response.addHeader(error, e.getMessage()); + } + } + if (exception != null && exception.getStatusCode() != null) { + String message; + if (exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) { + message = XACMLErrorConstants.ERROR_PERMISSIONS + ":" + exception.getStatusCode() + ":" + + "ERROR_AUTH_GET_PERM"; + policyLogger.error(message); + } else if (exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":" + exception.getStatusCode() + ":" + + exception.getResponseBodyAsString(); + policyLogger.error(message); + } else if (exception.getStatusCode().equals(HttpStatus.NOT_FOUND)) { + message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl + + exception; + policyLogger.error(message); + } else { + message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":" + exception.getStatusCode() + ":" + + exception.getResponseBodyAsString(); + policyLogger.error(message); + } + model.put(papUrl, message); + } else { + model.put(papUrl, "Success"); + } + } + } + JsonMessage msg; + try { + msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); + response.getWriter().write(j.toString()); + } catch (Exception e) { + policyLogger.error("Exception Occured" + e); + } + } + } + + @RequestMapping(value = "/updateConfiguration", method = RequestMethod.POST) + @ResponseBody + public void updateConfiguration(@RequestBody UpdateObjectData data, HttpServletResponse response) { + String action = data.getAction(); + String newPolicyName = data.getNewPolicyName(); + String oldPolicyName = data.getOldPolicyName(); + try { + if ("rename".equals(action)) { + if (oldPolicyName.contains(configType) || oldPolicyName.contains(actionType)) { + File file; + if (oldPolicyName.contains(configType)) { + file = new File(Policy.getConfigHome() + File.separator + oldPolicyName); + } else { + file = new File(Policy.getActionHome() + File.separator + oldPolicyName); + } + if (file.exists()) { + File renamefile; + if (oldPolicyName.contains(configType)) { + renamefile = new File(Policy.getConfigHome() + File.separator + newPolicyName); + } else { + renamefile = new File(Policy.getActionHome() + File.separator + newPolicyName); + } + if (file.renameTo(renamefile)) { + policyLogger.info("Policy has been renamed Successfully" + newPolicyName); + response.addHeader("rename", "Success"); + } else { + response.addHeader("rename", "Failure"); + } + } + } + } else if ("delete".equals(action)) { + if (oldPolicyName.contains(configType)) { + Files.deleteIfExists(Paths.get(Policy.getConfigHome() + File.separator + oldPolicyName)); + } else if (oldPolicyName.contains("Action_")) { + Files.deleteIfExists(Paths.get(Policy.getActionHome() + File.separator + oldPolicyName)); + } + } else if ("clonePolicy".equals(action) || "exportPolicy".equals(action)) { + if (newPolicyName.contains(configType)) { + ConfigurationDataEntity configEntiy = (ConfigurationDataEntity) commonClassDao + .getEntityItem(ConfigurationDataEntity.class, "configurationName", newPolicyName); + saveConfigurationData(configEntiy, newPolicyName); + } else if (newPolicyName.contains(actionType)) { + ActionBodyEntity actionEntiy = (ActionBodyEntity) commonClassDao + .getEntityItem(ActionBodyEntity.class, "actionBodyName", newPolicyName); + saveActionBodyData(actionEntiy, newPolicyName); + } + } + } catch (IOException e) { + policyLogger.error("Exception Occured While updating Configuration" + e); + } + } + + private void saveConfigurationData(ConfigurationDataEntity configEntiy, String newPolicyName) { + try (FileWriter fw = new FileWriter(Policy.getConfigHome() + File.separator + newPolicyName)) { + BufferedWriter bw = new BufferedWriter(fw); + bw.write(configEntiy.getConfigBody()); + bw.close(); + } catch (IOException e) { + policyLogger.error("Exception Occured While closing the File input stream" + e); + } + } + + private void saveActionBodyData(ActionBodyEntity actionEntiy, String newPolicyName) { + try (FileWriter fw = new FileWriter(Policy.getActionHome() + File.separator + newPolicyName)) { + BufferedWriter bw = new BufferedWriter(fw); + bw.write(actionEntiy.getActionBody()); + bw.close(); + } catch (IOException e) { + policyLogger.error("Exception Occured While closing the File input stream" + e); + } + } +}