diff --git a/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java b/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java index 398556343..6e6507b27 100644 --- a/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java +++ b/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java @@ -42,6 +42,18 @@ public class AppPolicyCfg extends BaseCfg { private String userRegion3; private String userRegion4; private String userRegion5; + private String configType; + + + + public String getConfigType() { + return configType; + } + + public void setConfigType(String configType) { + this.configType = configType; + } + public String getBehavName() { return behavName; } diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index 433a09c15..c90193bba 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -11,7 +11,8 @@ public final class Constants { * */ public static String SPECIFIC_SERVICE_CFG_TYPE_APP=Configurations.getStringProperty("specific_service_cfg_type_app", "social_app"); - public static String SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_PROTPCOL=Configurations.getStringProperty("specific_service_cfg_type_encrypted_tunnel_protpcol", "encrypted_tunnel_protpcol"); + public static String SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_BEHAVIOR=Configurations.getStringProperty("specific_service_cfg_type_encrypted_tunnel_behavior", "encrypted_tunnel_behavior"); + public static String SPECIFIC_SERVICE_CFG_TYPE_BASIC_PROTOCOL=Configurations.getStringProperty("specific_service_cfg_type_basic_protocol", "basic_protocol"); /** * 报表去重连接符 */ @@ -407,6 +408,7 @@ public final class Constants { public static final Integer CLIENT_CONNECT_TIMEOUT = Configurations.getIntProperty("client_connect_timeout",1000); public static final Integer CLIENT_READ_TIMEOUT = Configurations.getIntProperty("client_read_timeout",1000); public static final Integer CLIENT_SOCKET_TIMEOUT = Configurations.getIntProperty("client_socket_timeout",1000); + public static final String PROTO_ID_REGION = Configurations.getStringProperty("proto_id_region","PROTO_ID"); public static final String BEHAV_ID_REGION = Configurations.getStringProperty("behav_id_region","BEHAV_ID"); public static final String RATE_LIMIT_REGION = Configurations.getStringProperty("rate_limit_region","RATE_LIMIT"); public static final String AREA_REGION = Configurations.getStringProperty("area_region","area_ip"); diff --git a/src/main/java/com/nis/web/controller/configuration/AppCfgController.java b/src/main/java/com/nis/web/controller/configuration/AppCfgController.java index e8cfae07a..586f20711 100644 --- a/src/main/java/com/nis/web/controller/configuration/AppCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/AppCfgController.java @@ -171,6 +171,7 @@ public class AppCfgController extends BaseController { entity.setAuditorId(UserUtils.getUser().getId()); entity.setAuditTime(new Date()); entity.setFunctionId(functionId); + entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_APP); try { appCfgService.auditAppPolicyCfg(entity,isAudit); } catch (MaatConvertException e) { diff --git a/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java new file mode 100644 index 000000000..df9e59606 --- /dev/null +++ b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java @@ -0,0 +1,170 @@ +package com.nis.web.controller.configuration; + +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.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.AppPolicyCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.specific.SpecificServiceCfg; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.Constants; +import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; + +/** + * 基础协议控制类 + * @author wx + * + */ +@Controller +@RequestMapping("${adminPath}/basicprotocol") +public class BasicProtocolController extends BaseController { + /** + * app策略列表 + * @param model + * @param cfg + * @param request + * @param response + * @return + */ + @RequestMapping(value = {"list"}) + public String policyCfgList(Model model,@ModelAttribute("cfg")AppPolicyCfg cfg,HttpServletRequest request,HttpServletResponse response) { + Page searchPage=new Page(request,response,"r"); + Page page = appCfgService.findAppPolicyList(searchPage, cfg); + for(AppPolicyCfg entity:page.getList()){ + SpecificServiceCfg app = specificServiceCfgService.getBySpecServiceId(entity.getSpecServiceId()); + entity.setAppName(app.getSpecServiceName()); + } + model.addAttribute("page", page); + initPageCondition(model,cfg); + return "/cfg/basicprotocol/list"; + } + /** + * 查询APP策略IP子配置 + * @param model + * @param cfgId + * @param index + * @return + */ + @RequestMapping(value = {"ajaxIpList"}) + public String ajaxSslSubList(Model model,Long cfgId,Integer index) { + AppPolicyCfg cfg = appCfgService.getAppPolicyCfg(cfgId); + List tabList = new ArrayList(); + if(cfg.getIpPortList()!=null){ + String cfgType = null; + for(IpPortCfg ip:cfg.getIpPortList()){ + if(!ip.getCfgType().equals(cfgType)){ + tabList.add(new String[]{"1",ip.getCfgType()}); + cfgType = ip.getCfgType(); + } + } + } + model.addAttribute("_cfg", cfg); + model.addAttribute("index", index); + model.addAttribute("tabList", tabList); + return "/cfg/basicprotocol/ipList"; + } + /** + * 策略配置表单 + * @param model + * @param ids + * @param entity + * @return + */ + @RequestMapping(value = {"form"}) + @RequiresPermissions(value={"basicprotocol:config"}) + public String policyCfgForm(Model model,String ids,AppPolicyCfg entity) { + if(StringUtils.isNotBlank(ids)){ + entity = appCfgService.getAppPolicyCfg(Long.parseLong(ids)); + initUpdateFormCondition(model,entity); + }else{ + initFormCondition(model,entity); + } + model.addAttribute("_cfg", entity); + return "/cfg/basicprotocol/form"; + } + /** + * 策略配置新增修改 + * @param model + * @param request + * @param response + * @param entity + * @param redirectAttributes + * @return + */ + @RequestMapping(value = {"save"}) + @RequiresPermissions(value={"basicprotocol:config"}) + public String saveAppPolicyCfg(Model model,HttpServletRequest request,HttpServletResponse response, + AppPolicyCfg entity,RedirectAttributes redirectAttributes) { + try { + SpecificServiceCfg specificService = specificServiceCfgService.getBySpecServiceId(entity.getSpecServiceId()); + if(specificService!=null){ + entity.setAppCode(specificService.getSpecServiceCode()); + } + appCfgService.saveOrUpdateAppPolicyCfg(entity); + } catch (Exception e) { + e.printStackTrace(); + addMessage(redirectAttributes, e.getMessage()); + } + + return "redirect:" + adminPath +"/basicprotocol/list?functionId="+entity.getFunctionId(); + } + /** + * 策略配置审核 + * @param isAudit + * @param isValid + * @param ids + * @param functionId + * @param redirectAttributes + * @return + */ + @RequestMapping(value = {"audit"}) + @RequiresPermissions(value={"basicprotocol:confirm"}) + public String auditAppPolicyCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { + AppPolicyCfg entity = new AppPolicyCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appCfgService.getAppPolicyCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_BASIC_PROTOCOL); + try { + appCfgService.auditAppPolicyCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.info("app策略配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes, e.getMessage()); + } + } + return "redirect:" + adminPath +"/basicprotocol/list?functionId="+functionId; + } + /** + * 策略配置删除 + * @param isValid + * @param ids + * @param functionId + * @return + */ + @RequestMapping(value = {"updateValid"}) + @RequiresPermissions(value={"basicprotocol:config"}) + public String updateAppPolicyCfgValid(Integer isValid,String ids,Integer functionId) { + appCfgService.updateAppPolicyCfgValid(isValid,ids,functionId); + return "redirect:" + adminPath +"/basicprotocol/list?functionId="+functionId; + } +} diff --git a/src/main/java/com/nis/web/service/configuration/AppCfgService.java b/src/main/java/com/nis/web/service/configuration/AppCfgService.java index aa1887e96..1bfc35dc5 100644 --- a/src/main/java/com/nis/web/service/configuration/AppCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/AppCfgService.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; import java.util.Map; -import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,13 +19,13 @@ import com.nis.domain.configuration.AppPolicyCfg; import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.maat.MaatCfg; -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.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.domain.maat.ToMaatBean; +import com.nis.domain.maat.ToMaatResult; import com.nis.exceptions.MaatConvertException; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; @@ -401,6 +400,7 @@ public class AppCfgService extends BaseService { } } public void auditAppPolicyCfg(AppPolicyCfg entity,Integer isAudit){ + String configType=entity.getConfigType(); ToMaatBean maatBean = new ToMaatBean(); MaatCfg maatCfg = new MaatCfg(); List configCompileList = new ArrayList(); @@ -412,7 +412,6 @@ public class AppCfgService extends BaseService { List areaIpRegionList = new ArrayList(); entity.setTableName(AppPolicyCfg.getTablename()); appCfgDao.auditCfg(entity); - if(isAudit==1){ if(entity.getBehavCode()!=null){ entity.setCfgKeywords(entity.getAppCode()+Constants.KEYWORD_EXPR+entity.getBehavCode()); @@ -470,20 +469,30 @@ public class AppCfgService extends BaseService { maatCfg.setGroupNum(groupRelationList.size()); maatCfg.setAreaIpRegionList(areaIpRegionList); maatCfg.setIsValid(entity.getIsValid()); - - //设置APP自定义域 - String userRegion = "APP_ID="+entity.getAppCode(); - //限速业务需要设置 - String actionCode = DictUtils.getDictCode("SERVICE_ACTION", "action_ratelimit"); - if(!actionCode.equals("默认")){ - if(entity.getAction().equals(Integer.parseInt(actionCode))){ - userRegion += Constants.USER_REGION_SPLIT+Constants.RATE_LIMIT_REGION+"="+entity.getRatelimit(); + if(Constants.SPECIFIC_SERVICE_CFG_TYPE_APP.equalsIgnoreCase(configType)) { + //设置APP自定义域 + String userRegion = "APP_ID="+entity.getAppCode(); + //限速业务需要设置 + String actionCode = DictUtils.getDictCode("SERVICE_ACTION", "action_ratelimit"); + if(!actionCode.equals("默认")){ + if(entity.getAction().equals(Integer.parseInt(actionCode))){ + userRegion += Constants.USER_REGION_SPLIT+Constants.RATE_LIMIT_REGION+"="+entity.getRatelimit(); + } } + if(entity.getBehavCode()!=null) { + userRegion += Constants.USER_REGION_SPLIT+Constants.BEHAV_ID_REGION+"="+entity.getBehavCode(); + } + maatCfg.setUserRegion(userRegion); + }else if(Constants.SPECIFIC_SERVICE_CFG_TYPE_BASIC_PROTOCOL.equalsIgnoreCase(configType)) { + String userRegion = Constants.PROTO_ID_REGION+"="+entity.getAppCode(); + maatCfg.setUserRegion(userRegion); + }else if(Constants.SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_BEHAVIOR.equalsIgnoreCase(configType)) { + String userRegion = Constants.PROTO_ID_REGION+"="+entity.getAppCode(); + if(entity.getBehavCode()!=null) { + userRegion += Constants.USER_REGION_SPLIT+Constants.BEHAV_ID_REGION+"="+entity.getBehavCode(); + } + maatCfg.setUserRegion(userRegion); } - if(entity.getBehavCode()!=null) { - userRegion += Constants.USER_REGION_SPLIT+Constants.BEHAV_ID_REGION+"="+entity.getBehavCode(); - } - maatCfg.setUserRegion(userRegion); configCompileList.add(maatCfg); maatBean.setConfigCompileList(configCompileList); maatBean.setAuditTime(entity.getAuditTime()); diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties index fc9df4204..145a8df56 100644 --- a/src/main/resources/nis.properties +++ b/src/main/resources/nis.properties @@ -409,4 +409,7 @@ http_header_dict_module=HTTP_HEADER_DISTRICT dns_strategy_user_region_key=DNS_STRATEGY #特定服务类别 specific_service_cfg_type_app=social_app -specific_service_cfg_type_encrypted_tunnel_protpcol=encrypted_tunnel_protpcol \ No newline at end of file +specific_service_cfg_type_encrypted_tunnel_behavior=encrypted_tunnel_behavior +specific_service_cfg_type_basic_protocol=basic_protocol +#基础协议自定义域 +proto_id_region=PROTO_ID \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/sitemesh3.xml b/src/main/webapp/WEB-INF/sitemesh3.xml index d57d007a7..baf0ecb60 100644 --- a/src/main/webapp/WEB-INF/sitemesh3.xml +++ b/src/main/webapp/WEB-INF/sitemesh3.xml @@ -28,6 +28,7 @@ + /articles/* diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appPolicyCfgList.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appPolicyCfgList.jsp index 1a7769bb5..3e86c2b86 100644 --- a/src/main/webapp/WEB-INF/views/cfg/app/appPolicyCfgList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/app/appPolicyCfgList.jsp @@ -63,7 +63,7 @@ subTab+=""; subTab+=""; $("#"+openId).parent().parent().after(subTab); - $("div[name='tabTitle"+index+"']").get(0).click(); + $("div[name='tabTitle"+index+"']").eq(0).click(); } }); } diff --git a/src/main/webapp/WEB-INF/views/cfg/basicprotocol/form.jsp b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/form.jsp new file mode 100644 index 000000000..fd73af01d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/form.jsp @@ -0,0 +1,240 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + +
+ + + +

+ +

+
+
+
+
+
+ + + +
+
+
+ +
+ + + + + <%-- --%> + <%-- --%> + + + +
+ + + + + + + +
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+ + + +
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+
+ +

+ + + +

+ + + + + +
+ <%@include file="/WEB-INF/views/cfg/ipCfgForm.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/basicprotocol/ipList.jsp b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/ipList.jsp new file mode 100644 index 000000000..8bb0252d2 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/ipList.jsp @@ -0,0 +1,130 @@ +<%@ 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/basicprotocol/list.jsp b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/list.jsp new file mode 100644 index 000000000..2d3e80abb --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/list.jsp @@ -0,0 +1,452 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="basic_protocol"></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});"/> + +
+
+
+ + +
+ + +
+
+
+ + + + + + + <%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + <%-- --%> + + + + + + + + + + + + + + + + + + + +
+ + + ${cfg.cfgDesc }${cfg.appName }${cfg.behavName }${cfg.ratelimit } + + + + + + + + + + + + + ${cfg.requestName } + + + + + + + + + + + + + + + ${fns:abbr(classify,20)} + + + + + + + + + + + + + + + + + ${fns:abbr(attribute,20)} + + + + + + + + + + + + + + + + + + ${fns:abbr(lableInfo,20)} + + + + + + + + + + + + +
${cfg.creatorName }${cfg.editorName }${cfg.auditorName }
+
${page}
+
+ +
+
+
+ + + \ No newline at end of file