修复文件劫持、注入、阻断页面、镜像若干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;//储存路径
@ExcelField(title="content_name",sort=4)
private String contentName;//内容格式
private int quote;//判断与其他菜单是否关联使用中
private String quote;//判断与其他菜单是否关联使用中
public String getContentName() {
return contentName;
@@ -28,10 +28,10 @@ public class ProxyFileHijackCfg extends BaseCfg<ProxyFileHijackCfg>{
public void setContentName(String contentName) {
this.contentName = contentName;
}
public int getQuote() {
public String getQuote() {
return quote;
}
public void setQuote(int quote) {
public void setQuote(String quote) {
this.quote = quote;
}
public String getIndexTable() {

View File

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

View File

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

View File

@@ -3729,8 +3729,15 @@ public class BaseController {
page.setPageNo(1);
page.setLastPage(false);
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)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData);
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{
hasData = false;
}
@@ -3771,7 +3778,7 @@ public class BaseController {
List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();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);
}
}
@@ -3790,7 +3797,7 @@ public class BaseController {
List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();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);
}
}
@@ -3807,8 +3814,15 @@ public class BaseController {
page.setPageNo(1);
page.setLastPage(false);
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)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData);
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{
hasData = false;
}
@@ -3833,8 +3847,15 @@ public class BaseController {
page.setPageNo(1);
page.setLastPage(false);
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)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData);
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{
hasData = false;
}
@@ -4143,9 +4164,11 @@ public class BaseController {
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
if(!cfg.getQuote().equals("1")){
notAuditList.add(cfg);
}
}
}
}else if(className.equals("ProxyFileInsertScriptCfg")){
list = proxyFileInsertScriptService.findPage(page, searFileInsertScriptCfg).getList();
for(int i=0;i<list.size();i++){

View File

@@ -51,7 +51,7 @@
<include refid="ProxyFileHijackCfgColumn" />
<trim prefix="," prefixOverrides=",">
, 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>
FROM PXY_PROFILE_HIJACK_FILES a
left join sys_user s on a.creator_id=s.id
@@ -156,6 +156,7 @@
<!-- 数据范围过滤 -->
${sqlMap.dsf}
</trim>
group by compile_id
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -51,7 +51,7 @@
<include refid="ProxyFileInsertScriptCfgColumn" />
<trim prefix="," prefixOverrides=",">
, 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>
FROM PXY_PROFILE_INSERT_SCRIPTS a
left join sys_user s on a.creator_id=s.id
@@ -155,6 +155,7 @@
<!-- 数据范围过滤 -->
${sqlMap.dsf}
</trim>
group by compile_id
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -53,13 +53,14 @@
<include refid="ProxyFileResponsePageCfgColumn" />
<trim prefix="," prefixOverrides=",">
, 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>
FROM pxy_profile_response_pages a
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 u on a.auditor_id=u.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 ">
<if test="page !=null and page.where != null and page.where != ''">
@@ -160,6 +161,7 @@
<!-- 数据范围过滤 -->
${sqlMap.dsf}
</trim>
group by compile_id
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -50,14 +50,14 @@
<include refid="ProxyFileTrafficMirrorCfgColumn" />
<trim prefix="," prefixOverrides=",">
, 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>
FROM PXY_PROFILE_TRAFFIC_MIRROR a
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 u on a.auditor_id=u.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 ">
<if test="page !=null and page.where != null and page.where != ''">
AND ${page.where}
@@ -157,6 +157,7 @@
<!-- 数据范围过滤 -->
${sqlMap.dsf}
</trim>
group by compile_id
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},a.is_audit,a.CFG_ID desc

View File

@@ -142,13 +142,14 @@
<include refid="PxyObjKeyringColumns"/>
<trim prefix="," prefixOverrides=",">
,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>
FROM pxy_obj_keyring r
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 u on r.auditor_id=u.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 ">
<if test="page !=null and page.where != null and page.where != ''">
AND ${page.where}
@@ -229,6 +230,7 @@
<!-- 数据范围过滤 -->
${sqlMap.dsf}
</trim>
group by compile_id
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy},r.is_audit,r.CFG_ID desc

View File

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

View File

