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.Map.Entry;
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.Page;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.basics.ServiceDictInfo;
import com.nis.domain.basics.SysDictInfo;
import com.nis.domain.configuration.AppComplexFeatureCfg;
import com.nis.domain.configuration.AppDomainCfg;
import com.nis.domain.configuration.AppFeatureIndex;
import com.nis.domain.configuration.AppHttpCfg;
import com.nis.domain.configuration.AppIpCfg;
import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.AppSslCertCfg;
import com.nis.domain.configuration.AppTopicDomainCfg;
import com.nis.domain.configuration.AreaBean;
import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.AvSignSampleCfg;
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.DdosIpCfg;
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjTrustedCaCert;
import com.nis.domain.configuration.PxyObjTrustedCaCrl;
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.AppPayloadTemplate;
import com.nis.domain.configuration.template.AsnIpTemplate;
import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate;
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.DnsFakeIpTemplate;
import com.nis.domain.configuration.template.DnsIpTemplate;
import com.nis.domain.configuration.template.DnsResStrategyTemplate;
import com.nis.domain.configuration.template.DomainInterceptMonitTemplate;
import com.nis.domain.configuration.template.DomainInterceptRateLimitTemplate;
import com.nis.domain.configuration.template.DomainInterceptTemplate;
import com.nis.domain.configuration.template.HttpsRedirectComplexTemplate;
import com.nis.domain.configuration.template.HttpsRedirectIpTemplate;
import com.nis.domain.configuration.template.HttpsRedirectTemplate;
import com.nis.domain.configuration.template.HttpsRejectComplexTemplate;
import com.nis.domain.configuration.template.HttpsRejectIpTemplate;
import com.nis.domain.configuration.template.HttpsRejectTemplate;
import com.nis.domain.configuration.template.HttpsReplaceComplexTemplate;
import com.nis.domain.configuration.template.HttpsReplaceIpTemplate;
import com.nis.domain.configuration.template.HttpsReplaceTemplate;
import com.nis.domain.configuration.template.IpAllNotDoLogTemplate;
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.IpSpoofingTemplate;
import com.nis.domain.configuration.template.IpWhitelistTemplate;
import com.nis.domain.configuration.template.P2pHashStringTemplate;
import com.nis.domain.configuration.template.P2pIpTemplate;
import com.nis.domain.configuration.template.StringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.configuration.template.TopicWebsiteTemplate;
import com.nis.domain.log.BaseLogEntity;
import com.nis.domain.log.SearchReport;
import com.nis.domain.maat.MaatCfg;
import com.nis.domain.maat.MaatCfg.DigestCfg;
import com.nis.domain.maat.MaatCfg.GroupCfg;
import com.nis.domain.maat.MaatCfg.IpCfg;
import com.nis.domain.maat.MaatCfg.NumBoundaryCfg;
import com.nis.domain.maat.MaatCfg.StringCfg;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.report.NtcPzReport;
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.ServiceConfigTemplateUtil;
import com.nis.util.StringUtil;
import com.nis.util.excel.ExcelCsv;
import com.nis.util.excel.ExportExcel;
import com.nis.util.excel.ImportBigExcel;
import com.nis.util.excel.thread.CheckAppFeatureComplexStringFormatThread;
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.util.excel.thread.CheckTopicWebsiteFormatThread;
import com.nis.web.security.UserUtils;
import com.nis.web.service.ArchiveServcie;
import com.nis.web.service.AreaService;
import com.nis.web.service.BaseService;
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.AsnGroupInfoService;
import com.nis.web.service.basics.AsnIpCfgService;
import com.nis.web.service.basics.IpReuseIpCfgService;
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.CommonPolicyService;
import com.nis.web.service.configuration.ComplexStringCfgService;
import com.nis.web.service.configuration.ConfigSynchronizationService;
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.IpAddrPoolCfgService;
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.PxyObjSpoofingIpPoolService;
import com.nis.web.service.configuration.RequestInfoService;
import com.nis.web.service.configuration.UserManageService;
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.ConfigGroupInfoService;
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;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
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 ConfigSynchronizationService configSynchronizationService;
@Autowired
protected CachePolicyService cachePolicyService;
@Autowired
protected CommonPolicyService commonPolicyService;
@Autowired
protected UserManageService userManageService;
@Autowired
protected IpReuseIpCfgService ipReuseIpCfgService;
@Autowired
protected IpAddrPoolCfgService ipAddrPoolCfgService;// 地址池管理service
@Autowired
protected ConfigGroupInfoService configGroupInfoService;// 分组复用
@Autowired
protected PxyObjSpoofingIpPoolService pxyObjSpoofingIpPoolService;// 欺骗IP池
@Autowired
protected AsnGroupInfoService asnGroupInfoService;// asn组
/**
* 管理基础路径
*/
@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
* @param messageType 消息类型:info、success、warning、error、loading
*/
protected void addMessage(String messageType,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.addAttribute("messageType", messageType);
}
/**
* 添加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());
// HTTP +keyword
if(report.getFunctionId() == 8){
serviceList.addAll(DictUtils.getFunctionServiceDictList(635));
}
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=Configurations.getMsgPropZh();
} else if (language.equals("ru")) {
msgProp=Configurations.getMsgPropRu();
} else {
msgProp=Configurations.getMsgPropEn();
}
} 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();
String searchEndTime = DateUtils.formatDateTime(time.getTime());
time.add(Calendar.MINUTE, -(Constants.LOG_TIME_RANGE/1000/60));
String searchStartTime = DateUtils.formatDateTime(time.getTime());
params.put("searchFoundStartTime", searchStartTime);
params.put("searchFoundEndTime", searchEndTime);
entry.setSearchFoundStartTime(searchStartTime);
entry.setSearchFoundEndTime(searchEndTime);
// 判断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 (StringUtils.isNotBlank(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(StringBuffer _msg,FunctionServiceDict serviceDict, FunctionRegionDict regionDict,List