From 9ba7998f0c9233467132d37b695889185b384cbf Mon Sep 17 00:00:00 2001 From: zhangwei Date: Mon, 4 Jun 2018 17:29:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=82=AE=E4=BB=B6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangwei --- .../domain/configuration/CfgIndexInfo.java | 21 + .../domain/configuration/FileDigestCfg.java | 58 ++ .../domain/configuration/MailKeywordCfg.java | 4 + .../java/com/nis/util/ConfigServiceUtil.java | 4 +- .../configuration/MailCfgController.java | 157 ++++- .../nis/web/dao/configuration/MailCfgDao.java | 29 +- .../nis/web/dao/configuration/MailCfgDao.xml | 622 ++++++++++++++++++ .../service/configuration/MailCfgService.java | 309 ++++++++- .../configuration/WebsiteCfgService.java | 12 +- .../WEB-INF/views/cfg/digestCfgForm.jsp | 60 ++ .../WEB-INF/views/cfg/mail/mailForm.jsp | 323 +++++++++ .../WEB-INF/views/cfg/mail/mailList.jsp | 434 ++++++++++++ .../WEB-INF/views/cfg/mail/mailSubList.jsp | 219 ++++++ .../plugins/bootstrap/css/bootstrap.css | 2 +- 14 files changed, 2236 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/nis/domain/configuration/FileDigestCfg.java create mode 100644 src/main/java/com/nis/web/dao/configuration/MailCfgDao.xml create mode 100644 src/main/webapp/WEB-INF/views/cfg/digestCfgForm.jsp create mode 100644 src/main/webapp/WEB-INF/views/cfg/mail/mailForm.jsp create mode 100644 src/main/webapp/WEB-INF/views/cfg/mail/mailList.jsp create mode 100644 src/main/webapp/WEB-INF/views/cfg/mail/mailSubList.jsp diff --git a/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java b/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java index 603d022b1..b7d220bbb 100644 --- a/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java +++ b/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java @@ -44,6 +44,9 @@ public class CfgIndexInfo extends BaseCfg { private SslKeywordCfg sslCfg; private List sslList; private List domainList; + private List complexList; + private List stringList; + private List digestList; public AvVoipAccountCfg getVoipAccount() { return voipAccount; @@ -159,6 +162,24 @@ public class CfgIndexInfo extends BaseCfg { public void setDomainList(List domainList) { this.domainList = domainList; } + public List getComplexList() { + return complexList; + } + public void setComplexList(List complexList) { + this.complexList = complexList; + } + public List getStringList() { + return stringList; + } + public void setStringList(List stringList) { + this.stringList = stringList; + } + public List getDigestList() { + return digestList; + } + public void setDigestList(List digestList) { + this.digestList = digestList; + } public static String getTablename() { return tableName; } diff --git a/src/main/java/com/nis/domain/configuration/FileDigestCfg.java b/src/main/java/com/nis/domain/configuration/FileDigestCfg.java new file mode 100644 index 000000000..0ff8743bb --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/FileDigestCfg.java @@ -0,0 +1,58 @@ +/** + *@Title: CfgIndexInfo.java + *@Package com.nis.domain.restful + *@Description 索引公共表 + *@author dell + *@date 2018年5月17日 下午16:59:17 + *@version 版本号 + */ +package com.nis.domain.configuration; + +import java.util.List; + + +/** + * 文件摘要配置 + * @ClassName: FileDigestCfg.java + * @author (dell) + * @date 2018年5月17日 下午16:59:17 + * @version V1.0 + */ +public class FileDigestCfg extends BaseCfg { + + + /** + * + */ + private static final long serialVersionUID = 2796500715438264119L; + private static final String tableName="file_digest_cfg"; + private Long rawLen; + private String digest; + private Integer cfdsLevel; + + public static String getTablename() { + return tableName; + } + public Long getRawLen() { + return rawLen; + } + + public void setRawLen(Long rawLen) { + this.rawLen = rawLen; + } + + public String getDigest() { + return digest; + } + + public void setDigest(String digest) { + this.digest = digest; + } + public Integer getCfdsLevel() { + return cfdsLevel; + } + public void setCfdsLevel(Integer cfdsLevel) { + this.cfdsLevel = cfdsLevel; + } + +} diff --git a/src/main/java/com/nis/domain/configuration/MailKeywordCfg.java b/src/main/java/com/nis/domain/configuration/MailKeywordCfg.java index 769a3454d..8358ab296 100644 --- a/src/main/java/com/nis/domain/configuration/MailKeywordCfg.java +++ b/src/main/java/com/nis/domain/configuration/MailKeywordCfg.java @@ -16,6 +16,7 @@ package com.nis.domain.configuration; * @version V1.0 */ public class MailKeywordCfg extends ComplexkeywordCfg { + private static final String tableName = "mail_keyword_cfg"; /** * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么) * @@ -34,5 +35,8 @@ public class MailKeywordCfg extends ComplexkeywordCfg { this.matchMethod=0; this.isHexbin=0; } + public static String getTablename() { + return tableName; + } } diff --git a/src/main/java/com/nis/util/ConfigServiceUtil.java b/src/main/java/com/nis/util/ConfigServiceUtil.java index c72ab7a66..a47d958f4 100644 --- a/src/main/java/com/nis/util/ConfigServiceUtil.java +++ b/src/main/java/com/nis/util/ConfigServiceUtil.java @@ -271,7 +271,7 @@ public class ConfigServiceUtil { * @return * @throws Exception */ - public static ToMaatResult getFileDigest(String params,File file,Map fileDesc) throws MaatConvertException{ + public static ToMaatResult getFileDigest(String params,File file,String fileDesc) throws MaatConvertException{ String result = null; ToMaatResult bean = null; String url = Constants.SERVICE_URL+Constants.FILE_DIGEST_CFG; @@ -280,7 +280,7 @@ public class ConfigServiceUtil { FormDataMultiPart formDataMultiPart=new FormDataMultiPart(); FileDataBodyPart bodyPart=new FileDataBodyPart("file",file); formDataMultiPart.bodyPart(bodyPart); - Builder header = wt.request(MediaType.APPLICATION_JSON).header("File-Desc",ClientUtil.formatFileDesc(fileDesc) ); + Builder header = wt.request(MediaType.APPLICATION_JSON).header("File-Desc",fileDesc); Response response= header.post(Entity.entity(formDataMultiPart, formDataMultiPart.getMediaType())); if( response.getStatus() == 200){ result= response.readEntity(String.class); diff --git a/src/main/java/com/nis/web/controller/configuration/MailCfgController.java b/src/main/java/com/nis/web/controller/configuration/MailCfgController.java index a7920e3f8..1840307ca 100644 --- a/src/main/java/com/nis/web/controller/configuration/MailCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/MailCfgController.java @@ -1,6 +1,40 @@ package com.nis.web.controller.configuration; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.nis.domain.Page; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.ComplexkeywordCfg; +import com.nis.domain.configuration.FileDigestCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.maat.ToMaatResult; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.FileUtils; +import com.nis.util.JsonMapper; +import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; /** * 邮件相关配置控制类 @@ -8,6 +42,125 @@ import org.springframework.stereotype.Controller; * */ @Controller -public class MailCfgController { - +@RequestMapping("${adminPath}/ntc/mail/") +public class MailCfgController extends BaseController{ + @RequestMapping(value = {"mailList"}) + @RequiresPermissions(value={"mail:config"}) + public String mailList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,HttpServletRequest request,HttpServletResponse response) { + Page searchPage=new Page(request,response,"a"); + Page page = mailCfgService.getMailList(searchPage, cfg); + model.addAttribute("page", page); + initPageCondition(model,cfg); + return "/cfg/mail/mailList"; + } + @RequestMapping(value = {"mailForm"}) + @RequiresPermissions(value={"mail:config"}) + public String mailForm(Model model,String ids,CfgIndexInfo entity) { + if(StringUtils.isNotBlank(ids)){ + entity = mailCfgService.getMailCfg(Long.parseLong(ids)); + model.addAttribute("areaCfgs", entity.getAreaCfg()); + } + initFormCondition(model,entity); + model.addAttribute("_cfg", entity); + return "/cfg/mail/mailForm"; + } + @RequestMapping(value = {"saveMailCfg"}) + @RequiresPermissions(value={"mail:config"}) + public String saveMailCfg(Model model,HttpServletRequest request,HttpServletResponse response,String ids, + CfgIndexInfo entity,MultipartFile file) { + + try { + ToMaatResult result = null; + if(file!=null && file.getSize()>0 && entity.getDigestList()!=null && entity.getDigestList().size()>0){ + String sep = System.getProperty("file.separator"); + String digestFilePath = request.getRealPath("/")+"digestFile"; + FileUtils.createDirectory(digestFilePath); + String fileName = UUID.randomUUID()+FileUtils.getSuffix(file.getOriginalFilename(), true); + File uploadFile = new File(digestFilePath+sep+fileName); + FileCopyUtils.copy(file.getBytes(), uploadFile); + Date creatTime = entity.getCreateTime(); + //获取文件摘要接口调用 + Map fileMap = new HashMap(); + fileMap.put("filetype", FileUtils.getSuffix(file.getName(), false)); + fileMap.put("datatype", "dbSystem");//源文件存入数据中心 + + fileMap.put("createTime",creatTime); + fileMap.put("key",FileUtils.getPrefix(file.getName(), false)); + fileMap.put("fileName", file.getName()); + String md5 = DigestUtils.md5Hex(file.getBytes()); + fileMap.put("checksum", md5); + result = ConfigServiceUtil.getFileDigest(null, uploadFile, JsonMapper.toJsonString(fileMap)); + logger.info("获取文件摘要响应信息:"+result); + } + mailCfgService.saveMailCfg(entity,result); + } catch (IOException e) { + e.printStackTrace(); + } + + return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+entity.getFunctionId(); + } + @RequestMapping(value = {"ajaxMailSubList"}) + public String ajaxMailSubList(Model model,Long cfgId,Integer index) { + CfgIndexInfo cfg = mailCfgService.getMailCfg(cfgId); + List tabList = new ArrayList(); + if(cfg.getIpPortList()!=null){ + String cfgType = null; + for(IpPortCfg ip:cfg.getIpPortList()){ + if(!ip.getCfgType().equals(cfgType)){ + tabList.add(new String[]{"1",ip.getCfgType()}); + cfgType = ip.getCfgType(); + } + } + } + if(cfg.getComplexList()!=null){ + String cfgType = null; + for(ComplexkeywordCfg keyword:cfg.getComplexList()){ + if(!keyword.getCfgType().equals(cfgType)){ + tabList.add(new String[]{"3",keyword.getCfgType()}); + cfgType = keyword.getCfgType(); + } + } + } + if(cfg.getDigestList()!=null){ + String cfgType = null; + for(FileDigestCfg digest:cfg.getDigestList()){ + if(!digest.getCfgType().equals(cfgType)){ + tabList.add(new String[]{"5",digest.getCfgType()}); + cfgType = digest.getCfgType(); + } + } + } + model.addAttribute("_cfg", cfg); + model.addAttribute("index", index); + model.addAttribute("tabList", tabList); + return "/cfg/mail/mailSubList"; + } + @RequestMapping(value = {"updateMailCfgValid"}) + @RequiresPermissions(value={"mail:config"}) + public String updateMailCfgValid(Integer isValid,String ids,Integer functionId) { + mailCfgService.updateMailCfgValid(isValid,ids,functionId); + return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+functionId; + } + @RequestMapping(value = {"auditMailCfg"}) + @RequiresPermissions(value={"mail:audit"}) + public String auditMailCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = mailCfgService.getMailCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + mailCfgService.auditMailCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.info("mail配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes, e.getMessage()); + } + } + return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+functionId; + } } diff --git a/src/main/java/com/nis/web/dao/configuration/MailCfgDao.java b/src/main/java/com/nis/web/dao/configuration/MailCfgDao.java index 9550cb3f7..54a0d8a60 100644 --- a/src/main/java/com/nis/web/dao/configuration/MailCfgDao.java +++ b/src/main/java/com/nis/web/dao/configuration/MailCfgDao.java @@ -1,11 +1,36 @@ package com.nis.web.dao.configuration; +import java.util.List; + +import com.nis.domain.configuration.BaseCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.ComplexkeywordCfg; +import com.nis.domain.configuration.FileDigestCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; + /** * 邮件相关配置数据处理类 * @author dell * */ -public class MailCfgDao { - +@MyBatisDao +public interface MailCfgDao extends CrudDao{ + public CfgIndexInfo getCfgIndexInfo(Long id); + public List getMailList(CfgIndexInfo entity); + public List getIpPortList(CfgIndexInfo entity); + public List getMailKeywordList(CfgIndexInfo entity); + public List getMailFileDigestList(CfgIndexInfo entity); + public void saveCfgIndex(CfgIndexInfo entity); + public void saveIpPortCfg(IpPortCfg entity); + public void saveMailKeywordCfg(ComplexkeywordCfg entity); + public void saveMailFileDigestCfg(FileDigestCfg entity); + public void deleteMailIpCfg(CfgIndexInfo entity); + public void deleteMailKeywordCfg(CfgIndexInfo entity); + public void deleteMailFileDigestCfg(CfgIndexInfo entity); + public void updateCfgIndex(CfgIndexInfo entity); + public void updateCfgValid(BaseCfg entity); + public void auditCfg(BaseCfg entity); } diff --git a/src/main/java/com/nis/web/dao/configuration/MailCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/MailCfgDao.xml new file mode 100644 index 000000000..8a1a7ef28 --- /dev/null +++ b/src/main/java/com/nis/web/dao/configuration/MailCfgDao.xml @@ -0,0 +1,622 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.CFG_ID,a.CFG_DESC,a.ACTION,a.IS_VALID,a.IS_AUDIT, + a.CREATOR_ID,a.CREATE_TIME,a.EDITOR_ID,a.EDIT_TIME,a.AUDITOR_ID,a.AUDIT_TIME, + a.SERVICE_ID,a.REQUEST_ID,a.COMPILE_ID,a.IS_AREA_EFFECTIVE,a.CLASSIFY, + a.ATTRIBUTE,a.LABLE,a.AREA_EFFECTIVE_IDS,a.function_id + + + a.cfg_id,a.cfg_desc,a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port + ,a.protocol,a.protocol_id,a.direction,a.cfg_type,a.action,a.dest_port,a.dest_ip_address + ,a.is_valid,a.is_audit,a.creator_id,a.create_time,a.editor_id + ,a.edit_time,a.auditor_id,a.audit_time,a.service_id,a.request_id, + a.compile_id,a.is_area_effective,a.classify,a.attribute,a.lable + ,a.area_effective_ids,a.function_id,a.cfg_region_code + + + a.cfg_id,a.cfg_desc,a.cfg_keywords,a.cfg_type,a.district, + a.action,a.is_valid,a.is_audit,a.creator_id,a.create_time,a.editor_id,a.edit_time, a.auditor_id, + 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 + + + a.CFG_ID,a.CFG_DESC,a.raw_len,a.digest,a.cfds_level,a.ACTION,a.IS_VALID,a.IS_AUDIT, + a.CREATOR_ID,a.CREATE_TIME,a.EDITOR_ID,a.EDIT_TIME,a.AUDITOR_ID,a.AUDIT_TIME, + a.SERVICE_ID,a.REQUEST_ID,a.COMPILE_ID,a.IS_AREA_EFFECTIVE,a.CLASSIFY, + a.ATTRIBUTE,a.LABLE,a.AREA_EFFECTIVE_IDS,a.function_id,cfg_type,cfg_region_code + + + + + + + + + + + + + + SELECT LAST_INSERT_ID() + + insert into cfg_index_info( + 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 + )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} + ) + + + + + SELECT LAST_INSERT_ID() + + insert into ip_port_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, + ip_type, + src_ip_address, + ip_pattern, + port_pattern, + src_port, + protocol, + protocol_id, + direction, + dest_port, + dest_ip_address, + cfg_type, + cfg_region_code + )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}, + #{ipType,jdbcType=INTEGER}, + #{srcIpAddress,jdbcType=VARCHAR}, + #{ipPattern,jdbcType=INTEGER}, + #{portPattern,jdbcType=INTEGER}, + #{srcPort,jdbcType=VARCHAR}, + #{protocol,jdbcType=INTEGER}, + #{protocolId,jdbcType=INTEGER}, + #{direction,jdbcType=INTEGER}, + #{destPort,jdbcType=VARCHAR}, + #{destIpAddress,jdbcType=VARCHAR}, + #{cfgType,jdbcType=VARCHAR}, + #{cfgRegionCode,jdbcType=INTEGER} + ) + + + update cfg_index_info + + + + cfg_desc = #{cfgDesc,jdbcType=VARCHAR}, + + + action = #{action,jdbcType=INTEGER}, + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + is_audit = #{isAudit,jdbcType=INTEGER}, + + + creator_id = #{creatorId,jdbcType=INTEGER}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + editor_id = #{editorId,jdbcType=INTEGER}, + + edit_time = #{editTime,jdbcType=TIMESTAMP}, + + service_id = #{serviceId,jdbcType=INTEGER}, + + + request_id = #{requestId,jdbcType=INTEGER}, + + + is_area_effective = #{isAreaEffective,jdbcType=INTEGER}, + + + classify = #{classify,jdbcType=VARCHAR}, + + + attribute = #{attribute,jdbcType=VARCHAR}, + + + lable = #{lable,jdbcType=VARCHAR}, + + + area_effective_ids = #{areaEffectiveIds,jdbcType=VARCHAR}, + + + function_id = #{functionId,jdbcType=INTEGER}, + + + + where cfg_id = #{cfgId,jdbcType=BIGINT} + + + + update ${tableName} set is_valid = #{isValid,jdbcType=INTEGER}, + editor_id = #{editorId,jdbcType=INTEGER} , + edit_time = #{editTime,jdbcType=TIMESTAMP} + + + AND cfg_id = #{cfgId,jdbcType=BIGINT} + + + AND compile_id = #{compileId,jdbcType=INTEGER} + + and function_id=#{functionId,jdbcType=INTEGER} + + + + update ${tableName} set is_audit = #{isAudit,jdbcType=INTEGER}, + auditor_id = #{auditorId,jdbcType=INTEGER}, + audit_time = #{auditTime,jdbcType=TIMESTAMP} + + ,is_valid = #{isValid,jdbcType=INTEGER} + + + + AND cfg_id = #{cfgId,jdbcType=BIGINT} + + + AND compile_id = #{compileId,jdbcType=INTEGER} + + and function_id=#{functionId,jdbcType=INTEGER} + + + + + + + + SELECT LAST_INSERT_ID() + + insert into mail_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, + district, + 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}, + #{district,jdbcType=VARCHAR}, + #{cfgKeywords,jdbcType=VARCHAR}, + #{cfgType,jdbcType=VARCHAR}, + #{cfgRegionCode,jdbcType=INTEGER}, + #{exprType,jdbcType=INTEGER}, + #{matchMethod,jdbcType=INTEGER}, + #{isHexbin,jdbcType=INTEGER} + ) + + + + + SELECT LAST_INSERT_ID() + + insert into file_digest_cfg( + CFG_DESC, + RAW_LEN, + DIGEST, + CFDS_LEVEL, + 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_type, + cfg_region_code + )values ( + #{cfgDesc,jdbcType=VARCHAR}, + #{rawLen,jdbcType=BIGINT}, + #{digest,jdbcType=VARCHAR}, + #{cfdsLevel,jdbcType=INTEGER}, + #{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}, + #{cfgType,jdbcType=VARCHAR}, + #{cfgRegionCode,jdbcType=INTEGER} + ) + + + + delete from ip_port_cfg where compile_id=#{compileId} and protocol_id=5 and function_id=#{functionId} + + + + delete from mail_keyword_cfg where compile_id=#{compileId} and function_id=#{functionId} + + + + delete from file_digest_cfg where compile_id=#{compileId} and function_id=#{functionId} + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/service/configuration/MailCfgService.java b/src/main/java/com/nis/web/service/configuration/MailCfgService.java index 9eca64848..bb109d514 100644 --- a/src/main/java/com/nis/web/service/configuration/MailCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/MailCfgService.java @@ -1,6 +1,44 @@ package com.nis.web.service.configuration; +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.nis.domain.Page; +import com.nis.domain.configuration.AreaIpCfg; +import com.nis.domain.configuration.BaseStringCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.ComplexkeywordCfg; +import com.nis.domain.configuration.FileDigestCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.MailKeywordCfg; +import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.ToMaatBean; +import com.nis.domain.maat.ToMaatResult; +import com.nis.domain.maat.MaatCfg.DigestCfg; +import com.nis.domain.maat.MaatCfg.GroupCfg; +import com.nis.domain.maat.MaatCfg.IpCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.FileUtils; +import com.nis.util.JsonMapper; +import com.nis.web.dao.configuration.AreaIpCfgDao; +import com.nis.web.dao.configuration.MailCfgDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.CrudService; /** * 邮件相关配置事务类 @@ -8,6 +46,275 @@ import org.springframework.stereotype.Service; * */ @Service -public class MailCfgService { +public class MailCfgService extends CrudService { + @Autowired + protected MailCfgDao mailCfgDao; + @Autowired + protected AreaIpCfgDao areaIpCfgDao; + public Page getMailList(Page page, CfgIndexInfo entity){ + // 生成数据权限过滤条件(dsf为dataScopeFilter的简写,在xml中使用 ${sqlMap.dsf}调用权限SQL) + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"a")); + entity.setPage(page); + List list = mailCfgDao.getMailList(entity); + page.setList(list); + return page; + } + public CfgIndexInfo getMailCfg(Long cfgId){ + CfgIndexInfo entity = mailCfgDao.getCfgIndexInfo(cfgId); + List ipPortList = mailCfgDao.getIpPortList(entity); + List keywordList = mailCfgDao.getMailKeywordList(entity); + List digestList = mailCfgDao.getMailFileDigestList(entity); + List areaCfg = areaIpCfgDao.getByCompileId(entity.getCompileId()); + entity.setIpPortList(ipPortList); + entity.setComplexList(keywordList); + entity.setDigestList(digestList); + entity.setAreaCfg(areaCfg); + return entity; + } + /** + * 保存mail配置 + * @param entity + */ + + public void saveMailCfg(CfgIndexInfo entity,ToMaatResult result){ + //设置区域运营商信息 + setAreaEffectiveIds(entity); + if(entity.getCfgId()==null){ + Integer compileId = 0; + try { + List idList = ConfigServiceUtil.getId(1, 1); + if(idList!=null && idList.size()>0){ + compileId = idList.get(0); + } + entity.setCompileId(compileId); + entity.setCreateTime(new Date()); + entity.setCreatorId(entity.getCurrentUser().getId()); + mailCfgDao.saveCfgIndex(entity); + if(entity.getIpPortList()!=null){ + for(IpPortCfg cfg:entity.getIpPortList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + mailCfgDao.saveIpPortCfg(cfg); + } + } + if(entity.getComplexList()!=null){ + for(ComplexkeywordCfg cfg:entity.getComplexList()){ + if(StringUtils.isNotBlank(cfg.getCfgKeywords())){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + mailCfgDao.saveMailKeywordCfg(cfg); + } + } + } + if(entity.getDigestList()!=null){ + for(FileDigestCfg cfg:entity.getDigestList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(result!=null && result.getData()!=null){ + cfg.setRawLen(result.getData().getRawLen()); + cfg.setDigest(result.getData().getDigest()); + } + mailCfgDao.saveMailFileDigestCfg(cfg); + } + } + //保存区域IP信息 + if(entity.getAreaCfg()!=null){ + for(AreaIpCfg cfg:entity.getAreaCfg()){ + cfg.initDefaultValue(); + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + areaIpCfgDao.saveAreaIpCfg(cfg); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + + }else{ + mailCfgDao.updateCfgIndex(entity); + //无效子配置后,再新增子配置 + mailCfgDao.deleteMailIpCfg(entity); + mailCfgDao.deleteMailKeywordCfg(entity); + mailCfgDao.deleteMailFileDigestCfg(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"}); + mailCfgDao.saveIpPortCfg(cfg); + } + } + if(entity.getComplexList()!=null){ + for(ComplexkeywordCfg cfg:entity.getComplexList()){ + if(StringUtils.isNotBlank(cfg.getCfgKeywords())){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + mailCfgDao.saveMailKeywordCfg(cfg); + } + } + } + if(entity.getDigestList()!=null){ + for(FileDigestCfg cfg:entity.getDigestList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(result!=null && result.getData()!=null){ + cfg.setRawLen(result.getData().getRawLen()); + cfg.setDigest(result.getData().getDigest()); + } + mailCfgDao.saveMailFileDigestCfg(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 updateMailCfgValid(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); + mailCfgDao.updateCfgValid(entity); + //查询子配置 + entity = this.getMailCfg(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()); + mailCfgDao.updateCfgValid(cfg); + } + if(entity.getComplexList()!=null && entity.getComplexList().size()>0) + { + MailKeywordCfg cfg = new MailKeywordCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(MailKeywordCfg.getTablename()); + mailCfgDao.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()); + mailCfgDao.updateCfgValid(cfg); + } + + } + + } + public void auditMailCfg(CfgIndexInfo entity,Integer isAudit) throws MaatConvertException{ + //修改数据库审核状态信息 + entity.setTableName(CfgIndexInfo.getTablename()); + mailCfgDao.auditCfg(entity); + + ToMaatBean maatBean = new ToMaatBean(); + MaatCfg maatCfg = new MaatCfg(); + List configCompileList = new ArrayList(); + List groupRelationList = new ArrayList(); + List ipRegionList = new ArrayList(); + List strRegionList = new ArrayList(); + List numRegionList = new ArrayList(); + List digestRegionList = new ArrayList(); + List areaIpRegionList = new ArrayList(); + + //查询子配置并修改审核状态 + entity = this.getMailCfg(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()); + mailCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map 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.getComplexList()!=null && entity.getComplexList().size()>0){ + MailKeywordCfg cfg = new MailKeywordCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(MailKeywordCfg.getTablename()); + mailCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getComplexList(),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()); + mailCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map 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("mail配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json); + logger.info("mail配置下发响应信息:"+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("mail配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.put(json,1); + logger.info("mail配置取消配置响应信息:"+result.getMsg()); + } + } } diff --git a/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java b/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java index fa9d72951..5482ebb7f 100644 --- a/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java @@ -112,14 +112,6 @@ public class WebsiteCfgService extends CrudService { page.setList(list); return page; } - public Page getDnsList(Page page, CfgIndexInfo entity){ - // 生成数据权限过滤条件(dsf为dataScopeFilter的简写,在xml中使用 ${sqlMap.dsf}调用权限SQL) - entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"a")); - entity.setPage(page); - List list = websiteCfgDao.getWebsiteList(entity); - page.setList(list); - return page; - } public void saveHttpCfg(CfgIndexInfo entity){ //设置区域运营商信息 setAreaEffectiveIds(entity); @@ -772,14 +764,14 @@ public class WebsiteCfgService extends CrudService { entity.setFunctionId(functionId); websiteCfgDao.updateCfgValid(entity); //查询子配置 - entity = this.getSslCfg(Long.parseLong(id)); + entity = this.getDnsCfg(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) + if(entity.getDomainList()!=null && entity.getDomainList().size()>0) { SslKeywordCfg cfg = new SslKeywordCfg(); BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); diff --git a/src/main/webapp/WEB-INF/views/cfg/digestCfgForm.jsp b/src/main/webapp/WEB-INF/views/cfg/digestCfgForm.jsp new file mode 100644 index 000000000..ba18d9b90 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/digestCfgForm.jsp @@ -0,0 +1,60 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ +
+ +
+ " class="required form-control" style=" background-color:transparent" + aria-required="true" type="text" value="${digestCfg.digest }"> + +
+ +
+
+ +
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ diff --git a/src/main/webapp/WEB-INF/views/cfg/mail/mailForm.jsp b/src/main/webapp/WEB-INF/views/cfg/mail/mailForm.jsp new file mode 100644 index 000000000..be2ecca1a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/mail/mailForm.jsp @@ -0,0 +1,323 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + + + +
+
+
+
+
+
+ + + + + + + +
+
+
+ +
+ + + + + +
+ + +
+
+
+ +
+ +
+
+
+
+
+ +
+ + + +
+
+
+
+
+ + + + + + + +

+ + +

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

+ + +

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

+ + +

+ + + + + + + + +
+ <%@include file="/WEB-INF/views/cfg/digestCfgForm.jsp"%> +
+ + +
+
+
+ + + + +
+ + + + +
+
+
+
+ <%@include file="/WEB-INF/include/form/areaInfo.jsp"%> +
+ <%@include file="/WEB-INF/include/form/basicInfo.jsp"%> +
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/mail/mailList.jsp b/src/main/webapp/WEB-INF/views/cfg/mail/mailList.jsp new file mode 100644 index 000000000..fee282610 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/mail/mailList.jsp @@ -0,0 +1,434 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + + + +
+ + +

+ + +

+ +
+
+
+
+ + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+
+ + + + <%-- + + + --%> + + +
+ + + +
+
+
+ + + +
+
+ + + + + +
+ + +
+
+ href="javascript:;"> + + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ +
+ +
+ + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ +
+ +
+
+
+ + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+
+ + +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + ${indexCfg.cfgDesc } + + + + + + + + + ${indexCfg.requestName } + + + + + + + + + + + + + + + ${fns:abbr(classify,20)} + + + + + + + + + + + + + + + + + ${fns:abbr(attribute,20)} + + + + + + + + + + + + + + + + + + ${fns:abbr(lableInfo,20)} + + + + + + + + + + + + + ${indexCfg.creatorName }${indexCfg.editorName }${indexCfg.auditorName }
+
${page}
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/mail/mailSubList.jsp b/src/main/webapp/WEB-INF/views/cfg/mail/mailSubList.jsp new file mode 100644 index 000000000..a01053232 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/mail/mailSubList.jsp @@ -0,0 +1,219 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + + +
+ + +
+
+ +
+ + + + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+
+ + + +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+
+ +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+ \ No newline at end of file diff --git a/src/main/webapp/static/global/plugins/bootstrap/css/bootstrap.css b/src/main/webapp/static/global/plugins/bootstrap/css/bootstrap.css index 116e8cf02..29e3f3f0c 100644 --- a/src/main/webapp/static/global/plugins/bootstrap/css/bootstrap.css +++ b/src/main/webapp/static/global/plugins/bootstrap/css/bootstrap.css @@ -5221,7 +5221,7 @@ button.close { white-space: normal; word-break: normal; word-spacing: normal; - word-wrap: normal; + word-wrap: break-word; font-size: 12px; opacity: 0; filter: alpha(opacity=0); }