@@ -1020,7 +1020,7 @@ PXY_INTERCEPT_PKT_BIN=Packet Payload
certificate=Certificate
do_log=Logging Option
file_strategy=File Strategy
file_desc=File Desc
file_desc=File Description
content_type=Content Type
content_length=Content Length
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)
hijack_file_strategy=Hijack File
profile_name=Profile Name
file_insert_script=File Insert Script
format=Format
file_quote_disable_delete=File quote Disable Delete
file_insert_script=Script Injection
script_name=Script Name
script_format=Script Format
script_file=Script File
file_quote_disable_delete=File Quote Disable Delete
target_type=Target Type
vlan=VLAN
mac=MAC
mirror_addr_list=Address List
mirror_addr_type=Address Type
target_name=Target Name
traffic_mirror_address=Traffic Mirror Address
address_name=Address Name
traffic_mirror_address=Destination Network Address
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!
#---------------------------pxy intercept------------------------------------
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
profile_name=Profile Name
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
mac=MAC
vlan=VLAN
mirror_addr_list=Address List
mirror_addr_type=Address Type
target_name=Target Name
traffic_mirror_address=Traffic Mirror Address
address_name=Address Name
traffic_mirror_address=Destination Network Address
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!
#---------------------------pxy intercept------------------------------------
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
profile_name=\u6587\u4ef6\u540d\u79f0
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
vlan=\u865a\u62df\u5c40\u57df\u7f51
mac=MAC\u5730\u5740
mirror_addr_list=\u76ee\u6807\u6807\u8bc6\u5217\u8868
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
content_name=\u5185\u5bb9\u540d\u79f0
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!
#---------------------------pxy intercept------------------------------------
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){
doAll(checkboxes,url);
}
@@ -605,8 +609,18 @@ function validateIsDelete(checkboxes){
function validateIsDeleteOfQuote(checkboxes){
var flag = false;
$(checkboxes).filter(":checked").each(function(){
if($(this).attr("quoteStatus") != -1 && $(this).attr("quoteStatus") != 0
&& "undefined" != typeof $(this).attr("quoteStatus")){ //可删除的条件
if($(this).attr("quoteStatus") != -1 && "undefined" != typeof $(this).attr("quoteStatus") && $(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;
return;
}

View File

@@ -322,7 +322,7 @@
<c:forEach items="${page.list }" var="cfg" varStatus="status" step="1">
<tr>
<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>${cfg.compileId }</td>
<td>${cfg.cfgDesc }</td>

View File

@@ -14,6 +14,9 @@
$("#urlInfo").val($("#cfgFile").val());
cfgFileValidate();
});
$("#contentType").on('change',function(){
cfgFileValidate();
});
$("#cfgFrom") .validate( {
submitHandler : function(form) {
@@ -38,22 +41,16 @@
function cfgFileValidate(){
var flag=false; //状态,检测文件后缀用
var arr=["exe","apk"];//使用是什么格式的后缀
var cFile=$("#cfgFile").val();//文件的值
//取出上传文件的扩展名
var index=cFile.lastIndexOf(".");
var ext = cFile.substr(index+1).toLowerCase();
//循环比较
for(var i=0;i<arr.length;i++)
{
if(ext == arr[i])
{
flag = true; //一旦找到合适的,立即退出循环
break;
}
}
//条件判断
var tail = $("#contentType").find("option:selected").attr("tail")
$("div[for='urlInfo']").empty();
if(ext == tail || tail ==""){
flag = true;
return flag;
}
if(!flag){
// ("文件名不合法");
$("div[for='urlInfo']").append("<label id='level-error' class='error'><spring:message code='file_in_wrong_format'/></label>");
@@ -150,6 +147,40 @@
</div>
</div>
<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="form-group ">
<label class="control-label col-md-3"><font color="red">*</font>
@@ -169,40 +200,6 @@
<div for="urlInfo"></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="form-group">
<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">
<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="compileIdNew"><spring:message code="cfg_id"></spring:message></form:option>
</form:select>
@@ -292,7 +292,7 @@
<tr>
<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="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="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>

View File

@@ -152,10 +152,36 @@
</div>
</div>
<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="form-group ">
<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">
<input id="cfgFile" name="cfgFile" type="file" style="width: 330px; display: none" />
<div class="input-group">
@@ -171,33 +197,6 @@
<div for="urlInfo"></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="form-group">
<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">
<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="compileIdNew"><spring:message code="cfg_id"></spring:message></form:option>
</form:select>
@@ -292,9 +292,9 @@
<tr>
<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="profile_name" class="sort-column a.cfg_desc"><spring:message code="profile_name"/></th>
<th column="file_insert_script" ><spring:message code="file_insert_script"/></th>
<th column="format" ><spring:message code="format"/></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="script_file"/></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="letter" ><spring:message code="letter"/></th>
<th column="classification" ><spring:message code="classification"/></th>

View File

@@ -151,25 +151,6 @@
</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="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="form-group">
<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>
</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="form-group">
<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 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.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_length"><spring:message code="content_length"/></th>
<th><spring:message code="letter"/></th>
<th><spring:message code="classification"/></th>
<th><spring:message code="attribute"/></th>
@@ -302,19 +302,15 @@
<c:forEach items="${page.list }" var="indexCfg" varStatus="status" step="1">
<tr>
<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>${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.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>
<c:set var="classify"></c:set>

View File

@@ -162,12 +162,14 @@ word-break:break-all;
<div class="row">
<div class="col-md-6">
<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">
<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">
@@ -182,8 +184,6 @@ word-break:break-all;
<div for="addrType"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">

View File

@@ -299,7 +299,7 @@
<tr>
<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="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_list"><spring:message code="mirror_addr_list"/></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">
<tr>
<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>${indexCfg.compileId }</td>
<td>${indexCfg.cfgDesc}</a></td>