/**
*
*/
package com.intel.mountwilson.controller;
import com.google.common.collect.Lists;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import com.intel.mountwilson.Service.IDemoPortalServices;
import com.intel.mountwilson.Service.IMLEClientService;
import com.intel.mountwilson.Service.IManagementConsoleServices;
import com.intel.mountwilson.Service.IOEMClientService;
import com.intel.mountwilson.Service.IOSClientService;
import com.intel.mountwilson.common.DemoPortalException;
import com.intel.mountwilson.common.MCPConfig;
import com.intel.mountwilson.common.ManagementConsolePortalException;
import com.intel.mountwilson.common.TDPConfig;
import com.intel.mountwilson.common.WLMPConfig;
import com.intel.mountwilson.common.WLMPortalException;
import com.intel.mountwilson.constant.HelperConstant;
import com.intel.mountwilson.datamodel.ApiClientDetails;
import com.intel.mountwilson.datamodel.ApiClientListType;
import com.intel.mountwilson.datamodel.HostDetails;
import com.intel.mountwilson.datamodel.HostDetailsEntityVO;
import com.intel.mountwilson.datamodel.HostVmMappingVO;
import com.intel.mountwilson.datamodel.MLEDataVO;
import com.intel.mountwilson.datamodel.OEMDataVO;
import com.intel.mountwilson.datamodel.OSDataVO;
import com.intel.mountwilson.datamodel.VmmHostDataVo;
import com.intel.mountwilson.util.BasicView;
import com.intel.mountwilson.util.JSONView;
import com.intel.mtwilson.ApiClient;
import com.intel.mtwilson.agent.vmware.VMwareClient;
import com.intel.mtwilson.agent.vmware.VMwareConnectionPool;
import com.intel.mtwilson.agent.vmware.VmwareClientFactory;
import com.intel.mtwilson.api.*;
import com.intel.mtwilson.datatypes.HostConfigData;
import com.intel.mtwilson.datatypes.HostVMMType;
import com.intel.mtwilson.datatypes.HostWhiteListTarget;
import com.intel.mtwilson.datatypes.TxtHostRecord;
import com.intel.mtwilson.ms.common.MSConfig;
import com.intel.dcsg.cpg.tls.policy.TlsConnection;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Type;
import java.net.URL;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.regex.Pattern;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.bind.DatatypeConverter;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.lang.StringEscapeUtils;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.intel.dcsg.cpg.i18n.LocaleUtil;
import com.intel.dcsg.cpg.tls.policy.impl.InsecureTlsPolicy;
import com.intel.mtwilson.ApacheHttpClient;
import com.intel.mtwilson.My;
import com.intel.mtwilson.datatypes.TagDataType;
import com.intel.mtwilson.security.http.apache.ApacheBasicHttpAuthorization;
//import com.intel.mtwilson.tag.model.Selection;
//import com.intel.mtwilson.tag.model.SelectionCollection;
//import com.intel.mtwilson.tag.model.SelectionFilterCriteria;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SignatureException;
import java.util.Locale;
import org.apache.http.auth.UsernamePasswordCredentials;
//import org.codehaus.jackson.JsonParseException;
//import org.codehaus.jackson.map.JsonMappingException;
//import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
//import com.intel.mtwilson.tag.rest.v2.repository.SelectionRepository;
/**
* @author yuvrajsx
*
*/
@Controller
public class ManagementConsoleDataController extends MultiActionController {
//private static final Logger log = Logger.getLogger(ManagementConsoleDataController.class.getName());
private Logger log = LoggerFactory.getLogger(getClass());
private IManagementConsoleServices services;
//Services Layer object, used to invoke service layer methods.
private IDemoPortalServices demoPortalServices;
//Services layer objects use to call into services layer for bussiness logic.
private IOSClientService osClientService;
private IMLEClientService mleClientService;
private IOEMClientService oemClientService;
private VMwareConnectionPool pool = new VMwareConnectionPool(new VmwareClientFactory());
private final int DEFAULT_ROWS_PER_PAGE = 10;
/**
* @param HttpServletRequest
* @param HttpServletResponse
* @return
*/
public ModelAndView uploadFlatFileRegisterHost(HttpServletRequest req, HttpServletResponse res) {
log.debug("ManagementConsoleDataController.uploadFlatFileRegisterHost >>");
req.getSession().removeAttribute("hostVO");
//ModelAndView responseView = new ModelAndView(new JSONView());
ModelAndView responseView = new ModelAndView(new BasicView());
List<HostDetails> listOfRegisterHost = new ArrayList<>();
log.debug("Action is :{}", req.getMethod());
log.debug("Content type is {}", req.getContentType());
// Check that we have a file upload request
boolean isRequestMultiType = ServletFileUpload.isMultipartContent(req);
log.debug("Is data multipart {} ", isRequestMultiType);
if (!isRequestMultiType) {
responseView.addObject("result", false);
//log.warn("File Upload is not MultiPart. Please check you File Uploaded Plugin.");
return responseView;
}
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
try {
@SuppressWarnings("unchecked")
List<FileItem> items = upload.parseRequest(req);
// Process the uploaded items
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
log.debug ("File is {}", item.getName());
if (!item.isFormField()) {
String lines[] = item.getString().split("\\r?\\n");
for (String values : lines) {
log.debug("Parsing entry {}", values);
//Split host name and host value with Separator e.g. |
if (values.indexOf(HelperConstant.SEPARATOR_REGISTER_HOST) >= 0) {
String val[] = values.split(Pattern.quote(HelperConstant.SEPARATOR_REGISTER_HOST));
if (val.length == 3) {
HostDetails host = new HostDetails();
host.setHostType(val[0]);
host.setHostName(val[1]);
String portOrVCenter = val[2];
if (portOrVCenter.toLowerCase().contains(HelperConstant.HINT_FOR_VCENTERSTRING.toLowerCase())) {
host.setvCenterString(portOrVCenter);
host.setVmWareType(true);
} else {
host.setHostPortNo(portOrVCenter);
host.setVmWareType(false);
}
listOfRegisterHost.add(host);
}
} else {
responseView.addObject("result", false);
log.info("Please provide the host details in the format specified.");
return responseView;
}
}
}
}
//log.info("Uploaded Content :: " + listOfRegisterHost.toString());
req.getSession().setAttribute("hostVO", listOfRegisterHost);
responseView.addObject("result", listOfRegisterHost.size() > 0 ? true : false);
} catch (FileUploadException e) {
e.printStackTrace();
responseView.addObject("result", false);
} catch (Exception e) {
e.printStackTrace();
responseView.addObject("result", false);
}
//log.info("ManagementConsoleDataController.uploadFlatFileRegisterHost <<<");
//responseView.addObject("result", true);
return responseView;
}
/**
* This Method will use to Retrieve the pre-fetched Host to be Register,
* uploaded with flat file.
*
* @param req
* @param res
* @return
*/
public ModelAndView getUploadedRegisterHostValues(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.getUploadedRegisterHostValues >>");
ModelAndView responseView = new ModelAndView(new JSONView());
@SuppressWarnings("unchecked")
List<HostDetails> listOfRegisterHost = (List<HostDetails>) req.getSession().getAttribute("hostVO");
boolean result = false;
if (listOfRegisterHost != null) {
try {
ApiClient apiClient = getApiClientService(req, ApiClient.class);
if (apiClient == null) {
throw new IllegalStateException("Failed to initialize the API client object.");
}
responseView = getListofRegisteredHost(listOfRegisterHost, responseView, apiClient);
result = true;
} catch (Exception ex) {
//log.warn("Exception Checking for already register host. " + ex.getMessage());
responseView.addObject("message", "Exception Checking for already register host. " + StringEscapeUtils.escapeHtml(ex.getMessage()));
responseView.addObject("result", result);
return responseView;
}
}
responseView.addObject("result", result);
//log.info("ManagementConsoleDataController.getUploadedRegisterHostValues <<<");
return responseView;
}
/**
* This Method will use to get Data of white List Configuration.
*
* @param req
* @param res
* @return
*/
public ModelAndView uploadWhiteListConfiguration(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.uploadWhiteListConfiguration >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String hostVOString = req.getParameter("registerHostVo");
log.debug("uploadWhiteListConfiguration registerHostVo = {}", hostVOString);
boolean result = false;
HostDetails hostDetailsObj;
try {
String whiteListConfigVOString = req.getParameter("whiteListConfigVO");
log.debug("uploadWhiteListConfiguration whiteListConfigVO = {}", whiteListConfigVOString);
HostConfigData hostConfig;
@SuppressWarnings("serial")
Type whiteListType = new TypeToken<HostConfigData>() {
}.getType();
hostConfig = new Gson().fromJson(whiteListConfigVOString, whiteListType);
//hostConfig = getObjectFromJSONString(whiteListConfigVOString, HostConfigData.class);
// these are handled separately because their values are in enum HostWhiteListTarget
// also note that the parameter names are camelCase, because the deserialization happens
// above via Gson, so any jackson annotations ilke @JsonProperty are ignored.
hostConfig.setBiosWLTarget(getBiosWhiteListTarget(req.getParameter("biosWLTagrget")));
hostConfig.setVmmWLTarget(getVmmWhiteListTarget(req.getParameter("vmmWLTarget")));
System.err.println("whiteListConfigVO>>" + hostConfig);
@SuppressWarnings("serial")
Type hostInfo = new TypeToken<HostDetails>() {
}.getType();
hostDetailsObj = new Gson().fromJson(hostVOString, hostInfo);
//hostDetailsObj = getObjectFromJSONString(hostVOString, HostDetails.class);
hostConfig.setHostVmmType(getHostVmmTypeTarget(hostDetailsObj.getHostType()));
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
result = services.saveWhiteListConfiguration(hostDetailsObj, hostConfig, apiObj);
result = true;
} catch (Exception ex) {
//log.warn("Exception during whitelist configuration. " + ex.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(ex.getMessage()));
responseView.addObject("result", result);
return responseView;
}
responseView.addObject("result", result);
//log.info("ManagementConsoleDataController.uploadWhiteListConfiguration <<<");
return responseView;
}
/**
* This Method will use to get Data of white List Configuration, using
* Automatic tools.
*
* @param req
* @param res
* @return
*//*
public ModelAndView defineWhiteListConfig(HttpServletRequest req, HttpServletResponse res) {
log.info("ManagementConsoleDataController.defineWhiteListConfig >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String whiteListConfigVOString = req.getParameter("whiteListConfigVO");
System.out.println(whiteListConfigVOString);
boolean result = false;
HostConfigData whiteList;
try {
@SuppressWarnings("serial")
Type hostInfo = new TypeToken<HostConfigData>() {}.getType();
whiteList = new Gson().fromJson(whiteListConfigVOString, hostInfo);
whiteList = getObjectFromJSONString(whiteListConfigVOString, HostConfigData.class);
whiteList.setBiosWLTarget(getWhiteListTarget(req.getParameter("biosWLTagrget")));
whiteList.setVmmWLTarget(getWhiteListTarget(req.getParameter("vmmWLTarget")));
System.err.println(whiteList);
// Now save the whiteListConfig object to the session
HttpSession httpSession = req.getSession(false);
httpSession.setAttribute("White-List", whiteList);
result = true;
} catch (Exception ex) {
log.severe("Exception during whitelist configuration. " + ex.getMessage());
responseView.addObject("message","Error during white list configuration. " + ex.getMessage());
responseView.addObject("result",result);
ex.printStackTrace();
return responseView;
}
responseView.addObject("result",result);
log.info("ManagementConsoleDataController.defineWhiteListConfig <<<");
return responseView;
}*/
private HostWhiteListTarget getBiosWhiteListTarget(String target) {
List<HostWhiteListTarget> biosTargetList = new ArrayList<HostWhiteListTarget>();
biosTargetList.add(HostWhiteListTarget.BIOS_HOST);
biosTargetList.add(HostWhiteListTarget.BIOS_OEM);
for (HostWhiteListTarget whiteListTargets : biosTargetList) {
if (whiteListTargets.getValue().equals(target)) {
return whiteListTargets;
}
}
return null;
}
private HostWhiteListTarget getVmmWhiteListTarget(String target) {
List<HostWhiteListTarget> vmmTargetList = new ArrayList<HostWhiteListTarget>();
vmmTargetList.add(HostWhiteListTarget.VMM_OEM);
vmmTargetList.add(HostWhiteListTarget.VMM_HOST);
vmmTargetList.add(HostWhiteListTarget.VMM_GLOBAL);
for (HostWhiteListTarget whiteListTargets : vmmTargetList) {
if (whiteListTargets.getValue().equals(target)) {
return whiteListTargets;
}
}
return null;
}
private HostVMMType getHostVmmTypeTarget(String target) {
for (HostVMMType hostVmmType : HostVMMType.values()) {
if (hostVmmType.getValue().equals(target)) {
return hostVmmType;
}
}
return null;
}
/**
* This Method will use to get Data for pre configured white List
* Configuration.
*
* @param req
* @param res
* @return
*/
public ModelAndView getDefinedWhiteListConfig(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.getDefinedWhiteListConfig >>");
ModelAndView responseView = new ModelAndView(new JSONView());
boolean result;
HostConfigData whiteList;
try {
// Now get the whiteListConfig object from the session
HttpSession httpSession = req.getSession(false);
whiteList = (HostConfigData) httpSession.getAttribute("White-List");
System.err.println(whiteList);
responseView.addObject("whiteListConfig", whiteList);
responseView.addObject("biosWLTarget", whiteList.getBiosWLTarget().getValue() == null ? "" : whiteList.getBiosWLTarget().getValue());
responseView.addObject("vmmWLTarget", whiteList.getVmmWLTarget().getValue() == null ? "" : whiteList.getVmmWLTarget().getValue());
result = true;
} catch (Exception ex) {
result = false;
//log.warn("Exception during whitelist configuration. " + ex.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(ex.getMessage()));
responseView.addObject("result", result);
return responseView;
}
responseView.addObject("result", result);
//log.info("ManagementConsoleDataController.getDefinedWhiteListConfig <<<");
return responseView;
}
/**
* This Method is used to retrieve the datacenter names of a vSphere Server.
*
* @param req
* @param res
* @return
*/
public ModelAndView retrieveDatacenters(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.retrieveDatacenters >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String vCenterConnection;
String dcCombined;
try {
vCenterConnection = req.getParameter("vCentertConnection");
} catch (Exception e) {
//log.warn("Error while getting Input parameter from request." + StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("message", "Input Parameters are NUll.");
responseView.addObject("result", false);
return responseView;
}
try {
log.debug("Acquiring vmware client...");
URL url = new URL(vCenterConnection);
VMwareClient client = pool.getClientForConnection(new TlsConnection(url, new InsecureTlsPolicy()));
List<String> datacenters = services.getDatacenterNames(client);
StringBuilder dcBuilder = new StringBuilder();
for (String dc : datacenters) {
dcBuilder.append(dc);
dcBuilder.append(",");
}
dcCombined = dcBuilder.toString();
dcCombined = dcCombined.substring(0, dcCombined.length() - 1);
} catch (Exception e) {
//log.warn("Error while getting data from VMware vCeneter. " + StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("message", e.getMessage());
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("datacenters", dcCombined);
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.retrieveDatacenters <<<");
return responseView;
}
/**
* This Method is used to retrieve all cluster names within the vSphere
* Server.
*
* @param req
* @param res
* @return
*/
public ModelAndView retrieveAllClusters(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.retrieveAllClusters >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String vCenterConnection;
String clusterCombined;
try {
vCenterConnection = req.getParameter("vCentertConnection");
} catch (Exception e) {
//log.warn("Error while getting Input parameter from request." + StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("message", "Input Parameters are NUll.");
responseView.addObject("result", false);
return responseView;
}
try {
log.debug("Acquiring vmware client...");
URL url = new URL(vCenterConnection);
VMwareClient client = pool.getClientForConnection(new TlsConnection(url, new InsecureTlsPolicy()));
List<String> clusters = services.getClusterNamesWithDC(client);
Collections.sort(clusters);
StringBuilder clusterBuilder = new StringBuilder();
for (String cluster : clusters) {
clusterBuilder.append(cluster);
clusterBuilder.append(",");
}
clusterCombined = clusterBuilder.toString();
clusterCombined = clusterCombined.substring(0, clusterCombined.length() - 1);
} catch (Exception e) {
//log.warn("Error while getting data from VMware vCeneter. " + StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("message", e.getMessage());
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("clusters", clusterCombined);
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.retrieveAllClusters <<<");
return responseView;
}
/**
* This Method is use to get Retrieve Host data from VMWare Cluster. using
* Cluster name and vCenterConnection String.
*
* @param req
* @param res
* @return
*/
public ModelAndView retriveHostFromCluster(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.retriveHostFromCluster >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String clusterName;
String vCenterConnection;
try {
clusterName = req.getParameter("clusterName");
if (clusterName == null) {
throw new IllegalArgumentException("Cluster name cannot be null.");
}
clusterName = clusterName.substring(clusterName.indexOf("] ") + 2);
vCenterConnection = req.getParameter("vCentertConnection");
} catch (Exception e) {
//log.warn("Error while getting Input parameter from request." + StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("message", "Input parameters are null.");
responseView.addObject("result", false);
return responseView;
}
try {
log.debug("Acquiring vmware client...");
URL url = new URL(vCenterConnection);
VMwareClient client = pool.getClientForConnection(new TlsConnection(url, new InsecureTlsPolicy()));
List<HostDetails> hosts = services.getHostNamesForCluster(client, clusterName);
for (HostDetails hostDetail : hosts) {
// Since we have retrieved the hosts from the VMware cluster, we just mark all the hosts as of VMware type
hostDetail.setHostType("vmware");
}
ApiClient apiClient = getApiClientService(req, ApiClient.class);
if (apiClient == null) {
throw new IllegalStateException("Failed to initialize the API client object.");
}
responseView = getListofRegisteredHost(hosts, responseView, apiClient);
} catch (Exception e) {
//log.warn("Error while getting data from VMware vCeneter. " + StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("message", e.getMessage());
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.retriveHostFromCluster <<<");
return responseView;
}
/**
* This Method is use to register multiple host on server..
*
* @param req
* @param res
* @return
*/
public ModelAndView registerMultipleHost(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.registerMultipleHost >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String hostListString;
if (req.getParameter("hostToBeRegister") != null) {
hostListString = req.getParameter("hostToBeRegister");
} else {
//log.warn("hostToBeRegister parameter is Null");
responseView.addObject("result", false);
responseView.addObject("message", "Input Parameters are NULL.");
return responseView;
}
log.debug("hostListString = " + hostListString);
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
List<HostDetails> hostRecords;
Type listType = new TypeToken<List<HostDetails>>() {
}.getType();
hostRecords = new Gson().fromJson(hostListString, listType);
responseView.addObject("hostVOs", services.registerHosts(apiObj, hostRecords));
} catch (Exception e) {
log.error("Error while registering the hosts: {}", e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.registerMultipleHost <<<");
return responseView;
}
/**
* This Method is use to get All pending registration request.
*
* @param req
* @param res
* @return
*/
public ModelAndView getAllPendingRegistrationRequest(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.getAllPendingRegistrationRequest >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
responseView.addObject("pendingRequest", services.getApiClients(apiObj, ApiClientListType.PENDING));
responseView.addObject("allRoles", services.getAllRoles(apiObj));
} catch (Exception e) {
log.error("Error While getting pending requests. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.getAllPendingRegistrationRequest <<<");
return responseView;
}
/**
*
* @param req
* @param res
* @return
*/
public ModelAndView getAllApprovedRequests(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.getAllApprovedRequests >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
responseView.addObject("approvedRequests", services.getApiClients(apiObj, ApiClientListType.ALL));
} catch (Exception e) {
log.error("Error While getting all approved requests. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.getAllApprovedRequests <<<");
return responseView;
}
/**
*
* @param req
* @param res
* @return
*/
public ModelAndView getAllExpiringApiClients(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.getAllExpiringApiClients >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
responseView.addObject("expiringApiClients", services.getApiClients(apiObj, ApiClientListType.EXPIRING));
responseView.addObject("expirationMonths", MCPConfig.getConfiguration().getInt("mtwilson.mc.apiKeyExpirationNoticeInMonths", 3));
} catch (Exception e) {
log.error("Error While getting all expiring API clients: {}", e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.getAllExpiringApiClients <<<");
return responseView;
}
/**
*
* @param req
* @param res
* @return
*/
public ModelAndView getApiClientsForDelete(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.getApiClientsForDelete >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
responseView.addObject("apiClientList", services.getApiClients(apiObj, ApiClientListType.DELETE));
} catch (Exception e) {
log.error("Error while getting Api clients: {}", e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.getApiClientsForDelete <<<");
return responseView;
}
/**
* This Method is use Approve selected request from Approve request page.
*
* @param req
* @param res
* @return
*/
public ModelAndView approveSelectedRequest(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.approveSelectedRequest >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String hostDetailsString;
ApiClientDetails apiClientDetailsObj;
boolean result;
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
hostDetailsString = req.getParameter("requestVO");
apiClientDetailsObj = getObjectFromJSONString(hostDetailsString, ApiClientDetails.class);
result = services.updateRequest(apiClientDetailsObj, apiObj, true);
} catch (Exception ex) {
log.error("Error approving access request: {}", ex.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(ex.getMessage()));
return responseView;
}
responseView.addObject("result", result);
//log.info("ManagementConsoleDataController.approveSelectedRequest <<<");
return responseView;
}
/**
* This Method is use Reject selected request from Approve request page.
*
* @param req
* @param res
* @return
*/
public ModelAndView rejectSelectedRequest(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.rejectSelectedRequest >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String hostDetailsString;
ApiClientDetails apiClientDetailsObj;
boolean result = false;
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
hostDetailsString = req.getParameter("requestVO");
apiClientDetailsObj = getObjectFromJSONString(hostDetailsString, ApiClientDetails.class);
result = services.updateRequest(apiClientDetailsObj, apiObj, false);
} catch (Exception ex) {
log.error(ex.getMessage());
responseView.addObject("result", result);
responseView.addObject("message", StringEscapeUtils.escapeHtml(ex.getMessage()));
return responseView;
}
responseView.addObject("result", result);
//log.info("ManagementConsoleDataController.rejectSelectedRequest <<<");
return responseView;
}
/**
* This Method is use to delete selected request from Delete request page.
*
* @param req
* @param res
* @return
*/
public ModelAndView deleteSelectedRequest(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.deleteSelectedRequest >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String fingerprint;
boolean result = false;
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
fingerprint = req.getParameter("fingerprint");
result = services.deleteSelectedRequest(fingerprint, apiObj);
} catch (Exception ex) {
log.error(ex.getMessage());
responseView.addObject("result", result);
responseView.addObject("message", StringEscapeUtils.escapeHtml(ex.getMessage()));
return responseView;
}
responseView.addObject("result", result);
//log.info("ManagementConsoleDataController.deleteSelectedRequest <<<");
return responseView;
}
public ModelAndView logOutUser(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.logOutUser >>");
ModelAndView responseView = new ModelAndView("Login");
try {
HttpSession session = req.getSession(false);
if (session != null) {
session.invalidate();
}
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
}
//log.info("ManagementConsoleDataController.logOutUser <<");
return responseView;
}
public ModelAndView openPreferences(HttpServletRequest req, HttpServletResponse res) throws ManagementConsolePortalException {
ModelAndView responseView = new ModelAndView("Preferences");
String username = req.getParameter("username");
try {
List<Map<String, Object>> localeList = new ArrayList<Map<String, Object>>();
for (String localeName : demoPortalServices.getLocales(getApiClientService(req, ApiClient.class))) {
log.debug("Retrieved locale for preferences page DDL: {}", localeName);
Map<String, Object> map = new HashMap<String, Object>();
map.put("localeName", localeName);
localeList.add(map);
}
responseView.addObject("locales", localeList);
String selectedLocale = demoPortalServices.getLocale(username, getApiClientService(req, ApiClient.class));
log.debug("Retrieved selected locale for preferences page DDL: {}", selectedLocale);
responseView.addObject("selectedLocale", selectedLocale);
} catch (DemoPortalException e) {
e.printStackTrace();
log.error(e.toString());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
return responseView;
}
/*
* Method to provide Services Object while calling servies methods. used by Spring Conatiner.
*
*/
public void setServices(IManagementConsoleServices services) {
this.services = services;
}
@SuppressWarnings("unchecked")
private <T> T getObjectFromJSONString(String objectString, Class<T> type) {
Type apiClientDetailsObj = TypeToken.of(type).getType();
Gson gson = new Gson();
return (T) gson.fromJson(objectString, apiClientDetailsObj);
}
/**
* This method will return a AttestationService/ApiCLient Object from a
* Session. This object is stored into Session at time of user login. Check
* CheckLoginController.java for more Clarification.
*
* @param req
* @return
* @return AttestationService
* @throws ManagementConsolePortalException
* @throws DemoPortalException
*/
@SuppressWarnings("unchecked")
private <T> T getApiClientService(HttpServletRequest req, Class<T> type) throws ManagementConsolePortalException {
//getting already created session object by passing false while calling into getSession();
HttpSession session = req.getSession(false);
T service = null;
if (session != null) {
try {
//getting ApiClient Object from Session and downcast that object to Type T.
service = (T) session.getAttribute("api-object");
} catch (Exception e) {
log.error("Error while creating ApiClient Object: " + e.getMessage(), e);
throw new ManagementConsolePortalException("Error while creating ApiClient Object: " + e.getMessage(), e);
}
}
return service;
}
protected static final ObjectMapper mapper = new ObjectMapper();
/***** UNUSED
private <T> T fromJSON(String document, Class<T> valueType) throws IOException, ApiException {
try {
return mapper.readValue(document, valueType);
}
catch(com.fasterxml.jackson.core.JsonParseException e) {
throw new ApiException("Cannot parse response", e);
}
}*/
private ModelAndView getListofRegisteredHost(List<HostDetails> listOfRegisterHost, ModelAndView responseView, ApiClient apiClient) throws IOException, NoSuchAlgorithmException, KeyManagementException, ApiException, SignatureException {
List<HostDetails> listToSend = new ArrayList<HostDetails>();
for (HostDetails hostDetails : listOfRegisterHost) {
HostDetails details = hostDetails;
try {
List<TxtHostRecord> list = apiClient.queryForHosts2(hostDetails.getHostName());
if (list.size() <= 0) {
details.setRegistered(false);
} else {
TxtHostRecord response = list.get(0);
details.setRegistered(true);
details.setStatus(HelperConstant.ALREADY_REGISTER);
System.err.println("response.VMM_Name >>" + response.VMM_Name);
String biosOem = response.BIOS_Oem;
if (biosOem.contains(" ")) {
biosOem = biosOem.split(" ")[0];
}
if (response.VMM_Name.toLowerCase().contains(hostDetails.getHostName().toLowerCase())) {
responseView.addObject("vmmConfigValue_" + hostDetails.getHostName(), HostWhiteListTarget.VMM_HOST.getValue());
} else if (response.VMM_Name.toLowerCase().contains(biosOem.toLowerCase())) {
responseView.addObject("vmmConfigValue_" + hostDetails.getHostName(), HostWhiteListTarget.VMM_OEM.getValue());
} else {
responseView.addObject("vmmConfigValue_" + hostDetails.getHostName(), HostWhiteListTarget.VMM_GLOBAL.getValue());
}
System.err.println("response.biosWLTarget >>" + response.VMM_Name);
if (response.VMM_Name.toLowerCase().contains(hostDetails.getHostName().toLowerCase())) {
responseView.addObject("biosConfigValue_" + hostDetails.getHostName(), HostWhiteListTarget.BIOS_HOST.getValue());
} else {
responseView.addObject("biosConfigValue_" + hostDetails.getHostName(), HostWhiteListTarget.BIOS_OEM.getValue());
}
}
} catch (Exception e) {
log.error("Error While getting host info using QueryForHost method, cause : " + e.getMessage());
details.setRegistered(false);
}
listToSend.add(details);
}
responseView.addObject("hostVO", listToSend);
List<String> wlBios = new ArrayList<String>();
wlBios.add(HostWhiteListTarget.BIOS_OEM.getValue());
wlBios.add(HostWhiteListTarget.BIOS_HOST.getValue());
responseView.addObject("wlBiosList", wlBios);
List<String> wlVMM = new ArrayList<String>();
wlVMM.add(HostWhiteListTarget.VMM_OEM.getValue());
wlVMM.add(HostWhiteListTarget.VMM_HOST.getValue());
wlVMM.add(HostWhiteListTarget.VMM_GLOBAL.getValue());
responseView.addObject("wlVMMList", wlVMM);
responseView.addObject("SpecificHostValue", HostWhiteListTarget.VMM_HOST.getValue());
// Get list of selections here and add them to responseView
//List<String> selectionList = new ArrayList<String>();
//String requestURL = My.configuration().getAssetTagServerURL() + "/selections";
//1.3.6.1.4.1.99999.3";
//ApacheHttpClient client = new ApacheHttpClient(My.configuration().getAssetTagServerURL(), new ApacheBasicHttpAuthorization(new UsernamePasswordCredentials(My.configuration().getAssetTagApiUsername(),My.configuration().getAssetTagApiPassword())), null, new InsecureTlsPolicy());
//ApiRequest request = new ApiRequest(MediaType., "");
//ApiResponse response = client.get(requestURL);
//List<String> selectionList = new ArrayList<String>();
//selectionList.add("N/A");
//SelectionRepository repo = new SelectionRepository();
//SelectionFilterCriteria criteria = new SelectionFilterCriteria();
//criteria.nameEqualTo = "";
//SelectionCollection collection = new SelectionCollection();
//collection = repo.search(criteria);
//List<Selection> list = collection.getSelections();
//for(Selection s: list) {
// selectionList.add(s.getName());
//}
//responseView.addObject("selectionList",selectionList);
return responseView;
}
//Begin_Added by Soni-Function for CA
public ModelAndView getAllCAStatus(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.getAllCAStatus >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
responseView.addObject("caStatus", services.getCADetails(apiObj));
} catch (Exception e) {
log.error("Error While getting ca status. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.getAllCAStatus <<<");
return responseView;
}
//End_Added by Soni-Function for CA
private String readCertFile(String file) throws IOException {
StringBuilder stringBuilder;
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
stringBuilder = new StringBuilder();
String ls = System.getProperty("line.separator");
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append(ls);
}
}
return stringBuilder.toString();
}
//Begin_Added by Soni-Function to download SAML certificate
public ModelAndView getSAMLCertificate(HttpServletRequest req, HttpServletResponse res) {
//log.info("In Data Contoller ManagementConsoleDataController.getSAMLCertificate >>");
//ModelAndView responseView = new ModelAndView("SAMLDownload");
ModelAndView responseView = new ModelAndView(new JSONView());
res.setContentType("application/octet-stream ");
res.setHeader("Content-Disposition",
"attachment;filename=mtwilson-saml.crt");
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
if (apiObj == null) {
throw new IllegalArgumentException("API client object cannot be null.");
}
// InputStream in = new ByteArrayInputStream(apiObj.getSamlCertificate().getEncoded());
//System.err.println("SAMLcertificate "+apiObj.getSamlCertificate().getEncoded());
//IOUtils.copy(in, res.getOutputStream());
//ServletOutputStream out = res.getOutputStream();
/* FileOutputStream out = new FileOutputStream("C:/mtwilson-saml.crt");
System.err.println("ServletOutputStream"+out);
byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(in.read(outputByte, 0, 4096) != -1)
{System.err.println("outputByte "+outputByte);
out.write(outputByte, 0, 4096);
System.err.println("ServletOutputStream"+out);
}
System.err.println("ServletOutputStream"+out);*/
responseView.addObject("SAMLcertificate", apiObj.getSamlCertificate().getEncoded());
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.getSAMLCertificate <<<");
/* in.close();
out.flush();
out.close();
*/
} catch (Exception e) {
log.error("Error While getting Downlaoding Certificate. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
return responseView;
}
//Begin_Added by stdale-Function to download MC certificate
public ModelAndView getRootCACertificate(HttpServletRequest req, HttpServletResponse res) {
//log.info("In Data Contoller ManagementConsoleDataController.getRootCACertificate >>");
//ModelAndView responseView = new ModelAndView("SAMLDownload");
ModelAndView responseView = new ModelAndView(new JSONView());
res.setContentType("application/octet-stream ");
res.setHeader("Content-Disposition", "attachment;filename=MtWilsonRootCA.crt.pem");
try {
//Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
if (apiObj == null) {
throw new IllegalArgumentException("API client object cannot be null.");
}
//X509Certificate[] certs = (X509Certificate[]) apiObj.getRootCaCertificates().toArray();
Set<X509Certificate> certs = apiObj.getRootCaCertificates();
X509Certificate cert;
Iterator i = certs.iterator();
if (i.hasNext()) {
cert = (X509Certificate) i.next();
} else {
throw new IllegalArgumentException("RootCACertificate not found.");
}
String ret = "-----BEGIN CERTIFICATE-----\n";
ret += DatatypeConverter.printBase64Binary(cert.getEncoded());
ret += "\n-----END CERTIFICATE-----";
// MSConfig msc = new MSConfig();
//Properties prop = msc.getDefaults();
//String file = prop.getProperty("mtwilson.rootca.certificate.file");
//String ret = readCertFile(file);
responseView.addObject("Certificate", ret);
responseView.addObject("result", true);
log.info("ManagementConsoleDataController.getRootCACertificate <<<");
} catch (Exception e) {
log.error("Error While getting Root CA Downlaoding Certificate. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
return responseView;
}
public ModelAndView getPrivacyCACertificate(HttpServletRequest req, HttpServletResponse res) {
//log.info("In Data Contoller ManagementConsoleDataController.getPrivacyCACertificate >>");
//ModelAndView responseView = new ModelAndView("SAMLDownload");
ModelAndView responseView = new ModelAndView(new JSONView());
res.setContentType("application/octet-stream ");
res.setHeader("Content-Disposition", "attachment;filename=PrivacyCA.pem");
try {
ApiClient apiObj = getApiClientService(req, ApiClient.class);
if (apiObj == null) {
throw new IllegalArgumentException("API client object cannot be null.");
}
Set<X509Certificate> certs = apiObj.getPrivacyCaCertificates();
X509Certificate cert;
Iterator i = certs.iterator();
if (i.hasNext()) {
cert = (X509Certificate) i.next();
} else {
throw new IllegalArgumentException("PrivacyCACertificate not found.");
}
String ret = "-----BEGIN CERTIFICATE-----\n";
ret += DatatypeConverter.printBase64Binary(cert.getEncoded());
ret += "\n-----END CERTIFICATE-----";
responseView.addObject("Certificate", ret);
responseView.addObject("result", true);
log.info("ManagementConsoleDataController.getPrivacyCACertificate <<<");
/*
MSConfig msc = new MSConfig();
Properties prop = msc.getDefaults();
String file = prop.getProperty("mtwilson.privacyca.certificate.file");
String ret = readCertFile(file);
responseView.addObject("Certificate",ret);
responseView.addObject("result",true);
log.info("ManagementConsoleDataController.getPrivacyCACertificat <<<");
*/
} catch (Exception e) {
log.error("Error While getting Privacy CA Downlaoding Certificate. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
return responseView;
}
public ModelAndView getPrivacyCACertificateList(HttpServletRequest req, HttpServletResponse res) {
//log.info("In Data Contoller ManagementConsoleDataController.getPrivacyCACertificateList >>");
//ModelAndView responseView = new ModelAndView("SAMLDownload");
ModelAndView responseView = new ModelAndView(new JSONView());
res.setContentType("application/octet-stream ");
res.setHeader("Content-Disposition", "attachment;filename=PrivacyCA.list.pem");
try {
// Now get the API object from the session
MSConfig msc = new MSConfig();
Properties prop = msc.getDefaults();
String file = prop.getProperty("mtwilson.privacyca.certificate.list.file");
String ret = readCertFile(file);
responseView.addObject("Certificate", ret);
responseView.addObject("result", true);
log.info("ManagementConsoleDataController.getPrivacyCACertificateList <<<");
} catch (Exception e) {
log.error("Error While getting Privacy CA List Downlaoding Certificate. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
return responseView;
}
public ModelAndView getTLSCertificate(HttpServletRequest req, HttpServletResponse res) {
//log.info("In Data Contoller ManagementConsoleDataController.getTLSCertificate >>");
//ModelAndView responseView = new ModelAndView("SAMLDownload");
ModelAndView responseView = new ModelAndView(new JSONView());
res.setContentType("application/octet-stream ");
res.setHeader("Content-Disposition", "attachment;filename=ssl.crt.pem");
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
if (apiObj == null) {
throw new IllegalArgumentException("API client object cannot be null.");
}
Set<X509Certificate> certs = apiObj.getTlsCertificates();
X509Certificate cert;
Iterator i = certs.iterator();
if (i.hasNext()) {
cert = (X509Certificate) i.next();
} else {
throw new IllegalArgumentException("TLSCertificate not found.");
}
String ret = "-----BEGIN CERTIFICATE-----\n";
ret += DatatypeConverter.printBase64Binary(cert.getEncoded());
ret += "\n-----END CERTIFICATE-----";
responseView.addObject("Certificate", ret);
responseView.addObject("result", true);
log.info("ManagementConsoleDataController.getTLSCertificate <<<");
/*
MSConfig msc = new MSConfig();
Properties prop = msc.getDefaults();
String file = prop.getProperty("mtwilson.tls.certificate.file");
String ret = readCertFile("/etc/intel/cloudsecurity/ssl.crt.pem");
responseView.addObject("Certificate",ret);
responseView.addObject("result",true);
log.info("ManagementConsoleDataController.getPrivacyCACertificat <<<");
*/
} catch (Exception e) {
log.error("Error While getting TLS Downlaoding Certificate. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
return responseView;
}
//Begin_Added by Soni-Function to download SAML certificate
public ModelAndView getSamlCertificate(HttpServletRequest req, HttpServletResponse res) {
//log.info("In Data Contoller ManagementConsoleDataController.getSAMLCertificate >>");
//ModelAndView responseView = new ModelAndView("SAMLDownload");
ModelAndView responseView = new ModelAndView(new JSONView());
res.setContentType("application/octet-stream ");
res.setHeader("Content-Disposition",
"attachment;filename=mtwilson-saml.crt");
try {
// Now get the API object from the session
ApiClient apiObj = getApiClientService(req, ApiClient.class);
if (apiObj == null) {
throw new IllegalArgumentException("API client object cannot be null.");
}
Set<X509Certificate> certs = apiObj.getSamlCertificates();
X509Certificate cert;
Iterator i = certs.iterator();
if (i.hasNext()) {
cert = (X509Certificate) i.next();
} else {
throw new IllegalArgumentException("TLSCertificate not found.");
}
String ret = "-----BEGIN CERTIFICATE-----\n";
ret += DatatypeConverter.printBase64Binary(cert.getEncoded());
ret += "\n-----END CERTIFICATE-----";
responseView.addObject("Certificate", ret);
responseView.addObject("result", true);
log.info("ManagementConsoleDataController.getSAMLCertificate <<<");
/* in.close();
out.flush();
out.close();
*/
} catch (Exception e) {
log.error("Error While getting Downlaoding Certificate. " + e.getMessage());
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
return responseView;
}
return responseView;
}
//End_Added by stdale-Function to download RootCA certificate
public ModelAndView dummyPostbackFunction(HttpServletRequest req, HttpServletResponse res) {
//log.info("ManagementConsoleDataController.dummyPostbackFunction >>");
ModelAndView responseView = new ModelAndView(new JSONView());
responseView.addObject("result", true);
//log.info("ManagementConsoleDataController.dummyPostbackFunction <<<");
return responseView;
}
//////////////////// from demo portal //////////////////////
/**
* Method is used to get Trust Status for Hosts to show on Home Screen.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getDashBoardData(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getDashBoardData >>");
Map<Integer, List<HostDetailsEntityVO>> map;
ModelAndView responseView = new ModelAndView(new JSONView());
try {
//Get map view for All Host based on the value of Page_NO(this values is available from TDPConfig)
map = getAllHostDetailsFromDB(req);
//calling into a Service layer to get trust status for Host on Page No 1(using map.get(1)).
responseView.addObject("hostVo", demoPortalServices.getTrustStatusForHost(map.get(1), getAttestationService(req, AttestationService.class), getTrustedCertificates(req)));
//setting no of page required to show all Host data while applying pagination in JSP
responseView.addObject("noOfPages", map.size());
} catch (Exception e) {
log.error(e.toString());
responseView.addObject("hostVo", "");
responseView.addObject("result", false);
if (e.getMessage() == null) {
responseView.addObject("parseError", true);
responseView.addObject("message", "Please review the server log for error details.");
} else if (e.getMessage().toLowerCase().contains("currently there are no hosts configured")) {
responseView.addObject("noHosts", true);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
} else if (e.getMessage().toLowerCase().contains("peer not authenticated")) {
// PEER NOT AUTH FIX
responseView.addObject("ResetPeer", true);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
} else if (e.getMessage().toLowerCase().contains("Cannot parse response")) {
responseView.addObject("parseError", true);
responseView.addObject("message", "There was a error parsing the response from the server. Please reload the page to fix this issue");
} else {
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getDashBoardData <<<");
return responseView;
}
/**
* Method is used to get trust status of host for selected page no. Method
* will get called when user choose any page no from pagination.
*
* @param req
* @param res
* @return
*/
public ModelAndView getHostTrustSatusForPageNo(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getHostTrustSatusForPageNo >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
//getting selected Page No.
int selectedPage = Integer.parseInt(req.getParameter("pageNo"));
HttpSession session = req.getSession();
@SuppressWarnings("unchecked")
//getting Map view of all Host stored into session while calling getDashBoardData().
Map<Integer, List<HostDetailsEntityVO>> mapOfData = (Map<Integer, List<HostDetailsEntityVO>>) session.getAttribute("HostVoList");
//calling into a Service layer to get trust status of Host for selected Page No.
responseView.addObject("hostVo", demoPortalServices.getTrustStatusForHost(mapOfData.get(selectedPage), getAttestationService(req, AttestationService.class), getTrustedCertificates(req)));
responseView.addObject("noOfPages", mapOfData.size());
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("hostVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getHostTrustSatusForPageNo <<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getVMwareSubGridData(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getVMwareSubGridData >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
Map<String, HostVmMappingVO> vmMappingData = getHostVmMappingdata();
responseView.addObject("VMsForHost", demoPortalServices.getVMsForHost(req.getParameter("hostName"), req.getParameter("hostID"), vmMappingData, getAttestationService(req, AttestationService.class)));
saveHostVmMappingdata(vmMappingData);
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getVMwareSubGridData <<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getHostTrustStatus(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getHostTrustStatus >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String block = "Success";
log.info(block);
try {
responseView.addObject("hostVo", demoPortalServices.getSingleHostTrust(req.getParameter("hostName"), getAttestationService(req, AttestationService.class), getTrustedCertificates(req)));
} catch (DemoPortalException e) {
// block = "Fail";
//log.error(e.toString());
log.info("F-Error");
//e.printStackTrace();
String msg = StringEscapeUtils.escapeHtml(e.getMessage());
if (msg.equals("Premature end of file.")) {
msg = "Could not connect to host, please verify connection";
e.printStackTrace();
}
responseView.addObject("hostVo", "");
responseView.addObject("result", false);
//responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("message", msg);
return responseView;
}
log.info(block);
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getHostTrustStatus <<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getAllOemInfo(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getAllOemInfo >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
responseView.addObject("oemInfo", demoPortalServices.getAllOemInfo(getAttestationService(req, ApiClient.class)));
} catch (DemoPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("oemInfo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getAllOemInfo <<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getOSVMMInfo(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getOSVMMInfo >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
responseView.addObject("osInfo", demoPortalServices.getOSAndVMMInfo(getAttestationService(req, ApiClient.class)));
} catch (DemoPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("osInfo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getOSVMMInfo <<<");
return responseView;
}
public ModelAndView saveNewHostInfo(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.saveNewHostInfo >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String hostObject;
boolean newhost;
try {
hostObject = req.getParameter("hostObject");
if (hostObject == null) {
throw new IllegalArgumentException("Host object cannot be null.");
}
newhost = Boolean.parseBoolean(req.getParameter("newhost"));
} catch (Exception e1) {
hostObject = null;
newhost = false;
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e1.getMessage()));
}
//System.out.println(hostObject);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
HostDetailsEntityVO dataVO;
try {
dataVO = mapper.readValue(hostObject, HostDetailsEntityVO.class);
} catch (JsonParseException e) {
log.error("Error While Parsing request parameters Data. " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", "Error While Parsing request parameters Data.");
return responseView;
} catch (JsonMappingException e) {
log.error("Error While Mapping request parameters to Mle Data Object. " + StringEscapeUtils.escapeHtml(e.getMessage()));
responseView.addObject("result", false);
responseView.addObject("message", "Error While Mapping request parameters to Mle Data Object.");
return responseView;
} catch (IOException e) {
log.error("IO Exception " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", "Error While Mapping request parameters to Mle Data Object.");
return responseView;
}
dataVO.setUpdatedOn(new Date(System.currentTimeMillis()));
try {
if (newhost) {
//System.err.println("dataForNew : "+dataVO);
responseView.addObject("result", demoPortalServices.saveNewHostData(dataVO, getAttestationService(req, AttestationService.class)));
} else {
//System.err.println("dataForOLD : "+dataVO);
responseView.addObject("result", demoPortalServices.updateHostData(dataVO, getAttestationService(req, AttestationService.class)));
}
} catch (DemoPortalException e) {
log.error(e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
//log.info("WLMDataController.saveNewHostInfo <<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getInfoForHostID(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getInfoForHostID >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
String hostName = req.getParameter("hostName");
responseView.addObject("hostData", demoPortalServices.getSingleHostDetailFromDB(hostName, getAttestationService(req, AttestationService.class)));
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("oemInfo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getInfoForHostID <<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView deleteHostDetails(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.deleteHostDetails >>");
ModelAndView responseView = new ModelAndView(new JSONView());
int selectedPage;
try {
selectedPage = Integer.parseInt(req.getParameter("selectedPageNo"));
Map<String, HostVmMappingVO> vmMappingData = getHostVmMappingdata();
boolean updateDone = demoPortalServices.deleteHostDetails(req.getParameter("hostID"), req.getParameter("hostName"), getAttestationService(req, AttestationService.class), vmMappingData);
if (updateDone) {
saveHostVmMappingdata(vmMappingData);
Map<Integer, List<HostDetailsEntityVO>> mapOfData = getAllHostDetailsFromDB(req);
if (selectedPage > mapOfData.size()) {
selectedPage = mapOfData.size();
}
responseView.addObject("hostVo", mapOfData.get(selectedPage));
responseView.addObject("noOfPages", mapOfData.size());
responseView.addObject("result", updateDone);
} else {
log.error("Error Wile deleting OS Data. Server Error.");
responseView.addObject("result", false);
responseView.addObject("message", "Api Client return false.");
}
} catch (DemoPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
//log.info("DemoPortalDataController.deleteHostDetails<<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView powerOnOffVM(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.powerOnOffVM >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
String hostName = req.getParameter("hostName");
String vmName = req.getParameter("vmName");
String hostID = req.getParameter("hostID");
short trustPolicy = Short.parseShort(req.getParameter("trustPolicy"));
short locationPloicy = Short.parseShort(req.getParameter("locationPloicy"));
boolean isPowerOnCommand = Boolean.parseBoolean(req.getParameter("isPowerON"));
responseView.addObject("result", demoPortalServices.powerOnOffHostVMs(hostName, vmName, hostID, isPowerOnCommand, getAttestationService(req, AttestationService.class)));
Map<String, HostVmMappingVO> vmMappingData = getHostVmMappingdata();
HostVmMappingVO hostVmMappingVO = vmMappingData.get(hostID + HelperConstant.VM_HOST_MAPPING_SEPERATOR + vmName);
if (hostVmMappingVO == null) {
throw new IllegalArgumentException("hostVmMappingVO cannot be null.");
}
hostVmMappingVO.setTrustedHostPolicy(trustPolicy);
hostVmMappingVO.setLocationPolicy(locationPloicy);
if (isPowerOnCommand) {
hostVmMappingVO.setVmStatus((short) 1);
} else {
hostVmMappingVO.setVmStatus((short) 0);
}
vmMappingData.put(hostID + HelperConstant.VM_HOST_MAPPING_SEPERATOR + vmName, hostVmMappingVO);
saveHostVmMappingdata(vmMappingData);
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
//log.info("DemoPortalDataController.powerOnOffVM<<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView migrateVMToHost(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.migrateVMToHost >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
String hostToTransfer = req.getParameter("hostToTransfer");
String sourceHost = req.getParameter("sourceHost");
String vmName = req.getParameter("vmName");
String hostID = req.getParameter("hostID");
String targetHosthostID = req.getParameter("targetHosthostID");
short trustPolicy = Short.parseShort(req.getParameter("trustPolicy"));
short locationPloicy = Short.parseShort(req.getParameter("locationPloicy"));
responseView.addObject("result", demoPortalServices.migrateVMToHost(vmName, sourceHost, hostToTransfer, hostID, getAttestationService(req, AttestationService.class)));
Map<String, HostVmMappingVO> vmMappingData = getHostVmMappingdata();
HostVmMappingVO hostVmMappingVO = vmMappingData.get(hostID + HelperConstant.VM_HOST_MAPPING_SEPERATOR + vmName);
if (hostVmMappingVO == null) {
throw new IllegalArgumentException("hostVmMappingVO cannot be null.");
}
hostVmMappingVO.setHostId(targetHosthostID);
hostVmMappingVO.setTrustedHostPolicy(trustPolicy);
hostVmMappingVO.setLocationPolicy(locationPloicy);
vmMappingData.put(targetHosthostID + HelperConstant.VM_HOST_MAPPING_SEPERATOR + vmName, hostVmMappingVO);
vmMappingData.remove(hostID + HelperConstant.VM_HOST_MAPPING_SEPERATOR + vmName);
saveHostVmMappingdata(vmMappingData);
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
//log.info("DemoPortalDataController.migrateVMToHost<<<");
return responseView;
}
/**
* Method to get Host list to for View Host page.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getAllHostForView(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getAllHostForView >>");
Map<Integer, List<HostDetailsEntityVO>> map;
ModelAndView responseView = new ModelAndView(new JSONView());
try {
map = getAllHostDetailsFromDB(req);
responseView.addObject("hostVo", map.get(1));
responseView.addObject("noOfPages", map.size());
} catch (DemoPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("hostVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getAllHostForView<<<");
return responseView;
}
/**
* Method to get Host list to for View Host Page for given page no.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getHostForViewForPage(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getHostForViewForPage >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
int selectedPage = Integer.parseInt(req.getParameter("pageNo"));
HttpSession session = req.getSession();
@SuppressWarnings("unchecked")
Map<Integer, List<HostDetailsEntityVO>> mapOfData = (Map<Integer, List<HostDetailsEntityVO>>) session.getAttribute("HostVoList");
responseView.addObject("hostVo", mapOfData.get(selectedPage));
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("hostVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getHostForViewForPage<<<");
return responseView;
}
/**
* Method to get Trust Verification Details using SAML.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView trustVerificationDetailsXML(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.trustVerificationDetailsXML >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String hostName = req.getParameter("hostName");
try {
responseView.addObject("trustSamlDetails", demoPortalServices.trustVerificationDetails(hostName, getAttestationService(req, AttestationService.class), getTrustedCertificates(req)));
responseView.addObject("hostName", hostName);
responseView.addObject("result", true);
} catch (DemoPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
e.printStackTrace();
return responseView;
}
responseView.addObject("message", "");
responseView.addObject("result", true);
return responseView;
}
/**
* Method to Bulk Update trust status for selected host.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView updateTrustForSelected(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.updateTrustForSelected >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String hostList = req.getParameter("selectedHost");
List<String> hosts = null;
if (hostList != null) {
hosts = Arrays.asList(hostList.split(";"));
}
try {
responseView.addObject("result", demoPortalServices.getBlukTrustUpdatedForHost(hosts, getAttestationService(req, ApiClient.class), getTrustedCertificates(req)));
} catch (DemoPortalException e) {
e.printStackTrace();
log.error(e.toString());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
//log.info("DemoPortalDataController.updateTrustForSelected<<<");
return responseView;
}
/**
* Method to Bulk Update trust status for selected host.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getHostsReport(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getHostsReport >>");
ModelAndView responseView = new ModelAndView(new JSONView());
String[] list = req.getParameterValues("selectedHost");
if (list == null) {
responseView.addObject("message", "No hosts were selected for reports.");
log.info("DemoPortalDataController.getHostsReport<<<");
return responseView;
}
List<String> hosts = Arrays.asList(list);
try {
responseView.addObject("reports", demoPortalServices.getHostTrustReport(hosts, getAttestationService(req, ApiClient.class)));
responseView.addObject("result", true);
} catch (DemoPortalException e) {
log.error(e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getHostsReport<<<");
return responseView;
}
public ModelAndView getFailurereportForHost(HttpServletRequest req, HttpServletResponse res) {
//log.info("DemoPortalDataController.getFailurereportForHost >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
responseView.addObject("reportdata", demoPortalServices.getFailureReportData(req.getParameter("hostName"), getAttestationService(req, ApiClient.class)));
responseView.addObject("result", true);
} catch (Exception e) {
log.error(e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
//log.info("DemoPortalDataController.getFailurereportForHost <<");
return responseView;
}
public void setDemoPortalServices(IDemoPortalServices demoPortalServices) {
this.demoPortalServices = demoPortalServices;
}
/**
* This method is used as a utility method to get Map Views for all host
* based on Page_no value.
*
* @param req
* @return Map<Integer, List<HostDetailsEntityVO>> @throws
* DemoPortalException
*/
private Map<Integer, List<HostDetailsEntityVO>> getAllHostDetailsFromDB(HttpServletRequest req) throws DemoPortalException {
Map<Integer, List<HostDetailsEntityVO>> map = new HashMap<Integer, List<HostDetailsEntityVO>>();
//Get List of all host available.
List<HostDetailsEntityVO> listOfVos = demoPortalServices.getHostListFromDB(getAttestationService(req, AttestationService.class));
int no_row_per_page = Integer.parseInt(TDPConfig.getConfiguration().getString("mtwilson.tdbp.paginationRowCount", "10")); // providing default value because it's not a critical configuration setting
//Divide List of all host into a subList based on the value of host per page.
List<List<HostDetailsEntityVO>> list = Lists.partition(listOfVos, no_row_per_page);
//Creating a Map view of host list based on the Page No.
int i = 1;
for (List<HostDetailsEntityVO> listForMap : list) {
map.put(i, listForMap);
i++;
}
//setting map into session attribute;
HttpSession session = req.getSession();
session.setAttribute("HostVoList", map);
return map;
}
/**
* This method will return a AttestationService/ApiClient Object from a
* Session. This object is stored into Session at time of user login. Check
* CheckLoginController.java for more Clarification.
*
* @param req
* @return
* @return AttestationService
* @throws DemoPortalException
*/
@SuppressWarnings("unchecked")
private <T> T getAttestationService(HttpServletRequest req, Class<T> type) throws DemoPortalException {
//getting already created session object by passing false while calling into getSession();
HttpSession session = req.getSession(false);
T service = null;
if (session != null) {
try {
//getting ApiClient Object from Session and downcast that object to Type T.
service = (T) session.getAttribute("apiClientObject");
} catch (Exception e) {
log.error("Error while creating ApiCliennt Object. " + e.getMessage());
throw new DemoPortalException("Error while creating ApiCliennt Object. " + e.getMessage(), e);
}
}
return service;
}
/**
* This method will return a X509Certificate Object from a Request Session.
* This object is stored into Session at time of user login. Check
* CheckLoginController.java for more Clarification.
*
* @param req
* @return
* @throws DemoPortalException
*/
private X509Certificate[] getTrustedCertificates(HttpServletRequest req) throws DemoPortalException {
HttpSession session = req.getSession(false);
X509Certificate[] trustedCertificate;
if (session != null) {
try {
//getting Object from Session and downcast that object to X509Certificate.
trustedCertificate = (X509Certificate[]) session.getAttribute("trustedCertificates");
} catch (Exception e) {
log.error("Error while creating ApiCliennt Object. " + e.getMessage());
throw new DemoPortalException("Error while creating ApiCliennt Object. " + e.getMessage(), e);
}
} else {
return null;
}
return trustedCertificate;
}
private Map<String, HostVmMappingVO> getHostVmMappingdata() {
ServletContext application = getServletContext();
@SuppressWarnings("unchecked")
Map<String, HostVmMappingVO> vmMappingData = (Map<String, HostVmMappingVO>) application.getAttribute("HostVmMapping-DataTable");
if (vmMappingData == null || vmMappingData.size() <= 0) {
vmMappingData = new HashMap<String, HostVmMappingVO>();
application.setAttribute("HostVmMapping-DataTable", vmMappingData);
}
return vmMappingData;
}
private void saveHostVmMappingdata(Map<String, HostVmMappingVO> vmMappingData) {
ServletContext application = getServletContext();
application.setAttribute("HostVmMapping-DataTable", vmMappingData);
}
///////////////////////// from whitelist portal //////////////////////
/**
* Method to add OS Data into REST Services.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView addOSData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.addOSData >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
OSDataVO dataVONew = new OSDataVO();
//Getting OS data from request parameter
dataVONew.setOsName(req.getParameter("osName"));
dataVONew.setOsVersion(req.getParameter("osVersion"));
dataVONew.setOsDescription(req.getParameter("osDescription"));
//Calling into Service Layer(OSClientServiceImpl) to add OS Data.
responseView.addObject("result", osClientService.addOSInfo(dataVONew, getWhitelistService(req)));
} catch (WLMPortalException e) {
log.error("Error Wile Adding OS Data. Root cause " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
//log.info("WLMDataController.addOSData <<<");
return responseView;
}
/**
* Method to Update previously add OS Data into a REST Services.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView updateOSData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.updateOSData >>");
ModelAndView responseView = new ModelAndView(new JSONView());
int selectedPage;
try {
//Get Current select page no used in pagination.
selectedPage = Integer.parseInt(req.getParameter("selectedPageNo"));
//Get updated OS data from req object and create OSDataVO Object from it.
OSDataVO dataVONew = new OSDataVO();
dataVONew.setOsName(req.getParameter("osName"));
dataVONew.setOsVersion(req.getParameter("osVer"));
dataVONew.setOsDescription(req.getParameter("inputDec"));
//Calling into Service Layer(OSClientServiceImpl) to update OS Data.
boolean updateDone = osClientService.updateOSInfo(dataVONew, getWhitelistService(req));
// Once OS data is updated, get List of all OS for a current page to show while pagination.
if (updateDone) {
//Get map view of OS data from Services based on there page no.
Map<Integer, List<OSDataVO>> mapOfData = getPartitionListOfAllOS(req);
responseView.addObject("OSDataVo", mapOfData.get(selectedPage));
responseView.addObject("noOfPages", mapOfData.size());
responseView.addObject("result", updateDone);
} else {
log.error("Error Wile Editing OS Data. Api Client return false.");
responseView.addObject("result", false);
responseView.addObject("message", "Error Wile Editing OS Data. Api Client return false.");
}
} catch (WLMPortalException e) {
log.error("Error Wile Editing OS Data. Root cause " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
//log.info("WLMDataController.updateOSData <<<");
return responseView;
}
/**
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView deleteOSData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.deleteOSData >>");
ModelAndView responseView = new ModelAndView(new JSONView());
int selectedPage;
try {
selectedPage = Integer.parseInt(req.getParameter("selectedPageNo"));
OSDataVO dataVONew = new OSDataVO();
dataVONew.setOsName(req.getParameter("osName"));
dataVONew.setOsVersion(req.getParameter("osVer"));
dataVONew.setOsDescription(req.getParameter("inputDec"));
boolean updateDone = osClientService.deleteOS(dataVONew, getWhitelistService(req));
if (updateDone) {
Map<Integer, List<OSDataVO>> mapOfData = getPartitionListOfAllOS(req);
if (selectedPage > mapOfData.size()) {
selectedPage = mapOfData.size();
}
responseView.addObject("OSDataVo", mapOfData.get(selectedPage));
responseView.addObject("noOfPages", mapOfData.size());
responseView.addObject("result", updateDone);
} else {
log.error("Error Wile deleting OS Data. Server Error.");
responseView.addObject("result", false);
responseView.addObject("message", "Api Client return false.");
}
} catch (WLMPortalException e) {
log.error("Error Wile deleting OS Data. Root cause " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
//log.info("WLMDataController.deleteOSData <<<");
return responseView;
}
public ModelAndView getHostOSForVMM(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getHostOSForVMM >>");
ModelAndView responseView = new ModelAndView(new JSONView());
List<VmmHostDataVo> list = new ArrayList<VmmHostDataVo>();
VmmHostDataVo dataVo;
List<String> VmmNames = getVMMNameList(WLMPConfig.getConfiguration().getString("mtwilson.wlmp.openSourceHypervisors"));
try {
List<OSDataVO> osList = osClientService.getAllOS(getWhitelistService(req));
for (OSDataVO osDataVO : osList) {
dataVo = new VmmHostDataVo();
dataVo.setHostOS(osDataVO.getOsName());
dataVo.setHostVersion(osDataVO.getOsVersion());
if (osDataVO.getOsName().toLowerCase().contains(WLMPConfig.getConfiguration().getString("mtwilson.wlmp.moduleAttestation").toLowerCase())) {
dataVo.setVmmNames(getVMMNameList(WLMPConfig.getConfiguration().getString("mtwilson.wlmp.vmwareHypersior")));
if (osDataVO.getOsVersion().toLowerCase().contains(WLMPConfig.getConfiguration().getString("mtwilson.wlmp.moduleAttestationVersion").toLowerCase())) {
dataVo.setAttestationType("MODULE");
} else {
dataVo.setAttestationType("PCR");
}
} else {
dataVo.setVmmNames(VmmNames);
dataVo.setAttestationType("PCR");
}
list.add(dataVo);
}
} catch (WLMPortalException e) {
log.error("Error While getting Host OS Data for VMM. Root cause " + e.getStackTrace());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("HostList", list);
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("WLMDataController.getHostOSForVMM <<<");
return responseView;
}
public ModelAndView getHostOSForBios(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getHostOSForBios >>");
ModelAndView responseView = new ModelAndView(new JSONView());
List<OEMDataVO> list = null;
try {
list = oemClientService.getAllOEM(getWhitelistService(req));
responseView.addObject("result", true);
} catch (WLMPortalException e) {
log.error("Error While getting Host OS Data for BIOS. Root cause " + e.getStackTrace());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
responseView.addObject("HostList", list);
responseView.addObject("message", "");
//log.info("WLMDataController.getHostOSForBios <<<");
return responseView;
}
public ModelAndView getUploadedMenifestFile(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getUploadedMenifestFile >>");
ModelAndView responseView = new ModelAndView(new JSONView());
Object manifest = req.getSession().getAttribute("manifestValue");
boolean result = false;
if (manifest != null) {
result = true;
responseView.addObject("manifestValue", manifest);
}
responseView.addObject("result", result);
//log.info("WLMDataController.getUploadedMenifestFile <<<");
return responseView;
}
public ModelAndView uploadManifest(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.uploadManifest >>");
req.getSession().removeAttribute("manifestValue");
ModelAndView responseView = new ModelAndView(new JSONView());
List<Map<String, String>> manifestValue = new ArrayList<Map<String, String>>();
// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
log.debug("Is content multipart? {}", isMultipart);
if (!isMultipart) {
responseView.addObject("result", false);
return responseView;
}
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
try {
@SuppressWarnings("unchecked")
List<FileItem> items = upload.parseRequest(req);
// Process the uploaded items
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
String lines[] = item.getString().split("\\r?\\n");
for (String values : lines) {
if (values.length() > 2) {
String val[] = values.split(":");
if (val.length == 2) {
Map<String, String> manifest = new HashMap<String, String>();
manifest.put(val[0], val[1]);
manifestValue.add(manifest);
} else {
responseView.addObject("result", false);
return responseView;
}
}
}
}
}
//log.info("Uploaded Content :: "+manifestValue.toString());
req.getSession().setAttribute("manifestValue", manifestValue);
/*responseView.addObject("manifestValue",manifestValue);*/
responseView.addObject("result", manifestValue.size() > 0 ? true : false);
} catch (FileUploadException e) {
e.printStackTrace();
responseView.addObject("result", false);
} catch (Exception e) {
e.printStackTrace();
responseView.addObject("result", false);
}
//log.info("WLMDataController.uploadManifest <<<");
return responseView;
}
public ModelAndView viewSingleMLEData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.viewSingleMLEData>>");
ModelAndView responseView = new ModelAndView(new JSONView());
MLEDataVO dataVO = new MLEDataVO();
MLEDataVO detailMLEVO = null;
try {
dataVO.setMleName(req.getParameter("mleName"));
dataVO.setMleVersion(req.getParameter("mleVersion"));
dataVO.setAttestation_Type(req.getParameter("attestation_Type"));
String mleType = req.getParameter("mleType");
if (mleType != null && mleType.equalsIgnoreCase("VMM")) {
dataVO.setOsName(req.getParameter("osName"));
dataVO.setOsVersion(req.getParameter("osVersion"));
} else {
dataVO.setOemName(req.getParameter("oemName"));
}
} catch (Exception e) {
log.error("Error While in request parameters Data. " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", "Error While request parameters are Null. Please check.");
}
try {
detailMLEVO = mleClientService.getSingleMleData(dataVO, getWhitelistService(req));
responseView.addObject("dataVo", detailMLEVO);
responseView.addObject("result", true);
} catch (WLMPortalException e) {
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
log.error(e.toString());
}
// Now that we got the details of the MLE, we need to get the host details that
// was used for white listing this MLE.
try {
responseView.addObject("mleSource", mleClientService.getMleSourceHost(detailMLEVO, getWhitelistService(req)));
} catch (WLMPortalException e) {
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
log.error(e.toString());
}
log.info("WLMDataController.viewSingleMLEData <<<");
return responseView;
}
public ModelAndView getWhiteListForMle(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getWhiteListForMle>>");
ModelAndView responseView = new ModelAndView(new JSONView());
MLEDataVO dataVO = new MLEDataVO();
try {
dataVO.setMleName(req.getParameter("mleName"));
dataVO.setMleVersion(req.getParameter("mleVersion"));
dataVO.setAttestation_Type(req.getParameter("attestation_Type"));
String mleType = req.getParameter("mleType");
if (mleType != null && mleType.equalsIgnoreCase("VMM")) {
dataVO.setOsName(req.getParameter("osName"));
dataVO.setOsVersion(req.getParameter("osVersion"));
} else {
dataVO.setOemName(req.getParameter("oemName"));
}
} catch (Exception e) {
log.error("Error While in request parameters Data. " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", "Error While request parameters are Null. Please check.");
}
try {
responseView.addObject("whiteList", mleClientService.getManifestListForModuleTypeMle(dataVO, getWhitelistService(req)));
responseView.addObject("result", true);
} catch (WLMPortalException e) {
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
log.error(e.toString());
}
//log.info("WLMDataController.getWhiteListForMle <<<");
return responseView;
}
@SuppressWarnings("serial")
public ModelAndView getAddMle(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getAddMle>>");
ModelAndView responseView = new ModelAndView(new JSONView());
String mleOb = null;
boolean newMle = false;
try {
mleOb = req.getParameter("mleObject");
newMle = Boolean.parseBoolean(req.getParameter("newMle"));
} catch (Exception e1) {
log.error("Error While in request parameters Data. " + e1.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", "Error While request parameters are Null. Please check.");
}
log.debug("Adding MLE: {}", mleOb);
MLEDataVO dataVO = new MLEDataVO();
try {
Type mleDataType = new TypeToken<MLEDataVO>() {
}.getType();
dataVO = new Gson().fromJson(mleOb, mleDataType);
for (Map<String, String> manifestMap : dataVO.getManifestList()) {
for (Map.Entry<String, String> manifest : manifestMap.entrySet()) {
manifest.setValue(manifest.getValue().toUpperCase());
}
}
System.out.println("dataVo >>" + dataVO);
if (newMle) {
responseView.addObject("result", mleClientService.addMLEInfo(dataVO, getWhitelistService(req)));
} else {
responseView.addObject("result", mleClientService.updateMLEInfo(dataVO, getWhitelistService(req)));
}
} catch (Exception e) {
log.error(e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
//log.info("WLMDataController.getAddMle <<<");
return responseView;
}
public ModelAndView deleteMLEData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.deleteMLEData>>");
ModelAndView responseView = new ModelAndView(new JSONView());
MLEDataVO dataVO = new MLEDataVO();
int selectedPage;
try {
selectedPage = Integer.parseInt(req.getParameter("selectedPageNo"));
dataVO.setMleName(req.getParameter("mleName"));
dataVO.setMleVersion(req.getParameter("mleVersion"));
String mleType = req.getParameter("mleType");
if (mleType != null && mleType.equalsIgnoreCase("VMM")) {
dataVO.setOsName(req.getParameter("osName"));
dataVO.setOsVersion(req.getParameter("osVersion"));
} else {
dataVO.setOemName(req.getParameter("oemName"));
}
} catch (Exception e) {
log.error("Error While in request parameters Data. " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", "Error While request parameters are Null. Please check.");
return responseView;
}
try {
boolean deleteDone = mleClientService.deleteMLE(dataVO, getWhitelistService(req));
if (deleteDone) {
Map<Integer, List<MLEDataVO>> mapOfData = getPartitionListOfAllMle(req);
if (selectedPage > mapOfData.size()) {
selectedPage = mapOfData.size();
}
responseView.addObject("MLEDataVo", mapOfData.get(selectedPage));
responseView.addObject("noOfPages", mapOfData.size());
responseView.addObject("result", true);
}
} catch (WLMPortalException e) {
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
log.error(e.toString());
return responseView;
}
//log.info("WLMDataController.deleteMLEData <<<");
return responseView;
}
public ModelAndView addOEMData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.addOEMData>>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
OEMDataVO dataVONew = new OEMDataVO();
dataVONew.setOemName(req.getParameter("oemName"));
dataVONew.setOemDescription(req.getParameter("oemDescription"));
System.out.println("New OEM data >>> " + dataVONew.toString());
responseView.addObject("result", oemClientService.addOEMInfo(dataVONew, getWhitelistService(req)));
} catch (WLMPortalException e) {
log.error("Error Wile Adding OEM Data. Root cause " + e.getStackTrace());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
//log.info("WLMDataController.addOEMData <<<");
return responseView;
}
public ModelAndView updateOEMData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.updateOEMData >>");
ModelAndView responseView = new ModelAndView(new JSONView());
int selectedPage;
try {
selectedPage = Integer.parseInt(req.getParameter("selectedPageNo"));
OEMDataVO dataVONew = new OEMDataVO();
dataVONew.setOemName(req.getParameter("oemName"));
dataVONew.setOemDescription(req.getParameter("inputDec"));
boolean updateDone = oemClientService.updateOEMInfo(dataVONew, getWhitelistService(req));
if (updateDone) {
Map<Integer, List<OEMDataVO>> mapOfData = getPartitionListOfAllOEM(req);
responseView.addObject("OEMDataVo", mapOfData.get(selectedPage));
responseView.addObject("noOfPages", mapOfData.size());
responseView.addObject("result", updateDone);
}
} catch (Exception e) {
log.error("Error Wile Editing OEM Data. Root cause " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
//log.info("WLMDataController.updateOEMData <<<");
return responseView;
}
public ModelAndView deleteOEMData(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.deleteOEMData >>");
ModelAndView responseView = new ModelAndView(new JSONView());
int selectedPage;
try {
selectedPage = Integer.parseInt(req.getParameter("selectedPageNo"));
OEMDataVO dataVONew = new OEMDataVO();
dataVONew.setOemName(req.getParameter("oemName"));
//dataVONew.setOemDescription(req.getParameter("inputDec"));
boolean updateDone = oemClientService.deleteOEM(dataVONew, getWhitelistService(req));
if (updateDone) {
Map<Integer, List<OEMDataVO>> mapOfData = getPartitionListOfAllOEM(req);
if (selectedPage > mapOfData.size()) {
selectedPage = mapOfData.size();
}
responseView.addObject("OEMDataVo", mapOfData.get(selectedPage));
responseView.addObject("noOfPages", mapOfData.size());
responseView.addObject("result", updateDone);
}
} catch (Exception e) {
log.error("Error Wile Deleting OEM Data. Root cause " + e.getMessage());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
//log.info("WLMDataController.deleteOEMData <<<");
return responseView;
}
/*
* Method to get All MLE Data for Pagination
*/
public ModelAndView getViewMle(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getViewMle >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
Map<Integer, List<MLEDataVO>> map = getPartitionListOfAllMle(req);
responseView.addObject("MLEDataVo", map.get(1));
responseView.addObject("noOfPages", map.size());
} catch (WLMPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("MLEDataVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("WLMDataController.getViewMle <<");
return responseView;
}
@SuppressWarnings("unchecked")
public ModelAndView getViewMleForPageNo(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getViewMleForPageNo >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
HttpSession session = req.getSession();
Map<Integer, List<MLEDataVO>> map = (Map<Integer, List<MLEDataVO>>) session.getAttribute("MleList");
responseView.addObject("MLEDataVo", map.get(Integer.parseInt(req.getParameter("pageNo"))));
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("MLEDataVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("WLMDataController.getViewMleForPageNo <<");
return responseView;
}
/*Methods to get data for pagination for OS Component */
public ModelAndView getAllOSList(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getAllOSList >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
Map<Integer, List<OSDataVO>> map = getPartitionListOfAllOS(req);
responseView.addObject("OSDataVo", map.get(1));
responseView.addObject("noOfPages", map.size());
} catch (WLMPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("OSDataVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("WLMDataController.getAllOSList <<");
return responseView;
}
@SuppressWarnings("unchecked")
public ModelAndView getViewOSForPageNo(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getViewOSForPageNo >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
HttpSession session = req.getSession();
Map<Integer, List<MLEDataVO>> map = (Map<Integer, List<MLEDataVO>>) session.getAttribute("OSList");
responseView.addObject("OSDataVo", map.get(Integer.parseInt(req.getParameter("pageNo"))));
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("OSDataVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("WLMDataController.getViewOSForPageNo <<");
return responseView;
}
/*Methods to get data for pagination for OEM Component */
public ModelAndView getAllOEMList(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getAllOEMList >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
Map<Integer, List<OEMDataVO>> map = getPartitionListOfAllOEM(req);
responseView.addObject("OEMDataVo", map.get(1));
responseView.addObject("noOfPages", map.size());
} catch (WLMPortalException e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("OEMDataVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("WLMDataController.getAllOEMList <<");
return responseView;
}
@SuppressWarnings("unchecked")
public ModelAndView getViewOEMForPageNo(HttpServletRequest req, HttpServletResponse res) {
//log.info("WLMDataController.getViewOEMForPageNo >>");
ModelAndView responseView = new ModelAndView(new JSONView());
try {
HttpSession session = req.getSession();
Map<Integer, List<MLEDataVO>> map = (Map<Integer, List<MLEDataVO>>) session.getAttribute("OEMList");
responseView.addObject("OEMDataVo", map.get(Integer.parseInt(req.getParameter("pageNo"))));
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
responseView.addObject("OEMDataVo", "");
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("result", true);
responseView.addObject("message", "");
//log.info("WLMDataController.getViewOEMForPageNo <<");
return responseView;
}
//Method is used to return List of all hypervisors for both VMWare and OpenSource configure in whitelist-portal.properties
private List<String> getVMMNameList(String openSourceHypervisors) {
return Arrays.asList(openSourceHypervisors.split(";"));
}
/**
* Method to get a Map View for all MLE data from REST Services according to
* there page no. Return data is used in pagination.
*
* @param req object of HttpServletRequest
* @return
* @throws WLMPortalException
*/
private Map<Integer, List<MLEDataVO>> getPartitionListOfAllMle(HttpServletRequest req) throws WLMPortalException {
Map<Integer, List<MLEDataVO>> map = new HashMap<Integer, List<MLEDataVO>>();
//Get List of all MLE.
List<MLEDataVO> dataVOs = mleClientService.getAllMLE(getWhitelistService(req));
int no_row_per_page = WLMPConfig.getConfiguration().getInt("mtwilson.wlmp.pagingSize", DEFAULT_ROWS_PER_PAGE);
//Divide List of all MLE into a subList based on the value of host per page.
List<List<MLEDataVO>> list = Lists.partition(dataVOs, no_row_per_page);
//Creating a Map view of MLE list based on the Page No.
int i = 1;
for (List<MLEDataVO> listForMap : list) {
map.put(i, listForMap);
i++;
}
//setting map into session attribute;
HttpSession session = req.getSession();
session.setAttribute("MleList", map);
return map;
}
/**
* Method to get a Map View for all OS data from REST Services according to
* there page no. Return data is used in pagination.
*
* @param req object of HttpServletRequest
* @return
* @throws WLMPortalException
*/
private Map<Integer, List<OSDataVO>> getPartitionListOfAllOS(HttpServletRequest req) throws WLMPortalException {
Map<Integer, List<OSDataVO>> mapOfData = new HashMap<Integer, List<OSDataVO>>();
//Get List of all OS.
List<OSDataVO> dataVOs = osClientService.getAllOS(getWhitelistService(req));
int no_row_per_page = WLMPConfig.getConfiguration().getInt("mtwilson.wlmp.pagingSize", DEFAULT_ROWS_PER_PAGE);
//Divide List of all OS into a subList based on the value of host per page.
List<List<OSDataVO>> list = Lists.partition(dataVOs, no_row_per_page);
//Creating a Map view of OS list based on the Page No.
int i = 1;
for (List<OSDataVO> listForMap : list) {
mapOfData.put(i, listForMap);
i++;
}
//setting map into session attribute;
HttpSession session = req.getSession();
session.setAttribute("OSList", mapOfData);
return mapOfData;
}
/**
* Method to get a Map View for all OEM data from REST Services according to
* there page no. Return data is used in pagination.
*
* @param req object of HttpServletRequest
* @return
* @throws WLMPortalException
*/
private Map<Integer, List<OEMDataVO>> getPartitionListOfAllOEM(HttpServletRequest req) throws WLMPortalException {
Map<Integer, List<OEMDataVO>> map = new HashMap<Integer, List<OEMDataVO>>();
//Get List of all OEM.
List<OEMDataVO> dataVOs = oemClientService.getAllOEM(getWhitelistService(req));
int no_row_per_page = WLMPConfig.getConfiguration().getInt("mtwilson.wlmp.pagingSize", DEFAULT_ROWS_PER_PAGE);
//Divide List of all OEM into a subList based on the value of host per page.
List<List<OEMDataVO>> list = Lists.partition(dataVOs, no_row_per_page);
int i = 1;
for (List<OEMDataVO> listForMap : list) {
map.put(i, listForMap);
i++;
}
//setting map into session attribute;
HttpSession session = req.getSession();
session.setAttribute("OEMList", map);
return map;
}
/**
* This method will return a WhitelistService Object from a Session. This
* object is stored into Session at time of user login. Check
* CheckLoginController.java for more Clarification.
*
* @param req
* @return
* @throws WLMPortalException
*/
private WhitelistService getWhitelistService(HttpServletRequest req) throws WLMPortalException {
//getting already created session object by passing false while calling into getSession();
HttpSession session = req.getSession(false);
WhitelistService service = null;
if (session != null) {
try {
//getting WhitelistService Object from Session, stored while log-in time.
service = (WhitelistService) session.getAttribute("apiClientObject");
} catch (Exception e) {
log.error("Error while creating ApiCliennt Object. " + e.getMessage());
throw new WLMPortalException("Error while creating ApiCliennt Object. " + StringEscapeUtils.escapeHtml(e.getMessage()), e);
}
}
return service;
}
/**
* Method to retrieve available locales.
*
* @param req (HttpServletRequest Object)
* @param res (HttpServletResponse Object)
* @return
*/
public ModelAndView getLocales(HttpServletRequest req, HttpServletResponse res) throws ManagementConsolePortalException {
ModelAndView responseView = new ModelAndView(new JSONView());
try {
List<Map<String, Object>> localeList = new ArrayList<Map<String, Object>>();
for (String localeName : demoPortalServices.getLocales(getApiClientService(req, ApiClient.class))) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("localeName", localeName);
localeList.add(map);
}
responseView.addObject("locales", localeList);
} catch (DemoPortalException e) {
e.printStackTrace();
log.error(e.toString());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
return responseView;
}
responseView.addObject("message", "");
return responseView;
}
/**
* Returns locale for specified portal user.
*
* @param req
* @param res
* @return
* @throws ManagementConsolePortalException
*/
public ModelAndView getLocale(HttpServletRequest req, HttpServletResponse res) throws ManagementConsolePortalException {
ModelAndView responseView = new ModelAndView(new JSONView());
String username = req.getParameter("username");
try {
responseView.addObject("locale", demoPortalServices.getLocale(username, getApiClientService(req, ApiClient.class)));
} catch (DemoPortalException e) {
e.printStackTrace();
log.error(e.toString());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
responseView.addObject("message", "");
return responseView;
}
/**
* Sets locale for specified portal user.
*
* @param req
* @param res
* @return
* @throws ManagementConsolePortalException
*/
public ModelAndView setLocale(HttpServletRequest req, HttpServletResponse res) throws ManagementConsolePortalException {
ModelAndView responseView = new ModelAndView(new JSONView());
String username = req.getParameter("username");
String locale = req.getParameter("locale");
log.debug("Calling api to set locale [{}] for user [{}]", locale, username);
try {
ApiClient apiClient = getApiClientService(req, ApiClient.class);
if (apiClient == null) {
throw new IllegalStateException("Failed to initialize the API client object.");
}
apiClient.setLocale(LocaleUtil.forLanguageTag(locale));
HttpSession session = req.getSession();
session.setAttribute("api-object", apiClient);
session.setAttribute("apiClientObject",apiClient);
responseView.addObject("locale", demoPortalServices.setLocale(username, locale, apiClient));
} catch (DemoPortalException e) {
e.printStackTrace();
log.error(e.toString());
responseView.addObject("result", false);
responseView.addObject("message", StringEscapeUtils.escapeHtml(e.getMessage()));
}
responseView.addObject("message", "");
return responseView;
}
// Methods to create services layer object, used by other methods while calling into a Service Layer.
//these method are called by spring container while dependencies injuction.
public void setOsClientServiceImpl(IOSClientService clientService) {
this.osClientService = clientService;
}
public void setMleClientService(IMLEClientService mleClientService) {
this.mleClientService = mleClientService;
}
public void setOemClientService(IOEMClientService oemClientService) {
this.oemClientService = oemClientService;
}
}