修复文件劫持、注入、阻断页面、镜像若干bug

This commit is contained in:
wangwei
2019-05-31 13:04:57 +08:00
parent 33590ee8f4
commit 1b2f115ee5
23 changed files with 239 additions and 176 deletions

View File

@@ -20,7 +20,7 @@ public class ProxyFileHijackCfg extends BaseCfg<ProxyFileHijackCfg>{
private String path;//储存路径 private String path;//储存路径
@ExcelField(title="content_name",sort=4) @ExcelField(title="content_name",sort=4)
private String contentName;//内容格式 private String contentName;//内容格式
private int quote;//判断与其他菜单是否关联使用中 private String quote;//判断与其他菜单是否关联使用中
public String getContentName() { public String getContentName() {
return contentName; return contentName;
@@ -28,10 +28,10 @@ public class ProxyFileHijackCfg extends BaseCfg<ProxyFileHijackCfg>{
public void setContentName(String contentName) { public void setContentName(String contentName) {
this.contentName = contentName; this.contentName = contentName;
} }
public int getQuote() { public String getQuote() {
return quote; return quote;
} }
public void setQuote(int quote) { public void setQuote(String quote) {
this.quote = quote; this.quote = quote;
} }
public String getIndexTable() { public String getIndexTable() {

View File

@@ -13,7 +13,7 @@ public class ProxyFileInsertScriptCfg extends BaseCfg<ProxyFileInsertScriptCfg>{
private String format;//css/js private String format;//css/js
@ExcelField(title="file_insert_script",sort=2) @ExcelField(title="file_insert_script",sort=2)
private String path;//储存路径 private String path;//储存路径
private int quote;//判断与其他菜单是否关联使用中 private String quote;//判断与其他菜单是否关联使用中
public String getIndexTable() { public String getIndexTable() {
return indexTable; return indexTable;
} }
@@ -38,10 +38,10 @@ public class ProxyFileInsertScriptCfg extends BaseCfg<ProxyFileInsertScriptCfg>{
public void setPath(String path) { public void setPath(String path) {
this.path = path; this.path = path;
} }
public int getQuote() { public String getQuote() {
return quote; return quote;
} }
public void setQuote(int quote) { public void setQuote(String quote) {
this.quote = quote; this.quote = quote;
} }
} }

View File

@@ -16,6 +16,15 @@ public class ProxyFileResponsePageCfg extends BaseCfg<ProxyFileResponsePageCfg>
private String contentType;//内容类型如text/html取字典表contentType private String contentType;//内容类型如text/html取字典表contentType
private String md5;//文件md5值 private String md5;//文件md5值
private Long contentLength;//文件长度 private Long contentLength;//文件长度
private String quote;//引用状态
public String getQuote() {
return quote;
}
public void setQuote(String quote) {
this.quote = quote;
}
public String getIndexTable() { public String getIndexTable() {
return indexTable; return indexTable;

View File

@@ -3729,8 +3729,15 @@ public class BaseController {
page.setPageNo(1); page.setPageNo(1);
page.setLastPage(false); page.setLastPage(false);
List<BaseCfg> list = pxyObjKeyringService.findPage(page,searchObjKeyringCfg).getList(); List<BaseCfg> list = pxyObjKeyringService.findPage(page,searchObjKeyringCfg).getList();
List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();i++){
PxyObjKeyring temp=(PxyObjKeyring)list.get(i);
if("-1".equals(temp.getUserRegion4()) || temp.getUserRegion4()==null ){
result.add(temp);
}
}
if(!StringUtil.isEmpty(list)){ if(!StringUtil.isEmpty(list)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData); hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{ }else{
hasData = false; hasData = false;
} }
@@ -3771,7 +3778,7 @@ public class BaseController {
List<BaseCfg> result = new ArrayList(); List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();i++){ for(int i=0;i<list.size();i++){
ProxyFileHijackCfg temp=(ProxyFileHijackCfg)list.get(i); ProxyFileHijackCfg temp=(ProxyFileHijackCfg)list.get(i);
if(temp.getQuote() == -1 || temp.getQuote() ==0){ if("-1".equals(temp.getQuote()) || temp.getQuote()==null ){
result.add(temp); result.add(temp);
} }
} }
@@ -3790,7 +3797,7 @@ public class BaseController {
List<BaseCfg> result = new ArrayList(); List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();i++){ for(int i=0;i<list.size();i++){
ProxyFileInsertScriptCfg temp=(ProxyFileInsertScriptCfg)list.get(i); ProxyFileInsertScriptCfg temp=(ProxyFileInsertScriptCfg)list.get(i);
if(temp.getQuote() == -1 || temp.getQuote() ==0){ if("-1".equals(temp.getQuote()) || temp.getQuote()==null ){
result.add(temp); result.add(temp);
} }
} }
@@ -3807,8 +3814,15 @@ public class BaseController {
page.setPageNo(1); page.setPageNo(1);
page.setLastPage(false); page.setLastPage(false);
List list = proxyFileTrafficMirrorService.findPage(page,searchFileTrafficMirrorCfg).getList(); List list = proxyFileTrafficMirrorService.findPage(page,searchFileTrafficMirrorCfg).getList();
List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();i++){
ProxyFileTrafficMirrorCfg temp=(ProxyFileTrafficMirrorCfg)list.get(i);
if("-1".equals(temp.getUserRegion5()) || temp.getUserRegion5()==null ){
result.add(temp);
}
}
if(!StringUtil.isEmpty(list)){ if(!StringUtil.isEmpty(list)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData); hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{ }else{
hasData = false; hasData = false;
} }
@@ -3833,8 +3847,15 @@ public class BaseController {
page.setPageNo(1); page.setPageNo(1);
page.setLastPage(false); page.setLastPage(false);
List list = proxyFileResponsePageService.findPage(page,searchFileResponsePageCfg).getList(); List list = proxyFileResponsePageService.findPage(page,searchFileResponsePageCfg).getList();
List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();i++){
ProxyFileInsertScriptCfg temp=(ProxyFileInsertScriptCfg)list.get(i);
if("-1".equals(temp.getUserRegion5()) || temp.getUserRegion5()==null ){
result.add(temp);
}
}
if(!StringUtil.isEmpty(list)){ if(!StringUtil.isEmpty(list)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData); hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{ }else{
hasData = false; hasData = false;
} }
@@ -4143,7 +4164,9 @@ public class BaseController {
cfg.setIsAudit(entity.getIsAudit()); cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime()); cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId()); cfg.setAuditorId(entity.getAuditorId());
notAuditList.add(cfg); if(!cfg.getQuote().equals("1")){
notAuditList.add(cfg);
}
} }
} }
}else if(className.equals("ProxyFileInsertScriptCfg")){ }else if(className.equals("ProxyFileInsertScriptCfg")){

View File

@@ -51,7 +51,7 @@
<include refid="ProxyFileHijackCfgColumn" /> <include refid="ProxyFileHijackCfgColumn" />
<trim prefix="," prefixOverrides=","> <trim prefix="," prefixOverrides=",">
, s.name as creator_name,e.name as editor_name,u.name as auditor_name , s.name as creator_name,e.name as editor_name,u.name as auditor_name
,ri.request_title as requestName,i.is_valid as quote ,ri.request_title as requestName,max(i.is_valid) as quote
</trim> </trim>
FROM PXY_PROFILE_HIJACK_FILES a FROM PXY_PROFILE_HIJACK_FILES a
left join sys_user s on a.creator_id=s.id left join sys_user s on a.creator_id=s.id
@@ -156,6 +156,7 @@
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${sqlMap.dsf} ${sqlMap.dsf}
</trim> </trim>
group by compile_id
<choose> <choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''"> <when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -51,7 +51,7 @@
<include refid="ProxyFileInsertScriptCfgColumn" /> <include refid="ProxyFileInsertScriptCfgColumn" />
<trim prefix="," prefixOverrides=","> <trim prefix="," prefixOverrides=",">
, s.name as creator_name,e.name as editor_name,u.name as auditor_name , s.name as creator_name,e.name as editor_name,u.name as auditor_name
,ri.request_title as requestName,i.is_valid as quote ,ri.request_title as requestName,max(i.is_valid) as quote
</trim> </trim>
FROM PXY_PROFILE_INSERT_SCRIPTS a FROM PXY_PROFILE_INSERT_SCRIPTS a
left join sys_user s on a.creator_id=s.id left join sys_user s on a.creator_id=s.id
@@ -155,6 +155,7 @@
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${sqlMap.dsf} ${sqlMap.dsf}
</trim> </trim>
group by compile_id
<choose> <choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''"> <when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -53,13 +53,14 @@
<include refid="ProxyFileResponsePageCfgColumn" /> <include refid="ProxyFileResponsePageCfgColumn" />
<trim prefix="," prefixOverrides=","> <trim prefix="," prefixOverrides=",">
, s.name as creator_name,e.name as editor_name,u.name as auditor_name , s.name as creator_name,e.name as editor_name,u.name as auditor_name
,ri.request_title as requestName ,ri.request_title as requestName,max(i.is_valid) as quote
</trim> </trim>
FROM pxy_profile_response_pages a FROM pxy_profile_response_pages a
left join sys_user s on a.creator_id=s.id left join sys_user s on a.creator_id=s.id
left join sys_user e on a.editor_id=e.id left join sys_user e on a.editor_id=e.id
left join sys_user u on a.auditor_id=u.id left join sys_user u on a.auditor_id=u.id
left join request_info ri on a.request_id=ri.id left join request_info ri on a.request_id=ri.id
left join cfg_index_info i on a.COMPILE_ID=i.user_region3
<trim prefix="WHERE" prefixOverrides="AND |OR "> <trim prefix="WHERE" prefixOverrides="AND |OR ">
<if test="page !=null and page.where != null and page.where != ''"> <if test="page !=null and page.where != null and page.where != ''">
@@ -160,6 +161,7 @@
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${sqlMap.dsf} ${sqlMap.dsf}
</trim> </trim>
group by compile_id
<choose> <choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''"> <when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -50,14 +50,14 @@
<include refid="ProxyFileTrafficMirrorCfgColumn" /> <include refid="ProxyFileTrafficMirrorCfgColumn" />
<trim prefix="," prefixOverrides=","> <trim prefix="," prefixOverrides=",">
, s.name as creator_name,e.name as editor_name,u.name as auditor_name , s.name as creator_name,e.name as editor_name,u.name as auditor_name
,ri.request_title as requestName<!-- ,i.is_valid as quote --> ,ri.request_title as requestName,max(i.is_valid) as userRegion5
</trim> </trim>
FROM PXY_PROFILE_TRAFFIC_MIRROR a FROM PXY_PROFILE_TRAFFIC_MIRROR a
left join sys_user s on a.creator_id=s.id left join sys_user s on a.creator_id=s.id
left join sys_user e on a.editor_id=e.id left join sys_user e on a.editor_id=e.id
left join sys_user u on a.auditor_id=u.id left join sys_user u on a.auditor_id=u.id
left join request_info ri on a.request_id=ri.id left join request_info ri on a.request_id=ri.id
<!-- left join cfg_index_info i on a.COMPILE_ID=i.user_region4 --> left join cfg_index_info i on a.COMPILE_ID=i.user_region5
<trim prefix="WHERE" prefixOverrides="AND |OR "> <trim prefix="WHERE" prefixOverrides="AND |OR ">
<if test="page !=null and page.where != null and page.where != ''"> <if test="page !=null and page.where != null and page.where != ''">
AND ${page.where} AND ${page.where}
@@ -157,6 +157,7 @@
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${sqlMap.dsf} ${sqlMap.dsf}
</trim> </trim>
group by compile_id
<choose> <choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''"> <when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -142,13 +142,14 @@
<include refid="PxyObjKeyringColumns"/> <include refid="PxyObjKeyringColumns"/>
<trim prefix="," prefixOverrides=","> <trim prefix="," prefixOverrides=",">
,s.name as creator_name,e.name as editor_name,u.name as auditor_name ,s.name as creator_name,e.name as editor_name,u.name as auditor_name
,ri.request_title as requestName ,ri.request_title as requestName,max(i.is_valid) as userRegion4
</trim> </trim>
FROM pxy_obj_keyring r FROM pxy_obj_keyring r
left join sys_user s on r.creator_id=s.id left join sys_user s on r.creator_id=s.id
left join sys_user e on r.editor_id=e.id left join sys_user e on r.editor_id=e.id
left join sys_user u on r.auditor_id=u.id left join sys_user u on r.auditor_id=u.id
left join request_info ri on r.request_id=ri.id left join request_info ri on r.request_id=ri.id
left join cfg_index_info i on r.COMPILE_ID=i.user_region4
<trim prefix="WHERE" prefixOverrides="AND |OR "> <trim prefix="WHERE" prefixOverrides="AND |OR ">
<if test="page !=null and page.where != null and page.where != ''"> <if test="page !=null and page.where != null and page.where != ''">
AND ${page.where} AND ${page.where}
@@ -229,6 +230,7 @@
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${sqlMap.dsf} ${sqlMap.dsf}
</trim> </trim>
group by compile_id
<choose> <choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''"> <when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},r.is_audit,r.CFG_ID desc ORDER BY ${page.orderBy},r.is_audit,r.CFG_ID desc

View File

@@ -459,7 +459,9 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
List<ProxyObjKeyring> convertList = Lists.newArrayList(); List<ProxyObjKeyring> convertList = Lists.newArrayList();
for (Object object : auditList) { for (Object object : auditList) {
PxyObjKeyring cfg = (PxyObjKeyring)object; PxyObjKeyring cfg = (PxyObjKeyring)object;
convertList.add(BaseService.convertCallBackProxyObjKeyring(cfg)); if(!"1".equals(cfg.getUserRegion4())){
convertList.add(BaseService.convertCallBackProxyObjKeyring(cfg));
}
} }
if(convertList.size() > 0) { if(convertList.size() > 0) {
auditList = convertList; auditList = convertList;
@@ -482,16 +484,20 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
List<ProxyFileHijackCfgAudit> convertList = Lists.newArrayList(); List<ProxyFileHijackCfgAudit> convertList = Lists.newArrayList();
for (Object object : auditList) { for (Object object : auditList) {
ProxyFileHijackCfg cfg = (ProxyFileHijackCfg)object; ProxyFileHijackCfg cfg = (ProxyFileHijackCfg)object;
convertList.add(BaseService.convertCallBackProxyFileHijack(cfg)); if(!"1".equals(cfg.getQuote())){
convertList.add(BaseService.convertCallBackProxyFileHijack(cfg));
}
} }
if(convertList.size() > 0) { if(convertList.size() > 0) {
auditList = convertList; auditList = convertList;
} }
}else if(entity.getServiceId().equals(644)) { // 劫持文件 }else if(entity.getServiceId().equals(644)) { // 脚本注入
List<ProxyFileInsertScriptCfgAudit> convertList = Lists.newArrayList(); List<ProxyFileInsertScriptCfgAudit> convertList = Lists.newArrayList();
for (Object object : auditList) { for (Object object : auditList) {
ProxyFileInsertScriptCfg cfg = (ProxyFileInsertScriptCfg)object; ProxyFileInsertScriptCfg cfg = (ProxyFileInsertScriptCfg)object;
convertList.add(BaseService.convertCallBackProxyFileInsertScript(cfg)); if(!"1".equals(cfg.getQuote())){
convertList.add(BaseService.convertCallBackProxyFileInsertScript(cfg));
}
} }
if(convertList.size() > 0) { if(convertList.size() > 0) {
auditList = convertList; auditList = convertList;
@@ -500,7 +506,9 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
List<ProxyFileTrafficMirrorCfgAudit> convertList = Lists.newArrayList(); List<ProxyFileTrafficMirrorCfgAudit> convertList = Lists.newArrayList();
for (Object object : auditList) { for (Object object : auditList) {
ProxyFileTrafficMirrorCfg cfg = (ProxyFileTrafficMirrorCfg)object; ProxyFileTrafficMirrorCfg cfg = (ProxyFileTrafficMirrorCfg)object;
convertList.add(BaseService.convertCallBackProxyFileTrafficMirror(cfg)); if(!"1".equals(cfg.getUserRegion5())){
convertList.add(BaseService.convertCallBackProxyFileTrafficMirror(cfg));
}
} }
if(convertList.size() > 0) { if(convertList.size() > 0) {
auditList = convertList; auditList = convertList;
@@ -518,7 +526,9 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
List<ProxyFileResponsePageCfgAudit> convertList = Lists.newArrayList(); List<ProxyFileResponsePageCfgAudit> convertList = Lists.newArrayList();
for (Object object : auditList) { for (Object object : auditList) {
ProxyFileResponsePageCfg cfg = (ProxyFileResponsePageCfg)object; ProxyFileResponsePageCfg cfg = (ProxyFileResponsePageCfg)object;
convertList.add(BaseService.convertCallBackProxyFileResponsePage(cfg)); if(!"1".equals(cfg.getQuote())){
convertList.add(BaseService.convertCallBackProxyFileResponsePage(cfg));
}
} }
if(convertList.size() > 0) { if(convertList.size() > 0) {
auditList = convertList; auditList = convertList;

View File

@@ -1020,7 +1020,7 @@ PXY_INTERCEPT_PKT_BIN=Packet Payload
certificate=Certificate certificate=Certificate
do_log=Logging Option do_log=Logging Option
file_strategy=File Strategy file_strategy=File Strategy
file_desc=File Desc file_desc=File Description
content_type=Content Type content_type=Content Type
content_length=Content Length content_length=Content Length
response_file=Response File response_file=Response File
@@ -1530,18 +1530,21 @@ public_private_file_error=Public-private key mismatch
https_url_format_tip=URL(http[s]://xxx.xx) https_url_format_tip=URL(http[s]://xxx.xx)
hijack_file_strategy=Hijack File hijack_file_strategy=Hijack File
profile_name=Profile Name profile_name=Profile Name
file_insert_script=File Insert Script file_insert_script=Script Injection
format=Format script_name=Script Name
file_quote_disable_delete=File quote Disable Delete script_format=Script Format
script_file=Script File
file_quote_disable_delete=File Quote Disable Delete
target_type=Target Type target_type=Target Type
vlan=VLAN vlan=VLAN
mac=MAC mac=MAC
mirror_addr_list=Address List mirror_addr_list=Address List
mirror_addr_type=Address Type mirror_addr_type=Address Type
target_name=Target Name address_name=Address Name
traffic_mirror_address=Traffic Mirror Address traffic_mirror_address=Destination Network Address
content_name=Content Name content_name=Content Name
visit_response_page=Response Pages visit_response_page=Response File
file_is_used=File Is Used
none_profile_tip=Please Choose Profile Info! none_profile_tip=Please Choose Profile Info!
#---------------------------pxy intercept------------------------------------ #---------------------------pxy intercept------------------------------------
min_should_less_than_max=The min SSL version should less than the max SSL version min_should_less_than_max=The min SSL version should less than the max SSL version

View File

@@ -1534,16 +1534,19 @@ https_url_format_tip=URL(http[s]://xxx.xx)
hijack_file_strategy=\u0417\u0430\u0445\u0432\u0430\u0442 \u0444\u0430\u0439\u043b hijack_file_strategy=\u0417\u0430\u0445\u0432\u0430\u0442 \u0444\u0430\u0439\u043b
profile_name=Profile Name profile_name=Profile Name
file_insert_script=File Insert Script file_insert_script=File Insert Script
format=Format script_name=Script Name
script_format=Script Format
script_file=Script File
file_quote_disable_delete=File quote Disable Delete file_quote_disable_delete=File quote Disable Delete
mac=MAC mac=MAC
vlan=VLAN vlan=VLAN
mirror_addr_list=Address List mirror_addr_list=Address List
mirror_addr_type=Address Type mirror_addr_type=Address Type
target_name=Target Name address_name=Address Name
traffic_mirror_address=Traffic Mirror Address traffic_mirror_address=Destination Network Address
content_name=Content Name content_name=Content Name
visit_response_page=Response Pages visit_response_page=Response File
file_is_used=File Is Used
none_profile_tip=Please Choose Profile Info! none_profile_tip=Please Choose Profile Info!
#---------------------------pxy intercept------------------------------------ #---------------------------pxy intercept------------------------------------
min_should_less_than_max=The min SSL version should less than the max SSL version min_should_less_than_max=The min SSL version should less than the max SSL version

View File

@@ -1532,16 +1532,19 @@ https_url_format_tip=URL(http[s]://xxx.xx)
hijack_file_strategy=\u52ab\u6301\u6587\u4ef6 hijack_file_strategy=\u52ab\u6301\u6587\u4ef6
profile_name=\u6587\u4ef6\u540d\u79f0 profile_name=\u6587\u4ef6\u540d\u79f0
file_insert_script=\u6ce8\u5165\u811a\u672c\u6587\u4ef6 file_insert_script=\u6ce8\u5165\u811a\u672c\u6587\u4ef6
format=\u683c\u5f0f script_name=\u811A\u672C\u540D\u79F0
script_format=\u811A\u672C\u683C\u5F0F
script_file=\u811A\u672C\u6587\u4EF6
file_quote_disable_delete=\u6587\u4ef6\u88ab\u5f15\u7528 \u4e0d\u53ef\u5220\u9664 file_quote_disable_delete=\u6587\u4ef6\u88ab\u5f15\u7528 \u4e0d\u53ef\u5220\u9664
vlan=\u865a\u62df\u5c40\u57df\u7f51 vlan=\u865a\u62df\u5c40\u57df\u7f51
mac=MAC\u5730\u5740 mac=MAC\u5730\u5740
mirror_addr_list=\u76ee\u6807\u6807\u8bc6\u5217\u8868 mirror_addr_list=\u76ee\u6807\u6807\u8bc6\u5217\u8868
mirror_addr_type=\u76ee\u6807\u6807\u8bc6\u7c7b\u578b mirror_addr_type=\u76ee\u6807\u6807\u8bc6\u7c7b\u578b
target_name=\u76ee\u6807\u540d\u79f0 address_name=\u5730\u5740\u540D\u79F0
traffic_mirror_address=\u6d41\u91cf\u8f6c\u53d1\u76ee\u7684\u5730\u5740 traffic_mirror_address=\u6d41\u91cf\u8f6c\u53d1\u76ee\u7684\u5730\u5740
content_name=\u5185\u5bb9\u540d\u79f0 content_name=\u5185\u5bb9\u540d\u79f0
visit_response_page=\u8bbf\u95ee\u963b\u65ad\u9875\u9762 visit_response_page=\u8bbf\u95ee\u963b\u65ad\u9875\u9762
file_is_used=\u6587\u4EF6\u88AB\u5F15\u7528
none_profile_tip=\u8bf7\u9009\u62e9\u6587\u4ef6! none_profile_tip=\u8bf7\u9009\u62e9\u6587\u4ef6!
#---------------------------pxy intercept------------------------------------ #---------------------------pxy intercept------------------------------------
min_should_less_than_max=\u6700\u5c0fSSL\u7248\u672c\u5e94\u5c0f\u4e8e\u6700\u5927SSL\u7248\u672c min_should_less_than_max=\u6700\u5c0fSSL\u7248\u672c\u5e94\u5c0f\u4e8e\u6700\u5927SSL\u7248\u672c

View File

@@ -391,7 +391,11 @@ function cancelPassOpt(url){
}); });
} }
} }
//查询文件是否被引用
if(canCancel && validateIsCancelOfQuote(checkboxes)){
top.$.jBox.tip("<spring:message code='file_is_used'/>", "<spring:message code='info'/>");
canCancel=false;
}
if(canCancel){ if(canCancel){
doAll(checkboxes,url); doAll(checkboxes,url);
} }
@@ -605,8 +609,18 @@ function validateIsDelete(checkboxes){
function validateIsDeleteOfQuote(checkboxes){ function validateIsDeleteOfQuote(checkboxes){
var flag = false; var flag = false;
$(checkboxes).filter(":checked").each(function(){ $(checkboxes).filter(":checked").each(function(){
if($(this).attr("quoteStatus") != -1 && $(this).attr("quoteStatus") != 0 if($(this).attr("quoteStatus") != -1 && "undefined" != typeof $(this).attr("quoteStatus") && $(this).attr("quoteStatus") != ""){ //可删除的条件
&& "undefined" != typeof $(this).attr("quoteStatus")){ //可删除的条件 flag = true;
return;
}
});
return flag;
}
//验证文件是否其他菜单引用且生效
function validateIsCancelOfQuote(checkboxes){
var flag = false;
$(checkboxes).filter(":checked").each(function(){
if($(this).attr("quoteStatus") == 1){ //不可取消的配置
flag = true; flag = true;
return; return;
} }

View File

@@ -322,7 +322,7 @@
<c:forEach items="${page.list }" var="cfg" varStatus="status" step="1"> <c:forEach items="${page.list }" var="cfg" varStatus="status" step="1">
<tr> <tr>
<td> <td>
<input type="checkbox" class="i-checks" serviceId="${cfg.serviceId }" compileId="${cfg.compileId }" id="${cfg.cfgId}" value="${cfg.isAudit}"> <input type="checkbox" class="i-checks" serviceId="${cfg.serviceId }" compileId="${cfg.compileId }" id="${cfg.cfgId}" quoteStatus="${cfg.userRegion4}" value="${cfg.isAudit}">
</td> </td>
<td>${cfg.compileId }</td> <td>${cfg.compileId }</td>
<td>${cfg.cfgDesc }</td> <td>${cfg.cfgDesc }</td>

View File

@@ -14,6 +14,9 @@
$("#urlInfo").val($("#cfgFile").val()); $("#urlInfo").val($("#cfgFile").val());
cfgFileValidate(); cfgFileValidate();
}); });
$("#contentType").on('change',function(){
cfgFileValidate();
});
$("#cfgFrom") .validate( { $("#cfgFrom") .validate( {
submitHandler : function(form) { submitHandler : function(form) {
@@ -38,28 +41,22 @@
function cfgFileValidate(){ function cfgFileValidate(){
var flag=false; //状态,检测文件后缀用 var flag=false; //状态,检测文件后缀用
var arr=["exe","apk"];//使用是什么格式的后缀
var cFile=$("#cfgFile").val();//文件的值 var cFile=$("#cfgFile").val();//文件的值
//取出上传文件的扩展名 //取出上传文件的扩展名
var index=cFile.lastIndexOf("."); var index=cFile.lastIndexOf(".");
var ext = cFile.substr(index+1).toLowerCase(); var ext = cFile.substr(index+1).toLowerCase();
//循环比较 var tail = $("#contentType").find("option:selected").attr("tail")
for(var i=0;i<arr.length;i++) $("div[for='urlInfo']").empty();
{ if(ext == tail || tail ==""){
if(ext == arr[i]) flag = true;
{ return flag;
flag = true; //一旦找到合适的,立即退出循环 }
break; if(!flag){
}
}
//条件判断
$("div[for='urlInfo']").empty();
if(!flag){
// ("文件名不合法"); // ("文件名不合法");
$("div[for='urlInfo']").append("<label id='level-error' class='error'><spring:message code='file_in_wrong_format'/></label>"); $("div[for='urlInfo']").append("<label id='level-error' class='error'><spring:message code='file_in_wrong_format'/></label>");
return false; return false;
} }
return true; return true;
} }
</script> </script>
</head> </head>
@@ -150,6 +147,40 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><spring:message code="file_desc"/></label>
<div class="col-md-6">
<input class="form-control" type="text" name="cfgDesc" value="${_cfg.cfgDesc}">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><spring:message code="content_name" /></label>
<div class="col-md-6">
<input class="form-control" type="text" name="contentName" value="${_cfg.contentName}">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">
<font color="red">*</font><spring:message code="content_type" />
</label>
<div class="col-md-6">
<select id="contentType" name="contentType" data-live-search="true" data-live-search-placeholder="search" class="selectpicker form-control required">
<option value="" tail=""><spring:message code="select"/></option>
<c:forEach items="${fns:getDictList('CONTENT_TYPE_HIJACK')}" var="dict">
<option value="${dict.itemCode}" tail="${dict.itemDesc}" <c:if test="${dict.itemCode==_cfg.contentType}">selected</c:if>>${dict.itemCode}</option>
</c:forEach>
</select>
</div>
<div for="contentType"></div>
</div>
</div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group "> <div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font> <label class="control-label col-md-3"><font color="red">*</font>
@@ -169,40 +200,6 @@
<div for="urlInfo"></div> <div for="urlInfo"></div>
</div> </div>
</div> </div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><spring:message code="profile_name"/></label>
<div class="col-md-6">
<input class="form-control" type="text" name="cfgDesc" value="${_cfg.cfgDesc}">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">
<font color="red">*</font><spring:message code="content_type" />
</label>
<div class="col-md-6">
<select name="contentType" data-live-search="true" data-live-search-placeholder="search" class="selectpicker form-control required">
<option value=""><spring:message code="select"/></option>
<c:forEach items="${fns:getDictList('CONTENT_TYPE_HIJACK')}" var="dict">
<option value="${dict.itemCode}" <c:if test="${dict.itemCode==_cfg.contentType}">selected</c:if>>${dict.itemCode}</option>
</c:forEach>
</select>
</div>
<div for="contentType"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><spring:message code="content_name" /></label>
<div class="col-md-6">
<input class="form-control" type="text" name="contentName" value="${_cfg.contentName}">
</div>
</div>
</div>
<div class="col-md-6 hidden"> <div class="col-md-6 hidden">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="action"/></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="action"/></label>

View File

@@ -93,7 +93,7 @@
<div class="input-group-btn"> <div class="input-group-btn">
<form:select path="seltype" class="selectpicker select2 input-small" > <form:select path="seltype" class="selectpicker select2 input-small" >
<form:option value="cfgDesc"><spring:message code="profile_name"></spring:message></form:option> <form:option value="cfgDesc"><spring:message code="file_desc"></spring:message></form:option>
<form:option value="isValid"><spring:message code="valid_identifier"></spring:message></form:option> <form:option value="isValid"><spring:message code="valid_identifier"></spring:message></form:option>
<form:option value="compileIdNew"><spring:message code="cfg_id"></spring:message></form:option> <form:option value="compileIdNew"><spring:message code="cfg_id"></spring:message></form:option>
</form:select> </form:select>
@@ -292,7 +292,7 @@
<tr> <tr>
<th><input type="checkbox" class="i-checks" id="checkAll"></th> <th><input type="checkbox" class="i-checks" id="checkAll"></th>
<th column="cfg_id" class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th> <th column="cfg_id" class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th>
<th column="profile_name" class="sort-column a.cfg_desc"><spring:message code="profile_name"/></th> <th column="profile_name" class="sort-column a.cfg_desc"><spring:message code="file_desc"/></th>
<th column="hijack_file_strategy" class="sort-column a.path"><spring:message code="hijack_file_strategy"/></th> <th column="hijack_file_strategy" class="sort-column a.path"><spring:message code="hijack_file_strategy"/></th>
<th column="content_type" class="sort-column a.content_type"><spring:message code="content_type"/></th> <th column="content_type" class="sort-column a.content_type"><spring:message code="content_type"/></th>
<th column="content_name" class="sort-column a.content_name"><spring:message code="content_name"/></th> <th column="content_name" class="sort-column a.content_name"><spring:message code="content_name"/></th>

View File

@@ -152,10 +152,36 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><spring:message code="script_name"/></label>
<div class="col-md-6">
<input class="form-control" type="text" name="cfgDesc" value="${_cfg.cfgDesc}">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">
<font color="red">*</font><spring:message code="script_format" />
</label>
<div class="col-md-6">
<select id="format" name="format" data-live-search="true" data-live-search-placeholder="search" class="selectpicker form-control required">
<option value=""><spring:message code="select"/></option>
<c:forEach items="${fns:getDictList('CONTENT_TYPE_INSERTSCRIPT')}" var="dict">
<option value="${dict.itemCode}" <c:if test="${dict.itemCode==_cfg.format}">selected</c:if>>${dict.itemCode}</option>
</c:forEach>
</select>
</div>
<div for="format"></div>
</div>
</div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group "> <div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font> <label class="control-label col-md-3"><font color="red">*</font>
<spring:message code="file_insert_script" /></label> <spring:message code="script_file" /></label>
<div class="col-md-6"> <div class="col-md-6">
<input id="cfgFile" name="cfgFile" type="file" style="width: 330px; display: none" /> <input id="cfgFile" name="cfgFile" type="file" style="width: 330px; display: none" />
<div class="input-group"> <div class="input-group">
@@ -171,33 +197,6 @@
<div for="urlInfo"></div> <div for="urlInfo"></div>
</div> </div>
</div> </div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><spring:message code="profile_name"/></label>
<div class="col-md-6">
<input class="form-control" type="text" name="cfgDesc" value="${_cfg.cfgDesc}">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">
<font color="red">*</font><spring:message code="format" />
</label>
<div class="col-md-6">
<select id="format" name="format" data-live-search="true" data-live-search-placeholder="search" class="selectpicker form-control required">
<option value=""><spring:message code="select"/></option>
<c:forEach items="${fns:getDictList('CONTENT_TYPE_INSERTSCRIPT')}" var="dict">
<option value="${dict.itemCode}" <c:if test="${dict.itemCode==_cfg.format}">selected</c:if>>${dict.itemCode}</option>
</c:forEach>
</select>
</div>
<div for="format"></div>
</div>
</div>
<div class="col-md-6 hidden"> <div class="col-md-6 hidden">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="action"/></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="action"/></label>

View File

@@ -93,7 +93,7 @@
<div class="input-group-btn"> <div class="input-group-btn">
<form:select path="seltype" class="selectpicker select2 input-small" > <form:select path="seltype" class="selectpicker select2 input-small" >
<form:option value="cfgDesc"><spring:message code="profile_name"></spring:message></form:option> <form:option value="cfgDesc"><spring:message code="script_name"></spring:message></form:option>
<form:option value="isValid"><spring:message code="valid_identifier"></spring:message></form:option> <form:option value="isValid"><spring:message code="valid_identifier"></spring:message></form:option>
<form:option value="compileIdNew"><spring:message code="cfg_id"></spring:message></form:option> <form:option value="compileIdNew"><spring:message code="cfg_id"></spring:message></form:option>
</form:select> </form:select>
@@ -292,9 +292,9 @@
<tr> <tr>
<th><input type="checkbox" class="i-checks" id="checkAll"></th> <th><input type="checkbox" class="i-checks" id="checkAll"></th>
<th column="cfg_id" class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th> <th column="cfg_id" class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th>
<th column="profile_name" class="sort-column a.cfg_desc"><spring:message code="profile_name"/></th> <th column="profile_name" class="sort-column a.cfg_desc"><spring:message code="script_name"/></th>
<th column="file_insert_script" ><spring:message code="file_insert_script"/></th> <th column="file_insert_script" ><spring:message code="script_file"/></th>
<th column="format" ><spring:message code="format"/></th> <th column="format" ><spring:message code="script_format"/></th>
<th column="is_audit" class="a.is_valid"><spring:message code="is_audit"/></th> <th column="is_audit" class="a.is_valid"><spring:message code="is_audit"/></th>
<th column="letter" ><spring:message code="letter"/></th> <th column="letter" ><spring:message code="letter"/></th>
<th column="classification" ><spring:message code="classification"/></th> <th column="classification" ><spring:message code="classification"/></th>

View File

@@ -151,25 +151,6 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font>
<spring:message code="reply_file" /></label>
<div class="col-md-6">
<input id="cfgFile" name="cfgFile" type="file" style="width: 330px; display: none" />
<div class="input-group">
<input id="urlInfo" name="urlInfo" readonly="readonly" data-msg-required="" placeholder="<spring:message code="select_file"/>" class="required form-control"
style="background-color: transparent" aria-required="true"
type="text" value="${_cfg.url }">
<div class="input-group-btn">
<a id="urlBtn" class="btn btn-default btn-search"
href="javascript:" style=""><i class="fa fa-search"></i></a>
</div>
</div>
</div>
<div for="urlInfo"></div>
</div>
</div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="file_desc" /></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="file_desc" /></label>
@@ -197,7 +178,25 @@
<div for="contentType"></div> <div for="contentType"></div>
</div> </div>
</div> </div>
<div class="col-md-6">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font>
<spring:message code="response_file" /></label>
<div class="col-md-6">
<input id="cfgFile" name="cfgFile" type="file" style="width: 330px; display: none" />
<div class="input-group">
<input id="urlInfo" name="urlInfo" readonly="readonly" data-msg-required="" placeholder="<spring:message code="select_file"/>" class="required form-control"
style="background-color: transparent" aria-required="true"
type="text" value="${_cfg.url }">
<div class="input-group-btn">
<a id="urlBtn" class="btn btn-default btn-search"
href="javascript:" style=""><i class="fa fa-search"></i></a>
</div>
</div>
</div>
<div for="urlInfo"></div>
</div>
</div>
<div class="col-md-6 hidden"> <div class="col-md-6 hidden">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="action"/></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="action"/></label>

View File

@@ -282,8 +282,8 @@
<th><input type="checkbox" class="i-checks" id="checkAll"></th> <th><input type="checkbox" class="i-checks" id="checkAll"></th>
<th class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th> <th class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th>
<th class="sort-column a.cfg_desc"><spring:message code="file_desc"/></th> <th class="sort-column a.cfg_desc"><spring:message code="file_desc"/></th>
<th class="sort-column a.url"><spring:message code="response_file"/></th>
<th class="sort-column a.content_type"><spring:message code="content_type"/></th> <th class="sort-column a.content_type"><spring:message code="content_type"/></th>
<th class="sort-column a.content_length"><spring:message code="content_length"/></th>
<th><spring:message code="letter"/></th> <th><spring:message code="letter"/></th>
<th><spring:message code="classification"/></th> <th><spring:message code="classification"/></th>
<th><spring:message code="attribute"/></th> <th><spring:message code="attribute"/></th>
@@ -302,19 +302,15 @@
<c:forEach items="${page.list }" var="indexCfg" varStatus="status" step="1"> <c:forEach items="${page.list }" var="indexCfg" varStatus="status" step="1">
<tr> <tr>
<td> <td>
<input type="checkbox" class="i-checks child-checks" id="${indexCfg.cfgId}" value="${indexCfg.isAudit}"> <input type="checkbox" class="i-checks child-checks" id="${indexCfg.cfgId}" quoteStatus="${indexCfg.quote}" value="${indexCfg.isAudit}">
</td> </td>
<td>${indexCfg.compileId }</td> <td>${indexCfg.compileId }</td>
<td><a href="${indexCfg.url }" target="_blank">${indexCfg.fileDesc }</a></td> <td>${indexCfg.fileDesc }</td>
<td><a href="${indexCfg.url}" target="_blank" data-original-title="${indexCfg.url}"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fn:substring(indexCfg.url,0,20) }</a>
</td>
<td>${indexCfg.contentType }</td> <td>${indexCfg.contentType }</td>
<td>${indexCfg.contentLength }B</td>
<%-- <td>
<c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict">
<c:if test="${dict.itemCode eq indexCfg.action }">
<spring:message code="${dict.itemValue }"/>
</c:if>
</c:forEach>
</td> --%>
<td>${indexCfg.requestName }</td> <td>${indexCfg.requestName }</td>
<td> <td>
<c:set var="classify"></c:set> <c:set var="classify"></c:set>

View File

@@ -162,12 +162,14 @@ word-break:break-all;
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"><spring:message code="target_name"/></label> <label class="control-label col-md-3"><spring:message code="address_name"/></label>
<div class="col-md-6"> <div class="col-md-6">
<input class="form-control" type="text" name="cfgDesc" value="${_cfg.cfgDesc}"> <input class="form-control" type="text" name="cfgDesc" value="${_cfg.cfgDesc}">
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"> <label class="control-label col-md-3">
@@ -182,8 +184,6 @@ word-break:break-all;
<div for="addrType"></div> <div for="addrType"></div>
</div> </div>
</div> </div>
</div>
<div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"> <label class="control-label col-md-3">

View File

@@ -299,7 +299,7 @@
<tr> <tr>
<th><input type="checkbox" class="i-checks" id="checkAll"></th> <th><input type="checkbox" class="i-checks" id="checkAll"></th>
<th column="cfg_id" class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th> <th column="cfg_id" class="sort-column a.compile_id" style="display: none;"><spring:message code="cfg_id"/></th>
<th column="target_name" class="sort-column a.cfg_desc"><spring:message code="target_name"/></th> <th column="target_name" class="sort-column a.cfg_desc"><spring:message code="address_name"/></th>
<th column="mirror_addr_type" class="sort-column a.addr_type"><spring:message code="mirror_addr_type"/></th> <th column="mirror_addr_type" class="sort-column a.addr_type"><spring:message code="mirror_addr_type"/></th>
<th column="mirror_addr_list"><spring:message code="mirror_addr_list"/></th> <th column="mirror_addr_list"><spring:message code="mirror_addr_list"/></th>
<th column="is_audit"><spring:message code="is_audit"/></th> <th column="is_audit"><spring:message code="is_audit"/></th>
@@ -320,7 +320,7 @@
<c:forEach items="${page.list }" var="indexCfg" varStatus="status" step="1"> <c:forEach items="${page.list }" var="indexCfg" varStatus="status" step="1">
<tr> <tr>
<td> <td>
<input type="checkbox" class="i-checks child-checks" id="${indexCfg.cfgId}" value="${indexCfg.isAudit}"> <input type="checkbox" class="i-checks child-checks" id="${indexCfg.cfgId}" quoteStatus="${cfg.userRegion5}" value="${indexCfg.isAudit}">
</td> </td>
<td>${indexCfg.compileId }</td> <td>${indexCfg.compileId }</td>
<td>${indexCfg.cfgDesc}</a></td> <td>${indexCfg.cfgDesc}</a></td>