package com.nis.web.controller; import java.beans.PropertyEditorSupport; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; 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.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.jets3t.service.ServiceException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.ui.Model; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.beust.jcommander.internal.Lists; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.basics.ServiceDictInfo; import com.nis.domain.basics.SysDictInfo; import com.nis.domain.configuration.AreaBean; import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.BaseCfg; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.ComplexStringCfgTemplate; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.RequestInfo; import com.nis.domain.configuration.StringCfgTemplate; import com.nis.domain.configuration.template.IpAllTemplate; import com.nis.domain.configuration.template.IpCfgTemplate; import com.nis.domain.log.BaseLogEntity; import com.nis.domain.log.SearchReport; import com.nis.exceptions.MaatConvertException; import com.nis.util.Configurations; //import com.nis.main.ConvertTool; import com.nis.util.Constants; import com.nis.util.DateUtils; import com.nis.util.DictUtils; import com.nis.util.JsonMapper; import com.nis.util.StringUtil; import com.nis.util.excel.ExportExcel; import com.nis.util.excel.ImportExcel; import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.security.UserUtils; import com.nis.web.service.ArchiveServcie; import com.nis.web.service.AreaService; import com.nis.web.service.DictService; import com.nis.web.service.LogService; import com.nis.web.service.MenuService; import com.nis.web.service.OfficeService; import com.nis.web.service.RoleService; import com.nis.web.service.SystemService; import com.nis.web.service.UserService; import com.nis.web.service.basics.AsnIpCfgService; import com.nis.web.service.basics.PolicyGroupInfoService; import com.nis.web.service.basics.ServiceDictInfoService; import com.nis.web.service.basics.SysDictInfoService; import com.nis.web.service.configuration.AppBuiltInFeatureService; import com.nis.web.service.configuration.AppCfgService; import com.nis.web.service.configuration.AppMultiFeatureCfgService; import com.nis.web.service.configuration.AsnPolicyCfgService; import com.nis.web.service.configuration.AvCfgService; import com.nis.web.service.configuration.AvContentCfgService; import com.nis.web.service.configuration.BgpCfgService; import com.nis.web.service.configuration.ComplexStringCfgService; import com.nis.web.service.configuration.ControlPolicyService; import com.nis.web.service.configuration.DdosCfgService; import com.nis.web.service.configuration.DnsIpCfgService; import com.nis.web.service.configuration.DnsResStrategyService; import com.nis.web.service.configuration.DomainService; import com.nis.web.service.configuration.FileTransferCfgService; import com.nis.web.service.configuration.HttpRedirectCfgService; import com.nis.web.service.configuration.InterceptCfgService; import com.nis.web.service.configuration.IpCfgService; import com.nis.web.service.configuration.IpMultiplexPoolCfgService; import com.nis.web.service.configuration.MailCfgService; import com.nis.web.service.configuration.NumCfgService; import com.nis.web.service.configuration.ProxyFileStrategyService; import com.nis.web.service.configuration.PxyObjKeyringService; import com.nis.web.service.configuration.RequestInfoService; import com.nis.web.service.configuration.WebsiteCfgService; import com.nis.web.service.configuration.XmppCfgService; import com.nis.web.service.configuration.statistics.ConfigureStatisticsService; import com.nis.web.service.specific.SpecificServiceCfgService; import com.nis.web.service.specific.SpecificServiceHostCfgService; import com.nis.web.service.systemService.ServiceConfigInfoService; public class BaseController { @Autowired protected UserService userService; @Autowired protected SystemService systemService; @Autowired protected OfficeService officeService; @Autowired protected AreaService areaService; @Autowired protected RoleService roleService; @Autowired protected MenuService menuService; @Autowired protected LogService logService; @Autowired protected ArchiveServcie archiveServcie; @Autowired protected DictService dictService; @Autowired protected IpCfgService ipCfgService; @Autowired protected DnsIpCfgService dnsIpCfgService; @Autowired protected MailCfgService mailCfgService; @Autowired protected FileTransferCfgService fileTransferCfgService; @Autowired protected AppCfgService appCfgService; @Autowired protected ControlPolicyService controlPolicyService; @Autowired protected ServiceDictInfoService serviceDictInfoService; @Autowired protected SysDictInfoService sysDictInfoService; protected final Logger logger = Logger.getLogger(this.getClass()); @Autowired protected ServiceConfigInfoService serviceConfigInfoService; @Autowired protected RequestInfoService requestInfoService; @Autowired protected DomainService domainService; @Autowired protected NumCfgService numCfgService; @Autowired protected ComplexStringCfgService complexStringCfgService; @Autowired protected SpecificServiceCfgService specificServiceCfgService; @Autowired protected SpecificServiceHostCfgService specificServiceHostCfgService; @Autowired protected AvCfgService avCfgService; @Autowired protected AvContentCfgService avContentCfgService; @Autowired protected WebsiteCfgService websiteCfgService; @Autowired protected BgpCfgService bgpCfgService; @Autowired protected XmppCfgService xmppCfgService; @Autowired protected PolicyGroupInfoService policyGroupInfoService; @Autowired protected DnsResStrategyService dnsResStrategyService; @Autowired protected HttpRedirectCfgService httpRedirectCfgService; @Autowired protected DdosCfgService ddosCfgService; @Autowired protected IpMultiplexPoolCfgService ipMultiplexPoolCfgService; @Autowired protected ConfigureStatisticsService configureStatisticsService; @Autowired protected InterceptCfgService interceptCfgService; @Autowired protected ProxyFileStrategyService proxyFileStrategyService;//代理文件策略service @Autowired protected PxyObjKeyringService pxyObjKeyringService;//拦截策略service @Autowired protected AppBuiltInFeatureService appBuiltInFeatureService;//拦截策略service @Autowired protected AsnIpCfgService asnIpCfgService;//asn ip service @Autowired protected AsnPolicyCfgService asnPolicyCfgService;//asn 策略 service @Autowired protected AppMultiFeatureCfgService appMultiFeatureCfgService; /** * 管理基础路径 */ @Value("${adminPath}") protected String adminPath; /** * 前端基础路径 */ @Value("${frontPath}") protected String frontPath; /** * 前端URL后缀 */ @Value("${urlSuffix}") protected String urlSuffix; /** * 客户端返回JSON字符串 * @param response * @param object * @return */ protected String renderString(HttpServletResponse response, Object object) { return renderString(response, JsonMapper.toJsonString(object), "application/json"); } /** * 客户端返回字符串 * @param response * @param string * @return */ protected String renderString(HttpServletResponse response, String string, String type) { try { response.reset(); response.setContentType(type); response.setCharacterEncoding("utf-8"); response.getWriter().print(string); return null; } catch (IOException e) { return null; } } /** * 添加Model消息 * @param message */ protected void addMessage(Model model, String... messages) { StringBuilder sb = new StringBuilder(); for (String message : messages){ sb.append(message).append(messages.length>1?"
":""); } model.addAttribute("message", sb.toString()); } /** * 添加Model消息 日志用 * @param message */ protected void addMessageLog(Model model, String status) { //status 接口状态码 String messages="search_error"; if(null!=status){ if("400".equals(status)){ messages="data_format_error"; }else if("500".equals(status)){ messages="server_internal_error"; }else if(status.indexOf("request_service_failed")!=-1){ messages="server_internal_error"; } } model.addAttribute("message",messages); } /** * 添加Flash消息 * @param message */ protected void addMessage(RedirectAttributes redirectAttributes, String... messages) { StringBuilder sb = new StringBuilder(); for (String message : messages){ sb.append(message).append(messages.length>1?"
":""); } redirectAttributes.addFlashAttribute("message", sb.toString()); } /** * 初始化数据绑定 * 1. 将所有传递进来的String进行HTML编码,防止XSS攻击 * 2. 将字段中Date类型转换为String类型 */ @InitBinder protected void initBinder(WebDataBinder binder) { // String类型转换,将所有传递进来的String进行HTML编码,防止XSS攻击 binder.registerCustomEditor(String.class, new PropertyEditorSupport() { @Override public void setAsText(String text) { setValue(text == null ? null : StringEscapeUtils.escapeHtml4(text.trim())); } @Override public String getAsText() { Object value = getValue(); return value != null ? value.toString() : ""; } }); // Date 类型转换 binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { @Override public void setAsText(String text) { setValue(DateUtils.parseDate(text)); } }); } protected void initPageCondition(Model model){ List requestInfos=requestInfoService.getAllRequestInfo(); model.addAttribute("requestInfos", requestInfos); List fls=serviceDictInfoService.findAllFlDict(); String pNames=""; for (ServiceDictInfo serviceDictInfo : fls) { pNames=""; pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("fls", fls); List xzs=serviceDictInfoService.findAllXzDict(); for (ServiceDictInfo serviceDictInfo : xzs) { pNames=""; pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("xzs", xzs); List lables=serviceDictInfoService.findAllLableDict(); for (ServiceDictInfo serviceDictInfo : lables) { pNames=""; pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("lables", lables); } protected void initPageCondition(Model model,BaseCfg cfg){ List requestInfos=requestInfoService.getAllRequestInfo(); model.addAttribute("requestInfos", requestInfos); List fls=serviceDictInfoService.findAllFlDict(); String pNames=""; for (ServiceDictInfo serviceDictInfo : fls) { pNames=""; pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("fls", fls); List xzs=serviceDictInfoService.findAllXzDict(); for (ServiceDictInfo serviceDictInfo : xzs) { pNames=""; pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("xzs", xzs); List lables=serviceDictInfoService.findAllLableDict(); for (ServiceDictInfo serviceDictInfo : lables) { pNames=""; pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("lables", lables); List regionList = DictUtils.getFunctionRegionDictList(cfg.getFunctionId()); model.addAttribute("regionList", regionList); List serviceList = DictUtils.getFunctionServiceDictList(cfg.getFunctionId()); model.addAttribute("serviceList", serviceList); } protected void initReportCondition(Model model,SearchReport report){ List serviceList = DictUtils.getFunctionServiceDictList(report.getFunctionId()); model.addAttribute("serviceList", serviceList); if (StringUtils.isBlank(report.getReportTime())) { report.setReportTime(DateUtils.formatDate(new Date(), "yyyy-MM-dd")); } if (report.getReportType() == null) { report.setReportType(1); } } protected void initFormCondition(Model model){ List requestInfos=requestInfoService.getValidRequestInfo(); model.addAttribute("requestInfos", requestInfos); List fls=serviceDictInfoService.findFlDict(); String pNames=""; for (ServiceDictInfo serviceDictInfo : fls) { pNames=""; pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("fls", fls); List xzs=serviceDictInfoService.findXzDict(); for (ServiceDictInfo serviceDictInfo : xzs) { pNames=""; pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("xzs", xzs); List lables=serviceDictInfoService.findLableDict(); for (ServiceDictInfo serviceDictInfo : lables) { pNames=""; pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("lables", lables); List itTypeList=new ArrayList(); itTypeList.add(Constants.ITEM_TYPE_AREA); List areas = sysDictInfoService.findAllSysDictInfo(new SysDictInfo(),itTypeList,null); model.addAttribute("areas", areas); itTypeList.clear(); itTypeList.add(Constants.ITEM_TYPE_ISP); List isps = sysDictInfoService.findAllSysDictInfo(new SysDictInfo(),itTypeList,null); model.addAttribute("isps", isps); //初始化一个默认的地域ip给界面 AreaIpCfg areaIpCfg=new AreaIpCfg(); areaIpCfg.initDefaultValue(); model.addAttribute("_areaCfg", areaIpCfg); } protected void initFormCondition(Model model,BaseCfg cfg){ List requestInfos=requestInfoService.getValidRequestInfo(); model.addAttribute("requestInfos", requestInfos); List fls=serviceDictInfoService.findFlDict(); String pNames=""; for (ServiceDictInfo serviceDictInfo : fls) { pNames=""; pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("fls", fls); List xzs=serviceDictInfoService.findXzDict(); for (ServiceDictInfo serviceDictInfo : xzs) { pNames=""; pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("xzs", xzs); List lables=serviceDictInfoService.findLableDict(); for (ServiceDictInfo serviceDictInfo : lables) { pNames=""; pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("lables", lables); List itTypeList=new ArrayList(); itTypeList.add(Constants.ITEM_TYPE_AREA); List areas = sysDictInfoService.findAllSysDictInfo(new SysDictInfo(),itTypeList,null); model.addAttribute("areas", areas); itTypeList.clear(); itTypeList.add(Constants.ITEM_TYPE_ISP); List isps = sysDictInfoService.findAllSysDictInfo(new SysDictInfo(),itTypeList,null); model.addAttribute("isps", isps); //初始化一个默认的地域ip给界面 AreaIpCfg areaIpCfg=new AreaIpCfg(); areaIpCfg.initDefaultValue(); model.addAttribute("_areaCfg", areaIpCfg); List regionList = DictUtils.getFunctionRegionDictList(cfg.getFunctionId()); model.addAttribute("regionList", regionList); List serviceList = DictUtils.getFunctionServiceDictList(cfg.getFunctionId()); model.addAttribute("serviceList", serviceList); //ip配置设置protocolId if(cfg instanceof BaseIpCfg){ for(FunctionServiceDict dict:serviceList){ if(cfg.getFunctionId().intValue()==dict.getFunctionId().intValue()){ ((BaseIpCfg) cfg).setProtocolId(dict.getProtocolId().intValue()); break; } } } } protected void initUpdateFormCondition(Model model,BaseCfg cfg){ List itTypeList=new ArrayList(); itTypeList.add(Constants.ITEM_TYPE_AREA); List areas = sysDictInfoService.findAllSysDictInfo(new SysDictInfo(),itTypeList,null); model.addAttribute("areas", areas); itTypeList.clear(); itTypeList.add(Constants.ITEM_TYPE_ISP); List isps = sysDictInfoService.findAllSysDictInfo(new SysDictInfo(),itTypeList,null); model.addAttribute("isps", isps); //查询配置对应的地域ip if(cfg.getCompileId()!=null) { List areaCfgs=ipCfgService.getAreaCfgByCompileId(cfg.getCompileId()); model.addAttribute("areaCfgs", areaCfgs); StringBuffer areaCfgIds=new StringBuffer(); for(AreaIpCfg areaCfg:areaCfgs){ areaCfgIds.append(areaCfg.getCfgId()+","); } //update时判断是否有删除地域ip model.addAttribute("areaCfgIds", areaCfgIds.toString()); } //初始化一个默认的地域ip给界面 AreaIpCfg areaIpCfg=new AreaIpCfg(); areaIpCfg.initDefaultValue(); model.addAttribute("_areaCfg", areaIpCfg); //从区域生效ID中获取区域与运营商 String areaEffectiveIds=cfg.getAreaEffectiveIds(); List areaIspList=new ArrayList(); getAreaIsps(areaEffectiveIds,areaIspList,isps,areas); model.addAttribute("_areaIsps", areaIspList); List requestInfos=requestInfoService.getValidRequestInfo();//只查询有效的 model.addAttribute("requestInfos", requestInfos); List fls=serviceDictInfoService.findFlDict();//只查询有效分类字典 String pNames=""; for (ServiceDictInfo serviceDictInfo : fls) { pNames=""; pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("fls", fls); List xzs=serviceDictInfoService.findXzDict();//只查询有效性质字典 for (ServiceDictInfo serviceDictInfo : xzs) { pNames=""; pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("xzs", xzs); List lables=serviceDictInfoService.findLableDict();//只查询有效标签字典 for (ServiceDictInfo serviceDictInfo : lables) { pNames=""; pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames); serviceDictInfo.setpNames(pNames); } model.addAttribute("lables", lables); List regionList = DictUtils.getFunctionRegionDictList(cfg.getFunctionId()); model.addAttribute("regionList", regionList); List serviceList = DictUtils.getFunctionServiceDictList(cfg.getFunctionId()); model.addAttribute("serviceList", serviceList); } public List getAreaIsps(String areaEffectiveIds,List areaIspList,List isps,List areas) { Map areaMap=new HashMap(); for (SysDictInfo areaDict : areas) { areaMap.put(areaDict.getItemCode(), areaDict); } Map ispMap=new HashMap(); for (SysDictInfo ispDict : isps) { ispMap.put(ispDict.getItemCode(), ispDict); } // : 存在冒号,则冒号前为area后为isp;不存在冒号,判断id是否为isp,否则为area if(StringUtils.isNotBlank(areaEffectiveIds)){ String[] areaIsps=areaEffectiveIds.split(","); for(String areaIsp:areaIsps){ AreaBean area=new AreaBean(); if(areaIsp.contains(":")){ area.setArea(areaIsp.split(":")[0]); area.setIsp(areaIsp.split(":")[1]); area.setAreaName(areaMap.get(areaIsp.split(":")[0]).getItemValue()); area.setIspName(ispMap.get(areaIsp.split(":")[1]).getItemValue()); }else{ if(ispMap.keySet().contains(areaIsp)){ area.setIsp(areaIsp); area.setIspName(ispMap.get(areaIsp).getItemValue()); area.setAreaName(""); }else{ area.setArea(areaIsp); area.setIspName(""); area.setAreaName(areaMap.get(areaIsp).getItemValue()); } } areaIspList.add(area); } } return areaIspList; } /** * 获取国际化配置文件 * @return */ public Properties getMsgProp(){ Properties msgProp = new Properties(); try { String language = LocaleContextHolder.getLocale().getLanguage(); if(language.equals("zh_cn")||language.equals("zh")){ msgProp.load(Configurations.class.getResourceAsStream("/messages/message_zh_CN.properties")); }else if(language.equals("ru")){ msgProp.load(Configurations.class.getResourceAsStream("/messages/message_ru.properties")); }else{ msgProp.load(Configurations.class.getResourceAsStream("/messages/message_en.properties")); } } catch (Exception e) { msgProp = null; logger.error("未知i18n消息配置文件,请确定文件是否存在!",e); } return msgProp; } public void importCfgTemplate(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode){ Properties msgProp = getMsgProp(); try { List dictList = DictUtils.getFunctionRegionDictList(functionId); for(FunctionRegionDict dict:dictList){ if(dict.getConfigRegionCode()==cfgRegionCode){ String fileName = dict.getConfigRegionValue()+".xlsx"; if(dict.getRegionType()==1){ List list = Lists.newArrayList(); list.add(new IpCfgTemplate()); new ExportExcel(new FunctionRegionDict(),msgProp,null, IpCfgTemplate.class, 2).setDataList(msgProp,list,null). write(request,response, fileName).dispose(); }else if(dict.getRegionType()==2){ List list = Lists.newArrayList(); list.add(new StringCfgTemplate()); new ExportExcel(new FunctionRegionDict(),msgProp,null, StringCfgTemplate.class, 2).setDataList(msgProp,list,null). write(request,response, fileName).dispose(); }else if(dict.getRegionType()==3){ List list = Lists.newArrayList(); list.add(new ComplexStringCfgTemplate()); new ExportExcel(new FunctionRegionDict(),msgProp,null, ComplexStringCfgTemplate.class, 2).setDataList(msgProp,list,null). write(request,response, fileName).dispose(); } } } } catch (Exception e) { msgProp = null; e.printStackTrace(); } } public void importCfgTemplate(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode,Class clazz){ Properties msgProp = getMsgProp(); try { List dictList = DictUtils.getFunctionRegionDictList(functionId); for(FunctionRegionDict dict:dictList){ if(dict.getConfigRegionCode()==cfgRegionCode){ String fileName = dict.getConfigRegionValue()+".xlsx"; if(dict.getRegionType()==1){ List list = Lists.newArrayList(); list.add((IpCfgTemplate)clazz.newInstance()); new ExportExcel(new FunctionRegionDict(),msgProp,null, clazz, 2).setDataList(msgProp,list,null). write(request,response, fileName).dispose(); }else if(dict.getRegionType()==2){ List list = Lists.newArrayList(); list.add(new StringCfgTemplate()); new ExportExcel(new FunctionRegionDict(),msgProp,null, clazz, 2).setDataList(msgProp,list,null). write(request,response, fileName).dispose(); }else if(dict.getRegionType()==3){ List list = Lists.newArrayList(); list.add(new ComplexStringCfgTemplate()); new ExportExcel(new FunctionRegionDict(),msgProp,null, clazz, 2).setDataList(msgProp,list,null). write(request,response, fileName).dispose(); } } } } catch (Exception e) { msgProp = null; e.printStackTrace(); } } public void setLogAction(BaseLogEntity log,List serviceList) { if(!StringUtil.isEmpty(serviceList)){ for (FunctionServiceDict dict : serviceList) { if (dict.getServiceId().intValue() == log.getService()) { log.setAction(dict.getAction()); } } } } //初始化查询值判断 public void initLogSearchValue(BaseLogEntity entry,Map params){ if (StringUtils.isNotBlank(entry.getSearchFoundStartTime())&&StringUtils.isNotBlank(entry.getSearchFoundEndTime())) { params.put("searchFoundStartTime", entry.getSearchFoundStartTime()); params.put("searchFoundEndTime", entry.getSearchFoundEndTime()); }else{ // 判断是否是从配置界面过来的日志查询 if(StringUtils.isNotBlank(entry.getIsLogTotalSearch())) { Calendar time = Calendar.getInstance(); time.add(Calendar.MINUTE, -5); String searchEndTime = DateUtils.formatDateTime(time.getTime()); params.put("searchFoundEndTime",searchEndTime); entry.setSearchFoundEndTime(searchEndTime); time.add(Calendar.MINUTE, -5); String searchStartTime = DateUtils.formatDateTime(time.getTime()); params.put("searchFoundStartTime", searchStartTime); entry.setSearchFoundStartTime(searchStartTime); // 判断startTime是否有值 /*if(StringUtils.isNotBlank(Constants.LOG_TIME_START)) { String endTime = Constants.LOG_TIME_END; if(StringUtils.isBlank(endTime)) { endTime = DateUtils.getDateTime(); } params.put("searchFoundStartTime", Constants.LOG_TIME_START); params.put("searchFoundEndTime",endTime ); entry.setSearchFoundStartTime(Constants.LOG_TIME_START); entry.setSearchFoundEndTime(endTime); }else { Calendar startTimeCal = Calendar.getInstance(); if(StringUtils.isNotEmpty(entry.getDate())) { startTimeCal.setTimeInMillis(Long.parseLong(entry.getDate()));// 同步日志总量查询时间 } // 时间间隔 int interval = Constants.LOG_TIME_RANGE/1000/60; if(interval < 60) { // 查询上一个5分钟 startTimeCal.set(Calendar.SECOND, 0); int minute = startTimeCal.get(Calendar.MINUTE); startTimeCal.set(Calendar.MINUTE, minute/interval*interval); }else { // 查询上一个1小时 startTimeCal.set(Calendar.SECOND, 0); startTimeCal.set(Calendar.MINUTE, 0); } Calendar endTimeCal = Calendar.getInstance(); endTimeCal.setTimeInMillis(startTimeCal.getTimeInMillis()); //endTimeCal.add(Calendar.SECOND, -1); startTimeCal.add(Calendar.MINUTE, -interval); //开始时间减去时间间隔 String searchStartTime = DateUtils.formatDateTime(startTimeCal.getTime()); String searchEndTime = DateUtils.formatDateTime(endTimeCal.getTime()); params.put("searchFoundStartTime", searchStartTime); params.put("searchFoundEndTime",searchEndTime); entry.setSearchFoundStartTime(searchStartTime); entry.setSearchFoundEndTime(searchEndTime); }*/ }else { //设置默认查询当前时间及前五分钟 String endTime = DateUtils.getDateTime(); Date dateStart = new Date(new Date().getTime() - Constants.LOG_TIME_INTERVAL); String startTime = DateUtils.formatDateTime(dateStart); params.put("searchFoundStartTime", startTime); params.put("searchFoundEndTime",endTime ); entry.setSearchFoundStartTime(startTime); entry.setSearchFoundEndTime(endTime); } logger.info("searchFoundStartTime:"+params.get("searchFoundStartTime")); logger.info("searchFoundEndTime:"+params.get("searchFoundEndTime")); } if (StringUtils.isNotBlank(entry.getTransProto())) { params.put("searchTransProto", entry.getTransProto()); } if (entry.getService()!=null) { params.put("searchService", entry.getService()); } else if (entry.getAction()!=null) { List serviceList = DictUtils.getFunctionServiceDictList(entry.getFunctionId()); for (FunctionServiceDict dict : serviceList) { if (dict.getAction().intValue() == entry.getAction().intValue() && dict.getFunctionId().intValue() == entry.getFunctionId().intValue()) { entry.setService(dict.getServiceId()); params.put("searchService", dict.getServiceId()); } } } if (StringUtils.isNotBlank(entry.getdIp())) { params.put("searchDIp", entry.getdIp()); } if (StringUtils.isNotBlank(entry.getsIp())) { params.put("searchSIp", entry.getsIp()); } if (StringUtils.isNotBlank(entry.getCapIp())) { params.put("searchCapIp", entry.getCapIp()); } if (entry.getDirection()!=null) { params.put("searchDirection", entry.getDirection()); } if (entry.getEntranceId()!=null) { params.put("searchEntranceId", entry.getEntranceId()); } if (entry.getCfgId()!=null) { params.put("searchCfgId", entry.getCfgId()); } } public List checkIpCfg(FunctionServiceDict serviceDict,FunctionRegionDict regionDict,List list) throws ServiceException{ List ipList=new ArrayList(); Properties prop=this.getMsgProp(); for (int i = 0; i < list.size(); i++) { IpAllTemplate ipCfg=list.get(i); IpPortCfg baseIpCfg=new IpPortCfg(); baseIpCfg.setCfgDesc(ipCfg.getCfgDesc()); if(regionDict.getIsMaat().equals(1)){ if(regionDict.getRegionType().equals(1)){ boolean srcIpEmpty=false; boolean srcPortEmpty=false; if(StringUtil.isEmpty(ipCfg.getSrcIpAddress())){ srcIpEmpty=true; } if(StringUtil.isEmpty(ipCfg.getDestIpAddress())){ if(srcIpEmpty){ baseIpCfg.setSrcIpAddress("0.0.0.0"); baseIpCfg.setDestIpAddress("0.0.0.0"); baseIpCfg.setIpPattern(3); baseIpCfg.setIpType(4); }else{ if(ipCfg.getSrcIpAddress().indexOf(":") > -1){ if(ipCfg.getSrcIpAddress().indexOf("-") > -1){ baseIpCfg.setSrcIpAddress(ipCfg.getSrcIpAddress()); baseIpCfg.setDestIpAddress("::-::"); baseIpCfg.setIpPattern(2); }else if(ipCfg.getSrcIpAddress().indexOf("/") > -1){ baseIpCfg.setSrcIpAddress(ipCfg.getSrcIpAddress()); baseIpCfg.setDestIpAddress("::/128"); baseIpCfg.setIpPattern(1); }else{ baseIpCfg.setSrcIpAddress(ipCfg.getSrcIpAddress()); baseIpCfg.setDestIpAddress("::"); baseIpCfg.setIpPattern(3); } baseIpCfg.setIpType(6); }else{ if(ipCfg.getSrcIpAddress().indexOf("-") > -1){ baseIpCfg.setSrcIpAddress("0.0.0.0-"+ipCfg.getSrcIpAddress().split("-")[0].substring(0,ipCfg.getSrcIpAddress().indexOf("-")+1)+ipCfg.getSrcIpAddress().split("-")[1]); baseIpCfg.setDestIpAddress("0.0.0.0-0.0.0.0"); baseIpCfg.setIpPattern(2); }else if(ipCfg.getSrcIpAddress().indexOf("/") > -1){ baseIpCfg.setSrcIpAddress(ipCfg.getSrcIpAddress()); baseIpCfg.setDestIpAddress("0.0.0.0/16"); baseIpCfg.setIpPattern(1); }else{ baseIpCfg.setSrcIpAddress(ipCfg.getSrcIpAddress()); baseIpCfg.setDestIpAddress("0.0.0.0"); baseIpCfg.setIpPattern(3); } baseIpCfg.setIpType(4); } } } else{ if(srcIpEmpty){ if(ipCfg.getDestIpAddress().indexOf(":") > -1){ if(ipCfg.getDestIpAddress().indexOf("-") > -1){ baseIpCfg.setDestIpAddress(ipCfg.getDestIpAddress()); baseIpCfg.setSrcIpAddress("::-::"); baseIpCfg.setIpPattern(2); }else if(ipCfg.getDestIpAddress().indexOf("/") > -1){ baseIpCfg.setDestIpAddress(ipCfg.getDestIpAddress()); baseIpCfg.setSrcIpAddress("::/128"); baseIpCfg.setIpPattern(1); }else{ baseIpCfg.setDestIpAddress(ipCfg.getDestIpAddress()); baseIpCfg.setSrcIpAddress("::"); baseIpCfg.setIpPattern(3); } baseIpCfg.setIpType(6); }else{ if(ipCfg.getDestIpAddress().indexOf("-") > -1){ baseIpCfg.setDestIpAddress("0.0.0.0-"+ipCfg.getDestIpAddress().split("-")[0].substring(0,ipCfg.getDestIpAddress().indexOf("-")+1)+ipCfg.getDestIpAddress().split("-")[1]); baseIpCfg.setSrcIpAddress("0.0.0.0-0.0.0.0"); baseIpCfg.setIpPattern(2); }else if(ipCfg.getDestIpAddress().indexOf("/") > -1){ baseIpCfg.setDestIpAddress(ipCfg.getDestIpAddress()); baseIpCfg.setSrcIpAddress("0.0.0.0/16"); baseIpCfg.setIpPattern(1); }else{ baseIpCfg.setDestIpAddress(ipCfg.getDestIpAddress()); baseIpCfg.setSrcIpAddress("0.0.0.0"); baseIpCfg.setIpPattern(3); } baseIpCfg.setIpType(4); } }else{ baseIpCfg.setSrcIpAddress(ipCfg.getSrcIpAddress()); baseIpCfg.setDestIpAddress(ipCfg.getDestIpAddress()); if(ipCfg.getSrcIpAddress().indexOf(":") > -1){ baseIpCfg.setIpType(6); }else{ baseIpCfg.setIpType(4); } if(ipCfg.getSrcIpAddress().indexOf("-") > -1){ baseIpCfg.setIpPattern(2); }else if(ipCfg.getSrcIpAddress().indexOf("/") > -1){ baseIpCfg.setIpPattern(1); }else{ baseIpCfg.setIpPattern(3); } } } //TODO 判断源IP和目的IP的值 //TODO 判断源IP和目的IP格式 if(StringUtil.isEmpty(ipCfg.getSrcPort())){ srcPortEmpty=true; } if(StringUtil.isEmpty(ipCfg.getDestPort())){ if(srcPortEmpty){ baseIpCfg.setSrcPort("0"); baseIpCfg.setDestPort("0"); baseIpCfg.setPortPattern(1); }else{ if(ipCfg.getSrcPort().indexOf("/") > -1){ baseIpCfg.setDestPort("0/0"); baseIpCfg.setPortPattern(2); }else{ baseIpCfg.setDestPort("0"); baseIpCfg.setPortPattern(1); } baseIpCfg.setSrcPort(ipCfg.getSrcPort()); } }else{ if(srcPortEmpty){ if(ipCfg.getDestPort().indexOf("/") > -1){ baseIpCfg.setSrcPort("0/0"); baseIpCfg.setPortPattern(2); }else{ baseIpCfg.setSrcPort("0"); baseIpCfg.setPortPattern(1); } baseIpCfg.setDestPort(ipCfg.getSrcPort()); }else{ if(ipCfg.getSrcPort().indexOf("/") > -1){ baseIpCfg.setPortPattern(2); }else{ baseIpCfg.setPortPattern(1); } baseIpCfg.setSrcPort(ipCfg.getSrcPort()); baseIpCfg.setDestPort(ipCfg.getDestPort()); } } //TODO 判断源端口和目的端口格式 //TODO 判断源和目的端口的值 if(StringUtil.isEmpty(ipCfg.getProtocol())){ if(StringUtil.isEmpty(regionDict.getConfigProtocol())){ baseIpCfg.setProtocol(0); }else{ baseIpCfg.setProtocol(Integer.parseInt(regionDict.getConfigProtocol().split(",")[0])); } baseIpCfg.setProtocolId(serviceDict.getProtocolId()); }else{ baseIpCfg.setProtocol(ipCfg.getProtocol()); baseIpCfg.setProtocolId(serviceDict.getProtocolId()); } //TODO 判断Protocol的值 if(StringUtil.isEmpty(ipCfg.getDirection())){ if(StringUtil.isEmpty(regionDict.getConfigDirection())){ baseIpCfg.setDirection(0); }else{ baseIpCfg.setDirection(Integer.parseInt(regionDict.getConfigDirection().split(",")[0])); } }else{ baseIpCfg.setDirection(ipCfg.getDirection()); } //TODO 判断Direction的值 } } ipList.add(baseIpCfg); } return ipList; /*List ipTypeList = DictUtils.getDictList("IP_TYPE"); List ipPatternList = DictUtils.getDictList("IP_PATTERN"); List portPatternList = DictUtils.getDictList("PORT_PATTERN"); List directionList = DictUtils.getDictList("DIRECTION"); List protocolList = DictUtils.getDictList("PROTOCOL"); List ipsecProrocolList = DictUtils.getDictList("IPSEC_PROTOCOL"); List tunnelProrocolList = DictUtils.getDictList("TUNNEL_PROTOCOL"); List specialFunctionIdList = DictUtils.getDictList("SPECIAL_FUNCTION_ID"); List irTypeList = DictUtils.getDictList("IR_TYPE"); String specialItem=null; for(SysDataDictionaryItem sfuncItem:specialFunctionIdList){ if(functionId==Integer.parseInt(sfuncItem.getItemCode())){ specialItem=sfuncItem.getItemValue(); } } if("ipaddr".equals(specialItem)){ List icmpprotocolList = DictUtils.getDictList("ICMP_PROTOCOL"); if(action==Constants.DROP_ACTION) { protocolList.addAll(icmpprotocolList); } } StringBuffer msg=new StringBuffer(); int line=1; for(IpCfgTemplate value:list){ String lineStart=String.format(prop.getProperty("line"), line)+":"; StringBuffer errInfo=new StringBuffer(); // ip_type check start Integer ipType=value.getIpType(); if(ipType==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ip_type"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem ipTypeItem:ipTypeList){ if(ipType==Integer.parseInt(ipTypeItem.getItemCode())){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ip_type"))+";"); } } // ip_type check end // ip_pattern check start Integer ipPattern=value.getIpPattern(); if(ipPattern==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ip_pattern"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem ipPatternItem:ipPatternList){ if(ipPattern==Integer.parseInt(ipPatternItem.getItemCode())){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ip_pattern"))+";"); } } // ip_pattern check end //client_ip check start String srcIp=value.getSrcIpAddress(); String _msg=""; if("ipmulitiplex".equals(specialItem)) { _msg=checkIP(prop,prop.getProperty("IP"),srcIp,ipType,ipPattern); }else { _msg=checkIP(prop,prop.getProperty("client_ip"),srcIp,ipType,ipPattern); } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //client_ip check end //server_ip check start String destIp=value.getDestIpAddress(); if("ipmulitiplex".equals(specialItem)) {//set 默认值 if(ipPattern!=null&&ipType!=null) { if(1==ipPattern.intValue()) { if(4==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); }else if(6==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_SUBNET_VALUE); }else if(46==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_SUBNET_VALUE); }else if(64==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); }else if(10==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); } }else if(2==ipPattern.intValue()) { if(4==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); }else if(6==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_RANGE_VALUE); }else if(46==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_RANGE_VALUE); }else if(64==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); }else if(10==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); } }else if(3==ipPattern.intValue()) { if(4==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); }else if(6==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_VALUE); }else if(46==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_VALUE); }else if(64==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); }else if(10==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); } } } }else { if(srcIp.equals(destIp)){ String info=String.format(prop.getProperty("are_the_same"),prop.getProperty("client_ip"),prop.getProperty("server_ip")); errInfo.append(info+";"); } _msg=checkIP(prop,prop.getProperty("server_ip"),destIp,ipType,ipPattern); if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } } if(!"ipmulitiplex".equals(specialItem)&&(46==ipType.intValue()||64==ipType.intValue()||10==ipType.intValue())) { _msg=checkIp(prop, prop.getProperty("client_ip"), srcIp, prop.getProperty("server_ip"), destIp, ipType, ipPattern); if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } } //server_ip check end //port_pattern check start Integer portPattern=value.getPortPattern(); if(portPattern==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("port_pattern"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem portPatternItem:portPatternList){ if(portPattern==Integer.parseInt(portPatternItem.getItemCode())){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("port_pattern"))+";"); } } //port_pattern check end //src_port check start String srcPort=value.getSrcPort(); if("ipmulitiplex".equals(specialItem)) { _msg=checkPort(prop,prop.getProperty("port"), srcPort, portPattern); }else { _msg=checkPort(prop,prop.getProperty("client_port"), srcPort, portPattern); } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //src_port check end //dest_port check start String destPort=value.getDestPort(); if("ipmulitiplex".equals(specialItem)) {//set 默认值 if(portPattern!=null) { if(2==portPattern.intValue()) { value.setDestPort(Constants.PORT_MASK_DEFAULT); }else if(1==portPattern.intValue()) { value.setDestPort(Constants.PORT_DEFAULT); } } }else { _msg=checkPort(prop,prop.getProperty("server_port"), destPort, portPattern); } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //dest_port check end //direction check start Integer direction=value.getDirection(); if(direction==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("direction"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem directionItem:directionList){ if(Integer.parseInt(directionItem.getItemCode())==direction.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("direction"))+";"); } } //direction check end //protocol check start Integer protocol= value.getProtocol(); if(protocol==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("protocol"))+";"); }else{ if(specialItem!=null&&("ipsec".equals(specialItem)||"tunnel".equals(specialItem))){ if("ipsec".equals(specialItem)){ if(action==Constants.DROP_ACTION.intValue()) { boolean has=false; for(SysDataDictionaryItem protocolItem:ipsecProrocolList){ if(Integer.parseInt(protocolItem.getItemCode())==protocol.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("protocol"))+";"); } }else { if(protocol!=0) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("protocol"))+";"); } } }else if("tunnel".equals(specialItem)){ for(SysDataDictionaryItem protocolItem:tunnelProrocolList){ if("default".equals(protocolItem.getItemValue())){ if(protocol.intValue()!=Integer.parseInt(protocolItem.getItemCode())){ errInfo.append(String.format(prop.getProperty("must_be"), prop.getProperty("protocol"),Integer.parseInt(protocolItem.getItemCode()))+";"); } break; } } } }else{ boolean has=false; for(SysDataDictionaryItem protocolItem:protocolList){ if(Integer.parseInt(protocolItem.getItemCode())==protocol.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("protocol"))+";"); } } } //protocol check end // requestId check start Integer requestId=value.getRequestId(); if(requestId==null){ if("whitelistip".equals(specialItem)) { value.setRequestId(0); }else { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("letter"))+";"); } }else{//查询数据库是否存在ID if("whitelistip".equals(specialItem)) { value.setRequestId(0); }else { RequestInfo info=requestInfoService.getRequestInfoById((long)requestId.intValue()); if(info==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),requestId, prop.getProperty("letter"))+";"); }else if(info.getIsValid()==Constants.VALID_NO||info.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),requestId, prop.getProperty("letter"))+";"); } } } // requestId check end //classification check start String classification=value.getClassify(); if(StringUtils.isNotBlank(classification)){ try{ for(String classify:classification.split(",")){ if(StringUtils.isNotBlank(classify)){ int c=Integer.parseInt(classify); ServiceDictInfo dict=serviceDictInfoService.getDictById(c); if(dict==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),classify, prop.getProperty("classification"))+";"); }else if(dict.getIsValid()==Constants.VALID_NO||dict.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),classify, prop.getProperty("classification"))+";"); } } } }catch (Exception e) { // TODO: handle exception errInfo.append(String.format(prop.getProperty("num_split_by_comma"), prop.getProperty("classification"))+";"); } } //classification check end //attribute check start String attributes=value.getAttribute(); if(StringUtils.isNotBlank(attributes)){ try{ for(String attribute:attributes.split(",")){ if(StringUtils.isNotBlank(attribute)){ int c=Integer.parseInt(attribute); ServiceDictInfo dict=serviceDictInfoService.getDictById(c); if(dict==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),attribute, prop.getProperty("attribute"))+";"); }else if(dict.getIsValid()==Constants.VALID_NO||dict.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),attribute, prop.getProperty("attribute"))+";"); } } } }catch (Exception e) { // TODO: handle exception errInfo.append(String.format(prop.getProperty("num_split_by_comma"), prop.getProperty("attribute"))+";"); } } //attribute check end //attribute check start String labels=value.getLable(); if(StringUtils.isNotBlank(labels)){ try{ for(String label:labels.split(",")){ if(StringUtils.isNotBlank(label)){ int c=Integer.parseInt(label); ServiceDictInfo dict=serviceDictInfoService.getDictById(c); if(dict==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),label, prop.getProperty("label"))+";"); }else if(dict.getIsValid()==Constants.VALID_NO||dict.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),label, prop.getProperty("label"))+";"); } } } }catch (Exception e) { // TODO: handle exception errInfo.append(String.format(prop.getProperty("num_split_by_comma"), prop.getProperty("label"))+";"); } } //group and ir_type check start if("ipmulitiplex".equals(specialItem)) { Integer irType= value.getIrType(); if(irType==null) { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ir_type"))+";"); }else { boolean has=false; for(SysDataDictionaryItem irTypeItem:irTypeList){ if(Integer.parseInt(irTypeItem.getItemCode())==irType.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ir_type"))+";"); } } Integer dnsStrategyId=value.getDnsStrategyId(); if(dnsStrategyId==null) { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("group_name"))+";"); }else { PolicyGroupInfo group=policyGroupInfoService.getById(dnsStrategyId.intValue()); if(group==null) { errInfo.append(String.format(prop.getProperty("id_not_exists"),dnsStrategyId, prop.getProperty("group_name"))+";"); }else if(group.getIsValid()==Constants.VALID_DEL||group.getIsValid()==Constants.VALID_NO) { errInfo.append(String.format(prop.getProperty("id_not_valid"),dnsStrategyId, prop.getProperty("group_name"))+";"); } } } if("ipratelimit".equals(specialItem)) { String ratelimit=value.getRatelimit(); if(ratelimit==null) { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ratelimit"))+";"); }else { try { if(Double.parseDouble(ratelimit)<0||Double.parseDouble(ratelimit)>1) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ratelimit_limit"))+";"); } }catch (Exception e) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ratelimit_limit"))+";"); } } } //attribute check end if(StringUtils.isNotBlank(errInfo.toString())){ msg.append(lineStart).append(errInfo); if(line"); } } //group and ir_type check end line++; } if(StringUtils.isNotBlank(msg.toString())){ throw new MaatConvertException(prop.getProperty("save_failed")+"
"+msg.toString()); }*/ } public void checkIpCfg(int action,int functionId ,List list) throws ServiceException{ Properties prop=this.getMsgProp(); List ipTypeList = DictUtils.getDictList("IP_TYPE"); List ipPatternList = DictUtils.getDictList("IP_PATTERN"); List portPatternList = DictUtils.getDictList("PORT_PATTERN"); List directionList = DictUtils.getDictList("DIRECTION"); List protocolList = DictUtils.getDictList("PROTOCOL"); List ipsecProrocolList = DictUtils.getDictList("IPSEC_PROTOCOL"); List tunnelProrocolList = DictUtils.getDictList("TUNNEL_PROTOCOL"); List specialFunctionIdList = DictUtils.getDictList("SPECIAL_FUNCTION_ID"); List irTypeList = DictUtils.getDictList("IR_TYPE"); String specialItem=null; for(SysDataDictionaryItem sfuncItem:specialFunctionIdList){ if(functionId==Integer.parseInt(sfuncItem.getItemCode())){ specialItem=sfuncItem.getItemValue(); } } if("ipaddr".equals(specialItem)){ List icmpprotocolList = DictUtils.getDictList("ICMP_PROTOCOL"); if(action==Constants.DROP_ACTION) { protocolList.addAll(icmpprotocolList); } } StringBuffer msg=new StringBuffer(); int line=1; for(IpCfgTemplate value:list){ String lineStart=String.format(prop.getProperty("line"), line)+":"; StringBuffer errInfo=new StringBuffer(); // ip_type check start Integer ipType=value.getIpType(); if(ipType==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ip_type"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem ipTypeItem:ipTypeList){ if(ipType==Integer.parseInt(ipTypeItem.getItemCode())){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ip_type"))+";"); } } // ip_type check end // ip_pattern check start Integer ipPattern=value.getIpPattern(); if(ipPattern==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ip_pattern"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem ipPatternItem:ipPatternList){ if(ipPattern==Integer.parseInt(ipPatternItem.getItemCode())){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ip_pattern"))+";"); } } // ip_pattern check end //client_ip check start String srcIp=value.getSrcIpAddress(); String _msg=""; if("ipmulitiplex".equals(specialItem)) { _msg=checkIP(prop,prop.getProperty("IP"),srcIp,ipType,ipPattern); }else { _msg=checkIP(prop,prop.getProperty("client_ip"),srcIp,ipType,ipPattern); } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //client_ip check end //server_ip check start String destIp=value.getDestIpAddress(); if("ipmulitiplex".equals(specialItem)) {//set 默认值 if(ipPattern!=null&&ipType!=null) { if(1==ipPattern.intValue()) { if(4==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); }else if(6==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_SUBNET_VALUE); }else if(46==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_SUBNET_VALUE); }else if(64==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); }else if(10==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); } }else if(2==ipPattern.intValue()) { if(4==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); }else if(6==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_RANGE_VALUE); }else if(46==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_RANGE_VALUE); }else if(64==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); }else if(10==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); } }else if(3==ipPattern.intValue()) { if(4==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); }else if(6==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_VALUE); }else if(46==ipType.intValue()) { value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_VALUE); }else if(64==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); }else if(10==ipType.intValue()) { value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); } } } }else { if(srcIp.equals(destIp)){ String info=String.format(prop.getProperty("are_the_same"),prop.getProperty("client_ip"),prop.getProperty("server_ip")); errInfo.append(info+";"); } _msg=checkIP(prop,prop.getProperty("server_ip"),destIp,ipType,ipPattern); if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } } if(!"ipmulitiplex".equals(specialItem)&&(46==ipType.intValue()||64==ipType.intValue()||10==ipType.intValue())) { _msg=checkIp(prop, prop.getProperty("client_ip"), srcIp, prop.getProperty("server_ip"), destIp, ipType, ipPattern); if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } } //server_ip check end //port_pattern check start Integer portPattern=value.getPortPattern(); if(portPattern==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("port_pattern"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem portPatternItem:portPatternList){ if(portPattern==Integer.parseInt(portPatternItem.getItemCode())){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("port_pattern"))+";"); } } //port_pattern check end //src_port check start String srcPort=value.getSrcPort(); if("ipmulitiplex".equals(specialItem)) { _msg=checkPort(prop,prop.getProperty("port"), srcPort, portPattern); }else { _msg=checkPort(prop,prop.getProperty("client_port"), srcPort, portPattern); } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //src_port check end //dest_port check start String destPort=value.getDestPort(); if("ipmulitiplex".equals(specialItem)) {//set 默认值 if(portPattern!=null) { if(2==portPattern.intValue()) { value.setDestPort(Constants.PORT_MASK_DEFAULT); }else if(1==portPattern.intValue()) { value.setDestPort(Constants.PORT_DEFAULT); } } }else { _msg=checkPort(prop,prop.getProperty("server_port"), destPort, portPattern); } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //dest_port check end //direction check start Integer direction=value.getDirection(); if(direction==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("direction"))+";"); }else{ boolean has=false; for(SysDataDictionaryItem directionItem:directionList){ if(Integer.parseInt(directionItem.getItemCode())==direction.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("direction"))+";"); } } //direction check end //protocol check start Integer protocol= value.getProtocol(); if(protocol==null){ errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("protocol"))+";"); }else{ if(specialItem!=null&&("ipsec".equals(specialItem)||"tunnel".equals(specialItem))){ if("ipsec".equals(specialItem)){ if(action==Constants.DROP_ACTION.intValue()) { boolean has=false; for(SysDataDictionaryItem protocolItem:ipsecProrocolList){ if(Integer.parseInt(protocolItem.getItemCode())==protocol.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("protocol"))+";"); } }else { if(protocol!=0) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("protocol"))+";"); } } }else if("tunnel".equals(specialItem)){ for(SysDataDictionaryItem protocolItem:tunnelProrocolList){ if("default".equals(protocolItem.getItemValue())){ if(protocol.intValue()!=Integer.parseInt(protocolItem.getItemCode())){ errInfo.append(String.format(prop.getProperty("must_be"), prop.getProperty("protocol"),Integer.parseInt(protocolItem.getItemCode()))+";"); } break; } } } }else{ boolean has=false; for(SysDataDictionaryItem protocolItem:protocolList){ if(Integer.parseInt(protocolItem.getItemCode())==protocol.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("protocol"))+";"); } } } //protocol check end // requestId check start Integer requestId=value.getRequestId(); if(requestId==null){ if("whitelistip".equals(specialItem)) { value.setRequestId(0); }else { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("letter"))+";"); } }else{//查询数据库是否存在ID if("whitelistip".equals(specialItem)) { value.setRequestId(0); }else { RequestInfo info=requestInfoService.getRequestInfoById((long)requestId.intValue()); if(info==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),requestId, prop.getProperty("letter"))+";"); }else if(info.getIsValid()==Constants.VALID_NO||info.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),requestId, prop.getProperty("letter"))+";"); } } } // requestId check end //classification check start String classification=value.getClassify(); if(StringUtils.isNotBlank(classification)){ try{ for(String classify:classification.split(",")){ if(StringUtils.isNotBlank(classify)){ int c=Integer.parseInt(classify); ServiceDictInfo dict=serviceDictInfoService.getDictById(c); if(dict==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),classify, prop.getProperty("classification"))+";"); }else if(dict.getIsValid()==Constants.VALID_NO||dict.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),classify, prop.getProperty("classification"))+";"); } } } }catch (Exception e) { // TODO: handle exception errInfo.append(String.format(prop.getProperty("num_split_by_comma"), prop.getProperty("classification"))+";"); } } //classification check end //attribute check start String attributes=value.getAttribute(); if(StringUtils.isNotBlank(attributes)){ try{ for(String attribute:attributes.split(",")){ if(StringUtils.isNotBlank(attribute)){ int c=Integer.parseInt(attribute); ServiceDictInfo dict=serviceDictInfoService.getDictById(c); if(dict==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),attribute, prop.getProperty("attribute"))+";"); }else if(dict.getIsValid()==Constants.VALID_NO||dict.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),attribute, prop.getProperty("attribute"))+";"); } } } }catch (Exception e) { // TODO: handle exception errInfo.append(String.format(prop.getProperty("num_split_by_comma"), prop.getProperty("attribute"))+";"); } } //attribute check end //attribute check start String labels=value.getLable(); if(StringUtils.isNotBlank(labels)){ try{ for(String label:labels.split(",")){ if(StringUtils.isNotBlank(label)){ int c=Integer.parseInt(label); ServiceDictInfo dict=serviceDictInfoService.getDictById(c); if(dict==null){ errInfo.append(String.format(prop.getProperty("id_not_exists"),label, prop.getProperty("label"))+";"); }else if(dict.getIsValid()==Constants.VALID_NO||dict.getIsValid()==Constants.VALID_DEL){ errInfo.append(String.format(prop.getProperty("id_not_valid"),label, prop.getProperty("label"))+";"); } } } }catch (Exception e) { // TODO: handle exception errInfo.append(String.format(prop.getProperty("num_split_by_comma"), prop.getProperty("label"))+";"); } } //group and ir_type check start if("ipmulitiplex".equals(specialItem)) { Integer irType= value.getIrType(); if(irType==null) { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ir_type"))+";"); }else { boolean has=false; for(SysDataDictionaryItem irTypeItem:irTypeList){ if(Integer.parseInt(irTypeItem.getItemCode())==irType.intValue()){ has=true; break; } } if(!has){ errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ir_type"))+";"); } } Integer dnsStrategyId=value.getDnsStrategyId(); if(dnsStrategyId==null) { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("group_name"))+";"); }else { PolicyGroupInfo group=policyGroupInfoService.getById(dnsStrategyId.intValue()); if(group==null) { errInfo.append(String.format(prop.getProperty("id_not_exists"),dnsStrategyId, prop.getProperty("group_name"))+";"); }else if(group.getIsValid()==Constants.VALID_DEL||group.getIsValid()==Constants.VALID_NO) { errInfo.append(String.format(prop.getProperty("id_not_valid"),dnsStrategyId, prop.getProperty("group_name"))+";"); } } } if("ipratelimit".equals(specialItem)) { String ratelimit=value.getRatelimit(); if(ratelimit==null) { errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ratelimit"))+";"); }else { try { if(Double.parseDouble(ratelimit)<0||Double.parseDouble(ratelimit)>1) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ratelimit_limit"))+";"); } }catch (Exception e) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ratelimit_limit"))+";"); } } } //attribute check end if(StringUtils.isNotBlank(errInfo.toString())){ msg.append(lineStart).append(errInfo); if(line"); } } //group and ir_type check end line++; } if(StringUtils.isNotBlank(msg.toString())){ throw new MaatConvertException(prop.getProperty("save_failed")+"
"+msg.toString()); } } /** * * checkIP(IP格式验证) * (这里描述这个方法适用条件 – 可选) * @param ipName * @param ip * @param ipType * @param ipPattern * @return *String * @exception * @since 1.0.0 */ public static String checkIP(Properties prop,String ipName,String ip,String ipType,String ipPattern){ StringBuffer msg=new StringBuffer(); if(StringUtils.isBlank(ip)){ msg.append(String.format(prop.getProperty("can_not_null"), ipName)+";"); }else{ if("ipv4".equals(ipType)){ if("ip_subnet".equals(ipPattern)){ Pattern pattern=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if("ip_range".equals(ipPattern)){ Pattern pattern=Pattern.compile(Constants.IPV4_IP_RANGE_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if("ip".equals(ipPattern)){ Pattern pattern=Pattern.compile(Constants.IPV4_IP_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } } }else if("ipv6".equals(ipType)){ if("ip_subnet".equals(ipPattern)){ Pattern pattern=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if("ip_range".equals(ipPattern)){ Pattern pattern=Pattern.compile(Constants.IPV6_IP_RANGE_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if("ip".equals(ipPattern)){ Pattern pattern=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } } } } return msg.toString(); } /** * * checkIP(IP格式验证) * (这里描述这个方法适用条件 – 可选) * @param ipName * @param ip * @param ipType * @param ipPattern * @return *String * @exception * @since 1.0.0 */ public static String checkIP(Properties prop,String ipName,String ip,Integer ipType,Integer ipPattern){ StringBuffer msg=new StringBuffer(); if(StringUtils.isBlank(ip)){ msg.append(String.format(prop.getProperty("can_not_null"), ipName)+";"); }else{ if(4==ipType.intValue()){ if(1==ipPattern.intValue()){ Pattern pattern=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if(2==ipPattern.intValue()){ Pattern pattern=Pattern.compile(Constants.IPV4_IP_RANGE_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if(3==ipPattern.intValue()){ Pattern pattern=Pattern.compile(Constants.IPV4_IP_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } } }else if(6==ipType.intValue()){ if(1==ipPattern.intValue()){ Pattern pattern=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if(2==ipPattern.intValue()){ Pattern pattern=Pattern.compile(Constants.IPV6_IP_RANGE_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } }else if(3==ipPattern.intValue()){ Pattern pattern=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher matcher=pattern.matcher(ip); if(!matcher.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), ipName)+";"); } } } } return msg.toString(); } public static String checkIp(Properties prop,String srcIpName,String srcIp,String destIpName,String destIp,Integer ipType,Integer ipPattern) { StringBuffer msg=new StringBuffer(); if(46==ipType.intValue()){ if(1==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher matcherV4=patternV4.matcher(srcIp); Matcher matcherV6=patternV6.matcher(destIp); if(!matcherV4.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } if(!matcherV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } }else if(2==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_RANGE_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_RANGE_REGEXP); Matcher matcherV4=patternV4.matcher(srcIp); Matcher matcherV6=patternV6.matcher(destIp); if(!matcherV4.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } if(!matcherV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } }else if(3==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher matcherV4=patternV4.matcher(srcIp); Matcher matcherV6=patternV6.matcher(destIp); if(!matcherV4.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } if(!matcherV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } } }else if(64==ipType.intValue()) { if(1==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher matcherV4=patternV4.matcher(destIp); Matcher matcherV6=patternV6.matcher(srcIp); if(!matcherV4.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } if(!matcherV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } }else if(2==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_RANGE_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_RANGE_REGEXP); Matcher matcherV4=patternV4.matcher(destIp); Matcher matcherV6=patternV6.matcher(srcIp); if(!matcherV4.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"),destIpName)+";"); } if(!matcherV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName )+";"); } }else if(3==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher matcherV4=patternV4.matcher(destIp); Matcher matcherV6=patternV6.matcher(srcIp); if(!matcherV4.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } if(!matcherV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } } }else if(10==ipType.intValue()) { if(1==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher matcherSrcIpV4=patternV4.matcher(srcIp); Matcher matcherSrcIpV6=patternV6.matcher(srcIp); Matcher matcherDestIpV4=patternV4.matcher(destIp); Matcher matcherDestIpV6=patternV6.matcher(destIp); if(!matcherSrcIpV4.matches()&&!matcherSrcIpV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } if(!matcherDestIpV4.matches()&&!matcherDestIpV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } }else if(2==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_RANGE_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_RANGE_REGEXP); Matcher matcherSrcIpV4=patternV4.matcher(srcIp); Matcher matcherSrcIpV6=patternV6.matcher(srcIp); Matcher matcherDestIpV4=patternV4.matcher(destIp); Matcher matcherDestIpV6=patternV6.matcher(destIp); if(!matcherSrcIpV4.matches()&&!matcherSrcIpV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } if(!matcherDestIpV4.matches()&&!matcherDestIpV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } }else if(3==ipPattern.intValue()){ Pattern patternV4=Pattern.compile(Constants.IPV4_IP_REGEXP); Pattern patternV6=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher matcherSrcIpV4=patternV4.matcher(srcIp); Matcher matcherSrcIpV6=patternV6.matcher(srcIp); Matcher matcherDestIpV4=patternV4.matcher(destIp); Matcher matcherDestIpV6=patternV6.matcher(destIp); if(!matcherSrcIpV4.matches()&&!matcherSrcIpV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), srcIpName)+";"); } if(!matcherDestIpV4.matches()&&!matcherDestIpV6.matches()){//完全匹配 msg.append(String.format(prop.getProperty("is_in_wrong_format"), destIpName)+";"); } } } return msg.toString(); } public static String checkPort(Properties prop,String portName,String port,Integer portPattern){ StringBuffer msg=new StringBuffer(); if(StringUtils.isBlank(port)){ msg.append(String.format(prop.getProperty("can_not_null"), portName)+";"); }else{ if(1==portPattern.intValue()){ try{ Integer portInt=Integer.parseInt(port); if(portInt<0||portInt>65535){ msg.append(portName+" "+String.format(prop.getProperty("must_between"), "0","65535")+";"); } }catch (Exception e) { // TODO: handle exception msg.append(String.format(prop.getProperty("not_number"), portName)+";"); } }else if(2==portPattern.intValue()){ if(port.indexOf("/")==-1){ msg.append(String.format(prop.getProperty("is_in_wrong_format"), portName)+";"); }else{ int index=0; String[] portArray=port.split("/"); for(String portPart:portArray){ try{ Integer portInt=Integer.parseInt(portPart); if(portInt<0||portInt>65535){ if(index==0){ msg.append(String.format(prop.getProperty("must_between"), portName+" port")+";"); }else{ msg.append(String.format(prop.getProperty("must_between"), portName+" mask")+";"); } } }catch (Exception e) { // TODO: handle exception if(index==0){ msg.append(String.format(prop.getProperty("not_number"), portName+" port")+";"); }else{ msg.append(String.format(prop.getProperty("not_number"), portName+" mask")+";"); } } index++; } } } } return msg.toString(); } /** * * setReportSearchTime(报表查询设置开始时间与结束时间) * (这里描述这个方法适用条件 – 可选) * @param bean * @throws ParseException *void * @exception * @since 1.0.0 */ public void setReportSearchTime(SearchReport bean) throws ParseException{ SimpleDateFormat sdf=new SimpleDateFormat(Constants.SEARCH_DATEFORMAT); String reportTime=bean.getReportTime(); if(StringUtils.isNotBlank(reportTime)){ Calendar startCal=Calendar.getInstance(); startCal.setTime(getReportTime(reportTime)); startCal.set(Calendar.MINUTE, 0); startCal.set(Calendar.SECOND, 0); startCal.set(Calendar.MILLISECOND, 0); Calendar endCal=Calendar.getInstance(); endCal.setTime(getReportTime(reportTime)); endCal.set(Calendar.MINUTE, 59); endCal.set(Calendar.SECOND, 59); endCal.set(Calendar.MILLISECOND, 0); if(bean.getReportType()==Constants.REPORT_TYPE_HOUR){ startCal.set(Calendar.HOUR_OF_DAY, 0); endCal.set(Calendar.HOUR_OF_DAY, 23); }else if(bean.getReportType()==Constants.REPORT_TYPE_DAY){ startCal.set(Calendar.HOUR_OF_DAY, 0); startCal.set(Calendar.DAY_OF_MONTH, 1); endCal.set(Calendar.HOUR_OF_DAY, 23); DateUtils.setLastDayOfMonth(endCal); }else if(bean.getReportType()==Constants.REPORT_TYPE_MONTH){ startCal.set(Calendar.HOUR_OF_DAY, 0); startCal.set(Calendar.DAY_OF_MONTH, 1); startCal.set(Calendar.MONTH, 0); endCal.set(Calendar.HOUR_OF_DAY, 23); DateUtils.setLastDayOfMonth(endCal); endCal.set(Calendar.MONTH, 11); } bean.setReportStartTime(startCal.getTime()); bean.setReportEndTime(endCal.getTime()); bean.setSearchReportStartTime(sdf.format(startCal.getTime())); bean.setSearchReportEndTime(sdf.format(endCal.getTime())); }else{ Date date=new Date(); bean.setReportEndTime(date); bean.setSearchReportEndTime(sdf.format(date)); Calendar startCal=Calendar.getInstance(); startCal.setTime(date); startCal.set(Calendar.MINUTE, 0); startCal.set(Calendar.SECOND, 0); startCal.set(Calendar.MILLISECOND, 0); if(bean.getReportType()==Constants.REPORT_TYPE_HOUR){ startCal.set(Calendar.HOUR_OF_DAY, 0); }else if(bean.getReportType()==Constants.REPORT_TYPE_DAY){ startCal.set(Calendar.HOUR_OF_DAY, 0); startCal.set(Calendar.DAY_OF_MONTH, 1); }else if(bean.getReportType()==Constants.REPORT_TYPE_MONTH){ startCal.set(Calendar.HOUR_OF_DAY, 0); startCal.set(Calendar.DAY_OF_MONTH, 1); startCal.set(Calendar.MONTH, 0); } bean.setReportStartTime(startCal.getTime()); bean.setSearchReportStartTime(sdf.format(startCal.getTime())); } logger.info("search start time "+bean.getSearchReportStartTime()); logger.info("search end time "+bean.getSearchReportEndTime()); } public List getDateTitiles(SearchReport bean){ SimpleDateFormat sdf=new SimpleDateFormat(Constants.SEARCH_DATEFORMAT); List titles=new ArrayList(); Calendar cal=Calendar.getInstance(); cal.setTime(bean.getReportStartTime()); while(cal.getTimeInMillis() ipPortCfgs=new ArrayList(); List cfgIndexInfos=new ArrayList(); for (int i = 0; i < files.length; i++) { MultipartFile file = files[i]; ImportExcel ei = new ImportExcel(file, 0, 0); FunctionRegionDict regionDict=DictUtils.getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i])); if(regionDict.getIsMaat().equals(1)){ if(regionDict.getRegionType().equals(1)){ List list = ei.getDataList(IpAllTemplate.class); ipPortCfgs=this.checkIpCfg(serviceDict,regionDict,list); Date date=new Date(); for(BaseIpCfg cfg : ipPortCfgs){ CfgIndexInfo cfgIndexInfo=new CfgIndexInfo(); cfg.setAction(serviceDict.getAction()); cfg.setAuditorId(UserUtils.getUser().getId()); cfg.setAuditTime(date); cfg.setCfgRegionCode(regionDict.getConfigRegionCode()); cfg.setCfgType(regionDict.getConfigRegionValue()); cfg.setCreateTime(date); cfg.setCreatorId(UserUtils.getUser().getId()); cfg.setDoLog(1); cfg.setFunctionId(regionDict.getFunctionId()); cfg.setIsAudit(0); cfg.setIsValid(0); cfg.setIsAreaEffective(0); cfg.setAttribute("0"); cfg.setClassify("0"); cfg.setLable("0"); cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0:requestId); cfg.setServiceId(serviceDict.getServiceId()); cfg.setTableName("ip_port_cfg"); cfg.setCompileId(ipCfgService.getCompileId()); BeanUtils.copyProperties(cfg, cfgIndexInfo); cfgIndexInfos.add(cfgIndexInfo); } } } ipCfgService.saveBatch(ipPortCfgs, IpCfgDao.class); ipCfgService.saveCfgIndexOf(cfgIndexInfos); } } catch (Exception e) { addMessage(redirectAttributes, e.getMessage()); e.printStackTrace(); } } /** * 多域配置导出 * @param columns * @param model * @param request * @param response * @param entity * @param ids * @param redirectAttributes */ public void _export(Model model,HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes ,String functionName ,List titleList,Map> classMap,Map dataMap ,Map noExportMap) throws Exception{ //获取国际化配置 Properties msgProp = getMsgProp(); //获取分类、性质、标签 List fls=serviceDictInfoService.findAllFlDict(); List xzs=serviceDictInfoService.findAllXzDict(); List labels=serviceDictInfoService.findAllLableDict(); Map map=new HashMap(); map.put("fls", fls); map.put("xzs", xzs); map.put("labels", labels); String fileName = msgProp.getProperty(functionName, functionName)+"_"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx"; new ExportExcel(msgProp,titleList,noExportMap,classMap,1).setDataList(msgProp,dataMap,map).write(response, fileName).dispose(); } }