package edu.sjtu.infosec.ismp.manager.EM.service.impl; import java.sql.Timestamp; import java.util.List; import edu.sjtu.infosec.ismp.manager.AM.dao.AssetDeviceDao; import edu.sjtu.infosec.ismp.manager.AM.model.AssetDeviceBO; import edu.sjtu.infosec.ismp.manager.EM.dao.IEventcorrruleDao; import edu.sjtu.infosec.ismp.manager.EM.dao.IEventmoniDao; import edu.sjtu.infosec.ismp.manager.EM.dao.IEventrealdispDao; import edu.sjtu.infosec.ismp.manager.EM.dao.impl.EventcorrruleDao; import edu.sjtu.infosec.ismp.manager.EM.dao.impl.EventmoniDao; import edu.sjtu.infosec.ismp.manager.EM.dao.queryCondition.RuleCondition; import edu.sjtu.infosec.ismp.manager.EM.model.Eventcorrrule; import edu.sjtu.infosec.ismp.manager.EM.model.Eventrealdisp; import edu.sjtu.infosec.ismp.manager.EM.service.IEventStatisticsService; /** * 用于页面显示一些统计信息 * @author wudengke 2009-6-8 * */ public class EventStatisticsService implements IEventStatisticsService { //IOC注入 private IEventmoniDao eventmoniDao; public void setEventmoniDao(EventmoniDao eventmoniDao) { this.eventmoniDao = eventmoniDao; } //IOC注入 private IEventrealdispDao eventrealdispDao; public void setEventrealdispDao(IEventrealdispDao eventrealdispDao) { this.eventrealdispDao = eventrealdispDao; } //IOC注入 private IEventcorrruleDao eventcorrruleDao; public void setEventcorrruleDao(EventcorrruleDao eventcorrruleDao) { this.eventcorrruleDao = eventcorrruleDao; } //IOC注入 private AssetDeviceDao assetDeviceDao; public void setAssetDeviceDao(AssetDeviceDao assetDeviceDao) { this.assetDeviceDao = assetDeviceDao; } /** * 统计所有设备ID在时间段内的事件集合(主要实现事件页面拓扑图) * @param starttime * @param endtime * @return 事件监测表信息 */ public List<Object> statisticsFaciid(Timestamp starttime, Timestamp endtime,Integer bureauId) { if (starttime!=null && endtime!=null) { return eventmoniDao.statisticsFaciid(starttime, endtime,bureauId); } return null; } /** * 统计所有设备IP在时间段内的事件集合(主要实现事件页面Top10功能) * @param starttime * @param endtime * @return 事件监测表信息 */ public List<Object> statisticsFaciip(Timestamp starttime, Timestamp endtime,Integer bureauId) { if (starttime!=null && endtime!=null) { return eventmoniDao.statisticsFaciip(starttime, endtime, bureauId); } return null; } /** * 根据传入的规则ID,查询所有符合规则的实时事件 * @param id * @return List<Eventrealdisp>,Eventcorrule,page */ public List<Eventrealdisp> queryEventrealdispByRules(String ruleids,long time,Integer[] bureauIds) { RuleCondition condition = new RuleCondition(); if (ruleids!=null && ruleids.trim().length()>0 && time>0) { String[] ids = ruleids.split(","); List<Eventcorrrule> list = eventcorrruleDao.queryEventcorule(ids); condition = analysisDate(condition,list); condition.setRulelength(time); condition.setBureauId(bureauIds); List<Eventrealdisp> res= eventrealdispDao.queryBycorrrule(condition); return res; } return null; } private RuleCondition analysisDate(RuleCondition condition,List<Eventcorrrule> datas){ for (int i=0;i<datas.size();i++) { if (datas.get(i).getDest_ip().equals("类型相同")){ condition.setDestip_same(true); } if (datas.get(i).getDest_port().equals("类型相同")){ condition.setDestport_same(true); } if (datas.get(i).getCorr_type().equals("类型相同")) { condition.setEventtype_same(true); } if (datas.get(i).getProt_rule().equals("类型相同")) { condition.setProtocol_same(true); } if (datas.get(i).getSrc_ip().equals("类型相同")) { condition.setSrcip_same(true); } } return condition; } // /** // * 查找对应设备IP的资产信息 // * @param faci_id // * @return AssetDeviceBO // */ // public AssetDeviceBO queryAssetDeviceBOByFaciip(String faci_ip,Integer bureauId) { // AssetDeviceBO entity = new AssetDeviceBO(); // entity.setIp(faci_ip); // entity.setLocationId(bureauId); // List<AssetDeviceBO> list = assetDeviceDao.getListByAssetDevice(entity); // if(list.size() > 0 && list != null){ // return list.get(0); // }else{ // return null; // } // } /** * 统计所有安全设备在时间段内的事件集合(实现事件页面安全设备事件总量统计) * @param starttime * @param endtime * @return 事件实时显示表信息 */ public List<Object> staticticsEventType(Timestamp starttime, Timestamp endtime,Integer bureauId) { if (starttime!=null && endtime!=null) { return eventrealdispDao.staticticsEventType(starttime, endtime, bureauId); } return null; } /** * 统计所有事件类型的各分组类型数量(实现安全设备事件类型分类统计) * @param starttime * @param endtime * @return 事件实时显示表信息 */ public List<Object> staticticsSafety(Timestamp starttime, Timestamp endtime, Integer bureauId) { if (starttime!=null && endtime!=null) { return eventrealdispDao.staticticsSafety(starttime, endtime, bureauId); } return null; } }