package com.nis.web.controller; import java.beans.PropertyEditorSupport; import java.io.IOException; import java.net.URLEncoder; 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.List; import java.util.Map; import java.util.Properties; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; 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.AsnIpCfg; import com.nis.domain.basics.ServiceDictInfo; import com.nis.domain.basics.SysDictInfo; import com.nis.domain.configuration.AppPolicyCfg; 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.BaseStringCfg; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.ComplexStringCfgTemplate; import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.DnsResStrategy; import com.nis.domain.configuration.RequestInfo; import com.nis.domain.configuration.StringCfgTemplate; import com.nis.domain.configuration.template.AppDomainTemplate; import com.nis.domain.configuration.template.AsnIpTemplate; import com.nis.domain.configuration.template.ComplexStringAllTemplate; import com.nis.domain.configuration.template.DdosIpTemplate; import com.nis.domain.configuration.template.DnsComplexStringTemplate; import com.nis.domain.configuration.template.DnsIpTemplate; import com.nis.domain.configuration.template.DnsResStrategyTemplate; import com.nis.domain.configuration.template.IpAllTemplate; import com.nis.domain.configuration.template.IpCfgTemplate; import com.nis.domain.configuration.template.IpPayloadTemplate; import com.nis.domain.configuration.template.IpRateLimitTemplate; import com.nis.domain.configuration.template.P2pHashStringTemplate; import com.nis.domain.configuration.template.P2pIpTemplate; import com.nis.domain.configuration.template.StringAllTemplate; import com.nis.domain.log.BaseLogEntity; import com.nis.domain.log.SearchReport; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.domain.specific.SpecificServiceCfg; import com.nis.exceptions.MaatConvertException; import com.nis.util.AsnCacheUtils; import com.nis.util.ConfigServiceUtil; 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.ImportBigExcel; import com.nis.util.excel.thread.CheckComplexStringFormatThread; import com.nis.util.excel.thread.CheckDnsResStrategyFormatThread; import com.nis.util.excel.thread.CheckIpFormatThread; import com.nis.util.excel.thread.CheckStringFormatThread; 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.CachePolicyService; 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.GroupAreaService; 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; import jersey.repackaged.com.google.common.collect.Maps; 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; @Autowired protected GroupAreaService groupAreaService;// 分组区域管理 service //@Autowired //protected ConfigGroupInfoService configGroupInfoService; @Autowired protected CachePolicyService cachePolicyService; /** * 管理基础路径 */ @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 * @param messageType 消息类型:info、success、warning、error、loading */ protected void addMessage(RedirectAttributes redirectAttributes,String messageType, String... messages) { StringBuilder sb = new StringBuilder(); for (String message : messages) { sb.append(message).append(messages.length > 1 ? "
" : ""); } redirectAttributes.addFlashAttribute("message", sb.toString()); redirectAttributes.addFlashAttribute("messageType", messageType); } /** * 初始化数据绑定 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; } @Deprecated 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 FunctionServiceDict(), 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 FunctionServiceDict(), 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 FunctionServiceDict(), new FunctionRegionDict(), msgProp, null, ComplexStringCfgTemplate.class, 2).setDataList(msgProp, list, null) .write(request, response, fileName).dispose(); } } } } catch (Exception e) { msgProp = null; e.printStackTrace(); } } @Deprecated 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 FunctionServiceDict(), 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 FunctionServiceDict(), 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 FunctionServiceDict(), 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()); } if (entry.getOrderBy() != null&&entry.getOrderBy()!="") { params.put("orderBy", entry.getOrderBy()); } } /** * 多线程验证 * @param serviceDict * @param regionDict * @param asnNos * @param list * @return * @throws ServiceException * @throws InterruptedException * @throws ExecutionException */ public BlockingQueue checkIpCfgMulity(FunctionServiceDict serviceDict, FunctionRegionDict regionDict,List> asnNos, BlockingQueue list) throws ServiceException, InterruptedException, ExecutionException{ logger.warn("start checkIpCfgMulity ,size "+list.size()); long start=System.currentTimeMillis(); BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { throw new ServiceException(msg); } } long end=System.currentTimeMillis(); logger.warn("checkIpCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; } /** * 多线程验证 * @param serviceDict * @param regionDict * @param list * @return * @throws InterruptedException * @throws ExecutionException * @throws ServiceException */ public BlockingQueue> checkStringCfgMulity(FunctionServiceDict serviceDict, FunctionRegionDict regionDict, BlockingQueue list) throws InterruptedException, ExecutionException, ServiceException{ logger.warn("start checkStringCfgMulity ,size "+list.size()); long start=System.currentTimeMillis(); BlockingQueue> queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { throw new ServiceException(msg); } } long end=System.currentTimeMillis(); logger.warn("checkStringCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; } /** * 多线程验证 * @param serviceDict * @param regionDict * @param list * @return * @throws InterruptedException * @throws ExecutionException * @throws ServiceException */ public BlockingQueue checkComplexStringCfgMulity(FunctionServiceDict serviceDict, FunctionRegionDict regionDict,BlockingQueue list) throws InterruptedException, ExecutionException, ServiceException{ logger.warn("start checkComplexStringCfgMulity ,size "+list.size()); long start=System.currentTimeMillis(); BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { throw new ServiceException(msg); } } long end=System.currentTimeMillis(); logger.warn("checkComplexStringCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; } /** * 多线程验证 * @param serviceDict * @param regionDict * @param list * @return * @throws InterruptedException * @throws ExecutionException * @throws ServiceException */ public BlockingQueue checkDnsResStrategyCfgMulity(FunctionServiceDict serviceDict, FunctionRegionDict regionDict,BlockingQueue list) throws InterruptedException, ExecutionException, ServiceException{ logger.warn("start checkDnsResStrategyCfgMulity ,size "+list.size()); long start=System.currentTimeMillis(); BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { throw new ServiceException(msg); } } long end=System.currentTimeMillis(); logger.warn("checkDnsResStrategyCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; } /** * * 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() < bean.getReportEndTime().getTime()) {// 构造标题 // 报表时间单位加一 if (bean.getReportType() == Constants.REPORT_TYPE_HOUR) { titles.add(sdf.format(cal.getTime()).substring(0, 13)); cal.add(Calendar.HOUR_OF_DAY, 1); } else if (bean.getReportType() == Constants.REPORT_TYPE_DAY) { titles.add(sdf.format(cal.getTime()).substring(0, 10)); cal.add(Calendar.DAY_OF_MONTH, 1); } else if (bean.getReportType() == Constants.REPORT_TYPE_MONTH) { titles.add(sdf.format(cal.getTime()).substring(0, 7)); cal.add(Calendar.MONTH, 1); } } return titles; } public Date getReportTime(String reportTime) throws ParseException { Pattern datePattern = Pattern.compile("^[0-9]{4}-[0-9]{2}-[0-9]{2}$"); Pattern monthPattern = Pattern.compile("^[0-9]{4}-[0-9]{2}$"); Pattern yearPattern = Pattern.compile("^[0-9]{4}$"); Matcher matcher = datePattern.matcher(reportTime); if (matcher.matches()) { return new SimpleDateFormat("yyyy-MM-dd").parse(reportTime); } else { matcher = monthPattern.matcher(reportTime); if (matcher.matches()) { return new SimpleDateFormat("yyyy-MM").parse(reportTime); } else { matcher = yearPattern.matcher(reportTime); if (matcher.matches()) { return new SimpleDateFormat("yyyy").parse(reportTime); } } } return null; } /** * 多域导入 * * @param redirectAttributes * @param files * @param serviceDictId * @param regionDictIds * @param requestId */ public void _import(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, MultipartFile[] files, Integer serviceDictId, String regionDictIds, Integer requestId) { logger.warn("import start..."); long start=System.currentTimeMillis(); ImportBigExcel ei=null; try { FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId); BlockingQueue ipPortCfgs =null; BlockingQueue> stringCfgs =null; BlockingQueue complexkeywordCfgs =null; BlockingQueue dnsResStrategies=null; List cfgIndexInfos = new ArrayList(); List appPolicyCfgs = new ArrayList(); List> asnNoMaps=Lists.newArrayList(); Map newAsnNoMap=Maps.newConcurrentMap(); Map OldAsnNoMap=Maps.newConcurrentMap(); asnNoMaps.add(newAsnNoMap); asnNoMaps.add(OldAsnNoMap); FunctionRegionDict appRegion = null; if(serviceDict!=null) { String regionCode = serviceDict.getRegionCode(); for (String code : regionCode.split(",")) { if (StringUtils.isNotBlank(code)) { FunctionRegionDict d = DictUtils.getFunctionRegionDictByRegionCode(serviceDict.getFunctionId(), Integer.parseInt(code)); if (d != null && d.getConfigServiceType() != null && d.getConfigServiceType().equals("app_policy")) { appRegion = d; break; } } } } for (int i = 0; i < files.length; i++) { MultipartFile file = files[i]; ei = new ImportBigExcel(file, 0, 1); FunctionRegionDict regionDict = DictUtils .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i])); //加载模板 loadTemplate(ei,regionDict, serviceDict); //------------------------------------check format start---------------------------- if (regionDict.getRegionType().equals(1)) {// IP if (regionDict.getFunctionId().equals(5)) { if (serviceDict!=null&&serviceDict.getAction().equals(64)) { BlockingQueue list = ei.getDataList(IpRateLimitTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } } else if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { BlockingQueue list = ei.getDataList(DnsIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); }else if(regionDict.getFunctionId().equals(401)) { BlockingQueue list = ei.getDataList(DnsIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); }else if (regionDict.getFunctionId().equals(212)) { BlockingQueue list = ei.getDataList(IpPayloadTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else if (regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())) { // P2p IP BlockingQueue list = ei.getDataList(P2pIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else if (regionDict.getFunctionId().equals(600)) {// ASN IP //加载asn缓存 AsnCacheUtils.init(); BlockingQueue list = ei.getDataList(AsnIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, asnNoMaps, list); } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP BlockingQueue list = ei.getDataList(DdosIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } } else if (regionDict.getRegionType().equals(2)) {// 字符串类 if (regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())) { // P2p hash BlockingQueue list = ei.getDataList(P2pHashStringTemplate.class ); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); }else if (regionDict.getFunctionId().equals(403)) { BlockingQueue list = ei.getDataList(AppDomainTemplate.class ); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); } else { BlockingQueue list = ei.getDataList(StringAllTemplate.class ); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); } } else if (regionDict.getRegionType().equals(3)) {// 增强字符串类 if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { BlockingQueue list = ei.getDataList(DnsComplexStringTemplate.class ); complexkeywordCfgs = this.checkComplexStringCfgMulity(serviceDict, regionDict, list); } else { BlockingQueue list = ei.getDataList(ComplexStringAllTemplate.class ); complexkeywordCfgs = this.checkComplexStringCfgMulity(serviceDict, regionDict, list); } }else if (regionDict.getRegionType().equals(6)) {// 回调类 if (regionDict.getFunctionId().equals(400)) { BlockingQueue list = ei.getDataList(DnsResStrategyTemplate.class ); dnsResStrategies=this.checkDnsResStrategyCfgMulity(serviceDict, regionDict, list); } } //删除文件 if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) { ei.getUploadFile().delete(); } //------------------------------------check format end---------------------------- Date date = new Date(); String specServiceId = request.getParameter("appId"); String behaviorId = request.getParameter("behaviorId"); String asnIpGroup = request.getParameter("asnGroupId"); SpecificServiceCfg specificServiceCfg = null; if (serviceDict!=null&&(serviceDict.getServiceId().intValue() == 33 || serviceDict.getServiceId().intValue() == 145 || serviceDict.getServiceId().intValue() == 35 || serviceDict.getServiceId().intValue() == 147 || serviceDict.getServiceId().intValue() == 36 || serviceDict.getServiceId().intValue() == 148 || serviceDict.getServiceId().intValue() == 1028// app ip || serviceDict.getServiceId().intValue() == 1024//app http || serviceDict.getServiceId().intValue() == 1026//app domain )) { if (StringUtils.isNotBlank(specServiceId)) { specificServiceCfg = specificServiceCfgService .getBySpecServiceId(Integer.parseInt(specServiceId)); } } if (regionDict.getRegionType().equals(1)) {// IP if(regionDict.getFunctionId().intValue()==600) {//ans ip if(asnNoMaps.get(0).size()>0) { try { //将未在缓存中找到对应config的asn no分配group ID List groupIds = ConfigServiceUtil.getId(2,asnNoMaps.get(0).size()); int ind=0; for(Long key:asnNoMaps.get(0).keySet()) { asnNoMaps.get(0).put(key, groupIds.get(ind)); ind++; } } catch (Exception e) { e.printStackTrace(); logger.info("获取编译ID出错"); throw new MaatConvertException(":"+e.getMessage()); } } List isImportAll=DictUtils.getDictList("IS_ASN_IP_IMPORT_ALL"); //处理组,新的组会在这里保存 asnIpCfgService.processGroup(asnNoMaps.get(0)); //全量下发,删除asnNo对应的已有的IP if(isImportAll.get(0).getItemCode().equals("1")) { logger.warn("Delete and send ip reuse regions start"); long _start=System.currentTimeMillis(); asnIpCfgService.deleteIps(asnNoMaps.get(1)); // List> list=Lists.newArrayList(); // ExecutorService service=Executors.newFixedThreadPool(Constants.SAVE_AND_DEL_THREAD_SIZE); // BlockingQueue queue=new ArrayBlockingQueue<>(asnNoMaps.get(1).size()); // queue.addAll(asnNoMaps.get(1).keySet()); // for(int j=0;j e:list) { // if(e.get()!=null) { // try { // throw e.get(); // } catch (Throwable e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } // } // } long _end=System.currentTimeMillis(); logger.warn("Delete and send ip reuse regions end,cost:"+(_end-_start)); } Map fullMap=Maps.newConcurrentMap(); for(Long asnNo:asnNoMaps.get(0).keySet()) { fullMap.put(asnNo, false); } for(Long asnNo:asnNoMaps.get(1).keySet()) { ConfigGroupInfo info=AsnCacheUtils.get(asnNo); if(info==null) { info=asnIpCfgService.getConfigGroupInfoByAsnNo(asnNo); } fullMap.put(asnNo, info.getIsIssued().intValue()==1); } // List> list=Lists.newArrayList(); // ExecutorService service=Executors.newFixedThreadPool(Constants.SAVE_AND_DEL_THREAD_SIZE); // for(int j=0;j e:list) { // if(e.get()!=null) { // try { // throw e.get(); // } catch (Throwable e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } // } // } List asnIpCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); while(!ipPortCfgs.isEmpty()) { ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE); List regionIds=Lists.newArrayList(); try { regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size()); } catch (Exception e) { e.printStackTrace(); logger.info("获取域ID出错"); throw new MaatConvertException(":"+e.getMessage()); } int ind=0; for (BaseIpCfg cfg : _ipPortCfgs) { AsnIpCfg _cfg=new AsnIpCfg(); BeanUtils.copyProperties(cfg, _cfg,new String[] {"cfgId"}); _cfg.setTableName(AsnIpCfg.getTablename()); _cfg.setAction(0); _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); if(fullMap.get(Long.parseLong(_cfg.getUserRegion1()))) { _cfg.setIsValid(Constants.VALID_YES); }else { _cfg.setIsValid(Constants.VALID_NO); } _cfg.setIsAreaEffective(0); _cfg.setAttribute("0"); _cfg.setClassify("0"); _cfg.setLable("0"); _cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId); _cfg.setServiceId(0); //设置region id if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) { _cfg.setRegionId(regionIds.get(ind)); } //设置group id if(asnNoMaps.get(0).containsKey(Long.parseLong(_cfg.getUserRegion1()))) { _cfg.setAsnIpGroup(asnNoMaps.get(0).get(Long.parseLong(_cfg.getUserRegion1()))); }else if(asnNoMaps.get(1).containsKey(Long.parseLong(_cfg.getUserRegion1()))) { _cfg.setAsnIpGroup(asnNoMaps.get(1).get(Long.parseLong(_cfg.getUserRegion1()))); }else { ConfigGroupInfo info=AsnCacheUtils.get(Long.parseLong(_cfg.getUserRegion1())); if(info==null) { info=asnIpCfgService.getConfigGroupInfoByAsnNo(Long.parseLong(_cfg.getUserRegion1())); } _cfg.setAsnIpGroup(info.getGroupId()); } asnIpCfgs.add(_cfg); ind++; } this.splitAndSave(regionDict, serviceDict, specificServiceCfg, asnIpCfgs, cfgIndexInfos, appPolicyCfgs); cfgIndexInfos.clear(); appPolicyCfgs.clear(); _ipPortCfgs.clear(); asnIpCfgs.clear(); } }else { List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); while(!ipPortCfgs.isEmpty()) { ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE); List compileIds=Lists.newArrayList(); List regionIds=Lists.newArrayList(); if(!regionDict.getFunctionId().equals(405)) {//app ip compileId 从config_group_info中取 try { compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size()); } catch (Exception e) { e.printStackTrace(); logger.info("获取编译ID出错"); throw new MaatConvertException(":"+e.getMessage()); } }else { try { regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size()); } catch (Exception e) { e.printStackTrace(); logger.info("获取域ID出错"); throw new MaatConvertException(":"+e.getMessage()); } } int ind=0; for (BaseIpCfg cfg : _ipPortCfgs) { cfg.setAction(serviceDict==null?null: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==null?null:serviceDict.getServiceId()); cfg.setTableName("ip_port_cfg"); if(compileIds.size()==_ipPortCfgs.size()) { cfg.setCompileId(compileIds.get(ind)); } if(regionDict.getFunctionId().equals(405)&®ionIds.size()==_ipPortCfgs.size()) { cfg.setUserRegion1(regionIds.get(ind).toString()); } if(specificServiceCfg!=null) { cfg.setAppCode(specificServiceCfg.getSpecServiceCode()); cfg.setSpecServiceId(specificServiceCfg.getSpecServiceId()); if(StringUtils.isNotBlank(behaviorId)) cfg.setBehavCode(Integer.parseInt(behaviorId)); } if (serviceDict!=null&&(serviceDict.getServiceId().intValue() == 33 || serviceDict.getServiceId().intValue() == 145 || serviceDict.getServiceId().intValue() == 35 || serviceDict.getServiceId().intValue() == 147 || serviceDict.getServiceId().intValue() == 36 || serviceDict.getServiceId().intValue() == 148)) { if (appRegion != null) { AppPolicyCfg appPolicyCfg = new AppPolicyCfg(); BeanUtils.copyProperties(cfg, appPolicyCfg,new String[] {"cfgId"}); //appPolicyCfg.setSpecServiceId(specificServiceCfg.getSpecServiceId()); //appPolicyCfg.setAppCode(specificServiceCfg.getSpecServiceCode()); appPolicyCfg.setMatchMethod(0); appPolicyCfg.setIsHexbin(0); appPolicyCfg.setCfgType(appRegion.getConfigRegionValue()); appPolicyCfg.setCfgRegionCode(appRegion.getConfigRegionCode()); if (StringUtils.isNotBlank(behaviorId)) { //appPolicyCfg.setBehavCode(Integer.parseInt(behaviorId)); appPolicyCfg.setExprType(1); } else { appPolicyCfg.setExprType(0); } appPolicyCfgs.add(appPolicyCfg); } } else { if(regionDict.getFunctionId().intValue()!=600 &®ionDict.getFunctionId().intValue()!=301 &®ionDict.getFunctionId().intValue()!=401 &®ionDict.getFunctionId().intValue()!=405) { CfgIndexInfo cfgIndexInfo = new CfgIndexInfo(); BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"}); cfgIndexInfos.add(cfgIndexInfo); } } ind++; } this.splitAndSave(regionDict, serviceDict, specificServiceCfg, _ipPortCfgs, cfgIndexInfos, appPolicyCfgs); cfgIndexInfos.clear(); appPolicyCfgs.clear(); _ipPortCfgs.clear(); } } } else if (regionDict.getRegionType().equals(2)) { List _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); while(!stringCfgs.isEmpty()) { stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE); List compileIds=Lists.newArrayList(); try { compileIds = ConfigServiceUtil.getId(1,_stringCfgs.size()); } catch (Exception e) { e.printStackTrace(); logger.info("获取编译ID出错"); throw new MaatConvertException(":"+e.getMessage()); } int ind=0; for (BaseStringCfg cfg : _stringCfgs) { 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()); if(compileIds!=null&&compileIds.size()==_stringCfgs.size()) { cfg.setCompileId(compileIds.get(ind)); } if(specificServiceCfg!=null) { cfg.setAppCode(specificServiceCfg.getSpecServiceCode()); cfg.setSpecServiceId(specificServiceCfg.getSpecServiceId()); if(StringUtils.isNotBlank(behaviorId)) cfg.setBehavCode(Integer.parseInt(behaviorId)); } if (serviceDict.getServiceId().intValue() == 33 || serviceDict.getServiceId().intValue() == 145 || serviceDict.getServiceId().intValue() == 35 || serviceDict.getServiceId().intValue() == 147 || serviceDict.getServiceId().intValue() == 36 || serviceDict.getServiceId().intValue() == 148) { if (appRegion != null) { AppPolicyCfg appPolicyCfg = new AppPolicyCfg(); BeanUtils.copyProperties(cfg, appPolicyCfg,new String[] {"cfgId"}); //appPolicyCfg.setSpecServiceId(specificServiceCfg.getSpecServiceId()); //appPolicyCfg.setAppCode(specificServiceCfg.getSpecServiceCode()); appPolicyCfg.setMatchMethod(0); appPolicyCfg.setIsHexbin(0); appPolicyCfg.setCfgType(appRegion.getConfigRegionValue()); appPolicyCfg.setCfgRegionCode(appRegion.getConfigRegionCode()); if (StringUtils.isNotBlank(behaviorId)) { //appPolicyCfg.setBehavCode(Integer.parseInt(behaviorId)); appPolicyCfg.setExprType(1); } else { appPolicyCfg.setExprType(0); } appPolicyCfgs.add(appPolicyCfg); } } else { if(!regionDict.getFunctionId().equals(403)) { CfgIndexInfo cfgIndexInfo = new CfgIndexInfo(); BeanUtils.copyProperties(cfg, cfgIndexInfo, new String[] {"cfgId"}); cfgIndexInfos.add(cfgIndexInfo); } } ind++; } this.splitAndSave(regionDict, serviceDict, specificServiceCfg, _stringCfgs, cfgIndexInfos, appPolicyCfgs); cfgIndexInfos.clear(); appPolicyCfgs.clear(); _stringCfgs.clear(); } } else if (regionDict.getRegionType().equals(3)) { List _complexkeywordCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); while(!complexkeywordCfgs.isEmpty()) { complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE); List compileIds=Lists.newArrayList(); try { compileIds = ConfigServiceUtil.getId(1,_complexkeywordCfgs.size()); } catch (Exception e) { e.printStackTrace(); logger.info("获取编译ID出错"); throw new MaatConvertException(":"+e.getMessage()); } int ind=0; for (ComplexkeywordCfg cfg : _complexkeywordCfgs) { 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()); if(compileIds!=null&&compileIds.size()==_complexkeywordCfgs.size()) { cfg.setCompileId(compileIds.get(ind)); } if(specificServiceCfg!=null) { cfg.setAppCode(specificServiceCfg.getSpecServiceCode()); cfg.setSpecServiceId(specificServiceCfg.getSpecServiceId()); if(StringUtils.isNotBlank(behaviorId)) cfg.setBehavCode(Integer.parseInt(behaviorId)); } if (serviceDict.getServiceId().intValue() == 33 || serviceDict.getServiceId().intValue() == 145 || serviceDict.getServiceId().intValue() == 35 || serviceDict.getServiceId().intValue() == 147 || serviceDict.getServiceId().intValue() == 36 || serviceDict.getServiceId().intValue() == 148) { if (appRegion != null) { AppPolicyCfg appPolicyCfg = new AppPolicyCfg(); BeanUtils.copyProperties(cfg, appPolicyCfg,new String[] {"cfgId"}); //appPolicyCfg.setSpecServiceId(specificServiceCfg.getSpecServiceId()); //appPolicyCfg.setAppCode(specificServiceCfg.getSpecServiceCode()); appPolicyCfg.setMatchMethod(0); appPolicyCfg.setIsHexbin(0); appPolicyCfg.setCfgType(appRegion.getConfigRegionValue()); appPolicyCfg.setCfgRegionCode(appRegion.getConfigRegionCode()); if (StringUtils.isNotBlank(behaviorId)) { //appPolicyCfg.setBehavCode(Integer.parseInt(behaviorId)); appPolicyCfg.setExprType(1); } else { appPolicyCfg.setExprType(0); } appPolicyCfgs.add(appPolicyCfg); } } else { if(!regionDict.getFunctionId().equals(402)) { CfgIndexInfo cfgIndexInfo = new CfgIndexInfo(); BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"}); cfgIndexInfos.add(cfgIndexInfo); } } ind++; } this.splitAndSave(regionDict, serviceDict, specificServiceCfg, _complexkeywordCfgs, cfgIndexInfos, appPolicyCfgs); cfgIndexInfos.clear(); appPolicyCfgs.clear(); _complexkeywordCfgs.clear(); } }else if(regionDict.getRegionType().equals(6)) { if(regionDict.getFunctionId().equals(400)) { List _dnsResStrategies=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); while(!dnsResStrategies.isEmpty()) { dnsResStrategies.drainTo(_dnsResStrategies, Constants.MAAT_JSON_SEND_SIZE); List compileIds=Lists.newArrayList(); try { compileIds = ConfigServiceUtil.getId(1,_dnsResStrategies.size()); } catch (Exception e) { e.printStackTrace(); logger.info("获取编译ID出错"); throw new MaatConvertException(":"+e.getMessage()); } int ind=0; for(DnsResStrategy cfg:_dnsResStrategies) { 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.setCompileId(compileIds.get(ind)); ind++; } this.splitAndSave(regionDict, serviceDict, specificServiceCfg, _dnsResStrategies, cfgIndexInfos, appPolicyCfgs); _dnsResStrategies.clear(); cfgIndexInfos.clear(); appPolicyCfgs.clear(); } } } } } catch (Exception e) { if(ei!=null) { if(ei.getUploadFile().exists()) { ei.getUploadFile().delete(); } } if(e instanceof MaatConvertException||e instanceof ServiceException) { addMessage(redirectAttributes,"error", e.getMessage()); }else { addMessage(redirectAttributes,"error", "import_failed"); } e.printStackTrace(); } long end=System.currentTimeMillis(); logger.warn("import finish,cost:"+(end-start)); } /** * 加载模板 * @param ei * @param regionDict * @param serviceDict */ public void loadTemplate(ImportBigExcel ei,FunctionRegionDict regionDict,FunctionServiceDict serviceDict) { if (regionDict.getRegionType().equals(1)) {// IP if (regionDict.getFunctionId().equals(5)) { if (serviceDict!=null&&serviceDict.getAction().equals(64)) { ei.loadInitParams(IpRateLimitTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else { ei.loadInitParams(IpAllTemplate.class, this.getMsgProp(), regionDict, serviceDict); } } else if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { ei.loadInitParams(DnsIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); }else if(regionDict.getFunctionId().equals(401)) { ei.loadInitParams(DnsIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); }else if (regionDict.getFunctionId().equals(212)) { ei.loadInitParams(IpPayloadTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else if (regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())) { // P2p IP ei.loadInitParams(P2pIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else if (regionDict.getFunctionId().equals(600)) {// ASN IP ei.loadInitParams(AsnIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP ei.loadInitParams(DdosIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else { ei.loadInitParams(IpAllTemplate.class, this.getMsgProp(), regionDict, serviceDict); } } else if (regionDict.getRegionType().equals(2)) {// 字符串类 if (regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())) { // P2p hash ei.loadInitParams(P2pHashStringTemplate.class, this.getMsgProp(), regionDict, serviceDict); }else if (regionDict.getFunctionId().equals(403)) { ei.loadInitParams(AppDomainTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else { ei.loadInitParams(StringAllTemplate.class, this.getMsgProp(), regionDict, serviceDict); } } else if (regionDict.getRegionType().equals(3)) {// 增强字符串类 if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { ei.loadInitParams(DnsComplexStringTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else { ei.loadInitParams(ComplexStringAllTemplate.class, this.getMsgProp(), regionDict, serviceDict); } }else if (regionDict.getRegionType().equals(6)) {// 回调类 if (regionDict.getFunctionId().equals(400)) { ei.loadInitParams(DnsResStrategyTemplate.class, this.getMsgProp(), regionDict, serviceDict); } } } /** * 分割并保存 * @param regionDict * @param serviceDict * @param specificServiceCfg * @param asnNoMap * @param list * @param cfgIndexInfos * @param appPolicyCfgs */ public void splitAndSave(FunctionRegionDict regionDict,FunctionServiceDict serviceDict, SpecificServiceCfg specificServiceCfg, List list,List cfgIndexInfos, List appPolicyCfgs){ if(list!=null&&list.size()>0) { String type=null; if (list.get(0) instanceof BaseIpCfg) { type="BaseIpCfg"; }else if(list.get(0) instanceof BaseStringCfg) { type="BaseStringCfg"; }else if(list.get(0) instanceof ComplexkeywordCfg) { type="ComplexkeywordCfg"; }else if(list.get(0) instanceof DnsResStrategy) { type="DnsResStrategy"; }else if(list.get(0) instanceof AsnIpCfg) { type="AsnIpCfg"; } if("BaseIpCfg".equals(type)) { List listPage = (List) list; if (regionDict.getFunctionId().equals(301)) { ddosCfgService.saveDdosIpCfg((List)listPage); }else if (regionDict.getFunctionId().equals(401)) { dnsIpCfgService.saveDnsIpCfg((List)listPage); }else if (specificServiceCfg!=null&®ionDict.getFunctionId().equals(405)) { appCfgService.saveAppIpCfg((List)listPage,specificServiceCfg); }else { ipCfgService.saveBatch((List)listPage, IpCfgDao.class); } }else if("AsnIpCfg".equals(type)) { List listPage = (List) list; asnIpCfgService.saveAsnIpBatch(listPage); }else if("BaseStringCfg".equals(type)) { List> listPage = (List>) list; // 调用对应配置的service // ip_payload if (regionDict.getDictId().intValue() == 167) { // interceptCfgService.saveInterceptCfg(listPage); interceptCfgService.saveStringCfgBatch(listPage, "intercept_pkt_bin"); } // http url if (regionDict.getDictId().intValue() == 9||regionDict.getDictId().intValue() == 15 || regionDict.getDictId().intValue() == 596) { // websiteCfgService.saveHttpUrlCfg(listPage); websiteCfgService.saveStringCfgBatch(listPage, "http_url_cfg"); } // FTP url/content if (regionDict.getDictId().intValue() == 36||regionDict.getDictId().intValue() == 37) { // fileTransferCfgService.saveFtpCfg(listPage); fileTransferCfgService.saveStringCfgBatch(listPage, "ftp_keyword_cfg"); } // P2P eMule Keyword if(regionDict.getDictId().intValue() == 158){ fileTransferCfgService.saveStringCfgBatch(listPage, "p2p_keyword_cfg"); } // P2P File Marking if(regionDict.getDictId().intValue() == 159){ // fileTransferCfgService.saveP2pCfg(listPage); fileTransferCfgService.saveStringCfgBatch(listPage, "p2p_hash_cfg"); } // BGP AS if (regionDict.getFunctionId().equals(61)) { // bgpCfgService.saveBgpAsCfg(listPage); bgpCfgService.saveStringCfgBatch(listPage, "ntc_bgp_as_cfg"); } // SSL SNI/SAN/CN if (regionDict.getFunctionId().intValue() == 34) { // websiteCfgService.saveSslCfg(listPage); websiteCfgService.saveStringCfgBatch(listPage, "ssl_keyword_cfg"); } // HTTP 请求/应答内容 if(regionDict.getDictId().intValue()==12||regionDict.getDictId().intValue()==13||regionDict.getDictId().intValue()==601||regionDict.getDictId().intValue()==602) { // websiteCfgService.saveHttpBodyCfg(listPage); websiteCfgService.saveStringCfgBatch(listPage, "http_body_cfg"); } // 流媒体协议 if(regionDict.getDictId().intValue()==25){ // avContentCfgService.saveContUrlCfg(listPage); avContentCfgService.saveStringCfgBatch(listPage, "av_cont_url_cfg"); } // Voip Account if(regionDict.getDictId().intValue()==16){ // avContentCfgService.saveVoIpAccountCfg(listPage); avContentCfgService.saveStringCfgBatch(listPage, "av_voip_account_cfg"); } // APP域名特征 if(regionDict.getDictId().intValue()==64){ // appCfgService.saveAppDomainCfg(listPage); appCfgService.saveAppDomainCfgBatch(listPage); } }else if("ComplexkeywordCfg".equals(type)) { List listPage = (List) list; // DNS if (regionDict.getDictId().intValue() == 28) { // websiteCfgService.saveDnsCfg(listPage); websiteCfgService.saveComplexkeywordCfgBatch(listPage, "dns_domain_cfg"); } // Mail if (regionDict.getDictId().intValue() == 30 || regionDict.getDictId().intValue() == 31||regionDict.getDictId().intValue() == 599) { // mailCfgService.saveMailCfg(listPage); mailCfgService.saveComplexkeywordCfgBatch(listPage, "mail_keyword_cfg"); } // HTTP请求头域 if(regionDict.getDictId().intValue()==10) { // websiteCfgService.saveHttpReqHeadCfg(listPage); websiteCfgService.saveComplexkeywordCfgBatch(listPage, "http_req_head_cfg"); } // HTTP响应头域 if(regionDict.getDictId().intValue()==11) { // websiteCfgService.saveHttpResHeadCfg(listPage); websiteCfgService.saveComplexkeywordCfgBatch(listPage, "http_res_head_cfg"); } // APP http特征 if(regionDict.getDictId().intValue()==63) { // appCfgService.saveAppHttpCfg(listPage); appCfgService.saveAppHttpCfgBatch(listPage); } }else if("DnsResStrategy".equals(type)) { List listPage = (List) list; // dnsResStrategyService.saveDnsResStrategies(listPage);// dns_res_strategy dnsResStrategyService.saveDnsResStrategyCfgBatch(listPage); } } if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) { ipCfgService.saveCfgIndexOf(cfgIndexInfos); } if (appPolicyCfgs != null && appPolicyCfgs.size() > 0) { appCfgService.savePolicyList(appPolicyCfgs); } } /** * 多域配置导出 * * @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"; fileName = fileName.replaceAll(" ", "_"); if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { fileName = URLEncoder.encode(fileName, "UTF-8"); } else { fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); } new ExportExcel(msgProp, titleList, noExportMap, classMap, 1).setDataList(msgProp, dataMap, map) .write(response, fileName).dispose(); } }