package org.infosec.ismp.agent.winsensor.strategy.service.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.infosec.ismp.agent.comm.winsensor.model.strategy.CommBaseStrategy; import org.infosec.ismp.agent.comm.winsensor.model.strategy.CommHostResourceStrategy; import org.infosec.ismp.agent.comm.winsensor.model.strategy.CommRegisterStrategy; import org.infosec.ismp.agent.comm.winsensor.model.strategy.CommSoftwareUpdateStrategy; import org.infosec.ismp.agent.comm.winsensor.model.strategy.CommWindowsLogStrategy; import org.infosec.ismp.agent.comm.winsensor.model.strategy.CommWindowsUpdateStrategy; import org.infosec.ismp.agent.comm.winsensor.model.strategy.CommWinsensorManagerStrategy; import org.infosec.ismp.agent.winsensor.entity.WinsensorDeviceBO; import org.infosec.ismp.agent.winsensor.strategy.BaseStrategy; import org.infosec.ismp.agent.winsensor.strategy.entity.HostResourceStrategyBO; import org.infosec.ismp.agent.winsensor.strategy.entity.RegisterStrategyBO; import org.infosec.ismp.agent.winsensor.strategy.entity.SoftwareUpdateStrategyBO; import org.infosec.ismp.agent.winsensor.strategy.entity.WindowsLogStrategyBO; import org.infosec.ismp.agent.winsensor.strategy.entity.WindowsUpdateStrategyBO; import org.infosec.ismp.agent.winsensor.strategy.entity.WinsensorManagerStrategyBO; import org.infosec.ismp.agent.winsensor.strategy.service.HostResourceStrategyService; import org.infosec.ismp.agent.winsensor.strategy.service.RegisterStrategyService; import org.infosec.ismp.agent.winsensor.strategy.service.SoftwareUpdateStrategyService; import org.infosec.ismp.agent.winsensor.strategy.service.StrategyService; import org.infosec.ismp.agent.winsensor.strategy.service.WindowsLogStrategyService; import org.infosec.ismp.agent.winsensor.strategy.service.WindowsUpdateStrategyService; import org.infosec.ismp.agent.winsensor.strategy.service.WinsensorManagerStrategyService; /** * @author Rocky * @version create time:Oct 21, 2010 6:36:24 PM * */ public class StrategyServiceImpl implements StrategyService { private HostResourceStrategyService hostResourceStrategyService; private RegisterStrategyService registerStrategyService; private SoftwareUpdateStrategyService softwareUpdateStrategyService; private WindowsLogStrategyService windowsLogStrategyService; private WindowsUpdateStrategyService windowsUpdateStrategyService; private WinsensorManagerStrategyService winsensorManagerStrategyService; private String agentIp; private String windowsLogPath; private String windowsLogPort; @Override public void addStrategy(List<CommBaseStrategy> strategies) { for (CommBaseStrategy commStrategy : strategies) { if (commStrategy instanceof CommHostResourceStrategy) { HostResourceStrategyBO strategy = new HostResourceStrategyBO(); strategy.setUrl(((CommHostResourceStrategy) commStrategy).getUrl()); strategy.setInterval(((CommHostResourceStrategy) commStrategy).getInterval()); strategy.setCreateTime(commStrategy.getCreateTime()); strategy.setIp(commStrategy.getIp()); strategy.setSensorId(commStrategy.getSensorId()); strategy.setRemoteId(commStrategy.getRemoteId()); hostResourceStrategyService.addStrategy((HostResourceStrategyBO) strategy); } else if (commStrategy instanceof CommRegisterStrategy) { RegisterStrategyBO strategy = new RegisterStrategyBO(); strategy.setUrl(((CommRegisterStrategy) commStrategy).getUrl()); strategy.setInterval(((CommRegisterStrategy) commStrategy).getInterval()); strategy.setCreateTime(commStrategy.getCreateTime()); strategy.setIp(commStrategy.getIp()); strategy.setSensorId(commStrategy.getSensorId()); strategy.setRemoteId(commStrategy.getRemoteId()); registerStrategyService.addStrategy((RegisterStrategyBO) strategy); } else if (commStrategy instanceof CommSoftwareUpdateStrategy) { SoftwareUpdateStrategyBO strategy = new SoftwareUpdateStrategyBO(); strategy.setDIp(((CommSoftwareUpdateStrategy) commStrategy).getDIp()); strategy.setDPort(((CommSoftwareUpdateStrategy) commStrategy).getDPort()); strategy.setDInterval(((CommSoftwareUpdateStrategy) commStrategy).getDInterval()); strategy.setRIp(((CommSoftwareUpdateStrategy) commStrategy).getRIp()); strategy.setRPort(((CommSoftwareUpdateStrategy) commStrategy).getRPort()); strategy.setRInterval(((CommSoftwareUpdateStrategy) commStrategy).getRInterval()); strategy.setCreateTime(commStrategy.getCreateTime()); strategy.setIp(commStrategy.getIp()); strategy.setSensorId(commStrategy.getSensorId()); strategy.setRemoteId(commStrategy.getRemoteId()); softwareUpdateStrategyService.addStrategy((SoftwareUpdateStrategyBO) strategy); } else if (commStrategy instanceof CommWindowsLogStrategy) { WindowsLogStrategyBO strategy = new WindowsLogStrategyBO(); String url = ((CommWindowsLogStrategy) commStrategy).getUrl(); if (StringUtils.isBlank(url)) { url = "http://" + agentIp + ":" + windowsLogPort + windowsLogPath; } strategy.setUrl(url); strategy.setInterval(((CommWindowsLogStrategy) commStrategy).getInterval()); strategy.setSystem(((CommWindowsLogStrategy) commStrategy).getSystem()); strategy.setApplication(((CommWindowsLogStrategy) commStrategy).getApplication()); strategy.setSecurity(((CommWindowsLogStrategy) commStrategy).getSecurity()); strategy.setInformation(((CommWindowsLogStrategy) commStrategy).getInformation()); strategy.setWarning(((CommWindowsLogStrategy) commStrategy).getWarning()); strategy.setError(((CommWindowsLogStrategy) commStrategy).getError()); strategy.setASuccess(((CommWindowsLogStrategy) commStrategy).getASuccess()); strategy.setAFailure(((CommWindowsLogStrategy) commStrategy).getAFailure()); strategy.setCreateTime(commStrategy.getCreateTime()); strategy.setIp(commStrategy.getIp()); strategy.setSensorId(commStrategy.getSensorId()); strategy.setRemoteId(commStrategy.getRemoteId()); windowsLogStrategyService.addStrategy((WindowsLogStrategyBO) strategy); } else if (commStrategy instanceof CommWindowsUpdateStrategy) { WindowsUpdateStrategyBO strategy = new WindowsUpdateStrategyBO(); strategy.setUrl(((CommWindowsUpdateStrategy) commStrategy).getUrl()); strategy.setInterval(((CommWindowsUpdateStrategy) commStrategy).getInterval()); strategy.setCreateTime(commStrategy.getCreateTime()); strategy.setIp(commStrategy.getIp()); strategy.setSensorId(commStrategy.getSensorId()); strategy.setRemoteId(commStrategy.getRemoteId()); windowsUpdateStrategyService.addStrategy((WindowsUpdateStrategyBO) strategy); } else if (commStrategy instanceof CommWinsensorManagerStrategy) { WinsensorManagerStrategyBO strategy = new WinsensorManagerStrategyBO(); strategy.setAutoUpdateUrl(((CommWinsensorManagerStrategy) commStrategy).getAutoUpdateUrl()); strategy.setInterval(((CommWinsensorManagerStrategy) commStrategy).getInterval()); strategy.setLocalInterval(((CommWinsensorManagerStrategy) commStrategy).getLocalInterval()); strategy.setEntryPoint(((CommWinsensorManagerStrategy) commStrategy).getEntryPoint()); strategy.setManagerPort(((CommWinsensorManagerStrategy) commStrategy).getManagerPort()); strategy.setOpenTime(((CommWinsensorManagerStrategy) commStrategy).getOpenTime()); strategy.setIsAbleToStopSensor(((CommWinsensorManagerStrategy) commStrategy).getIsAbleToStopSensor()); strategy.setIsAbleToStopService(((CommWinsensorManagerStrategy) commStrategy).getIsAbleToStopService()); strategy.setIsShowTheIcon(((CommWinsensorManagerStrategy) commStrategy).getIsShowTheIcon()); strategy.setCreateTime(commStrategy.getCreateTime()); strategy.setIp(commStrategy.getIp()); strategy.setSensorId(commStrategy.getSensorId()); strategy.setRemoteId(commStrategy.getRemoteId()); winsensorManagerStrategyService.addStrategy((WinsensorManagerStrategyBO) strategy); } } } @Override public List<BaseStrategy> getAllTypeUnissuedStrategy(WinsensorDeviceBO device) { List<BaseStrategy> strategies = new ArrayList<BaseStrategy>(); HostResourceStrategyBO hostResourceStrategy = hostResourceStrategyService.findStrategy( device.getIpAddress(), device.getSensorId(), false); if (hostResourceStrategy != null) { strategies.add(hostResourceStrategy); } RegisterStrategyBO registerStrategy = registerStrategyService.findStrategy( device.getIpAddress(), device.getSensorId(), false); if (registerStrategy != null) { strategies.add(registerStrategy); } SoftwareUpdateStrategyBO softwareUpdateStrategy = softwareUpdateStrategyService.findStrategy( device.getIpAddress(), device.getSensorId(), false); if (softwareUpdateStrategy != null) { strategies.add(softwareUpdateStrategy); } WindowsLogStrategyBO windowsLogStrategy = windowsLogStrategyService.findStrategy( device.getIpAddress(), device.getSensorId(), false); if (windowsLogStrategy != null) { strategies.add(windowsLogStrategy); } WindowsUpdateStrategyBO windowsUpdateStrategy = windowsUpdateStrategyService.findStrategy( device.getIpAddress(), device.getSensorId(), false); if (windowsUpdateStrategy != null) { strategies.add(windowsUpdateStrategy); } WinsensorManagerStrategyBO winsensorManagerStrategy = winsensorManagerStrategyService.findStrategy( device.getIpAddress(), device.getSensorId(), false); if (winsensorManagerStrategy != null) { strategies.add(winsensorManagerStrategy); } return strategies; } @Override public Map<String, List<BaseStrategy>> getAllTypeUnissuedStrategy( List<String> sensorIds) { List<BaseStrategy> allStrategy = new ArrayList<BaseStrategy>(); allStrategy.addAll(hostResourceStrategyService.findAllUnissuedStrategy()); allStrategy.addAll(registerStrategyService.findAllUnissuedStrategy()); allStrategy.addAll(softwareUpdateStrategyService.findAllUnissuedStrategy()); allStrategy.addAll(windowsLogStrategyService.findAllUnissuedStrategy()); allStrategy.addAll(windowsUpdateStrategyService.findAllUnissuedStrategy()); allStrategy.addAll(winsensorManagerStrategyService.findAllUnissuedStrategy()); Map<String, List<BaseStrategy>> temp = new HashMap<String, List<BaseStrategy>>(); for (int i = 0; i < allStrategy.size(); i++) { String sensorId = allStrategy.get(i).getSensorId(); if (sensorIds.contains(sensorId)) { if (temp.containsKey(sensorId)) { temp.get(sensorId).add(allStrategy.get(i)); } else { List<BaseStrategy> strategy = new ArrayList<BaseStrategy>(); strategy.add(allStrategy.get(i)); temp.put(sensorId, strategy); } } } return temp; } @Override public void updateStrategy(List<BaseStrategy> strategies) { for (BaseStrategy strategy : strategies) { if (strategy instanceof HostResourceStrategyBO) { hostResourceStrategyService.updateStrategy((HostResourceStrategyBO) strategy); } else if (strategy instanceof RegisterStrategyBO) { registerStrategyService.updateStrategy((RegisterStrategyBO) strategy); } else if (strategy instanceof SoftwareUpdateStrategyBO) { softwareUpdateStrategyService.updateStrategy((SoftwareUpdateStrategyBO) strategy); } else if (strategy instanceof WindowsLogStrategyBO) { windowsLogStrategyService.updateStrategy((WindowsLogStrategyBO) strategy); } else if (strategy instanceof WindowsUpdateStrategyBO) { windowsUpdateStrategyService.updateStrategy((WindowsUpdateStrategyBO) strategy); } else if (strategy instanceof WinsensorManagerStrategyBO) { winsensorManagerStrategyService.updateStrategy((WinsensorManagerStrategyBO) strategy); } } } public HostResourceStrategyService getHostResourceStrategyService() { return hostResourceStrategyService; } public void setHostResourceStrategyService( HostResourceStrategyService hostResourceStrategyService) { this.hostResourceStrategyService = hostResourceStrategyService; } public RegisterStrategyService getRegisterStrategyService() { return registerStrategyService; } public void setRegisterStrategyService( RegisterStrategyService registerStrategyService) { this.registerStrategyService = registerStrategyService; } public SoftwareUpdateStrategyService getSoftwareUpdateStrategyService() { return softwareUpdateStrategyService; } public void setSoftwareUpdateStrategyService( SoftwareUpdateStrategyService softwareUpdateStrategyService) { this.softwareUpdateStrategyService = softwareUpdateStrategyService; } public WindowsLogStrategyService getWindowsLogStrategyService() { return windowsLogStrategyService; } public void setWindowsLogStrategyService( WindowsLogStrategyService windowsLogStrategyService) { this.windowsLogStrategyService = windowsLogStrategyService; } public WindowsUpdateStrategyService getWindowsUpdateStrategyService() { return windowsUpdateStrategyService; } public void setWindowsUpdateStrategyService( WindowsUpdateStrategyService windowsUpdateStrategyService) { this.windowsUpdateStrategyService = windowsUpdateStrategyService; } public WinsensorManagerStrategyService getWinsensorManagerStrategyService() { return winsensorManagerStrategyService; } public void setWinsensorManagerStrategyService( WinsensorManagerStrategyService winsensorManagerStrategyService) { this.winsensorManagerStrategyService = winsensorManagerStrategyService; } public String getAgentIp() { return agentIp; } public void setAgentIp(String agentIp) { this.agentIp = agentIp; } public String getWindowsLogPath() { return windowsLogPath; } public void setWindowsLogPath(String windowsLogPath) { this.windowsLogPath = windowsLogPath; } public String getWindowsLogPort() { return windowsLogPort; } public void setWindowsLogPort(String windowsLogPort) { this.windowsLogPort = windowsLogPort; } }