diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index 22a0c8999..bf9ecc8df 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -370,7 +370,14 @@ public final class Constants { public static final String BGP_IP_REGION = Configurations.getStringProperty("bgp_ip_region","bgp_ip"); public static final String KEYWORD_EXPR = Configurations.getStringProperty("keyword_expr","***and***"); //用户自定义域分隔符 - public static final String USER_REGION_SPLIT = Configurations.getStringProperty("user_region_split", ";"); - //用户自定义域占位符 - public static final String USER_REGION_PLACEHOLDER = Configurations.getStringProperty("user_region_placeholder", ";;"); + public static final String USER_REGION_SPLIT = Configurations.getStringProperty("user_region_split", ";"); + //用户自定义域占位符 + public static final String USER_REGION_PLACEHOLDER = Configurations.getStringProperty("user_region_placeholder", ";;"); + + //HTTP重定向配置域 + public static final String HTTP_REDIRECT_URL_REGION = Configurations.getStringProperty("http_redirect_url_region","PXY_CTRL_HTTP_URL"); + public static final String HTTP_REDIRECT_REQ_HEAD_REGION = Configurations.getStringProperty("http_redirect_req_hdr_region","PXY_CTRL_HTTP_REQ_HDR"); + public static final String HTTP_REDIRECT_RES_HEAD_REGION = Configurations.getStringProperty("http_redirect_res_hdr_region","PXY_CTRL_HTTP_RES_HDR"); + public static final String HTTP_REDIRECT_REQ_BODY_REGION = Configurations.getStringProperty("http_redirect_req_body_region","PXY_CTRL_HTTP_REQ_BODY"); + public static final String HTTP_REDIRECT_RES_BODY_REGION = Configurations.getStringProperty("http_redirect_res_body_region","PXY_CTRL_HTTP_RES_BODY"); } diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index fa51090b7..d8bdcea76 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -64,6 +64,7 @@ import com.nis.web.service.configuration.ControlPolicyService; import com.nis.web.service.configuration.DnsIpCfgService; import com.nis.web.service.configuration.DnsResStrategyService; import com.nis.web.service.configuration.FileTransferCfgService; +import com.nis.web.service.configuration.HttpRedirectCfgService; import com.nis.web.service.configuration.IpCfgService; import com.nis.web.service.configuration.MailCfgService; import com.nis.web.service.configuration.NumCfgService; @@ -159,6 +160,8 @@ public class BaseController { protected PolicyGroupInfoService policyGroupInfoService; @Autowired protected DnsResStrategyService dnsResStrategyService; + @Autowired + protected HttpRedirectCfgService httpRedirectCfgService; /** * 管理基础路径 */ 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 new file mode 100644 index 000000000..91b83f087 --- /dev/null +++ b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java @@ -0,0 +1,188 @@ +package com.nis.web.controller.configuration.proxy; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +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.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.servlet.mvc.support.RedirectAttributes; + +import com.nis.domain.Page; +import com.nis.domain.configuration.AreaIpCfg; +import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.BaseStringCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.HttpBodyCfg; +import com.nis.domain.configuration.HttpReqHeadCfg; +import com.nis.domain.configuration.HttpResHeadCfg; +import com.nis.domain.configuration.HttpUrlCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.Constants; +import com.nis.util.StringUtil; +import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; + +/** + * http重定向策略 + * @author zhangwei + * + */ +@Controller +@RequestMapping("${adminPath}/proxy/control/httpRedirect") +public class HttpRedirectPolicyController extends BaseController{ + @RequestMapping(value = {"list"}) + public String list(Model model,HttpServletRequest request,HttpServletResponse response,@ModelAttribute("cfg")CfgIndexInfo cfg){ + Page searchPage=new Page(request,response,"a"); + Page page = httpRedirectCfgService.getHttpRedirectList(searchPage, cfg); + model.addAttribute("page", page); + initPageCondition(model,cfg); + return "/cfg/proxy/control/httpRedirectList"; + } + @RequestMapping(value = {"form"}) + @RequiresPermissions(value={"control:httpRedirect:config"}) + public String form(Model model,HttpServletRequest request,HttpServletResponse response,String ids,@ModelAttribute("cfg")CfgIndexInfo entity){ + if(StringUtils.isNotBlank(ids)){ + entity = httpRedirectCfgService.getHttpCfg(Long.parseLong(ids)); + + HttpUrlCfg urlCfg = new HttpUrlCfg(); + urlCfg.setCfgType(Constants.HTTP_REDIRECT_URL_REGION); + entity.setHttpUrl(urlCfg); + HttpReqHeadCfg reqHdrCfg = new HttpReqHeadCfg(); + reqHdrCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_HEAD_REGION); + entity.setHttpReqHdr(reqHdrCfg); + HttpResHeadCfg resHdrCfg = new HttpResHeadCfg(); + resHdrCfg.setCfgType(Constants.HTTP_REDIRECT_RES_HEAD_REGION); + entity.setHttpResHdr(resHdrCfg); + HttpBodyCfg reqBodyCfg = new HttpBodyCfg(); + reqBodyCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + entity.setHttpReqBody(reqBodyCfg); + HttpBodyCfg resBodyCfg = new HttpBodyCfg(); + resBodyCfg.setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + entity.setHttpResBody(resBodyCfg); + + int httpReqCfgNum = entity.getHttpUrlList().size()+ + entity.getHttpReqBodyList().size()+ + entity.getHttpReqHdrList().size(); + int httpResCfgNum = entity.getHttpResHdrList().size()+ + entity.getHttpResBodyList().size(); + model.addAttribute("httpReqCfgNum", httpReqCfgNum); + model.addAttribute("httpResCfgNum", httpResCfgNum); + + if(entity.getHttpUrlList().size()==0){ + entity.getHttpUrlList().add(urlCfg); + } + if(entity.getHttpReqHdrList().size()==0){ + entity.getHttpReqHdrList().add(reqHdrCfg); + } + if(entity.getHttpResHdrList().size()==0){ + entity.getHttpResHdrList().add(resHdrCfg); + } + if(entity.getHttpReqBodyList().size()==0){ + entity.getHttpReqBodyList().add(reqBodyCfg); + } + if(entity.getHttpResBodyList().size()==0){ + entity.getHttpResBodyList().add(resBodyCfg); + } + initUpdateFormCondition(model,entity); + }else{ + //设置http各类配置的配置域类型 + HttpUrlCfg urlCfg = new HttpUrlCfg(); + urlCfg.setCfgType(Constants.HTTP_REDIRECT_URL_REGION); + entity.setHttpUrl(urlCfg); + HttpReqHeadCfg reqHdrCfg = new HttpReqHeadCfg(); + reqHdrCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_HEAD_REGION); + entity.setHttpReqHdr(reqHdrCfg); + HttpResHeadCfg resHdrCfg = new HttpResHeadCfg(); + resHdrCfg.setCfgType(Constants.HTTP_REDIRECT_RES_HEAD_REGION); + entity.setHttpResHdr(resHdrCfg); + HttpBodyCfg reqBodyCfg = new HttpBodyCfg(); + reqBodyCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + entity.setHttpReqBody(reqBodyCfg); + HttpBodyCfg resBodyCfg = new HttpBodyCfg(); + resBodyCfg.setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + entity.setHttpResBody(resBodyCfg); + + List urlList=new ArrayList(); + urlList.add(urlCfg); + entity.setHttpUrlList(urlList); + List reqHdrList=new ArrayList(); + reqHdrList.add(reqHdrCfg); + entity.setHttpReqHdrList(reqHdrList); + List resHdrList=new ArrayList(); + resHdrList.add(resHdrCfg); + entity.setHttpResHdrList(resHdrList); + List reqBodyList=new ArrayList(); + reqBodyList.add(reqBodyCfg); + entity.setHttpReqBodyList(reqBodyList); + List resBodyList=new ArrayList(); + resBodyList.add(resBodyCfg); + entity.setHttpResBodyList(resBodyList); + initFormCondition(model,entity); + } + + model.addAttribute("_cfg", entity); + return "/cfg/proxy/control/httpRedirectForm"; + } + + @RequestMapping(value = {"saveOrUpdate"}) + @RequiresPermissions(value={"control:httpRedirect:config"}) + public String saveOrUpdate(Model model,HttpServletRequest request,HttpServletResponse response, + @ModelAttribute("cfg")CfgIndexInfo cfg){ + try{ + httpRedirectCfgService.saveHttpCfg(cfg); + addMessage(model,"save_success"); + }catch(Exception e){ + logger.error("信息保存失败",e); + e.printStackTrace(); + addMessage(model,"save_failed"); + } + + return "redirect:" + adminPath +"/proxy/control/httpRedirect/list?functionId="+cfg.getFunctionId(); + } + @RequestMapping(value = {"ajaxHttpSubList"}) + @RequiresPermissions(value={"control:httpRedirect:config"}) + public String ajaxHttpSubList(Model model,Long cfgId,Integer index) { + CfgIndexInfo cfg = httpRedirectCfgService.getHttpCfg(cfgId); + model.addAttribute("_cfg", cfg); + model.addAttribute("index", index); + return "/cfg/proxy/control/httpRedirectSubList"; + } + @RequestMapping(value = {"delete"}) + @RequiresPermissions(value={"control:httpRedirect:config"}) + public String delete(Integer isAudit,Integer isValid,String ids,Integer functionId){ + httpRedirectCfgService.updateHttpCfgValid(isValid,ids,functionId); + return "redirect:" + adminPath +"/proxy/control/httpRedirect/list?functionId="+functionId; + } + @RequestMapping(value = {"audit"}) + @RequiresPermissions(value={"control:httpRedirect:audit"}) + public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = httpRedirectCfgService.getHttpCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + httpRedirectCfgService.auditHttpCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.info("http重定向配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes, e.getMessage()); + } + } + return "redirect:" + adminPath +"/proxy/control/httpRedirect/list?functionId="+functionId; + } +} diff --git a/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java b/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java new file mode 100644 index 000000000..cca2fb769 --- /dev/null +++ b/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java @@ -0,0 +1,434 @@ +package com.nis.web.service.configuration; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import com.nis.domain.Page; +import com.nis.domain.configuration.AreaIpCfg; +import com.nis.domain.configuration.AvFileSampleCfg; +import com.nis.domain.configuration.AvSignSampleCfg; +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.DnsDomainCfg; +import com.nis.domain.configuration.HttpBodyCfg; +import com.nis.domain.configuration.HttpReqHeadCfg; +import com.nis.domain.configuration.HttpResHeadCfg; +import com.nis.domain.configuration.HttpUrlCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.SslKeywordCfg; +import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.ToMaatBean; +import com.nis.domain.maat.ToMaatResult; +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.StringCfg; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.DictUtils; +import com.nis.util.IpUtil; +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; +import com.nis.web.service.BaseService; +import com.nis.web.service.CrudService; + +/** + * 网站相关配置事务类 + * @author dell + * + */ +@Service +public class HttpRedirectCfgService extends CrudService { + @Autowired + protected WebsiteCfgDao websiteCfgDao; + @Autowired + protected AreaIpCfgDao areaIpCfgDao; + + public CfgIndexInfo getHttpCfg(Long cfgId){ + CfgIndexInfo entity = websiteCfgDao.getCfgIndexInfo(cfgId); + List httpUrlList = websiteCfgDao.getHttpUrlList(entity); + List httpReqHdrList = websiteCfgDao.getHttpReqHdrList(entity); + List httpResHdrList = websiteCfgDao.getHttpResHdrList(entity); + entity.setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + List httpReqBodyList = websiteCfgDao.getHttpReqBodyList(entity); + entity.setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + List httpResBodyList = websiteCfgDao.getHttpResBodyList(entity); + entity.setHttpReqBodyList(httpReqBodyList); + entity.setHttpReqHdrList(httpReqHdrList); + entity.setHttpResBodyList(httpResBodyList); + entity.setHttpResHdrList(httpResHdrList); + entity.setHttpUrlList(httpUrlList); + return entity; + } + + public Page getHttpRedirectList(Page page, CfgIndexInfo entity){ + // 生成数据权限过滤条件(dsf为dataScopeFilter的简写,在xml中使用 ${sqlMap.dsf}调用权限SQL) + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"a")); + entity.setPage(page); + List list = websiteCfgDao.getWebsiteList(entity); + page.setList(list); + return page; + } + public void saveHttpCfg(CfgIndexInfo entity){ + //设置区域运营商信息 + setAreaEffectiveIds(entity); + if(entity.getCfgId()==null){ + Integer compileId = 0; + try { + List idList = ConfigServiceUtil.getId(1, 1); + if(idList!=null && idList.size()>0){ + compileId = idList.get(0); + } + entity.setCompileId(compileId); + entity.setCreateTime(new Date()); + entity.setCreatorId(entity.getCurrentUser().getId()); + websiteCfgDao.saveCfgIndex(entity); + if(entity.getHttpUrlList()!=null){ + for(HttpUrlCfg cfg:entity.getHttpUrlList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpUrlCfg(cfg); + } + } + if(entity.getHttpReqHdrList()!=null){ + for(HttpReqHeadCfg cfg:entity.getHttpReqHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpReqHdrCfg(cfg); + } + } + if(entity.getHttpResHdrList()!=null){ + for(HttpResHeadCfg cfg:entity.getHttpResHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpResHdrCfg(cfg); + } + } + if(entity.getHttpReqBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpReqBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + if(entity.getHttpResBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpResBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + //保存区域IP信息 + if(entity.getAreaCfg()!=null){ + for(AreaIpCfg cfg:entity.getAreaCfg()){ + cfg.initDefaultValue(); + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + areaIpCfgDao.saveAreaIpCfg(cfg); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + + }else{ + websiteCfgDao.updateCfgIndex(entity); + //无效子配置后,再新增子配置 + websiteCfgDao.deleteHttpUrlCfg(entity); + websiteCfgDao.deleteHttpReqHdrCfg(entity); + websiteCfgDao.deleteHttpResHdrCfg(entity); + websiteCfgDao.deleteHttpBodyCfg(entity); + AreaIpCfg area = new AreaIpCfg(); + area.setCompileId(entity.getCompileId()); + area.setFunctionId(entity.getFunctionId()); + areaIpCfgDao.deleteAreaIpCfg(area); + entity.setCreateTime(new Date()); + entity.setCreatorId(entity.getCurrentUser().getId()); + if(entity.getHttpUrlList()!=null){ + for(HttpUrlCfg cfg:entity.getHttpUrlList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpUrlCfg(cfg); + } + } + if(entity.getHttpReqHdrList()!=null){ + for(HttpReqHeadCfg cfg:entity.getHttpReqHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpReqHdrCfg(cfg); + } + } + if(entity.getHttpResHdrList()!=null){ + for(HttpResHeadCfg cfg:entity.getHttpResHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpResHdrCfg(cfg); + } + } + if(entity.getHttpReqBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpReqBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + if(entity.getHttpResBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpResBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + //保存区域IP信息 + if(entity.getAreaCfg()!=null){ + for(AreaIpCfg cfg:entity.getAreaCfg()){ + cfg.initDefaultValue(); + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgDesc","cfgRegionCode","cfgType"}); + areaIpCfgDao.saveAreaIpCfg(cfg); + } + } + } + } + public void updateHttpCfgValid(Integer isValid,String ids,Integer functionId){ + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity.setCfgId(Long.parseLong(id)); + entity.setIsValid(isValid); + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(new Date()); + entity.setTableName(CfgIndexInfo.getTablename()); + entity.setFunctionId(functionId); + websiteCfgDao.updateCfgValid(entity); + //查询子配置 + entity = this.getHttpCfg(Long.parseLong(id)); + + if(entity.getHttpUrlList()!=null && entity.getHttpUrlList().size()>0){ + HttpUrlCfg cfg = new HttpUrlCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpUrlCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if(entity.getHttpReqHdrList()!=null && entity.getHttpReqHdrList().size()>0){ + HttpReqHeadCfg cfg = new HttpReqHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpReqHeadCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if(entity.getHttpResHdrList()!=null && entity.getHttpResHdrList().size()>0){ + HttpResHeadCfg cfg = new HttpResHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpResHeadCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if((entity.getHttpReqBodyList()!=null && entity.getHttpReqBodyList().size()>0) || + (entity.getHttpResBodyList()!=null && entity.getHttpResBodyList().size()>0)){ + HttpBodyCfg cfg = new HttpBodyCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpBodyCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + //保存区域IP信息 + if(entity.getAreaCfg()!=null && entity.getAreaCfg().size()>0){ + AreaIpCfg cfg = new AreaIpCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(AreaIpCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + + } + + } + public void auditHttpCfg(CfgIndexInfo entity,Integer isAudit) throws MaatConvertException{ + //修改数据库审核状态信息 + entity.setTableName(CfgIndexInfo.getTablename()); + websiteCfgDao.auditCfg(entity); + + ToMaatBean maatBean = new ToMaatBean(); + MaatCfg maatCfg = new MaatCfg(); + List configCompileList = new ArrayList(); + List groupRelationList = new ArrayList(); + List ipRegionList = new ArrayList(); + List strRegionList = new ArrayList(); + List numRegionList = new ArrayList(); + List digestRegionList = new ArrayList(); + List areaIpRegionList = new ArrayList(); + + //查询子配置并修改审核状态 + entity = this.getHttpCfg(entity.getCfgId()); + + if(entity.getHttpUrlList()!=null && entity.getHttpUrlList().size()>0){ + HttpUrlCfg cfg = new HttpUrlCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpUrlCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getHttpUrlList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + if(entity.getHttpReqHdrList()!=null && entity.getHttpReqHdrList().size()>0){ + HttpReqHeadCfg cfg = new HttpReqHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpReqHeadCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getHttpReqHdrList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + if(entity.getHttpResHdrList()!=null && entity.getHttpResHdrList().size()>0){ + HttpResHeadCfg cfg = new HttpResHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpResHeadCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getHttpResHdrList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + if((entity.getHttpReqBodyList()!=null && entity.getHttpReqBodyList().size()>0) || + (entity.getHttpResBodyList()!=null && entity.getHttpResBodyList().size()>0)){ + HttpBodyCfg cfg = new HttpBodyCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpBodyCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + if(entity.getHttpReqBodyList()!=null && entity.getHttpReqBodyList().size()>0){ + Map map = cfgConvert(strRegionList,entity.getHttpReqBodyList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + if(entity.getHttpResBodyList()!=null && entity.getHttpResBodyList().size()>0){ + Map map = cfgConvert(strRegionList,entity.getHttpResBodyList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + } + //保存区域IP信息 + List areaIpCfgList=areaIpCfgDao.getByCompileId(entity.getCompileId()); + if(!StringUtil.isEmpty(areaIpCfgList)){ + AreaIpCfg cfg = new AreaIpCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(AreaIpCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(areaIpRegionList,areaIpCfgList,1,entity,groupRelationList); + groupRelationList=map.get("groupList"); + areaIpRegionList=map.get("dstList"); + } + } + + //构造提交综合服务参数格式,一条配置提交一次综合服务 + if(isAudit==1){ + maatCfg.initDefaultValue(); + BeanUtils.copyProperties(entity, maatCfg); + maatCfg.setAction(entity.getAction()); + maatCfg.setAuditTime(entity.getAuditTime()); + maatCfg.setIpRegionList(ipRegionList); + maatCfg.setStrRegionList(strRegionList); + maatCfg.setNumRegionList(numRegionList); + maatCfg.setDigestRegionList(digestRegionList); + maatCfg.setGroupRelationList(groupRelationList); + maatCfg.setGroupNum(groupRelationList.size()); + maatCfg.setAreaIpRegionList(areaIpRegionList); + maatCfg.setIsValid(entity.getIsValid()); + + //判断http配置是否需要设置自定义域参数 + String actionValue = DictUtils.getDictCode("SERVICE_ACTION", "action_monit"); + String userRegion = ""; + //只有监测业务,并且头域的匹配区域不匹配字典中的信息时需要设置 + if(!actionValue.equals("默认") && entity.getAction().equals(Integer.parseInt(actionValue))){ + //请求头域 + if(entity.getHttpReqHdrList()!=null && entity.getHttpReqHdrList().size()>0){ + for(ComplexkeywordCfg head:entity.getHttpReqHdrList()){ + String dictValue = DictUtils.getDictCode("REQUEST_HEADER_DISTRICT", head.getDistrict()); + if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){ + if(userRegion.equals("")){ + userRegion += "HTTP_HEADER="+head.getDistrict(); + }else{ + userRegion += Constants.USER_REGION_SPLIT+"HTTP_HEADER="+head.getDistrict(); + } + + } + } + } + //应答头域 + if(entity.getHttpResHdrList()!=null && entity.getHttpResHdrList().size()>0){ + for(ComplexkeywordCfg head:entity.getHttpResHdrList()){ + String dictValue = DictUtils.getDictCode("RESPONSE_HEADER_DISTRICT", head.getDistrict()); + if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){ + if(userRegion.equals("")){ + userRegion += "HTTP_HEADER="+head.getDistrict(); + }else{ + userRegion += Constants.USER_REGION_SPLIT+"HTTP_HEADER="+head.getDistrict(); + } + + } + } + } + maatCfg.setUserRegion(userRegion); + } + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + logger.info("http配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("http配置下发响应信息:"+result.getMsg()); + + }else if(isAudit==3){ + maatCfg.setCompileId(entity.getCompileId()); + maatCfg.setServiceId(entity.getServiceId()); + maatCfg.setIsValid(0);//无效 + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.UPDATE_ACTION); + //调用服务接口取消配置 + String json=gsonToJson(maatBean); + logger.info("http配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.put(json,1); + logger.info("http配置取消配置响应信息:"+result.getMsg()); + } + } +} diff --git a/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java b/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java index 3b4261f05..91e2ad96e 100644 --- a/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java @@ -167,8 +167,7 @@ public class WebsiteCfgService extends CrudService { } } //保存区域IP信息 - List areaIpCfgList=areaIpCfgDao.getByCompileId(entity.getCompileId()); - if(!StringUtil.isEmpty(areaIpCfgList)){ + if(entity.getAreaCfg()!=null){ for(AreaIpCfg cfg:entity.getAreaCfg()){ cfg.initDefaultValue(); BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); @@ -427,7 +426,7 @@ public class WebsiteCfgService extends CrudService { if(userRegion.equals("")){ userRegion += "HTTP_HEADER="+head.getDistrict(); }else{ - userRegion += ";"+"HTTP_HEADER="+head.getDistrict(); + userRegion += Constants.USER_REGION_SPLIT+"HTTP_HEADER="+head.getDistrict(); } } @@ -441,7 +440,7 @@ public class WebsiteCfgService extends CrudService { if(userRegion.equals("")){ userRegion += "HTTP_HEADER="+head.getDistrict(); }else{ - userRegion += ";"+"HTTP_HEADER="+head.getDistrict(); + userRegion += Constants.USER_REGION_SPLIT+"HTTP_HEADER="+head.getDistrict(); } } diff --git a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectForm.jsp b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectForm.jsp new file mode 100644 index 000000000..1f05476ff --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectForm.jsp @@ -0,0 +1,403 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + + + + +
+
+
+
+
+
+ + + + + + + +
+
+
+ +
+ + + + + + + +
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ + + +
+
+
+
+
+ + + +
+ +

+ + +

+ + + +
hidden disabled " > + <%@include file="/WEB-INF/views/cfg/ipCfgForm.jsp"%> +
+ +
+
+ +
+ + + + +
+ +

+ + +

+ + <%-- --%> + + +
hidden disabled " > + <%@include file="/WEB-INF/views/cfg/stringCfgForm.jsp"%> +
+
+
+ +
+ + +
+ +

+ + +

+ + <%-- --%> + + +
hidden disabled " > + <%@include file="/WEB-INF/views/cfg/stringCfgForm.jsp"%> +
+
+
+ +
+ + +
+ +

+ + +

+ + <%-- --%> + + +
hidden disabled " > + <%@include file="/WEB-INF/views/cfg/stringCfgForm.jsp"%> +
+
+
+
+
+ + + +
+ +

+ + +

+ + <%-- --%> + + +
hidden disabled "> + <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> +
+
+
+ +
+ + +
+ +

+ + +

+ <%-- --%> + + +
hidden disabled "> + + <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> +
+
+
+ +
+
+
+ <%@include file="/WEB-INF/include/form/areaInfo.jsp"%> +
+ <%@include file="/WEB-INF/include/form/basicInfo.jsp"%> +
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ + \ No newline at end of file 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 new file mode 100644 index 000000000..6fb62116e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp @@ -0,0 +1,597 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + + + +
+ <%-- --%> + + + +

+ + +

+ +
+
+
+
+ + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+
+ + + + <%-- + + + --%> + + +
+ + + +
+
+
+ + + +
+
+ + + + + +
+ + +
+
+ href="javascript:;"> + + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ +
+ +
+ + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ +
+ +
+
+
+ + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+
+ + +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + ${indexCfg.cfgDesc } + + + + + + + + + + + + + ${indexCfg.requestName } + + + + + + + + + + + + + + + ${fns:abbr(classify,20)} + + + + + + + + + + + + + + + + + ${fns:abbr(attribute,20)} + + + + + + + + + + + + + + + + + + ${fns:abbr(lableInfo,20)} + + + + + + + + + + + + +
${indexCfg.creatorName }${indexCfg.editorName }${indexCfg.auditorName }
+
${page}
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectSubList.jsp b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectSubList.jsp new file mode 100644 index 000000000..d9e5d22c9 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectSubList.jsp @@ -0,0 +1,402 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + +
+ + + +
+
+ +
+ + +
+
+ +
+ + +
+
+ +
+ + +
+
+ +
+ + +
+
+ +
+ + +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+
+ +
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpReqReplaceList.jsp b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpReqReplaceList.jsp index 1acfbf30c..ea88fc582 100644 --- a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpReqReplaceList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpReqReplaceList.jsp @@ -57,6 +57,7 @@
+ diff --git a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpResReplaceList.jsp b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpResReplaceList.jsp index 90a2d74d8..d60029935 100644 --- a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpResReplaceList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpResReplaceList.jsp @@ -57,6 +57,7 @@
+ diff --git a/src/main/webapp/WEB-INF/views/cfg/website/httpSubList.jsp b/src/main/webapp/WEB-INF/views/cfg/website/httpSubList.jsp index 3f0691527..d9e5d22c9 100644 --- a/src/main/webapp/WEB-INF/views/cfg/website/httpSubList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/website/httpSubList.jsp @@ -58,7 +58,7 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+