summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangxin <[email protected]>2019-04-03 18:23:40 +0800
committerwangxin <[email protected]>2019-04-03 18:23:40 +0800
commit4157f58ab95e108a8d6e785e19add887b4bc8d09 (patch)
tree157e655968347d7d47a28b01d6e951be4fef66b8
parentd27ba7ec9386fd0a4fc25ff61afadd53335d9295 (diff)
HTTP(S)配置导入分离feature-import
-rw-r--r--src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java386
-rw-r--r--src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java151
-rw-r--r--src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp1
3 files changed, 537 insertions, 1 deletions
diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java
index 0f9630db6..8f390f3a4 100644
--- a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java
+++ b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java
@@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -15,17 +16,22 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.callback.ProxyFileStrategyCfg;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
@@ -35,10 +41,27 @@ import com.nis.domain.configuration.HttpResHeadCfg;
import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
+import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate;
+import com.nis.domain.configuration.template.ComplexStringAllTemplate;
+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.StringAllNotDoLogTemplate;
+import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.exceptions.MaatConvertException;
+import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
+import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -499,4 +522,367 @@ public class HttpRedirectPolicyController extends BaseController {
* +"/ntc/website/httpList?functionId="+entity.getFunctionId();
*/
}
+ @RequestMapping(value = {"import"}, method=RequestMethod.POST)
+ public String importDns(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ @RequestParam("files") MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ logger.warn("import start...");
+ long start=System.currentTimeMillis();
+ ImportBigExcel ei=null;
+ try {
+ FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
+ StringBuffer errTip=new StringBuffer();
+ BlockingQueue<BaseIpCfg> ipPortCfgs =null;
+ BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
+ BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
+ List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
+ Properties properties=this.getMsgProp();
+ 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]));
+ //------------------------------------check format start----------------------------
+ if (regionDict.getRegionType().equals(1)) {// IP
+ if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断
+ //加载模板
+ ei.loadInitParams(HttpsRejectIpTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsRejectIpTemplate> list = ei.getDataList(HttpsRejectIpTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向
+ //加载模板
+ ei.loadInitParams(HttpsRedirectIpTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsRedirectIpTemplate> list = ei.getDataList(HttpsRedirectIpTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
+ //加载模板
+ ei.loadInitParams(HttpsReplaceIpTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsReplaceIpTemplate> list = ei.getDataList(HttpsReplaceIpTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单
+ //加载模板
+ ei.loadInitParams(IpAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<IpAllNotDoLogTemplate> list = ei.getDataList(IpAllNotDoLogTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }else {
+ //加载模板
+ ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }
+ }else if (regionDict.getRegionType().equals(2)) {
+ if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断
+ //加载模板
+ ei.loadInitParams(HttpsRejectTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsRejectTemplate> list = ei.getDataList(HttpsRejectTemplate.class);
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向
+ //加载模板
+ ei.loadInitParams(HttpsRedirectTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsRedirectTemplate> list = ei.getDataList(HttpsRedirectTemplate.class);
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
+ //加载模板
+ ei.loadInitParams(HttpsReplaceTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsReplaceTemplate> list = ei.getDataList(HttpsReplaceTemplate.class);
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单
+ //加载模板
+ ei.loadInitParams(StringAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<StringAllNotDoLogTemplate> list = ei.getDataList(StringAllNotDoLogTemplate.class);
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else {
+ //加载模板
+ ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class);
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }
+ }else if (regionDict.getRegionType().equals(3)) {
+ if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断
+ //加载模板
+ ei.loadInitParams(HttpsRejectComplexTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsRejectComplexTemplate> list = ei.getDataList(HttpsRejectComplexTemplate.class);
+ complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
+ } else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向
+ //加载模板
+ ei.loadInitParams(HttpsRedirectComplexTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsRedirectComplexTemplate> list = ei.getDataList(HttpsRedirectComplexTemplate.class);
+ complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
+ } else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
+ //加载模板
+ ei.loadInitParams(HttpsReplaceComplexTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<HttpsReplaceComplexTemplate> list = ei.getDataList(HttpsReplaceComplexTemplate.class);
+ complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
+ } else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单
+ //加载模板
+ ei.loadInitParams(ComplexStringAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<ComplexStringAllNotDoLogTemplate> list = ei.getDataList(ComplexStringAllNotDoLogTemplate.class);
+ complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else {
+ //加载模板
+ ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue<ComplexStringAllTemplate> list = ei.getDataList(ComplexStringAllTemplate.class);
+ complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }
+ }
+ //删除文件
+ if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ //------------------------------------check format end----------------------------
+ Date date = new Date();
+ String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
+ if (regionDict.getRegionType().equals(1)) {// IP
+ List<BaseIpCfg> _ipPortCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!ipPortCfgs.isEmpty()) {
+ ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List<Integer> compileIds=Lists.newArrayList();
+ List<Integer> regionIds=Lists.newArrayList();
+ List<Integer> groupIds=Lists.newArrayList();
+ List<Integer> numRegionGroupIds=Lists.newArrayList();
+ List<Integer> numRegionRegionIds=Lists.newArrayList();
+ if(!regionDict.getFunctionId().equals(405)) {//app ip compileId 从config_group_info中取
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ //需要获取数值域的id
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) {
+ numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
+ }
+ }else {
+ try {
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取域ID出错");
+ throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&&regionIds.size()==_ipPortCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null) {
+ if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind));
+ }
+ if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind));
+ }
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
+ cfg.setTableName("ip_port_cfg");
+ if(compileIds.size()==_ipPortCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ if(cfg.getDnsStrategyId()!=null) {
+ cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString()));
+ }
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+
+ httpRedirectCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _ipPortCfgs.clear();
+ }
+ }else if (regionDict.getRegionType().equals(2)) {//账号
+ List<BaseStringCfg<?>> _stringCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!stringCfgs.isEmpty()) {
+ stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List<Integer> compileIds=Lists.newArrayList();
+ List<Integer> groupIds=Lists.newArrayList();
+ List<Integer> regionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_stringCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_stringCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_stringCfgs.size());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseStringCfg cfg : _stringCfgs) {
+ cfg.setAction(serviceDict.getAction());
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_stringCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&&regionIds.size()==_stringCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict.getServiceId());
+ if(compileIds!=null&&compileIds.size()==_stringCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo, new String[] {"cfgId"});
+ if(cfg.getDnsStrategyId()!=null) {
+ cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString()));
+ }
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ httpRedirectCfgService.saveAndSend(regionDict, cfgIndexInfos, _stringCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _stringCfgs.clear();
+ }
+ } else if (regionDict.getRegionType().equals(3)) {//dns
+ List<ComplexkeywordCfg> _complexkeywordCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!complexkeywordCfgs.isEmpty()) {
+ complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List<Integer> compileIds=Lists.newArrayList();
+ List<Integer> groupIds=Lists.newArrayList();
+ List<Integer> regionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_complexkeywordCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_complexkeywordCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_complexkeywordCfgs.size());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_complexkeywordCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&&regionIds.size()==_complexkeywordCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ //cfg.setIsAudit(0);
+ //cfg.setIsValid(0);
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict.getServiceId());
+ if(compileIds!=null&&compileIds.size()==_complexkeywordCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ if(cfg.getDnsStrategyId()!=null) {
+ cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString()));
+ }
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ httpRedirectCfgService.saveAndSend(regionDict, cfgIndexInfos, _complexkeywordCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _complexkeywordCfgs.clear();
+ }
+ }
+ }
+ if(errTip.toString().length()>0) {
+ addMessage(redirectAttributes,"error", errTip.toString());
+ }
+ } catch (Exception e) {
+ if(ei!=null) {
+ if(ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ }
+ if(e instanceof MaatConvertException) {
+ addMessage(redirectAttributes,"error", "request_service_failed");
+ }else if(e instanceof ServiceException) {
+ addMessage(redirectAttributes,"error", e.getMessage());
+ }else if(e instanceof IndexOutOfBoundsException){
+ addMessage(redirectAttributes,"error", "template_error");
+ }else {
+ addMessage(redirectAttributes,"error", "import_failed");
+ }
+ e.printStackTrace();
+ }
+ long end=System.currentTimeMillis();
+ logger.warn("import finish,cost:"+(end-start));
+ return "redirect:" + adminPath+ importPath;
+ }
}
diff --git a/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java b/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java
index f6d9d6971..86291469d 100644
--- a/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java
+++ b/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java
@@ -5,16 +5,21 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page;
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.ComplexkeywordCfg;
import com.nis.domain.configuration.HttpBodyCfg;
import com.nis.domain.configuration.HttpReqHeadCfg;
import com.nis.domain.configuration.HttpResHeadCfg;
@@ -34,6 +39,7 @@ import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao;
+import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.dao.configuration.WebsiteCfgDao;
import com.nis.web.security.UserUtils;
@@ -53,6 +59,8 @@ public class HttpRedirectCfgService extends CrudService<WebsiteCfgDao,CfgIndexIn
protected AreaIpCfgDao areaIpCfgDao;
@Autowired
protected StringCfgDao stringCfgDao;
+ @Autowired
+ protected IpCfgDao ipCfgDao;
public List<CfgIndexInfo> getCfgIndexInfos(CfgIndexInfo entity){
return websiteCfgDao.getCfgIndexInfos(entity);
@@ -541,5 +549,146 @@ public class HttpRedirectCfgService extends CrudService<WebsiteCfgDao,CfgIndexIn
logger.info("http配置取消配置响应信息:"+result.getMsg());
}
}
+
+ /**
+ * 配置导入,目前只支持单sheet
+ * @param regionDict
+ * @param cfgIndexInfos
+ * @param data
+ * @param send
+ */
+ @Transactional(readOnly=false,rollbackFor=RuntimeException.class)
+ public void saveAndSend(FunctionRegionDict regionDict,List<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
+ if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
+ this.saveCfgIndexOf(cfgIndexInfos);
+ }
+ if(data!=null&&!data.isEmpty()) {
+ List<MaatCfg> configCompileList = new ArrayList();
+ if(data.get(0) instanceof BaseIpCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ BaseIpCfg cfg =(BaseIpCfg)data.get(index);
+ ipCfgDao.insertForBatch(cfg);
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,1);
+ //userregion处理
+ if(regionDict.getFunctionId()==207 || regionDict.getFunctionId()==208 || regionDict.getFunctionId()==209) {// HTTP(s)阻断、重定向、替换
+ String userRegion = Constants.USER_REGION_PLACEHOLDER;
+ if(cfg.getAction().equals(Constants.REJECT_ACTION)) {// 阻断
+ userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_CONTENT_KEY+"="+cfg.getUserRegion2();
+ }else if(cfg.getAction().equals(48)) {// 重定向
+ userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_URL_KEY+"="+cfg.getUserRegion2();;
+ }else if(cfg.getAction().equals(Constants.REPLACE_ACTION)) {// 替换
+ String substitute = "/"+cfg.getUserRegion2()+"/"+cfg.getUserRegion3();
+ userRegion = Constants.REPLACE_ZONE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute;
+ }
+ maatCfg.setUserRegion(userRegion);
+ }
+ configCompileList.add(maatCfg);
+ }
+ }
+ }
+ }else if(data.get(0) instanceof BaseStringCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ BaseStringCfg cfg = (BaseStringCfg)data.get(index);
+ if(cfg.getCfgKeywords()!=null && !"".equals(cfg.getCfgKeywords())){
+ if(regionDict.getDictId().intValue()==97 || regionDict.getDictId().intValue()==79 ||
+ regionDict.getDictId().intValue()==85 || regionDict.getDictId().intValue()==91 ||
+ regionDict.getDictId().intValue()==99){
+ cfg.setTableName("http_url_cfg");
+ }
+ if(regionDict.getDictId().intValue()==94 || regionDict.getDictId().intValue()==95 ||
+ regionDict.getDictId().intValue()==88 || regionDict.getDictId().intValue()==89 ||
+ regionDict.getDictId().intValue()==82 || regionDict.getDictId().intValue()==83 ||
+ regionDict.getDictId().intValue()==103 || regionDict.getDictId().intValue()==104) {
+ cfg.setTableName("http_body_cfg");
+ }
+ stringCfgDao.saveStringCfgBatch(cfg);
+ }
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,2);
+ //userregion处理
+ if(regionDict.getFunctionId()==207 || regionDict.getFunctionId()==208 || regionDict.getFunctionId()==209) {// HTTP(s)阻断、重定向、替换
+ String userRegion = Constants.USER_REGION_PLACEHOLDER;
+ if(cfg.getAction().equals(Constants.REJECT_ACTION)) {// 阻断
+ userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_CONTENT_KEY+"="+cfg.getUserRegion2();
+ }else if(cfg.getAction().equals(48)) {// 重定向
+ userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_URL_KEY+"="+cfg.getUserRegion2();;
+ }else if(cfg.getAction().equals(Constants.REPLACE_ACTION)) {// 替换
+ String substitute = "/"+cfg.getUserRegion2()+"/"+cfg.getUserRegion3();
+ userRegion = Constants.REPLACE_ZONE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute;
+ }
+ maatCfg.setUserRegion(userRegion);
+ }
+ configCompileList.add(maatCfg);
+ }
+
+ }
+ }
+ }else if(data.get(0) instanceof ComplexkeywordCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ ComplexkeywordCfg cfg = (ComplexkeywordCfg)data.get(index);
+ if(cfg.getCfgKeywords()!=null && !"".equals(cfg.getCfgKeywords())){
+ if("subscribe_id".equals(regionDict.getConfigServiceType())){
+ cfg.setTableName("ntc_subscribe_id_cfg");
+ }else if(regionDict.getDictId().intValue()==98 || regionDict.getDictId().intValue()==80 ||
+ regionDict.getDictId().intValue()==86 || regionDict.getDictId().intValue()==92 ||
+ regionDict.getDictId().intValue()==100) {
+ cfg.setTableName("http_req_head_cfg");
+ }else if(regionDict.getDictId().intValue()==102 || regionDict.getDictId().intValue()==81 ||
+ regionDict.getDictId().intValue()==87 || regionDict.getDictId().intValue()==93) {
+ cfg.setTableName("http_res_head_cfg");
+ }
+ stringCfgDao.saveComplexkeywordCfgBatch(cfg);
+ }
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,3);
+ //userregion处理
+ if(regionDict.getFunctionId()==207 || regionDict.getFunctionId()==208 || regionDict.getFunctionId()==209) {// HTTP(s)阻断、重定向、替换
+ String userRegion = Constants.USER_REGION_PLACEHOLDER;
+ if(cfg.getAction().equals(Constants.REJECT_ACTION)) {// 阻断
+ userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_CONTENT_KEY+"="+cfg.getUserRegion2();
+ }else if(cfg.getAction().equals(48)) {// 重定向
+ userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_URL_KEY+"="+cfg.getUserRegion2();;
+ }else if(cfg.getAction().equals(Constants.REPLACE_ACTION)) {// 替换
+ String substitute = "/"+cfg.getUserRegion2()+"/"+cfg.getUserRegion3();
+ userRegion = Constants.REPLACE_ZONE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute;
+ }
+ maatCfg.setUserRegion(userRegion);
+ }
+ configCompileList.add(maatCfg);
+ }
+
+ }
+ }
+ }
+
+ if (send && configCompileList.size() > 0) {
+ ToMaatBean maatBean = new ToMaatBean();
+ maatBean.setConfigCompileList(configCompileList);
+ maatBean.setAuditTime(new Date());
+ maatBean.setCreatorName(UserUtils.getUser().getName());
+ maatBean.setVersion(Constants.MAAT_VERSION);
+ maatBean.setOpAction(Constants.INSERT_ACTION);
+ long start=System.currentTimeMillis();
+ // 调用服务接口下发配置数据
+ String json = BaseService.gsonToJson(maatBean);
+ if(configCompileList.size()>10) {
+ logger.info("HTTP(S)配置下发配置条数:" + configCompileList.size());
+ }else {
+ logger.info("HTTP(S)配置下发配置参数:" + json);
+ }
+ // 调用服务接口下发配置
+ ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
+ logger.info("HTTP(S)配置下发响应信息:" + result.getMsg());
+ long end=System.currentTimeMillis();
+ logger.info("HTTP(S)配置下发配置耗时:" + (end-start));
+
+ }
+ }
+
+ }
}
diff --git a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp
index f875bfd3c..ff6956c7c 100644
--- a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp
@@ -805,6 +805,7 @@
</div>
</div>
<c:set var="importPath" value="/proxy/control/httpRedirect?functionId=${cfg.functionId}"/>
+<c:set var="importUrl" value="/proxy/control/httpRedirect/import"/>
<!-- 模板导入,start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body>