增加ssl配置功能
This commit is contained in:
@@ -41,7 +41,8 @@ public class CfgIndexInfo extends BaseCfg<CfgIndexInfo> {
|
||||
private List<HttpResHeadCfg> httpResHdrList;
|
||||
private List<HttpBodyCfg> httpReqBodyList;
|
||||
private List<HttpBodyCfg> httpResBodyList;
|
||||
|
||||
private SslKeywordCfg sslCfg;
|
||||
private List<BaseStringCfg> sslList;
|
||||
|
||||
public AvVoipAccountCfg getVoipAccount() {
|
||||
return voipAccount;
|
||||
@@ -61,6 +62,18 @@ public class CfgIndexInfo extends BaseCfg<CfgIndexInfo> {
|
||||
public void setVoipIp(AvVoipIpCfg voipIp) {
|
||||
this.voipIp = voipIp;
|
||||
}
|
||||
public SslKeywordCfg getSslCfg() {
|
||||
return sslCfg;
|
||||
}
|
||||
public void setSslCfg(SslKeywordCfg sslCfg) {
|
||||
this.sslCfg = sslCfg;
|
||||
}
|
||||
public List<BaseStringCfg> getSslList() {
|
||||
return sslList;
|
||||
}
|
||||
public void setSslList(List<BaseStringCfg> sslList) {
|
||||
this.sslList = sslList;
|
||||
}
|
||||
public void setVoipIps(List<AvVoipIpCfg> voipIps) {
|
||||
this.voipIps = voipIps;
|
||||
}
|
||||
@@ -142,5 +155,4 @@ public class CfgIndexInfo extends BaseCfg<CfgIndexInfo> {
|
||||
public static String getTablename() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ package com.nis.domain.configuration;
|
||||
* @date 2018年2月6日 上午8:59:51
|
||||
* @version V1.0
|
||||
*/
|
||||
public class SslKeywordCfg extends ComplexkeywordCfg{
|
||||
public static final String tableName="ssl_cert_cfg";
|
||||
public class SslKeywordCfg extends BaseStringCfg{
|
||||
public static final String tableName="ssl_keyword_cfg";
|
||||
/**
|
||||
* @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么)
|
||||
*
|
||||
@@ -36,5 +36,9 @@ public class SslKeywordCfg extends ComplexkeywordCfg{
|
||||
this.matchMethod=3;
|
||||
this.isHexbin=0;
|
||||
}
|
||||
|
||||
public static String getTablename() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -295,6 +295,9 @@ public final class Constants {
|
||||
public static final Integer INSERT_ACTION = Configurations.getIntProperty("insert_action",1);
|
||||
public static final Integer UPDATE_ACTION = Configurations.getIntProperty("update_action",2);
|
||||
public static final Integer DELETE_ACTION = Configurations.getIntProperty("delete_action",3);
|
||||
|
||||
public static final String SSL_IP_REGION = Configurations.getStringProperty("ssl_ip_region","ssl_ip");
|
||||
public static final String SSL_SNI_REGION = Configurations.getStringProperty("ssl_sni_region","ssl_sni");
|
||||
public static final String SSL_SAN_REGION = Configurations.getStringProperty("ssl_san_region","ssl_san");
|
||||
public static final String SSL_CA_REGION = Configurations.getStringProperty("ssl_ca_region","ssl_ca");
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@ package com.nis.web.controller.configuration.ntc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -17,16 +19,20 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||
|
||||
import com.nis.domain.FunctionRegionDict;
|
||||
import com.nis.domain.Page;
|
||||
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.domain.configuration.SslKeywordCfg;
|
||||
import com.nis.exceptions.MaatConvertException;
|
||||
import com.nis.util.Constants;
|
||||
import com.nis.util.DictUtils;
|
||||
import com.nis.web.controller.BaseController;
|
||||
import com.nis.web.security.UserUtils;
|
||||
|
||||
@@ -43,7 +49,7 @@ public class WebsiteController extends BaseController{
|
||||
@RequiresPermissions(value={"website:http:config"})
|
||||
public String httpList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,HttpServletRequest request,HttpServletResponse response) {
|
||||
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
|
||||
Page<CfgIndexInfo> page = websiteCfgService.getHttpList(searchPage, cfg);
|
||||
Page<CfgIndexInfo> page = websiteCfgService.getWebsiteList(searchPage, cfg);
|
||||
model.addAttribute("page", page);
|
||||
initPageCondition(model,cfg);
|
||||
return "/cfg/website/httpList";
|
||||
@@ -57,6 +63,7 @@ public class WebsiteController extends BaseController{
|
||||
initPageCondition(model,cfg);
|
||||
return "/cfg/website/dnsList";
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"httpForm"})
|
||||
@RequiresPermissions(value={"website:http:config"})
|
||||
public String httpForm(Model model,String ids,CfgIndexInfo entity) {
|
||||
@@ -146,6 +153,7 @@ public class WebsiteController extends BaseController{
|
||||
model.addAttribute("_cfg", entity);
|
||||
return "/cfg/website/httpForm";
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"saveHttpCfg"})
|
||||
@RequiresPermissions(value={"website:http:config"})
|
||||
public String saveHttpCfg(Model model,HttpServletRequest request,HttpServletResponse response,String ids,CfgIndexInfo entity) {
|
||||
@@ -187,4 +195,87 @@ public class WebsiteController extends BaseController{
|
||||
}
|
||||
return "redirect:" + adminPath +"/ntc/website/httpList?functionId="+functionId;
|
||||
}
|
||||
@RequestMapping(value = {"sslList"})
|
||||
@RequiresPermissions(value={"website:ssl:config"})
|
||||
public String sslList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,HttpServletRequest request,HttpServletResponse response) {
|
||||
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
|
||||
Page<CfgIndexInfo> page = websiteCfgService.getWebsiteList(searchPage, cfg);
|
||||
model.addAttribute("page", page);
|
||||
initPageCondition(model,cfg);
|
||||
return "/cfg/website/sslList";
|
||||
}
|
||||
@RequestMapping(value = {"sslForm"})
|
||||
@RequiresPermissions(value={"website:ssl:config"})
|
||||
public String sslForm(Model model,String ids,CfgIndexInfo entity) {
|
||||
if(StringUtils.isNotBlank(ids)){
|
||||
entity = websiteCfgService.getSslCfg(Long.parseLong(ids));
|
||||
model.addAttribute("areaCfgs", entity.getAreaCfg());
|
||||
}
|
||||
initFormCondition(model,entity);
|
||||
model.addAttribute("_cfg", entity);
|
||||
return "/cfg/website/sslForm";
|
||||
}
|
||||
@RequestMapping(value = {"saveSslCfg"})
|
||||
@RequiresPermissions(value={"website:ssl:config"})
|
||||
public String saveSslCfg(Model model,HttpServletRequest request,HttpServletResponse response,String ids,CfgIndexInfo entity) {
|
||||
websiteCfgService.saveSslCfg(entity);
|
||||
return "redirect:" + adminPath +"/ntc/website/sslList?functionId="+entity.getFunctionId();
|
||||
}
|
||||
@RequestMapping(value = {"ajaxSslSubList"})
|
||||
public String ajaxSslSubList(Model model,Long cfgId,Integer index) {
|
||||
CfgIndexInfo cfg = websiteCfgService.getSslCfg(cfgId);
|
||||
/*List<FunctionRegionDict> regionList = DictUtils.getFunctionRegionDictList(cfg.getFunctionId());
|
||||
model.addAttribute("regionList", regionList);*/
|
||||
List<String[]> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
if(cfg.getSslList()!=null){
|
||||
String cfgType = null;
|
||||
for(BaseStringCfg keyword:cfg.getSslList()){
|
||||
if(!keyword.getCfgType().equals(cfgType)){
|
||||
tabList.add(new String[]{"2",keyword.getCfgType()});
|
||||
cfgType = keyword.getCfgType();
|
||||
}
|
||||
}
|
||||
}
|
||||
model.addAttribute("_cfg", cfg);
|
||||
model.addAttribute("index", index);
|
||||
model.addAttribute("tabList", tabList);
|
||||
return "/cfg/website/sslSubList";
|
||||
}
|
||||
@RequestMapping(value = {"updateSslCfgValid"})
|
||||
@RequiresPermissions(value={"website:ssl:config"})
|
||||
public String updateSslCfgValid(Integer isValid,String ids,Integer functionId) {
|
||||
websiteCfgService.updateSslCfgValid(isValid,ids,functionId);
|
||||
return "redirect:" + adminPath +"/ntc/website/sslList?functionId="+functionId;
|
||||
}
|
||||
@RequestMapping(value = {"auditSslCfg"})
|
||||
@RequiresPermissions(value={"website:ssl:audit"})
|
||||
public String auditSslCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
|
||||
CfgIndexInfo entity = new CfgIndexInfo();
|
||||
String[] idArray = ids.split(",");
|
||||
for(String id :idArray){
|
||||
entity = websiteCfgService.getHttpCfg(Long.parseLong(id));
|
||||
entity.setIsAudit(isAudit);
|
||||
entity.setIsValid(isValid);
|
||||
entity.setAuditorId(UserUtils.getUser().getId());
|
||||
entity.setAuditTime(new Date());
|
||||
entity.setFunctionId(functionId);
|
||||
try {
|
||||
websiteCfgService.auditSslCfg(entity,isAudit);
|
||||
} catch (MaatConvertException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("ssl配置下发失败:"+e.getMessage());
|
||||
addMessage(redirectAttributes, e.getMessage());
|
||||
}
|
||||
}
|
||||
return "redirect:" + adminPath +"/ntc/website/sslList?functionId="+functionId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
import com.nis.domain.configuration.AvFileSampleCfg;
|
||||
import com.nis.domain.configuration.AvSignSampleCfg;
|
||||
import com.nis.domain.configuration.BaseCfg;
|
||||
import com.nis.domain.configuration.BaseStringCfg;
|
||||
import com.nis.domain.configuration.CfgIndexInfo;
|
||||
import com.nis.domain.configuration.DnsDomainCfg;
|
||||
import com.nis.domain.configuration.DnsIpCfg;
|
||||
@@ -13,6 +14,7 @@ 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.web.dao.CrudDao;
|
||||
import com.nis.web.dao.MyBatisDao;
|
||||
|
||||
@@ -26,7 +28,7 @@ import com.nis.web.dao.MyBatisDao;
|
||||
public interface WebsiteCfgDao extends CrudDao<CfgIndexInfo>{
|
||||
|
||||
public CfgIndexInfo getCfgIndexInfo(Long id);
|
||||
public List<CfgIndexInfo> getHttpList(CfgIndexInfo entity);
|
||||
public List<CfgIndexInfo> getWebsiteList(CfgIndexInfo entity);
|
||||
public List<IpPortCfg> getIpPortList(CfgIndexInfo entity);
|
||||
public List<HttpUrlCfg> getHttpUrlList(CfgIndexInfo entity);
|
||||
public List<HttpResHeadCfg> getHttpResHdrList(CfgIndexInfo entity);
|
||||
@@ -34,7 +36,7 @@ public interface WebsiteCfgDao extends CrudDao<CfgIndexInfo>{
|
||||
public List<HttpReqHeadCfg> getHttpReqHdrList(CfgIndexInfo entity);
|
||||
public List<HttpBodyCfg> getHttpReqBodyList(CfgIndexInfo entity);
|
||||
public void saveCfgIndex(CfgIndexInfo entity);
|
||||
public void saveHttpIpCfg(IpPortCfg entity);
|
||||
public void saveIpPortCfg(IpPortCfg entity);
|
||||
public void saveHttpUrlCfg(HttpUrlCfg entity);
|
||||
public void saveHttpReqHdrCfg(HttpReqHeadCfg entity);
|
||||
public void saveHttpResHdrCfg(HttpResHeadCfg entity);
|
||||
@@ -57,4 +59,9 @@ public interface WebsiteCfgDao extends CrudDao<CfgIndexInfo>{
|
||||
public void deleteDnsIpCfg(CfgIndexInfo entity);
|
||||
public void deleteDnsDomainCfg(CfgIndexInfo entity);
|
||||
|
||||
public List<BaseStringCfg> getSslKewordList(CfgIndexInfo entity);
|
||||
public void saveSslKeywordCfg(BaseStringCfg entity);
|
||||
public void deleteSslIpCfg(CfgIndexInfo entity);
|
||||
public void deleteSslKeywordCfg(CfgIndexInfo entity);
|
||||
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
a.audit_time,a.service_id,a.request_id,a.compile_id,a.is_area_effective,a.classify,a.attribute,a.lable,
|
||||
a.expr_type,a.match_method,a.is_hexbin,a.area_effective_ids,a.function_id,a.cfg_region_code
|
||||
</sql>
|
||||
<select id="getHttpList" resultMap="CfgIndexInfoMap" parameterType="com.nis.domain.configuration.CfgIndexInfo" >
|
||||
<select id="getWebsiteList" resultMap="CfgIndexInfoMap" parameterType="com.nis.domain.configuration.CfgIndexInfo" >
|
||||
SELECT
|
||||
<include refid="ConfigIndex_Column" />
|
||||
<trim prefix="," prefixOverrides=",">
|
||||
@@ -289,6 +289,15 @@
|
||||
</where>
|
||||
)
|
||||
</if>
|
||||
<!-- <if test="sslCfg!=null">
|
||||
AND a.compile_id in (select f.compile_id from ssl_keyword_cfg f
|
||||
<where>
|
||||
<if test="sslCfg.cfgKeywords != null and sslCfg.cfgKeywords != ''">
|
||||
and f.cfg_keywords like concat(concat('%',#{sslCfg.cfgKeywords,jdbcType=VARCHAR}),'%')
|
||||
</if>
|
||||
</where>
|
||||
)
|
||||
</if> -->
|
||||
<!-- 数据范围过滤 -->
|
||||
${sqlMap.dsf}
|
||||
</trim>
|
||||
@@ -320,7 +329,7 @@
|
||||
<select id="getHttpReqBodyList" resultMap="stringCfgMap" parameterType="com.nis.domain.configuration.CfgIndexInfo">
|
||||
SELECT
|
||||
<include refid="StrCfg_Column" />
|
||||
FROM http_body_cfg a where compile_id=#{compileId} and cfg_type='http_res_body' and function_id=#{functionId}
|
||||
FROM http_body_cfg a where compile_id=#{compileId} and cfg_type='http_req_body' and function_id=#{functionId}
|
||||
</select>
|
||||
<select id="getHttpResBodyList" resultMap="stringCfgMap" parameterType="com.nis.domain.configuration.CfgIndexInfo">
|
||||
SELECT
|
||||
@@ -337,7 +346,14 @@
|
||||
<include refid="ComplexCfg_Column" />
|
||||
FROM http_res_head_cfg a where compile_id=#{compileId} and function_id=#{functionId}
|
||||
</select>
|
||||
|
||||
<select id="getSslKewordList" resultMap="stringCfgMap" parameterType="com.nis.domain.configuration.CfgIndexInfo">
|
||||
SELECT
|
||||
<include refid="StrCfg_Column" />
|
||||
FROM ssl_keyword_cfg a where compile_id=#{compileId} and function_id=#{functionId}
|
||||
<if test="cfgType != null and cfgType != ''">
|
||||
and a.cfg_type =#{cfgType,jdbcType=VARCHAR}
|
||||
</if>
|
||||
</select>
|
||||
<!-- insert cfgIndexInfox -->
|
||||
<insert id="saveCfgIndex" parameterType="com.nis.domain.configuration.CfgIndexInfo" >
|
||||
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="cfgId">
|
||||
@@ -386,7 +402,7 @@
|
||||
)
|
||||
</insert>
|
||||
<!-- insert ip_port_cfg表信息 -->
|
||||
<insert id="saveHttpIpCfg" parameterType="com.nis.domain.configuration.IpPortCfg" >
|
||||
<insert id="saveIpPortCfg" parameterType="com.nis.domain.configuration.IpPortCfg" >
|
||||
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="cfgId">
|
||||
SELECT LAST_INSERT_ID()
|
||||
</selectKey>
|
||||
@@ -800,4 +816,71 @@
|
||||
</trim>
|
||||
|
||||
</update>
|
||||
<!-- insert ssl_keyword_cfg表信息 -->
|
||||
<insert id="saveSslKeywordCfg" parameterType="com.nis.domain.configuration.SslKeywordCfg" >
|
||||
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="cfgId">
|
||||
SELECT LAST_INSERT_ID()
|
||||
</selectKey>
|
||||
insert into ssl_keyword_cfg (
|
||||
CFG_DESC,
|
||||
ACTION,
|
||||
IS_VALID,
|
||||
IS_AUDIT,
|
||||
CREATOR_ID,
|
||||
CREATE_TIME,
|
||||
EDITOR_ID,
|
||||
EDIT_TIME,
|
||||
AUDITOR_ID,
|
||||
AUDIT_TIME,
|
||||
SERVICE_ID,
|
||||
REQUEST_ID,
|
||||
COMPILE_ID,
|
||||
IS_AREA_EFFECTIVE,
|
||||
CLASSIFY,
|
||||
ATTRIBUTE,
|
||||
LABLE,
|
||||
AREA_EFFECTIVE_IDS,
|
||||
function_id,
|
||||
cfg_keywords,
|
||||
cfg_type,
|
||||
cfg_region_code,
|
||||
expr_type,
|
||||
match_method,
|
||||
is_hexbin
|
||||
)values (
|
||||
#{cfgDesc,jdbcType=VARCHAR},
|
||||
#{action,jdbcType=INTEGER},
|
||||
0,
|
||||
0,
|
||||
#{creatorId,jdbcType=INTEGER},
|
||||
#{createTime,jdbcType=TIMESTAMP},
|
||||
#{editorId,jdbcType=INTEGER},
|
||||
#{editTime,jdbcType=TIMESTAMP},
|
||||
#{auditorId,jdbcType=INTEGER},
|
||||
#{auditTime,jdbcType=TIMESTAMP},
|
||||
#{serviceId,jdbcType=INTEGER},
|
||||
#{requestId,jdbcType=INTEGER},
|
||||
#{compileId,jdbcType=INTEGER},
|
||||
#{isAreaEffective,jdbcType=INTEGER},
|
||||
#{classify,jdbcType=VARCHAR},
|
||||
#{attribute,jdbcType=VARCHAR},
|
||||
#{lable,jdbcType=VARCHAR},
|
||||
#{areaEffectiveIds,jdbcType=VARCHAR},
|
||||
#{functionId,jdbcType=INTEGER},
|
||||
#{cfgKeywords,jdbcType=VARCHAR},
|
||||
#{cfgType,jdbcType=VARCHAR},
|
||||
#{cfgRegionCode,jdbcType=INTEGER},
|
||||
#{exprType,jdbcType=INTEGER},
|
||||
#{matchMethod,jdbcType=INTEGER},
|
||||
#{isHexbin,jdbcType=INTEGER}
|
||||
)
|
||||
</insert>
|
||||
<!-- 删除ssl子配置 -->
|
||||
<delete id="deleteSslIpCfg" >
|
||||
delete from ip_port_cfg where compile_id=#{compileId} and protocol_id=10 and function_id=#{functionId}
|
||||
</delete>
|
||||
<!-- 删除ssl关键字配置 -->
|
||||
<delete id="deleteSslKeywordCfg">
|
||||
delete from ssl_keyword_cfg where compile_id=#{compileId} and function_id=#{functionId}
|
||||
</delete>
|
||||
</mapper>
|
||||
@@ -267,13 +267,8 @@ public abstract class BaseService {
|
||||
* @return
|
||||
*/
|
||||
public static Map<String,List> cfgConvert(List dstList,List srcList,Integer cfgType,BaseCfg baseCfg,List groupRelationList){
|
||||
GroupCfg group = new GroupCfg();
|
||||
group.setGroupId(ConfigServiceUtil.getId(2, 1).get(0));
|
||||
group.setCompileId(baseCfg.getCompileId());
|
||||
group.setAuditTime(baseCfg.getAuditTime());
|
||||
group.setIsValid(baseCfg.getIsValid());
|
||||
groupRelationList.add(group);
|
||||
Map<String,List> map = new HashMap();
|
||||
String regionValue = null;
|
||||
if(cfgType==1){
|
||||
List numRegionList = new ArrayList();
|
||||
Integer groupId = 0;
|
||||
@@ -281,12 +276,22 @@ public abstract class BaseService {
|
||||
BaseIpCfg baseIpCfg = (BaseIpCfg) srcList.get(i);
|
||||
IpCfg cfg = new IpCfg();
|
||||
BeanUtils.copyProperties(baseIpCfg, cfg);
|
||||
GroupCfg group = new GroupCfg();
|
||||
if(!cfg.getCfgType().equals(regionValue)){
|
||||
group.setGroupId(ConfigServiceUtil.getId(2, 1).get(0));
|
||||
group.setCompileId(baseCfg.getCompileId());
|
||||
group.setAuditTime(baseCfg.getAuditTime());
|
||||
group.setIsValid(baseCfg.getIsValid());
|
||||
groupRelationList.add(group);
|
||||
}
|
||||
|
||||
cfg.setGroupId(group.getGroupId());
|
||||
cfg.setRegionId(ConfigServiceUtil.getId(3, 1).get(0));
|
||||
cfg.setAuditTime(baseCfg.getAuditTime());
|
||||
cfg.setIsValid(baseCfg.getIsValid());
|
||||
cfg = ipConvert(cfg,baseIpCfg);
|
||||
dstList.add(cfg);
|
||||
regionValue = cfg.getCfgType();
|
||||
//如果protocolId非空非零,需要构造数值型域配置
|
||||
if(baseIpCfg.getProtocolId()!=null && baseIpCfg.getProtocolId()!=0){
|
||||
if(groupId==0){//只构造一次配置分组
|
||||
@@ -313,18 +318,35 @@ public abstract class BaseService {
|
||||
|
||||
}else if(cfgType==2 || cfgType==3){
|
||||
for(int i=0;i<srcList.size();i++){
|
||||
GroupCfg group = new GroupCfg();
|
||||
StringCfg cfg = new StringCfg();
|
||||
BeanUtils.copyProperties(srcList.get(i), cfg);
|
||||
if(!cfg.getCfgType().equals(regionValue)){
|
||||
group.setGroupId(ConfigServiceUtil.getId(2, 1).get(0));
|
||||
group.setCompileId(baseCfg.getCompileId());
|
||||
group.setAuditTime(baseCfg.getAuditTime());
|
||||
group.setIsValid(baseCfg.getIsValid());
|
||||
groupRelationList.add(group);
|
||||
}
|
||||
cfg.setGroupId(group.getGroupId());
|
||||
cfg.setRegionId(ConfigServiceUtil.getId(3, 1).get(0));
|
||||
cfg.setAuditTime(baseCfg.getAuditTime());
|
||||
cfg.setIsValid(baseCfg.getIsValid());
|
||||
dstList.add(cfg);
|
||||
regionValue = cfg.getCfgType();
|
||||
}
|
||||
}else if(cfgType==4){
|
||||
for(int i=0;i<srcList.size();i++){
|
||||
com.nis.domain.maat.MaatCfg.NumBoundaryCfg cfg = new com.nis.domain.maat.MaatCfg.NumBoundaryCfg();
|
||||
BeanUtils.copyProperties(srcList.get(i), cfg);
|
||||
GroupCfg group = new GroupCfg();
|
||||
if(!cfg.getCfgType().equals(regionValue)){
|
||||
group.setGroupId(ConfigServiceUtil.getId(2, 1).get(0));
|
||||
group.setCompileId(baseCfg.getCompileId());
|
||||
group.setAuditTime(baseCfg.getAuditTime());
|
||||
group.setIsValid(baseCfg.getIsValid());
|
||||
groupRelationList.add(group);
|
||||
}
|
||||
cfg.setGroupId(group.getGroupId());
|
||||
cfg.setRegionId(ConfigServiceUtil.getId(3, 1).get(0));
|
||||
cfg.setAuditTime(baseCfg.getAuditTime());
|
||||
|
||||
@@ -10,6 +10,7 @@ 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;
|
||||
@@ -30,6 +31,7 @@ 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;
|
||||
@@ -80,11 +82,21 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
|
||||
entity.setAreaCfg(areaCfg);
|
||||
return entity;
|
||||
}
|
||||
public Page<CfgIndexInfo> getHttpList(Page<CfgIndexInfo> page, CfgIndexInfo entity){
|
||||
public CfgIndexInfo getSslCfg(Long cfgId){
|
||||
CfgIndexInfo entity = websiteCfgDao.getCfgIndexInfo(cfgId);
|
||||
List<IpPortCfg> ipPortList = websiteCfgDao.getIpPortList(entity);
|
||||
List<BaseStringCfg> sslList = websiteCfgDao.getSslKewordList(entity);
|
||||
List<AreaIpCfg> areaCfg = areaIpCfgDao.getByCompileId(entity.getCompileId());
|
||||
entity.setIpPortList(ipPortList);
|
||||
entity.setSslList(sslList);
|
||||
entity.setAreaCfg(areaCfg);
|
||||
return entity;
|
||||
}
|
||||
public Page<CfgIndexInfo> getWebsiteList(Page<CfgIndexInfo> page, CfgIndexInfo entity){
|
||||
// 生成数据权限过滤条件(dsf为dataScopeFilter的简写,在xml中使用 ${sqlMap.dsf}调用权限SQL)
|
||||
entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"a"));
|
||||
entity.setPage(page);
|
||||
List<CfgIndexInfo> list = websiteCfgDao.getHttpList(entity);
|
||||
List<CfgIndexInfo> list = websiteCfgDao.getWebsiteList(entity);
|
||||
page.setList(list);
|
||||
return page;
|
||||
}
|
||||
@@ -96,24 +108,6 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
|
||||
page.setList(list);
|
||||
return page;
|
||||
}
|
||||
public List<IpPortCfg> getHttpIpList(IpPortCfg entity){
|
||||
return null;
|
||||
}
|
||||
public List<HttpUrlCfg> getHttpUrlList(HttpUrlCfg entity){
|
||||
return null;
|
||||
}
|
||||
public List<HttpResHeadCfg> getHttpResHdrList(HttpResHeadCfg entity){
|
||||
return null;
|
||||
}
|
||||
public List<HttpBodyCfg> getHttpResBodyList(HttpBodyCfg entity){
|
||||
return null;
|
||||
}
|
||||
public List<HttpReqHeadCfg> getHttpReqHdrList(HttpReqHeadCfg entity){
|
||||
return null;
|
||||
}
|
||||
public List<HttpBodyCfg> getHttpReqBodyList(HttpBodyCfg entity){
|
||||
return null;
|
||||
}
|
||||
public void saveHttpCfg(CfgIndexInfo entity){
|
||||
if(entity.getCfgId()==null){
|
||||
Integer compileId = 0;
|
||||
@@ -129,7 +123,7 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
|
||||
if(entity.getIpPortList()!=null){
|
||||
for(IpPortCfg cfg:entity.getIpPortList()){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
websiteCfgDao.saveHttpIpCfg(cfg);
|
||||
websiteCfgDao.saveIpPortCfg(cfg);
|
||||
}
|
||||
}
|
||||
if(entity.getHttpUrlList()!=null){
|
||||
@@ -178,7 +172,6 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
|
||||
|
||||
}else{
|
||||
websiteCfgDao.updateCfgIndex(entity);
|
||||
// entity = websiteCfgDao.getCfgIndexInfo(entity.getCfgId());
|
||||
//无效子配置后,再新增子配置
|
||||
websiteCfgDao.deleteHttpIpCfg(entity);
|
||||
websiteCfgDao.deleteHttpUrlCfg(entity);
|
||||
@@ -194,7 +187,7 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
|
||||
if(entity.getIpPortList()!=null){
|
||||
for(IpPortCfg cfg:entity.getIpPortList()){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
websiteCfgDao.saveHttpIpCfg(cfg);
|
||||
websiteCfgDao.saveIpPortCfg(cfg);
|
||||
}
|
||||
}
|
||||
if(entity.getHttpUrlList()!=null){
|
||||
@@ -433,4 +426,216 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
|
||||
logger.info("http配置取消配置响应信息:"+result.getMsg());
|
||||
}
|
||||
}
|
||||
public void saveSslCfg(CfgIndexInfo entity){
|
||||
if(entity.getCfgId()==null){
|
||||
Integer compileId = 0;
|
||||
try {
|
||||
List<Integer> 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.getIpPortList()!=null){
|
||||
for(IpPortCfg cfg:entity.getIpPortList()){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
websiteCfgDao.saveIpPortCfg(cfg);
|
||||
}
|
||||
}
|
||||
if(entity.getSslList()!=null){
|
||||
for(BaseStringCfg cfg:entity.getSslList()){
|
||||
if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
websiteCfgDao.saveSslKeywordCfg(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("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
|
||||
}
|
||||
|
||||
}else{
|
||||
websiteCfgDao.updateCfgIndex(entity);
|
||||
//无效子配置后,再新增子配置
|
||||
websiteCfgDao.deleteSslIpCfg(entity);
|
||||
websiteCfgDao.deleteSslKeywordCfg(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.getIpPortList()!=null){
|
||||
for(IpPortCfg cfg:entity.getIpPortList()){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
websiteCfgDao.saveIpPortCfg(cfg);
|
||||
}
|
||||
}
|
||||
if(entity.getSslList()!=null){
|
||||
for(BaseStringCfg cfg:entity.getSslList()){
|
||||
if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
websiteCfgDao.saveSslKeywordCfg(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 updateSslCfgValid(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.getSslCfg(Long.parseLong(id));
|
||||
if(entity.getIpPortList()!=null && entity.getIpPortList().size()>0){
|
||||
IpPortCfg cfg = new IpPortCfg();
|
||||
BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"});
|
||||
cfg.setTableName(IpPortCfg.getTablename());
|
||||
websiteCfgDao.updateCfgValid(cfg);
|
||||
}
|
||||
if(entity.getSslList()!=null && entity.getSslList().size()>0)
|
||||
{
|
||||
SslKeywordCfg cfg = new SslKeywordCfg();
|
||||
BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"});
|
||||
cfg.setTableName(SslKeywordCfg.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 auditSslCfg(CfgIndexInfo entity,Integer isAudit) throws MaatConvertException{
|
||||
//修改数据库审核状态信息
|
||||
entity.setTableName(CfgIndexInfo.getTablename());
|
||||
websiteCfgDao.auditCfg(entity);
|
||||
|
||||
ToMaatBean maatBean = new ToMaatBean();
|
||||
MaatCfg maatCfg = new MaatCfg();
|
||||
List<MaatCfg> configCompileList = new ArrayList();
|
||||
List<GroupCfg> groupRelationList = new ArrayList();
|
||||
List<IpCfg> ipRegionList = new ArrayList();
|
||||
List<StringCfg> strRegionList = new ArrayList();
|
||||
List<NumBoundaryCfg> numRegionList = new ArrayList();
|
||||
List<DigestCfg> digestRegionList = new ArrayList();
|
||||
List<IpCfg> areaIpRegionList = new ArrayList();
|
||||
|
||||
//查询子配置并修改审核状态
|
||||
entity = this.getSslCfg(entity.getCfgId());
|
||||
if(entity.getIpPortList()!=null && entity.getIpPortList().size()>0){
|
||||
IpPortCfg cfg = new IpPortCfg();
|
||||
BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"});
|
||||
cfg.setTableName(IpPortCfg.getTablename());
|
||||
websiteCfgDao.auditCfg(cfg);
|
||||
if(isAudit==1){
|
||||
Map<String,List> map = cfgConvert(ipRegionList,entity.getIpPortList(),1,entity,groupRelationList);
|
||||
groupRelationList=map.get("groupList");
|
||||
ipRegionList=map.get("dstList");
|
||||
if(map.get("numRegionList")!=null){
|
||||
numRegionList.addAll(map.get("numRegionList"));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(entity.getSslList()!=null && entity.getSslList().size()>0){
|
||||
SslKeywordCfg cfg = new SslKeywordCfg();
|
||||
BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"});
|
||||
cfg.setTableName(SslKeywordCfg.getTablename());
|
||||
websiteCfgDao.auditCfg(cfg);
|
||||
if(isAudit==1){
|
||||
Map<String,List> map = cfgConvert(strRegionList,entity.getSslList(),2,entity,groupRelationList);
|
||||
groupRelationList=map.get("groupList");
|
||||
strRegionList=map.get("dstList");
|
||||
}
|
||||
}
|
||||
//保存区域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.auditCfg(cfg);
|
||||
if(isAudit==1){
|
||||
Map<String,List> map = cfgConvert(areaIpRegionList,entity.getAreaCfg(),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());
|
||||
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("ssl配置下发配置参数:"+json);
|
||||
//调用服务接口下发配置
|
||||
ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
|
||||
logger.info("ssl配置下发响应信息:"+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("ssl配置下发配置参数:"+json);
|
||||
//调用服务接口下发配置
|
||||
ToMaatResult result = ConfigServiceUtil.put(json,1);
|
||||
logger.info("ssl配置取消配置响应信息:"+result.getMsg());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ has_approved=\u5DF2\u7ECF\u901A\u8FC7\u5BA1\u6838\uFF0C\u65E0\u6CD5\u8FDB\u884C\
|
||||
hasnot_approved=\u672A\u901A\u8FC7\u5BA1\u6838\uFF0C\u65E0\u6CD5\u8FDB\u884C\u8BE5\u64CD\u4F5C\uFF01
|
||||
check_one=\u8BF7\u9009\u62E9\u4E00\u6761\u6570\u636E\uFF01
|
||||
one_more=\u8BF7\u81F3\u5C11\u9009\u62E9\u4E00\u6761\u6570\u636E\!
|
||||
one_more_area=\u533A\u57DF\u7BA1\u63A7\uFF0C\u5FC5\u987B\u586B\u5199\u8FD0\u8425\u5546\u6216ip\u4FE1\u606F!
|
||||
one_more_area=\u533A\u57DF\u7BA1\u63A7\uFF0C\u5FC5\u987B\u586B\u5199\u8FD0\u8425\u5546\u6216ip\u4FE1\u606F\!
|
||||
custom_columns=\u81EA\u5B9A\u4E49\u5217\u5B57\u6BB5
|
||||
maxlength_64=\u8BF7\u8F93\u5165\u4E00\u4E2A\u957F\u5EA6\u6700\u591A\u662F 64\u7684\u5B57\u7B26\u4E32\uFF01
|
||||
maxlength_128=\u8BF7\u8F93\u5165\u4E00\u4E2A\u957F\u5EA6\u6700\u591A\u662F 128\u7684\u5B57\u7B26\u4E32\uFF01
|
||||
@@ -572,3 +572,8 @@ http_req_hdr_title=HTTP\u8BF7\u6C42\u5934\u57DF\u914D\u7F6E
|
||||
http_req_body_title=HTTP\u8BF7\u6C42\u5185\u5BB9\u914D\u7F6E
|
||||
http_res_hdr_title=HTTP\u5E94\u7B54\u5934\u57DF\u914D\u7F6E
|
||||
http_res_body_title=HTTP\u5E94\u7B54\u5185\u5BB9\u914D\u7F6E
|
||||
ssl_ip=SSL IP\u914D\u7F6E
|
||||
ssl_sni=SSL SNI\u5173\u952E\u5B57\u914D\u7F6E
|
||||
ssl_san=SSL SAN\u5173\u952E\u5B57\u914D\u7F6E
|
||||
ssl_ca=SSL CA\u5173\u952E\u5B57\u914D\u7F6E
|
||||
http_control=http\u914D\u7F6E
|
||||
|
||||
@@ -219,7 +219,7 @@ clusterBStartTime=1503504000725
|
||||
isCommit=true
|
||||
############################################################################################################################################
|
||||
############################################################################################################################################
|
||||
httpUrl=http://10.0.6.249:8080/galaxy/service/cfg/v1/
|
||||
httpUrl=http://10.0.6.201:8090/galaxy/service/cfg/v1/
|
||||
maatCfg=configSources
|
||||
fileUploadCfg=fileUploadSources
|
||||
callbackCfg=commonSources
|
||||
@@ -259,3 +259,7 @@ http_res_body_region=http_res_body
|
||||
http_url_region=http_url
|
||||
voip_ip=av_voip_ip
|
||||
voip_account=av_voip_account
|
||||
ssl_sni_region=ssl_sni
|
||||
ssl_san_region=ssl_san
|
||||
ssl_ca_region=ssl_ca
|
||||
ssl_ip_region=ssl_ip
|
||||
@@ -15,8 +15,8 @@ $(function(){
|
||||
and regionDistrict.regionType eq 3
|
||||
and regionValue eq regionDistrict.configRegionValue}">
|
||||
<!-- regionDistrict.regionType==3表示增强字符串类配置 -->
|
||||
<input type="hidden" name="${cfgName}[${status.index }].cfgType" value="${regionDistrict.configRegionValue }">
|
||||
<input type="hidden" name="${cfgName}[${status.index }].cfgRegionCode" value="${regionDistrict.configRegionCode }">
|
||||
<input type="hidden" name="${cfgName}.cfgType" value="${regionDistrict.configRegionValue }">
|
||||
<input type="hidden" name="${cfgName}.cfgRegionCode" value="${regionDistrict.configRegionCode }">
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
@@ -32,7 +32,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="district" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].district"
|
||||
<select name="${cfgName}.district"
|
||||
class="selectpicker show-tick form-control required">
|
||||
<c:forEach items="${regionList}" var="regionDistrict">
|
||||
<c:if
|
||||
@@ -46,7 +46,7 @@ $(function(){
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].district"></div>
|
||||
<div for="${cfgName}.district"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -55,10 +55,10 @@ $(function(){
|
||||
<spring:message code="keywords" /></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control required" type="text"
|
||||
name="${cfgName}[${status.index }].cfgKeywords"
|
||||
name="${cfgName}.cfgKeywords"
|
||||
value="${complexCfg.cfgKeywords}">
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].cfgKeywords"></div>
|
||||
<div for="${cfgName}.cfgKeywords"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -70,18 +70,18 @@ $(function(){
|
||||
<spring:message code="expression_type" /></label>
|
||||
<div class="col-md-6">
|
||||
<label class="radio-inline"> <input type="radio"
|
||||
name="${cfgName}[${status.index }].exprType" value="1"
|
||||
name="${cfgName}.exprType" value="1"
|
||||
class="required"
|
||||
<c:if test="${complexCfg.exprType==1}">checked</c:if>> <spring:message
|
||||
code="and" />
|
||||
</label> <label class="radio-inline"> <input type="radio"
|
||||
name="${cfgName}[${status.index }].exprType" value="0"
|
||||
name="${cfgName}.exprType" value="0"
|
||||
class="required"
|
||||
<c:if test="${complexCfg.exprType==0 || complexCfg.exprType==null}">checked</c:if>>
|
||||
<spring:message code="null" />
|
||||
</label>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].exprType"></div>
|
||||
<div for="${cfgName}.exprType"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -89,7 +89,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="match_method" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].matchMethod"
|
||||
<select name="${cfgName}.matchMethod"
|
||||
class="selectpicker select2 form-control required">
|
||||
<option value=""><spring:message code="select" /></option>
|
||||
<option value="0"
|
||||
@@ -106,7 +106,7 @@ $(function(){
|
||||
code="exactly_match"></spring:message></option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].matchMethod"></div>
|
||||
<div for="${cfgName}.matchMethod"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -116,7 +116,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="whether_hexbinary" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].isHexbin"
|
||||
<select name="${cfgName}.isHexbin"
|
||||
class="selectpicker select2 form-control required">
|
||||
<option value=""><spring:message code="select" /></option>
|
||||
<option value="0"
|
||||
@@ -130,7 +130,7 @@ $(function(){
|
||||
code="case_sensitive_nohex"></spring:message></option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].isHexbin"></div>
|
||||
<div for="${cfgName}.isHexbin"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -13,11 +13,11 @@ $(function(){
|
||||
<c:if
|
||||
test="${_cfg.functionId eq regionDistrict.functionId and regionDistrict.regionType eq 1}">
|
||||
<!-- regionDistrict.regionType==1表示IP类配置 -->
|
||||
<input type="hidden" name="${cfgName}[${status.index }].cfgType" value="${regionDistrict.configRegionValue }">
|
||||
<input type="hidden" name="${cfgName}[${status.index }].cfgRegionCode" value="${regionDistrict.configRegionCode }">
|
||||
<input type="hidden" name="${cfgName}.cfgType" value="${regionDistrict.configRegionValue }">
|
||||
<input type="hidden" name="${cfgName}.cfgRegionCode" value="${regionDistrict.configRegionCode }">
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<input type="hidden" name="${cfgName}[${status.index }].protocolId" id="protocolId" value="">
|
||||
<input type="hidden" name="${cfgName}.protocolId" id="protocolId" value="">
|
||||
<div class="row">
|
||||
<div class="pull-right">
|
||||
<span class="glyphicon glyphicon-remove pull-right" title="remove"
|
||||
@@ -30,7 +30,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="ip_type" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].ipType"
|
||||
<select name="${cfgName}.ipType"
|
||||
class="selectpicker show-tick form-control required">
|
||||
<c:forEach items="${fns:getDictList('IP_TYPE')}" var="ipType">
|
||||
<option value="${ipType.itemCode}" <c:if test="${ipPort.ipType==ipType.itemCode}">selected</c:if> >
|
||||
@@ -39,7 +39,7 @@ $(function(){
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].ipType"></div>
|
||||
<div for="${cfgName}.ipType"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -49,7 +49,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="ip_pattern" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].ipPattern"
|
||||
<select name="${cfgName}.ipPattern"
|
||||
class="selectpicker show-tick form-control required">
|
||||
<option value="1"
|
||||
<c:if test="${ipPort.ipPattern==1 || ipPort.ipPattern==null}">selected</c:if>><spring:message
|
||||
@@ -61,7 +61,7 @@ $(function(){
|
||||
<c:if test="${ipPort.ipPattern==3}">selected</c:if>>IP</option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].ipPattern"></div>
|
||||
<div for="${cfgName}.ipPattern"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -70,10 +70,10 @@ $(function(){
|
||||
<spring:message code="client_ip" /></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control required ipCheck" type="text"
|
||||
name="${cfgName}[${status.index }].srcIpAddress"
|
||||
name="${cfgName}.srcIpAddress"
|
||||
value="${ipPort.srcIpAddress}">
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].srcIpAddress"></div>
|
||||
<div for="${cfgName}.srcIpAddress"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -83,7 +83,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="port_pattern" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].portPattern"
|
||||
<select name="${cfgName}.portPattern"
|
||||
class="selectpicker show-tick form-control required">
|
||||
<option value="1"
|
||||
<c:if test="${ipPort.portPattern==1 || ipPort.portPattern== null}">selected</c:if>>port</option>
|
||||
@@ -92,7 +92,7 @@ $(function(){
|
||||
code="subnet" /></option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].portPattern"></div>
|
||||
<div for="${cfgName}.portPattern"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -101,10 +101,10 @@ $(function(){
|
||||
<spring:message code="client_port" /></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control required portCheck" type="text"
|
||||
name="${cfgName}[${status.index }].srcPort"
|
||||
name="${cfgName}.srcPort"
|
||||
value="${ipPort.srcPort}">
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].srcPort"></div>
|
||||
<div for="${cfgName}.srcPort"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -115,10 +115,10 @@ $(function(){
|
||||
<spring:message code="server_ip" /></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control required ipCheck" type="text"
|
||||
name="${cfgName}[${status.index }].destIpAddress"
|
||||
name="${cfgName}.destIpAddress"
|
||||
value="${ipPort.destIpAddress}">
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].destIpAddress"></div>
|
||||
<div for="${cfgName}.destIpAddress"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -127,10 +127,10 @@ $(function(){
|
||||
<spring:message code="server_port" /></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control required portCheck" type="text"
|
||||
name="${cfgName}[${status.index }].destPort"
|
||||
name="${cfgName}.destPort"
|
||||
value="${ipPort.destPort}">
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].destPort"></div>
|
||||
<div for="${cfgName}.destPort"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -140,7 +140,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="protocol" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].protocol"
|
||||
<select name="${cfgName}.protocol"
|
||||
class="selectpicker show-tick form-control required">
|
||||
<option value=""><spring:message code="select" /></option>
|
||||
<option value="6"
|
||||
@@ -152,7 +152,7 @@ $(function(){
|
||||
code="arbitrary" /></option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].protocol"></div>
|
||||
<div for="${cfgName}.protocol"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -160,7 +160,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="direction" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].direction"
|
||||
<select name="${cfgName}.direction"
|
||||
class="selectpicker show-tick form-control required">
|
||||
<option value=""><spring:message code="select" /></option>
|
||||
<option value="0"
|
||||
@@ -174,7 +174,7 @@ $(function(){
|
||||
<spring:message code="degress" /></option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].direction"></div>
|
||||
<div for="${cfgName}.direction"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -15,8 +15,8 @@ $(function(){
|
||||
and regionDistrict.regionType eq 2
|
||||
and regionValue eq regionDistrict.configRegionValue}">
|
||||
<!-- regionDistrict.regionType==2表示字符串类配置 -->
|
||||
<input type="hidden" name="${cfgName}[${status.index }].cfgType" value="${regionDistrict.configRegionValue }">
|
||||
<input type="hidden" name="${cfgName}[${status.index }].cfgRegionCode" value="${regionDistrict.configRegionCode }">
|
||||
<input type="hidden" name="${cfgName}.cfgType" value="${regionDistrict.configRegionValue }">
|
||||
<input type="hidden" name="${cfgName}.cfgRegionCode" value="${regionDistrict.configRegionCode }">
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<div class="row">
|
||||
@@ -32,10 +32,10 @@ $(function(){
|
||||
<spring:message code="keywords" /></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control required" type="text"
|
||||
name="${cfgName}[${status.index }].cfgKeywords"
|
||||
name="${cfgName}.cfgKeywords"
|
||||
value="${strCfg.cfgKeywords}">
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].cfgKeywords"></div>
|
||||
<div for="${cfgName}.cfgKeywords"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -47,17 +47,17 @@ $(function(){
|
||||
<spring:message code="expression_type" /></label>
|
||||
<div class="col-md-6">
|
||||
<label class="radio-inline"> <input type="radio"
|
||||
name="${cfgName}[${status.index }].exprType" value="1"
|
||||
name="${cfgName}.exprType" value="1"
|
||||
class="required" <c:if test="${strCfg.exprType==1}">checked</c:if>>
|
||||
<spring:message code="and" />
|
||||
</label> <label class="radio-inline"> <input type="radio"
|
||||
name="${cfgName}[${status.index }].exprType" value="0"
|
||||
name="${cfgName}.exprType" value="0"
|
||||
class="required"
|
||||
<c:if test="${strCfg.exprType==0 || strCfg.exprType==null}">checked</c:if>>
|
||||
<spring:message code="null" />
|
||||
</label>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].exprType"></div>
|
||||
<div for="${cfgName}.exprType"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -65,7 +65,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="match_method" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].matchMethod"
|
||||
<select name="${cfgName}.matchMethod"
|
||||
class="selectpicker select2 form-control required">
|
||||
<option value=""><spring:message code="select" /></option>
|
||||
<option value="0"
|
||||
@@ -82,7 +82,7 @@ $(function(){
|
||||
code="exactly_match"></spring:message></option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].matchMethod"></div>
|
||||
<div for="${cfgName}.matchMethod"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -92,7 +92,7 @@ $(function(){
|
||||
<label class="control-label col-md-3"><font color="red">*</font>
|
||||
<spring:message code="whether_hexbinary" /></label>
|
||||
<div class="col-md-6">
|
||||
<select name="${cfgName}[${status.index }].isHexbin"
|
||||
<select name="${cfgName}.isHexbin"
|
||||
class="selectpicker select2 form-control required">
|
||||
<option value=""><spring:message code="select" /></option>
|
||||
<option value="0"
|
||||
@@ -106,7 +106,7 @@ $(function(){
|
||||
code="case_sensitive_nohex"></spring:message></option>
|
||||
</select>
|
||||
</div>
|
||||
<div for="${cfgName}[${status.index }].isHexbin"></div>
|
||||
<div for="${cfgName}.isHexbin"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -188,10 +188,11 @@
|
||||
class="glyphicon glyphicon-plus ${tabName}Add"
|
||||
onClick="addContent(this,'${tabName}')" title="add"></span></small>
|
||||
</h4>
|
||||
<c:set var="cfgName" value="ipPortList"></c:set>
|
||||
|
||||
<c:forEach items="${_cfg.ipPortList}" var="ipPort"
|
||||
varStatus="status">
|
||||
<div class="row boxSolid ${tabName}${status.index} <c:if test="${empty ipPort.cfgId}">hidden disabled</c:if>" >
|
||||
<c:set var="cfgName" value="ipPortList[${status.index}]"></c:set>
|
||||
<div class="row boxSolid ${tabName}${status.index}" >
|
||||
|
||||
<!-- 引入页面动态传参 -->
|
||||
<%-- <jsp:include page="/WEB-INF/views/cfg/ipCfgForm.jsp" flush="true">
|
||||
@@ -201,6 +202,7 @@
|
||||
</jsp:include> --%>
|
||||
<%@include file="/WEB-INF/views/cfg/ipCfgForm.jsp"%>
|
||||
</div>
|
||||
<c:set var="ipCfgIndex" value="${ipCfgIndex+1}"></c:set>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<!--/ip info-->
|
||||
@@ -213,11 +215,12 @@
|
||||
class="glyphicon glyphicon-plus ${tabName}Add"
|
||||
onClick="addContent(this,'${tabName}')" title="add"></span></small>
|
||||
</h4>
|
||||
<c:set var="cfgName" value="httpUrlList"></c:set>
|
||||
|
||||
<c:set var="regionValue" value="${_cfg.httpUrl.cfgType}"></c:set>
|
||||
<c:forEach items="${_cfg.httpUrlList}" var="strCfg"
|
||||
varStatus="status">
|
||||
<div class="row boxSolid ${tabName}${status.index} <c:if test="${empty strCfg.cfgId}">hidden disabled</c:if>" >
|
||||
<c:set var="cfgName" value="httpUrlList[${status.index}]"></c:set>
|
||||
<div class="row boxSolid ${tabName}${status.index} " >
|
||||
<!-- 引入页面动态传参 -->
|
||||
<%-- <jsp:include page="/WEB-INF/views/cfg/stringCfgForm.jsp" flush="true">
|
||||
<jsp:param value="http_url" name="regionValue"/>
|
||||
@@ -239,11 +242,12 @@
|
||||
class="glyphicon glyphicon-plus ${tabName}Add"
|
||||
onClick="addContent(this,'${tabName}')" title="add"></span></small>
|
||||
</h4>
|
||||
<c:set var="cfgName" value="httpReqHdrList"></c:set>
|
||||
|
||||
<c:set var="regionValue" value="${_cfg.httpReqHdr.cfgType}"></c:set>
|
||||
<c:forEach items="${_cfg.httpReqHdrList}" var="complexCfg"
|
||||
varStatus="status">
|
||||
<div class="row boxSolid ${tabName}${status.index} <c:if test="${empty complexCfg.cfgId}">hidden disabled</c:if>">
|
||||
<c:set var="cfgName" value="httpReqHdrList[${status.index}]"></c:set>
|
||||
<div class="row boxSolid ${tabName}${status.index} ">
|
||||
<!-- 引入页面动态传参 -->
|
||||
<%-- <jsp:include page="/WEB-INF/views/cfg/complexCfgForm.jsp" flush="true">
|
||||
<jsp:param value="http_req_hdr" name="regionValue"/>
|
||||
@@ -265,11 +269,12 @@
|
||||
class="glyphicon glyphicon-plus ${tabName}Add"
|
||||
onClick="addContent(this,'${tabName}')" title="add"></span></small>
|
||||
</h4>
|
||||
<c:set var="cfgName" value="httpReqBodyList"></c:set>
|
||||
|
||||
<c:set var="regionValue" value="${_cfg.httpReqBody.cfgType}"></c:set>
|
||||
<c:forEach items="${_cfg.httpReqBodyList}" var="strCfg"
|
||||
varStatus="status">
|
||||
<div class="row boxSolid ${tabName}${status.index} <c:if test="${empty strCfg.cfgId}">hidden disabled</c:if>" >
|
||||
<c:set var="cfgName" value="httpReqBodyList[${status.index}]"></c:set>
|
||||
<div class="row boxSolid ${tabName}${status.index} " >
|
||||
<!-- 引入页面动态传参 -->
|
||||
<%-- <jsp:include page="/WEB-INF/views/cfg/stringCfgForm.jsp" flush="true">
|
||||
<jsp:param value="http_req_body" name="regionValue"/>
|
||||
@@ -291,11 +296,12 @@
|
||||
class="glyphicon glyphicon-plus ${tabName}Add"
|
||||
onClick="addContent(this,'${tabName}')" title="add"></span></small>
|
||||
</h4>
|
||||
<c:set var="cfgName" value="httpResHdrList"></c:set>
|
||||
|
||||
<c:set var="regionValue" value="${_cfg.httpResHdr.cfgType}"></c:set>
|
||||
<c:forEach items="${_cfg.httpResHdrList}" var="complexCfg"
|
||||
varStatus="status">
|
||||
<div class="row boxSolid ${tabName}${status.index} <c:if test="${empty complexCfg.cfgId}">hidden disabled</c:if>">
|
||||
<c:set var="cfgName" value="httpResHdrList[${status.index}]"></c:set>
|
||||
<div class="row boxSolid ${tabName}${status.index} ">
|
||||
<%-- <jsp:include page="/WEB-INF/views/cfg/complexCfgForm.jsp" flush="true">
|
||||
<jsp:param value="http_res_hdr" name="regionValue"/>
|
||||
<jsp:param value="httpResHdr" name="cfgName"/>
|
||||
@@ -316,11 +322,12 @@
|
||||
class="glyphicon glyphicon-plus ${tabName}Add"
|
||||
onClick="addContent(this,'${tabName}')" title="add"></span></small>
|
||||
</h4>
|
||||
<c:set var="cfgName" value="httpResBodyList"></c:set>
|
||||
|
||||
<c:set var="regionValue" value="${_cfg.httpResBody.cfgType}"></c:set>
|
||||
<c:forEach items="${_cfg.httpResBodyList}" var="strCfg"
|
||||
varStatus="status">
|
||||
<div class="row boxSolid ${tabName}${status.index} <c:if test="${empty strCfg.cfgId}">hidden disabled</c:if>" >
|
||||
<c:set var="cfgName" value="httpResBodyList[${status.index}]"></c:set>
|
||||
<div class="row boxSolid ${tabName}${status.index} " >
|
||||
<!-- 引入页面动态传参 -->
|
||||
<%-- <jsp:include page="/WEB-INF/views/cfg/stringCfgForm.jsp" flush="true">
|
||||
<jsp:param value="http_res_body" name="regionValue"/>
|
||||
@@ -328,7 +335,7 @@
|
||||
<jsp:param value="httpResBody${status.index }" name="cfgNameIndex"/>
|
||||
<jsp:param value="httpResBodyList[${status.index }]" name="propertiesName"/>
|
||||
</jsp:include> --%>
|
||||
<%@include file="/WEB-INF/views/cfg/stringCfgForm.jsp"%>%>
|
||||
<%@include file="/WEB-INF/views/cfg/stringCfgForm.jsp"%>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
</div>
|
||||
|
||||
<h3 class="page-title">
|
||||
<spring:message code="website_http_control"></spring:message>
|
||||
<spring:message code="http_control"></spring:message>
|
||||
<small><spring:message code="date_list"/></small>
|
||||
</h3>
|
||||
<h5 class="page-header"></h5>
|
||||
|
||||
@@ -8,18 +8,6 @@
|
||||
})
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.tabInfo {
|
||||
width: 150px;
|
||||
border: 1px solid #c2cad8;
|
||||
padding: 5px;
|
||||
border-bottom: 0px
|
||||
}
|
||||
.content {
|
||||
width: 1050px;
|
||||
background-color: #f6f3f3;
|
||||
border: 1px solid #c2cad8;
|
||||
padding: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<c:if test="${fn:length(_cfg.ipPortList)>0}">
|
||||
|
||||
Reference in New Issue
Block a user