621 Commits

Author SHA1 Message Date
wangxin
caaebed4a5 feat(策略对象组): 生效配置action为White List时,不允许修改action 2019-10-31 15:55:12 +08:00
wangxin
b3ba3c3961 fix(公共分组配置修改): 非白名单动作切换白名单
隐藏url组,域名组,账号组
2019-10-30 16:14:01 +08:00
wangxin
faed29c8b8 feat(策略对象组): 添加whitelist
执行whitelist.sql,更新form.jsp和service_config.xml
2019-10-30 14:01:51 +08:00
shangguan
32fe2bb3d3 日志检索-APP协议页面-修改监测动作,列表展示为数字的BUG 2019-10-16 13:38:18 +08:00
zhangwenqing
b9f7fe1941 修正 IpPayload配置下载导入模板时异常 2019-08-20 17:30:12 +08:00
zhangwenqing
030fe60a93 修正FTP配置批量删除功能 2019-08-20 13:33:01 +08:00
shangguan
f7f87d2ba9 实时报表-流量统计-统计菜单 时间粒度字段width样式修改 2019-08-09 15:00:53 +08:00
wangxin
01d5bbe9bc 注释P2P日志查询结果打印语句
(cherry picked from commit 34ba8abbf4)
2019-07-28 10:23:40 +08:00
wangxin
272042e432 删除组时删除配置与组的关系修复
(cherry picked from commit 4e2a5570fd)
2019-07-26 18:31:15 +08:00
王鑫
c193b44f66 Merge branch 'cherry-pick-94cf096b' into 'develop_no_common_group'
域清空的时候,当任务是有效的时候删除定时任务,当任务是未生效状态时候也要删除定时任务

See merge request K18_NTCS_WEB/NTC!50
2019-07-26 10:41:07 +08:00
wangxin
f8d9f106c3 域清空的时候,当任务是有效的时候删除定时任务,当任务是未生效状态时候也要删除定时任务
(cherry picked from commit 94cf096be4)
2019-07-26 10:40:46 +08:00
wangxin
d2d52b0b13 修正组清空时取消定时任务 2019-07-25 20:07:59 +08:00
wangxin
121fab31ea 修复生效配置可添加定时任务 2019-07-25 16:34:40 +08:00
wangxin
0c639a2d30 线程类增加异常捕获,日志记录 2019-07-25 09:07:46 +08:00
wangxin
7afa89951c 查询配置不能使用多线程,会导致事务失效 2019-07-22 19:03:42 +08:00
zhangwenqing
3f952f6a83 ObjectList选中/批量删除时增加遮罩层 2019-07-19 15:26:11 +08:00
wangxin
8c514c4e7e 配置转换改为多线程转换,一个组类型一个线程;审核与更新组配置是查询配置下的所有域的查询改为多线程查询。在多个组的情况下处理速度会加快。 2019-07-19 12:59:25 +08:00
wangxin
12a77173ca expireAfter从 form表单,列表界面,导出Excel,审核下发去掉(隐藏) 2019-07-19 10:31:58 +08:00
zhangwenqing
7949dc7da5 修正ObjectList用户登录状态失效后提示信息错误问题 2019-07-16 17:18:37 +08:00
wangxin
b665c4bc75 补充SSL协议字典SQL 2019-07-15 18:09:24 +08:00
wangxin
41d2e6ae2f 删除替换了serviceId的无用代码 2019-07-15 15:42:44 +08:00
wangxin
9763cb3093 IP Payload权限字段修改 2019-07-12 15:22:44 +08:00
wangxin
ef04251ef1 (1)doLog切换改为和service id相同界面的doLog切换一致
(2)serviceId设置改为在jsp页面进行
(3)fns.tld调整错误的函数返回值
2019-07-10 17:03:11 +08:00
wangxin
377cca923c (1)流媒体最多7个组提示(2)VoIp协议提交 2019-07-04 11:38:34 +08:00
wangxin
ff444747ee 策略对象增加流媒体协议 2019-07-04 11:05:24 +08:00
wangxin
e0b6f18615 策略对象p2p协议提交(无userRegion) 2019-07-04 10:11:23 +08:00
wangxin
61e920e9ec 策略对象增加SSL协议 2019-07-03 16:51:10 +08:00
wangxin
360fdd574a 策略组加入BGP协议 2019-07-03 15:44:39 +08:00
zhangwenqing
44d8b842a6 代理-控制策略修改补充
4.导出功能修改
2019-07-03 10:07:50 +08:00
wangxin
d2ddba9362 策略对象FTP协议提交 2019-07-03 09:33:46 +08:00
wangxin
6034fa5bff 调整预估IP range region数量的方法,region数量计算大于1才调用综合服务接口 2019-07-03 09:25:07 +08:00
wangxin
ef82ba822f DNS协议策略组功能提交 2019-07-02 17:37:14 +08:00
zhangwenqing
d587c67c03 代理-控制策略修改
1.白名单增加应答头域
2.操控:Redirect增加响应体域,Hijack/Inser增加SubscriberID域,修正URL必选
3.以上涉及导入相应修改
2019-07-02 17:24:27 +08:00
wangxin
dd0133b2d2 mail最多7个组限制补充;修正请至少选择一个组的中文国际化 2019-07-02 16:05:40 +08:00
wangxin
7d911e748a ①协议由于数量增加,现改为字典
②增加邮件协议下发逻辑
2019-07-02 15:12:39 +08:00
wangxin
2155998f13 加入参数控制json超过一定长度不打印 2019-06-28 16:01:44 +08:00
zhangwenqing
0edcf7162f 修改ObjectList导入,减少遍历次数 2019-06-28 15:40:14 +08:00
zhangwenqing
7080e65671 清空配置增加策略分组处理 2019-06-27 16:27:56 +08:00
wangxin
06221477a5 修复计算ip region数量时destIpAddress写成srcIpAddress 2019-06-27 14:41:23 +08:00
shangguanyanfei
6e646d83e5 流量统计-统计页面错误提示信息修改 2019-06-27 10:33:17 +08:00
wangwei
fe24ba0fc6 Merge branch 'develop_no_common_group' of git@git.mesalab.cn:K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-27 09:05:06 +08:00
wangxin
1c8ff7cb08 针对IP region range情况做出特殊优化,一次获取region ID 2019-06-26 18:34:10 +08:00
zhangwenqing
3ddd809066 修正ObjectList管理域配置批量删除时 错误取消策略配置bug 2019-06-26 17:40:47 +08:00
wangxin
c0f424579b 修正勾选审核提示compile id 2019-06-26 17:27:01 +08:00
shangguanyanfei
881372118e 流量统计-统计页面 修改服务接口异常时提示的错误信息 2019-06-26 16:56:45 +08:00
wangwei
e746cb413e 替换内置拦截白名单策略 2019-06-26 16:42:19 +08:00
shangguanyanfei
d1335db3a3 流量统计-统计页面 阻断监测查询条件修改 2019-06-26 15:19:40 +08:00
wangwei
c6e315e1bc Merge branch 'develop_no_common_group' of git.mesalab.cn:K18_NTCS_WEB/NTC into develop_no_common_group 2019-06-26 15:12:38 +08:00
wangwei
51a833f9fb 添加内置拦截白名单策略
不能修改不能删除不能无效
2019-06-26 15:11:58 +08:00
wangwei
714ac134f8 添加内置拦截白名单策略
不能修改不能删除不能无效
2019-06-26 15:01:17 +08:00
wangwei
a1f0f432e7 批量审核取消添加条件判断避免执行无用代码 2019-06-26 13:10:59 +08:00
shangguanyanfei
2ed5ae2727 流量统计-统计页面的配置ID统计二级页面添加serviceId的查询条件 2019-06-26 11:37:39 +08:00
wangwei
9d47a56130 ProxyPolicyObject菜单:配置批量取消审核过滤被引用策略 2019-06-26 10:57:14 +08:00
zhangwenqing
11a5d1a65f 删掉重复国际化代码 2019-06-26 09:52:24 +08:00
wangwei
8db3eca2e0 修正interceptPolicy默认值:MirrorClientVersions 2019-06-26 09:05:24 +08:00
zhangwenqing
8fb4f6e5b5 Object List批量删除增加提示信息 2019-06-25 17:47:47 +08:00
wangxin
ca17b49bf8 intercept列表展示与导出替换为国际化code 2019-06-25 15:13:41 +08:00
wangxin
e82e69edbc Merge remote-tracking branch 'origin/develop_no_common_group' into develop_no_common_group 2019-06-25 14:34:36 +08:00
wangxin
28c9d6d107 group添加默认空的选项,列表与导出添加协议 2019-06-25 14:34:10 +08:00
duandongmei
090ab473c2 DDoS菜单sql更改 2019-06-25 13:51:18 +08:00
wangwei
98477b8e08 去除多余代码 2019-06-25 11:38:48 +08:00
wangwei
d12973f2bf 可新证书页面去除文件格式校验 2019-06-25 09:36:29 +08:00
wangwei
c9f99cb592 修复data-original-title鼠标聚焦时提示信息不提示bug 2019-06-25 09:27:54 +08:00
wangwei
15aee31e5d Trusted Certificate新增时添加文件格式提示信息 2019-06-25 09:26:27 +08:00
wangwei
d2787f6080 打开可信证书文件检验 2019-06-24 19:37:56 +08:00
zhangwenqing
e9a06cabaf 修正ObjectList模块导入功能 2019-06-24 17:10:35 +08:00
wangxin
e23b638907 调整批量审核错误提示,既保持查询条件也能提示错误 2019-06-24 16:43:06 +08:00
wangxin
240b10a05d Policy Group加入IP下发逻辑 2019-06-24 16:18:32 +08:00
wangwei
05599738d9 切换文件格式提示错误但能提交bug 2019-06-24 13:44:39 +08:00
wangwei
a97c2b51c0 修复ResponsePage导出筛选无效bug、国际化字段更新 2019-06-24 13:26:24 +08:00
wangxin
7ad3d9a80b 修复选择导出异常 2019-06-24 11:14:56 +08:00
wangxin
7dfe52590b 修复Policy Group导出列顺序,action与界面不一致,url组中出现null 2019-06-24 11:08:27 +08:00
zhangwenqing
1eaf3fb4c6 1.修复HTTP(s) Monitor/Block配置导出无请求内容、响应头域BUG
2.增加分组域管理Excel导入GroupName必填校验
2019-06-24 10:36:36 +08:00
wangwei
a0ecce4678 修复TrustedCertificate导出多出Crl文件列 2019-06-24 10:24:16 +08:00
wangwei
5f63be0c72 keyring再次颁发有效期(天)可填写小数的bug 2019-06-24 10:22:45 +08:00
wangwei
92c34a108c 修复keyring导出缺少 CRL列、再次颁发有效期(天)可填写小数的bug 2019-06-24 10:05:42 +08:00
wangwei
c812bebb2d ResponsePage增加导出功能 2019-06-23 18:19:06 +08:00
wangwei
30ec0dc379 修复表单未选择文件时 会出现文件格式错误提示 2019-06-23 17:42:19 +08:00
wangwei
d7fc2a1d81 修复InsertScripts、TrafficMirror导出列名不一致bug 2019-06-23 17:11:10 +08:00
wangwei
540d669073 TrafficMirror:添加AddressList属性值大小限制 2019-06-23 16:55:38 +08:00
duandongmei
8910c864ef cacert文件夹创建 2019-06-22 18:18:57 +08:00
wangwei
24ff189f8d 修复非系统内置证书无法编辑,仍提示禁止操作bug 2019-06-22 18:09:31 +08:00
wangwei
30b8d63f21 修正劫持、注入脚本、访问阻断页面文件校验及阻断页面文件描述字符长度校验 2019-06-22 16:32:57 +08:00
wangxin
32e35b4bc3 group多选改为单选 2019-06-22 10:42:19 +08:00
wangxin
891d1a9cbb 修改service字典,monit时Block的action doLog disable值0去掉,页面doLog在非拦截时交由service字典控制 2019-06-21 17:51:50 +08:00
wangwei
fd3b6f8fca 修复interceptPolicy导出不一致bug 2019-06-21 17:35:20 +08:00
wangwei
d67a25335f interceptPolicy界面去除限速的判断 2019-06-21 17:34:28 +08:00
wangwei
4a3e865c75 interceptPolicy去掉限速action、IP和域名都不填bug 2019-06-21 16:35:52 +08:00
zhangwenqing
84579c8f3f 1.修改分组域配置批量删除逻辑
2.修正分组域配置删除提示信息
3.补漏表单GroupName必填
2019-06-21 15:59:18 +08:00
wangxin
d6f8927499 ojb-list-group 策略用户自定义域默认返回0 2019-06-21 14:56:07 +08:00
wangxin
399396815f form表单注释HTTPS跟Intercept,恢复之前被注释的取消配置代码 2019-06-21 10:35:55 +08:00
wangxin
eab1a85554 修复数值域无协议ID的时候仍然下发的bug 2019-06-20 18:47:26 +08:00
wangwei
b5e49c5dba Merge branch 'develop_no_common_group' of git.mesalab.cn:K18_NTCS_WEB/NTC into develop_no_common_group 2019-06-20 18:34:54 +08:00
wangwei
38f63b8175 更新国际化 2019-06-20 18:33:42 +08:00
zhangwenqing
b4c06301b0 1.IP分组域配置修改增加修改人/时间
2.修复携带查询条件无法导出数据bug
3.优化分组域配置导入
2019-06-20 18:06:38 +08:00
wangwei
8217770d6d InterceptPolicy:添加protocol errors参数、且修正默认参数 2019-06-20 17:59:50 +08:00
wangwei
cf6d462feb 修改keyring可信证书和不可信证书名称 2019-06-20 17:50:51 +08:00
wangxin
620f26fa2f (1)加入HTTP协议的Object-Group Policy
(2)修复增域删域的逻辑错误
(3)调整拦截自定义域
2019-06-20 16:53:23 +08:00
wangwei
0a695b3a51 理相关的应答头的district的值set-cookie修改为Set-Cookie 2019-06-19 18:10:58 +08:00
shangguanyanfei
6eafd88642 流量统计-统计菜单页面查询条件样式调整 2019-06-19 17:03:32 +08:00
wangxin
fc339cae7e 初始表单当非选中拦截的时候隐藏域名组 2019-06-19 16:40:32 +08:00
zhangwenqing
bb13d8bbec 1.增加列表缺少字段导出相应修改 2.增加分组域配置批量删除功能 3.修复分组域配置导入不下发bug 2019-06-19 16:15:21 +08:00
wangxin
5f7eb1ec43 清空所有域以后引用组的定时任务删除 2019-06-19 11:13:41 +08:00
zhangwenqing
46fd30e443 修正菜单sql 2019-06-19 09:36:34 +08:00
shangguanyanfei
ce75edd0d2 流量统计-统计菜单配置统计查询列表点击方法修改 2019-06-18 14:15:41 +08:00
wangxin
01655fcc4c sublist修正 2019-06-18 12:25:24 +08:00
wangxin
629a92a2ce 恢复ssl version min与max的值,obj-list-group界面去除 日志总量一列的展示 2019-06-18 10:20:42 +08:00
wangwei
f03cba22dd 拦截策略Pinning提示信息 2019-06-18 09:19:19 +08:00
wangxin
a1a2324304 Merge remote-tracking branch 'origin/develop_no_common_group' into develop_no_common_group 2019-06-17 19:01:25 +08:00
wangxin
e622288234 (1)Obj-list-group sub页面增加定时任务展示
(2)修复form表单当默认monitor动作时Intercept无法展示的bug
(3)调整拦截动作下发userregion
2019-06-17 19:00:51 +08:00
wangwei
eb3616f6ff 更新国际化文件 2019-06-17 18:58:21 +08:00
shangguanyanfei
323920263d 流量统计-统计页面初始化默认时间修改 2019-06-17 17:21:10 +08:00
wangwei
25a5cc802e 修正intercept Policy菜单keyring默认值为1 2019-06-17 16:46:50 +08:00
duandongmei
889d58ca11 去掉proxy_file_strategy_cfg的修改 2019-06-17 16:38:42 +08:00
shangguanyanfei
e08ee12192 删除统计-国家代理的菜单,统计页面-阻断和监测页面去掉图表的百分比显示和饼图的展示 2019-06-17 15:43:01 +08:00
段冬梅
9bcf405945 删除新的统计菜单更改sql,object-list-group国际化更改 2019-06-17 15:12:02 +08:00
zhangwenqing
a403a82922 修改公共组管理表sql 2019-06-17 14:36:28 +08:00
wangwei
0cdbbe4201 操控 动作字段的CSV导出国际化修改 2019-06-17 14:26:25 +08:00
段冬梅
bc2b862e39 object-list-group菜单sql及国际化整理 2019-06-17 13:56:11 +08:00
wangwei
f41d43b843 修复intercept Policy内置配置修改失败bug 2019-06-17 13:14:23 +08:00
wangwei
48a294fac3 修复intercept Policy新增bug 2019-06-17 10:40:42 +08:00
wangwei
a4e5b0f78d 修复intercept Policy新增bug 2019-06-17 09:04:39 +08:00
wangxin
55e2272333 组长度超过20省略号展示,导出doLog调整 2019-06-15 18:20:24 +08:00
wangxin
1d0835a563 当组为空的时候不审核,修复排序报错 2019-06-15 16:53:43 +08:00
wangxin
10d153c40f obj-group-list隐藏doBlackList,拦截行为的doLog值设置为2 2019-06-15 11:50:13 +08:00
wangxin
ef16dddf34 obj-group-list批量操作打开 2019-06-14 19:21:01 +08:00
wangxin
1d64a1bc0f (1)审核修正userregion,定时userregion修正
(2)form表单monit修正,list group为空报错修复
(3)删除组下的域配置相关逻辑修正
2019-06-14 18:47:31 +08:00
wangwei
0f06c49b48 统一国际化配置 2019-06-14 18:07:04 +08:00
zhangwenqing
d245ef7dc4 分组配置管理GroupName改为可手动输入 2019-06-14 17:12:41 +08:00
wangwei
3aebe7d905 修复keyring可信证书不可取消审核和导入内置判断:1or0 2019-06-14 16:43:58 +08:00
zhangwenqing
2190ee447d 修改分组配置管理菜单sql 2019-06-14 14:04:00 +08:00
wangxin
3cf97daa6a obj-group-list列表sql权限修正 2019-06-14 11:40:47 +08:00
wangxin
f232a5b90a 域清空时取消obj-group-list maat配置 2019-06-14 11:29:03 +08:00
段冬梅
1c4308e536 拦截内置配置:允许修改、不允许删除。
keyring内置配置:允许修改,不允许删除。
可信证书内置配置:不允许修改,允许删除(未被引用)。
2019-06-14 11:16:54 +08:00
段冬梅
7ce70a10f8 keyring内置证书 2019-06-14 10:24:10 +08:00
段冬梅
b280c23021 keyring内置证书导入功能 2019-06-14 10:20:13 +08:00
段冬梅
1031b0a118 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-14 10:17:57 +08:00
段冬梅
6a9c2db32a keyring内置证书功能导入 2019-06-14 10:17:46 +08:00
wangxin
1441b6697b obj-group-list修正ip range下发 2019-06-14 09:13:37 +08:00
wangxin
98f1722bdd obj-group-list列表界面注释子配置展开三角;form表单注释http选项 2019-06-13 21:05:14 +08:00
wangxin
7501eb4317 对象组提交 2019-06-13 20:57:29 +08:00
shangguanyanfei
446c802ece 流量统计-统计页面 增加查询失败界面的提示信息 2019-06-13 18:41:26 +08:00
段冬梅
a12b74b1d3 增加内置拦截策略的提示信息 2019-06-13 15:29:27 +08:00
段冬梅
c58bac38d1 拦截内置compile_id=0配置;
拦截内置配置不允许删除、不允许取消。只允许修日志参数,拦截动作,以及动作参数等信息,其他信息策略编辑界面置灰,不能修改。
2019-06-13 15:25:04 +08:00
shangguanyanfei
aaf64fc527 流量统计-统计页面样式调整 2019-06-13 15:08:42 +08:00
shangguanyanfei
afafed1804 实时报表-流量统计-统计菜单 url修改sql 2019-06-13 11:15:35 +08:00
shangguanyanfei
6f3647694e 实时统计-流量统计下的统计页面 图形 查询条件等样式的修改 2019-06-12 19:33:59 +08:00
wangwei
c8467db46b 恢复文件上传方式并修正带后缀 2019-06-12 12:42:03 +08:00
zhangwenqing
193bb8c1c3 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-11 17:25:26 +08:00
zhangwenqing
bbda5e233f 分组配置管理删除分组下最后一条域配置时增加提示信息 2019-06-11 17:25:10 +08:00
wangwei
fdb38ce727 替换文件上传方式 带后缀 2019-06-11 17:23:30 +08:00
wangwei
2b23095c9d 修复http monitor、whiteList导入直接下发自定义域的设置 2019-06-11 13:10:20 +08:00
wangwei
9e276d1f0a 调整拦截策略、控制策略菜查看域信息框的宽度 2019-06-10 20:20:56 +08:00
zhangwenqing
4d4d1d9153 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-10 18:32:17 +08:00
zhangwenqing
bf03ca1cc0 1、增加SubscribeId分组配置功能 2、增加公共分组相关国际化代码及相关sql文件修改 2019-06-10 18:31:52 +08:00
wangwei
7dc9e4ac43 修复可信证书Buil-In字段的导出 2019-06-10 18:25:17 +08:00
shangguanyanfei
66b3673bce 实时报表-流量统计-统计页面中的二级页面显示滚动条 2019-06-10 18:08:39 +08:00
wangwei
24c7d0b3ad Merge branch 'develop_no_common_group' of git@git.mesalab.cn:K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-10 16:23:35 +08:00
wangwei
8d44987c6f 修改国际化:劫持、阻断页面、镜像、注入脚本 2019-06-10 16:23:05 +08:00
shangguanyanfei
21cd6c06be HTTP(S)操控日志app_id,app_protocol,protocol_id直接取值,去掉字典转换
实时报表-国家代理统计菜单及它下面的子菜单都置为失效
2019-06-10 16:22:03 +08:00
wangwei
194bf20558 跟新代理相关菜单 isAudit字段现实顺序、去除拦截策略日志总量 2019-06-10 16:02:40 +08:00
段冬梅
3fbe796217 导入内置证书国际化更改,是否内置证书国际化更改 2019-06-10 15:37:23 +08:00
wangwei
238c342339 Merge branch 'develop_no_common_group' of git@git.mesalab.cn:K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-10 15:32:13 +08:00
wangwei
c7bd7dcba1 补提http操控日志跳转 2019-06-10 15:28:05 +08:00
wangxin
2f74cd03cc 更新组状态方法修改 2019-06-10 14:10:00 +08:00
wangwei
b22cfec67f 修正拦截策略profileId为数值类型 2019-06-10 13:26:48 +08:00
wangwei
723da765a0 Merge branch 'develop_no_common_group' of git@git.mesalab.cn:K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-10 11:48:44 +08:00
wangwei
dace2ab798 去除http monit 日志总量列、修复http 操控阻断日志跳转 2019-06-10 11:48:21 +08:00
shangguanyanfei
3b57a384b6 菜单修改的sql文件 修改 2019-06-10 11:06:50 +08:00
shangguanyanfei
ee513ccdae HTTP(S)阻断 修改 2019-06-10 10:43:39 +08:00
shangguanyanfei
4f85cf1beb HTTP(S)监测 修改为 查询 操控日志的接口 2019-06-10 10:22:24 +08:00
wangwei
3247d6fc9e 修正拦截策略ssl版本校验 2019-06-08 22:14:14 +08:00
wangwei
a821ca4364 修正拦截策略allow http2开关 2019-06-08 17:28:09 +08:00
段冬梅
2bee7a7f68 可信证书内置证书功能添加 2019-06-08 16:51:28 +08:00
wangwei
5f8a9b43fc 修正拦截策略allow http2开关 2019-06-08 16:07:20 +08:00
wangwei
df690cffd3 http(s) 监测、白名单自定义域下发置"{}",http(s) 阻断、操控去除日志总量 2019-06-08 15:36:06 +08:00
duandongmei
744a6eae55 内置可信证书上传minio,入库,并下发 2019-06-07 21:48:26 +08:00
段冬梅
56f08a1bfa 内置可信证书入库代码提交 2019-06-06 18:54:25 +08:00
段冬梅
d0554f0f2b 内置可信证书解析脚本 2019-06-06 18:36:03 +08:00
段冬梅
897125210d 增加可信证书内置证书快捷按钮 2019-06-06 18:35:07 +08:00
shangguanyanfei
27b0cfa560 Radius日志code字段 国际化修改 2019-06-06 17:53:37 +08:00
shangguanyanfei
4ae632b3ab 实时报表-流量统计-统计页面中的二级页面改为默认折线图 2019-06-06 17:15:24 +08:00
段冬梅
9754bd757d Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-06 13:58:04 +08:00
段冬梅
d76e44d06f x509程序更新 2019-06-06 13:57:50 +08:00
wangwei
2f04b583ea http(s) Manipulate重定向时必填一条URL域 2019-06-06 11:27:22 +08:00
shangguanyanfei
3e1500cf38 http block菜单修改 改为查询操控日志 2019-06-05 18:50:15 +08:00
zhangwenqing
d0499163b3 修改公共组管理删除校验 2019-06-05 18:33:30 +08:00
段冬梅
94e764f97e 去掉失败方法的一个字典;
去掉拦截限速业务
拦截内置配置的userRegion为{}
2019-06-05 18:05:20 +08:00
zhangwenqing
f9768ab910 分组配置增加以ud_flag字段标识状态 2019-06-05 17:49:39 +08:00
wangwei
ad04b41d7a 修复allow_http2的状态更新 2019-06-05 16:52:22 +08:00
wangwei
d7bcd91b8a 修复intercept 自定义域 2019-06-05 16:42:51 +08:00
wangwei
77059b8d2c 修复Intercept Policy自定义域{} 2019-06-05 15:23:03 +08:00
wangwei
452e295d8a 修正allow_http2的显示、bypass的自定义域改成null的json 2019-06-05 14:37:04 +08:00
shangguanyanfei
db7049c041 1.统计-带宽两个图的合并2.HTTP(S)操控日志页面增加查询条件及Custom列表展示列选择页面增加滚动条 2019-06-05 14:14:40 +08:00
zhangwenqing
c83472c508 去掉分组管理无用代码 2019-06-05 10:40:36 +08:00
段冬梅
2e2249ce15 allow HTTP/2国际化更改 2019-06-05 10:27:50 +08:00
段冬梅
3bbc700ed3 keyring内置文件 2019-06-05 09:39:35 +08:00
duandongmei
70312e4d5d 攻击嵌入菜单俄文国际化更改 2019-06-04 15:30:40 +08:00
段冬梅
7b1fd6074d 代理内置0号配置 2019-06-04 15:18:49 +08:00
shangguanyanfei
4494bbd5c4 HTTP(S)操控
1.从配置到日志页面的跳转 2.列表的排序 3.配置ID查询条件的更改 4.八个新增字段的添加和展示
2019-06-04 14:19:24 +08:00
wangwei
30e04c19f6 修正阻断页面template格式文件后缀为.htmp校验 2019-06-04 14:04:42 +08:00
段冬梅
f074c1432a 策略被引用:逻辑修改为非-1策略引用均不允许配置取消和删除 2019-06-04 13:57:50 +08:00
wangwei
7bc04a2df3 修正阻断页面 Content Type为 Format 2019-06-04 12:56:31 +08:00
wangwei
5036f89db5 修复http manipulate 导出action 字段为 Manipulate 2019-06-04 09:41:47 +08:00
wangwei
0406998c42 修复http block导出response content字段不统一、http manipulate导出少域问题 2019-06-04 08:52:41 +08:00
duandongmei
87dc47cbf3 日志时间间隔默认为5分钟;
日志导出最大为2万
2019-06-03 17:09:25 +08:00
duandongmei
2ad805617b 恢复左侧边距设置 2019-06-03 16:25:21 +08:00
duandongmei
1cc1ed42ec 清理profile相关表数据sql提至前面 2019-06-03 16:00:19 +08:00
shangguanyanfei
775230f99b HTTP(S)操控日志的字段的国际化 2019-06-03 15:53:04 +08:00
zhangwenqing
576e446292 URL公共组配置部分功能及相应sql提交 2019-06-03 15:50:00 +08:00
duandongmei
fd714e30f4 修改攻击菜单国际化;
操控日志菜单分配给admin用户
2019-06-03 15:17:24 +08:00
zhangwenqing
8c766e90a8 IP公共组配置部分功能提交 2019-06-03 14:53:39 +08:00
shangguanyanfei
28da266944 HTTP(S)操控新增字典修改 2019-06-03 11:28:12 +08:00
shangguanyanfei
9441ed77a1 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-06-03 10:06:35 +08:00
shangguanyanfei
b7e2a89f09 HTTP(S)操控日志页面的菜单sql和字典sql 2019-06-03 10:03:03 +08:00
duandongmei
e9a91921d4 拦截策略的字典sql修正;
cookie信息使用window.name传递
2019-06-03 10:02:29 +08:00
wangwei
3641e2c64e 更新国际化、去除阻断页面.template校验 2019-06-02 18:18:05 +08:00
wangwei
3e206c8ad1 劫持、注入、阻断页面、镜像清表sql、更新劫持字典表sql 2019-06-02 17:24:39 +08:00
段冬梅
a6260ee1ef 攻击菜单国际化更改,菜单增加流量统计菜单权限分配 2019-06-02 16:41:35 +08:00
wangwei
692d00050c 劫持、注入、镜像、阻断页面、拦截证书内容引用时的处理 2019-06-02 16:33:49 +08:00
wangwei
5355c9ab9c 清除hijack类型字典表 2019-05-31 16:22:00 +08:00
shangguanyanfei
468054b5a4 HTPP(S)操控日志 2019-05-31 14:40:26 +08:00
wangwei
eb9ad8941e 恢复nis.properties 2019-05-31 14:16:13 +08:00
wangwei
ae5f827155 更新劫持文件字典表 2019-05-31 13:31:00 +08:00
wangwei
65c06777ed 修复HTTP(S) 阻断 引入阻断页面文件的查询 2019-05-31 13:08:31 +08:00
wangwei
f917c7678a 拦截策略新增时记录引用文件信息 2019-05-31 13:06:39 +08:00
wangwei
1b2f115ee5 修复文件劫持、注入、阻断页面、镜像若干bug 2019-05-31 13:04:57 +08:00
wangwei
33590ee8f4 修复HTTP(S) Manipulate 导出profile info字段不统一 2019-05-31 12:56:58 +08:00
shangguanyanfei
91aaf716c8 实时报表-流量统计菜单-统计中的配置统计模块
1.时间粒度最大范围调整 5分钟(一个月) 小时(一个月) 天(一年)
2.查询配置ID的规则名称时,取消is_valid=1的查询条件
2019-05-30 18:07:38 +08:00
shangguanyanfei
5dc3136724 实时报表-流量统计菜单下新增统计菜单,调用的接口 2019-05-30 14:59:52 +08:00
shangguanyanfei
a4f341cf74 实时报表-流量统计菜单下新增统计菜单,对多个业务内容进行统计及业务之间的切换,以图表和列表的方式展示 2019-05-30 11:06:16 +08:00
zhangwenqing
b1bf4d1185 修正保护名单管理未选中数据删除不校验问题 2019-05-30 10:36:44 +08:00
段冬梅
95dc4a7e5f Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-05-29 13:27:39 +08:00
段冬梅
93b3729bbe 未变更 2019-05-29 13:27:32 +08:00
wangwei
1ef6002c57 更新国际化配置 2019-05-29 11:30:03 +08:00
李皓宸
c0461322fa 区分是否为外部URL时加入了正则校验 2019-05-29 11:05:28 +08:00
李皓宸
8770f98ea1 界面嵌入外部URL cookie传递 (test) 2019-05-28 20:07:50 +08:00
wangwei
613ef99e67 阻断页面中增加id属性 2019-05-28 18:31:18 +08:00
zhangwenqing
935f70fa4f 修改Proxy阻断配置定时任务和批量下发的userRegion 2019-05-28 18:19:26 +08:00
wangwei
231a3ca1d5 添加文件类型校验(劫持、注入、阻断页面、文件策略) 2019-05-28 18:04:38 +08:00
段冬梅
baf3035eda ddos新增菜单,并为ddos新增的菜单分配角色;
操控业务sql增加,并为操控菜单分配admin角色
2019-05-28 17:21:34 +08:00
段冬梅
411639fe16 去掉批量下发的json打印 2019-05-28 17:07:59 +08:00
段冬梅
b453c1f178 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-05-28 17:04:56 +08:00
段冬梅
2b7973c962 DDOS国际化修改为DDoS 2019-05-28 17:04:44 +08:00
wangxin
f5961fd68a 删除无必要的判断 2019-05-28 17:03:17 +08:00
wangxin
d4ea223b99 修复packet ip address asn切换到ip配置时,没有正确获取到配置属性的bug 2019-05-28 17:00:02 +08:00
wangwei
e9bb74d9fd 拦截策略新增allow_http2 2019-05-28 13:36:36 +08:00
zhangwenqing
84c10eac7d 1.操控配置去除Block Method 2.修改Block配置下发userRegion 2019-05-27 18:17:40 +08:00
李皓宸
dd31466774 判断菜单URL是否是外部链接进行区别操作 2019-05-27 17:36:31 +08:00
wangwei
ab25fbc8f0 修复审核通过配置修改成功提示信息bug 2019-05-27 16:52:19 +08:00
wangwei
72fee91228 修复镜像菜单addrList下发格式 2019-05-27 16:19:44 +08:00
wangwei
733cd55636 修复文件摘要请求服务接口失败bug 2019-05-27 13:53:31 +08:00
zhangwenqing
90678068c9 修正操控配置下发特殊字符重复转义 2019-05-27 11:27:14 +08:00
zhangwenqing
5ad397d752 完善操控配置功能,修改配置更新界面属性位置 2019-05-27 09:47:20 +08:00
wangwei
8472c6efcf 修复代理(劫持、镜像、阻断、注入)菜单的bug 2019-05-26 16:09:19 +08:00
wangwei
f2d29374da 完善修改配置数据时提示信息问题 2019-05-24 19:12:37 +08:00
wangwei
2786ee2fe8 修复文件摘要修改功能请求服务接口失败 2019-05-24 19:09:40 +08:00
wangwei
8b2a692aeb 打开下发配置交互代码 2019-05-24 11:23:07 +08:00
段冬梅
062161826e 操控增加为admin添加权限sql,清理旧的字典和菜单sql。
去掉批量中的json打印
2019-05-24 10:15:28 +08:00
wangxin
db9d2a41fd 修改字典sql将插入数据id改为insert into select的格式 2019-05-24 09:35:13 +08:00
wangxin
8261647a35 (1)调整拦截action 为2
(2)修复导出bug
2019-05-23 19:12:37 +08:00
zhangwenqing
672d76b046 修复配置导入校验时空指针异常 2019-05-23 18:28:04 +08:00
wangwei
00b3ea807f 更新流量转发目的地址下发配置参数格式 2019-05-23 18:18:55 +08:00
zhangwenqing
99f002d0c6 操控增加国际化代码,修改列表action检索 2019-05-23 17:22:43 +08:00
wangwei
39cbf62517 完善字典表数据插入sql语句 2019-05-23 15:17:27 +08:00
段冬梅
25c2bb790e 整理新增的几个文件策略表sql,以及admin角色添加菜单权限 2019-05-23 14:45:36 +08:00
zhangwenqing
cf29b7ec04 补充操控配置导出缺少的action、response code列. 2019-05-23 11:54:06 +08:00
zhangwenqing
4a810d918a 修正操控配置action切换后无域配置可提交问题. 2019-05-23 10:02:57 +08:00
wangwei
5c00167d76 新增访问阻断页面菜单;完善劫持、策略、注入脚本、镜像文件菜单相关功能 2019-05-22 19:57:28 +08:00
wangxin
a68c454559 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC into develop_no_common_group 2019-05-22 19:41:20 +08:00
wangxin
6abfd25a1d Steam三个菜单的form表单当action 为monit的时候ip和账号必选一个 2019-05-22 19:38:47 +08:00
zhangwenqing
5b5b6d8584 代理操控业务配置批量操作、定时任务相关修改提交. 2019-05-22 18:49:00 +08:00
wangxin
c0d85d20bb 修复代理拦截页面切换action时的大片空白 2019-05-22 17:58:31 +08:00
wangxin
8788c65357 修复Fail Method字典key值 2019-05-22 17:51:07 +08:00
zhangwenqing
a2c5ba8f7a 修正操控业务配置sql 2019-05-22 17:13:56 +08:00
wangxin
8c9706fb0e Lists.newArrayList()修改为new ArrayList() 2019-05-22 12:42:29 +08:00
duandongmei
b2aac3e567 去掉操控功能误导入的包 2019-05-22 11:03:08 +08:00
wangxin
182a6a8ddc 代理拦截修改提交 2019-05-21 19:50:54 +08:00
zhangwenqing
ac52747686 代理操控业务部分功能提交配置、导入、导出 2019-05-21 19:15:54 +08:00
duandongmei
8657cfa142 增加为admin角色分配新菜单的sql 2019-05-21 15:41:27 +08:00
wangwei
952ea78b66 更新菜单劫持、拦截、镜像sql表 2019-05-21 11:54:56 +08:00
wangwei
f30acfdbbd 新增劫持文件、注入脚本文件、流量转发目的地菜单,完善文件劫持菜单。 2019-05-21 09:51:19 +08:00
duandongmei
c44ddb9ffc 热修改功能打开 2019-05-20 15:54:21 +08:00
duandongmei
a9a15f4c0a 610上线内容回复UPDATE_ACTION 2019-05-20 15:46:21 +08:00
duandongmei
025873ce76 综合服务修改接口未上线前,修改恢复为INSERT_ACTION动作 2019-05-19 11:23:22 +08:00
duandongmei
28771355cc http client增加错误信息打印 2019-05-17 15:30:18 +08:00
duandongmei
0629e8b1de 修改HTTP client的超时时间为500秒 2019-05-17 15:28:59 +08:00
duandongmei
8d7a6c69b6 流媒体协议修改权限标识 2019-05-17 09:45:22 +08:00
wangxin
fe3f632046 IP范围的起始IP必须小于终止IP验证修复 2019-05-15 11:26:54 +08:00
duandongmei
9527b41592 样例文件界面,当level非空时,也需根据动作来隐藏和打开level属性 2019-05-15 09:46:24 +08:00
李皓宸
6312a65351 修改 导入时源IP/目的IP为默认值时提示语 2019-05-14 19:25:58 +08:00
李皓宸
f6c37c7bda 修改 导入时源IP/目的IP为默认值时的提示语 2019-05-14 18:39:40 +08:00
李皓宸
c81dd92aca 修复 导入时只有源IP或目的IP的配置 不能为0.0.0.0
同时有源IP和目的IP两个IP不能一样,仅有一个可为0.0.0.0
2019-05-14 16:57:13 +08:00
李皓宸
9f4264d878 1.修改 导入时只有源IP或目的IP的配置 不能为0.0.0.0
同时有源IP和目的IP两个IP不能一样,仅有一个可为0.0.0.0
2.修复 新增功能和导入功能的IP校验不一致问题
2019-05-13 19:24:07 +08:00
duandongmei
d4e153533a APP相关模块统一使用appCode作为检索条件 2019-05-13 19:10:21 +08:00
李皓宸
35ca1636ef 导出功能IP Spoofing Spoofing内容显示不一致 2019-05-13 14:50:15 +08:00
duandongmei
44486b98cb APP特征模块增加app非空判断 2019-05-13 10:32:42 +08:00
duandongmei
ea456f83d0 HTTPS重定向,导入增加httpsURL提示;
解决批量删除会删除审核未通过的配置BUG
2019-05-10 18:31:27 +08:00
李皓宸
b4f9eac0d3 删除通过或未通过配置时 删除提示更改为"只能删除未审核的配置与取消审核通过的配置" 2019-05-10 16:47:05 +08:00
李皓宸
54333afe0b 修复新增、导入按钮class属性 2019-05-10 15:57:56 +08:00
李皓宸
48806bd775 解决配置导入时 目的端口未能正确校验 2019-05-10 15:01:31 +08:00
duandongmei
23ae0f08d3 批量增加isValid和isAudit检索条件 2019-05-09 17:31:40 +08:00
duandongmei
21ca3bc804 定时任务daily的过期时间调整 2019-05-09 17:26:13 +08:00
李皓宸
d9110dfa14 业务配置->流 和 日志检索->流内的模块 "阻断"显示更改为"封堵(丢弃)" 2019-05-09 16:36:06 +08:00
duandongmei
fd2d285b92 批量操作条件取反 2019-05-09 11:25:00 +08:00
duandongmei
8a27636007 批量操作增加限制条件 2019-05-09 09:52:54 +08:00
zhangwenqing
89336a3677 未审核与取消的配置可批量删除. 2019-05-08 18:23:34 +08:00
wangxin
144900d6df 拦截策略列表doLog列注释 2019-05-08 15:35:49 +08:00
李皓宸
ba758cab58 修改中文国际化文件中部分英文翻译 2019-05-08 11:27:21 +08:00
wangwei
10fb06f5bf 修改blacklist国际化配置 2019-05-08 10:42:43 +08:00
wangwei
dd37178cfc 修复ip地址监测blacklist显示bug 2019-05-08 10:29:36 +08:00
wangwei
46fff54557 删除多余新增按钮的class属性 2019-05-07 15:26:44 +08:00
李皓宸
f1fc6ee9aa VOIP业务配置审核通过,没有审核人的问题解决 2019-05-07 14:51:30 +08:00
wangwei
dde951fe4a 所有新增、导入按钮分别增加class属性 2019-05-07 14:02:06 +08:00
李皓宸
33fd4df21d 1.菜单中的中文语言下,部分菜单不是中文的问题解决
2.VOIP业务审核通过,没有审核时间的问题解决
2019-05-07 13:52:44 +08:00
zhangwenqing
1882d011cb 清空配置并失效所有定时任务 2019-05-07 10:41:17 +08:00
duandongmei
cd977ed81a 此版本暂时隐藏生效状态可修改的功能 2019-05-07 09:42:59 +08:00
wangxin
e8a5c506e9 修改IPV6错误提示 2019-05-06 18:51:05 +08:00
zhangwenqing
f8e1b8f093 清空配置功能增加调用相应服务接口步骤 2019-05-06 16:28:37 +08:00
wangwei
c30ab53f00 修复网页关键字定时器界面显示不完整BUG 2019-05-06 14:09:35 +08:00
wangwei
ea33bae40f ASN IP配置重置按钮重置不全BUG 2019-05-06 13:55:07 +08:00
wangwei
d1082f539e 修复网页关键字定时器界面显示不完整BUG 2019-05-06 13:52:05 +08:00
duandongmei
c1188539b5 SSL配置取消失败BUG; 2019-05-06 10:13:15 +08:00
wangwei
269f4e0644 更新俄文国际化配置文件 2019-05-05 19:46:39 +08:00
duandongmei
3f6d6a6d60 中文、俄文国际化缺失补充
Conflicts:
	src/main/resources/messages/message_zh_CN.properties
2019-05-05 11:57:41 +08:00
duandongmei
00ffdd863c 恢复之前的定时任务配置取消不走综合服务的问题;
去掉英文国际化的合并记录

Conflicts:
	src/main/resources/messages/message_en.properties
2019-05-05 11:56:04 +08:00
duandongmei
1eaa2e668b 经确认,定时任务配置失效可直接使用配置正常的失效接口。
Conflicts:
	src/main/java/com/nis/util/SchedulerTaskUtil.java
2019-05-05 10:14:17 +08:00
段冬梅
86c2d86565 schedual use startStopService 2019-05-03 15:58:50 +08:00
duandongmei
35e491e20c 代理的拦截和控制策略配置取消增加配置状态判断 2019-05-03 10:27:21 +08:00
duandongmei
ce8c273aa4 代理最新帮助文档sql及帮助文档md文件提交 2019-05-03 10:22:48 +08:00
duandongmei
d00a855666 审核角色自动添加审核菜单;
审核角色禁止修改角色名称
2019-04-30 11:35:13 +08:00
wangwei
2b57e33d12 添加零时表单的移除 2019-04-29 18:18:46 +08:00
wangxin
fa9edae028 优化galaxyMessageFormat中的json解析速度,使用fastjson替换JSONObject 2019-04-29 17:39:55 +08:00
wangxin
d4ee7c7a42 优化导出速度 2019-04-29 10:37:38 +08:00
段冬梅
eac5552be2 IP spoofing pool定时任务修改时只改is_valid状态,is_audit默认为1 2019-04-29 09:51:41 +08:00
wangwei
18c5567f58 修复Anti DDOS修改定时任务选项展示 2019-04-29 08:53:32 +08:00
wangwei
b0a9982d54 修正抗ddos攻击修改时多余提示信息 2019-04-28 15:11:41 +08:00
段冬梅
8e724393e1 恢复ip和代理模块审核方法中二次查询域信息代码,避免同一种域允许新增多个的问题 2019-04-28 12:03:16 +08:00
zhangwenqing
494fb0669a 修正saveAndAudit角色用户新增SSL配置失败bug 2019-04-28 11:44:51 +08:00
duandongmei
36d1fee141 证书验证公私钥不匹配 2019-04-27 19:00:12 +08:00
shangguanyanfei
999406cbd1 定时器公共页面-长期选项,增加开始时间不能小于当前时间加上2分钟的验证 2019-04-26 18:02:22 +08:00
李皓宸
4107e0fb92 修复系统日志中异常日志显示不全的问题 2019-04-26 17:35:40 +08:00
wangwei
efd965f4ca Merge branch 'develop_no_common_group' of git@git.mesalab.cn:K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-26 17:20:07 +08:00
wangwei
6eecad82aa 修改配置导出文件名乱码问题 2019-04-26 17:19:45 +08:00
duandongmei
ab8c4448ce IP Spoofing增加定时任务ipPool状态变更BUG更改;
IP Spoofing取消状态的配置修改,ippool状态更改
2019-04-26 16:57:10 +08:00
duandongmei
9ade865187 ddos定时任务修改 2019-04-26 15:50:05 +08:00
shangguanyanfei
2aa3524104 报表统计-事件报表-时间查询条件范围更改为一个月 2019-04-26 14:57:54 +08:00
wangwei
35a1b72fee 修复IP Spoofing失效下发至服务端 2019-04-25 21:30:30 +08:00
shangguanyanfei
724eeef0f5 音频样例配置下发,源文件时长不能超过120s的错误信息提示 2019-04-25 17:29:31 +08:00
duandongmei
65d3f5013f Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-25 15:18:43 +08:00
shangguanyanfei
b50d324303 监测、统计时间查询条件范围更改为一个月,通联日志为一天 2019-04-25 15:18:09 +08:00
李皓宸
26097409d6 捕捉异常后增加记录异常日志的操作 2019-04-25 14:42:41 +08:00
wangwei
6223c66618 修复 IP Spoofing定时任务配置相关表数据状态不同步 2019-04-25 10:26:44 +08:00
wangwei
0499fb845d 取消视频添加阻默认阻断动作下置信度显示 2019-04-25 10:16:30 +08:00
李皓宸
30007d50d0 1.业务配置 packet和Stream中文国际化翻译为(包、流)
2.业务配置 Stream里的Protocol Identify中文国际化翻译为(基础协议)
3.业务配置 高级功能->APP特征 部分菜单翻译为中文  增加了一个app_ip_correlation(APP关联特征IP配置)国际化代码
2019-04-24 19:02:21 +08:00
李皓宸
1221ce6a18 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-24 18:09:19 +08:00
李皓宸
b9246ddeeb 实时报表->流量统计->(协议,App,活跃IP,流量,服务,网站)国际化代码修改 2019-04-24 17:56:57 +08:00
zhangwenqing
eda0103068 修正回调类配置批量取消失败问题 2019-04-24 17:19:23 +08:00
段冬梅
589cf100ee 俄文OK翻译;
定时任务错误信息打印;
恢复白名单被覆盖的logger.error;
2019-04-24 16:01:40 +08:00
wangxin
3b838aa838 (1)修正ConfigConvertUtil中的ipConvert方法
(2)Packet IP Address修正IP,ASN同时隐藏可以提交表单的bug
2019-04-24 14:04:10 +08:00
wangwei
b3abe1f0e5 修正导出逻辑判断关键词 2019-04-24 10:05:02 +08:00
段冬梅
0b1a51aa47 修复加密隧道协议不显示定时任务图标BUG;
修复批量之后无法查询所有状态数据bug
2019-04-24 09:54:50 +08:00
wangwei
40e166510c 修正导出条件逻辑判断 2019-04-23 19:00:07 +08:00
李皓宸
47771e57e7 撤销国际化的修改 2019-04-23 18:31:52 +08:00
李皓宸
94f0bc56b8 1.添加了部分菜单的中英文国际化
2.业务配置的流媒体审核异常已解决
2019-04-23 18:05:00 +08:00
wangwei
0cf19aeab9 修改文件导出改为post传参;修复拦截修复策略必选属性为空不提示问题 2019-04-23 16:45:09 +08:00
wangwei
078b1a0071 删除测试代码 2019-04-22 20:16:20 +08:00
zhangwenqing
728201cfbe 修正(saveAndAudit)角色用户新增配置出现保护名单提示后无法提交bug 2019-04-22 18:47:06 +08:00
wangwei
8719ed0527 修改导出遮罩层显示时间:处理完成时关闭 2019-04-22 18:39:30 +08:00
wangxin
77716a9517 补充修改,sql后加分号 2019-04-22 17:48:25 +08:00
wangxin
5e9400e723 修正port_port_cfg的错误sql 2019-04-22 17:43:37 +08:00
zhangwenqing
541aaf4640 补充提交. 2019-04-22 17:35:24 +08:00
zhangwenqing
f773c95c0b IPSpoofing配置批量审核操作增加欺骗IP池配置处理,修正图片样例批量审核功能 2019-04-22 17:23:03 +08:00
wangxin
77c7649b6a 精简项目配置文件,删除Constants。java中没有再使用的参数 2019-04-22 11:40:59 +08:00
wangxin
e8dd565262 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-22 11:13:45 +08:00
wangxin
fe90fd9935 (1)删除调用switchIpType方法的页面相关代码
(2)Stream列表页面展示表单Block,ratelimt有定时任务没有IP时的错位问题
2019-04-22 11:13:26 +08:00
段冬梅
827a43d843 打开配置热修改功能 2019-04-22 10:41:04 +08:00
wangxin
34a6cb5ed4 添加谓语 2019-04-22 10:02:09 +08:00
wangxin
42724b94de 调整定时任务开始时间比当前时间至少早两分钟翻译 2019-04-22 09:41:12 +08:00
duandongmei
97d1a52d3c 修复ddos定时任务界面BUG;
修复基础协议定时任务图标不显示bug;
所有业务增加定时任务逻辑
2019-04-21 19:02:33 +08:00
duandongmei
28f07f00f2 白名单增加定时任务处理;
修复白名单热修改被覆盖jsp
2019-04-21 13:15:29 +08:00
段冬梅
c716cb1fc3 白名单增加各个操作的定时任务处理;
各种批量操作增加定时任务的处理;
2019-04-19 18:35:20 +08:00
段冬梅
1191db5fbe Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-19 18:33:01 +08:00
段冬梅
5b63b0237e 白名单增加各个操作的定时任务处理
各种批量操作增加定时任务的处理
2019-04-19 18:32:46 +08:00
zhangwenqing
99c3c8c84f 修正保护名单配置回车不提示、重复数据问题 2019-04-19 17:44:12 +08:00
shangguanyanfei
865811b9b2 stream、DDOS和高级功能模块对某些用户的配置不经过审核直接生效及生效中的配置进行修改的功能 2019-04-19 17:20:32 +08:00
wangxin
5a5bdddba4 (1)IP Pattern拆分为源IP Pattern,目的IP Pattern,Port Pattern
拆分为源端口Pattern,目的端口Pattern
(2)show more修改,并移动刀ipRegion.js中
(3)IP复用未作修改
(4)删除部分废弃的导入模板以及废弃的导入方法
2019-04-18 10:15:23 +08:00
wangwei
6bd04a92ce Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC into develop_no_common_group 2019-04-17 18:04:39 +08:00
wangwei
e69992d712 doblacklist的js上增加动作切换时,默认选中0 2019-04-17 18:04:09 +08:00
段冬梅
4725a3ff90 全量同步/批量下发/定时任务域名相关自定义处理BUG更改 2019-04-17 17:49:23 +08:00
wangwei
6ac930fd22 修改doBlackList默认值为0 2019-04-17 16:11:29 +08:00
zhanghongqing
7b5c9092d1 修改音视频场景特殊用户提交问题 2019-04-17 14:38:17 +08:00
zhanghongqing
1cf9594bd2 多媒体中目录下的特殊用户修改或保存配置直接下发 2019-04-17 14:20:19 +08:00
leijun
cc8cb48da1 saveIpCfg 参数RedirectAttributes优化 2019-04-17 11:00:16 +08:00
wangwei
b8d1bd9ab9 修复doBlackList命名及回显bug 2019-04-17 10:55:32 +08:00
leijun
3acdae76d0 协议配置审核方法参数名统一 2019-04-17 09:55:11 +08:00
段冬梅
7b27b457a2 修改isValid为isAudit 2019-04-16 18:34:28 +08:00
zhangwenqing
7c36ec0abc 修正导入操作框错误提示信息及不显示bug. 2019-04-16 18:23:46 +08:00
leijun
80b590b673 还原bgp SubscribeId信息查询方法 2019-04-16 17:28:35 +08:00
zhangwenqing
f52651b382 补充提交. 2019-04-16 17:12:49 +08:00
zhangwenqing
a1998f24f7 增加删除所有配置规则功能. 2019-04-16 16:46:16 +08:00
wangwei
3bd9c15566 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-16 16:03:55 +08:00
wangwei
84eff37a0d 业务配置:IP地址中 修改选项 Blacklist Option回显bug 2019-04-16 16:03:28 +08:00
leijun
233a02b7dc 优化配置审核方法中重复查询配置信息 2019-04-16 15:49:21 +08:00
leijun
02bade2de0 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-16 14:34:19 +08:00
leijun
bdcc2bb1b4 协议-配置支持对某些用户的配置不经过审核直接生效的流程 2019-04-16 14:34:05 +08:00
duandongmei
4c2872c5ea 删除私有证书错误提示多余div 2019-04-16 14:33:47 +08:00
段冬梅
36e990a247 可信证书增加格式校验错误提示 2019-04-16 14:21:02 +08:00
shangguanyanfei
f06830ae23 配置id的检索in方式,增加id个数不大于200的校验 2019-04-16 10:08:10 +08:00
duandongmei
e4effb7ab4 Stream media配置保存并下发功能增加; 2019-04-15 22:38:22 +08:00
duandongmei
910072f66f ASN取消审核通过BUG更改补充提交 2019-04-15 21:15:56 +08:00
段冬梅
359dd64696 ASN修改审核不通过BUG:审核不通过也下发服务端了,错误使用isValid 2019-04-15 17:02:42 +08:00
段冬梅
96e8493509 IP地址增加热修改和配置新增直接生效功能;
http请求的异常增加logger.error打印
2019-04-15 16:57:34 +08:00
段冬梅
faad92ed0d Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-15 16:55:50 +08:00
zhangwenqing
a2f8cf56d3 增加高级功能菜单下的配置审核不通过、删除功能. 2019-04-15 16:23:14 +08:00
段冬梅
32804e2a9a Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-15 09:55:05 +08:00
段冬梅
c224080ef9 IP地址新增后直接生效及热修改功能 2019-04-15 09:50:52 +08:00
duandongmei
ecb1fed2d5 PROXY+IP Spoofing+IP payload增加配置热修改和配置新增直接生效功能 2019-04-14 17:17:58 +08:00
duandongmei
a769757728 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-13 18:39:13 +08:00
段冬梅
8b36721749 Merge branch 'cherry-pick-10db5d0c' into 'develop_no_common_group'
由于日志未实现FTP Content功能,暂时修改为admin用户才可展示,后期ftp Content功能实现再打开。

See merge request K18_NTCS_WEB/NTC!44
2019-04-13 18:36:56 +08:00
duandongmei
451c114419 由于日志未实现FTP Content功能,暂时修改为admin用户才可展示,后期ftp Content功能实现再打开。
(cherry picked from commit 10db5d0c32648c20a1d70b7445291c72598a9e4a)
2019-04-13 18:36:34 +08:00
duandongmei
161c545fcd Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-13 18:35:30 +08:00
zhangwenqing
84f5646f86 增加配置批量审核不通过和删除操作
除高级功能菜单下配置
2019-04-12 19:10:21 +08:00
段冬梅
47029f0eaf 全量下发的app策略和app高级功能的子域配置状态为修改BUG更改;
asn no增加digits数字校验
2019-04-12 15:52:13 +08:00
段冬梅
1f93d4f3b0 修改下发opCtion修改为UPDATE_ACTION 2019-04-12 11:38:35 +08:00
段冬梅
a478bee5f3 IP白名单配置新增直接生效(需要分配权限,此功能才可开启).
ip白名单配置生效状态下可修改(修改delRow的判断才可开启此功能).
2019-04-13 09:01:24 +08:00
段冬梅
bca7de6990 修改操作员审核员审计员三类数据权限 2019-04-13 08:58:38 +08:00
shangguanyanfei
268a0ae81b 配置界面的Cfg Id检索条件 增加范围和in的检索方式的功能修改 2019-04-11 17:13:44 +08:00
shangguanyanfei
fc08261929 配置界面的Cfg Id检索条件 增加范围和in的检索方式 2019-04-11 11:26:39 +08:00
段冬梅
04a94458ed 定时任务新增时类型默认设置为1 2019-04-11 09:52:50 +08:00
leijun
7f9a1c4f70 修复ftp新增时js异常 2019-04-10 18:24:10 +08:00
leijun
9b5792d748 调整app协议 ratelimit切换时subscribeid添加disable 2019-04-09 17:30:28 +08:00
duandongmei
002ad20be4 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-09 15:46:36 +08:00
段冬梅
9f97dc2202 去掉cancel按钮的重复事件 2019-04-09 15:45:53 +08:00
leijun
bcc0f7f220 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-09 15:31:47 +08:00
leijun
add20445ad 调整系统所有SubscribeID的配置,均支持SubscribeID单独下发。 2019-04-09 15:31:07 +08:00
段冬梅
3be1c1a625 定时任务设置配置状态默认值时,调整为存在定时任务才设置定时任务【此修改修复主表通过insert直接生效,定时任务将主表实体的状态又置为无效的BUG】;
修改daily和weekly的触发器开始时间,如果任务已经过时,设置从下一个周期开始。
2019-04-09 15:29:03 +08:00
段冬梅
aa25c49a87 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-09 09:31:23 +08:00
段冬梅
4ce7ebef05 审核并下发按钮保存 2019-04-09 09:30:45 +08:00
duandongmei
f3ea596e5a Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-08 21:03:30 +08:00
zhangwenqing
da9ea20e8f 修改tagsInput输入框长度为1时查询保护名单列表 2019-04-08 16:00:14 +08:00
段冬梅
7af6c7c203 证书类异常捕获修改 2019-04-08 13:50:40 +08:00
shangguanyanfei
c2faf2a2a3 1.统计 界面和服务端的配置总量修改 2019-04-04 18:09:22 +08:00
段冬梅
af4491d739 ASN IPv4或IPv6的统计修改为使用qurtz来做定时;
暂时不开放服务和界面配置不一致提示;
2019-04-04 16:45:18 +08:00
duandongmei
ae0f91e36d Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-02 18:20:01 +08:00
duandongmei
4880832028 冲突解决 2019-04-02 18:19:48 +08:00
zhangwenqing
f6405c6f04 配置保护名单功能改为实时查询. 2019-04-02 11:50:12 +08:00
shangguanyanfei
04db6bcb47 1.公共的Scheduler界面增加开始时间和结束时间之差不能小于1分钟的校验
2.公共的Scheduler界面单次选项中的开始时间加上不能小于当前时间加上2分钟的校验
2019-04-01 16:32:56 +08:00
段冬梅
f2b5d7413c 开始结束时间间隔至少为1分钟的国际化提示 2019-04-01 11:46:59 +08:00
段冬梅
b372f4a9d8 暂时注释掉界面和服务配置总量统计定时任务;
调整导入的最大限制为2w
2019-04-01 11:44:17 +08:00
段冬梅
851301c671 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-01 11:42:28 +08:00
zhangwenqing
6eea9ee15b 提交配置保护名单管理菜单sql 2019-04-01 10:13:24 +08:00
段冬梅
7189f2a671 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-04-01 10:10:46 +08:00
段冬梅
85da9461e5 冲突处理 2019-04-01 10:10:33 +08:00
shangguanyanfei
2809d1890d 1.定时去统计界面和服务端的配置量入库,并新增系统管理-管理员用户预警界面列表的功能
2.实时扫描此表中界面和服务端的配置量是否一致,不一致,管理员用户告警提示
2019-03-29 18:14:18 +08:00
zhangwenqing
e4cf2aa1b4 补充提交,选中IP域 2019-03-29 15:36:54 +08:00
zhangwenqing
91d93e7840 Stream限速配置导入模板增加'丢包率'属性,修正APP策略配置导入并下发isValid为0(无效)bug 2019-03-29 15:12:28 +08:00
zhangwenqing
5e1095f2bb 修正HTTP(S)重定向配置导入应答码默认值. 2019-03-28 17:29:28 +08:00
段冬梅
bea5312e9f 配置统计增加一列Effective 有效配置数 2019-03-28 14:32:22 +08:00
段冬梅
09405e06e1 补充提交,增加type属性 2019-04-09 09:11:16 +08:00
段冬梅
bf00ccd875 定时任务任务表增加type:1-正常任务;2-全量同步执行时未执行的任务。
增加全量同步时未执行任务的扫描
全量同步时,业务无数据也需要下发{}至服务端。
2019-04-09 09:10:40 +08:00
zhangwenqing
08dd0f3868 增加配置保护名单管理功能. 2019-03-27 18:05:18 +08:00
shangguanyanfei
b7a64234f8 公共的Scheduler界面增加开始时间和结束时间大小的校验 2019-03-27 09:31:42 +08:00
zhangwenqing
a1ad694260 修复配置导入Excel文件存在空行时,错误信息行号与文件行号对不上bug 2019-03-25 10:00:31 +08:00
zhangwenqing
253adc1396 修复配置导入错误IsHex值不校验BUG
复现条件:填写错误IsHex值,不填写Is Case-sensitive
2019-03-22 18:21:25 +08:00
duandongmei
fc302fe984 全量同步时,某业务无数据也需要发送一次{}请求。
全业务全量同步时,需要将service=-1标识发送至服务端,便于服务端清理所有分组复用业务配置
2019-03-21 17:33:55 +06:00
zhanghongqing
fcface8471 修改ddos配置任务调度bug 2019-03-21 10:24:57 +08:00
段冬梅
19b1d1b40c Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-03-20 11:32:40 +08:00
段冬梅
dc1a75c9c9 全量同步接口调用打开 2019-03-20 11:32:24 +08:00
zhangwenqing
1896c51a87 删除重复代码. 2019-03-19 18:00:31 +08:00
段冬梅
f284491963 多媒体的置信度默认值bug更改;
音视频的任务调度bug更改;
批量配置生效去掉无效代码
2019-03-19 15:11:34 +08:00
段冬梅
f309b8b79b ip配置的查询去掉dns策略相关表关联 2019-03-18 16:31:47 +08:00
段冬梅
805d444d01 各业务配置批量下发功能提交 2019-03-18 15:58:15 +08:00
zhanghongqing
36f09542da 增加定时器中文国际化 2019-03-18 11:53:17 +08:00
段冬梅
6017b7f454 色情场景只有在配置取消和配置未下发时可以编辑 2019-03-15 17:50:05 +08:00
段冬梅
f90d3dbf32 同步界面增加业务的回传,业同步业务从xml中获取 2019-03-15 17:31:57 +08:00
zhangwenqing
b588f12b0c 优化配置导入操作(缓存导入文件获取过的字典值) 2019-03-15 17:20:38 +08:00
段冬梅
9a9b050fc7 批量配置失效、全量下发、各业务全量下发功能提交 2019-03-15 16:15:11 +08:00
bsdbc
e977d00657 修改帮助页面样式 2019-03-12 17:38:28 +08:00
段冬梅
ef5c6cdfa6 去掉回调类配置批量下发的打印,打开asn的配置文件 2019-03-12 11:01:53 +08:00
bsdbc
62056ed718 帮助文档页面左侧树状目录添加横向滚动条 2019-03-12 10:18:51 +08:00
wangwenrui
e1966eb0c3 1.数据库新建表help_document
2.redis相关说明:
	帮助文档会缓存在redis中,使用的redis为nis.properties配置文件中redis.host配置的界面所用redis
	帮助文档key在redis中未设超时时间
	帮助文档key命名:help:cache:+md文件的名称      --> 帮助文档内容
				help:cache:back:+md文件的名称  --> 帮助文档备份的内容
				help:cache:cacheFlag   --> 帮助文档是否缓存标识,如果不为空且值为true,表示已缓存,不会重复缓存
2019-03-12 09:40:12 +08:00
wangwenrui
db00cafd84 新开分支整理代码:
1.帮助文档修改功能
2.帮助文档与上一版对比功能
3.单点问题解决
4.markdown帮助文档

Conflicts:
	src/main/resources/messages/message_en.properties
	src/main/resources/messages/message_ru.properties
	src/main/resources/messages/message_zh_CN.properties
2019-03-12 09:36:17 +08:00
段冬梅
785150f921 ASN ip,APP特征业务的配置批量取消功能完成 2019-03-11 17:06:31 +08:00
zhanghongqing
c8e43c81f1 修改配置中APP SSL证书特征新增界面中的匹配区域为空时,无文字提示问题。 2019-03-11 15:48:39 +08:00
段冬梅
b87f99c852 除APP feature和ASN IP外的业务增加批量配置取消功能;
修复ddos新增bug;
2019-03-05 17:42:12 +08:00
段冬梅
c348697e3b IP业务增加配置批量取消功能;
去掉批量取消的全部json打印;
清库语句完善,并增加定时任务的表删除及创建sql
2019-03-01 18:18:49 +08:00
段冬梅
6b37a95ee2 //http url
//dns
//mail address
//mail advanced
//https monitor
//https block
//https redirect
//https replace
//https whitelist
#以上业务的配置批量失效功能提交
2019-02-28 17:55:56 +08:00
leijun
d8b05f9431 修复DNAT复用策略 新增时缺少必填信息框 2019-02-28 11:45:21 +08:00
段冬梅
8682124d04 定时忽略updatePxyObjTrustedCaCrl方法
客户端用户管理修改修改成功提示为success类型
修改dns响应策略界面的错误提示框位置
2019-02-28 10:59:21 +08:00
leijun
b12f45a187 cgi 接口服务 防空指针处理 2019-02-28 10:08:23 +08:00
leijun
ba56de3336 cgi 接口服务 防空指针处理 2019-02-28 09:54:05 +08:00
dongxiaoyan
518600da40 去掉app流量趋势中app名称国际化 2019-02-27 17:55:58 +08:00
dongxiaoyan
e98c8f2f2a 解决流量统计app趋势中app名称特殊符号跟国际化标签写法的冲突bug 2019-02-27 17:43:54 +08:00
leijun
322e5ba8a8 cfgRegionCodeR 判断统一大小写 2019-02-27 11:27:06 +08:00
leijun
c87a465200 修复http url 白名单导入模板 下载黑屏 2019-02-27 11:23:23 +08:00
leijun
bf74483f77 实时报表-流量统计
http(s) URL导出取消条数限制
2019-02-27 09:27:54 +08:00
leijun
c690c68aad vpn cgi 接口参数配置 2019-02-26 17:42:56 +08:00
leijun
9b2f41cd39 vpn cgi接口服务 报错信息调整 2019-02-26 17:41:25 +08:00
段冬梅
88199a222b 去掉配置文件中重复部分 2019-02-25 10:38:06 +08:00
dongxiaoyan
7583c01432 调整APP相关趋势图数据比较接近时的颜色区分 2019-02-25 09:46:09 +08:00
dongxiaoyan
6d9060bb49 调整app趋势图透明度,添加纵轴单位 2019-02-25 09:45:30 +08:00
段冬梅
2b452af4b3 冲突解决 2019-02-25 09:45:12 +08:00
zhanghongqing
c5aae2302c 流量统计app详情趋势统计图增加Gbps、PPS单位切换统计,导出图片增加标题与时间
(cherry picked from commit 2dd73adfbb)

Conflicts:
	src/main/resources/nis.properties
2019-02-25 09:43:37 +08:00
段冬梅
a8468064d6 增加两个接口
trafficAppBpsTrend
trafficAppPpsTrend
2019-02-22 18:31:12 +08:00
zhanghongqing
ba3aeb199f 流量统计app详情趋势统计图增加Gbps、PPS单位切换统计,导出图片增加标题与时间
Conflicts:
	src/main/resources/nis.properties
2019-02-22 18:30:27 +08:00
段冬梅
d8a5ecf8ab 配置统计表增加配置的审核时间audit_time,配置统计存储过程修改 2019-02-22 14:19:55 +08:00
段冬梅
043cb275dc 客户端用户密码修改BUG更改;
客户端用户只有取消审核通过和删除的策略时,允许删除此用户;
客户端用户修改成功后,给出提示信息。
2019-02-21 10:55:26 +08:00
段冬梅
60392b2493 密码修改清理缓存时,由用户名清理缓存修改为登录ID来清理用户缓存。 2019-02-21 09:42:30 +08:00
段冬梅
a2f311f18c 修复客户端账号管理和SNAT策略导出选中配置出错BUG 2019-02-20 18:02:17 +08:00
dongxiaoyan
220b3be2b0 日志趋势图提示信息国际化
(cherry picked from commit ae4cca4dfe)

(cherry picked from commit 96656f24cf)
2019-02-20 10:19:56 +08:00
dongxiaoyan
668c435862 修改提示信息“No data to display”为“No data display within a specified time
range”;
时间格式化错误:最后的“。000”

(cherry picked from commit f3d4f0deec)

(cherry picked from commit bb6668d00f)
2019-02-20 10:19:26 +08:00
dongxiaoyan
47966248dc 1、根据 刘老师和园园要求注释掉:“CEIEC All Rights Reserved,CEIEC ©”;
2、提示信息:“未找到该菜单!”修改为“The menu was not found!”,未国际化,以后考虑国际化;
3、提示信息:“缓存清理成功”修改为“Cache Cleaning Successful!”,未国际化,以后考虑国际化;
4、提示信息:“缓存清理失败”修改为“Cache Cleanup Failure!”,未国际化,以后考虑国际化;
5、部分页面乱码修改;

(cherry picked from commit e2292598e9)

(cherry picked from commit 3639363a9b)
2019-02-20 09:46:46 +08:00
dongxiaoyan
8b60648f3e TrafficPort趋势图单位由bytes改为 :Link Numbers
(cherry picked from commit fda327e4c1)

(cherry picked from commit 446c8884ad)
2019-02-18 19:27:50 +08:00
zhanghongqing
745076678a 修改复制提示信息copyied为copied 2019-02-15 10:00:17 +08:00
duandongmei
22ed019dbd app的DNS Spoofing选项在提交之前未展示,置为disable 2019-01-30 20:01:26 +06:00
duandongmei
737833492b 白名单的ipForm界面去掉误写的aa串 2019-01-30 17:32:26 +06:00
zhangwei
edb9f11b92 1.暂时取消对定时任务配置的限制操作;
2.增加定时器的国际化code
2019-01-30 15:47:43 +06:00
tanghao
be3811688f 修复导出超过限制页面卡死BUG(丢失代码恢复) 2019-01-30 14:31:34 +08:00
zhangwei
851fb85ca1 修改定时器表单中的国际化code 2019-01-29 14:31:57 +06:00
zhangwei
2dadd96484 定时器增加长期生效选项,长期生效只有生效时间【开始时间】,无失效时间【结束时间】。 2019-01-29 14:25:09 +06:00
zhangwei
0ebee67507 Merge branch 'develop_no_common_group' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop_no_common_group 2019-01-29 14:23:43 +06:00
duandongmei
85f09a60be 单元格的值存储Map增加key重复性判断 2019-01-29 12:32:20 +06:00
fangshunjian
fa20de4df1 1、修改ddos,音视频保存定时任务信息cronValid 和 cronInvalid 字段出错的问题
Conflicts:
	src/main/webapp/WEB-INF/views/cfg/ddosIpCfgForm.jsp
2019-01-29 09:49:57 +06:00
duandongmei
2abffe2e34 26号之前的asn ip导入版本,区分ipv4和ipv6,v4和v6互不影响 2019-01-29 09:28:36 +06:00
duandongmei
32d4ad3cd7 导入处理无数据的单元格,记录所有有数据的单元格及下标,最后将无数据的单元格根据下标补全。 2019-01-29 09:27:47 +06:00
duandongmei
453ed153bc IP Spoofing的action导出由redirect修改为Spoofing
(cherry picked from commit 7bfcbe614a)
2019-01-28 22:11:24 +08:00
chenjinsong
c458bb0e6b 修复日志导出:
去掉IP Spoofing的修改;
bgp导出无action合并


Conflicts:
	src/main/java/com/nis/util/excel/ExcelCsv.java


(cherry picked from commit b57176c6c1)
2019-01-28 22:10:58 +08:00
zhangwenqing
b307bffb26 修复BUG:
1.修复DDOS配置流量阈值(Bps)/(Pps)默认值Bug
2.修正配置导入域名字段错误提示信息
3.SNAT/DNAT复用策略配置 暂不支持 跳转日志检索
4.缓存策略配置导出忽略doLog(与界面列表一致)
5.修复音视频样例配置上传文件二次选择取消后文件框中的文件名还存在
6.修复特定服务管理新增报错

(cherry picked from commit 11424ee91d)
2019-01-28 22:08:56 +08:00
zhanghongqing
e940073eae 修改界面delete按钮样式
Conflicts:
	src/main/webapp/WEB-INF/tags/sys/delRow.tag
2019-01-28 22:07:56 +08:00
shangguanyanfei
07b7040df4 1.业务配置-导入摸板修改 来函下拉框显示内容(改为只显示通过的来函)
2.业务配置模块页面-筛选按钮中的来函下拉框改为显示(通过的和配置取消的来函)

(cherry picked from commit 7c93338dce)
2019-01-28 21:29:02 +08:00
zhangwei
8d8a6dc97e 修改增加了定时器的业务配置列表,调整生效标识(is_valid)位置,增加定时器标识显示。
Conflicts:
	src/main/webapp/WEB-INF/views/cfg/intercept/interceptList.jsp
2019-01-28 21:28:37 +08:00
zhanghongqing
4a627eacaa 配置导出统一显示全部区域显示,子配置中去掉日志总量,在主配置显示
(cherry picked from commit 715e9b3c73)
2019-01-28 21:14:53 +08:00
tanghao
ecdaa47d8a 1.首页面退出操作字体未对齐
2.基本配置-用户管理-新增用户bug
3.ASN IP配置导出bug(实际为公共界面所有超过阈值导出共性BUG)
4.ASN IP下拉框onchange事件

(cherry picked from commit 355fa8e3cb)
2019-01-28 21:14:17 +08:00
shangguanyanfei
98747b329b 业务配置-stream模块导出-阻断类型中 阻断 改为 封堵(丢弃)
(cherry picked from commit a7d22d463d)
2019-01-28 21:11:59 +08:00
zhangwei
26078a9cd1 修改编译jdk版本为1.8
(cherry picked from commit 3373978073)
2019-01-28 21:10:55 +08:00
zhanghongqing
776dc47ad6 配置导出时是否区分大小写时,为是时导出无显示问题解决,日志http网页关键字查询是选择关键字监测/封堵时界面对应列显示不同国际化问题解决。
(cherry picked from commit 14e3b828db)
2019-01-28 21:10:00 +08:00
zhangwenqing
faf8f45585 修复缓存策略配置、IP分组管理、DNS分组管理导出黑屏bug
(cherry picked from commit c9d7512a1b)
2019-01-28 21:07:58 +08:00
zhangwei
e33e91cb46 url白名单修改下发的maat的业务表名不做特殊处理。
(cherry picked from commit 0fb4bf08a4)
2019-01-28 20:58:37 +08:00
zhangwenqing
90ffb5388f 修复APP特征配置导入bug
Conflicts:
	src/main/java/com/nis/web/controller/BaseController.java
2019-01-28 20:55:12 +08:00
zhanghongqing
6931832c8c ddos日志去掉client查询条件,攻击类型在字典界面设置保留DNS_Flood,NTP_Flood,SYN_Flood
Conflicts:
	src/main/webapp/WEB-INF/views/log/ntc/ddosList.jsp
2019-01-28 20:40:47 +08:00
王鑫
281ea2f2a9 Revert "新增编辑在帮助文档功能"
This reverts commit ea13a037e8
2019-01-28 20:17:08 +08:00
dongxiaoyan
a4c566089f add_pool_nam补充完整add_pool_name
(cherry picked from commit 3daab5e49d)
2019-01-28 20:13:02 +08:00
dongxiaoyan
049550dc1c 添加默认动态ip池,并修改cfgid为0
(cherry picked from commit e5e63af738)
2019-01-28 20:12:36 +08:00
wangwenrui
ea13a037e8 新增编辑在帮助文档功能
(cherry picked from commit 1d5905fe47)
2019-01-28 20:12:11 +08:00
张微
b2bfd83e1f Update README.md 2019-01-28 18:08:44 +08:00
zhanghongqing
00f40e6394 修改流量统计中协议详情跟网站详情界面按钮下移问题 2019-01-28 15:27:02 +06:00
duandongmei
40ad762853 ip白名单打开方向属性 2019-01-28 13:56:56 +06:00
duandongmei
e319a19135 多删除了commit提交语句bug更改 2019-01-28 09:50:07 +06:00
duandongmei
de813e15d9 Merge branch 'feature-traffic-log' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into feature-traffic-log 2019-01-27 20:01:06 +06:00
zhangwei
2febc9e5b7 临时修复apphttp,dns,ssl特征的导入 2019-01-27 19:32:56 +06:00
duandongmei
a7914aafac asn统计updatesql,不分批次提交 2019-01-27 18:15:14 +06:00
duandongmei
10e0064556 关键字转url,来函为null的情况修复 2019-01-27 13:39:07 +06:00
duandongmei
18491f2644 修复ASN v4和v6串列bug 2019-01-27 11:55:59 +06:00
zhangwei
2db43e69d9 合并develop分支定时器功能
Conflicts:
	src/main/java/com/nis/domain/configuration/BaseCfg.java
	src/main/webapp/WEB-INF/views/cfg/ipaddr/ipList.jsp
2019-01-27 11:06:46 +06:00
zhangwei
c1c5c8f5bb 修改定时器后台运行时无shiro权限导致根据functionId查询配置时引起的bug,查询菜单功能名称在menuCode方法中设置 2019-01-27 10:32:50 +06:00
duandongmei
1c2833ee8e asn v6_num国际化更改;
asngrouplist界面asnip数获取bug更改
2019-01-27 10:19:01 +06:00
zhanghongqing
8c70356e44 修改流量统计滚动条文字对齐bug 2019-01-26 20:31:34 +06:00
zhangwei
41e5202cbf Merge branch 'feature-traffic-log' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into feature-traffic-log 2019-01-26 20:20:40 +06:00
zhangwei
9d6e3a3d4a 增加定时器功能
Conflicts:
	src/main/webapp/WEB-INF/views/cfg/ipaddr/ipList.jsp
2019-01-26 20:18:01 +06:00
duandongmei
63882ac75e ddos的检索条件client ip去掉 2019-01-26 20:14:45 +06:00
duandongmei
0a76ce337a ASN定时计算v4和v6的IP个数;
界面展示ASNIPv4和v6数

Conflicts:
	src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.java
	src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.xml
	src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.java
	src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.xml
	src/main/resources/messages/message_en.properties
	src/main/resources/messages/message_ru.properties
	src/main/webapp/WEB-INF/views/basics/asnGroupList.jsp
2019-01-26 20:13:44 +06:00
zhangwei
5c63f85483 定时器表单提交 2019-01-26 19:53:19 +06:00
zhangwei
2181a420b9 拦截策略无业务日志,删除日志总量一列 2019-01-26 19:45:14 +06:00
zhangwei
5d86fb0fd4 拦截策略列表删除doLog显示 2019-01-26 19:43:26 +06:00
zhangwei
9b304e3c13 增加定时器
Conflicts:
	src/main/resources/messages/message_en.properties
	src/main/webapp/WEB-INF/views/cfg/ipaddr/ipList.jsp
2019-01-26 19:23:00 +06:00
duandongmei
87e07376fa 修复asnip配置取消之后修改,is_audit状态未修改为0的问题 2019-01-25 17:48:58 +06:00
duandongmei
736c4cda04 16号之前的版本asn还是为单独业务,检索条件区分asn的block和monitor 2019-01-25 17:46:49 +06:00
zhangwei
a2dc1dd6f5 修改doLog的参数描述
(cherry picked from commit 52fe56b59d)
2019-01-25 09:45:29 +08:00
zhangwei
787484c721 修改通联关系日志中的查询条件描述domain->web
(cherry picked from commit d51da59143)
2019-01-25 09:45:17 +08:00
zhangwei
5c8b81c67e dns业务去掉do_blacklist选项的显示
(cherry picked from commit 8bb1c6c857)
2019-01-25 09:44:55 +08:00
duandongmei
56e9cebe26 保护名单提示、正在提交、登出的国际化更新
(cherry picked from commit 25e6fa4a3f)
2019-01-25 09:44:36 +08:00
duandongmei
469c753161 domain和url域新增时增加警告提示信息【后期需在审核时也增加此警告】。
保护名单信息杨威提供后,再进行完善

(cherry picked from commit ea82be590e)
2019-01-24 17:40:18 +08:00
zhanghongqing
72b88b09c4 修改流量统计首页滚动条数字对齐
(cherry picked from commit 2ca0a4714dfedbea53272f43169e4cf502e377f9)

(cherry picked from commit 1a6e771458)
2019-01-24 16:13:04 +08:00
leijun
3e706f7027 SNAT地址池添加一条动态地址池信息
app域名特征添加拦截强度

(cherry picked from commit 1d71820d1ee3fbd21f201af14781849de9fb75a3)

(cherry picked from commit e14cca6824)
2019-01-24 16:12:46 +08:00
zhangwenqing
498fee3727 修正Ip Spoofing配置导入模板'direction'字段默认值批注;修改配置导入域名字段校验;修复配置导入属性验证发生异常后无提示信息问题(王鑫)
(cherry picked from commit 38f563ceee07bfdaa4d94cc5ca6f712edb894d40)
2019-01-24 16:10:14 +08:00
tanghao
1f4618ae7f 修复流量B和b换算问题
(cherry picked from commit 3cd969978e)
2019-01-24 09:52:06 +08:00
zhanghongqing
1f024e6b81 修改用户行为查询时间设置
(cherry picked from commit 6fe94fa3b8e8a9e6a8ed1ae3454db78fa5eb9c1d)

(cherry picked from commit 57793c7264)
2019-01-24 09:51:47 +08:00
duandongmei
839f06b495 js国际化增加crlCheck信息,俄文国际化翻译
(cherry picked from commit 6885d467cb)
2019-01-24 09:51:24 +08:00
duandongmei
e3bade38b9 国际化俄文翻译,并且去掉重复的desc国际化
(cherry picked from commit e5ce04e34b)
2019-01-24 09:51:05 +08:00
duandongmei
1346fd1bfc 修复拥有用户管理权限的用户,修改其他用户密码后不生效问题。
(cherry picked from commit fa42935d46)
2019-01-24 09:50:39 +08:00
zhanghongqing
da24fa3b84 修改日志详情中title判断条件
(cherry picked from commit a464bd9443)
2019-01-23 10:16:45 +08:00
zhangwei
ee20daadb3 新增定时任务相关国际化字典
(cherry picked from commit 3087e5baf3)
2019-01-23 10:16:25 +08:00
李皓宸
a80c9267df 日志检索->流量日志->邮件泛收和SSL泛收 移除cfgId查询条件,解决Js报错问题
(cherry picked from commit 52bf2d3415)
2019-01-23 10:16:05 +08:00
李皓宸
b0a6fe7c86 1.日志检索->国家代理->HTTP(S) 界面 原始请求体和原始应答体 列数据 增加点击下载功能
2.实时报表->流量统计->流量统计和协议统计 界面 "方向"查询条件增加"请选择"选项(默认)

(cherry picked from commit ee411339c8)
2019-01-23 10:15:52 +08:00
zhanghongqing
493c5e7c63 增加国际化配置,流量统计首页滚动条调整,保留两位小数
(cherry picked from commit 3bf485b920)
2019-01-23 10:15:32 +08:00
leijun
ad310f6d48 日志检索-snat、dnat复用策略 页面标题国际化对应调整
(cherry picked from commit ab157b82db)
2019-01-23 10:15:08 +08:00
tanghao
86365ad7b1 bps计算保留两位小数展示
(cherry picked from commit 79de7b51df)
2019-01-23 10:14:52 +08:00
zhanghongqing
372232d206 修改鼠标点击列表copy中的的空格,去掉
(cherry picked from commit 0ed34ac938)
2019-01-23 10:14:33 +08:00
zhanghongqing
4dfd9b2d70 补充提交去掉注释
(cherry picked from commit 2eb2cd366e)
2019-01-23 10:14:01 +08:00
zhanghongqing
f105fca9a7 解决日志详情中文字带换行空格问题
(cherry picked from commit b03ec51aa4)
2019-01-23 10:13:35 +08:00
zhanghongqing
c4db370870 流量统计修改国际化名称
(cherry picked from commit 37dfdf1e3b)
2019-01-23 10:13:01 +08:00
李皓宸
0756af0d6e 日志检索->国家代理->HTTP(S) 修正界面无法显示原始请求体和原始应答体数据问题
(cherry picked from commit 859b3c72f9)
2019-01-23 10:12:28 +08:00
duandongmei
daac82f77a 证书crl去掉必填校验 2019-01-22 10:27:18 +06:00
zhangwei
f71711ed8f 修改日志客户端服务器端位置的国际化
(cherry picked from commit 9d190788b1)
2019-01-21 23:53:26 +08:00
leijun
5b8a342625 通联日志重置后默认选中other
(cherry picked from commit 7d08ab8539)
2019-01-21 23:53:11 +08:00
tanghao
d9f5398fc6 1.修改bps计算方式 改为Gbps
2.调动pps以及bps页面位置

(cherry picked from commit e0661fbed4)
2019-01-21 23:52:47 +08:00
zhanghongqing
8d6d6da7f3 流量统计滚动条做动态单位换算
(cherry picked from commit 23c118c6b7)
2019-01-21 23:52:25 +08:00
duandongmei
44ea7d6ca2 //修改html特殊字符转换方法名
escapIntypeHtml

(cherry picked from commit b5d1b281a0)
2019-01-21 23:52:01 +08:00
zhanghongqing
cca47e3823 去掉通联关系日志界面运营商展示,去掉流量统计app详情趋势运营商展示,同时修改导出去掉运营商列,app跳转到app详情界面时携带地域条件
(cherry picked from commit d0b4907271)
2019-01-21 23:51:12 +08:00
duandongmei
f8a90c0c8f 修复配置界面中下拉选择检索条件,js使用el表达式赋值时存在html特殊字符未转换问题;
导入字符串字段增加escapeHtml4转换;
域名校验不使用完整的域名格式校验。

(cherry picked from commit a1f8e1779a)
2019-01-21 23:50:53 +08:00
zhangwenqing
e412d22569 修改关注网站配置导入 主题、网站大小写不敏感;修改App Ip配置导入模板
Conflicts:
	src/main/java/com/nis/web/controller/BaseController.java
2019-01-21 23:50:13 +08:00
李皓宸
4ed438f8aa 1.日志检索->协议->邮箱 增加 动作 查询条件,选"动作"时传入监测和阻断对应的Service
2.实时报表->流量统计和协议统计 增加 方向 查询条件,out为0 in为1

(cherry picked from commit 3612bf09d9)
2019-01-21 23:40:37 +08:00
zhanghongqing
77f9d927be 调整流量统计滚动条数据列对齐,traffic中/S改为/s,请求方法改为post防止缓存,请求时间改为5分钟一次,traffic数据为当前时间15分钟内数据,其它滚动条为当前时间一小时数据。
(cherry picked from commit 3602e2f1c3)
2019-01-21 23:39:47 +08:00
zhangwenqing
abbb76031b 修改关注网站配置导入模板
(cherry picked from commit fa7fa0c859)
2019-01-21 23:39:22 +08:00
zhanghongqing
5ee58bc895 流量统计in/out改为大写,流量统计app趋势reset改为默认当前时间一小时
(cherry picked from commit 8d42cab7e2)
2019-01-21 23:37:51 +08:00
zhanghongqing
a437417da1 通联关系日志展示运营商,修复排序功能
(cherry picked from commit 698fd13a65)
2019-01-21 23:31:36 +08:00
leijun
b41f0d8ad5 VPN服务器
新增添加IP重复验证
删除验证是否被IP复用-用户管理使用
IP复用-用户管理 删除验证是否被snat策略和dnat策略使用

(cherry picked from commit 436190fe8c)

Conflicts:
	src/main/resources/messages/message_en.properties
	src/main/resources/messages/message_ru.properties
	src/main/resources/messages/message_zh_CN.properties
2019-01-21 23:30:55 +08:00
duandongmei
9ff1643e30 1月16号之前的asn版本修改组织输入为asn 号输入 2019-01-21 18:26:22 +06:00
duandongmei
7e1875b384 证书增加crl参数的输入,并增加crl的格式校验
(cherry picked from commit ae283564cb)
2019-01-21 16:39:39 +08:00
zhangwei
aa5eccf995 修改拦截策略的证书信息校验规则:
1. Keyring的下拉列表显示全部已生效的证书;
2. 如选择了实体证书,必须配置域名,或者IP与域名的组合配置;
3.
域名配置,如匹配方式为完全匹配,则域名必须与所选择的实体证书的CN和SAN相同。如匹配方式为后缀匹配,则域名须与所选择的实体证书的CN和SAN后缀相同;
4. 如选择了中间证书或者根证书,则可配置IP,或者域名,或者两者组合;

Conflicts:
	src/main/resources/messages/message_en.properties
	src/main/resources/messages/message_ru.properties
	src/main/resources/messages/message_zh_CN.properties
2019-01-19 17:59:57 +06:00
zhangwei
9e6e2fbd37 验证代理对象的证书是否被拦截策略引用,如被引用,则证书配置不能取消。 2019-01-19 17:53:52 +06:00
duandongmei
104d06fd19 ASN的ASN IP域的ASN_ID自定义域格式同ASN关键字域配置.
ASN IP:ASN_ID=AS123
ASN:AS123
2019-01-19 11:25:55 +06:00
zhangwei
216c64b031 修改asn查询条件 2019-01-18 16:33:16 +06:00
王鑫
25ea439564 Merge branch 'cherry-pick-2d4a1a66' into 'feature-traffic-log'
流量统计app趋势及apptop100增加isp运营商查询条件

See merge request K18_NTCS_WEB/NTC!5
2019-01-18 16:49:32 +08:00
zhanghongqing
d225b81903 流量统计app趋势及apptop100增加isp运营商查询条件
(cherry picked from commit 2d4a1a6685)
2019-01-18 16:49:15 +08:00
王鑫
b1ee15772b Merge branch 'cherry-pick-7210fca1' into 'feature-traffic-log'
1.修复IP top10 使用类型报错 由integer改为Long

See merge request K18_NTCS_WEB/NTC!4
2019-01-18 16:48:11 +08:00
tanghao
84e691d03b 1.修复IP top10 使用类型报错 由integer改为Long
2.Bps修正为bps

(cherry picked from commit 7210fca18f)
2019-01-18 16:47:40 +08:00
王鑫
0409a5f8c8 Merge branch 'cherry-pick-99dad7c0' into 'feature-traffic-log'
恢复原Gbps单位

See merge request K18_NTCS_WEB/NTC!3
2019-01-18 16:46:42 +08:00
dongxiaoyan
6a5b07f8ce 恢复原Gbps单位
(cherry picked from commit 99dad7c0a4)
2019-01-18 16:45:44 +08:00
wangxin
de8496e003 ASN 版本恢复1月4号之版本 2019-01-18 16:21:20 +08:00
678 changed files with 78481 additions and 16110 deletions

View File

@@ -1 +1 @@
gk for web
在公共分组功能逻辑完善之前此分支为ntc界面系统的全集上线升级分支合并版。

View File

@@ -727,6 +727,10 @@
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.57</version>
</dependency>
</dependencies>
</project>

View File

@@ -14,6 +14,8 @@ public class ScheduleCfg extends BaseCfg<ScheduleCfg>{
private String cronValid;//生效cron表达式
private String cronInvalid;//失效cron表达式
private String whereStr;//动态where 条件
private int delFlag;
private int type;
public String getName() {
return name;
}
@@ -38,6 +40,17 @@ public class ScheduleCfg extends BaseCfg<ScheduleCfg>{
public void setWhereStr(String whereStr) {
this.whereStr = whereStr;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getDelFlag() {
return delFlag;
}
public void setDelFlag(int delFlag) {
this.delFlag = delFlag;
}
}

View File

@@ -0,0 +1,92 @@
package com.nis.domain;
import java.util.Date;
import javax.xml.bind.annotation.XmlTransient;
import org.apache.poi.ss.formula.functions.T;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class SysUserWarn {
private String serviceId; //业务Id
private String serviceDesc;//业务描述
private Integer interfaceCfgTotal;//界面配置数量
private Integer systemCfgTotal;//服务端配置数量
private Date time;//时间
private String remark;//备注
private Integer id;//serviceID
private String tableName;//表名
/**
* 当前实体分页对象
*/
protected Page<SysUserWarn> page;
public String getServiceId() {
return serviceId;
}
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
public String getServiceDesc() {
return serviceDesc;
}
public void setServiceDesc(String serviceDesc) {
this.serviceDesc = serviceDesc;
}
public Integer getInterfaceCfgTotal() {
return interfaceCfgTotal;
}
public void setInterfaceCfgTotal(Integer interfaceCfgTotal) {
this.interfaceCfgTotal = interfaceCfgTotal;
}
public Integer getSystemCfgTotal() {
return systemCfgTotal;
}
public void setSystemCfgTotal(Integer systemCfgTotal) {
this.systemCfgTotal = systemCfgTotal;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
@JsonIgnore
@XmlTransient
public Page<SysUserWarn> getPage() {
if (page == null){
page = new Page<SysUserWarn>();
}
return page;
}
public Page<SysUserWarn> setPage(Page<SysUserWarn> page) {
this.page = page;
return page;
}
}

View File

@@ -0,0 +1,46 @@
package com.nis.domain;
import java.util.List;
import java.util.Map;
public class SysUserWarnData {
private Map<String,List<String>> effective;
private Integer effectiveCount;
private Map<String,List<String>> obsolete;
private Integer obsoleteCount;
public Map<String, List<String>> getEffective() {
return effective;
}
public void setEffective(Map<String, List<String>> effective) {
this.effective = effective;
}
public Integer getEffectiveCount() {
return effectiveCount;
}
public void setEffectiveCount(Integer effectiveCount) {
this.effectiveCount = effectiveCount;
}
public Map<String, List<String>> getObsolete() {
return obsolete;
}
public void setObsolete(Map<String, List<String>> obsolete) {
this.obsolete = obsolete;
}
public Integer getObsoleteCount() {
return obsoleteCount;
}
public void setObsoleteCount(Integer obsoleteCount) {
this.obsoleteCount = obsoleteCount;
}
@Override
public String toString() {
return "SysUserWarnData [effective=" + effective + ", effectiveCount=" + effectiveCount + ", obsolete="
+ obsolete + ", obsoleteCount=" + obsoleteCount + "]";
}
}

View File

@@ -0,0 +1,67 @@
package com.nis.domain;
public class SysUserWarnRecvData {
private Integer status;
private Integer businessCode;
private String reason;
private String msg;
private String fromuri;
private String logSource;
private String traceCode;
private SysUserWarnData data;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getBusinessCode() {
return businessCode;
}
public void setBusinessCode(Integer businessCode) {
this.businessCode = businessCode;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getFromuri() {
return fromuri;
}
public void setFromuri(String fromuri) {
this.fromuri = fromuri;
}
public String getLogSource() {
return logSource;
}
public void setLogSource(String logSource) {
this.logSource = logSource;
}
public String getTraceCode() {
return traceCode;
}
public void setTraceCode(String traceCode) {
this.traceCode = traceCode;
}
public SysUserWarnData getData() {
return data;
}
public void setData(SysUserWarnData data) {
this.data = data;
}
}

View File

@@ -32,22 +32,7 @@ public class AsnGroupInfo extends BaseCfg<AsnGroupInfo> implements Serializable{
private Integer isUsed;
private Integer regionId;
private Integer orgGroupId;
private Integer onlyGroupId;// ip地址独用组id
public Integer getOnlyGroupId() {
return onlyGroupId;
}
public void setOnlyGroupId(Integer onlyGroupId) {
this.onlyGroupId = onlyGroupId;
}
public Integer getOrgGroupId() {
return orgGroupId;
}
public void setOrgGroupId(Integer orgGroupId) {
this.orgGroupId = orgGroupId;
}
public Integer getIsUsed() {
return isUsed;

View File

@@ -20,12 +20,14 @@ public class AsnIpCfg extends BaseCfg<AsnIpCfg> {
@ExcelField(title="ip_type",dictType="IP_TYPE",sort=6)
@SerializedName("ipType")
private Integer ipType;
@ExcelField(title="ip_pattern",dictType="IP_PATTERN",sort=8)
private Integer ipPattern;
private Integer srcIpPattern;
@ExcelField(title="dest_ip_pattern",dictType="IP_PATTERN",sort=8)
private Integer destIpPattern;
private String srcIpAddress;
@ExcelField(title="ip",sort=7)
private String destIpAddress;
private Integer portPattern;
private Integer srcPortPattern;
private Integer destPortPattern;
private String srcPort;
private String destPort;
//@ExcelField(title="group",sort=2)
@@ -117,11 +119,30 @@ public class AsnIpCfg extends BaseCfg<AsnIpCfg> {
public void setIpType(Integer ipType) {
this.ipType = ipType;
}
public Integer getIpPattern() {
return ipPattern;
public Integer getSrcIpPattern() {
return srcIpPattern;
}
public void setIpPattern(Integer ipPattern) {
this.ipPattern = ipPattern;
public void setSrcIpPattern(Integer srcIpPattern) {
this.srcIpPattern = srcIpPattern;
}
public Integer getDestIpPattern() {
return destIpPattern;
}
public void setDestIpPattern(Integer destIpPattern) {
this.destIpPattern = destIpPattern;
}
public Integer getSrcPortPattern() {
return srcPortPattern;
}
public void setSrcPortPattern(Integer srcPortPattern) {
this.srcPortPattern = srcPortPattern;
}
public Integer getDestPortPattern() {
return destPortPattern;
}
public void setDestPortPattern(Integer destPortPattern) {
this.destPortPattern = destPortPattern;
}
public String getSrcIpAddress() {
return srcIpAddress;
@@ -135,12 +156,6 @@ public class AsnIpCfg extends BaseCfg<AsnIpCfg> {
public void setDestIpAddress(String destIpAddress) {
this.destIpAddress = destIpAddress;
}
public Integer getPortPattern() {
return portPattern;
}
public void setPortPattern(Integer portPattern) {
this.portPattern = portPattern;
}
public String getSrcPort() {
return srcPort;
}
@@ -176,9 +191,10 @@ public class AsnIpCfg extends BaseCfg<AsnIpCfg> {
}
@Override
public String toString() {
return "AsnIpCfg [regionId=" + regionId + ", ratelimit=" + ratelimit + ", ipType=" + ipType + ", ipPattern="
+ ipPattern + ", srcIpAddress=" + srcIpAddress + ", destIpAddress=" + destIpAddress + ", portPattern="
+ portPattern + ", srcPort=" + srcPort + ", destPort=" + destPort + ", asnIpGroupName=" + asnIpGroupName
return "AsnIpCfg [regionId=" + regionId + ", ratelimit=" + ratelimit + ", ipType=" + ipType + ", srcIpPattern="
+ srcIpPattern + ", destIpPattern="+ destIpPattern+ ", srcIpAddress=" + srcIpAddress + ", destIpAddress="
+ destIpAddress + ", srcPortPattern="+ srcPortPattern+", destPortPattern="+ destPortPattern + ", srcPort="
+ srcPort + ", destPort=" + destPort + ", asnIpGroupName=" + asnIpGroupName
+ ", asnIpGroup=" + asnIpGroup + ", direction=" + direction + ", protocol=" + protocol + ", protocolId="
+ protocolId + ", compileId=" + compileId + ", isValid=" + isValid + ", userRegion1=" + userRegion1
+ ", userRegion2=" + userRegion2 + ", userRegion3=" + userRegion3 + ", userRegion4=" + userRegion4

View File

@@ -0,0 +1,74 @@
package com.nis.domain.basics;
import java.io.Serializable;
import java.util.Date;
import com.nis.domain.configuration.BaseCfg;
import com.nis.util.excel.ExcelField;
/**
* 公共分组实体
*/
public class CommonGroupInfo extends BaseCfg<CommonGroupInfo> implements Serializable{
/**
*
*/
private static final long serialVersionUID = 7931466570918016654L;
private Integer groupId;
@ExcelField(title="group_name",sort=1)
private String groupName;
@ExcelField(title="group_type",dictType="GROUP_TYPE",sort=2)
private Integer groupType;
private Integer serviceGroupId;
@ExcelField(title="desc",sort=4)
private String description;
public Integer getServiceGroupId() {
return serviceGroupId;
}
public void setServiceGroupId(Integer serviceGroupId) {
this.serviceGroupId = serviceGroupId;
}
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getEditTime() {
return editTime;
}
public void setEditTime(Date editTime) {
this.editTime = editTime;
}
public Integer getGroupType() {
return groupType;
}
public void setGroupType(Integer groupType) {
this.groupType = groupType;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}

View File

@@ -0,0 +1,67 @@
package com.nis.domain.basics;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.util.excel.ExcelField;
public class DomainCommCfg extends BaseStringCfg<DomainCommCfg>{
private static final long serialVersionUID = 5117517145731135023L;
private static final String tableName="domain_comm_cfg";
@ExcelField(title="key_word",sort=3)
protected String cfgKeywords;
protected Integer isHexbin;
protected String ratelimit;
@ExcelField(title="group_name",sort=2)
protected String groupName;//公共组名称
@ExcelField(title="expression_type",dictType="EXPRESSION_TYPE",sort=18)
protected Integer exprType;
@ExcelField(title="match_method",dictType="MATCH_METHOD",sort=20)
protected Integer matchMethod;
public String getCfgKeywords() {
return cfgKeywords;
}
public void setCfgKeywords(String cfgKeywords) {
this.cfgKeywords = cfgKeywords;
}
public Integer getIsHexbin() {
return isHexbin;
}
public void setIsHexbin(Integer isHexbin) {
this.isHexbin = isHexbin;
}
public String getRatelimit() {
return ratelimit;
}
public void setRatelimit(String ratelimit) {
this.ratelimit = ratelimit;
}
public static String getTablename() {
return tableName;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Integer getMatchMethod() {
return matchMethod;
}
public void setMatchMethod(Integer matchMethod) {
this.matchMethod = matchMethod;
}
public Integer getExprType() {
return exprType;
}
public void setExprType(Integer exprType) {
this.exprType = exprType;
}
}

View File

@@ -0,0 +1,312 @@
package com.nis.domain.basics;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.nis.domain.configuration.BaseCfg;
import com.nis.util.excel.ExcelField;
public class IpCommCfg extends BaseCfg<IpCommCfg> {
/**
*
*/
private static final long serialVersionUID = 4218856118489784060L;
/**
* 创建一个新的实例 BaseIpCfg.
*
*/
public IpCommCfg() {
super();
// TODO Auto-generated constructor stub
}
private static final String indexTable="ip_comm_cfg";
/**
* ip类型
*/
@Expose
@SerializedName("ipType")
@ExcelField(title="ip_type",dictType="IP_TYPE",sort=50)
protected Integer ipType;
@ExcelField(title="src_ip_pattern",dictType="IP_PATTERN",sort=51)
protected Integer srcIpPattern;
@ExcelField(title="client_ip",sort=52)
protected String srcIpAddress;
@ExcelField(title="dest_ip_pattern",dictType="IP_PATTERN",sort=53)
protected Integer destIpPattern;
@ExcelField(title="server_ip",sort=54)
protected String destIpAddress;
@ExcelField(title="src_port_pattern",dictType="PORT_PATTERN",sort=54)
protected Integer srcPortPattern;
@ExcelField(title="dest_port_pattern",dictType="PORT_PATTERN",sort=56)
protected Integer destPortPattern;
@ExcelField(title="client_port",sort=55)
protected String srcPort;
@ExcelField(title="server_port",sort=57)
protected String destPort;
protected Integer dnsStrategyId;
@ExcelField(title="ir_type",dictType="IR_TYPE",sort=58)
protected Integer irType;
@ExcelField(title="group_name",sort=45)
protected String groupName;
// @ExcelField(title="log_total",sort=42)
private Long totalLogs;
private Integer regionId;
private Integer groupId;
public Integer getRegionId() {
return regionId;
}
public void setRegionId(Integer regionId) {
this.regionId = regionId;
}
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public Long getTotalLogs() {
return totalLogs;
}
public void setTotalLogs(Long totalLogs) {
this.totalLogs = totalLogs;
}
/**
* irType
* @return irType
*/
public Integer getIrType() {
return irType;
}
/**
* @param irType the irType to set
*/
public void setIrType(Integer irType) {
this.irType = irType;
}
/**
* groupName
* @return groupName
*/
public String getGroupName() {
return groupName;
}
/**
* @param groupName the groupName to set
*/
public void setGroupName(String groupName) {
this.groupName = groupName;
}
/**
* 方向
*/
@Expose
@SerializedName("direction")
@ExcelField(title="direction",dictType="DIRECTION",sort=58)
protected Integer direction ;
/**
* 协议
*/
@Expose
@SerializedName("protocol")
@ExcelField(title="protocol",dictType="PROTOCOL",sort=59)
protected Integer protocol ;
/**
* 协议ID
*/
@Expose
@SerializedName("protocolId")
protected Integer protocolId ;
/**
* 限速比例
*/
protected String ratelimit ;
/**
* ratelimit
* @return ratelimit
*/
public String getRatelimit() {
return ratelimit;
}
/**
* @param ratelimit the ratelimit to set
*/
public void setRatelimit(String ratelimit) {
this.ratelimit = ratelimit;
}
/**
* ipType
* @return ipType
*/
public Integer getIpType() {
return ipType;
}
/**
* @param ipType the ipType to set
*/
public void setIpType(Integer ipType) {
this.ipType = ipType;
}
/**
* direction
* @return direction
*/
public Integer getDirection() {
return direction;
}
/**
* @param direction the direction to set
*/
public void setDirection(Integer direction) {
this.direction = direction;
}
/**
* protocol
* @return protocol
*/
public Integer getProtocol() {
return protocol;
}
/**
* @param protocol the protocol to set
*/
public void setProtocol(Integer protocol) {
this.protocol = protocol;
}
/**
* protocolId
* @return protocolId
*/
public Integer getProtocolId() {
return protocolId;
}
/**
* @param protocolId the protocolId to set
*/
public void setProtocolId(Integer protocolId) {
this.protocolId = protocolId;
}
public Integer getSrcIpPattern() {
return srcIpPattern;
}
public void setSrcIpPattern(Integer srcIpPattern) {
this.srcIpPattern = srcIpPattern;
}
public Integer getDestIpPattern() {
return destIpPattern;
}
public void setDestIpPattern(Integer destIpPattern) {
this.destIpPattern = destIpPattern;
}
public Integer getSrcPortPattern() {
return srcPortPattern;
}
public void setSrcPortPattern(Integer srcPortPattern) {
this.srcPortPattern = srcPortPattern;
}
public Integer getDestPortPattern() {
return destPortPattern;
}
public void setDestPortPattern(Integer destPortPattern) {
this.destPortPattern = destPortPattern;
}
/**
* srcIpAddress
* @return srcIpAddress
*/
public String getSrcIpAddress() {
return srcIpAddress;
}
/**
* @param srcIpAddress the srcIpAddress to set
*/
public void setSrcIpAddress(String srcIpAddress) {
this.srcIpAddress = srcIpAddress;
}
/**
* destIpAddress
* @return destIpAddress
*/
public String getDestIpAddress() {
return destIpAddress;
}
/**
* @param destIpAddress the destIpAddress to set
*/
public void setDestIpAddress(String destIpAddress) {
this.destIpAddress = destIpAddress;
}
/**
* srcPort
* @return srcPort
*/
public String getSrcPort() {
return srcPort;
}
/**
* @param srcPort the srcPort to set
*/
public void setSrcPort(String srcPort) {
this.srcPort = srcPort;
}
/**
* destPort
* @return destPort
*/
public String getDestPort() {
return destPort;
}
/**
* @param destPort the destPort to set
*/
public void setDestPort(String destPort) {
this.destPort = destPort;
}
/**
* dnsStrategyId
* @return dnsStrategyId
*/
public Integer getDnsStrategyId() {
return dnsStrategyId;
}
/**
* @param dnsStrategyId the dnsStrategyId to set
*/
public void setDnsStrategyId(Integer dnsStrategyId) {
this.dnsStrategyId = dnsStrategyId;
}
@Override
public void initDefaultValue(){
super.initDefaultValue();
this.direction = 0;
}
public static String getIndexTable() {
return indexTable;
}
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
}

View File

@@ -0,0 +1,57 @@
package com.nis.domain.basics;
import java.io.Serializable;
import java.util.Date;
import com.nis.domain.configuration.BaseCfg;
public class ProtectionListInfo extends BaseCfg<ProtectionListInfo> implements Serializable{
/**
*
*/
private static final long serialVersionUID = -3781310894175345207L;
private Integer proId;
private String keyword;
private String targetType;
private String description;
public Integer getProId() {
return proId;
}
public void setProId(Integer proId) {
this.proId = proId;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public String getTargetType() {
return targetType;
}
public void setTargetType(String targetType) {
this.targetType = targetType;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getEditTime() {
return editTime;
}
public void setEditTime(Date editTime) {
this.editTime = editTime;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}

View File

@@ -0,0 +1,67 @@
package com.nis.domain.basics;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.util.excel.ExcelField;
public class ScriberIdCommCfg extends BaseStringCfg<ScriberIdCommCfg>{
private static final long serialVersionUID = 5117517145731135023L;
private static final String tableName="scriberid_comm_cfg";
@ExcelField(title="key_word",sort=3)
protected String cfgKeywords;
protected Integer isHexbin;
protected String ratelimit;
@ExcelField(title="group_name",sort=2)
protected String groupName;//公共组名称
@ExcelField(title="expression_type",dictType="EXPRESSION_TYPE",sort=18)
protected Integer exprType;
@ExcelField(title="match_method",dictType="MATCH_METHOD",sort=20)
protected Integer matchMethod;
public String getCfgKeywords() {
return cfgKeywords;
}
public void setCfgKeywords(String cfgKeywords) {
this.cfgKeywords = cfgKeywords;
}
public Integer getIsHexbin() {
return isHexbin;
}
public void setIsHexbin(Integer isHexbin) {
this.isHexbin = isHexbin;
}
public String getRatelimit() {
return ratelimit;
}
public void setRatelimit(String ratelimit) {
this.ratelimit = ratelimit;
}
public static String getTablename() {
return tableName;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Integer getMatchMethod() {
return matchMethod;
}
public void setMatchMethod(Integer matchMethod) {
this.matchMethod = matchMethod;
}
public Integer getExprType() {
return exprType;
}
public void setExprType(Integer exprType) {
this.exprType = exprType;
}
}

View File

@@ -0,0 +1,66 @@
package com.nis.domain.basics;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.util.excel.ExcelField;
public class UrlCommCfg extends BaseStringCfg<UrlCommCfg>{
private static final long serialVersionUID = 398247881810945300L;
private static final String tableName="url_comm_cfg";
@ExcelField(title="key_word",sort=3)
protected String cfgKeywords;//url关键字配置
protected Integer isHexbin;//是否大小写敏感
protected String ratelimit;//限速比例,0到1之间
@ExcelField(title="group_name",sort=2)
protected String groupName;//公共组名称
@ExcelField(title="expression_type",dictType="EXPRESSION_TYPE",sort=18)
protected Integer exprType;
@ExcelField(title="match_method",dictType="MATCH_METHOD",sort=20)
protected Integer matchMethod;
public String getCfgKeywords() {
return cfgKeywords;
}
public void setCfgKeywords(String cfgKeywords) {
this.cfgKeywords = cfgKeywords;
}
public Integer getIsHexbin() {
return isHexbin;
}
public void setIsHexbin(Integer isHexbin) {
this.isHexbin = isHexbin;
}
public String getRatelimit() {
return ratelimit;
}
public void setRatelimit(String ratelimit) {
this.ratelimit = ratelimit;
}
public static String getTablename() {
return tableName;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Integer getMatchMethod() {
return matchMethod;
}
public void setMatchMethod(Integer matchMethod) {
this.matchMethod = matchMethod;
}
public Integer getExprType() {
return exprType;
}
public void setExprType(Integer exprType) {
this.exprType = exprType;
}
}

View File

@@ -0,0 +1,54 @@
package com.nis.domain.callback;
import com.nis.domain.configuration.BaseCfg;
import com.nis.util.excel.ExcelField;
/**
* http代理劫持文件
* @author lenovo
*
*/
public class ProxyFileHijackCfg extends BaseCfg<ProxyFileHijackCfg>{
private static final long serialVersionUID = -4600604393808056286L;
public String indexTable = "pxy_profile_hijack_files";//对应表名
@ExcelField(title="profile_name",sort=1)
private String profileName;//名称,辅助记忆
@ExcelField(title="content_type",sort=3)
private String contentType;//填充HTTP content-type如“video/mp4” exe、apk
@ExcelField(title="hijack_file_strategy",sort=2)
private String path;//储存路径
@ExcelField(title="content_name",sort=4)
private String contentName;//内容格式
public String getContentName() {
return contentName;
}
public void setContentName(String contentName) {
this.contentName = contentName;
}
public String getIndexTable() {
return indexTable;
}
public void setIndexTable(String indexTable) {
this.indexTable = indexTable;
}
public String getProfileName() {
return profileName;
}
public void setProfileName(String profileName) {
this.profileName = profileName;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}

View File

@@ -0,0 +1,114 @@
package com.nis.domain.callback;
import java.util.Date;
import com.google.gson.annotations.Expose;
public class ProxyFileHijackCfgAudit {
@Expose
private Long id; //compileId
@Expose
private Integer cfgId; //compileId
@Expose
private Integer profileId;//compileId
@Expose
private Integer action;
@Expose
private Integer service;
@Expose
private Integer isValid;
@Expose
private Date opTime;
@Expose
private String profileName;
@Expose
private String contentType;
@Expose
private String path;
@Expose
private String contentName;
@Expose
private Long opUser;
public Long getOpUser() {
return opUser;
}
public void setOpUser(Long opUser) {
this.opUser = opUser;
}
public String getContentName() {
return contentName;
}
public void setContentName(String contentName) {
this.contentName = contentName;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public Long getId() {
return id;
}
public Integer getProfileId() {
return profileId;
}
public void setProfileId(Integer profileId) {
this.profileId = profileId;
}
public void setId(Long id) {
this.id = id;
}
public Integer getCfgId() {
return cfgId;
}
public void setCfgId(Integer cfgId) {
this.cfgId = cfgId;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public Integer getService() {
return service;
}
public void setService(Integer service) {
this.service = service;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public Date getOpTime() {
return opTime;
}
public void setOpTime(Date opTime) {
this.opTime = opTime;
}
public String getProfileName() {
return profileName;
}
public void setProfileName(String profileName) {
this.profileName = profileName;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
}

View File

@@ -0,0 +1,40 @@
package com.nis.domain.callback;
import com.nis.domain.configuration.BaseCfg;
import com.nis.util.excel.ExcelField;
public class ProxyFileInsertScriptCfg extends BaseCfg<ProxyFileInsertScriptCfg>{
private static final long serialVersionUID = 4705202662940705064L;
public String indexTable = "pxy_profile_insert_scripts";//对应表名
@ExcelField(title="script_name",sort=1)
private String cfgDesc;//名称,辅助记忆
@ExcelField(title="script_format",sort=3)
private String format;//css/js
@ExcelField(title="script_file",sort=2)
private String path;//储存路径
public String getIndexTable() {
return indexTable;
}
public void setIndexTable(String indexTable) {
this.indexTable = indexTable;
}
public String getCfgDesc() {
return cfgDesc;
}
public void setCfgDesc(String cfgDesc) {
this.cfgDesc = cfgDesc;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}

View File

@@ -0,0 +1,99 @@
package com.nis.domain.callback;
import java.util.Date;
import com.google.gson.annotations.Expose;
public class ProxyFileInsertScriptCfgAudit {
@Expose
private Long id; //compileId
@Expose
private Integer cfgId; //compileId
@Expose
private Integer profileId;//compileId
@Expose
private Integer action;
@Expose
private Integer service;
@Expose
private Integer isValid;
@Expose
private Date opTime;
@Expose
private String profileName;
@Expose
private String format;
@Expose
private String path;
@Expose
private Long opUser;
public Long getOpUser() {
return opUser;
}
public void setOpUser(Long opUser) {
this.opUser = opUser;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getCfgId() {
return cfgId;
}
public void setCfgId(Integer cfgId) {
this.cfgId = cfgId;
}
public Integer getProfileId() {
return profileId;
}
public void setProfileId(Integer profileId) {
this.profileId = profileId;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public Integer getService() {
return service;
}
public void setService(Integer service) {
this.service = service;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public Date getOpTime() {
return opTime;
}
public void setOpTime(Date opTime) {
this.opTime = opTime;
}
public String getProfileName() {
return profileName;
}
public void setProfileName(String profileName) {
this.profileName = profileName;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}

View File

@@ -0,0 +1,67 @@
package com.nis.domain.callback;
import com.nis.domain.configuration.BaseCfg;
import com.nis.util.excel.ExcelField;
/**
* http代理文件策略
* @author nanfang
*
*/
public class ProxyFileResponsePageCfg extends BaseCfg<ProxyFileResponsePageCfg> {
private static final long serialVersionUID = -1989406217948847813L;
public final static String TABLE_NAME = "pxy_profile_response_pages";//对应表名
private String indexTable = "pxy_profile_response_pages";
@ExcelField(title="file_desc",sort=1)
private String fileDesc;//文件描述
@ExcelField(title="response_file",sort=2)
private String url;//文件保存的url
@ExcelField(title="format",sort=3)
private String contentType;//内容类型如text/html取字典表contentType
private String md5;//文件md5值
private Long contentLength;//文件长度
public String getIndexTable() {
return indexTable;
}
public void setIndexTable(String indexTable) {
this.indexTable = indexTable;
}
public ProxyFileResponsePageCfg() {
super();
}
public String getFileDesc() {
return fileDesc;
}
public void setFileDesc(String fileDesc) {
this.fileDesc = fileDesc;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public Long getContentLength() {
return contentLength;
}
public void setContentLength(Long contentLength) {
this.contentLength = contentLength;
}
public String getMd5() {
return md5;
}
public void setMd5(String md5) {
this.md5 = md5;
}
}

View File

@@ -0,0 +1,106 @@
package com.nis.domain.callback;
import java.util.Date;
import com.google.gson.annotations.Expose;
public class ProxyFileResponsePageCfgAudit {
@Expose
private Long id; //compileId
@Expose
private Integer cfgId; //compileId
@Expose
private Integer action;
@Expose
private Integer service;
@Expose
private Integer isValid;
@Expose
private Date opTime;
@Expose
private String format;
@Expose
private Long contentLength;
@Expose
private String path;
@Expose
private Long profileId;
@Expose
private String profileName;
@Expose
private Long opUser;
public Long getOpUser() {
return opUser;
}
public void setOpUser(Long opUser) {
this.opUser = opUser;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getCfgId() {
return cfgId;
}
public void setCfgId(Integer cfgId) {
this.cfgId = cfgId;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public Integer getService() {
return service;
}
public void setService(Integer service) {
this.service = service;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public Date getOpTime() {
return opTime;
}
public void setOpTime(Date opTime) {
this.opTime = opTime;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
public Long getContentLength() {
return contentLength;
}
public void setContentLength(Long contentLength) {
this.contentLength = contentLength;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public Long getProfileId() {
return profileId;
}
public void setProfileId(Long profileId) {
this.profileId = profileId;
}
public String getProfileName() {
return profileName;
}
public void setProfileName(String profileName) {
this.profileName = profileName;
}
}

View File

@@ -9,12 +9,21 @@ import com.nis.domain.configuration.BaseCfg;
public class ProxyFileStrategyCfg extends BaseCfg<ProxyFileStrategyCfg> {
private static final long serialVersionUID = 4283944377949702481L;
public final static String TABLE_NAME = "PROXY_FILE_STRATEGY_CFG";//对应表名
private String indexTable = "proxy_file_strategy_cfg";
private String fileDesc;//文件描述
private String url;//文件保存的url
private String contentType;//内容类型如text/html取字典表contentType
private String md5;//文件md5值
private Long contentLength;//文件长度
public String getIndexTable() {
return indexTable;
}
public void setIndexTable(String indexTable) {
this.indexTable = indexTable;
}
public ProxyFileStrategyCfg() {
super();
}

View File

@@ -0,0 +1,106 @@
package com.nis.domain.callback;
import java.util.Date;
import com.google.gson.annotations.Expose;
public class ProxyFileStrategyCfgAudit {
@Expose
private Long id; //compileId
@Expose
private Integer cfgId; //compileId
@Expose
private Integer action;
@Expose
private Integer service;
@Expose
private Integer isValid;
@Expose
private Date opTime;
@Expose
private String contentType;
@Expose
private Long contentLength;
@Expose
private String filePath;
@Expose
private Long fileId;
@Expose
private String fileDesc;
@Expose
private Long opUser;
public Long getOpUser() {
return opUser;
}
public void setOpUser(Long opUser) {
this.opUser = opUser;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getCfgId() {
return cfgId;
}
public void setCfgId(Integer cfgId) {
this.cfgId = cfgId;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public Integer getService() {
return service;
}
public void setService(Integer service) {
this.service = service;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public Date getOpTime() {
return opTime;
}
public void setOpTime(Date opTime) {
this.opTime = opTime;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public Long getContentLength() {
return contentLength;
}
public void setContentLength(Long contentLength) {
this.contentLength = contentLength;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public Long getFileId() {
return fileId;
}
public void setFileId(Long fileId) {
this.fileId = fileId;
}
public String getFileDesc() {
return fileDesc;
}
public void setFileDesc(String fileDesc) {
this.fileDesc = fileDesc;
}
}

View File

@@ -0,0 +1,45 @@
package com.nis.domain.callback;
import java.util.Arrays;
import com.nis.domain.configuration.BaseCfg;
import com.nis.util.excel.ExcelField;
import antlr.collections.List;
public class ProxyFileTrafficMirrorCfg extends BaseCfg<ProxyFileTrafficMirrorCfg>{
private static final long serialVersionUID = -5895958073449509268L;
public String indexTable = "pxy_profile_traffic_mirror";//对应表名
@ExcelField(title="address_name",sort=1)
private String cfgDesc;//名称,辅助记忆
@ExcelField(title="mirror_addr_list",sort=3)
private String addrList;//目标表示列表
@ExcelField(title="mirror_addr_type",sort=2)
private String addrType;//目标表示类型
public String getIndexTable() {
return indexTable;
}
public void setIndexTable(String indexTable) {
this.indexTable = indexTable;
}
public String getCfgDesc() {
return cfgDesc;
}
public void setCfgDesc(String cfgDesc) {
this.cfgDesc = cfgDesc;
}
public String getAddrList() {
return addrList;
}
public void setAddrList(String addrList) {
this.addrList = addrList;
}
public String getAddrType() {
return addrType;
}
public void setAddrType(String addrType) {
this.addrType = addrType;
}
}

View File

@@ -0,0 +1,106 @@
package com.nis.domain.callback;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.google.gson.annotations.Expose;
public class ProxyFileTrafficMirrorCfgAudit {
@Expose
private Long id; //compileId
@Expose
private Integer cfgId; //compileId
@Expose
private Integer profileId;//compileId
@Expose
private Integer action;
@Expose
private Integer service;
@Expose
private Integer isValid;
@Expose
private Date opTime;
@Expose
private String profileName;
@Expose
private String addrList;
@Expose
private String addrContent;
@Expose
private String addrType;
@Expose
private Long opUser;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getCfgId() {
return cfgId;
}
public void setCfgId(Integer cfgId) {
this.cfgId = cfgId;
}
public Integer getProfileId() {
return profileId;
}
public void setProfileId(Integer profileId) {
this.profileId = profileId;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public Integer getService() {
return service;
}
public void setService(Integer service) {
this.service = service;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public Date getOpTime() {
return opTime;
}
public void setOpTime(Date opTime) {
this.opTime = opTime;
}
public String getProfileName() {
return profileName;
}
public void setProfileName(String profileName) {
this.profileName = profileName;
}
public String getAddrList() {
return addrList;
}
public void setAddrList(String addrList) {
this.addrList = addrList;
}
public String getAddrContent() {
return addrContent;
}
public void setAddrContent(String addrContent) {
this.addrContent = addrContent;
}
public String getAddrType() {
return addrType;
}
public void setAddrType(String addrType) {
this.addrType = addrType;
}
public Long getOpUser() {
return opUser;
}
public void setOpUser(Long opUser) {
this.opUser = opUser;
}
}

View File

@@ -26,7 +26,7 @@ public class ProxyObjKeyring {
private String privateKeyFile;
@Expose
private String publicKeyFile;
@Expose
//@Expose
private Integer expireAfter;
@Expose
private String publicKeyAlgo;

View File

@@ -1,8 +1,6 @@
package com.nis.domain.configuration;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.nis.util.excel.ExcelField;
@@ -34,11 +32,13 @@ public class AppIpCfg extends BaseCfg<AppIpCfg> {
@ExcelField(title="ip_type",dictType="IP_TYPE",sort=3)
@SerializedName("ipType")
protected Integer ipType;
protected Integer ipPattern;
protected Integer srcIpPattern;
protected Integer destIpPattern;
protected String srcIpAddress;
@ExcelField(title="server_ip",sort=4)
protected String destIpAddress;
protected Integer portPattern;
protected Integer srcPortPattern;
protected Integer destPortPattern;
protected String srcPort;
@ExcelField(title="server_port",sort=5)
protected String destPort;
@@ -121,34 +121,7 @@ public class AppIpCfg extends BaseCfg<AppIpCfg> {
// this.protocolId = protocolId;
// }
/**
* ipPattern
* @return ipPattern
*/
public Integer getIpPattern() {
return ipPattern;
}
/**
* @param ipPattern the ipPattern to set
*/
public void setIpPattern(Integer ipPattern) {
this.ipPattern = ipPattern;
}
/**
* portPattern
* @return portPattern
*/
public Integer getPortPattern() {
return portPattern;
}
/**
* @param portPattern the portPattern to set
*/
public void setPortPattern(Integer portPattern) {
this.portPattern = portPattern;
}
/**
* srcIpAddress
@@ -158,6 +131,30 @@ public class AppIpCfg extends BaseCfg<AppIpCfg> {
public String getSrcIpAddress() {
return srcIpAddress;
}
public Integer getSrcIpPattern() {
return srcIpPattern;
}
public void setSrcIpPattern(Integer srcIpPattern) {
this.srcIpPattern = srcIpPattern;
}
public Integer getDestIpPattern() {
return destIpPattern;
}
public void setDestIpPattern(Integer destIpPattern) {
this.destIpPattern = destIpPattern;
}
public Integer getSrcPortPattern() {
return srcPortPattern;
}
public void setSrcPortPattern(Integer srcPortPattern) {
this.srcPortPattern = srcPortPattern;
}
public Integer getDestPortPattern() {
return destPortPattern;
}
public void setDestPortPattern(Integer destPortPattern) {
this.destPortPattern = destPortPattern;
}
/**
* @param srcIpAddress the srcIpAddress to set
*/
@@ -257,16 +254,10 @@ public class AppIpCfg extends BaseCfg<AppIpCfg> {
public String toString() {
return "AppIpCfg [compileId=" + compileId + ", ratelimit=" + ratelimit + ", appCode=" + appCode + ", behavCode="
+ behavCode + ", specServiceId=" + specServiceId + ", appName=" + appName + ", ipType=" + ipType
+ ", ipPattern=" + ipPattern + ", srcIpAddress=" + srcIpAddress + ", destIpAddress=" + destIpAddress
+ ", portPattern=" + portPattern + ", srcPort=" + srcPort + ", destPort=" + destPort + ", direction="
+ direction + ", protocol=" + protocol + ", userRegion1=" + userRegion1 + ", userRegion2=" + userRegion2
+ ", userRegion3=" + userRegion3 + ", userRegion4=" + userRegion4 + ", userRegion5=" + userRegion5
+ ", cfgId=" + cfgId + ", cfgDesc=" + cfgDesc + ", action=" + action + ", isValid=" + isValid
+ ", isAudit=" + isAudit + ", creatorId=" + creatorId + ", createTime=" + createTime + ", editorId="
+ editorId + ", editTime=" + editTime + ", auditorId=" + auditorId + ", auditTime=" + auditTime
+ ", serviceId=" + serviceId + ", requestId=" + requestId + ", cancelRequestId=" + cancelRequestId
+ ", isAreaEffective=" + isAreaEffective + ", classify=" + classify + ", attribute=" + attribute
+ ", lable=" + lable + ", areaEffectiveIds=" + areaEffectiveIds + ", cfgRegionCode=" + cfgRegionCode
+ ", cfgType=" + cfgType + ", functionId=" + functionId + ", doLog=" + doLog + "]";
+ ", srcIpPattern=" + srcIpPattern + ", destIpPattern=" + destIpPattern + ", srcIpAddress="
+ srcIpAddress + ", destIpAddress=" + destIpAddress + ", srcPortPattern=" + srcPortPattern
+ ", destPortPattern=" + destPortPattern + ", srcPort=" + srcPort + ", destPort=" + destPort
+ ", direction=" + direction + ", protocol=" + protocol + "]";
}
}

View File

@@ -59,7 +59,8 @@ public class AreaIpCfg extends BaseIpCfg {
this.cfgType=Constants.AREA_REGION;
this.cfgRegionCode=1;
this.protocol=0;
this.portPattern=1;
this.srcPortPattern=1;
this.destPortPattern=1;
this.srcPort="0";
this.destPort="0";
this.direction=0;

View File

@@ -39,6 +39,8 @@ public class AsnKeywordCfg extends BaseStringCfg<AsnKeywordCfg>{
this.matchMethod=3;
this.isHexbin=0;
}
@ExcelField(title="organization",sort=3)
protected String userRegion4;
public static String getTablename() {
return tableName;

View File

@@ -9,8 +9,18 @@ package com.nis.domain.configuration;
* @version V1.0
*/
public class AvVoipAccountCfg extends BaseStringCfg<AvVoipAccountCfg>{
private static final String tableName="av_voip_account_cfg";
private static final long serialVersionUID = -7398698517584394431L;
@Override
public void initDefaultValue() {
super.initDefaultValue();
this.exprType=0;
this.matchMethod=0;
}
public static String getTablename() {
return tableName;
}
}

View File

@@ -61,6 +61,13 @@ public class BaseCfg<T> extends BaseEntity<T> implements Cloneable{
protected Integer compileIsIssued;
protected String exType;//导出类型
protected String hColumns;//导出隐藏列
protected String compileIdNew;// 查询 配置ID 范围
//批量操作时记录isAudit和isValid检索条件
protected String batchAuditValue;
protected String batchValidValue;
/**
* 定时任务信息
*/
@@ -69,17 +76,29 @@ public class BaseCfg<T> extends BaseEntity<T> implements Cloneable{
* 定时任务信息2019年1月18日18:54:53 修改
*/
protected ScheduleCfg schedule;
protected String commonGroupIds; //公共组织id(考虑一个compile存在多个asn组织的情况)
protected Integer groupType; //url组以及dns组相关功能使用
protected Integer udFlag; //url组以及dns组相关功能使用 过滤数据库数据标记
private String commonGroupIds; //公共组织id(考虑一个compile存在多个asn组织的情况)
public String getCommonGroupIds() {
return commonGroupIds;
}
public void setCommonGroupIds(String commonGroupIds) {
this.commonGroupIds = commonGroupIds;
}
public Integer getGroupType() {
return groupType;
}
public void setGroupType(Integer groupType) {
this.groupType = groupType;
}
public Integer getUdFlag() {
return udFlag;
}
public void setUdFlag(Integer udFlag) {
this.udFlag = udFlag;
}
public String getExType() {
return exType;
@@ -107,7 +126,13 @@ public class BaseCfg<T> extends BaseEntity<T> implements Cloneable{
public void setCompileGroupMap(Map<Integer, Integer> compileGroupMap) {
this.compileGroupMap = compileGroupMap;
}
public String getCompileIdNew() {
return compileIdNew;
}
public void setCompileIdNew(String compileIdNew) {
this.compileIdNew = compileIdNew;
}
/**
* 编译id
*/
@@ -995,6 +1020,17 @@ public class BaseCfg<T> extends BaseEntity<T> implements Cloneable{
public void setSchedule(ScheduleCfg schedule) {
this.schedule = schedule;
}
public String getBatchAuditValue() {
return batchAuditValue;
}
public String getBatchValidValue() {
return batchValidValue;
}
public void setBatchAuditValue(String batchAuditValue) {
this.batchAuditValue = batchAuditValue;
}
public void setBatchValidValue(String batchValidValue) {
this.batchValidValue = batchValidValue;
}
}

View File

@@ -9,6 +9,7 @@
package com.nis.domain.configuration;
import java.util.List;
import java.util.Map;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@@ -45,14 +46,18 @@ public class BaseIpCfg extends BaseCfg<BaseIpCfg> {
@SerializedName("ipType")
@ExcelField(title="ip_type",dictType="IP_TYPE",sort=50)
protected Integer ipType;
@ExcelField(title="ip_pattern",dictType="IP_PATTERN",sort=51)
protected Integer ipPattern;
@ExcelField(title="client_ip",sort=53)
@ExcelField(title="src_ip_pattern",dictType="IP_PATTERN",sort=51)
protected Integer srcIpPattern;
@ExcelField(title="client_ip",sort=52)
protected String srcIpAddress;
@ExcelField(title="server_ip",sort=52)
@ExcelField(title="dest_ip_pattern",dictType="IP_PATTERN",sort=53)
protected Integer destIpPattern;
@ExcelField(title="server_ip",sort=54)
protected String destIpAddress;
@ExcelField(title="port_pattern",dictType="PORT_PATTERN",sort=54)
protected Integer portPattern;
@ExcelField(title="src_port_pattern",dictType="PORT_PATTERN",sort=54)
protected Integer srcPortPattern;
@ExcelField(title="dest_port_pattern",dictType="PORT_PATTERN",sort=54)
protected Integer destPortPattern;
@ExcelField(title="client_port",sort=55)
protected String srcPort;
@ExcelField(title="server_port",sort=56)
@@ -269,35 +274,31 @@ public class BaseIpCfg extends BaseCfg<BaseIpCfg> {
this.protocolId = protocolId;
}
/**
* ipPattern
* @return ipPattern
*/
public Integer getIpPattern() {
return ipPattern;
public Integer getSrcIpPattern() {
return srcIpPattern;
}
/**
* @param ipPattern the ipPattern to set
*/
public void setIpPattern(Integer ipPattern) {
this.ipPattern = ipPattern;
public void setSrcIpPattern(Integer srcIpPattern) {
this.srcIpPattern = srcIpPattern;
}
/**
* portPattern
* @return portPattern
*/
public Integer getPortPattern() {
return portPattern;
public Integer getDestIpPattern() {
return destIpPattern;
}
/**
* @param portPattern the portPattern to set
*/
public void setPortPattern(Integer portPattern) {
this.portPattern = portPattern;
public void setDestIpPattern(Integer destIpPattern) {
this.destIpPattern = destIpPattern;
}
public Integer getSrcPortPattern() {
return srcPortPattern;
}
public void setSrcPortPattern(Integer srcPortPattern) {
this.srcPortPattern = srcPortPattern;
}
public Integer getDestPortPattern() {
return destPortPattern;
}
public void setDestPortPattern(Integer destPortPattern) {
this.destPortPattern = destPortPattern;
}
/**
* srcIpAddress
* @return srcIpAddress
@@ -399,4 +400,125 @@ public class BaseIpCfg extends BaseCfg<BaseIpCfg> {
public void setIndex(Integer index) {
this.index = index;
}
protected Integer keyring;
protected Integer evCert;
protected Integer certTransparency;
protected Integer clientCertReq;
protected Integer pinning;
protected Integer protocolErrors;
protected Integer cn;
protected Integer issuer;
protected Integer selfSigned;
protected Integer expiration;
protected String failMethod;
protected String min;
protected String max;
protected Integer mirrorClient;
protected Integer allowHttp2;
protected Integer enable;
protected Integer mirrorProfile;
public Integer getKeyring() {
return keyring;
}
public void setKeyring(Integer keyring) {
this.keyring = keyring;
}
public Integer getEvCert() {
return evCert;
}
public void setEvCert(Integer evCert) {
this.evCert = evCert;
}
public Integer getCertTransparency() {
return certTransparency;
}
public void setCertTransparency(Integer certTransparency) {
this.certTransparency = certTransparency;
}
public Integer getClientCertReq() {
return clientCertReq;
}
public void setClientCertReq(Integer clientCertReq) {
this.clientCertReq = clientCertReq;
}
public Integer getPinning() {
return pinning;
}
public void setPinning(Integer pinning) {
this.pinning = pinning;
}
public Integer getProtocolErrors() {
return protocolErrors;
}
public void setProtocolErrors(Integer protocolErrors) {
this.protocolErrors = protocolErrors;
}
public Integer getCn() {
return cn;
}
public void setCn(Integer cn) {
this.cn = cn;
}
public Integer getIssuer() {
return issuer;
}
public void setIssuer(Integer issuer) {
this.issuer = issuer;
}
public Integer getSelfSigned() {
return selfSigned;
}
public void setSelfSigned(Integer selfSigned) {
this.selfSigned = selfSigned;
}
public Integer getExpiration() {
return expiration;
}
public void setExpiration(Integer expiration) {
this.expiration = expiration;
}
public String getFailMethod() {
return failMethod;
}
public void setFailMethod(String failMethod) {
this.failMethod = failMethod;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public Integer getMirrorClient() {
return mirrorClient;
}
public void setMirrorClient(Integer mirrorClient) {
this.mirrorClient = mirrorClient;
}
public Integer getAllowHttp2() {
return allowHttp2;
}
public void setAllowHttp2(Integer allowHttp2) {
this.allowHttp2 = allowHttp2;
}
public Integer getEnable() {
return enable;
}
public void setEnable(Integer enable) {
this.enable = enable;
}
public Integer getMirrorProfile() {
return mirrorProfile;
}
public void setMirrorProfile(Integer mirrorProfile) {
this.mirrorProfile = mirrorProfile;
}
}

View File

@@ -45,7 +45,14 @@ public class BaseStringCfg<T> extends BaseCfg<T> {
protected Integer specServiceId;//仅用于copy属性使用
protected String domain;//仅用于copy属性使用
protected Integer dnsStrategyId;//仅用作复制属性使用
protected String groupName;
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Integer getDnsStrategyId() {
return dnsStrategyId;
}
@@ -282,5 +289,124 @@ public class BaseStringCfg<T> extends BaseCfg<T> {
public void setRegionId(Integer regionId) {
this.regionId = regionId;
}
protected Integer keyring;
protected Integer evCert;
protected Integer certTransparency;
protected Integer clientCertReq;
protected Integer pinning;
protected Integer protocolErrors;
protected Integer cn;
protected Integer issuer;
protected Integer selfSigned;
protected Integer expiration;
protected String failMethod;
protected String min;
protected String max;
protected Integer mirrorClient;
protected Integer allowHttp2;
protected Integer enable;
protected Integer mirrorProfile;
public Integer getKeyring() {
return keyring;
}
public void setKeyring(Integer keyring) {
this.keyring = keyring;
}
public Integer getEvCert() {
return evCert;
}
public void setEvCert(Integer evCert) {
this.evCert = evCert;
}
public Integer getCertTransparency() {
return certTransparency;
}
public void setCertTransparency(Integer certTransparency) {
this.certTransparency = certTransparency;
}
public Integer getClientCertReq() {
return clientCertReq;
}
public void setClientCertReq(Integer clientCertReq) {
this.clientCertReq = clientCertReq;
}
public Integer getPinning() {
return pinning;
}
public void setPinning(Integer pinning) {
this.pinning = pinning;
}
public Integer getProtocolErrors() {
return protocolErrors;
}
public void setProtocolErrors(Integer protocolErrors) {
this.protocolErrors = protocolErrors;
}
public Integer getCn() {
return cn;
}
public void setCn(Integer cn) {
this.cn = cn;
}
public Integer getIssuer() {
return issuer;
}
public void setIssuer(Integer issuer) {
this.issuer = issuer;
}
public Integer getSelfSigned() {
return selfSigned;
}
public void setSelfSigned(Integer selfSigned) {
this.selfSigned = selfSigned;
}
public Integer getExpiration() {
return expiration;
}
public void setExpiration(Integer expiration) {
this.expiration = expiration;
}
public String getFailMethod() {
return failMethod;
}
public void setFailMethod(String failMethod) {
this.failMethod = failMethod;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public Integer getMirrorClient() {
return mirrorClient;
}
public void setMirrorClient(Integer mirrorClient) {
this.mirrorClient = mirrorClient;
}
public Integer getAllowHttp2() {
return allowHttp2;
}
public void setAllowHttp2(Integer allowHttp2) {
this.allowHttp2 = allowHttp2;
}
public Integer getEnable() {
return enable;
}
public void setEnable(Integer enable) {
this.enable = enable;
}
public Integer getMirrorProfile() {
return mirrorProfile;
}
public void setMirrorProfile(Integer mirrorProfile) {
this.mirrorProfile = mirrorProfile;
}
}

View File

@@ -14,7 +14,11 @@ import java.util.Map;
import com.google.gson.annotations.Expose;
import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.basics.DomainCommCfg;
import com.nis.domain.basics.IpCommCfg;
import com.nis.domain.basics.IpReuseIpCfg;
import com.nis.domain.basics.ScriberIdCommCfg;
import com.nis.domain.basics.UrlCommCfg;
import com.nis.util.Constants;
import com.nis.util.excel.ExcelField;
@@ -88,8 +92,12 @@ public class CfgIndexInfo extends BaseCfg<CfgIndexInfo> {
private List<AsnKeywordCfg> asnKeywords;
@ExcelField(title="log_total",sort=42)
private Long totalLogs;
private List<UrlCommCfg> urlCommGroupList;
private List<IpCommCfg> ipCommGroupCfgList;
private List<DomainCommCfg> domainCommGroupList;
private List<ScriberIdCommCfg> scriberIdCommGroupList;
private String groupName;
/*private CachePolicyUserRegion cachePolicyUserRegion;//缓存策略用户自定义域参数
public static class CachePolicyUserRegion{
@@ -101,6 +109,18 @@ public class CfgIndexInfo extends BaseCfg<CfgIndexInfo> {
public String getOrganization() {
return organization;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public List<IpCommCfg> getIpCommGroupCfgList() {
return ipCommGroupCfgList;
}
public void setIpCommGroupCfgList(List<IpCommCfg> ipCommGroupCfgList) {
this.ipCommGroupCfgList = ipCommGroupCfgList;
}
public List<AsnKeywordCfg> getAsnKeywords() {
return asnKeywords;
}
@@ -411,4 +431,26 @@ public class CfgIndexInfo extends BaseCfg<CfgIndexInfo> {
public void setTotalLogs(Long totalLogs) {
this.totalLogs = totalLogs;
}
public List<UrlCommCfg> getUrlCommGroupList() {
return urlCommGroupList;
}
public void setUrlCommGroupList(List<UrlCommCfg> urlCommGroupList) {
this.urlCommGroupList = urlCommGroupList;
}
public List<DomainCommCfg> getDomainCommGroupList() {
return domainCommGroupList;
}
public void setDomainCommGroupList(List<DomainCommCfg> domainCommGroupList) {
this.domainCommGroupList = domainCommGroupList;
}
public List<ScriberIdCommCfg> getScriberIdCommGroupList() {
return scriberIdCommGroupList;
}
public void setScriberIdCommGroupList(List<ScriberIdCommCfg> scriberIdCommGroupList) {
this.scriberIdCommGroupList = scriberIdCommGroupList;
}
}

View File

@@ -0,0 +1,34 @@
package com.nis.domain.configuration;
import java.util.Date;
import com.nis.domain.BaseEntity;
import com.nis.util.excel.ExcelField;
public class HelpInfo extends BaseEntity<HelpInfo>{
private static final long serialVersionUID = 2451757008384840494L;
private String fileName;
private String fileComment;
private String backFileComment;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileComment() {
return fileComment;
}
public void setFileComment(String fileComment) {
this.fileComment = fileComment;
}
public String getBackFileComment() {
return backFileComment;
}
public void setBackFileComment(String backFileComment) {
this.backFileComment = backFileComment;
}
}

View File

@@ -0,0 +1,58 @@
package com.nis.domain.configuration;
import com.nis.util.excel.ExcelField;
public class ManipulatCfgExport extends CfgIndexInfo {
/**
*
*/
private static final long serialVersionUID = -842585769617969577L;
@ExcelField(title="block_type",dictType="SERVICE_ACTION",sort=2)
private String actionExport;
@ExcelField(title="method_export",dictType="SERVICE_ACTION",sort=3)
private String methodExport;
@ExcelField(title="response_code",sort=3)
private String responseCode;
@ExcelField(title="profile_info",sort=10)
private String profileInfo;
private Integer action;
public String getResponseCode() {
return responseCode;
}
public void setResponseCode(String responseCode) {
this.responseCode = responseCode;
}
public String getMethodExport() {
return methodExport;
}
public void setMethodExport(String methodExport) {
this.methodExport = methodExport;
}
public String getProfileInfo() {
return profileInfo;
}
public void setProfileInfo(String profileInfo) {
this.profileInfo = profileInfo;
}
public String getActionExport() {
return actionExport;
}
public void setActionExport(String actionExport) {
this.actionExport = actionExport;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
}

View File

@@ -0,0 +1,60 @@
package com.nis.domain.configuration;
import com.nis.util.excel.ExcelField;
public class ObjGroupCfg extends BaseCfg<ObjGroupCfg> {
@ExcelField(title="ip_group",sort=33)
private String ipGroup;
@ExcelField(title="url_group",sort=35)
private String urlGroup;
@ExcelField(title="subscribe_id_group",sort=34)
private String subscribeIdGroup;
@ExcelField(title="domain_group",sort=36)
private String domainGroup;
@ExcelField(title="block_type",sort=2)//这里没有使用公共方法处理直接将字典值set进去了不用使用dictType
protected String actionCode;
@ExcelField(title="protocol",sort=3)
protected String userRegion1;
public String getActionCode() {
return actionCode;
}
public void setActionCode(String actionCode) {
this.actionCode = actionCode;
}
public String getIpGroup() {
return ipGroup;
}
public void setIpGroup(String ipGroup) {
this.ipGroup = ipGroup;
}
public String getUrlGroup() {
return urlGroup;
}
public void setUrlGroup(String urlGroup) {
this.urlGroup = urlGroup;
}
public String getSubscribeIdGroup() {
return subscribeIdGroup;
}
public void setSubscribeIdGroup(String subscribeIdGroup) {
this.subscribeIdGroup = subscribeIdGroup;
}
public String getDomainGroup() {
return domainGroup;
}
public void setDomainGroup(String domainGroup) {
this.domainGroup = domainGroup;
}
protected Integer action;//覆盖默认的action上的注解
}

View File

@@ -0,0 +1,153 @@
package com.nis.domain.configuration;
import com.nis.util.excel.ExcelField;
public class PxyInterceptCfg extends CfgIndexInfo {
/**
*
*/
private static final long serialVersionUID = 994229066993318362L;
@ExcelField(title="pxy_intercept_monit_keyring",sort=8)
private String keyring;
@ExcelField(title="exclusions_ev_cert",dictType="SYS_YES_NO",sort=9)
private String evCert;
@ExcelField(title="exclusions_cert_transparency",dictType="SYS_YES_NO",sort=10)
private String certTransparency;
@ExcelField(title="exclusions_client_cert_req",dictType="SYS_YES_NO",sort=11)
private String clientCertReq;
@ExcelField(title="exclusions_pinning",dictType="SYS_YES_NO",sort=12)
private String pinning;
@ExcelField(title="exclusions_protocol_errors",dictType="SYS_YES_NO",sort=13)
private String protocolErrors;
@ExcelField(title="cert_verify_approach_cn",dictType="SYS_YES_NO",sort=14)
private String cn;
@ExcelField(title="cert_verify_approach_issuer",dictType="SYS_YES_NO",sort=15)
private String issuer;
@ExcelField(title="cert_verify_approach_self_signed",dictType="SYS_YES_NO",sort=16)
private String selfSigned;
@ExcelField(title="cert_verify_approach_expiration",dictType="SYS_YES_NO",sort=17)
private String expiration;
@ExcelField(title="cert_verify_fail_method",dictType="FAIL_METHOD",sort=18)
private String failMethod;
@ExcelField(title="ssl_ver_min",dictType="SSL_VERSION",sort=19)
private String min;
@ExcelField(title="ssl_ver_max",dictType="SSL_VERSION",sort=20)
private String max;
@ExcelField(title="ssl_ver_mirror_client",dictType="SYS_YES_NO",sort=21)
private String mirrorClient;
@ExcelField(title="ssl_ver_allow_http2",dictType="SYS_YES_NO",sort=22)
private String allowHttp2;
@ExcelField(title="decrypt_mirror_enable",dictType="SYS_YES_NO",sort=23)
private String enable;
@ExcelField(title="decrypt_mirror_mirror_profile",sort=24)
private String mirrorProfile;
private String userRegion1;
private String userRegion2;
private String userRegion3;
private String userRegion4;
// private String userRegion5;
public String getKeyring() {
return keyring;
}
public void setKeyring(String keyring) {
this.keyring = keyring;
}
public String getEvCert() {
return evCert;
}
public void setEvCert(String evCert) {
this.evCert = evCert;
}
public String getCertTransparency() {
return certTransparency;
}
public void setCertTransparency(String certTransparency) {
this.certTransparency = certTransparency;
}
public String getClientCertReq() {
return clientCertReq;
}
public void setClientCertReq(String clientCertReq) {
this.clientCertReq = clientCertReq;
}
public String getPinning() {
return pinning;
}
public void setPinning(String pinning) {
this.pinning = pinning;
}
public String getProtocolErrors() {
return protocolErrors;
}
public void setProtocolErrors(String protocolErrors) {
this.protocolErrors = protocolErrors;
}
public String getCn() {
return cn;
}
public void setCn(String cn) {
this.cn = cn;
}
public String getIssuer() {
return issuer;
}
public void setIssuer(String issuer) {
this.issuer = issuer;
}
public String getSelfSigned() {
return selfSigned;
}
public void setSelfSigned(String selfSigned) {
this.selfSigned = selfSigned;
}
public String getExpiration() {
return expiration;
}
public void setExpiration(String expiration) {
this.expiration = expiration;
}
public String getFailMethod() {
return failMethod;
}
public void setFailMethod(String failMethod) {
this.failMethod = failMethod;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public String getMirrorClient() {
return mirrorClient;
}
public void setMirrorClient(String mirrorClient) {
this.mirrorClient = mirrorClient;
}
public String getAllowHttp2() {
return allowHttp2;
}
public void setAllowHttp2(String allowHttp2) {
this.allowHttp2 = allowHttp2;
}
public String getEnable() {
return enable;
}
public void setEnable(String enable) {
this.enable = enable;
}
public String getMirrorProfile() {
return mirrorProfile;
}
public void setMirrorProfile(String mirrorProfile) {
this.mirrorProfile = mirrorProfile;
}
}

View File

@@ -25,6 +25,7 @@ public class PxyObjKeyring extends BaseCfg<PxyObjKeyring> {
@ExcelField(title="expire_after",sort=5)
private Integer expireAfter;
private String publicKeyAlgo;
@ExcelField(title="CRL",sort=5)
private String crl;
@ExcelField(title="issuer",sort=6)
private String issuer;

View File

@@ -18,9 +18,18 @@ public class PxyObjTrustedCaCert extends BaseCfg<PxyObjTrustedCaCert> {
private String issuer; //颁发者
@ExcelField(title="certificate_file",sort=2)
private String certFile;
@ExcelField(title="crl_file",sort=4)
//@ExcelField(title="crl_file",sort=4)
private String crlFile;
private Integer builtIn;//是否内置证书
@ExcelField(title="built_in",sort=5)//是否内置证书(导出用)
private String builtInExp;
public String getBuiltInExp() {
return builtInExp;
}
public void setBuiltInExp(String builtInExp) {
this.builtInExp = builtInExp;
}
public String getCrlFile() {
return crlFile;
}
@@ -47,6 +56,11 @@ public class PxyObjTrustedCaCert extends BaseCfg<PxyObjTrustedCaCert> {
public void setIndexTable(String indexTable) {
this.indexTable = indexTable;
}
public Integer getBuiltIn() {
return builtIn;
}
public void setBuiltIn(Integer builtIn) {
this.builtIn = builtIn;
}
}

View File

@@ -13,7 +13,7 @@ public class AsnIpTemplate extends BasicTemplate{
* @since 1.0.0
*/
/*private String cfgDesc;*/
private String cfgDesc;
private String userRegion1;
private String destIpAddress;
private String organization;
@@ -21,12 +21,12 @@ public class AsnIpTemplate extends BasicTemplate{
private String detail;
// @ExcelField(title="config_describe",align=2,sort=1)
/*public String getCfgDesc() {
public String getCfgDesc() {
return cfgDesc;
}
public void setCfgDesc(String cfgDesc) {
this.cfgDesc = cfgDesc;
}*/
}
@ExcelField(title="asn_no",align=2,sort=11)
public String getUserRegion1() {
return userRegion1;
@@ -42,14 +42,14 @@ public class AsnIpTemplate extends BasicTemplate{
public void setDestIpAddress(String destIpAddress) {
this.destIpAddress = destIpAddress;
}
@ExcelField(title="organization",align=2,sort=1)
@ExcelField(title="asn_name",align=2,sort=1)
public String getOrganization() {
return organization;
}
public void setOrganization(String organization) {
this.organization = organization;
}
@ExcelField(title="country",align=2,sort=14)
@ExcelField(title="country_code",align=2,sort=14)
public String getCountry() {
return country;
}

View File

@@ -0,0 +1,23 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
/**
* 域名公共组配置 导入模板
* @author dell
*
*/
public class DomainCommCfgTemplate extends StringAllNotDoLogTemplate{
@ExcelField(title="group_name",align=2,sort=10)
private String groupName;
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}

View File

@@ -12,7 +12,7 @@ public class DomainInterceptMonitTemplate extends StringAllNotDoLogTemplate{
private String userRegion5;
private String cfgKeywords;
@ExcelField(title="intercept_intensity",dictType="INTERCEPT_DOMAIN_INTENSITY",align=2,sort=2)
@ExcelField(title="intercept_intensity",dictType="INTERCEPT_DOMAIN_INTENSITY",align=2,sort=12)
public String getUserRegion5() {
return userRegion5;
}

View File

@@ -0,0 +1,160 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
public class InterceptDomainTemplate extends StringAllNotDoLogTemplate {
private Integer keyring;
private Integer evCert;
private Integer certTransparency;
private Integer clientCertReq;
private Integer pinning;
private Integer protocolErrors;
private Integer cn;
private Integer issuer;
private Integer selfSigned;
private Integer expiration;
private String failMethod;
private String min;
private String max;
private Integer mirrorClient;
private Integer allowHttp2;
private Integer enable;
private Integer mirrorProfile;
@ExcelField(title="pxy_intercept_monit_keyring",align=2,sort=17)
public Integer getKeyring() {
return keyring;
}
public void setKeyring(Integer keyring) {
this.keyring = keyring;
}
@ExcelField(title="exclusions_ev_cert",align=2,sort=18)
public Integer getEvCert() {
return evCert;
}
public void setEvCert(Integer evCert) {
this.evCert = evCert;
}
@ExcelField(title="exclusions_cert_transparency",align=2,sort=19)
public Integer getCertTransparency() {
return certTransparency;
}
public void setCertTransparency(Integer certTransparency) {
this.certTransparency = certTransparency;
}
@ExcelField(title="exclusions_client_cert_req",align=2,sort=20)
public Integer getClientCertReq() {
return clientCertReq;
}
public void setClientCertReq(Integer clientCertReq) {
this.clientCertReq = clientCertReq;
}
@ExcelField(title="exclusions_pinning",align=2,sort=21)
public Integer getPinning() {
return pinning;
}
public void setPinning(Integer pinning) {
this.pinning = pinning;
}
@ExcelField(title="protocol_errors",align=2,sort=22)
public Integer getProtocolErrors() {
return protocolErrors;
}
public void setProtocolErrors(Integer protocolErrors) {
this.protocolErrors = protocolErrors;
}
@ExcelField(title="cert_verify_approach_cn",align=2,sort=23)
public Integer getCn() {
return cn;
}
public void setCn(Integer cn) {
this.cn = cn;
}
@ExcelField(title="cert_verify_approach_issuer",align=2,sort=24)
public Integer getIssuer() {
return issuer;
}
public void setIssuer(Integer issuer) {
this.issuer = issuer;
}
@ExcelField(title="cert_verify_approach_self_signed",align=2,sort=25)
public Integer getSelfSigned() {
return selfSigned;
}
public void setSelfSigned(Integer selfSigned) {
this.selfSigned = selfSigned;
}
@ExcelField(title="cert_verify_approach_expiration",align=2,sort=26)
public Integer getExpiration() {
return expiration;
}
public void setExpiration(Integer expiration) {
this.expiration = expiration;
}
@ExcelField(title="cert_verify_fail_method",dictType="FAIL_METHOD",align=2,sort=27)
public String getFailMethod() {
return failMethod;
}
public void setFailMethod(String failMethod) {
this.failMethod = failMethod;
}
@ExcelField(title="ssl_ver_min",dictType="SSL_VERSION",align=2,sort=28)
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
@ExcelField(title="ssl_ver_max",dictType="SSL_VERSION",align=2,sort=29)
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
@ExcelField(title="ssl_ver_mirror_client",align=2,sort=30)
public Integer getMirrorClient() {
return mirrorClient;
}
public void setMirrorClient(Integer mirrorClient) {
this.mirrorClient = mirrorClient;
}
@ExcelField(title="ssl_ver_allow_http2",align=2,sort=31)
public Integer getAllowHttp2() {
return allowHttp2;
}
public void setAllowHttp2(Integer allowHttp2) {
this.allowHttp2 = allowHttp2;
}
@ExcelField(title="decrypt_mirror_enable",align=2,sort=32)
public Integer getEnable() {
return enable;
}
public void setEnable(Integer enable) {
this.enable = enable;
}
@ExcelField(title="decrypt_mirror_mirror_profile",align=2,sort=33)
public Integer getMirrorProfile() {
return mirrorProfile;
}
public void setMirrorProfile(Integer mirrorProfile) {
this.mirrorProfile = mirrorProfile;
}
}

View File

@@ -0,0 +1,161 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
public class InterceptIpTemplate extends IpAllNotDoLogTemplate {
private Integer keyring;
private Integer evCert;
private Integer certTransparency;
private Integer clientCertReq;
private Integer pinning;
private Integer protocolErrors;
private Integer cn;
private Integer issuer;
private Integer selfSigned;
private Integer expiration;
private String failMethod;
private String min;
private String max;
private Integer mirrorClient;
private Integer allowHttp2;
private Integer enable;
private Integer mirrorProfile;
@ExcelField(title="pxy_intercept_monit_keyring",align=2,sort=17)
public Integer getKeyring() {
return keyring;
}
public void setKeyring(Integer keyring) {
this.keyring = keyring;
}
@ExcelField(title="exclusions_ev_cert",align=2,sort=18)
public Integer getEvCert() {
return evCert;
}
public void setEvCert(Integer evCert) {
this.evCert = evCert;
}
@ExcelField(title="exclusions_cert_transparency",align=2,sort=19)
public Integer getCertTransparency() {
return certTransparency;
}
public void setCertTransparency(Integer certTransparency) {
this.certTransparency = certTransparency;
}
@ExcelField(title="exclusions_client_cert_req",align=2,sort=20)
public Integer getClientCertReq() {
return clientCertReq;
}
public void setClientCertReq(Integer clientCertReq) {
this.clientCertReq = clientCertReq;
}
@ExcelField(title="exclusions_pinning",align=2,sort=21)
public Integer getPinning() {
return pinning;
}
public void setPinning(Integer pinning) {
this.pinning = pinning;
}
@ExcelField(title="exclusions_protocol_errors",align=2,sort=22)
public Integer getProtocolErrors() {
return protocolErrors;
}
public void setProtocolErrors(Integer protocolErrors) {
this.protocolErrors = protocolErrors;
}
@ExcelField(title="cert_verify_approach_cn",align=2,sort=23)
public Integer getCn() {
return cn;
}
public void setCn(Integer cn) {
this.cn = cn;
}
@ExcelField(title="cert_verify_approach_issuer",align=2,sort=24)
public Integer getIssuer() {
return issuer;
}
public void setIssuer(Integer issuer) {
this.issuer = issuer;
}
@ExcelField(title="cert_verify_approach_self_signed",align=2,sort=25)
public Integer getSelfSigned() {
return selfSigned;
}
public void setSelfSigned(Integer selfSigned) {
this.selfSigned = selfSigned;
}
@ExcelField(title="cert_verify_approach_expiration",align=2,sort=26)
public Integer getExpiration() {
return expiration;
}
public void setExpiration(Integer expiration) {
this.expiration = expiration;
}
@ExcelField(title="cert_verify_fail_method",dictType="FAIL_METHOD",align=2,sort=27)
public String getFailMethod() {
return failMethod;
}
public void setFailMethod(String failMethod) {
this.failMethod = failMethod;
}
@ExcelField(title="ssl_ver_min",dictType="SSL_VERSION",align=2,sort=28)
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
@ExcelField(title="ssl_ver_max",dictType="SSL_VERSION",align=2,sort=29)
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
@ExcelField(title="ssl_ver_mirror_client",align=2,sort=30)
public Integer getMirrorClient() {
return mirrorClient;
}
public void setMirrorClient(Integer mirrorClient) {
this.mirrorClient = mirrorClient;
}
@ExcelField(title="ssl_ver_allow_http2",align=2,sort=31)
public Integer getAllowHttp2() {
return allowHttp2;
}
public void setAllowHttp2(Integer allowHttp2) {
this.allowHttp2 = allowHttp2;
}
@ExcelField(title="decrypt_mirror_enable",align=2,sort=32)
public Integer getEnable() {
return enable;
}
public void setEnable(Integer enable) {
this.enable = enable;
}
@ExcelField(title="decrypt_mirror_mirror_profile",align=2,sort=33)
public Integer getMirrorProfile() {
return mirrorProfile;
}
public void setMirrorProfile(Integer mirrorProfile) {
this.mirrorProfile = mirrorProfile;
}
}

View File

@@ -1,31 +0,0 @@
package com.nis.domain.configuration.template;
/**
* wx 将部分字段的标题改变,或者不需要的字段隐藏
* 隐藏方法对于不需要的字段或者方法Override该字段方法但是@ExcelField注解不需要加上了
* @author dell
*
*/
@Deprecated
public class IpAddrTemplate extends IpCfgTemplate {
@Override
public Integer getIrType() {
// TODO Auto-generated method stub
return super.getIrType();
}
@Override
public Integer getDnsStrategyId() {
// TODO Auto-generated method stub
return super.getDnsStrategyId();
}
@Override
public String getRatelimit() {
// TODO Auto-generated method stub
return super.getRatelimit();
}
}

View File

@@ -15,13 +15,13 @@ public class IpAllNotDoLogTemplate extends BasicTemplate{
private String cfgDesc;
private String srcIpAddress;
private String destIpAddress;
private String srcPort;
private String destPort;
private Integer protocol;
private Integer direction;
protected String cfgDesc;
protected String srcIpAddress;
protected String destIpAddress;
protected String srcPort;
protected String destPort;
protected Integer protocol;
protected Integer direction;
@ExcelField(title="config_describe",align=2,sort=1)
public String getCfgDesc() {

View File

@@ -8,7 +8,6 @@
*/
package com.nis.domain.configuration.template;
import com.google.gson.JsonObject;
import com.nis.util.excel.ExcelField;
/**

View File

@@ -1,310 +0,0 @@
/**
*@Title: BaseStringConfig.java
*@Package com.nis.domain.restful
*@Description TODO
*@author dell
*@date 2018年2月5日 下午5:26:02
*@version 版本号
*/
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
/**
* @Description: excel导入IP类配置
*/
@Deprecated
public class IpCfgTemplate {
/**
* @Fields serialVersionUID:TODO用一句话描述这个变量表示什么
*
* @since 1.0.0
*/
private Long cfgId;
private Integer ipType;//1
private Integer ipPattern;//2
private String srcIpAddress; //3
private String destIpAddress; //4
private Integer portPattern; //5
private String srcPort; //6
private String destPort;//7
private Integer protocol;//8
protected Integer direction;//9
private String cfgDesc;//10
private Integer requestId;//11
private String requestName;//12
private Integer isAreaEffective;//13
private String classify;//14
private String attribute;//15
private String lable;//16
private String classifyName;//17
private String attributeName;//18
private String lableName;//19
private String areaEffectiveIds;//20
private String ratelimit;//21
private Integer dnsStrategyId;//22
private Integer irType;//23
private String userRegion1;//77
private String userRegion2;//78
private String userRegion3;//79
private String userRegion4;//80
private String userRegion5;//81
/**
* userRegion1
* @return userRegion1
*/
// @ExcelField(title="userregion1",align=2,sort=77)
public String getUserRegion1() {
return userRegion1;
}
/**
* @param userRegion1 the userRegion1 to set
*/
public void setUserRegion1(String userRegion1) {
this.userRegion1 = userRegion1;
}
/**
* userRegion2
* @return userRegion2
*/
// @ExcelField(title="userregion2",align=2,sort=78)
public String getUserRegion2() {
return userRegion2;
}
/**
* @param userRegion2 the userRegion2 to set
*/
public void setUserRegion2(String userRegion2) {
this.userRegion2 = userRegion2;
}
/**
* userRegion3
* @return userRegion3
*/
// @ExcelField(title="userregion3",align=2,sort=79)
public String getUserRegion3() {
return userRegion3;
}
/**
* @param userRegion3 the userRegion3 to set
*/
public void setUserRegion3(String userRegion3) {
this.userRegion3 = userRegion3;
}
/**
* userRegion4
* @return userRegion4
*/
// @ExcelField(title="userregion4",align=2,sort=80)
public String getUserRegion4() {
return userRegion4;
}
/**
* @param userRegion4 the userRegion4 to set
*/
public void setUserRegion4(String userRegion4) {
this.userRegion4 = userRegion4;
}
/**
* userRegion5
* @return userRegion5
*/
// @ExcelField(title="userregion5",align=2,sort=81)
public String getUserRegion5() {
return userRegion5;
}
/**
* @param userRegion5 the userRegion5 to set
*/
public void setUserRegion5(String userRegion5) {
this.userRegion5 = userRegion5;
}
/**
* ratelimit
* @return ratelimit
*/
@ExcelField(title="ratelimit",align=2,sort=74)
public String getRatelimit() {
return ratelimit;
}
/**
* @param ratelimit the ratelimit to set
*/
public void setRatelimit(String ratelimit) {
this.ratelimit = ratelimit;
}
/**
* irType
* @return irType
*/
@ExcelField(title="ir_type",align=2,sort=76)
public Integer getIrType() {
return irType;
}
/**
* @param irType the irType to set
*/
public void setIrType(Integer irType) {
this.irType = irType;
}
/**
* dnsStrategyId
* @return dnsStrategyId
*/
@ExcelField(title="dns_strategy_id",align=2,sort=75)
public Integer getDnsStrategyId() {
return dnsStrategyId;
}
/**
* @param dnsStrategyId the dnsStrategyId to set
*/
public void setDnsStrategyId(Integer dnsStrategyId) {
this.dnsStrategyId = dnsStrategyId;
}
@ExcelField(title="ip_type",align=2,sort=1)
public Integer getIpType() {
return ipType;
}
public void setIpType(Integer ipType) {
this.ipType = ipType;
}
@ExcelField(title="ip_pattern",align=2,sort=2)
public Integer getIpPattern() {
return ipPattern;
}
public void setIpPattern(Integer ipPattern) {
this.ipPattern = ipPattern;
}
@ExcelField(title="client_ip",align=2,sort=3)
public String getSrcIpAddress() {
return srcIpAddress;
}
public void setSrcIpAddress(String srcIpAddress) {
this.srcIpAddress = srcIpAddress;
}
@ExcelField(title="server_ip",align=2,sort=4)
public String getDestIpAddress() {
return destIpAddress;
}
public void setDestIpAddress(String destIpAddress) {
this.destIpAddress = destIpAddress;
}
@ExcelField(title="port_pattern",align=2,sort=5)
public Integer getPortPattern() {
return portPattern;
}
public void setPortPattern(Integer portPattern) {
this.portPattern = portPattern;
}
@ExcelField(title="client_port",align=2,sort=6)
public String getSrcPort() {
return srcPort;
}
public void setSrcPort(String srcPort) {
this.srcPort = srcPort;
}
@ExcelField(title="server_port",align=2,sort=7)
public String getDestPort() {
return destPort;
}
public void setDestPort(String destPort) {
this.destPort = destPort;
}
public Long getCfgId() {
return cfgId;
}
public void setCfgId(Long cfgId) {
this.cfgId = cfgId;
}
@ExcelField(title="direction",align=2,sort=8)
public Integer getDirection() {
return direction;
}
public void setDirection(Integer direction) {
this.direction = direction;
}
@ExcelField(title="config_describe",align=2,sort=11)
public String getCfgDesc() {
return cfgDesc;
}
public void setCfgDesc(String cfgDesc) {
this.cfgDesc = cfgDesc;
}
@ExcelField(title="letter",align=2,sort=13)
public Integer getRequestId() {
return requestId;
}
public void setRequestId(Integer requestId) {
this.requestId = requestId;
}
public String getRequestName() {
return requestName;
}
public void setRequestName(String requestName) {
this.requestName = requestName;
}
public Integer getIsAreaEffective() {
return isAreaEffective;
}
public void setIsAreaEffective(Integer isAreaEffective) {
this.isAreaEffective = isAreaEffective;
}
@ExcelField(title="classification",align=2,sort=71)
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
@ExcelField(title="attribute",align=2,sort=72)
public String getAttribute() {
return attribute;
}
public void setAttribute(String attribute) {
this.attribute = attribute;
}
@ExcelField(title="label",align=2,sort=73)
public String getLable() {
return lable;
}
public void setLable(String lable) {
this.lable = lable;
}
public String getClassifyName() {
return classifyName;
}
public void setClassifyName(String classifyName) {
this.classifyName = classifyName;
}
public String getAttributeName() {
return attributeName;
}
public void setAttributeName(String attributeName) {
this.attributeName = attributeName;
}
public String getLableName() {
return lableName;
}
public void setLableName(String lableName) {
this.lableName = lableName;
}
// @ExcelField(title="area_effective",align=2,sort=70)
public String getAreaEffectiveIds() {
return areaEffectiveIds;
}
public void setAreaEffectiveIds(String areaEffectiveIds) {
this.areaEffectiveIds = areaEffectiveIds;
}
@ExcelField(title="protocol",align=2,sort=9)
public Integer getProtocol() {
return protocol;
}
public void setProtocol(Integer protocol) {
this.protocol = protocol;
}
}

View File

@@ -0,0 +1,20 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
public class IpCommCfgTemplate extends IpAllNotDoLogTemplate{
@ExcelField(title="group_name",align=2,sort=10)
private String groupName;
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}

View File

@@ -1,47 +0,0 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
/**
* wx 将部分字段的标题改变,或者不需要的字段隐藏
* 隐藏方法对于不需要的字段或者方法Override该字段方法但是@ExcelField注解不需要加上了
* @author dell
*
*/
@Deprecated
public class IpMultiplexPolicyTemplate extends IpCfgTemplate {
@Override
@ExcelField(title="IP",align=2,sort=3)
public String getSrcIpAddress() {
return super.getSrcIpAddress();
}
@ExcelField(title="port",align=2,sort=6)
@Override
public String getSrcPort() {
// TODO Auto-generated method stub
return super.getSrcPort();
}
@Override
@ExcelField(title="group_name",align=2,sort=75)
public Integer getDnsStrategyId() {
// TODO Auto-generated method stub
return super.getDnsStrategyId();
}
@Override
public String getRatelimit() {
// TODO Auto-generated method stub
return super.getRatelimit();
}
@Override
public String getDestPort() {
// TODO Auto-generated method stub
return super.getDestPort();
}
@Override
public String getDestIpAddress() {
// TODO Auto-generated method stub
return super.getDestIpAddress();
}
}

View File

@@ -1,31 +0,0 @@
package com.nis.domain.configuration.template;
/**
* wx 将部分字段的标题改变,或者不需要的字段隐藏
* 隐藏方法对于不需要的字段或者方法Override该字段方法但是@ExcelField注解不需要加上了
* @author dell
*
*/
@Deprecated
public class IpsecTemplate extends IpCfgTemplate {
@Override
public Integer getIrType() {
// TODO Auto-generated method stub
return super.getIrType();
}
@Override
public Integer getDnsStrategyId() {
// TODO Auto-generated method stub
return super.getDnsStrategyId();
}
@Override
public String getRatelimit() {
// TODO Auto-generated method stub
return super.getRatelimit();
}
}

View File

@@ -10,7 +10,7 @@ public class P2pIpTemplate extends IpAllTemplate {
private String userRegion2;
@ExcelField(title="p2p_ip_config_type",dictType="P2P_IP_TYPE",align=2,sort=2)
@ExcelField(title="p2p_ip_config_type",dictType="P2P_IP_TYPE",align=2,sort=5)
public String getUserRegion2() {
return userRegion2;
}

View File

@@ -0,0 +1,23 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
/**
* 域名公共组配置 导入模板
* @author dell
*
*/
public class ScriberIdCommCfgTemplate extends StringAllNotDoLogTemplate{
@ExcelField(title="group_name",align=2,sort=10)
private String groupName;
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}

View File

@@ -1,37 +0,0 @@
package com.nis.domain.configuration.template;
/**
* wx 将部分字段的标题改变,或者不需要的字段隐藏
* 隐藏方法对于不需要的字段或者方法Override该字段方法但是@ExcelField注解不需要加上了
* @author dell
*
*/
@Deprecated
public class TunnelIpTemplate extends IpCfgTemplate {
@Override
public Integer getIrType() {
// TODO Auto-generated method stub
return super.getIrType();
}
@Override
public Integer getDnsStrategyId() {
// TODO Auto-generated method stub
return super.getDnsStrategyId();
}
@Override
public String getRatelimit() {
// TODO Auto-generated method stub
return super.getRatelimit();
}
@Override
public Integer getProtocol() {
// TODO Auto-generated method stub
return 0;
}
}

View File

@@ -0,0 +1,23 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
/**
* URL公共组配置 导入模板
* @author dell
*
*/
public class UrlCommCfgTemplate extends StringAllNotDoLogTemplate{
@ExcelField(title="group_name",align=2,sort=10)
private String groupName;
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}

View File

@@ -1,66 +0,0 @@
package com.nis.domain.configuration.template;
/**
* wx 将部分字段的标题改变,或者不需要的字段隐藏
* 隐藏方法对于不需要的字段或者方法Override该字段方法但是@ExcelField注解不需要加上了
* @author dell
*
*/
@Deprecated
public class WhiteListIpTemplate extends IpCfgTemplate {
@Override
public Integer getDirection() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Integer getProtocol() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Integer getIrType() {
// TODO Auto-generated method stub
return super.getIrType();
}
@Override
public Integer getDnsStrategyId() {
// TODO Auto-generated method stub
return super.getDnsStrategyId();
}
@Override
public Integer getRequestId() {
// TODO Auto-generated method stub
return super.getRequestId();
}
@Override
public String getClassify() {
// TODO Auto-generated method stub
return super.getClassify();
}
@Override
public String getAttribute() {
// TODO Auto-generated method stub
return super.getAttribute();
}
@Override
public String getLable() {
// TODO Auto-generated method stub
return super.getLable();
}
@Override
public String getRatelimit() {
// TODO Auto-generated method stub
return super.getRatelimit();
}
}

View File

@@ -0,0 +1,116 @@
package com.nis.domain.dashboard;
import com.nis.domain.report.BaseReport;
import com.nis.util.excel.ExcelField;
public class ConfigStatistic extends BaseReport<ConfigStatistic>{
private static final long serialVersionUID = 8905927100915123026L;
@ExcelField(title="cfg_id",sort=1)
private String cfgId;
@ExcelField(title="config_describe",sort=2)
private String cfgDesc;
private String serviceId;
private String tableName;//表名
private String beginDate;
private String endDate;
private String area;//区域
private String operator;//运营商
private String chartType;//图表类型
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.beginDate = beginDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getCfgId() {
return cfgId;
}
public void setCfgId(String cfgId) {
this.cfgId = cfgId;
}
public String getCfgDesc() {
return cfgDesc;
}
public void setCfgDesc(String cfgDesc) {
this.cfgDesc = cfgDesc;
}
public String getServiceId() {
return serviceId;
}
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Long getSum() {
return sum;
}
public void setSum(Long sum) {
this.sum = sum;
}
public Integer getService() {
return service;
}
public void setService(Integer service) {
this.service = service;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getChartType() {
return chartType;
}
public void setChartType(String chartType) {
this.chartType = chartType;
}
}

View File

@@ -0,0 +1,94 @@
package com.nis.domain.dashboard.codedic;
import java.io.Serializable;
import java.util.Date;
public class CodeDomainDic implements Serializable{
/**
*
*/
private static final long serialVersionUID = 8878203808371459079L;
private Integer id;
private String websiteServiceId;
private String domain;
private String topicId;
private Date createTime;
private String creatorId;
private Integer isValid;
private String ican;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getWebsiteServiceId() {
return websiteServiceId;
}
public void setWebsiteServiceId(String websiteServiceId) {
this.websiteServiceId = websiteServiceId;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getTopicId() {
return topicId;
}
public void setTopicId(String topicId) {
this.topicId = topicId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public String getIcan() {
return ican;
}
public void setIcan(String ican) {
this.ican = ican;
}
}

View File

@@ -6,7 +6,7 @@ public class NtcCollectRadiusLog extends BaseLogEntity<NtcCollectRadiusLog> {
private static final long serialVersionUID = -4947912502754359817L;
@ExcelField(title="message_type",dictType="MESSAGE_TYPE",sort=10)
@ExcelField(title="code",dictType="MESSAGE_TYPE",sort=10)
protected Integer code;
@ExcelField(title="nas_ip",sort=15)
protected String nasIp;

View File

@@ -0,0 +1,736 @@
package com.nis.domain.log;
import com.google.gson.annotations.Expose;
import com.nis.domain.BaseEntity;
import com.nis.util.excel.ExcelField;
/**
* (日志 代理HTTP 操控 实体类
*
*/
public class PxyHttpManipulationLog extends BaseEntity<PxyHttpManipulationLog>{
private static final long serialVersionUID = -3046458130302949428L;
@ExcelField(title="found_time",sort=5)
protected String foundTime; //发现时间timestamp
@ExcelField(title="recv_time",sort=6)
protected String recvTime; //接收时间timestamp
@ExcelField(title="transport_layer_protocol",dictType="LOG_PROTOCOL",sort=30)
protected String transProto; //协议类型从字典LOG_PROTOCOL取值
@ExcelField(title="addr_type",dictType="IP_TYPE",sort=35)
protected Integer addrType; //ip地址类型从字典IP_TYPE取值
@ExcelField(title="URL",sort=8)
private String url;
@ExcelField(title="host",sort=8)
private String host;//主机地址
@ExcelField(title="domain_name",sort=8)
private String domain;//域名
@ExcelField(title="category",sort=8)
private String category;//域名分类
@ExcelField(title="req_line",sort=9)
private String reqLine;
@ExcelField(title="res_line",sort=10)
private String resLine;
@ExcelField(title="PXY_CACHE_HTTP_COOKIE",sort=11)
private String cookie;
@ExcelField(title="referer",sort=12)
private String referer;
@ExcelField(title="user_agent",sort=13)
private String userAgent;
@ExcelField(title="content_len",sort=14)
private String contentLen;
@ExcelField(title="content_type",sort=15)
private String contentType;
@ExcelField(title="set_cookie",sort=16)
private String setCookie;
@ExcelField(title="req_header",sort=17)
private String reqHeader;
@ExcelField(title="resp_header",sort=18)
private String respHeader;
@ExcelField(title="req_body",sort=78)
private String reqBody;
@ExcelField(title="resp_body",sort=79)
private String respBody;
// @ExcelField(title="website",sort=8)
// private String website;
@ExcelField(title="cfg_id",sort=1)
private Integer policyId;//
@ExcelField(title="app_proto",sort=31)
private String appProto;//应用协议类型
@ExcelField(title="startTime",sort=5)
private String startTime;//会话创建时间
@ExcelField(title="endTime",sort=5)
private String endTime;//会话结束时间
@Expose
@ExcelField(title="server_ip",sort=40)
protected String serverIp; //服务端ip地址
@Expose
@ExcelField(title="client_ip",sort=41)
protected String clientIp; //客户端ip地址
@Expose
@ExcelField(title="server_port",sort=42)
protected String serverPort; //服务端ip端口
@Expose
@ExcelField(title="client_port",sort=43)
protected String clientPort; //客户端ip端口
@ExcelField(title="entrance_id",dictType="ENTRANCE",sort=7)
protected Integer entranceId; //出入口编号
@ExcelField(title="deviceid",dictType="DEVICE",sort=50)
protected Integer deviceId; //串联设备编号
@ExcelField(title="direction",dictType="LOG_DIRECTION",sort=55)
protected Integer direction; //传输方向 0域内->域外1域外->域内从字典LOG_DIRECTION取值
@ExcelField(title="stream_type",dictType="LOG_STREAM_TYPE",sort=65)
protected Integer streamDir; //流类型 0c2s1s2c2double从字典LOG_STREAMTYPE取值
@ExcelField(title="clj_ip",sort=27)
protected String capIp; //处理机IP
@ExcelField(title="nest_addr_list",sort=66)
protected String addrList; //嵌套地址列表
@ExcelField(title="server_locate",sort=67)
protected String serverLocation;// 服务端地址定位信息
@ExcelField(title="client_locate",sort=68)
protected String clientLocation;// 客户端地址定位信息
@ExcelField(title="s_asn",sort=70)
protected String clientAsn;//客户端ASN
@ExcelField(title="d_asn",sort=71)
protected String serverAsn;//服务端ASN
@ExcelField(title="s_subscribe_id",sort=73)
protected String subscribeId;//客户端用户名
@ExcelField(title="scene_file",sort=77)
protected String sceneFile;//现场日志文件地址
@ExcelField(title="isp",sort=80)
protected String isp;//运营商
protected Integer service; //配置表的serviceId
protected Integer functionId;
@ExcelField(title="action",dictType="SERVICE_ACTION",sort=2)
protected Integer action;
//新增字段
@ExcelField(title="encap_type",dictType="ENCAP_TYPE",sort=52)
protected Integer encapType;//原始二层封装格式
@ExcelField(title="link_id",dictType="LINK",sort=51)
protected Integer linkId;//串联设备链路号
@ExcelField(title="inner_smac",sort=58)
protected String innerSmac;//MAC_IN_MAC的内层源MAC
@ExcelField(title="inner_dmac",sort=59)
protected String innerDmac;//MAC_IN_MAC的内层目标MAC
//自定义字段
protected String date;//配置界面日志总量查询时间
protected String seltype;//选中类型,页面搜索用
protected String searchFoundStartTime;//开始时间格式为yyyy-mm-dd hh24:mi:ss
protected String searchFoundEndTime;//结束时间,格式同上
protected String isLogTotalSearch;//由配置界面跳转日志查询标识
protected String orderBy;//排序参数
protected Integer cfgId;
protected String fields;
protected Integer compileId;//
protected String startRecvTime;//开始时间
protected String endRecvTime; //结束时间
@ExcelField(title="con_duration_ms",sort=81)
protected Integer conDurationMs;//通信时长
protected String reqBodyKey;//请求体转储文件KEY
protected String resBodyKey;//应答体转储文件KEY
@ExcelField(title="version",sort=82)
protected String version;//版本
@ExcelField(title="sni",sort=83)
protected String sni;//
@ExcelField(title="san",sort=84)
protected String san;
@ExcelField(title="cn",sort=85)
protected String cn;
@ExcelField(title="social_app",sort=86)
protected String appId;//app
// @ExcelField(title="social_app",sort=86)
protected String appName;//app
@ExcelField(title="protocol",sort=87)
protected String protocolId;//协议
// @ExcelField(title="protocol",sort=87)
protected String protocolName;//协议
@ExcelField(title="con_latency_ms",sort=88)
protected Integer conLatencyMs;//握手延迟
@ExcelField(title="pinning",dictType="PINNING",sort=89)
protected Integer pinningst;//pinning状态
@ExcelField(title="intercept_state",dictType="INTERCEPT_STATE",sort=90)
protected Integer interceptState;//拦截状态
@ExcelField(title="ssl_server_side_latency",sort=91)
protected Integer sslServerSideLatency;//服务器侧ssl建立延迟
@ExcelField(title="ssl_client_side_latency",sort=92)
protected Integer sslClientSideLatency;//客户端侧ssl建立延迟
@ExcelField(title="ssl_server_side_version",dictType="SSL_VERSION",sort=93)
protected String sslServerSideVersion;//服务端侧ssl版本
@ExcelField(title="ssl_client_side_version",dictType="SSL_VERSION",sort=94)
protected String sslClientSideVersion;//客户端侧ssl版本
@ExcelField(title="ssl_cert_verify",dictType="SSL_CERT_VERIFY",sort=95)
protected Integer sslCertVerify;//证书校验结果
@ExcelField(title="stream_trace_id",sort=96)
protected String streamTraceId;//流的追踪ID
@ExcelField(title="ssl_error",sort=97)
protected String sslError;//ssl错误信息
@ExcelField(title="c2s_pkt_num",sort=98)
protected Integer c2sPktNum;//c2s包数
@ExcelField(title="s2c_pkt_num",sort=99)
protected Integer s2cPktNum;//s2c包数
@ExcelField(title="c2s_byte_num",sort=100)
protected Integer c2sByteNum;//c2s字节数
@ExcelField(title="s2c_byte_num",sort=101)
protected Integer s2cByteNum;//s2c字节数
@ExcelField(title="nas_ip",sort=102)
protected String nasIp;//ISN接入的IP
@ExcelField(title="framed_ip",sort=103)
protected String framedIp;//用户IP地址
@ExcelField(title="account",sort=104)
protected String account;//用户名
@ExcelField(title="packet_type",dictType="MESSAGE_TYPE",sort=105)
protected Integer packetType;//报文类型
protected String dIp;
protected String sIp;
public String getProtocolName() {
return protocolName;
}
public void setProtocolName(String protocolName) {
this.protocolName = protocolName;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getdIp() {
return dIp;
}
public void setdIp(String dIp) {
this.dIp = dIp;
}
public String getsIp() {
return sIp;
}
public void setsIp(String sIp) {
this.sIp = sIp;
}
public String getAppProto() {
return appProto;
}
public void setAppProto(String appProto) {
this.appProto = appProto;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getReqLine() {
return reqLine;
}
public void setReqLine(String reqLine) {
this.reqLine = reqLine;
}
public String getResLine() {
return resLine;
}
public void setResLine(String resLine) {
this.resLine = resLine;
}
public String getCookie() {
return cookie;
}
public void setCookie(String cookie) {
this.cookie = cookie;
}
public String getReferer() {
return referer;
}
public void setReferer(String referer) {
this.referer = referer;
}
public String getUserAgent() {
return userAgent;
}
public void setUserAgent(String userAgent) {
this.userAgent = userAgent;
}
public String getContentLen() {
return contentLen;
}
public void setContentLen(String contentLen) {
this.contentLen = contentLen;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getSetCookie() {
return setCookie;
}
public void setSetCookie(String setCookie) {
this.setCookie = setCookie;
}
public String getReqHeader() {
return reqHeader;
}
public void setReqHeader(String reqHeader) {
this.reqHeader = reqHeader;
}
public String getRespHeader() {
return respHeader;
}
public void setRespHeader(String respHeader) {
this.respHeader = respHeader;
}
public String getReqBody() {
return reqBody;
}
public void setReqBody(String reqBody) {
this.reqBody = reqBody;
}
public String getRespBody() {
return respBody;
}
public void setRespBody(String respBody) {
this.respBody = respBody;
}
// public String getWebsite() {
// return website;
// }
// public void setWebsite(String website) {
// this.website = website;
// }
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getIsp() {
return isp;
}
public void setIsp(String isp) {
this.isp = isp;
}
public Integer getPolicyId() {
return policyId;
}
public void setPolicyId(Integer policyId) {
this.policyId = policyId;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getServerIp() {
return serverIp;
}
public void setServerIp(String serverIp) {
this.serverIp = serverIp;
}
public String getClientIp() {
return clientIp;
}
public void setClientIp(String clientIp) {
this.clientIp = clientIp;
}
public String getServerPort() {
return serverPort;
}
public void setServerPort(String serverPort) {
this.serverPort = serverPort;
}
public String getClientPort() {
return clientPort;
}
public void setClientPort(String clientPort) {
this.clientPort = clientPort;
}
public String getServerLocation() {
return serverLocation;
}
public void setServerLocation(String serverLocation) {
this.serverLocation = serverLocation;
}
public String getClientLocation() {
return clientLocation;
}
public void setClientLocation(String clientLocation) {
this.clientLocation = clientLocation;
}
public String getClientAsn() {
return clientAsn;
}
public void setClientAsn(String clientAsn) {
this.clientAsn = clientAsn;
}
public String getServerAsn() {
return serverAsn;
}
public void setServerAsn(String serverAsn) {
this.serverAsn = serverAsn;
}
public String getSubscribeId() {
return subscribeId;
}
public void setSubscribeId(String subscribeId) {
this.subscribeId = subscribeId;
}
public Integer getConDurationMs() {
return conDurationMs;
}
public void setConDurationMs(Integer conDurationMs) {
this.conDurationMs = conDurationMs;
}
public String getReqBodyKey() {
return reqBodyKey;
}
public void setReqBodyKey(String reqBodyKey) {
this.reqBodyKey = reqBodyKey;
}
public String getResBodyKey() {
return resBodyKey;
}
public void setResBodyKey(String resBodyKey) {
this.resBodyKey = resBodyKey;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getSni() {
return sni;
}
public void setSni(String sni) {
this.sni = sni;
}
public String getSan() {
return san;
}
public void setSan(String san) {
this.san = san;
}
public String getCn() {
return cn;
}
public void setCn(String cn) {
this.cn = cn;
}
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getProtocolId() {
return protocolId;
}
public void setProtocolId(String protocolId) {
this.protocolId = protocolId;
}
public Integer getConLatencyMs() {
return conLatencyMs;
}
public void setConLatencyMs(Integer conLatencyMs) {
this.conLatencyMs = conLatencyMs;
}
public Integer getPinningst() {
return pinningst;
}
public void setPinningst(Integer pinningst) {
this.pinningst = pinningst;
}
public Integer getC2sPktNum() {
return c2sPktNum;
}
public void setC2sPktNum(Integer c2sPktNum) {
this.c2sPktNum = c2sPktNum;
}
public Integer getS2cPktNum() {
return s2cPktNum;
}
public void setS2cPktNum(Integer s2cPktNum) {
this.s2cPktNum = s2cPktNum;
}
public Integer getC2sByteNum() {
return c2sByteNum;
}
public void setC2sByteNum(Integer c2sByteNum) {
this.c2sByteNum = c2sByteNum;
}
public Integer getS2cByteNum() {
return s2cByteNum;
}
public void setS2cByteNum(Integer s2cByteNum) {
this.s2cByteNum = s2cByteNum;
}
public String getNasIp() {
return nasIp;
}
public void setNasIp(String nasIp) {
this.nasIp = nasIp;
}
public String getFramedIp() {
return framedIp;
}
public void setFramedIp(String framedIp) {
this.framedIp = framedIp;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public Integer getPacketType() {
return packetType;
}
public void setPacketType(Integer packetType) {
this.packetType = packetType;
}
public Integer getCompileId() {
return compileId;
}
public void setCompileId(Integer compileId) {
this.compileId = compileId;
}
public String getStartRecvTime() {
return startRecvTime;
}
public void setStartRecvTime(String startRecvTime) {
this.startRecvTime = startRecvTime;
}
public String getEndRecvTime() {
return endRecvTime;
}
public void setEndRecvTime(String endRecvTime) {
this.endRecvTime = endRecvTime;
}
public String getFoundTime() {
return foundTime;
}
public void setFoundTime(String foundTime) {
this.foundTime = foundTime;
}
public String getRecvTime() {
return recvTime;
}
public void setRecvTime(String recvTime) {
this.recvTime = recvTime;
}
public String getTransProto() {
return transProto;
}
public void setTransProto(String transProto) {
this.transProto = transProto;
}
public Integer getAddrType() {
return addrType;
}
public void setAddrType(Integer addrType) {
this.addrType = addrType;
}
public Integer getEntranceId() {
return entranceId;
}
public void setEntranceId(Integer entranceId) {
this.entranceId = entranceId;
}
public Integer getDeviceId() {
return deviceId;
}
public void setDeviceId(Integer deviceId) {
this.deviceId = deviceId;
}
public Integer getDirection() {
return direction;
}
public void setDirection(Integer direction) {
this.direction = direction;
}
public Integer getStreamDir() {
return streamDir;
}
public void setStreamDir(Integer streamDir) {
this.streamDir = streamDir;
}
public String getCapIp() {
return capIp;
}
public void setCapIp(String capIp) {
this.capIp = capIp;
}
public String getAddrList() {
return addrList;
}
public void setAddrList(String addrList) {
this.addrList = addrList;
}
public String getSceneFile() {
return sceneFile;
}
public void setSceneFile(String sceneFile) {
this.sceneFile = sceneFile;
}
public Integer getService() {
return service;
}
public void setService(Integer service) {
this.service = service;
}
public Integer getFunctionId() {
return functionId;
}
public void setFunctionId(Integer functionId) {
this.functionId = functionId;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public Integer getEncapType() {
return encapType;
}
public void setEncapType(Integer encapType) {
this.encapType = encapType;
}
public Integer getLinkId() {
return linkId;
}
public void setLinkId(Integer linkId) {
this.linkId = linkId;
}
public String getInnerSmac() {
return innerSmac;
}
public void setInnerSmac(String innerSmac) {
this.innerSmac = innerSmac;
}
public String getInnerDmac() {
return innerDmac;
}
public void setInnerDmac(String innerDmac) {
this.innerDmac = innerDmac;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getSeltype() {
return seltype;
}
public void setSeltype(String seltype) {
this.seltype = seltype;
}
public String getSearchFoundStartTime() {
return searchFoundStartTime;
}
public void setSearchFoundStartTime(String searchFoundStartTime) {
this.searchFoundStartTime = searchFoundStartTime;
}
public String getSearchFoundEndTime() {
return searchFoundEndTime;
}
public void setSearchFoundEndTime(String searchFoundEndTime) {
this.searchFoundEndTime = searchFoundEndTime;
}
public String getIsLogTotalSearch() {
return isLogTotalSearch;
}
public void setIsLogTotalSearch(String isLogTotalSearch) {
this.isLogTotalSearch = isLogTotalSearch;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public Integer getInterceptState() {
return interceptState;
}
public void setInterceptState(Integer interceptState) {
this.interceptState = interceptState;
}
public Integer getSslServerSideLatency() {
return sslServerSideLatency;
}
public void setSslServerSideLatency(Integer sslServerSideLatency) {
this.sslServerSideLatency = sslServerSideLatency;
}
public Integer getSslClientSideLatency() {
return sslClientSideLatency;
}
public void setSslClientSideLatency(Integer sslClientSideLatency) {
this.sslClientSideLatency = sslClientSideLatency;
}
public String getSslServerSideVersion() {
return sslServerSideVersion;
}
public void setSslServerSideVersion(String sslServerSideVersion) {
this.sslServerSideVersion = sslServerSideVersion;
}
public String getSslClientSideVersion() {
return sslClientSideVersion;
}
public void setSslClientSideVersion(String sslClientSideVersion) {
this.sslClientSideVersion = sslClientSideVersion;
}
public Integer getSslCertVerify() {
return sslCertVerify;
}
public void setSslCertVerify(Integer sslCertVerify) {
this.sslCertVerify = sslCertVerify;
}
public String getStreamTraceId() {
return streamTraceId;
}
public void setStreamTraceId(String streamTraceId) {
this.streamTraceId = streamTraceId;
}
public String getSslError() {
return sslError;
}
public void setSslError(String sslError) {
this.sslError = sslError;
}
public Integer getCfgId() {
return cfgId;
}
public void setCfgId(Integer cfgId) {
this.cfgId = cfgId;
}
public String getFields() {
return fields;
}
public void setFields(String fields) {
this.fields = fields;
}
}

View File

@@ -44,7 +44,7 @@ public class GroupReuseAddBean implements Serializable{
@Expose
private Integer opAction;
@Expose
@SerializedName("commonGroupList")
@SerializedName("groupReuseList")
private List<GroupReuseCfg> groupReuseCfgList;
public String getVersion() {

View File

@@ -14,7 +14,7 @@ import com.nis.domain.maat.MaatCfg.StringCfg;
*
*/
public class GroupReuseCfg implements Serializable {
/*@Expose
@Expose
@SerializedName("service")
private Integer serviceId;
public Integer getServiceId() {
@@ -23,7 +23,7 @@ public class GroupReuseCfg implements Serializable {
public void setServiceId(Integer serviceId) {
this.serviceId = serviceId;
}
*/ /**
/**
*
*/
private static final long serialVersionUID = 1830956100866313836L;

View File

@@ -95,8 +95,6 @@ public class MaatCfg implements Serializable {
@Expose
@SerializedName("ipClientRangeList")
private List<IpCfg> areaIpRegionList;
@Expose
private List<GroupCfg> keepGroupList;
public static class GroupCfg{
@Expose
@@ -106,8 +104,6 @@ public class MaatCfg implements Serializable {
@Expose
private Integer isValid;
@Expose
private Integer isCommonGroup;
@Expose
@SerializedName("opTime")
private Date auditTime;
public Integer getGroupId() {
@@ -134,12 +130,7 @@ public class MaatCfg implements Serializable {
public void setAuditTime(Date auditTime) {
this.auditTime = auditTime;
}
public Integer getIsCommonGroup() {
return isCommonGroup;
}
public void setIsCommonGroup(Integer isCommonGroup) {
this.isCommonGroup = isCommonGroup;
}
}
public static class StringCfg{
@Expose
@@ -688,13 +679,6 @@ public class MaatCfg implements Serializable {
public void setRequestId(Integer requestId) {
this.requestId = requestId;
}
public List<GroupCfg> getKeepGroupList() {
return keepGroupList;
}
public void setKeepGroupList(List<GroupCfg> keepGroupList) {
this.keepGroupList = keepGroupList;
}
public void initDefaultValue() {
this.doLog=Constants.MAAT_CFG_DOLOG_DEFAULT;
// this.doBlackList=Constants.MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT;

View File

@@ -0,0 +1,140 @@
package com.nis.domain.maat;
import java.io.Serializable;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
/**
* 管控策略动作参数
*/
public class ManipulatActionParam implements Serializable{
private static final long serialVersionUID = 7282481538239386968L;
@Expose
private String method;
@Expose
private Integer code;
@Expose
private String to;
@Expose
private String message;
@Expose
private Integer html_profile;
@Expose
private List<ReplaceCfg> rules;
public static class ReplaceCfg{
@Expose
private String search_in;
@Expose
private String find;
@Expose
private String replace_with;
public String getSearch_in() {
return search_in;
}
public void setSearch_in(String search_in) {
this.search_in = search_in;
}
public String getFind() {
return find;
}
public void setFind(String find) {
this.find = find;
}
public String getReplace_with() {
return replace_with;
}
public void setReplace_with(String replace_with) {
this.replace_with = replace_with;
}
}
@Expose
private Integer hijack_profile;
@Expose
private Integer insert_profile;
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Integer getHtml_profile() {
return html_profile;
}
public void setHtml_profile(Integer html_profile) {
this.html_profile = html_profile;
}
public List<ReplaceCfg> getRules() {
return rules;
}
public void setRules(List<ReplaceCfg> rules) {
this.rules = rules;
}
public Integer getHijack_profile() {
return hijack_profile;
}
public void setHijack_profile(Integer hijack_profile) {
this.hijack_profile = hijack_profile;
}
public Integer getInsert_profile() {
return insert_profile;
}
public void setInsert_profile(Integer insert_profile) {
this.insert_profile = insert_profile;
}
}

View File

@@ -9,6 +9,7 @@
package com.nis.domain.report;
import com.nis.domain.BaseEntity;
import com.nis.util.excel.ExcelField;
/**
* @ClassName: BaseReportLog.java
@@ -25,6 +26,7 @@ public class BaseReport<T> extends BaseEntity<T>{
*/
private static final long serialVersionUID = -6190203013788730697L;
@ExcelField(title="config_log_total",sort=3)
protected Long sum;
protected Integer service;
protected String reportTime;

View File

@@ -23,21 +23,6 @@ public class ConfigGroupInfo implements Serializable{
@ExcelField(title="cfg_id",sort=301)
private Integer compileId;
private Long asnId;
private Integer isAuditAll; //是否有策略选择了此公共组下发所有;
private Integer isUsed; //是否有策略选择了此公共组;
public Integer getIsUsed() {
return isUsed;
}
public void setIsUsed(Integer isUsed) {
this.isUsed = isUsed;
}
public Integer getIsAuditAll() {
return isAuditAll;
}
public void setIsAuditAll(Integer isAuditAll) {
this.isAuditAll = isAuditAll;
}
public Long getAsnId() {
return asnId;

View File

@@ -30,13 +30,15 @@ public class SpecificServiceHostCfg extends BaseEntity<SpecificServiceHostCfg>{
@Expose
private Integer protocol; //protocol 协议 int N 6表示tcp,17表示udp0表示任意
@Expose
private Integer ipPattern; //ip格式
private Integer srcIpPattern; //ip格式
private Integer destIpPattern; //ip格式
@Expose
private String srcIpAddress; //源客户端IP地址
@Expose
private String destIpAddress; //目的服务器IP地址
@Expose
private Integer portPattern; //端口格式
private Integer srcPortPattern; //端口格式
private Integer destPortPattern; //端口格式
@Expose
private String srcPort; //源(客户端)端口
@Expose
@@ -114,19 +116,33 @@ public class SpecificServiceHostCfg extends BaseEntity<SpecificServiceHostCfg>{
public void setDestPort(String destPort) {
this.destPort = destPort;
}
@ExcelField(title="ip_pattern",align=2,sort=21,fieldType=Integer.class)
public Integer getIpPattern() {
return ipPattern;
@ExcelField(title="src_ip_pattern",align=2,sort=21,fieldType=Integer.class)
public Integer getSrcIpPattern() {
return srcIpPattern;
}
public void setIpPattern(Integer ipPattern) {
this.ipPattern = ipPattern;
public void setSrcIpPattern(Integer srcIpPattern) {
this.srcIpPattern = srcIpPattern;
}
@ExcelField(title="port_pattern",align=2,sort=40,fieldType=Integer.class)
public Integer getPortPattern() {
return portPattern;
@ExcelField(title="dest_ip_pattern",align=2,sort=22,fieldType=Integer.class)
public Integer getDestIpPattern() {
return destIpPattern;
}
public void setPortPattern(Integer portPattern) {
this.portPattern = portPattern;
public void setDestIpPattern(Integer destIpPattern) {
this.destIpPattern = destIpPattern;
}
@ExcelField(title="src_port_pattern",align=2,sort=40,fieldType=Integer.class)
public Integer getSrcPortPattern() {
return srcPortPattern;
}
public void setSrcPortPattern(Integer srcPortPattern) {
this.srcPortPattern = srcPortPattern;
}
@ExcelField(title="dest_port_pattern",align=2,sort=41,fieldType=Integer.class)
public Integer getDestPortPattern() {
return destPortPattern;
}
public void setDestPortPattern(Integer destPortPattern) {
this.destPortPattern = destPortPattern;
}
@ExcelField(title="direction",align=2,sort=110)
public Integer getDirection() {

View File

@@ -69,6 +69,9 @@ public class ScheduleUpdateInterceptor extends BaseInterceptor{
static {
EXCLUDE_MAPPER_IDS.add("com.nis.web.dao.SchedulerDao.updateCfgTableStatus");
EXCLUDE_MAPPER_IDS.add("com.nis.web.dao.basics.ServiceDictInfoDao");
EXCLUDE_MAPPER_IDS.add("com.nis.web.dao.configuration.PxyObjKeyringDao.updatePxyObjTrustedCaCrl");
EXCLUDE_MAPPER_IDS.add("com.nis.web.dao.configuration.CommonPolicyDao.auditCfgBatch");
EXCLUDE_MAPPER_IDS.add("com.nis.web.dao.configuration.CommonPolicyDao.deleteCfgBatch");
}
/**
* is_valid 字段名
@@ -159,10 +162,11 @@ public class ScheduleUpdateInterceptor extends BaseInterceptor{
//整理需要 insert 的 schedule_cfg 的数据
List<ScheduleCfg> scheduleList = Lists.newArrayList();
for(BaseCfg<?> baseCfg : cfgList) {
baseCfg.setIsValid(0);//设置默认值
baseCfg.setIsAudit(0);//设置默认值
ScheduleCfg scList = copyScheduleCfgFromBaseCfg(baseCfg, tableName);
if(scList!=null){
//TODO 定时任务设置默认为isValid=0 isAudit=0需要考虑允许用户新增isValid=1 isAudit=1的配置下发
scList.setIsValid(0);//设置默认值
scList.setIsAudit(0);//设置默认值
scheduleList.add(scList);
}
}
@@ -197,6 +201,7 @@ public class ScheduleUpdateInterceptor extends BaseInterceptor{
sc.setCompileId(compileId);
sc.setEditorId(bc.getEditorId());
sc.setEditTime(bc.getEditTime());
sc.setType(1);
sc.setCfgId(cfgId);
//根据 compileId 删除之前的
MappedStatement statement = configuration.getMappedStatement("com.nis.web.dao.SchedulerDao.deleteByCompileId");
@@ -273,6 +278,7 @@ public class ScheduleUpdateInterceptor extends BaseInterceptor{
MappedStatement statement = configuration.getMappedStatement("com.nis.web.dao.SchedulerDao.insert");
scfg.setIsValid(isValid);
scfg.setIsAudit(isAudit);
scfg.setType(1);
executor.update(statement, scfg);
}
//手动 审核通过,立即生效时 已经下发,修改 exce_new 表的是否需要下发字段为 不需要 0
@@ -329,6 +335,7 @@ public class ScheduleUpdateInterceptor extends BaseInterceptor{
if(schedule != null ) {
BeanUtils.copyProperties(baseCfg, schedule,new String[]{"userRegion1","userRegion2","userRegion3","userRegion4","userRegion5"});
schedule.setTableName(tableName);
schedule.setType(1);
}
return schedule;
}

View File

@@ -82,15 +82,21 @@ public class ScheduleCfgJob implements Job {
SchedulerDao dao = SpringContextHolder.getBean(SchedulerDao.class);
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
long scheduleCfgId = dataMap.get("scheduleCfgId") == null ? 0:dataMap.getLong("scheduleCfgId");
long limit = dataMap.get("limit") == null ? 1000:dataMap.getLong("limit");
long limit = dataMap.get("limit") == null ? Constants.MAAT_JSON_SEND_SIZE:dataMap.getLong("limit");
log.info(String.format("定时配置任务开始执行scheduleCfgId:%s,limit:%s",scheduleCfgId,limit ));
List<ScheduleCfg> newlyCfg = null;
List<ScheduleCfg> allNewlySche = null;
int totalNum = 0;
do {
newlyCfg = dao.findNewlyCfg(scheduleCfgId, limit);
if(newlyCfg != null && newlyCfg.size() > 0) {
totalNum += newlyCfg.size();
for(ScheduleCfg cfg : newlyCfg) {//先取消之前的定时配置
allNewlySche = dao.findNewlyCfg(scheduleCfgId, limit,1,1);
if(allNewlySche != null && allNewlySche.size() > 0) {
List<ScheduleCfg> allAddSche = new ArrayList<>();
totalNum += allNewlySche.size();
//先取消之前的定时配置
for(ScheduleCfg cfg : allNewlySche) {
//获取有效的任务
if(cfg.getDelFlag()==1) {
allAddSche.add(cfg);
}
Integer compileId = cfg.getCompileId();
try {
//取消之前所有的 trigger
@@ -106,7 +112,7 @@ public class ScheduleCfgJob implements Job {
log.error(String.format("定时任务取消异常compileId:%s", compileId),e);
}
}
for(ScheduleCfg cfg : newlyCfg) {
for(ScheduleCfg cfg : allAddSche) {
Integer compileId = cfg.getCompileId();
try {
//判断状态,重新添加最新的 trigger
@@ -123,12 +129,12 @@ public class ScheduleCfgJob implements Job {
}
}
//最后 保存此次 最后的id
ScheduleCfg lastCfg = newlyCfg.get(newlyCfg.size() -1);
ScheduleCfg lastCfg = allNewlySche.get(allNewlySche.size() -1);
scheduleCfgId = lastCfg.getId();
dataMap.put("scheduleCfgId", scheduleCfgId);
log.info(String.format("加载定时任务total num :%s", newlyCfg.size()));
log.info(String.format("加载定时任务total num :%s", allNewlySche.size()));
}
} while (newlyCfg != null && newlyCfg.size() > 0);
} while (allNewlySche != null && allNewlySche.size() > 0);
log.info(String.format("定时配置任务结束执行total num:%s",totalNum));
}
@@ -191,6 +197,9 @@ public class ScheduleCfgJob implements Job {
String mode = cfg.getUserRegion1().toUpperCase();//定时任务运行模式:一次,每天,每周,每月
List<Trigger> triList = null;
switch (mode) {
case "ALWAYS"://单次运行,但只创建单次生效触发器
triList = createSimpleTrigger(cfg);
break;
case "SINGLE"://单次运行
triList = createSimpleTrigger(cfg);
break;
@@ -254,32 +263,42 @@ public class ScheduleCfgJob implements Job {
Integer compileId = cfg.getCompileId();
String cronValid = cfg.getCronValid();
String cronInvalid = cfg.getCronInvalid();
Date validDate = DateUtil.convertStringToDate(cronValid, Constants.COMMON_DATE_FORMAT);
Date invalidDate = DateUtil.convertStringToDate(cronInvalid, Constants.COMMON_DATE_FORMAT);
Date validDate = null;
Date invalidDate = null;
if(StringUtils.isNotBlank(cronValid)){
validDate = DateUtil.convertStringToDate(cronValid, Constants.COMMON_DATE_FORMAT);
}
if(StringUtils.isNotBlank(cronInvalid)){
invalidDate = DateUtil.convertStringToDate(cronInvalid, Constants.COMMON_DATE_FORMAT);
}
JobDataMap dataMap = new JobDataMap();
dataMap.put("isValid", true);
dataMap.put("cfg", cfg);
String triName = VALID_KEY + cfg.getUserRegion1() + "_" + cronValid;
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(validDate)
.build();
triList.add(trigger);
dataMap = new JobDataMap();
dataMap.put("isValid", false);
dataMap.put("cfg", cfg);
triName = INVALID_KEY + cfg.getUserRegion1() + "_" + cronInvalid;
trigger = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(invalidDate)
.build();
triList.add(trigger);
if(validDate!=null){//生效时间如果不为空,则创建定时生效触发器
dataMap.put("isValid", true);
dataMap.put("cfg", cfg);
String triName = VALID_KEY + cfg.getUserRegion1() + "_" + cronValid;
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(validDate)
.build();
triList.add(trigger);
}
if(invalidDate!=null){//失效时间如果不为空,则创建定时失效触发器
dataMap = new JobDataMap();
dataMap.put("isValid", false);
dataMap.put("cfg", cfg);
String triName = INVALID_KEY + cfg.getUserRegion1() + "_" + cronInvalid;
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(invalidDate)
.build();
triList.add(trigger);
}
return triList;
}
@@ -302,6 +321,34 @@ public class ScheduleCfgJob implements Job {
Date invalidTime = DateBuilder.todayAt(invalidList.get(0), invalidList.get(1), invalidList.get(2));
CalendarIntervalScheduleBuilder intervalBuilder = null;
if("EVERYDAY".equalsIgnoreCase(dayOrWeek)) {
//开始时间+2分钟
Calendar validStartCal=Calendar.getInstance();
validStartCal.setTime(validStartTime);
validStartCal.add(Calendar.MINUTE, 2);
long validStartTimes=validStartCal.getTime().getTime();
//结束时间+2分钟
Calendar invalidCal=Calendar.getInstance();
invalidCal.setTime(invalidTime);
invalidCal.add(Calendar.MINUTE, 2);
long invalidTimes=invalidCal.getTime().getTime();
long currentTimes=new Date().getTime();
//开始时间设置为今天已过时,则将开始时间加上周期
if((currentTimes-validStartTimes) > 0) {
Calendar validStartCalNew=Calendar.getInstance();
validStartCalNew.setTime(validStartTime);
validStartCalNew.add(Calendar.DAY_OF_MONTH, interval);
validStartTime=validStartCalNew.getTime();
}
//结束时间设置为今天已过时,则将开始时间加上周期
if((currentTimes-invalidTimes) > 0) {
Calendar invalidCalNew=Calendar.getInstance();
invalidCalNew.setTime(invalidTime);
invalidCalNew.add(Calendar.DAY_OF_MONTH, interval);
invalidTime=invalidCalNew.getTime();
}
intervalBuilder = CalendarIntervalScheduleBuilder.calendarIntervalSchedule().withIntervalInDays(interval);
//valid
JobDataMap dataMap = new JobDataMap();
@@ -316,6 +363,7 @@ public class ScheduleCfgJob implements Job {
.startAt(validStartTime)
.build();
triList.add(validTri);
//invalid
dataMap = new JobDataMap();
dataMap.put("isValid", false);
@@ -465,14 +513,25 @@ public class ScheduleCfgJob implements Job {
/**
* 查找最近的 星期几 ,包括今天
* 查找最近的 星期几 ,包括今天(如果今天的时间点已过,从明天开始算)
* @param date
* @param w 周一开始 1 -7
* @return
*/
public static Date closestAfterWeek(Date date,int w) {
//设置calC为开始时间+2分钟判断calC时间是否已过如果小于当前时间则直接从明天开始算
Calendar calC = Calendar.getInstance();
calC.setTime(date);
calC.add(Calendar.MINUTE, 2);
long currentDate=new Date().getTime();//当前时间
long weekStartDate=calC.getTime().getTime();//周任务开始时间+2分钟
Calendar cal = Calendar.getInstance();
cal.setTime(date);
//如果开始时间已过期,则从明天开始算
if((currentDate-weekStartDate) > 0) {
cal.add(Calendar.DAY_OF_MONTH, 1);
}
int i = cal.get(Calendar.DAY_OF_WEEK);//周日开始 1-7
i = (i==1)? 7: i-1;//转换为 周一到 周日 1-7
cal.add(Calendar.DAY_OF_MONTH, (i>w)?(7-(i-w)) : (w-i));

View File

@@ -0,0 +1,137 @@
package com.nis.quartz;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.PersistJobDataAfterExecution;
import com.nis.util.IPUtil;
import com.nis.util.StringUtil;
import com.nis.web.dao.basics.AsnGroupInfoDao;
import com.nis.web.dao.basics.AsnIpCfgDao;
import com.nis.web.service.SpringContextHolder;
/**
* 定时任务: 定时统计ASN 下IPv4和IPV6的个数
* 1、每 n s 执行一次(两个小时执行一次)
* 2、单线程执行
* @author ddm
*
*/
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class ScheduleStatisticASNIPNumJob implements Job {
private static final Logger logger = Logger.getLogger(ScheduleStatisticASNIPNumJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
AsnIpCfgDao asnIpCfgDao = SpringContextHolder.getBean(AsnIpCfgDao.class);
logger.info("定时统计ASN IP个数开始。。。。。。。。。。。。。。");
long start=System.currentTimeMillis();
Map<Integer,Map<String,Long>> asnNumerMap=new HashMap<>();
List<Object[]> asnIpList=new ArrayList<>();
asnIpList=asnIpCfgDao.findAllAsnIpCfgList();
getAllASNIPNumber(asnIpList, asnNumerMap);
updateAllASNIPNumber(asnNumerMap);
long end=System.currentTimeMillis();
logger.info("定时统计ASN IP个数结束:耗时("+(end-start)+"/毫秒)。。。。。。。。。。。。。。");
}
public void getAllASNIPNumber(List<Object[]> asnIpList,Map<Integer,Map<String,Long>> asnNumerMap){
logger.info("计算ASN IP开始asn ip size:"+asnIpList.size()+"。。。。。。。。。。。。。。");
long start=System.currentTimeMillis();
if(!StringUtil.isEmpty(asnIpList)){
try {
for (Iterator iterator = asnIpList.iterator(); iterator.hasNext();) {
Map asnIpMap=(Map) iterator.next();
//groupId
Integer asnGroupId = (Integer)asnIpMap.get("asn_ip_group");
//ipType(4:v4,6:v6)
Integer ipType= (Integer)asnIpMap.get("ip_type");
//(1:mask,2:range,3:ip)
//Integer ipPattern= (Integer)asnIpMap.get("ip_pattern");
//dest_ip_address
String ipAddress= (String)asnIpMap.get("dest_ip_address");
long IPNumber=0;
if(ipType.equals(4)){
if(ipAddress.indexOf("/") > -1){
Integer mask=Integer.parseInt(ipAddress.split("/")[1]);
ipAddress=ipAddress.split("/")[0];
IPNumber=IPUtil.getIpNum(ipAddress, mask);
}else{
IPNumber=1;
}
//判断组是否已经存在
if(asnNumerMap.keySet().contains(asnGroupId)){
asnNumerMap.get(asnGroupId).put("v4", asnNumerMap.get(asnGroupId).get("v4")+IPNumber);
asnNumerMap.put(asnGroupId, asnNumerMap.get(asnGroupId));
}else{
Map<String, Long> map=new HashMap<>();
map.put("v4", IPNumber);
map.put("v6", 0l);
asnNumerMap.put(asnGroupId, map);
}
}else{
IPNumber=1;
//判断组是否已经存在
if(asnNumerMap.keySet().contains(asnGroupId)){
asnNumerMap.get(asnGroupId).put("v6", asnNumerMap.get(asnGroupId).get("v6")+IPNumber);
asnNumerMap.put(asnGroupId, asnNumerMap.get(asnGroupId));
}else{
Map<String, Long> map=new HashMap<>();
map.put("v4", 0l);
map.put("v6", IPNumber);
asnNumerMap.put(asnGroupId, map);
}
}
}
} catch (Exception e) {
logger.error("计算ASN IP个数失败",e);
}
}
long end=System.currentTimeMillis();
logger.info("计算ASN IP个数结束:耗时("+(end-start)+"/毫秒)。。。。。。。。。。。。。。");
}
public void updateAllASNIPNumber(Map<Integer,Map<String,Long>> asnNumerMap) {
logger.info("修改ASN IP个数开始asn size:"+asnNumerMap.size()+"。。。。。。。。。。。。。。");
long start=System.currentTimeMillis();
if(!StringUtil.isEmpty(asnNumerMap)){
int index=0;
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try {
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, true);
for(Entry<Integer,Map<String,Long>> e: asnNumerMap.entrySet()) {
((AsnGroupInfoDao) batchSqlSession.getMapper(AsnGroupInfoDao.class)).updateIpNum(e.getValue().get("v4"),e.getValue().get("v6"),e.getKey());
batchSqlSession.commit();
index++;
}
}catch (Exception e) {
logger.error("修改ASN IP个数失败", e);
} finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
long end=System.currentTimeMillis();
logger.info("修改ASN IP个数结束:耗时("+(end-start)+"/毫秒)。。。。。。。。。。。。。。");
}
}

View File

@@ -1,12 +1,20 @@
package com.nis.quartz;
import java.util.Date;
import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import com.nis.domain.ScheduleCfg;
import com.nis.util.Constants;
import com.nis.util.DateUtil;
import com.nis.util.DictUtils;
import com.nis.web.dao.SchedulerDao;
import com.nis.web.service.ScheduleService;
import com.nis.web.service.SpringContextHolder;
@@ -23,16 +31,52 @@ public class ScheduleStatusJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//从trigger中 获取 配置信息
JobDataMap jobDataMap = context.getTrigger().getJobDataMap();
boolean isValid = jobDataMap.getBoolean("isValid");
ScheduleCfg cfg = (ScheduleCfg)jobDataMap.get("cfg");
Integer compileId = cfg.getCompileId();
log.debug(String.format("任务开始执行compileId:%s,isValid:%s",compileId,isValid ));
//配置下发,并修改 配置表的状态,保存下发记录等
ScheduleService scheduleService = SpringContextHolder.getBean(ScheduleService.class);
scheduleService.issueCompileInfo(cfg, isValid?1:0);
log.debug(String.format("任务开始执行compileId:%s,isValid:%s",compileId,isValid ));
//全量同步状态
String currentStatus = DictUtils.getDictLabel("currrent_sync_status", "status","0");
//0:start:开始 1:init:初始化 2:doing:进行中
//全量同步过程中未执行的任务进入另一个job中等待全量同步完成开始执行
if(currentStatus.equals("0") || currentStatus.equals("1")||currentStatus.equals("2")) {
//配置下发,并修改 配置表的状态,保存下发记录等
SchedulerDao schedulerDao = SpringContextHolder.getBean(SchedulerDao.class);
//从trigger中 获取 配置信息
JobDataMap jobDataMap = context.getTrigger().getJobDataMap();
boolean isValid = jobDataMap.getBoolean("isValid");
ScheduleCfg cfg = (ScheduleCfg)jobDataMap.get("cfg");
cfg.setId(null);//新入库一个任务
cfg.setType(2);//全量同步中未执行的任务
cfg.setUserRegion1("single"); //只执行一次
if(isValid) {
cfg.setCronValid("1900-01-01 01:01:01"); //无实际效果,仅仅为填充值
cfg.setCronInvalid("");
}else {
cfg.setCronValid("");
cfg.setCronInvalid("1900-01-01 01:01:01");//无实际效果,仅仅为填充值
}
schedulerDao.insert(cfg);
}else {
//从trigger中 获取 配置信息
JobDataMap jobDataMap = context.getTrigger().getJobDataMap();
boolean isValid = jobDataMap.getBoolean("isValid");
ScheduleCfg cfg = (ScheduleCfg)jobDataMap.get("cfg");
Integer compileId = cfg.getCompileId();
log.debug(String.format("任务开始执行compileId:%s,isValid:%s",compileId,isValid ));
//配置下发,并修改 配置表的状态,保存下发记录等
ScheduleService scheduleService = SpringContextHolder.getBean(ScheduleService.class);
try {
scheduleService.issueCompileInfo(cfg, isValid?1:0);
} catch (Exception e) {
e.printStackTrace();
log.error("定时任务"+cfg.getId()+"执行失败",e);
}finally {
log.debug(String.format("任务执行完成compileId:%s,isValid:%s",compileId,isValid ));
}
}
}
}

View File

@@ -0,0 +1,548 @@
package com.nis.quartz;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import org.quartz.CalendarIntervalScheduleBuilder;
import org.quartz.CalendarIntervalTrigger;
import org.quartz.CronScheduleBuilder;
import org.quartz.DateBuilder;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.PersistJobDataAfterExecution;
import org.quartz.ScheduleBuilder;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.matchers.GroupMatcher;
import org.quartz.impl.triggers.CalendarIntervalTriggerImpl;
import org.quartz.impl.triggers.CronTriggerImpl;
import org.quartz.spi.MutableTrigger;
import com.nis.domain.ScheduleCfg;
import com.nis.util.Constants;
import com.nis.util.DateUtil;
import com.nis.util.DateUtils;
import com.nis.util.DictUtils;
import com.nis.util.StringUtils;
import com.nis.web.dao.SchedulerDao;
import com.nis.web.service.SpringContextHolder;
/**
* 定时任务 配置全量同步时未执行的定时任务加载
* 1、每 n s 执行一次,每次读取 schedule_cfg 最新的数据
* 2、删除或新增 定时任务
* 3、单线程执行
* @author ddm
*
*/
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class ScheduleSyncCfgJob implements Job {
SimpleDateFormat sdf=new SimpleDateFormat(Constants.COMMON_DATE_FORMAT);
private static final Logger log = Logger.getLogger(ScheduleSyncCfgJob.class);
/**
* 状态组格式statusGroup-compileId
*/
private static final String STATUS_GROUP = "syncGroup-";
private static final String STATUS_JOB = "SYNC-JOB";
/**
* 生效标识valid-cronexp
*/
private static final String VALID_KEY = "valid-";
/**
* 失效标识invalid-cronexp
*/
private static final String INVALID_KEY = "invalid-";
private static final JobKey STATUS_JOBKEY = JobKey.jobKey(STATUS_JOB, "syncGroup");
private static final JobDetail STATUS_JOBDETAIL = JobBuilder.newJob(ScheduleStatusJob.class)
.withIdentity(STATUS_JOBKEY)
.storeDurably(true)
.build();
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
Scheduler scheduler = context.getScheduler();
SchedulerDao dao = SpringContextHolder.getBean(SchedulerDao.class);
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
long scheduleCfgId = dataMap.get("scheduleCfgId") == null ? 0:dataMap.getLong("scheduleCfgId");
long limit = dataMap.get("limit") == null ? Constants.MAAT_JSON_SEND_SIZE:dataMap.getLong("limit");
log.info(String.format("Sync定时配置任务开始扫描scheduleCfgId:%s,limit:%s",scheduleCfgId,limit ));
List<ScheduleCfg> newlyCfg = null;
int totalNum = 0;
//全量同步当前状态 0:start:开始 1:init:初始化 2:doing:进行中
String currentStatus = DictUtils.getDictLabel("currrent_sync_status", "status","0");
if(!(currentStatus.equals("0") || currentStatus.equals("1") || currentStatus.equals("2"))) {
do {
newlyCfg = dao.findNewlyCfg(scheduleCfgId, limit,2,null);
if(newlyCfg != null && newlyCfg.size() > 0) {
totalNum += newlyCfg.size();
for(ScheduleCfg cfg : newlyCfg) {//先取消之前的定时配置
Integer compileId = cfg.getCompileId();
try {
//取消之前所有的 trigger
GroupMatcher<TriggerKey> groupMatcher= GroupMatcher.triggerGroupEquals(STATUS_GROUP + compileId);
Set<TriggerKey> triggerKeys = scheduler.getTriggerKeys(groupMatcher);
if(triggerKeys != null && triggerKeys.size() > 0) {
for(TriggerKey tk : triggerKeys) {
scheduler.unscheduleJob(tk);
}
log.info(String.format("Sync定时任务取消成功compile:%s", compileId));
}
} catch (Exception e) {
log.error(String.format("Sync定时任务取消异常compileId:%s", compileId),e);
}
}
int index=0;
for(ScheduleCfg cfg : newlyCfg) {
Integer compileId = cfg.getCompileId();
try {
//判断状态,重新添加最新的 trigger
Integer isValid = cfg.getIsValid();
Integer isAudit = cfg.getIsAudit();
//添加定时任务的条件
if((isValid == 1 && isAudit == 1) || (isValid == 0 && isAudit == 0)) {
//添加定时任务包括valid 和 invalid
addJob(scheduler, cfg,index);
log.info(String.format("Sync定时任务添加成功compile:%s", compileId));
}
} catch (Exception e) {
log.error(String.format("Sync定时任务更新异常compileId:%s", compileId),e);
}
index++;
}
//最后 保存此次 最后的id
ScheduleCfg lastCfg = newlyCfg.get(newlyCfg.size() -1);
scheduleCfgId = lastCfg.getId();
dataMap.put("scheduleCfgId", scheduleCfgId);
log.info(String.format("Sync加载定时任务total num :%s", newlyCfg.size()));
}
} while (newlyCfg != null && newlyCfg.size() > 0);
log.info(String.format("Sync定时配置任务结束执行total num:%s",totalNum));
}
log.info("全量同步中缓存的定时配置正在扫描currentStatus"+currentStatus+"");
}
/**
* 将定时任务信息添加到 定时器框架中调度
* @param scheduler
* @param cfg
* @throws SchedulerException
*/
/*public static void addJob(Scheduler scheduler,ScheduleCfg cfg) throws SchedulerException {
Integer compileId = cfg.getCompileId();
String cronValid = cfg.getCronValid();
String cronInvalid = cfg.getCronInvalid();
Trigger validTrigger = createTrigger(cronValid, compileId, true, cfg);
Trigger invalidTrigger = createTrigger(cronInvalid, compileId, false, cfg);
boolean jobExist = scheduler.checkExists(STATUS_JOBKEY);
if(!jobExist) {//判断 job 是否存在,不存在添加
scheduler.addJob(STATUS_JOBDETAIL, false);
}
boolean checkExists = scheduler.checkExists(validTrigger.getKey());
if(!checkExists) {//判断 valid trigger 是否存在,不存在添加
scheduler.scheduleJob(validTrigger);
}else {
log.warn(String.format("Trigger already exists:%s ", validTrigger.getKey().toString()));
}
checkExists = scheduler.checkExists(invalidTrigger.getKey());
if(!checkExists) {//判断 invalid trigger 是否存在,不存在添加
scheduler.scheduleJob(invalidTrigger);
}else {
log.warn(String.format("Trigger already exists:%s ", invalidTrigger.getKey().toString()));
}
}*/
public static void addJob(Scheduler scheduler,ScheduleCfg cfg,int expire) throws SchedulerException {
List<Trigger> triList = createTrigger(cfg,expire);
boolean jobExist = scheduler.checkExists(STATUS_JOBKEY);
if(!jobExist) {//判断 job 是否存在,不存在添加
scheduler.addJob(STATUS_JOBDETAIL, false);
}
for(Trigger tri : triList) {
boolean checkExists = scheduler.checkExists(tri.getKey());
if(!checkExists) {//判断 valid trigger 是否存在,不存在添加
log.debug(String.format("Sync定时任务添加%s", tri.getKey()));
scheduler.scheduleJob(tri);
log.info(String.format("Sync定时任务添加成功%s", tri.getKey()));
}else {
log.warn(String.format("Triggersync already exists:%s ", tri.getKey().toString()));
}
}
}
/**
* 将页面配置的内容 转换成 trigger
* @param cfg
* @return
*/
public static List<Trigger> createTrigger(ScheduleCfg cfg,int expire){
String mode = cfg.getUserRegion1().toUpperCase();//定时任务运行模式:一次,每天,每周,每月
List<Trigger> triList = null;
switch (mode) {
case "ALWAYS"://单次运行,但只创建单次生效触发器
triList = createSimpleTrigger(cfg,expire);
break;
case "SINGLE"://单次运行
triList = createSimpleTrigger(cfg,expire);
break;
case "EVERYDAY"://每天运行 0 0 0 2/1 * ? ,不符合要求,定义每天都执行,然后在 代码判断 间隔时间
triList = createCalendarIntervalTrigger(cfg);
break;
case "EVERYWEEK"://每周运行
triList = createCalendarIntervalTrigger(cfg);
break;
case "EVERYMONTH"://每月运行
triList = createEveryMonthTrigger(cfg);
break;
default:
log.warn(String.format("unknown mode : %s ", mode));
break;
}
return triList;
}
/**
* 将时间转换成 时分秒
* @param time
* @return
*/
public static List<Integer> parseTime(String time) {
if(StringUtils.isNoneBlank(time)) {
String[] split = time.split(":");
List<Integer> tl = new ArrayList<Integer>(3);
for(String s : split) {
tl.add(Integer.valueOf(s));
}
return tl;
}
return null;
}
public static Trigger createCronTrigger(String cron,Integer compileId,boolean isValid,ScheduleCfg cfg) {
String triggerName = isValid ? (VALID_KEY + cron) : (INVALID_KEY + cron);
JobDataMap dataMap = new JobDataMap();
dataMap.put("isValid", isValid);
dataMap.put("cfg", cfg);
return TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triggerName, STATUS_GROUP+compileId))
.withSchedule(CronScheduleBuilder.cronSchedule(cron))
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.build();
}
/**
* 创建全量同步时未执行的任务,每个任务均为单词任务
* @param cfg
* @return
*/
public static List<Trigger> createSimpleTrigger(ScheduleCfg cfg,int expire){
List<Trigger> triList = new ArrayList<Trigger>();
Integer compileId = cfg.getCompileId();
String cronValid = cfg.getCronValid();
String cronInvalid = cfg.getCronInvalid();
Date validDate = null;
Date invalidDate = null;
if(StringUtils.isNotBlank(cronValid)){
Calendar c = Calendar.getInstance();
c.add(Calendar.MINUTE, (expire+1));
validDate = c.getTime();
}
if(StringUtils.isNotBlank(cronInvalid)){
Calendar c = Calendar.getInstance();
c.add(Calendar.MINUTE, (expire+2));
invalidDate = c.getTime();
}
JobDataMap dataMap = new JobDataMap();
if(validDate!=null){//生效时间如果不为空,则创建定时生效触发器
dataMap.put("isValid", true);
dataMap.put("cfg", cfg);
String triName = VALID_KEY + cfg.getUserRegion1() + "_" + cronValid;
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(validDate)
.build();
triList.add(trigger);
}
if(invalidDate!=null){//失效时间如果不为空,则创建定时失效触发器
dataMap = new JobDataMap();
dataMap.put("isValid", false);
dataMap.put("cfg", cfg);
String triName = INVALID_KEY + cfg.getUserRegion1() + "_" + cronInvalid;
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(invalidDate)
.build();
triList.add(trigger);
}
return triList;
}
/**
* 间隔 n 天 或 n 周执行
* @param cfg
* @return
*/
public static List<Trigger> createCalendarIntervalTrigger(ScheduleCfg cfg) {
List<Trigger> triList = new ArrayList<Trigger>();
Integer compileId = cfg.getCompileId();
String cronValid = cfg.getCronValid();
String cronInvalid = cfg.getCronInvalid();
String dayOrWeek = cfg.getUserRegion1();
Integer interval = Integer.valueOf(cfg.getUserRegion2());
List<Integer> validList = parseTime(cronValid);
List<Integer> invalidList = parseTime(cronInvalid);
Date validStartTime = DateBuilder.todayAt(validList.get(0), validList.get(1), validList.get(2));
Date invalidTime = DateBuilder.todayAt(invalidList.get(0), invalidList.get(1), invalidList.get(2));
CalendarIntervalScheduleBuilder intervalBuilder = null;
if("EVERYDAY".equalsIgnoreCase(dayOrWeek)) {
intervalBuilder = CalendarIntervalScheduleBuilder.calendarIntervalSchedule().withIntervalInDays(interval);
//valid
JobDataMap dataMap = new JobDataMap();
dataMap.put("isValid", true);
dataMap.put("cfg", cfg);
String triName = VALID_KEY + dayOrWeek+"("+interval+")" + "_" + DateUtils.formatDate(validStartTime, Constants.COMMON_DATE_FORMAT);
Trigger validTri = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(intervalBuilder)
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(validStartTime)
.build();
triList.add(validTri);
//invalid
dataMap = new JobDataMap();
dataMap.put("isValid", false);
dataMap.put("cfg", cfg);
triName = INVALID_KEY + dayOrWeek +"("+interval+")" + "_" + DateUtils.formatDate(invalidTime, Constants.COMMON_DATE_FORMAT);
validTri = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(intervalBuilder)
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(invalidTime)
.build();
triList.add(validTri);
}else if("EVERYWEEK".equalsIgnoreCase(dayOrWeek)) {
intervalBuilder = CalendarIntervalScheduleBuilder.calendarIntervalSchedule().withIntervalInWeeks(interval);
String[] weeks = cfg.getUserRegion3().split(",");
for(String week : weeks) {
if(StringUtils.isNoneBlank(week)) {
Date temp = closestAfterWeek(validStartTime, Integer.valueOf(week));
JobDataMap dataMap = new JobDataMap();
dataMap.put("isValid", true);
dataMap.put("cfg", cfg);
String triName = VALID_KEY + dayOrWeek +week+"("+interval+")" + "_" + DateUtils.formatDate(temp, Constants.COMMON_DATE_FORMAT);
Trigger validTri = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(intervalBuilder)
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(temp)
.build();
triList.add(validTri);
//invalid
dataMap = new JobDataMap();
dataMap.put("isValid", false);
dataMap.put("cfg", cfg);
temp = closestAfterWeek(invalidTime, Integer.valueOf(week));
triName = INVALID_KEY + dayOrWeek +week+"("+interval+")" + "_" + DateUtils.formatDate(temp, Constants.COMMON_DATE_FORMAT);
validTri = TriggerBuilder.newTrigger()
.withIdentity(createTiggerKey(triName, STATUS_GROUP+compileId))
.withSchedule(intervalBuilder)
.usingJobData(dataMap)
.forJob(STATUS_JOBDETAIL)
.startAt(temp)
.build();
triList.add(validTri);
}
}
}
return triList;
}
/**
* 每月 执行
* @param cfg
* @return
*/
public static List<Trigger> createEveryMonthTrigger(ScheduleCfg cfg){
String dayWeek = cfg.getUserRegion3();
String cronInvalid = cfg.getCronInvalid();
String cronValid = cfg.getCronValid();
StringBuilder cronSb = new StringBuilder();
Trigger trigger = null;
List<Integer> validList = parseTime(cronValid);//time 转换
List<Integer> invalidList = parseTime(cronInvalid);//time 转换
List<Trigger> triList = new ArrayList<Trigger>();
String userRegion4 = cfg.getUserRegion4().toUpperCase();
if("day".equalsIgnoreCase(dayWeek)) {//指定天
boolean hasL = userRegion4.contains("L");
StringBuilder chooseSb = new StringBuilder();
for(String str : userRegion4.split(",")) {
if(!"L".equalsIgnoreCase(str.trim())) {
chooseSb.append(",").append(str);
}
}
chooseSb.deleteCharAt(0);
cronSb.append(validList.get(2)).append(" ")//秒
.append(validList.get(1)).append(" ")//分
.append(validList.get(0)).append(" ")//小时
.append(chooseSb.toString()).append(" ")//日
.append(cfg.getUserRegion2()).append(" ")//月
.append("?").append(" ");//周
trigger = createCronTrigger(cronSb.toString(), cfg.getCompileId(), true, cfg);
triList.add(trigger);
cronSb.setLength(0);
cronSb.append(invalidList.get(2)).append(" ")//秒
.append(invalidList.get(1)).append(" ")//分
.append(invalidList.get(0)).append(" ")//小时
.append(chooseSb.toString()).append(" ")//日
.append(cfg.getUserRegion2()).append(" ")//月
.append("?").append(" ");//周
trigger = createCronTrigger(cronSb.toString(), cfg.getCompileId(), false, cfg);
triList.add(trigger);
if(hasL) {// 月的最后一天quartz 不支持 1,L 这种指定,所以 L单独处理一下
cronSb.setLength(0);
cronSb.append(validList.get(2)).append(" ")//秒
.append(validList.get(1)).append(" ")//分
.append(validList.get(0)).append(" ")//小时
.append("L").append(" ")//日
.append(cfg.getUserRegion2()).append(" ")//月
.append("?").append(" ");//周
trigger = createCronTrigger(cronSb.toString(), cfg.getCompileId(), true, cfg);
triList.add(trigger);
cronSb.setLength(0);
cronSb.append(invalidList.get(2)).append(" ")//秒
.append(invalidList.get(1)).append(" ")//分
.append(invalidList.get(0)).append(" ")//小时
.append("L").append(" ")//日
.append(cfg.getUserRegion2()).append(" ")//月
.append("?").append(" ");//周
trigger = createCronTrigger(cronSb.toString(), cfg.getCompileId(), false, cfg);
triList.add(trigger);
}
}else if ("week".equalsIgnoreCase(dayWeek)) {//指定周1#2: 第一周的周二4L:最后一周的周四
for(String nthWeek : userRegion4.split(",")) {//第几周
for(String week : cfg.getUserRegion5().split(",")) {//星期几
cronSb.setLength(0);
cronSb.append(validList.get(2)).append(" ")//秒
.append(validList.get(1)).append(" ")//分
.append(validList.get(0)).append(" ")//小时
.append("?").append(" ")//日
.append(cfg.getUserRegion2()).append(" ");//月
if("L".equalsIgnoreCase(nthWeek)) {
cronSb.append(week).append("L");//周
}else {
cronSb.append(week).append("#").append(nthWeek);//周
}
trigger = createCronTrigger(cronSb.toString(), cfg.getCompileId(), true, cfg);
triList.add(trigger);
cronSb.setLength(0);
cronSb.append(invalidList.get(2)).append(" ")//秒
.append(invalidList.get(1)).append(" ")//分
.append(invalidList.get(0)).append(" ")//小时
.append("?").append(" ")//日
.append(cfg.getUserRegion2()).append(" ");//月
if("L".equalsIgnoreCase(nthWeek)) {
cronSb.append(week).append("L");//周
}else {
cronSb.append(week).append("#").append(nthWeek);//周
}
trigger = createCronTrigger(cronSb.toString(), cfg.getCompileId(), false, cfg);
triList.add(trigger);
}
}
}
return triList;
}
/**
* 查找最近的 星期几 ,包括今天
* @param date
* @param w 周一开始 1 -7
* @return
*/
public static Date closestAfterWeek(Date date,int w) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int i = cal.get(Calendar.DAY_OF_WEEK);//周日开始 1-7
i = (i==1)? 7: i-1;//转换为 周一到 周日 1-7
cal.add(Calendar.DAY_OF_MONTH, (i>w)?(7-(i-w)) : (w-i));
return cal.getTime();
}
public static TriggerKey createTiggerKey(String name,String group) {
TriggerKey key = new TriggerKey(name, group);
return key;
}
/**
* jquery cron 生成的cron 表达式quartz 不能直接使用,需要做些修改
* @param cron
* @return
*/
public static String modifyCronExp(String cron) {
String[] cronArr = cron.split("\\s");
if("*".equals(cronArr[4])) {
cronArr[4] = "?";
}else {
cronArr[3] = "*";
cronArr[2] = "?";
}
return "0 " + StringUtils.join(cronArr, " ");
}
public static void main(String[] args) {
CronTriggerImpl cron = new CronTriggerImpl();
try {
String exp = "0 0 0 ? 1,2 1#4";
cron.setCronExpression(exp);
System.out.println(cron);
} catch (ParseException e) {
e.printStackTrace();
}
}
}

View File

@@ -7,6 +7,7 @@ import com.nis.domain.dashboard.SysIspInfo;
import com.nis.domain.dashboard.codedic.CodeAppDic;
import com.nis.domain.dashboard.codedic.CodeBehaviorTypeDic;
import com.nis.domain.dashboard.codedic.CodeBrowserTypeDic;
import com.nis.domain.dashboard.codedic.CodeDomainDic;
import com.nis.domain.dashboard.codedic.CodeOsTypeDic;
import com.nis.domain.dashboard.codedic.CodeProtocolTypeDic;
import com.nis.domain.dashboard.codedic.CodeServiceTypeDic;
@@ -14,6 +15,7 @@ import com.nis.domain.dashboard.codedic.CodeWebServiceDic;
import com.nis.web.dao.dashboard.codedic.CodeAppDicDao;
import com.nis.web.dao.dashboard.codedic.CodeBehaviorTypeDicDao;
import com.nis.web.dao.dashboard.codedic.CodeBrowserTypeDicDao;
import com.nis.web.dao.dashboard.codedic.CodeDomainDicDao;
import com.nis.web.dao.dashboard.codedic.CodeOsTypeDicDao;
import com.nis.web.dao.dashboard.codedic.CodeProtocolTypeDicDao;
import com.nis.web.dao.dashboard.codedic.CodeResult;
@@ -31,6 +33,7 @@ public class CodeDicUtils {
private final static CodeServiceTypeDicDao codeServiceTypeDicDao = SpringContextHolder.getBean(CodeServiceTypeDicDao.class);
private final static CodeWebServiceDicDao codeWebServiceDicDao = SpringContextHolder.getBean(CodeWebServiceDicDao.class);
private final static CodeSysIspInfoDicDao codeSysIspInfoDicDao = SpringContextHolder.getBean(CodeSysIspInfoDicDao.class);
private final static CodeDomainDicDao codeDomainDicDao = SpringContextHolder.getBean(CodeDomainDicDao.class);
private static final String APP_CODE="appCode";
@@ -42,6 +45,7 @@ public class CodeDicUtils {
private static final String WEB_CODE="webCode";
private static final String ISP_CODE="ispCode";
private static final String DOMAIN_CODE="domainCode";
/**
* 适用于大屏图表标签显示
*/
@@ -178,6 +182,23 @@ public class CodeDicUtils {
}
}
return result;
}else if (name.equals(DOMAIN_CODE)) {
// List<CodeWebServiceDic> codeDicList = (List<CodeWebServiceDic>) CacheUtils.get(WEB_CODE);
// if(StringUtil.isEmpty(codeDicList)){
// codeDicList = codeWebServiceDicDao.getCodeDicList();
// CacheUtils.put(WEB_CODE, codeDicList);
// }
List<CodeDomainDic> codeDicList = codeDomainDicDao.getCodeDicList();
if(codeDicList!=null&&codeDicList.size()>0){
for (int i = 0; i < codeDicList.size(); i++) {
CodeResult codeResult = new CodeResult();
codeResult.setItem(codeDicList.get(i).getDomain());
codeResult.setCode(String.valueOf(codeDicList.get(i).getId()));
result.add(codeResult);
}
}
return result;
}
return result;
}

View File

@@ -1,11 +1,17 @@
package com.nis.util;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.*;
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.configuration.*;
import com.nis.web.service.BaseService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -15,13 +21,6 @@ import com.google.common.collect.Lists;
import com.googlecode.ipv6.IPv6Address;
import com.googlecode.ipv6.IPv6Network;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.configuration.AppIpCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.maat.MaatCfg.DigestCfg;
import com.nis.domain.maat.MaatCfg.GroupCfg;
import com.nis.domain.maat.MaatCfg.IpCfg;
@@ -196,7 +195,7 @@ public class ConfigConvertUtil {
BeanUtils.copyProperties(baseIpCfg, cfg);
cfg.setGroupId(asnIpCfg.getAsnIpGroup());
cfg.setRegionId(asnIpCfg.getRegionId());
String userRegion = "ASN_ID=" + asnIpCfg.getUserRegion1();
String userRegion = "ASN_ID=AS" + asnIpCfg.getUserRegion1();
cfg.setUserRegion(userRegion);
cfg.setIsValid(isValid);
cfg.setAuditTime(opTime);
@@ -233,7 +232,6 @@ public class ConfigConvertUtil {
* @param dstList
* @param srcList
* @param cfgType1为IP类型2为字符串类型3为增强字符串4数值类型5摘要类,6回调类[但字符串类域配置和增强字符串域配置在接口参数中同属于strRegionList]
* @param baseCfg配置基本信息
* @param groupRelationList
* 配置分组列表
* @return
@@ -248,7 +246,7 @@ public class ConfigConvertUtil {
List<Integer> regionIdList = Lists.newArrayList();
T srcCfg = srcList.get(i);
BaseIpCfg baseIpCfg = new BaseIpCfg();
BeanUtils.copyProperties(srcCfg, baseIpCfg);
BeanUtils.copyProperties(srcCfg, baseIpCfg,new String[]{"menuNameCode"});
regionIdList.add(baseIpCfg.getRegionId());
IpCfg cfg = new IpCfg();
BeanUtils.copyProperties(baseIpCfg, cfg);
@@ -325,10 +323,10 @@ public class ConfigConvertUtil {
} else if (cfgType == 4) {
for (int i = 0; i < srcList.size(); i++) {
BaseCfg baseCfg = new BaseCfg();
BeanUtils.copyProperties(srcList.get(i), baseCfg);//拷贝公共属性
BeanUtils.copyProperties(srcList.get(i), baseCfg,new String[]{"menuNameCode"});//拷贝公共属性
// 一条业务配置创建一个分组
com.nis.domain.maat.MaatCfg.NumBoundaryCfg cfg = new com.nis.domain.maat.MaatCfg.NumBoundaryCfg();
BeanUtils.copyProperties(srcList.get(i), cfg);
BeanUtils.copyProperties(srcList.get(i), cfg,new String[]{"menuNameCode"});
GroupCfg group = new GroupCfg();
group.setGroupId(baseCfg.getGroupId());
group.setCompileId(baseCfg.getCompileId());
@@ -344,10 +342,10 @@ public class ConfigConvertUtil {
} else if (cfgType == 5) {
for (int i = 0; i < srcList.size(); i++) {
BaseCfg baseCfg = new BaseCfg();
BeanUtils.copyProperties(srcList.get(i), baseCfg);//拷贝公共属性
BeanUtils.copyProperties(srcList.get(i), baseCfg,new String[]{"menuNameCode"});//拷贝公共属性
// 一条业务配置创建一个分组
com.nis.domain.maat.MaatCfg.DigestCfg cfg = new com.nis.domain.maat.MaatCfg.DigestCfg();
BeanUtils.copyProperties(srcList.get(i), cfg);
BeanUtils.copyProperties(srcList.get(i), cfg,new String[]{"menuNameCode"});
GroupCfg group = new GroupCfg();
group.setGroupId(baseCfg.getGroupId());
group.setCompileId(baseCfg.getCompileId());
@@ -395,31 +393,45 @@ public class ConfigConvertUtil {
*/
public static List<IpCfg> ipConvert(IpCfg dstIp, BaseIpCfg srcIp) {
List<IpCfg> ipConvertList = Lists.newArrayList();
boolean isRange = ((srcIp.getIpPattern() != null && srcIp.getIpPattern() == 2)
|| (srcIp.getSrcIpAddress() != null && srcIp.getSrcIpAddress().indexOf("-") > -1)
|| (srcIp.getDestIpAddress() != null && srcIp.getDestIpAddress().indexOf("-") > -1));
if (isRange) {
List<IpCfg> tempList = Lists.newArrayList();
List<IpCfg> tempList1 = Lists.newArrayList();
if (srcIp.getIpType().intValue() == 4) {
if (srcIp.getSrcIpAddress() != null) {
String startIpPart = srcIp.getSrcIpAddress().split("-")[0];
String endIpPart = srcIp.getSrcIpAddress().split("-")[1];
Integer startNum = Integer.parseInt(startIpPart.split("\\.")[3]);
Integer endNum = Integer.parseInt(endIpPart.split("\\.")[3]);
for (int i = startNum; i <= endNum; i++) {
IpCfg tempIp = new IpCfg();
BeanUtils.copyProperties(dstIp, tempIp);
tempIp.setSrcIp(startIpPart.substring(0, startIpPart.lastIndexOf(".") + 1) + i);
tempIp.setSrcIpMask("255.255.255.255");
tempList.add(tempIp);
List<IpCfg> tempList = Lists.newArrayList();
List<IpCfg> tempList1 = Lists.newArrayList();
if (srcIp.getIpType().equals(4)) {// IP V4
if(srcIp.getSrcIpPattern().equals(2)) {//源IP范围
if (srcIp.getSrcIpAddress() != null) {
String startIpPart = srcIp.getSrcIpAddress().split("-")[0];
String endIpPart = srcIp.getSrcIpAddress().split("-")[1];
Integer startNum = Integer.parseInt(startIpPart.split("\\.")[3]);
Integer endNum = Integer.parseInt(endIpPart.split("\\.")[3]);
for (int i = startNum; i <= endNum; i++) {
IpCfg tempIp = new IpCfg();
BeanUtils.copyProperties(dstIp, tempIp);
tempIp.setSrcIp(startIpPart.substring(0, startIpPart.lastIndexOf(".") + 1) + i);
tempIp.setSrcIpMask("255.255.255.255");
tempList.add(tempIp);
}
}else {
dstIp.setSrcIp("0.0.0.0");
dstIp.setSrcIpMask("255.255.255.255");
tempList.add(dstIp);
}
}else if(srcIp.getSrcIpPattern().equals(1)){
Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]);
if (srcMaskNum == 0) {
dstIp.setSrcIpMask("0.0.0.0");
} else {
dstIp.setSrcIp("0.0.0.0");
dstIp.setSrcIpMask("255.255.255.255");
tempList.add(dstIp);
dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum));
}
if (srcIp.getDestIpAddress() != null) {
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
tempList.add(dstIp);
}else if(srcIp.getSrcIpPattern().equals(3)){
dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("255.255.255.255");
tempList.add(dstIp);
}else {
throw new RuntimeException("Unsupported IP Pattern " + srcIp.getSrcIpPattern());
}
if (srcIp.getDestIpAddress() != null) {
if(srcIp.getDestIpPattern().equals(2)) {
String startIpPart = srcIp.getDestIpAddress().split("-")[0];
String endIpPart = srcIp.getDestIpAddress().split("-")[1];
Integer startNum = Integer.parseInt(startIpPart.split("\\.")[3]);
@@ -439,217 +451,93 @@ public class ConfigConvertUtil {
}
}
tempList.clear();
} else {
}else if(srcIp.getDestIpPattern().equals(1)) {
Integer dstMaskNum = Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]);
for (IpCfg _cfg : tempList) {
_cfg.setDstIp("0.0.0.0");
_cfg.setSrcIpMask("255.255.255.255");
convertPortValues(_cfg, srcIp);
IpCfg tempIp = new IpCfg();
BeanUtils.copyProperties(_cfg, tempIp);
if (dstMaskNum == 0) {
tempIp.setDstIpMask("0.0.0.0");
} else {
tempIp.setDstIpMask(IpUtil.convertMask(dstMaskNum));
}
tempIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
if (!tempIp.getSrcIp().equals(tempIp.getDstIp())) {
// 处理
convertPortValues(tempIp, srcIp);
tempList1.add(tempIp);
}
}
tempList.clear();
}else {
for (IpCfg _cfg : tempList) {
IpCfg tempIp = new IpCfg();
BeanUtils.copyProperties(_cfg, tempIp);
tempIp.setDstIp(srcIp.getDestIpAddress());
if (!tempIp.getSrcIp().equals(tempIp.getDstIp())) {
tempIp.setDstIpMask("255.255.255.255");
// 处理
convertPortValues(tempIp, srcIp);
tempList1.add(tempIp);
}
}
tempList.clear();
}
if (tempList1.size() > 0) {
ipConvertList.addAll(tempList1);
} else {
ipConvertList.addAll(tempList);
}else {
for (IpCfg _cfg : tempList) {
_cfg.setDstIp("0.0.0.0");
_cfg.setSrcIpMask("255.255.255.255");
convertPortValues(_cfg, srcIp);
}
} else if (srcIp.getIpType().intValue() == 6) {
if (srcIp.getSrcIpAddress() != null) {
}
if (tempList1.size() > 0) {
ipConvertList.addAll(tempList1);
} else {
ipConvertList.addAll(tempList);
}
}else if(srcIp.getIpType().equals(6)){// IP V6
if (srcIp.getSrcIpAddress() != null) {
if(srcIp.getSrcIpPattern().equals(2)) {
IPv6Address address1 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[0]);
IPv6Address address2 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[1]);
IPv6Network network = IPv6Network.fromTwoAddresses(address1, address2);
dstIp.setSrcIp(address1.toString());
dstIp.setSrcIpMask(network.getNetmask().asAddress().toString());
} else {
dstIp.setSrcIp("::");
}else if(srcIp.getSrcIpPattern().equals(1)){// IP/掩码
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress());
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString());
}else {// IP
dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
}
if (srcIp.getDestIpAddress() != null) {
} else {
dstIp.setSrcIp("::");
dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
}
if (srcIp.getDestIpAddress() != null) {
if(srcIp.getDestIpPattern().equals(2)) {
IPv6Address address1 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[0]);
IPv6Address address2 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[1]);
IPv6Network network = IPv6Network.fromTwoAddresses(address1, address2);
dstIp.setDstIp(address1.toString());
dstIp.setDstIpMask(network.getNetmask().asAddress().toString());
} else {
dstIp.setDstIp("::");
dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
}
ipConvertList.add(dstIp);
} else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
} else {
if (srcIp.getSrcIpAddress() != null) {
if (srcIp.getSrcIpAddress().indexOf("/") != -1) {
if (srcIp.getIpType() == 4 /* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4目的ip为ipv6
Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]);
if (srcMaskNum == 0) {
dstIp.setSrcIpMask("0.0.0.0");
} else {
dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum));
}
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
} else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6目的ip为ipv4
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress());
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString());
} /*
* else { Pattern
* patternV4Subnet=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Pattern
* patternV6Subnet=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher
* matchernV4Subnet=patternV4Subnet.matcher(srcIp.getSrcIpAddress()); Matcher
* matcherV6Subnet=patternV6Subnet.matcher(srcIp.getSrcIpAddress());
* if(matchernV4Subnet.matches()) { Integer srcMaskNum =
* Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]); if(srcMaskNum==0){
* dstIp.setSrcIpMask("0.0.0.0"); }else{
* dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum)); }
* dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); }else
* if(matcherV6Subnet.matches()){ IPv6Network strangeNetwork =
* IPv6Network.fromString(srcIp.getSrcIpAddress());
* dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
* dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString()); }else
* { throw new RuntimeException("Invalid IP/subnet mask format"); } }
*/
else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
} else {
if (srcIp.getIpType() == 4/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4目的ip为ipv6
dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("255.255.255.255");
} else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6目的ip为ipv4
dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
} /*
* else {//all Pattern patternV4=Pattern.compile(Constants.IPV4_IP_REGEXP);
* Pattern patternV6=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher
* matcherV4=patternV4.matcher(srcIp.getSrcIpAddress()); Matcher
* matcherV6=patternV6.matcher(srcIp.getSrcIpAddress()); if(matcherV4.matches())
* { dstIp.setSrcIp(srcIp.getSrcIpAddress());
* dstIp.setSrcIpMask("255.255.255.255"); }else if(matcherV6.matches()) {
* dstIp.setSrcIp(srcIp.getSrcIpAddress());
* dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); }else { throw
* new RuntimeException("Invalid IP format"); } }
*/
else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
}
} else {
if (srcIp.getIpType() == 4/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4目的ip为ipv6
dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("255.255.255.255");
} else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6目的ip为ipv4
dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
} /*
* else {//all dstIp.setSrcIp(srcIp.getSrcIpAddress());
* dstIp.setSrcIpMask("255.255.255.255"); }
*/
else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
}
if (srcIp.getDestIpAddress() != null) {
if (srcIp.getDestIpAddress().indexOf("/") != -1) {
if (srcIp.getIpType() == 4/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6目的ip为ipv4
Integer dstMaskNum = Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]);
if (dstMaskNum == 0) {
dstIp.setDstIpMask("0.0.0.0");
} else {
dstIp.setDstIpMask(IpUtil.convertMask(dstMaskNum));
;
}
dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
} else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4目的ip为ipv6
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress());
dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString());
} /*
* else { Pattern
* patternV4Subnet=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Pattern
* patternV6Subnet=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher
* matchernV4Subnet=patternV4Subnet.matcher(srcIp.getDestIpAddress()); Matcher
* matcherV6Subnet=patternV6Subnet.matcher(srcIp.getDestIpAddress());
* if(matchernV4Subnet.matches()) { Integer dstMaskNum =
* Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]); if(dstMaskNum==0){
* dstIp.setDstIpMask("0.0.0.0"); }else{
* dstIp.setDstIpMask(IpUtil.convertMask(dstMaskNum));; }
* dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); }else
* if(matcherV6Subnet.matches()){ IPv6Network strangeNetwork =
* IPv6Network.fromString(srcIp.getDestIpAddress());
* dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
* dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString()); }else
* { throw new RuntimeException("Invalid IP/subnet mask format"); } }
*/
else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
} else {
if (srcIp.getIpType() == 4/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6目的ip为ipv4
dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("255.255.255.255");
} else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4目的ip为ipv6
dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
} /*
* else {//all Pattern patternV4=Pattern.compile(Constants.IPV4_IP_REGEXP);
* Pattern patternV6=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher
* matcherV4=patternV4.matcher(srcIp.getDestIpAddress()); Matcher
* matcherV6=patternV6.matcher(srcIp.getDestIpAddress());
* if(matcherV4.matches()) { dstIp.setDstIp(srcIp.getDestIpAddress());
* dstIp.setDstIpMask("255.255.255.255"); }else if(matcherV6.matches()) {
* dstIp.setDstIp(srcIp.getDestIpAddress());
* dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); }else { throw
* new RuntimeException("invalid ip format"); } }
*/
else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
}
} else {
if (srcIp.getIpType() == 4/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6目的ip为ipv4
dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("255.255.255.255");
} else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4目的ip为ipv6
}else if(srcIp.getDestIpPattern().equals(1)) {// IP/掩码
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress());
dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString());
}else {// IP
dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
} /*
* else {//all dstIp.setDstIp(srcIp.getDestIpAddress());
* dstIp.setDstIpMask("255.255.255.255"); }
*/
else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
}
if (srcIp.getSrcPort() != null) {
if (srcIp.getSrcPort().indexOf("/") != -1) {
String srcMaskNum = srcIp.getSrcPort().split("/")[1];
dstIp.setSrcPortMask(srcMaskNum);
dstIp.setSrcPort(srcIp.getSrcPort().split("/")[0]);
} else {
dstIp.setSrcPort(srcIp.getSrcPort());
dstIp.setSrcPortMask("65535");
}
} else {
dstIp.setSrcPort("0");
dstIp.setSrcPortMask("65535");
}
if (srcIp.getDestPort() != null) {
if (srcIp.getDestPort().indexOf("/") != -1) {
String dstMaskNum = srcIp.getDestPort().split("/")[1];
dstIp.setDstPortMask(dstMaskNum);
dstIp.setDstPort(srcIp.getDestPort().split("/")[0]);
} else {
dstIp.setDstPort(srcIp.getDestPort());
dstIp.setDstPortMask("65535");
}
} else {
dstIp.setDstPort("0");
dstIp.setDstPortMask("65535");
dstIp.setDstIp("::");
dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
}
convertPortValues(dstIp, srcIp);
ipConvertList.add(dstIp);
}else {
throw new RuntimeException("Unsupported IP type " + srcIp.getIpType());
}
return ipConvertList;
}
@@ -687,4 +575,421 @@ public class ConfigConvertUtil {
dstIp.setDstPortMask("65535");
}
}
/**
*Obj 组maat配置转换
* @param <T>
* @param <T>
* @param dstList
* @param srcList
* @param cfgType1为IP类型2为字符串类型3为增强字符串4数值类型5摘要类,6回调类[但字符串类域配置和增强字符串域配置在接口参数中同属于strRegionList]
* @param baseCfg配置基本信息
* @param groupRelationList
* 配置分组列表
* @return
*/
public static <T> Map<String, List> objGroupCfgConvert(Map<Integer,FunctionServiceDict> dictMap,List dstList, List<T> srcList, Integer cfgType, BaseCfg baseCfg,
List groupRelationList, Map<String,Object> maatTableMap, Set<Integer> groupIdSet) {
long start=System.currentTimeMillis(),end=0l;
Map<String, List> map = new HashMap();
if (cfgType == 1) {
List numRegionList = new ArrayList();
int pos=0;
Set<Integer> numGroupVals = new HashSet<>();
List<Integer> regionIdList = calRangeIps(srcList);//ConfigServiceUtil.getId(3, srcList.size());
for (int i = 0; i < srcList.size(); i++) {
T srcCfg = srcList.get(i);
BaseIpCfg baseIpCfg = new BaseIpCfg();
BeanUtils.copyProperties(srcCfg, baseIpCfg);
IpCfg cfg = new IpCfg();
BeanUtils.copyProperties(baseIpCfg, cfg);
// 区域IP配置多条IP配置属于同一个分组其他业务配置IP一条配置一个分组
// if(groupId==0 || !cfg.getCfgType().equals(Constants.AREA_REGION)){
if (!groupIdSet.contains(baseIpCfg.getGroupId())) {
GroupCfg group = new GroupCfg();
//groupId = ConfigServiceUtil.getId(2, 1).get(0);
group.setGroupId(baseIpCfg.getGroupId());
group.setCompileId(baseCfg.getCompileId());
group.setAuditTime(baseCfg.getAuditTime());
group.setIsValid(baseCfg.getIsValid());
groupRelationList.add(group);
groupIdSet.add(baseIpCfg.getGroupId());
}
cfg.setGroupId(baseIpCfg.getGroupId());
cfg.setAuditTime(baseCfg.getAuditTime());
cfg.setIsValid(baseCfg.getIsValid());
if(maatTableMap.containsKey("ipMaatTable")){
Map<String,String> ipMaatTable=(Map<String,String>)maatTableMap.get("ipMaatTable");
cfg.setCfgType(ipMaatTable.get(baseIpCfg.getGroupId().toString()));
}
List<IpCfg> cfgs = ipConvert(cfg, baseIpCfg);
if (cfgs.size() > 1) {
List<Integer> ids =regionIdList.subList(pos,pos+cfgs.size());
//支持range????
for (int j = 1; j < cfgs.size(); j++) {
cfgs.get(j).setRegionId(ids.get(j-1));
}
pos+=cfgs.size();
}
dstList.addAll(cfgs);
// 如果protocolId非空非零需要构造数值型域配置多条相同协议的IP只需要一条数值域配置目前没有不同协议IP&情况)
//分组复用每个IP组还需要不同的数值域组么 answer:一个就行了
if (baseCfg!=null&&baseCfg.getServiceId()!=null&&baseCfg.getServiceId()>0&&dictMap.containsKey(baseCfg.getServiceId())) {
FunctionServiceDict dict=dictMap.get(baseCfg.getServiceId());
Integer protocolId=dict.getProtocolId();
if (protocolId>0&&!numGroupVals.contains(protocolId)) {
GroupCfg group1 = new GroupCfg();
group1.setGroupId(ConfigServiceUtil.getId(2, 1).get(0));
group1.setCompileId(baseCfg.getCompileId());
group1.setAuditTime(baseCfg.getAuditTime());
group1.setIsValid(baseCfg.getIsValid());
groupRelationList.add(group1);
NumBoundaryCfg numCfg = new NumBoundaryCfg();
numCfg.initDefaultValue();
numCfg.setLowBoundary(protocolId);
numCfg.setUpBoundary(protocolId);
numCfg.setRegionId(ConfigServiceUtil.getId(3, 1).get(0));
numCfg.setAuditTime(baseCfg.getAuditTime());
numCfg.setGroupId(group1.getGroupId());
numCfg.setIsValid(baseCfg.getIsValid());
if(maatTableMap.containsKey("protocolMaatTable")){
numCfg.setCfgType(maatTableMap.get("protocolMaatTable").toString());
}
numRegionList.add(numCfg);
map.put("numRegionList", numRegionList);
numGroupVals.add(protocolId);
}
}
}
regionIdList.clear();
} else if (cfgType == 2 || cfgType == 3) {
//List<Integer> groupIdList = ConfigServiceUtil.getId(2, srcList.size());
//List<Integer> regionIdList = ConfigServiceUtil.getId(3, srcList.size());
for (int i = 0; i < srcList.size(); i++) {
BaseStringCfg baserStringCfg=new BaseStringCfg();
BeanUtils.copyProperties(srcList.get(i),baserStringCfg);
if(!groupIdSet.contains(baserStringCfg.getGroupId())){
GroupCfg group = new GroupCfg();
group.setGroupId(baserStringCfg.getGroupId());
group.setCompileId(baseCfg.getCompileId());
group.setAuditTime(baseCfg.getAuditTime());
group.setIsValid(baseCfg.getIsValid());
groupRelationList.add(group);
groupIdSet.add(baserStringCfg.getGroupId());
}
StringCfg cfg = new StringCfg();
BeanUtils.copyProperties(srcList.get(i), cfg);
cfg.setGroupId(baserStringCfg.getGroupId());
cfg.setRegionId(baserStringCfg.getRegionId());
cfg.setAuditTime(baseCfg.getAuditTime());
cfg.setIsValid(baseCfg.getIsValid());
// 处理配置关键字转译
cfg.setCfgKeywords(keywordsEscape(cfg.getCfgKeywords()));
// 增强字符串转换
cfg.setDistrict(keywordsEscape(cfg.getDistrict()));
if(maatTableMap.containsKey("stringMaatTable")){
Map<String,String> stringMaatTable=(Map<String,String>)maatTableMap.get("stringMaatTable");
cfg.setCfgType(stringMaatTable.get(baserStringCfg.getGroupId().toString()));
}
dstList.add(cfg);
}
} else if (cfgType == 4) {
// List<Integer> groupIdList = ConfigServiceUtil.getId(2, srcList.size());
// List<Integer> regionIdList = ConfigServiceUtil.getId(3, srcList.size());
for (int i = 0; i < srcList.size(); i++) {
// 一条业务配置创建一个分组
NumBoundaryCfg cfg = new NumBoundaryCfg();
BeanUtils.copyProperties(srcList.get(i), cfg);
if(!groupIdSet.contains(cfg.getGroupId())){
GroupCfg group = new GroupCfg();
group.setGroupId(cfg.getGroupId());
group.setCompileId(baseCfg.getCompileId());
group.setAuditTime(baseCfg.getAuditTime());
group.setIsValid(baseCfg.getIsValid());
groupRelationList.add(group);
groupIdSet.add(cfg.getGroupId());
}
cfg.setGroupId(cfg.getGroupId());
cfg.setRegionId(cfg.getRegionId());
cfg.setAuditTime(baseCfg.getAuditTime());
cfg.setIsValid(baseCfg.getIsValid());
dstList.add(cfg);
}
} else if (cfgType == 5) {
//List<Integer> groupIdList = ConfigServiceUtil.getId(2, srcList.size());
//List<Integer> regionIdList = ConfigServiceUtil.getId(3, srcList.size());
for (int i = 0; i < srcList.size(); i++) {
// 一条业务配置创建一个分组
com.nis.domain.maat.MaatCfg.DigestCfg cfg = new com.nis.domain.maat.MaatCfg.DigestCfg();
BeanUtils.copyProperties(srcList.get(i), cfg);
if(!groupIdSet.contains(cfg.getGroupId())){
GroupCfg group = new GroupCfg();
group.setGroupId(cfg.getGroupId());
group.setCompileId(baseCfg.getCompileId());
group.setAuditTime(baseCfg.getAuditTime());
group.setIsValid(baseCfg.getIsValid());
groupRelationList.add(group);
groupIdSet.add(cfg.getGroupId());
}
cfg.setGroupId(cfg.getGroupId());
cfg.setRegionId(cfg.getRegionId());
cfg.setAuditTime(baseCfg.getAuditTime());
cfg.setIsValid(baseCfg.getIsValid());
dstList.add(cfg);
}
} else {
dstList.addAll(srcList);
}
map.put("groupList", groupRelationList);
map.put("dstList", dstList);
end=System.currentTimeMillis();
logger.info("objGroupCfgConvert cost:"+(end-start));
return map;
}
/**
* 转换成字符串
*
* @param obj
* @return
*/
public static <T> String gsonToJson(T obj) {
Gson gson = new GsonBuilder().disableHtmlEscaping().excludeFieldsWithoutExposeAnnotation()
.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
@Override
public JsonElement serialize(Date src, Type type, JsonSerializationContext context) {
String format = "yyyy-MM-dd HH:mm:ss";
long time = ((Date) src).getTime();
SimpleDateFormat sdf = new SimpleDateFormat(format);
return new JsonPrimitive(sdf.format(time));
}
}).create();
return gson.toJson(obj);
}
/**
* 字符串转成对象
*
* @param jsonString
* @param cls
* @return
*/
public static <T> T gsonFromJson(String jsonString, Class<T> cls) {
Gson gson = new GsonBuilder().registerTypeAdapter(new TypeToken<Map>() {
}.getType(), new BaseService.MapTypeAdapter()).registerTypeAdapter(new TypeToken<List>() {
}.getType(), new BaseService.MapTypeAdapter()).create();
return gson.fromJson(jsonString, cls);
}
/**
* 公共分组生成默认自定义域
* @param userRegionMap
* @param serviceId
* @return
*/
public static String generateCommonGroupDefaultUserRegion(Map<String,Object> userRegionMap,Integer serviceId){
if(userRegionMap==null){
userRegionMap=new HashMap<>();
}
if(serviceId.equals(576)){
userRegionMap.put("method","block");
userRegionMap.put("code",404);
userRegionMap.put("message","");
userRegionMap.put("html_profile",0);
return gsonToJson(userRegionMap);
}else if(serviceId.equals(512)){
if(userRegionMap.isEmpty()){
//keyring
userRegionMap.put("keyring", 1);
Map<String,Object> map = new HashMap();
//exclusions
map.put("ev_cert", 0);
map.put("cert_transparency", 0);
map.put("pinning", 1);
map.put("client_cert_req", 1);
map.put("protocol_errors", 1);
userRegionMap.put("exclusions", map);
//cert_verify
Map<String,Object> map1=new HashMap<>();
map=new HashMap<>();
map.put("cn",1);
map.put("issuer",1);
map.put("self-signed",1);
map.put("expiration",1);
map1.put("approach", map);
userRegionMap.put("cert_verify", map1);
//ssl_ver
map=new HashMap<>();
map.put("mirror_client", 1);
map.put("allow_http2", 1);
// map.put("min", "ssl3");
// map.put("max", "tls13");
userRegionMap.put("ssl_ver", map);
//decrypt_mirror
map=new HashMap<>();
map.put("enable", 0);
userRegionMap.put("decrypt_mirror", map);
}
return gsonToJson(userRegionMap);
}else if(serviceId.equals(592)){
return "{}";
}else if(serviceId.equals(18)){
return "DNS_STRATEGY=0";
}else{
return "0";
}
}
public static Map<String,Object> convertCommonGroupMaatTable(CfgIndexInfo cfgIndexInfo, List<Map<String, Object>> cfgList){
Map<String,Object> maatTableMap=new HashMap<>();
Map<String,Object> commonGroupIds= MapUtils.isEmpty(cfgIndexInfo.getUserRegion())?(Map<String,Object>)gsonFromJson(cfgIndexInfo.getCommonGroupIds(),Map.class):cfgIndexInfo.getUserRegion();
for (Map<String, Object> map : cfgList) {
String cfgType = map.get("cfgType").toString();
if (cfgType.equals("1")) {
if(commonGroupIds.containsKey("ipGroup")&&map.containsKey("maatTable")){
Map<String,String> ipMaatMap=new HashMap<>();
for(String group:commonGroupIds.get("ipGroup").toString().split(",")){
if(StringUtils.isNotBlank(group)){
ipMaatMap.put(group,map.get("maatTable").toString());
}
}
maatTableMap.put("ipMaatTable",ipMaatMap);
}
if(map.containsKey("protocolMaatTable")){
maatTableMap.put("protocolMaatTable",map.get("protocolMaatTable").toString());
}
} else if (cfgType.equals("2")) {
String _maatTable = map.containsKey("maatTable")?map.get("maatTable").toString():null;
Map<String,String> stringMaatMap=new HashMap<>();
if(StringUtils.isNotBlank(_maatTable)){
if(commonGroupIds.containsKey("urlGroup")&&_maatTable.toUpperCase().contains("URL")){
for(String group:commonGroupIds.get("urlGroup").toString().split(",")){
if(StringUtils.isNotBlank(group)){
stringMaatMap.put(group,_maatTable);
}
}
}
if(commonGroupIds.containsKey("domainGroup")&&_maatTable.toUpperCase().contains("DOMAIN")){
for(String group:commonGroupIds.get("domainGroup").toString().split(",")){
if(StringUtils.isNotBlank(group)){
stringMaatMap.put(group,_maatTable);
}
}
}
if(commonGroupIds.containsKey("subscribeIdGroup")&&_maatTable.toUpperCase().contains("SUBSCRIBE_ID")){
for(String group:commonGroupIds.get("subscribeIdGroup").toString().split(",")){
if(StringUtils.isNotBlank(group)){
stringMaatMap.put(group,_maatTable);
}
}
}
}
if(maatTableMap.containsKey("stringMaatTable")){
((Map<String,String>)maatTableMap.get("stringMaatTable")).putAll(stringMaatMap);
}else{
maatTableMap.put("stringMaatTable",stringMaatMap);
}
}
}
return maatTableMap;
}
/**
* 获取obj-list-group业务的function_service_dict
* @param functionId
* @return
*/
public static Map<Integer,FunctionServiceDict> objGetServiceDict(Integer functionId){
Map<Integer,FunctionServiceDict> dictMap=new HashMap<>();
ServiceConfigTemplateUtil util=new ServiceConfigTemplateUtil();
List<Map<String,Object>> list=util.getServiceListByFunctionId(functionId);
for(Map<String,Object> map:list){
if(map.containsKey("serviceIds")){
String serviceIds=map.get("serviceIds").toString();
for(String serviceId:serviceIds.split(",")){
List<Map<String,Object>> _mapList=util.getServiceListByServiceId(Integer.parseInt(serviceId));
for(Map<String,Object> _map:_mapList){
if(_map.containsKey("functionId")){
List<FunctionServiceDict> dictList=DictUtils.getFunctionServiceDictList(Integer.parseInt(_map.get("functionId").toString()));
for(FunctionServiceDict dict:dictList){
dictMap.put(dict.getServiceId(),dict);
}
}
}
}
}else{
if(map.containsKey("functionId")){
List<FunctionServiceDict> dictList=DictUtils.getFunctionServiceDictList(Integer.parseInt(map.get("functionId").toString()));
for(FunctionServiceDict dict:dictList){
dictMap.put(dict.getServiceId(),dict);
}
}
}
}
return dictMap;
}
/**
* 策略对象Obj list group估算ip range需要获取的region id数量
* @param srcList
* @param <T>
* @return
*/
public static <T>List<Integer> calRangeIps(List<T> srcList ){
List<Integer> regionIdsList=new ArrayList<>();
int total=0;
//通过反射获取IP的src ip地址目的IP地址
Class clazz=null;
Field srcIpAddressField=null,destIpAddressField=null,ipTypeFild=null;
for(T instance:srcList){
if(clazz==null&&srcIpAddressField==null&&destIpAddressField==null){
try {
clazz=instance.getClass();
srcIpAddressField=clazz.getDeclaredField("srcIpAddress");
srcIpAddressField.setAccessible(true);
destIpAddressField=clazz.getDeclaredField("destIpAddress");
destIpAddressField.setAccessible(true);
ipTypeFild=clazz.getDeclaredField("ipType");
ipTypeFild.setAccessible(true);
} catch (NoSuchFieldException e) {
return regionIdsList;
}
}
try {
String srcIpAddressValue=(String)srcIpAddressField.get(instance);
String destIpAddressValue=(String)destIpAddressField.get(instance);
Integer ipType=(Integer)ipTypeFild.get(instance);
if(ipType.equals(4)){
long left=1,right=1;
if(srcIpAddressValue.indexOf("-")>-1){
String[] srcIpAddressValueArray=srcIpAddressValue.split("-");
int startPos=0,endPos=0;
startPos=Integer.parseInt(srcIpAddressValueArray[0].split("\\.")[3]);
endPos=Integer.parseInt(srcIpAddressValueArray[1].split("\\.")[3]);
left=endPos-startPos+1;
}
if(destIpAddressValue.indexOf("-")>-1){
String[] destIpAddressValueArray=destIpAddressValue.split("-");
int startPos=0,endPos=0;
startPos=Integer.parseInt(destIpAddressValueArray[0].split("\\.")[3]);
endPos=Integer.parseInt(destIpAddressValueArray[1].split("\\.")[3]);
right=endPos-startPos+1;
}
total+=left*right;
}else{
continue;
}
} catch (IllegalAccessException e) {
e.printStackTrace();
return regionIdsList;
}
}
//拆分IP数量大于1获取ID
if(total>1){
regionIdsList=ConfigServiceUtil.getId(3,total);
}
return regionIdsList;
}
}

View File

@@ -212,7 +212,7 @@ public class ConfigDictUtils {
* @param compileId
* @return
*/
public static List<Integer> getASNIPNum(Long groupId ) {
public static List<Integer> getASNIPNum(Integer groupId ) {
List<Integer> ipNum=new ArrayList<>();
try {
if(!StringUtil.isEmpty(groupId)){
@@ -234,8 +234,7 @@ public class ConfigDictUtils {
} catch (Exception e) {
e.printStackTrace();
}
if(ipNum.size() ==0){
if(ipNum ==null || ipNum.size()==0){
ipNum.add(0, 0);
ipNum.add(1, 0);
}

View File

@@ -133,6 +133,7 @@ public class ConfigServiceUtil {
result=response.readEntity(String.class);
}
} catch (Exception e) {
logger.error("request_service_failed",e);
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response != null && response.getStatus() == 200){
@@ -157,6 +158,7 @@ public class ConfigServiceUtil {
long end=System.currentTimeMillis();
logger.warn("get ids finish,cost:"+(end-start));
} catch (Exception e) {
logger.error("getId()",e);
throw e;
}finally {
if (response != null) {
@@ -188,6 +190,7 @@ public class ConfigServiceUtil {
result=response.readEntity(String.class);
}
} catch (Exception e) {
e.printStackTrace();
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response != null && response.getStatus() == 200){
@@ -200,6 +203,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("postMaatCfg()",e);
throw e;
}finally {
if (response != null) {
@@ -232,6 +236,7 @@ public class ConfigServiceUtil {
result=response.readEntity(String.class);
}
} catch (Exception e) {
e.printStackTrace();
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response != null && response.getStatus() == 200){
@@ -241,6 +246,8 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
e.printStackTrace();
logger.error("postCallbackCfg()",e);
throw e;
}finally {
if (response != null) {
@@ -275,6 +282,7 @@ public class ConfigServiceUtil {
result=response.readEntity(String.class);
}
} catch (Exception e) {
e.printStackTrace();
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response != null && response.getStatus() == 200){
@@ -284,6 +292,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>"+result);
}
} catch (Exception e) {
logger.error("postFileCfg()",e);
throw e;
} finally {
if (response != null) {
@@ -321,6 +330,7 @@ public class ConfigServiceUtil {
result=response.readEntity(String.class);
}
} catch (Exception e) {
e.printStackTrace();
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response != null && response.getStatus() == 200){
@@ -330,6 +340,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("delete()",e);
throw e;
} finally {
if (response != null) {
@@ -356,7 +367,7 @@ public class ConfigServiceUtil {
}else if(type==2){
url = url+Constants.CALLBACK_CFG;
}else if(type==3) {
url = url+Constants.DELETE_COMMON_REIGON;
url = url+Constants.GROUP_REUSE_SOURCES;
}
//创建连接
WebTarget wt = ClientUtil.getWebTarger(url);
@@ -369,6 +380,7 @@ public class ConfigServiceUtil {
result=response.readEntity(String.class);
}
} catch (Exception e) {
e.printStackTrace();
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response !=null && response.getStatus() == 200){
@@ -378,6 +390,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("put()",e);
throw e;
}finally {
if (response != null) {
@@ -400,9 +413,9 @@ public class ConfigServiceUtil {
url = url+Constants.MAAT_CFG;
}else if(type==2){
url = url+Constants.CALLBACK_CFG;
}/*else if(type==3) {
}else if(type==3) {
url = url+Constants.GROUP_REUSE_SOURCES;
}*/
}
logger.info("put url:"+url);
//创建连接
try {
@@ -411,9 +424,11 @@ public class ConfigServiceUtil {
// bean = (ToMaatResult) JSONObject.toBean(resObject,ToMaatResult.class);
//获取响应结果
} catch (Exception e) {
e.printStackTrace();
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("patch()",e);
throw e;
}
@@ -444,6 +459,7 @@ public class ConfigServiceUtil {
result=response.readEntity(String.class);
}
} catch (Exception e) {
e.printStackTrace();
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response !=null && response.getStatus() == 200){
@@ -451,9 +467,11 @@ public class ConfigServiceUtil {
JSONObject resObject = JSONObject.fromObject(result);
bean = (ToMaatResult) JSONObject.toBean(resObject,ToMaatResult.class);
}else{
logger.info("获取文件摘要响应结果"+result);
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("getFileDigest()",e);
throw e;
} finally {
if (response != null) {
@@ -463,43 +481,26 @@ public class ConfigServiceUtil {
return bean;
}
/**
* 分组复用域配置新增,修改,删除
* 分组复用域配置新增
* @param params
* @return
* @throws MaatConvertException
*/
public static ToMaatResult auditCommonGroupRegionSources(String params,Integer action) throws MaatConvertException{
public static ToMaatResult postGroupReuseSources(String params) throws MaatConvertException{
ToMaatResult bean = null;
Response response=null;
try {
logger.warn("postGroupReuseSources start");
long start=System.currentTimeMillis();
String result = null;
String url = "";
if(action.equals(Constants.OPACTION_POST)){
url=Constants.SERVICE_URL+Constants.ADD_COMMON_REGION;
}
if(action.equals(Constants.OPACTION_PUT)){
url=Constants.SERVICE_URL+Constants.UPDATE_COMMON_REIGON;
}
if(action.equals(Constants.OPACTION_DELETE)){
url=Constants.SERVICE_URL+Constants.DELETE_COMMON_REIGON;
}
String url = Constants.SERVICE_URL+Constants.GROUP_REUSE_SOURCES;
//创建连接
WebTarget wt = ClientUtil.getWebTarger(url);
logger.info("auditCommonGroupRegionSources url:"+url);
logger.info("postGroupReuseSources url:"+url);
//获取响应结果
Builder header = wt.request(MediaType.APPLICATION_JSON).header("Content-Type", MediaType.APPLICATION_JSON);
try {
if(action.equals(Constants.OPACTION_POST)){
response= header.post(Entity.entity(params, MediaType.APPLICATION_JSON));
}
if(action.equals(Constants.OPACTION_PUT)){
response= header.put(Entity.entity(params, MediaType.APPLICATION_JSON));
}
if(action.equals(Constants.OPACTION_DELETE)){
response= header.put(Entity.entity(params, MediaType.APPLICATION_JSON));
}
response= header.post(Entity.entity(params, MediaType.APPLICATION_JSON));
if(response != null) {
result=response.readEntity(String.class);
}
@@ -515,8 +516,9 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
long end=System.currentTimeMillis();
logger.warn("auditCommonGroupRegionSources end,cost:"+(end-start));
logger.warn("postGroupReuseSources end,cost:"+(end-start));
} catch (Exception e) {
logger.error("postGroupReuseSources()",e);
throw e;
} finally {
if (response != null) {
@@ -525,7 +527,6 @@ public class ConfigServiceUtil {
}
return bean;
}
/**
*
* getReport(配置日志总量统计查询)
@@ -576,6 +577,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("getReport()",e);
throw e;
} finally {
if (response != null) {
@@ -634,6 +636,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("getReport()",e);
throw e;
} finally {
if (response != null) {
@@ -696,6 +699,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("getReport()",e);
throw e;
} finally {
if (response != null) {
@@ -744,13 +748,24 @@ public class ConfigServiceUtil {
result= response.readEntity(String.class);
logger.info("cgi info:"+result);
}else{
if(response!= null) {
throw new MaatConvertException("<spring:message code=\"cgi_service_failed\"/>:"+response.readEntity(String.class));
}else {
throw new MaatConvertException("<spring:message code=\"cgi_service_failed\"/>");
Map<String, String> map = new HashMap<String, String>();
result= response.readEntity(String.class);
if(!StringUtil.isEmpty(result)){
map = (Map<String, String>) JSON.parse(result);
String error = map.get("error");
if (!StringUtil.isEmpty(error)) {
error=cgiError(error);
throw new MaatConvertException(error);
}else{
throw new MaatConvertException(null);
}
}else{
throw new MaatConvertException(null);
}
}
} catch (Exception e) {
logger.error("getCGI()",e);
throw e;
} finally {
if (response != null) {
@@ -760,6 +775,28 @@ public class ConfigServiceUtil {
return result;
}
public static String cgiError(String error){
String cgiError="";
String er=error.toLowerCase().trim();
String errors=Constants.CGI_ERROR;
if(!StringUtil.isEmpty(errors)){
String [] ers=errors.toLowerCase().split(",");
for (int i = 0; i < ers.length; i++) {
if(ers[i].trim().equals(er)){
cgiError=error;
break;
}
}
}
return cgiError;
}
/**
* 配置全量更新指令下发
* @param params
@@ -785,15 +822,16 @@ public class ConfigServiceUtil {
}
} catch (Exception e) {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
}
bean = JSONObject.fromObject(result);
if(response != null && response.getStatus() == 200){
logger.info("get result success");
bean = JSONObject.fromObject(result);
}else{
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
e.printStackTrace();
logger.error("configSyncCmd()",e);
throw e;
}finally {
if (response != null) {
@@ -830,11 +868,13 @@ public class ConfigServiceUtil {
}
if(response != null && response.getStatus() == 200){
logger.info("get result success");
//result="{\"status\": 201,\"businessCode\": 2001000,\"reason\":\"数据获取操作成功\",\"msg\": \"根据配置id获取对应的编译,组,域等信息成功\",\"fromuri\": \"/galaxy-service/service/cfg/v1/getAllKVByCompileId\",\"traceCode\": \"2019031211285044813363\",\"data\": [{\"service\":\"ntc\",\"status\":0,\"opTime\":\"2016-11-22 08:31:27\"}]}";
bean= JSONObject.fromObject(result);
}else{
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("configSyncStatus()",e);
throw e;
}finally {
if (response != null) {
@@ -881,6 +921,7 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("configSync()",e);
throw e;
}finally {
if (response != null) {
@@ -921,11 +962,13 @@ public class ConfigServiceUtil {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
logger.error("configStatusUpdate()",e);
throw e;
}
return result;
}
public static void main(String[] args) {
try {
// getId(1,1);

View File

@@ -8,15 +8,23 @@ import java.util.regex.Pattern;
import com.google.gson.GsonBuilder;
public final class Constants {
/**
* json打印长度
*/
public static Integer JSON_PRINT_LENTH=Configurations.getIntProperty("json_print_length", 100000);
/**
* obj group list group type
*/
public static Integer IP_OBJ_GROUP_TYPE=Configurations.getIntProperty("ip_obj_group_type", 5);
public static Integer URL_OBJ_GROUP_TYPE=Configurations.getIntProperty("url_obj_group_type", 7);
public static Integer SUBID_OBJ_GROUP_TYPE=Configurations.getIntProperty("subid_obj_group_type", 9);
public static Integer DOMAIN_OBJ_GROUP_TYPE=Configurations.getIntProperty("domain_obj_group_type", 8);
/**
* 导入条数限制
*/
public static final int IMPORT_LIMIT=Configurations.getIntProperty("import_limit",10000);
public static final Object IMPORT_LOCK=new Object();
public static final Object IMPORT_ASN_LOCK=new Object();
public static final String ADD_COMMON_REGION=Configurations.getStringProperty("addRegionToCommonGroup","");
public static final String UPDATE_COMMON_REIGON=Configurations.getStringProperty("updateRegionToCommonGroup","");
public static final String DELETE_COMMON_REIGON=Configurations.getStringProperty("deleteRegionToCommonGroup","");
public static final String GROUP_REUSE_SOURCES=Configurations.getStringProperty("groupReuseSources","groupReuseSources");
public static Integer APP_SPEC_SERVICE_CODE_MIN_VAL=Configurations.getIntProperty("app_spec_service_code_min_val", 300001);
public static Integer APP_SPEC_SERVICE_CODE_MAX_VAL=Configurations.getIntProperty("app_spec_service_code_max_val", 268435455);
public static String APP_CFG_USERREGION_SPLITOR=Configurations.getStringProperty("app_cfg_userregion_splitor", "&");
@@ -24,7 +32,7 @@ public final class Constants {
* MaatConfig 默认值
*/
public static Integer MAAT_CFG_DOLOG_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_default", 2);
public static Integer MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_doblacklist_default", 1);
public static Integer MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_doblacklist_default", 0);
public static Integer MAAT_CFG_DOLOG_CONFIGPERCENT_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_configpercent_default", 100);
public static Integer MAAT_CFG_DOLOG_CONFIGOPTION_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_configoption_default", 1);
/**
@@ -188,6 +196,22 @@ public final class Constants {
* DNS 策略组KEY
*/
public static final String CACHE_DNSGROUP_DICT = "dnsGroupDict";
/**
* IP公共组缓存KEY
*/
public static final String CACHE_IPGROUP_DICT = "ipComGroupDict";
/**
* URL公共组缓存KEY
*/
public static final String CACHE_URLGROUP_DICT = "urlComGroupDict";
/**
* Domain公共组缓存KEY
*/
public static final String CACHE_DOMAINGROUP_DICT = "domainComGroupDict";
/**
* ScriberId公共组缓存KEY
*/
public static final String CACHE_SCRIBERGROUP_DICT = "scriberComGroupDict";
/**
* 词典数据分类
*/
@@ -325,56 +349,18 @@ public final class Constants {
// public static final boolean IS_USE_HIVE_DB =
// Configurations.getBooleanProperty("isUseHiveDb", true);
/**
* 是否获取数据中心查询记录的总条数
*/
public static final boolean IS_GET_HIVECOUNT = Configurations.getBooleanProperty("isGetHiveCount", true);
/**
* 是否获取数据中心[神通]查询记录的总条数
*/
public static final boolean IS_SELECT_CLUSTER = Configurations.getBooleanProperty("isSelectCluster", false);
/**
* 神通数据库A的数据最早时间
*/
public static final Long CLUSTER_A_START_TIME = Configurations.getLongProperty("clusterAStartTime", new Date().getTime());
/**
* 神通数据库B的数据最早时间
*/
public static final Long CLUSTER_B_START_TIME = Configurations.getLongProperty("clusterBStartTime", new Date().getTime());
/**
* 每次获取数据中心多少条数据,咱们在对获取的数据进行分页处理
*/
public static final Long EVERY_GETHIVEDATANUM = Configurations.getLongProperty("everyGetHiveDataNum", 10000);
/**
* 是否开启基础校验
*/
public static final boolean BASE_VALIDATE = Configurations.getBooleanProperty("baseValidate", true);
public static final Long DATACENTER_TIME = Configurations.getLongProperty("dataCenterTime", 48);
/**
* 是否开启业务校验
*/
public static final boolean SERVICE_VALIDATE = Configurations.getBooleanProperty("serviceValidate", true);
/**
* 日志本地存储时间
*/
public static final Long LOG_LOCAL_TIME = Configurations.getLongProperty("logLocalTime", 48);
/**
* 实时统计默认时间
*/
public static final Long REPORT_LOCAL_TIME = Configurations.getLongProperty("reportLocalTime", 1);
/**
* 日志是否从hive中查询
*/
public static final boolean SEL_FROM_HIVE = Configurations.getBooleanProperty("selFromHive", true);
public static final boolean ONLY_SEL_FROM_HIVE = Configurations.getBooleanProperty("onlySelFromHive", true);
/**
@@ -388,12 +374,6 @@ public final class Constants {
*/
public static final String SEARCH_DATEFORMAT = Configurations.getStringProperty("search.dateformat",
"yyyy-MM-dd HH:mm:ss");
public static final String SEARCH_ES_HOSTANDPORT_A = Configurations.getStringProperty("search.eshostandport_A",
null);
public static final String SEARCH_ES_HOSTANDPORT_B = Configurations.getStringProperty("search.eshostandport_B",
null);
public static final String SEARCH_ES_HOSTANDPORT_C = Configurations.getStringProperty("search.eshostandport_C",
null);
/**
* 数据中心A版数据库名称,程序中每次查询时使用的数据库名称 use HIVEADBNAME
*/
@@ -410,6 +390,7 @@ public final class Constants {
public static final String FILE_UPLOAD_CFG = Configurations.getStringProperty("fileUploadCfg","fileUploadSources");
public static final String FILE_DIGEST_CFG=Configurations.getStringProperty("fileDigestCfg","fileDigestSources");
public static final String CONFIG_ID_SOURCES=Configurations.getStringProperty("configIdSources","configPzIdSources");
public static final String DEL_ALL_CFG=Configurations.getStringProperty("delAllCfg","delAllConfig");
//日志查询接口URL
public static final String LOG_BASE_URL = Configurations.getStringProperty("logBaseUrl","");
public static final String NTC_SERVICE_REPORT=Configurations.getStringProperty("ntcServiceReport","ntcServiceReport");
@@ -497,9 +478,6 @@ public final class Constants {
public static final String HTTP_URL_REGION = Configurations.getStringProperty("http_url_region","http_url");
public static final String VOIP_IP_REGION = Configurations.getStringProperty("voip_ip","av_voip_ip");
public static final String VOIP_ACCOUNT_REGION = Configurations.getStringProperty("voip_account","av_voip_account");
public static final String NTC_ASN_NUMBER = Configurations.getStringProperty("ntc_asn_number","NTC_ASN_NUMBER");
public static final String ASN_KEY = Configurations.getStringProperty("asn_key","AS");
public static final String ASN_REGION_KEY = Configurations.getStringProperty("asn_region_key","ASN_ID");
public static final String MAAT_VERSION = Configurations.getStringProperty("maat_version","1.0");
public static final Integer INSERT_ACTION = Configurations.getIntProperty("insert_action",1);
public static final Integer UPDATE_ACTION = Configurations.getIntProperty("update_action",2);
@@ -725,6 +703,9 @@ public final class Constants {
public static final String TREND_TOTAL_REPORT=Configurations.getStringProperty("trendTotalReport","trendTotalReport");
public static final String TRAFFIC_APP_TREND=Configurations.getStringProperty("trafficAppTrend","trafficAppTrend");
public static final String APPCONN_RECORD_TOP100=Configurations.getStringProperty("appConnRecordTop100","appConnRecordTop100");
public static final String TRAFFIC_APP_PPS_TREND=Configurations.getStringProperty("trafficAppPpsTrend","trafficAppPpsTrend");
public static final String TRAFFIC_APP_BPS_TREND=Configurations.getStringProperty("trafficAppBpsTrend","trafficAppBpsTrend");
/**
* httpclient 工具超时时间设置
*/
@@ -743,8 +724,14 @@ public final class Constants {
public static final String CERT_FILE_PATH=Configurations.getStringProperty("cert_file_path", "");
//证书校验文件
public static final String CERT_VALIDATE_FILE=Configurations.getStringProperty("cert_validate_file", "x509");
public static final String CA_CERT_FILE=Configurations.getStringProperty("ca_cert_file", "cacert.sh");
public static final String CA_CERT_DIR=Configurations.getStringProperty("ca_cert_dir", "/home/cacert/");
//证书校验成功关键字
public static final String CERT_VALIDATE_SUCCESS_INFO=Configurations.getStringProperty("cert_validate_success_info", "x509");
//内置证书的isser
public static final String KEYRING_BUILT_IN_ISSER=Configurations.getStringProperty("keyring_built_in_isser", "||CN=Tango Secure Gateway CA, O=Maserati Solution||CN=Tango Secure Gateway CA UNTRUST, O=Maserati Solution||");
//内置证书的指纹
public static final String KEYRING_BUILT_IN_FINGERPRINT=Configurations.getStringProperty("keyring_built_in_fingerprint", "||ee23abb40085901c12f574d610153c008d49e6a0||3475833f1a9525b4ad7fbee06dfa3e4a8de0c1e0||");
/**
* 一些正则的pattern预先编译,避免多次编译
*/
@@ -828,4 +815,59 @@ public final class Constants {
* 时间格式化
*/
public static final String COMMON_TIME_FORMAT = "HH:mm:ss";
/**
* vpn cgi接口报错信息
*/
public static final String CGI_ERROR = Configurations.getStringProperty("cgiError","");
/**
* 配置保护名单字典key
*/
public static final String CACHE_PROTECTION_LIST_DICT = "protetionListDict";
/**
* 管理员用户预警查询服务配置总量接口
*/
public static final String CONFIG_BY_SERVICE = Configurations.getStringProperty("getConfigByService","");
/**
* 获取配置统计页面列表的配置总量接口
*/
public static final String NTC_PZ_COUNT_REPORT = Configurations.getStringProperty("ntcPzCountReport","");
/**
* 查询的是流量统计菜单-配置统计中BandWidth统计的数据接口
*/
public static final String TRAFFIC_BANDWIDTH_TRANS_THREE_NEW=Configurations.getStringProperty("trafficBandwidthTransThreeNew","trafficBandwidthTransThreeNew");
/**
* 查询的是流量统计菜单-配置统计中RulesType统计的数据接口
*/
public static final String NTC_ACTION_ENTRANCE_REPORT_NEW=Configurations.getStringProperty("ntcActionEntranceReportNew","ntcActionEntranceReportNew");
/**
* 查询的是流量统计菜单-配置统计中Protocol统计的数据接口
*/
public static final String TRAFFIC_PROTOCOL_STATISTIC_NEW=Configurations.getStringProperty("trafficProtocolStatisticNew","trafficProtocolStatisticNew");
/**
* 查询的是流量统计菜单-配置统计中APP统计的数据接口
*/
public static final String TRAFFIC_APP_STATISTIC_NEW=Configurations.getStringProperty("trafficAppStatisticNew","trafficAppStatisticNew");
/**
* 查询的是流量统计菜单-配置统计中Domains统计的数据接口
*/
public static final String TRAFFIC_DOMAIN_STATISTIC_NEW=Configurations.getStringProperty("trafficDomainStatisticNew","trafficDomainStatisticNew");
/**
* 查询的是流量统计菜单-配置统计中ClientIP统计的数据接口
*/
public static final String TRAFFIC_SOURCE_IP_STATISTIC_NEW=Configurations.getStringProperty("trafficSourceIPStatisticNew","trafficSourceIPStatisticNew");
/**
* 查询的是流量统计菜单-配置统计中ServerIP统计的数据接口
*/
public static final String TRAFFIC_DEST_IP_STATISTIC_NEW=Configurations.getStringProperty("trafficDestIPStatisticNew","trafficDestIPStatisticNew");
/**
* 查询的是流量统计菜单-配置统计中SubscriberID统计的数据接口
*/
public static final String TRAFFIC_SUBSCRIBER_ID_STATISTIC_NEW=Configurations.getStringProperty("trafficSubscriberIDStatisticNew","trafficSubscriberIDStatisticNew");
/**
* HTTP(S)操控日志接口
*/
public static final String POLICY_EVENT=Configurations.getStringProperty("policyevent","policyevent");
}

View File

@@ -1,10 +1,12 @@
package com.nis.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Node;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -12,12 +14,14 @@ import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.SysDataDictionaryName;
import com.nis.domain.basics.CommonGroupInfo;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.basics.SysDictInfo;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.web.dao.FunctionRegionDictDao;
import com.nis.web.dao.FunctionServiceDictDao;
import com.nis.web.dao.SysDictDao;
import com.nis.web.dao.basics.CommonGroupManageDao;
import com.nis.web.dao.basics.PolicyGroupInfoDao;
import com.nis.web.dao.basics.SysDictInfoDao;
import com.nis.web.dao.configuration.DnsResStrategyDao;
@@ -40,6 +44,7 @@ public class DictUtils {
private final static FunctionServiceDictDao functionServiceDictDao = SpringContextHolder.getBean(FunctionServiceDictDao.class);
private final static DnsResStrategyDao dnsResStrategyDao = SpringContextHolder.getBean(DnsResStrategyDao.class);
private final static PolicyGroupInfoDao policyGroupInfoDao = SpringContextHolder.getBean(PolicyGroupInfoDao.class);
private final static CommonGroupManageDao commonGroupManageDao = SpringContextHolder.getBean(CommonGroupManageDao.class);
public static Map<String, List<SysDataDictionaryItem>> getDictData() {
@@ -96,6 +101,18 @@ public class DictUtils {
}
return itemList;
}
public static Map<String,String> getDictMap(String key){
Map dictMap=new HashMap<String,String>();
List<SysDataDictionaryItem> itemList = getDictData().get(key);
if (StringUtil.isEmpty(itemList)) {
return dictMap;
}else {
for(SysDataDictionaryItem item:itemList) {
dictMap.put(item.getItemCode(), item.getItemValue());
}
}
return dictMap;
}
public static String getDictLabels(String dictKey, String itemCodes, String defaultValue){
@@ -246,6 +263,24 @@ public class DictUtils {
return allDictList;
}
/**
* 功能业务字典,获取相应功能菜单对应的业务信息
* @param functionId
* @return
*/
public static List<FunctionServiceDict> getAllServiceList(){
List<FunctionServiceDict> serviceList = new ArrayList();
ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil();
List<Node> serviceNodeList= serviceTemplate.getServiceNodeList();
for (Node node : serviceNodeList) {
FunctionServiceDict service=new FunctionServiceDict();
service.setServiceId(Integer.valueOf(node.valueOf("@id")));
service.setServiceName(node.valueOf("@desc"));
serviceList.add(service);
}
return serviceList;
}
/**
* 功能配置域字典,获取相应功能菜单对应的配置域信息
* @param functionId
@@ -369,4 +404,57 @@ public class DictUtils {
}
return null;
}
/**
* 获取公共组字典缓存
*/
/*public static List<CommonGroupInfo> getCommonGroups(Integer groupType){
String dictKey = Constants.CACHE_IPGROUP_DICT;
if(groupType.equals(7)) {
dictKey = Constants.CACHE_URLGROUP_DICT;
}else if(groupType.equals(8)) {
dictKey = Constants.CACHE_DOMAINGROUP_DICT;
}else if(groupType.equals(9)) {
dictKey = Constants.CACHE_SCRIBERGROUP_DICT;
}
List<CommonGroupInfo> allDictList = (List<CommonGroupInfo>)CacheUtils.get(dictKey);
if(StringUtil.isEmpty(allDictList)){
allDictList = commonGroupManageDao.findCommonGroupInfosByType(groupType);
CacheUtils.put(dictKey, allDictList);
}
return allDictList;
}
public static CommonGroupInfo getCommonGroups(Integer groupId, Integer groupType){
List<CommonGroupInfo> allDictList = getCommonGroups(groupType);
if(StringUtil.isEmpty(allDictList)){
}else {
for(CommonGroupInfo group:allDictList) {
if(group.getServiceGroupId().equals(groupId)) {
return group;
}
}
}
return null;
}*/
public static Map<Integer,Object> getObjGroupListServiceDicts(Integer functionId){
Map<Integer,Object> dictMap=new HashMap<>();
List<Map<String,Object>> templateList= ServiceConfigTemplateUtil.getServiceListByFunctionId(functionId);
StringBuffer buf=new StringBuffer();
for(Map<String,Object> temp:templateList){
if(temp.containsKey("serviceIds")){
String serviceIds= temp.get("serviceIds").toString();
buf.append(serviceIds).append(",");
}
}
List<FunctionServiceDict> serviceDicts=getFunctionServiceDictList();
for(FunctionServiceDict dict:serviceDicts){
for(String serviceId:buf.toString().split(",")){
if(StringUtils.isNotBlank(serviceId)&&dict.getServiceId().toString().equals(serviceId)){
dictMap.put(Integer.parseInt(serviceId),dict);
}
}
}
return dictMap;
}
}

View File

@@ -1,12 +1,19 @@
package com.nis.util;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.*;
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.basics.*;
import com.nis.domain.configuration.*;
import com.nis.web.service.configuration.ObjGroupCfgConvert;
import com.nis.web.service.configuration.ObjectGroupService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
@@ -18,25 +25,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import com.google.common.collect.Lists;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.callback.InlineIp;
import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.AvSignSampleCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DdosIpCfg;
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjSpoofingIpPool;
import com.nis.domain.configuration.PxyObjTrustedCaCert;
import com.nis.domain.configuration.PxyObjTrustedCaCrl;
import com.nis.domain.maat.MaatCfg;
import com.nis.domain.maat.ManipulatActionParam;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToUpdateMaatBeanStatus;
@@ -75,7 +66,7 @@ public class SchedulerTaskUtil {
* @throws IllegalAccessException
* @throws IllegalArgumentException
*/
public boolean updateConfigByServiceAndCompile(Integer serviceId,Integer compileId,Integer isValid,Integer isIssueContent,ConfigSynchronizationDao configSynchronizationDao) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
public void updateConfigByServiceAndCompile(Integer serviceId,Integer compileId,Integer isValid,Integer isIssueContent,ConfigSynchronizationDao configSynchronizationDao)throws Exception{
// SecurityManagerInit();
// Subject subject = login("admin","zdjzsoft");
// System.out.println(subject.getPrincipal());
@@ -89,6 +80,7 @@ public class SchedulerTaskUtil {
String tableName = service.get("tableName").toString();
String serviceType = service.get("serviceType").toString();
String className = service.get("className").toString();
String functionId= service.get("functionId").toString();
BaseCfg entity = new BaseCfg();
entity.setServiceId(serviceId);
entity.setTableName(tableName);
@@ -118,6 +110,14 @@ public class SchedulerTaskUtil {
List<BaseStringCfg> strList = new ArrayList();
List<ComplexkeywordCfg> complexStrList = new ArrayList();
List<com.nis.domain.configuration.NumBoundaryCfg> numList = new ArrayList();
//公共分组
boolean isCommonGroup=false;
List<IpCommCfg> ipCommCfgList=new ArrayList<>();
List<UrlCommCfg> urlCommCfgList=new ArrayList<>();
List<ScriberIdCommCfg> scriberIdCommCfgList=new ArrayList<>();
List<DomainCommCfg> domainCommCfgList=new ArrayList<>();
Map<String,Object> commGroupMap=new HashMap<>();
Set<Integer> groupIdSet=new HashSet<>();
List<FileDigestCfg> fileList = new ArrayList();
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
@@ -129,170 +129,347 @@ public class SchedulerTaskUtil {
List<Map<String,Object>> userRegionList = (List<Map<String, Object>>) service.get("userRegionList");
entity.setCompileId(compileId);
compileIds.add(compileId);
Map<Integer, FunctionServiceDict> serviceDictMap=ConfigConvertUtil.objGetServiceDict(Integer.parseInt(functionId));
//查询配置
if("cfg_index_info".equals(tableName)){
List<CfgIndexInfo> list = configSynchronizationDao.getCfgIndexList(entity);
if(CollectionUtils.isNotEmpty(list)&&StringUtils.isNotBlank(list.get(0).getCommonGroupIds())){
isCommonGroup=true;
}
if(isIssueContent.equals(1)){
//用于存储自定义域为关键字的业务key=compileIdvalue=keyword.
Map<Integer, BaseStringCfg> keywordMap=new HashMap<>();
//查询子域配置详情
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
String regionTable = m.get("tableName").toString();
if("1".equals(m.get("cfgType"))){
ipList.addAll(configSynchronizationDao.getIpPortList(regionTable, compileIds));
}else if("2".equals(m.get("cfgType"))){
strList.addAll(configSynchronizationDao.getStrList(regionTable,compileIds));
}else if("3".equals(m.get("cfgType"))){
complexStrList.addAll(configSynchronizationDao.getComplexStrList(regionTable,compileIds));
}else if("4".equals(m.get("cfgType"))){
}else if("5".equals(m.get("cfgType"))){
fileList.addAll(configSynchronizationDao.getFileDigestList(regionTable, compileIds));
if(isCommonGroup){
groupIdSet=Collections.synchronizedSet(new HashSet<Integer>());
commGroupMap=ConfigConvertUtil.gsonFromJson(list.get(0).getCommonGroupIds(),Map.class);
//将组中的域设置到cfg_index_info中
covertCommongroupIdsMap(commGroupMap,"ipGroup",list.get(0),configSynchronizationDao,IpCommCfg.class);
if(CollectionUtils.isNotEmpty(list.get(0).getIpCommGroupCfgList())){
ipCommCfgList.addAll(list.get(0).getIpCommGroupCfgList());
}
covertCommongroupIdsMap(commGroupMap,"urlGroup",list.get(0),configSynchronizationDao,UrlCommCfg.class);
if(CollectionUtils.isNotEmpty(list.get(0).getUrlCommGroupList())){
urlCommCfgList.addAll(list.get(0).getUrlCommGroupList());
}
covertCommongroupIdsMap(commGroupMap,"subscribeIdGroup",list.get(0),configSynchronizationDao,ScriberIdCommCfg.class);
if(CollectionUtils.isNotEmpty(list.get(0).getScriberIdCommGroupList())){
scriberIdCommCfgList.addAll(list.get(0).getScriberIdCommGroupList());
}
covertCommongroupIdsMap(commGroupMap,"domainGroup",list.get(0),configSynchronizationDao,DomainCommCfg.class);
if(CollectionUtils.isNotEmpty(list.get(0).getDomainCommGroupList())){
domainCommCfgList.addAll(list.get(0).getDomainCommGroupList());
}
}else{
for(Map<String,Object> m:cfgList){
String regionTable = m.get("tableName").toString();
if("1".equals(m.get("cfgType"))){
ipList.addAll(configSynchronizationDao.getIpPortList(regionTable, compileIds));
}else if("2".equals(m.get("cfgType"))){
strList.addAll(configSynchronizationDao.getStrList(regionTable,compileIds));
//512/521/514/1026业务的用户自定义域取DOMAIN_STR取自Keyword
if(/*entity.getServiceId()==512
||*/entity.getServiceId()==521
||entity.getServiceId()==514
||entity.getServiceId()==1026) {
keywordMap=configSynchronizationDao.getCompileIdWithKeyword(regionTable, compileIds);
}
}else if("3".equals(m.get("cfgType"))){
complexStrList.addAll(configSynchronizationDao.getComplexStrList(regionTable,compileIds));
}else if("4".equals(m.get("cfgType"))){
}else if("5".equals(m.get("cfgType"))){
fileList.addAll(configSynchronizationDao.getFileDigestList(regionTable, compileIds));
}
}
}
}
//批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号分组复用的域配置不需要重新获取regionId,groupId
List<Integer> regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> regionIds=new ArrayList<>(),groupIds=new ArrayList<>();
if(!isCommonGroup){
regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
}
entity.setIsValid(isValid);//将最新的配置状态赋给配置对象
entity.setAuditTime(updateTime);
for(CfgIndexInfo cfg:list){
groupRelationList = new ArrayList();
ipRegionList = new ArrayList();
strRegionList = new ArrayList();
numRegionList = new ArrayList();
groupRelationList = Collections.synchronizedList(new ArrayList());
ipRegionList = Collections.synchronizedList(new ArrayList());
strRegionList = Collections.synchronizedList(new ArrayList());
numRegionList =Collections.synchronizedList(new ArrayList());
digestRegionList = new ArrayList();
areaIpRegionList = new ArrayList();
List list1 = new ArrayList();
List<BaseStringCfg> list2 = new ArrayList();
List<ComplexkeywordCfg> list3 = new ArrayList();
List<com.nis.domain.configuration.NumBoundaryCfg> list4 = new ArrayList();
List<FileDigestCfg> list5 = new ArrayList();
String userRegion = "";
//处理自定义域
if(userRegionList!=null){
for(Map<String,Object> n:userRegionList){
Object userRegionPosition = n.get("userRegionPosition");
if(userRegionPosition!=null && (userRegionPosition.toString().equals("1")||userRegionPosition.toString().equals("0"))){
//通过反射机制获取自定义域字段值
String regionColumn = n.get("regionColumn").toString();
Class aClass = null;
if(userRegionPosition.toString().equals(("0"))){
aClass = BaseCfg.class;
}else{
aClass = CfgIndexInfo.class;
}
Object value = "";
if(entity.getServiceId().equals(517)||entity.getServiceId().equals(560)){//代理替换策略
String[] regionArray = regionColumn.split(",");
for(int r=0;r<regionArray.length;r++){
Field field = aClass.getDeclaredField(regionArray[r]);
field.setAccessible(true);
if(n.get("regionKey").equals("substitute")){
value += "/"+BaseService.replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());//自定义域以/分割时的处理
}else{
value += BaseService.replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());
}
if(StringUtils.isNotBlank(cfg.getCommonGroupIds())){//公共分组
//处理自定义域
StringBuffer userRegion = new StringBuffer();
userRegion.append(ConfigConvertUtil.generateCommonGroupDefaultUserRegion(null,cfg.getServiceId()));
//子配置
Map<String,Object> maatTableMap=ConfigConvertUtil.convertCommonGroupMaatTable(cfg,cfgList);
//多线程转换
ObjGroupCfgConvert ipConvert=new ObjGroupCfgConvert("ipGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
ipConvert.setGroupRelationList(groupRelationList);
ipConvert.setIpRegionList(ipRegionList);
ipConvert.setNumRegionList(numRegionList);
ipConvert.setStrRegionList(strRegionList);
ObjGroupCfgConvert subscribeIdConvert=new ObjGroupCfgConvert("subscribeIdGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
subscribeIdConvert.setGroupRelationList(groupRelationList);
subscribeIdConvert.setIpRegionList(ipRegionList);
subscribeIdConvert.setNumRegionList(numRegionList);
subscribeIdConvert.setStrRegionList(strRegionList);
ObjGroupCfgConvert urlConvert=new ObjGroupCfgConvert("urlGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
urlConvert.setGroupRelationList(groupRelationList);
urlConvert.setIpRegionList(ipRegionList);
urlConvert.setNumRegionList(numRegionList);
urlConvert.setStrRegionList(strRegionList);
ObjGroupCfgConvert domainConvert=new ObjGroupCfgConvert("domainGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
domainConvert.setGroupRelationList(groupRelationList);
domainConvert.setIpRegionList(ipRegionList);
domainConvert.setNumRegionList(numRegionList);
domainConvert.setStrRegionList(strRegionList);
Thread t1=new Thread(ipConvert);
Thread t2=new Thread(subscribeIdConvert);
Thread t3=new Thread(urlConvert);
Thread t4=new Thread(domainConvert);
t1.start();
t2.start();
t3.start();
t4.start();
try {
t1.join();
t2.join();
t3.join();
t4.join();
} catch (InterruptedException e) {
logger.error("多线程join异常",e);
}
//IP公共分组
// if(CollectionUtils.isNotEmpty(cfg.getIpCommGroupCfgList())){
// IpPortCfg _cfg = new IpPortCfg();
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
// Map<String,List> map = ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,ipRegionList,cfg.getIpCommGroupCfgList(),1,_cfg,groupRelationList,maatTableMap,groupIdSet);
// groupRelationList=map.get("groupList");
// ipRegionList=map.get("dstList");
// if(map.get("numRegionList")!=null){
// numRegionList.addAll(map.get("numRegionList"));
// }
//
// }
//URL公共分组
// if(CollectionUtils.isNotEmpty(cfg.getUrlCommGroupList())){
// CommonStringCfg _cfg = new CommonStringCfg();
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
// Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,strRegionList,cfg.getUrlCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
// groupRelationList=map.get("groupList");
// strRegionList=map.get("dstList");
// }
//账号公共分组
// if(CollectionUtils.isNotEmpty(cfg.getScriberIdCommGroupList())){
// CommonStringCfg _cfg = new CommonStringCfg();
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
//
// Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,strRegionList,cfg.getScriberIdCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
// groupRelationList=map.get("groupList");
// strRegionList=map.get("dstList");
//
// }
//域名公共分组
// if(CollectionUtils.isNotEmpty(cfg.getDomainCommGroupList())){
// CommonStringCfg _cfg = new CommonStringCfg();
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
//
// Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,strRegionList,cfg.getDomainCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
// groupRelationList=map.get("groupList");
// strRegionList=map.get("dstList");
// }
BeanUtils.copyProperties(cfg, maatCfg);
if(cfg.getServiceId().equals(512)){
maatCfg.setAction(2);
}else{
maatCfg.setAction(cfg.getAction());
}
maatCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():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());
if(!StringUtil.isEmpty(userRegion.toString())){
maatCfg.setUserRegion(userRegion.toString());
}
configCompileList.add(maatCfg);
}else{//非公共分组
List list1 = new ArrayList();
List<BaseStringCfg> list2 = new ArrayList();
List<ComplexkeywordCfg> list3 = new ArrayList();
List<com.nis.domain.configuration.NumBoundaryCfg> list4 = new ArrayList();
List<FileDigestCfg> list5 = new ArrayList();
String userRegion = "";
//处理自定义域
if(userRegionList!=null){
for(Map<String,Object> n:userRegionList){
Object userRegionPosition = n.get("userRegionPosition");
if(userRegionPosition!=null && (userRegionPosition.toString().equals("1")||userRegionPosition.toString().equals("0"))){
//通过反射机制获取自定义域字段值
String regionColumn = n.get("regionColumn").toString();
String regionKey = n.get("regionKey").toString();
Object value = "";
Class aClass = null;
if(userRegionPosition.toString().equals(("0"))){
aClass = BaseCfg.class;
}else{
aClass = CfgIndexInfo.class;
}
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}else{
Field field = aClass.getDeclaredField(regionColumn);
field.setAccessible(true);
value = field.get(cfg);
if(!StringUtil.isEmpty(value)){
if(StringUtil.isEmpty(n.get("regionKey"))){
userRegion = value.toString();
}else{
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
if(entity.getServiceId().equals(517)||entity.getServiceId().equals(560)){//代理替换策略
String[] regionArray = regionColumn.split(",");
for(int r=0;r<regionArray.length;r++){
Field field = aClass.getDeclaredField(regionArray[r]);
field.setAccessible(true);
if(n.get("regionKey").equals("substitute")){
value += "/"+BaseService.replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());//自定义域以/分割时的处理
}else{
value += BaseService.replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());
}
}
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}else{
/*if(regionKey.equals("keyring_id") && StringUtil.isEmpty(value)){
value = "0";
}else*/ if(regionKey.equals("DOMAIN_STR")) {
if(!StringUtil.isEmpty(keywordMap) && !StringUtil.isEmpty(keywordMap.get(cfg.getCompileId()))) {
value = keywordMap.get(cfg.getCompileId()).getCfgKeywords();
}
}else if(regionKey.equals("DOMAIN_ID")) {
if(!StringUtil.isEmpty(keywordMap) && !StringUtil.isEmpty(keywordMap.get(cfg.getCompileId()))) {
value = cfg.getCompileId();
}
}else {
Field field = aClass.getDeclaredField(regionColumn);
field.setAccessible(true);
value = field.get(cfg);
}
if(!StringUtil.isEmpty(value)){
if(StringUtil.isEmpty(n.get("regionKey"))){
userRegion = value.toString();
}else{
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}
}
}
}
}
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
userRegion = userRegion.substring(0, userRegion.length()-1);
}
}
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
userRegion = userRegion.substring(0, userRegion.length()-1);
// Proxy Block --xml无法描述的user_region
if(entity.getServiceId().equals(576)) {
ManipulatActionParam actionParam = new ManipulatActionParam();
actionParam.setMethod("block");
actionParam.setCode(Integer.valueOf(cfg.getUserRegion1()));
actionParam.setMessage(!StringUtil.isBlank(cfg.getUserRegion2()) ? cfg.getUserRegion2():"");
actionParam.setHtml_profile(Integer.valueOf(!StringUtil.isBlank(cfg.getUserRegion3()) ? cfg.getUserRegion3():"0"));
userRegion = StringEscapeUtils.unescapeJson(BaseService.gsonToJson(actionParam));
}
}
for(AsnIpCfg ip:asnIpList){//asn不需要再次获取regionId,groupId
if(ip.getAsnIpGroup().toString().equals(cfg.getUserRegion4())){//根据组号对应
ip.setIsValid(entity.getIsValid());
ip.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
list1.add(ip);
// Proxy Manipulate
if(entity.getServiceId().equals(656)) {
userRegion = BaseService.setUserRegionOfMantipulateCfg(cfg, userRegion);
}
}
//ip spoofing
if(cfg.getServiceId().equals(518)){
//IP仿冒策略
//仿冒IP池配置匹配下发或者取消
PxyObjSpoofingIpPool pool=new PxyObjSpoofingIpPool();
pool.setCfgId(Long.valueOf(cfg.getUserRegion3()));
//Intercept Policy、http(s) 监测 、http(s) 白名单
else if(entity.getServiceId().equals(521) || entity.getServiceId().equals(592)
|| entity.getServiceId().equals(750)) {
userRegion="{}";
}
for(AsnIpCfg ip:asnIpList){//asn不需要再次获取regionId,groupId
if(ip.getAsnIpGroup().toString().equals(cfg.getUserRegion4())){//根据组号对应
ip.setIsValid(entity.getIsValid());
ip.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
list1.add(ip);
}
}
//ip spoofing
if(cfg.getServiceId().equals(518)){
//IP仿冒策略
//仿冒IP池配置匹配下发或者取消
PxyObjSpoofingIpPool pool=new PxyObjSpoofingIpPool();
pool.setCfgId(Long.valueOf(cfg.getUserRegion3()));
// pxyObjSpoofingIpPoolDao.update(pool);
pool = configSynchronizationDao.getPxyObjSpoofingIpPool(pool.getCfgId());
pool.setIsValid(entity.getIsValid());
pool.setIsAudit(entity.getIsAudit());
pool.setAuditorId(entity.getAuditorId());
pool.setAuditTime(entity.getAuditTime());
List<PxyObjSpoofingIpPool> poolList = new ArrayList<PxyObjSpoofingIpPool>();
String json="";
String areaEffectiveIds="0";
if(isValid==1){
pool.setAreaEffectiveIds(areaEffectiveIds);
pool.setGroupId(pool.getCfgId().intValue());//界面端的配置ID作为策略分组ID
poolList.add(pool);
//调用服务接口下发配置数据
json=BaseService.gsonToJson(poolList);
logger.info("欺骗IP池配置下发配置参数"+json);
//调用服务接口下发配置
try {
ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
if(result!=null){
logger.info("欺骗IP池配置下发响应信息"+result.getMsg());
pool = configSynchronizationDao.getPxyObjSpoofingIpPool(pool.getCfgId());
pool.setIsValid(entity.getIsValid());
pool.setIsAudit(entity.getIsAudit());
pool.setAuditorId(entity.getAuditorId());
pool.setAuditTime(entity.getAuditTime());
List<PxyObjSpoofingIpPool> poolList = new ArrayList<PxyObjSpoofingIpPool>();
String json="";
String areaEffectiveIds="0";
if(isValid==1){
pool.setAreaEffectiveIds(areaEffectiveIds);
pool.setGroupId(pool.getCfgId().intValue());//界面端的配置ID作为策略分组ID
poolList.add(pool);
//调用服务接口下发配置数据
json=BaseService.gsonToJson(poolList);
logger.info("欺骗IP池配置下发配置参数"+json);
//调用服务接口下发配置
try {
ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
if(result!=null){
logger.info("欺骗IP池配置下发响应信息"+result.getMsg());
}
} catch (Exception e) {
logger.error("欺骗IP池配置配置下发失败",e);
throw e;
}
} catch (Exception e) {
logger.error("欺骗IP池配置配置下发失败",e);
throw e;
}
}
if(list1.size()>0){
GroupCfg groupCfg=new GroupCfg();
groupCfg.setCompileId(cfg.getCompileId());
groupCfg.setGroupId(Integer.parseInt(cfg.getUserRegion4()));
groupCfg.setIsValid(entity.getIsValid());
groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
groupRelationList.add(groupCfg);
ipRegionList.addAll(ConfigConvertUtil.groupReuseCfgAddRemoveConvert(list1,Constants.VALID_YES,null));
}else if(!StringUtil.isEmpty(asnGroupIds)) {
GroupCfg groupCfg=new GroupCfg();
groupCfg.setCompileId(cfg.getCompileId());
groupCfg.setGroupId(Integer.parseInt(cfg.getUserRegion4()));
groupCfg.setIsValid(entity.getIsValid());
groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
groupRelationList.add(groupCfg);
ipRegionList.addAll(ipRegionList);
}
//配置域转换
userRegion = ConfigConvertUtil.configCovert(ipList,strList,complexStrList,
numList,fileList,regionIds,groupIds,entity,cfg.getCompileId(),
StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime(),
groupRelationList,ipRegionList,strRegionList,numRegionList,digestRegionList,areaIpRegionList,userRegion);
BeanUtils.copyProperties(cfg, maatCfg);
maatCfg.setAction(cfg.getAction());
maatCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():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());
if(!StringUtil.isEmpty(userRegion)){
maatCfg.setUserRegion(userRegion);
}
configCompileList.add(maatCfg);
}
if(list1.size()>0){
GroupCfg groupCfg=new GroupCfg();
groupCfg.setCompileId(cfg.getCompileId());
groupCfg.setGroupId(Integer.parseInt(cfg.getUserRegion4()));
groupCfg.setIsValid(entity.getIsValid());
groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
groupRelationList.add(groupCfg);
ipRegionList.addAll(ConfigConvertUtil.groupReuseCfgAddRemoveConvert(list1,Constants.VALID_YES,null));
}else if(!StringUtil.isEmpty(asnGroupIds)) {
GroupCfg groupCfg=new GroupCfg();
groupCfg.setCompileId(cfg.getCompileId());
groupCfg.setGroupId(Integer.parseInt(cfg.getUserRegion4()));
groupCfg.setIsValid(entity.getIsValid());
groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
groupRelationList.add(groupCfg);
ipRegionList.addAll(ipRegionList);
}
//配置域转换
userRegion = ConfigConvertUtil.configCovert(ipList,strList,complexStrList,
numList,fileList,regionIds,groupIds,entity,cfg.getCompileId(),
StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime(),
groupRelationList,ipRegionList,strRegionList,numRegionList,digestRegionList,areaIpRegionList,userRegion);
BeanUtils.copyProperties(cfg, maatCfg);
maatCfg.setAction(cfg.getAction());
maatCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():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());
if(!StringUtil.isEmpty(userRegion)){
maatCfg.setUserRegion(userRegion);
}
configCompileList.add(maatCfg);
}
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(new Date());
@@ -300,14 +477,15 @@ public class SchedulerTaskUtil {
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.INSERT_ACTION);
String json=BaseService.gsonToJson(maatBean);
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容"+json);
if(json.length()<Constants.JSON_PRINT_LENTH){
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容"+json);
}else{
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容超过"+Constants.JSON_PRINT_LENTH+",不打印");
}
//调用服务接口修改配置内容与状态
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
if(result!=null){
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容响应信息"+result.getMsg());
return true;
}else{
return false;
}
}else{
/*maatCfg = new MaatCfg();
@@ -364,8 +542,8 @@ public class SchedulerTaskUtil {
}
}
//批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号分组复用的域配置不需要重新获取regionId,groupId
List<Integer> regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size()+list.size());
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size()+list.size());
entity.setIsValid(isValid);//将最新的配置状态赋给配置对象
entity.setAuditTime(updateTime);
for(int i=0;i<list.size();i++){
@@ -384,7 +562,8 @@ public class SchedulerTaskUtil {
areaIpRegionList = new ArrayList();
List<DdosIpCfg> list1 = new ArrayList();
String userRegion = "";
//处理自定义域
//处理自定义域【DDOS自定义域组成json结构】
Map ddosUserRegion= new HashMap();
if(userRegionList!=null){
for(Map<String,Object> n:userRegionList){
Object userRegionPosition = n.get("userRegionPosition");
@@ -401,17 +580,23 @@ public class SchedulerTaskUtil {
Field field = aClass.getDeclaredField(regionColumn);
field.setAccessible(true);
value = field.get(cfg);
if(!StringUtil.isEmpty(value)){
if(StringUtil.isEmpty(n.get("regionKey"))){
userRegion = value.toString();
}else{
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
//userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
ddosUserRegion.put(n.get("regionKey"), value);
}
}else{
ddosUserRegion.put(n.get("regionKey"), "");
}
}
}
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
userRegion = userRegion.substring(0, userRegion.length()-1);
}else if(!StringUtil.isEmpty(ddosUserRegion)){
userRegion = new Gson().toJson(ddosUserRegion);
}
}
list1.add(cfg);
@@ -450,9 +635,6 @@ public class SchedulerTaskUtil {
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
if(result!=null){
logger.info("定时任务修改DDOS配置内容响应信息"+result.getMsg());
return true;
}else{
return false;
}
}else{
/*maatCfg = new MaatCfg();
@@ -591,10 +773,7 @@ public class SchedulerTaskUtil {
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
if(result!=null){
logger.info("定时任务修改文件摘要类配置内容响应信息:"+result.getMsg());
return true;
}else{
return false;
}
}
}else{
/*maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
@@ -753,10 +932,7 @@ public class SchedulerTaskUtil {
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
if(result!=null){
logger.info("定时任务更新APP POLICY配置内容响应信息"+result.getMsg());
return true;
}else{
return false;
}
}
}else{
/*maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
@@ -795,7 +971,7 @@ public class SchedulerTaskUtil {
}else{//只修改配置状态
//下发并修改配置状态的参数类
ToUpdateMaatBeanStatus maatStatusBean = new ToUpdateMaatBeanStatus();
/*ToUpdateMaatBeanStatus maatStatusBean = new ToUpdateMaatBeanStatus();
UpdateMaatCfgStatus updateCfg = new UpdateMaatCfgStatus();
List<UpdateMaatCfgStatus> configCompileStartStopList = new ArrayList();
maatStatusBean.setVersion(Constants.MAAT_VERSION);
@@ -841,13 +1017,45 @@ public class SchedulerTaskUtil {
String json=BaseService.gsonToJson(maatStatusBean);
logger.info("MAAT类配置启停状态修改内容"+json);
//调用服务启停接口
String result = ConfigServiceUtil.configStatusUpdate(json);
ToMaatResult result = ConfigServiceUtil.put(json,1);
if(result!=null){
logger.info("MAAT类配置启停状态修改结果"+result);
logger.info("MAAT类配置启停状态修改结果"+result.getMsg());
}else{
return false;
}
/*maatCfg = new MaatCfg();
}*/
//ip spoofing
if(serviceId.equals(518)){
entity.setCompileId(compileId);
List<CfgIndexInfo> list = configSynchronizationDao.getCfgIndexList(entity);
entity.setCompileId(compileId);
for(CfgIndexInfo cfg:list){
if(isValid==0){
PxyObjSpoofingIpPool pool=new PxyObjSpoofingIpPool();
pool.setCfgId(Long.valueOf(cfg.getUserRegion3()));
pool = configSynchronizationDao.getPxyObjSpoofingIpPool(pool.getCfgId());
List<PxyObjSpoofingIpPool> poolList = new ArrayList<PxyObjSpoofingIpPool>();
pool.setIsValid(0);
pool.setCompileId(pool.getCompileId());
pool.setServiceId(pool.getServiceId());
poolList.add(pool);
//调用服务接口取消配置
String json=BaseService.gsonToJson(poolList);
logger.info("欺骗IP池配置配置参数"+json);
//调用服务接口取消配置
try {
ToMaatResult result = ConfigServiceUtil.put(json, 2);
logger.info("欺骗IP池配置响应信息"+result.getMsg());
} catch (Exception e) {
e.printStackTrace();
logger.info("欺骗IP池配置配置失败");
throw e;
}
}
}
}
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
@@ -857,7 +1065,7 @@ public class SchedulerTaskUtil {
configCompileList.add(maatCfg);
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(entity.getAuditTime());
maatBean.setCreatorName(entity.getCurrentUser().getName());
maatBean.setCreatorName("TaskScheduler");
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.UPDATE_ACTION);
//调用服务接口取消配置
@@ -865,7 +1073,7 @@ public class SchedulerTaskUtil {
logger.info("定时器修改配置状态:"+json);
//调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.put(json,1);
logger.info("定时器修改配置状态响应时间:"+result.getMsg());*/
logger.info("定时器修改配置状态响应"+result.getMsg());
}
}else if("2".equals(serviceType)){//回调类配置
@@ -925,17 +1133,11 @@ public class SchedulerTaskUtil {
//调用服务接口修改回调类配置状态
ToMaatResult result = ConfigServiceUtil.put(json,2);
logger.info("定时器修改回调类配置状态响应信息:"+result);
if(result==null){
return false;
}else{
return true;
}
}
}
}
return true;
}
//定时器非前台业务需要设置shiro的SecurityManager
private void SecurityManagerInit(){
@@ -953,5 +1155,28 @@ public class SchedulerTaskUtil {
}
public static void main(String[] args) {
}
private void covertCommongroupIdsMap(Map commGroupMap,String key,CfgIndexInfo cfg,ConfigSynchronizationDao configSynchronizationDao,Class clazz){
if(commGroupMap.containsKey(key)){
String groups=commGroupMap.get(key).toString();
List<Integer> _groupIds=new ArrayList<>();
for(String group:groups.split(",")){
if(StringUtils.isNotBlank(group)){
_groupIds.add(Integer.parseInt(group));
}
}
if(_groupIds.size()>0){
if("IpCommCfg".equals(clazz.getSimpleName())){
cfg.setIpCommGroupCfgList(configSynchronizationDao.getIpCommCfgPortList(_groupIds));
}else if("UrlCommCfg".equals(clazz.getSimpleName())){
cfg.setUrlCommGroupList(configSynchronizationDao.getUrlCommCfgPortList(_groupIds));
}else if("ScriberIdCommCfg".equals(clazz.getSimpleName())){
cfg.setScriberIdCommGroupList(configSynchronizationDao.getSubscribeIdCommCfgPortList(_groupIds));
}else if("DomainCommCfg".equals(clazz.getSimpleName())){
cfg.setDomainCommGroupList(configSynchronizationDao.getDomainCommCfgPortList(_groupIds));
}
}
}
}
}

View File

@@ -230,6 +230,24 @@ public class ServiceConfigTemplateUtil {
}
return list;
}
public static Set<String> getAllTableName(){
//Set<String> tableName = getCompileTableName();
Set<String> result = Sets.newHashSet();
List<Map<String, Object>> serviceList = getServiceList();
for (Map<String, Object> serviceNode : serviceList) {
result.add(serviceNode.get("tableName").toString().trim());
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) serviceNode.get("cfgList");
if(cfgList != null) {
for (Map<String, Object> map : cfgList) {
result.add(map.get("tableName").toString().trim());
}
}
}
return result;
}
public static void main(String[] args) {
try {
ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil();

View File

@@ -306,12 +306,31 @@ public class ExcelCsv {
dict="block_drop";
val = msgProp.getProperty(dict,dict);
}
if ("action".equals(ef.title()) && dict.equals("action_reject")
&& (Reflections.invokeGetter(e, "service").toString().equals("35")
|| Reflections.invokeGetter(e, "service").toString().equals("33")
|| Reflections.invokeGetter(e, "service").toString().equals("36"))) {
dict="block_drop";
val = msgProp.getProperty(dict,dict);
}
//ip spoofing redirect动作修改为Spoofing
if(ef.title().equals("block_type")
&& (Reflections.invokeGetter(e, "serviceId").toString().equals("518"))) {
dict="action_spoofing";
val = msgProp.getProperty(dict,dict);
}
//http(s) manipulate 导出action修改为Manipulate
if(ef.title().equals("block_type")
&& dict.equals("action_redirect")
&& (Reflections.invokeGetter(e, "serviceId").toString().equals("656"))) {
dict="action_manipulate";
val = msgProp.getProperty(dict,dict);
}
if(ef.title().equals("action")
&& dict.equals("action_redirect")) {
dict="action_manipulate";
val = msgProp.getProperty(dict,dict);
}
}
}

View File

@@ -23,6 +23,7 @@ import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
@@ -39,15 +40,19 @@ import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.basics.ServiceDictInfo;
import com.nis.domain.basics.SysDictInfo;
import com.nis.domain.callback.ProxyFileTrafficMirrorCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.Encodes;
@@ -56,6 +61,8 @@ import com.nis.util.StringUtil;
import com.nis.web.dao.basics.PolicyGroupInfoDao;
import com.nis.web.dao.basics.SysDictInfoDao;
import com.nis.web.dao.configuration.DnsResStrategyDao;
import com.nis.web.dao.configuration.ProxyFileTrafficMirrorDao;
import com.nis.web.dao.configuration.PxyObjKeyringDao;
import com.nis.web.service.SpringContextHolder;
/**
@@ -70,6 +77,8 @@ public class ExportExcel {
private static DnsResStrategyDao dnsResStrategyDao = SpringContextHolder.getBean(DnsResStrategyDao.class);
private static PolicyGroupInfoDao policyGroupInfoDao = SpringContextHolder.getBean(PolicyGroupInfoDao.class);
private static SysDictInfoDao sysDictInfoDao = SpringContextHolder.getBean(SysDictInfoDao.class);
private static PxyObjKeyringDao pxyObjKeyringDao = SpringContextHolder.getBean(PxyObjKeyringDao.class);
private static ProxyFileTrafficMirrorDao proxyFileDao = SpringContextHolder.getBean(ProxyFileTrafficMirrorDao.class);
/**
* 工作薄对象
@@ -264,6 +273,9 @@ public class ExportExcel {
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//1、非空
commentStr=commentStr+""+msgProp.getProperty("https_url_format_tip")+"\n";
index++;
//1、非空
commentStr=commentStr+""+msgProp.getProperty("required")+"\n";
index++;
}
@@ -290,7 +302,7 @@ public class ExportExcel {
}
}
/*** HTTP(s)替换 搜索区域 ***/
if(("replace_zone".equals(headerStr)) && (region.getFunctionId().equals(209))){
if(("replace_zone".equals(headerStr)) && (region.getFunctionId().equals(209) || "80".equals(region.getAction()+""))){
commentStr="";
List<SysDataDictionaryItem> dict=DictUtils.getDictList("CONTROL_REPLACE_ZONE");
if(dict !=null && dict.size()>0){
@@ -453,6 +465,28 @@ public class ExportExcel {
}
}
// IP、URL、Domain和ScriberId公共组
if("group_name".equals(headerStr)) {
commentStr="";
List<PolicyGroupInfo> list = null;
if(region.getFunctionId().equals(605)) {
list=policyGroupInfoDao.findPolicyGroupInfosByType(Constants.IP_OBJ_GROUP_TYPE);
}else if(region.getFunctionId().equals(606)) {
list=policyGroupInfoDao.findPolicyGroupInfosByType(Constants.URL_OBJ_GROUP_TYPE);
}else if(region.getFunctionId().equals(607)) {
list=policyGroupInfoDao.findPolicyGroupInfosByType(Constants.DOMAIN_OBJ_GROUP_TYPE);
}else if(region.getFunctionId().equals(608)) {
list=policyGroupInfoDao.findPolicyGroupInfosByType(Constants.SUBID_OBJ_GROUP_TYPE);
}
if(!StringUtil.isEmpty(list)){
for (PolicyGroupInfo policyGroupInfo : list) {
commentStr=commentStr+policyGroupInfo.getGroupName()+"\n";
index++;
}
}
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
}
if("isp".equals(headerStr)) {
commentStr="";
List<Integer> itTypeList = new ArrayList<Integer>();
@@ -569,7 +603,393 @@ public class ExportExcel {
commentStr=commentStr+""+msgProp.getProperty("ip_check")+"(IPv4)\n";
index++;
}
/**********************************************************************pxy intercept************************************************************************************************************/
//pxy intercept
if("pxy_intercept_monit_keyring".equals(headerStr)) {
commentStr="";
List<PxyObjKeyring> certificateList=pxyObjKeyringDao.findList(null,1,1,"ip");
if(CollectionUtils.isNotEmpty(certificateList)) {
for (PxyObjKeyring certificate : certificateList) {
commentStr=commentStr+certificate.getCompileId()+""+certificate.getCfgDesc()+"\n";
index++;
}
}
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
/*//2、默认值说明
commentStr=commentStr+"▶"+msgProp.getProperty("default_value")+":0\n";
index++;*/
index++;
}
}
//ev_cert
if("exclusions_ev_cert".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":0\n";
index++;
index++;
}
}
//cert_transparency
if("exclusions_cert_transparency".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":0\n";
index++;
index++;
}
}
//client_cert_req
if("exclusions_client_cert_req".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
index++;
index++;
}
}
//pinning
if("exclusions_pinning".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
index++;
index++;
}
}
//pinning
if("exclusions_protocol_errors".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
index++;
index++;
}
}
//cn
if("cert_verify_approach_cn".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
index++;
index++;
}
}
//issuer
if("cert_verify_approach_issuer".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
index++;
index++;
}
}
//self-signed
if("cert_verify_approach_self_signed".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
index++;
index++;
}
}
//expiration
if("cert_verify_approach_expiration".equals(headerStr)) {
commentStr="";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
index++;
index++;
}
}
//fail_method
if("cert_verify_fail_method".equals(headerStr)) {
commentStr="";
defaultValue="pass-through";
List<SysDataDictionaryItem> failMethods=DictUtils.getDictList("FAIL_METHOD");
if(CollectionUtils.isNotEmpty(failMethods)){
for (SysDataDictionaryItem failMethod : failMethods) {
commentStr=commentStr+failMethod.getItemCode()+""+msgProp.getProperty(failMethod.getItemValue(),failMethod.getItemValue())+""+"\n";
index++;
}
if(StringUtil.isEmpty(commentStr)){
headerStr="";
commentStr="";
}
if(StringUtil.isEmpty(defaultValue)){
defaultValue = region.getConfigDirection().split(",")[0];
}
}
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//1、默认值说明
if(!StringUtil.isEmpty(defaultValue)){
commentStr=commentStr+""+msgProp.getProperty("default_value")+":"+defaultValue+"\n";
index++;
}
}
//fail_method
if("ssl_ver_mirror_client".equals(headerStr)) {
commentStr="";
defaultValue="1";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//1、默认值说明
if(!StringUtil.isEmpty(defaultValue)){
commentStr=commentStr+""+msgProp.getProperty("default_value")+":"+defaultValue+"\n";
index++;
}
commentStr=commentStr+""+msgProp.getProperty("ssl_ver_mirror_client_on","if the mirror client option value is '1', the min SSL version and the max SSL version will be ignored")+"\n";
index++;
}
//min
if("ssl_ver_min".equals(headerStr)) {
commentStr="";
defaultValue="ssl3";
List<SysDataDictionaryItem> sslversions=DictUtils.getDictList("SSL_VERSION");
if(CollectionUtils.isNotEmpty(sslversions)){
for (SysDataDictionaryItem sslversion : sslversions) {
commentStr=commentStr+sslversion.getItemCode()+""+msgProp.getProperty(sslversion.getItemValue(),sslversion.getItemValue())+""+"\n";
index++;
}
if(StringUtil.isEmpty(commentStr)){
headerStr="";
commentStr="";
}
}
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//1、默认值说明
if(!StringUtil.isEmpty(defaultValue)){
commentStr=commentStr+""+msgProp.getProperty("default_value")+":"+defaultValue+"\n";
index++;
}
}
//max
if("ssl_ver_max".equals(headerStr)) {
commentStr="";
defaultValue="tls13";
List<SysDataDictionaryItem> sslversions=DictUtils.getDictList("SSL_VERSION");
if(CollectionUtils.isNotEmpty(sslversions)){
for (SysDataDictionaryItem sslversion : sslversions) {
commentStr=commentStr+sslversion.getItemCode()+""+msgProp.getProperty(sslversion.getItemValue(),sslversion.getItemValue())+""+"\n";
index++;
}
if(StringUtil.isEmpty(commentStr)){
headerStr="";
commentStr="";
}
}
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//1、默认值说明
if(!StringUtil.isEmpty(defaultValue)){
commentStr=commentStr+""+msgProp.getProperty("default_value")+":"+defaultValue+"\n";
index++;
}
}
//allow_http2
if("ssl_ver_allow_http2".equals(headerStr)) {
commentStr="";
defaultValue="1";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//1、默认值说明
if(!StringUtil.isEmpty(defaultValue)){
commentStr=commentStr+""+msgProp.getProperty("default_value")+":"+defaultValue+"\n";
index++;
}
index++;
}
if("decrypt_mirror_enable".equals(headerStr)) {
commentStr="";
defaultValue="0";
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
commentStr+=1+""+msgProp.getProperty("yes")+"\n";
index++;
commentStr+=0+""+msgProp.getProperty("no")+"\n";
index++;
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//1、默认值说明
if(!StringUtil.isEmpty(defaultValue)){
commentStr=commentStr+""+msgProp.getProperty("default_value")+":"+defaultValue+"\n";
index++;
}
commentStr=commentStr+""+msgProp.getProperty("decrypt_mirror_enable_on","if the enable option value is '1', the Mirror profile is needed")+"\n";
index++;
}
if("decrypt_mirror_mirror_profile".equals(headerStr)) {
commentStr="";
List<ProxyFileTrafficMirrorCfg> mirrorProfileList=proxyFileDao.findMirrorList(null,1,1);
if(CollectionUtils.isNotEmpty(mirrorProfileList)) {
for (ProxyFileTrafficMirrorCfg mirrorProfile : mirrorProfileList) {
commentStr=commentStr+mirrorProfile.getCompileId()+""+mirrorProfile.getCfgDesc()+"\n";
index++;
}
}
if(StringUtil.isEmpty(headerStr)){
headerStr="";
commentStr="";
}else{
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
index++;
commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
/*//2、默认值说明
commentStr=commentStr+"▶"+msgProp.getProperty("default_value")+":0\n";
index++;*/
index++;
}
}
/**********************************************************************pxy intercept************************************************************************************************************/
if(region.getRegionType().equals(1)){//IP配置
//ip配置需要导入的信息srcIp srcPort destIp destPort Protocol Direction
//确定需要导入的srcIp srcPort destIp destPort信息
@@ -583,25 +1003,28 @@ public class ExportExcel {
commentStr="";
}
}else{
String[] ipPatterns=region.getConfigIpPattern().split(";");
if("client_ip".equals(headerStr)){
Assert.isTrue(ipPatterns.length==2);
String srcIpPattern=ipPatterns[0];
if(((","+region.getConfigIpPortShow()+",").indexOf(",1,") > -1) ){
commentStr="";
if((","+region.getConfigIpType()+",").indexOf(",4,") > -1){
if((","+region.getConfigIpPattern()+",").indexOf(",3,") > -1){
if((","+srcIpPattern+",").indexOf(",3,") > -1){
commentStr=commentStr+Constants.IPV4_DEFAULT_IP_VALUE+"IPv4"+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV4_DEFAULT_IP_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",2,") > -1){
if((","+srcIpPattern+",").indexOf(",2,") > -1){
commentStr=commentStr+Constants.IPV4_DEFAULT_IP_RANGE_VALUE+""+msgProp.getProperty("ipv4_range_tip")+""+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV4_DEFAULT_IP_RANGE_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",1,") > -1){
if((","+srcIpPattern+",").indexOf(",1,") > -1){
commentStr=commentStr+Constants.IPV4_DEFAULT_IP_SUBNET_VALUE+""+msgProp.getProperty("ipv4_subnet_tip")+""+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV4_DEFAULT_IP_SUBNET_VALUE;
@@ -610,21 +1033,21 @@ public class ExportExcel {
}
}
if((","+region.getConfigIpType()+",").indexOf(",6,") > -1){
if((","+region.getConfigIpPattern()+",").indexOf(",3,") > -1){
if((","+srcIpPattern+",").indexOf(",3,") > -1){
commentStr=commentStr+Constants.IPV6_DEFAULT_IP_VALUE+"IPv6"+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV6_DEFAULT_IP_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",2,") > -1){
if((","+srcIpPattern+",").indexOf(",2,") > -1){
commentStr=commentStr+Constants.IPV6_DEFAULT_IP_RANGE_VALUE+""+msgProp.getProperty("ipv6_range_tip")+""+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV6_DEFAULT_IP_RANGE_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",1,") > -1){
if((","+srcIpPattern+",").indexOf(",1,") > -1){
commentStr=commentStr+Constants.IPV6_DEFAULT_IP_SUBNET_VALUE+""+msgProp.getProperty("ipv6_subnet_tip")+""+"\n\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV6_DEFAULT_IP_SUBNET_VALUE;
@@ -673,12 +1096,12 @@ public class ExportExcel {
,msgProp.getProperty("serverip"))+"\n";
index++;
index++;
commentStr=commentStr+""+String.format(msgProp.getProperty("the_same_ip_type_pattern"))+"\n";
commentStr=commentStr+""+String.format(msgProp.getProperty("the_same_ip_type"))+"\n";
index++;
index++;
}
//4、IP Range 开始IP和结束IP必须在同一网段
if(((","+region.getConfigIpPattern()+",").indexOf(",2,") > -1)){
if(((","+srcIpPattern+",").indexOf(",2,") > -1)){
commentStr=commentStr+""+msgProp.getProperty("ip_range")+","+msgProp.getProperty("ip_range_bit_field")+"\n";
index++;
index++;
@@ -689,7 +1112,7 @@ public class ExportExcel {
}
//6、IPv4 Mask 掩码范围16-32
if(((","+region.getConfigIpPattern()+",").indexOf(",1,") > -1)){
if(((","+srcIpPattern+",").indexOf(",1,") > -1)){
if(((","+region.getConfigIpType()+",").indexOf(",4,") > -1)){
commentStr=commentStr+""+msgProp.getProperty("ipv4_subnet_tip")+","+msgProp.getProperty("ipv4_mask_range_tip")+"\n";
index++;
@@ -705,24 +1128,25 @@ public class ExportExcel {
}
if("server_ip".equals(headerStr)){
String destIpPattern=ipPatterns[1];
if((","+region.getConfigIpPortShow()+",").indexOf(",3,") > -1){
commentStr="";
if((","+region.getConfigIpType()+",").indexOf(",4,") > -1){
if((","+region.getConfigIpPattern()+",").indexOf(",3,") > -1){
if((","+destIpPattern+",").indexOf(",3,") > -1){
commentStr=commentStr+Constants.IPV4_DEFAULT_IP_VALUE+"IPv4"+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV4_DEFAULT_IP_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",2,") > -1){
if((","+destIpPattern+",").indexOf(",2,") > -1){
commentStr=commentStr+Constants.IPV4_DEFAULT_IP_RANGE_VALUE+""+msgProp.getProperty("ipv4_range_tip")+""+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV4_DEFAULT_IP_RANGE_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",1,") > -1){
if((","+destIpPattern+",").indexOf(",1,") > -1){
commentStr=commentStr+Constants.IPV4_DEFAULT_IP_SUBNET_VALUE+""+msgProp.getProperty("ipv4_subnet_tip")+""+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV4_DEFAULT_IP_SUBNET_VALUE;
@@ -731,21 +1155,21 @@ public class ExportExcel {
}
}
if((","+region.getConfigIpType()+",").indexOf(",6,") > -1){
if((","+region.getConfigIpPattern()+",").indexOf(",3,") > -1){
if((","+destIpPattern+",").indexOf(",3,") > -1){
commentStr=commentStr+Constants.IPV6_DEFAULT_IP_VALUE+"IPv6"+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV6_DEFAULT_IP_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",2,") > -1){
if((","+destIpPattern+",").indexOf(",2,") > -1){
commentStr=commentStr+Constants.IPV6_DEFAULT_IP_RANGE_VALUE+""+msgProp.getProperty("ipv6_range_tip")+""+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV6_DEFAULT_IP_RANGE_VALUE;
}
index++;
}
if((","+region.getConfigIpPattern()+",").indexOf(",1,") > -1){
if((","+destIpPattern+",").indexOf(",1,") > -1){
commentStr=commentStr+Constants.IPV6_DEFAULT_IP_SUBNET_VALUE+""+msgProp.getProperty("ipv6_subnet_tip")+""+"\n\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.IPV6_DEFAULT_IP_SUBNET_VALUE;
@@ -778,12 +1202,12 @@ public class ExportExcel {
,msgProp.getProperty("serverip"))+"\n";
index++;
index++;
commentStr=commentStr+""+String.format(msgProp.getProperty("the_same_ip_type_pattern"))+"\n";
commentStr=commentStr+""+String.format(msgProp.getProperty("the_same_ip_type"))+"\n";
index++;
index++;
}
//4、IP Range 开始IP和结束IP必须在同一网段
if(((","+region.getConfigIpPattern()+",").indexOf(",2,") > -1)){
if(((","+destIpPattern+",").indexOf(",2,") > -1)){
commentStr=commentStr+""+msgProp.getProperty("ip_range")+","+msgProp.getProperty("ip_range_bit_field")+"\n";
index++;
index++;
@@ -794,7 +1218,7 @@ public class ExportExcel {
}
//6、IPv4 Mask 掩码范围16-32
if(((","+region.getConfigIpPattern()+",").indexOf(",1,") > -1)){
if(((","+destIpPattern+",").indexOf(",1,") > -1)){
if(((","+region.getConfigIpType()+",").indexOf(",4,") > -1)){
commentStr=commentStr+""+msgProp.getProperty("ipv4_subnet_tip")+","+msgProp.getProperty("ipv4_mask_range_tip")+"\n";
index++;
@@ -820,17 +1244,20 @@ public class ExportExcel {
}else{
protocol=region.getConfigProtocol();
}
String[] portPatterns=region.getConfigPortPattern().split(";");
Assert.isTrue(portPatterns.length==2);
if("client_port".equals(headerStr)){
String srcPortPattern=portPatterns[0];
if(((","+region.getConfigIpPortShow()+",").indexOf(",2,") > -1)){
commentStr="";
if((","+region.getConfigPortPattern()+",").indexOf(",1,") > -1){
if((","+srcPortPattern+",").indexOf(",1,") > -1){
commentStr=commentStr+Constants.PORT_DEFAULT+"Port"+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.PORT_DEFAULT;
}
index++;
}
if((","+region.getConfigPortPattern()+",").indexOf(",2,") > -1){
if((","+srcPortPattern+",").indexOf(",2,") > -1){
commentStr=commentStr+Constants.PORT_MASK_DEFAULT+"Port/"+msgProp.getProperty("port_mask")+""+"\n\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.PORT_MASK_DEFAULT;
@@ -856,11 +1283,11 @@ public class ExportExcel {
index++;
}
//2、源端口、目的端口格式必须一致
if(((","+region.getConfigIpPortShow()+",").indexOf(",2,") > -1) && ((","+region.getConfigIpPortShow()+",").indexOf(",4,") > -1)){
commentStr=commentStr+""+msgProp.getProperty("the_same_port_pattern")+"\n";
index++;
index++;
}
// if(((","+region.getConfigIpPortShow()+",").indexOf(",2,") > -1) && ((","+region.getConfigIpPortShow()+",").indexOf(",4,") > -1)){
// commentStr=commentStr+"▶"+msgProp.getProperty("the_same_port_pattern")+"\n";
// index++;
// index++;
// }
//3、端口和端口掩码范围0-65535
commentStr=commentStr+""+msgProp.getProperty("port_mask_comment_tip")+"\n";
index++;
@@ -895,16 +1322,17 @@ public class ExportExcel {
}
}
if("server_port".equals(headerStr)){
String destPortPattern=portPatterns[1];
if((","+region.getConfigIpPortShow()+",").indexOf(",4,") > -1){
commentStr="";
if((","+region.getConfigPortPattern()+",").indexOf(",1,") > -1){
if((","+destPortPattern+",").indexOf(",1,") > -1){
commentStr=commentStr+Constants.PORT_DEFAULT+"Port"+"\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.PORT_DEFAULT;
}
index++;
}
if((","+region.getConfigPortPattern()+",").indexOf(",2,") > -1){
if((","+destPortPattern+",").indexOf(",2,") > -1){
commentStr=commentStr+Constants.PORT_MASK_DEFAULT+"Port/"+msgProp.getProperty("port_mask")+""+"\n\n";
if(StringUtil.isEmpty(defaultValue)){
defaultValue=Constants.PORT_MASK_DEFAULT;
@@ -930,11 +1358,11 @@ public class ExportExcel {
index++;
}
//2、源端口、目的端口格式必须一致
if(((","+region.getConfigIpPortShow()+",").indexOf(",2,") > -1) && ((","+region.getConfigIpPortShow()+",").indexOf(",4,") > -1)){
commentStr=commentStr+""+msgProp.getProperty("the_same_port_pattern")+"\n";
index++;
index++;
}
// if(((","+region.getConfigIpPortShow()+",").indexOf(",2,") > -1) && ((","+region.getConfigIpPortShow()+",").indexOf(",4,") > -1)){
// commentStr=commentStr+"▶"+msgProp.getProperty("the_same_port_pattern")+"\n";
// index++;
// index++;
// }
//3、端口和端口掩码范围0-65535
commentStr=commentStr+""+msgProp.getProperty("port_mask_comment_tip")+"\n";
index++;
@@ -1144,11 +1572,17 @@ public class ExportExcel {
headerStr="";
commentStr="";
}else{
for (String districtStr : region.getConfigDistrict().split(",")) {
commentStr=commentStr+districtStr+"\n";
if((region.getAction()!=null) && (region.getAction()==85 || region.getAction()==90)) {
commentStr=commentStr+"Content-Type"+"\n";
index++;
defaultValue="Content-Type";
}else {
for (String districtStr : region.getConfigDistrict().split(",")) {
commentStr=commentStr+districtStr+"\n";
index++;
}
defaultValue=region.getConfigDistrict().split(",")[0];
}
defaultValue=region.getConfigDistrict().split(",")[0];
}
if(StringUtil.isEmpty(commentStr)){
headerStr="";
@@ -1404,7 +1838,7 @@ public class ExportExcel {
commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n";
index++;
//2、默认值说明
if(region.getFunctionId().equals(200)) {
if(region.getFunctionId().equals(200) || region.getFunctionId().equals(607)) {
commentStr=commentStr+""+msgProp.getProperty("default_value")+":1\n";
}else {
commentStr=commentStr+""+msgProp.getProperty("default_value")+":0\n";
@@ -2233,7 +2667,9 @@ public class ExportExcel {
* @return list 数据列表
*/
public <E> ExportExcel setDataList(Properties msgProp, Map<String,List> dataMap, Map<Object,Object> map){
long start=System.currentTimeMillis(),end=System.currentTimeMillis();
Set<String> keyList=dataMap.keySet();
Map<String,Map<String,String>> dictMaps=Maps.newConcurrentMap();
for (String key : keyList) {
List<E> list=dataMap.get(key);
for (E e : list){
@@ -2263,7 +2699,16 @@ public class ExportExcel {
val = getBasicInfo(ef.dictType(),map,valStr);
}else{
//字典数据已做国际化处理
String dict=DictUtils.getDictLabel(ef.dictType(), valStr, valStr);
String dict="";
if(dictMaps.containsKey(ef.dictType())) {
Map<String,String> dictM=dictMaps.get(ef.dictType());
dict=dictM.containsKey(valStr)?dictM.get(valStr):valStr;
}else {
Map<String,String> dictM=DictUtils.getDictMap(ef.dictType());
dictMaps.put(ef.dictType(), dictM);
dict=dictM.containsKey(valStr)?dictM.get(valStr):valStr;
}
//String dict=DictUtils.getDictLabel(ef.dictType(), valStr, valStr);
//如果找不到字典国际化值,把字典本身作为默认值放进去,不然导出就是空了
val = msgProp.getProperty(dict,dict);
//业务配置-stream 阻断类型中 阻断 改为 封堵(丢弃)
@@ -2274,15 +2719,38 @@ public class ExportExcel {
dict="block_drop";
val = msgProp.getProperty(dict,dict);
}
if ("action".equals(ef.title()) && dict.equals("action_reject")
&& (Reflections.invokeGetter(e, "service").toString().equals("35")
|| Reflections.invokeGetter(e, "service").toString().equals("33")
|| Reflections.invokeGetter(e, "service").toString().equals("36"))) {
dict="block_drop";
val = msgProp.getProperty(dict,dict);
}
//ip spoofing redirect动作修改为Spoofing
if(ef.title().equals("block_type")
&& (Reflections.invokeGetter(e, "serviceId").toString().equals("518"))) {
dict="action_spoofing";
val = msgProp.getProperty(dict,dict);
}
//http(s) manipulate 导出action修改为Manipulate
if(ef.title().equals("block_type")
&& dict.equals("action_redirect")
&& (Reflections.invokeGetter(e, "serviceId").toString().equals("656"))) {
dict="action_manipulate";
val = msgProp.getProperty(dict,dict);
}
if(ef.title().equals("action")
&& dict.equals("action_redirect")) {
dict="action_manipulate";
val = msgProp.getProperty(dict,dict);
}
}
}
if(ef.title().equals("do_log")
&& (Reflections.invokeGetter(e, "serviceId").toString().equals("512"))) {
val = "";
}
if(ef.title().equals("whether_area_block")&&!StringUtil.isEmpty(val)){
Integer whetherAreaBlock=Integer.parseInt(valStr);
if(whetherAreaBlock.equals(0)){
@@ -2332,6 +2800,8 @@ public class ExportExcel {
log.debug("Write success: ["+row.getRowNum()+"] "+sb.toString());
}
}
end=System.currentTimeMillis();
System.err.println("setDataList cost:"+(end-start));
return this;
}
/**
@@ -2457,13 +2927,14 @@ public class ExportExcel {
/**
* 构造函数
* @param msgProp 国际化配置
* @param title sheet名称
* @param cls 实体对象通过annotation.ExportField获取标题
* @param titleList sheet名称
* @param clsMap 实体对象通过annotation.ExportField获取标题
* @param type 导出类型1:导出数据2导出模板
* @param groups 导入分组
* @return
*/
public ExportExcel(Properties msgProp,List<String> titleList,Map<String,String> noExportMap,Map<String, Class<?>> clsMap, int type,String titleTime, int... groups){
long start=System.currentTimeMillis(),end=System.currentTimeMillis();
Map<String, List<String>> headerMap=new HashMap<String, List<String>>();
Map<String, List<String>> commentMap=new HashMap<String, List<String>>();
for (String title : titleList) {
@@ -2589,6 +3060,8 @@ public class ExportExcel {
annotationMap.put(title, annotationList);
}
initializeMultiSheet(msgProp,titleList, headerMap,commentMap,titleTime);
end=System.currentTimeMillis();
System.err.println("ExportExcel cost:"+(end-start));
}
/**

View File

@@ -12,7 +12,9 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
@@ -421,19 +423,23 @@ public class ImportBigExcel extends XLSXCovertCSVReader{
throw new RuntimeException("regionDict is null!");
}
if(dataList.size()==0) {
throw new ServiceException(props.getProperty("noneData", "noneData"));
throw new ServiceException(props.getProperty("no_data", "no_data"));
}else if(this.hasImportLimit&&dataList.size()>(Constants.IMPORT_LIMIT+1)) {
throw new ServiceException(props.getProperty("import_limit_is", "The maximum import size is")+" "+Constants.IMPORT_LIMIT);
}
// Get excel data
BlockingQueue<E> _dataList =new ArrayBlockingQueue(dataList.size(),true);
for (int i = 0; i < dataList.size(); i++) {
E e = (E)cls.newInstance();
if(i<=headerNum) {
Map<String, Map<String, Object>> dictMap = new HashMap<String,Map<String, Object>>();
Object val1 = null;
for (int i = 0, len = dataList.size(); i < len; i++) {
List<Object> row=dataList.get(i);
//boolean flag = row.stream().allMatch(obj -> "".equals(obj));
if(i <= headerNum || row.size() == 0) {// 跳过第一行和空行
continue;
}
E e = (E)cls.newInstance();
int column = 0;
List<Object> row=dataList.get(i);
StringBuilder sb = new StringBuilder();
for (Object[] os : annotationList){
Object val=row.get(column);
@@ -442,7 +448,23 @@ public class ImportBigExcel extends XLSXCovertCSVReader{
ExcelField ef = (ExcelField)os[0];
// If is dict type, get dict value
if (StringUtils.isNotBlank(ef.dictType())){
Object val1 = DictUtils.getDictCode(ef.dictType(), val.toString(), "");
// 缓存当前excel文件获取过的字典值
if(!dictMap.containsKey(ef.dictType())) {
val1 = DictUtils.getDictCode(ef.dictType(), val.toString(), "");
Map<String, Object> putMap = new HashMap<String,Object>();
putMap.put(val.toString(), val1);
dictMap.put(ef.dictType(), putMap);
}else {
Map<String, Object> map = dictMap.get(ef.dictType());
if(!map.containsKey(val.toString())) {
val1 = DictUtils.getDictCode(ef.dictType(), val.toString(), "");
map.put(val.toString(), val1);
dictMap.put(ef.dictType(), map);
}else {
val1 = map.get(val.toString());
}
}
//没有获取到字典值的话会影响验证判断
if(val1!=null&&StringUtils.isNotBlank(val1.toString())) {
val=val1;
@@ -466,11 +488,11 @@ public class ImportBigExcel extends XLSXCovertCSVReader{
if (valType == String.class){
String s = String.valueOf(val.toString().trim());
//0.0.0.0表示任意IP的含义
if(StringUtils.endsWith(s, ".0") && !s.endsWith("0.0.0.0")){
val = StringUtils.substringBefore(s, ".0");
}else{
val=val == null ? "" : StringEscapeUtils.escapeHtml4(val.toString().trim());
}
// if(StringUtils.endsWith(s, ".0") && !s.endsWith("0.0.0.0")){
// val = StringUtils.substringBefore(s, ".0");
// }else{
val=val == null ? "" : StringEscapeUtils.escapeHtml4(val.toString().trim());
// }
}else if (valType == Integer.class){
val = Double.valueOf(val.toString().trim()).intValue();
}else if (valType == Long.class){

View File

@@ -112,7 +112,8 @@ public abstract class XLSXCovertCSVReader {
// private String[] record;
// private List<String[]> rows = new ArrayList<String[]>();
private boolean isCellNull = false;
private int upRowId; // 记录上一行行号
/**
* Accepts objects needed while parsing.
*
@@ -203,8 +204,23 @@ public abstract class XLSXCovertCSVReader {
if (this.formatString == null)
this.formatString = BuiltinFormats
.getBuiltinFormat(this.formatIndex);
}
}
}
}else if("row".equals(name)) {
// 获取行号
String r = attributes.getValue("r");
int index = Integer.parseInt(r);
int gap = index - upRowId;
if(gap > 1) { // 存在空行
while(gap > 1) {
optRows(sheetIndex,lastColumnNumber,rowlist);
gap--;
}
}
upRowId = index;
}
lastContents = "";
}

View File

@@ -91,6 +91,10 @@ public class CheckComplexStringFormatThread implements Callable<String>{
throw new RuntimeException("Found String region,but mulityKeywords is Empty");
}
String dirtrictP = regionDict.getConfigDistrict();
// 代理-操控业务hijack、insert
if("85".equals(regionDict.getAction()+"") || "90".equals(regionDict.getAction()+"")) {
dirtrictP = "Content-Type";
}
StringBuffer errTip = new StringBuffer();
Pattern pattern = Pattern.compile("\t|\r|\n|\b|\f");
for (int i = 0; i < list.size(); i++) {
@@ -127,7 +131,7 @@ public class CheckComplexStringFormatThread implements Callable<String>{
}
}
// 代理HTTP(s)阻断
if (regionDict.getFunctionId().equals(207)) {
if (regionDict.getFunctionId().equals(207) || "16".equals(regionDict.getAction()+"")) {
if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) {
baseStringCfg.setUserRegion1("404");
}
@@ -153,9 +157,9 @@ public class CheckComplexStringFormatThread implements Callable<String>{
}
// 代理 HTTP(s)重定向
if (regionDict.getFunctionId().equals(208)) {
if (regionDict.getFunctionId().equals(208) || "48".equals(regionDict.getAction()+"")) {
if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) {
baseStringCfg.setUserRegion1("301");
baseStringCfg.setUserRegion1("302");
}
String userRegion1 = baseStringCfg.getUserRegion1();// 重定向应答码
String userRegion2 = baseStringCfg.getUserRegion2();// 重定向URL
@@ -188,7 +192,7 @@ public class CheckComplexStringFormatThread implements Callable<String>{
}
}
// 代理HTTP(s)替换
if (regionDict.getFunctionId().equals(209)) {
if (regionDict.getFunctionId().equals(209) || "80".equals(regionDict.getAction()+"")) {
if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) {
baseStringCfg.setUserRegion1("http_resp_body");
}
@@ -381,45 +385,46 @@ public class CheckComplexStringFormatThread implements Callable<String>{
prop.getProperty("is_case_insenstive")) + ";");
}
}
} else {
if (isHex.intValue() != 0 && isHex.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (isCaseInsenstive.intValue() != 0 && isCaseInsenstive.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.indexOf("1") == -1 && isHex.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.equals("1") && isHex.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.indexOf("2") == -1 && isCaseInsenstive.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.equals("2") && isCaseInsenstive.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
// 关键字十六进制校验
if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) {
boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches();
if(!bl) {
errInfo.append(
prop.getProperty("key_word") + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
}
}
}
isHex = baseStringCfg.getIsHex();
isCaseInsenstive = baseStringCfg.getIsCaseInsenstive();
if (isHex.intValue() != 0 && isHex.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (isCaseInsenstive.intValue() != 0 && isCaseInsenstive.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.indexOf("1") == -1 && isHex.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.equals("1") && isHex.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.indexOf("2") == -1 && isCaseInsenstive.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.equals("2") && isCaseInsenstive.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
// 关键字十六进制校验
if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) {
boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches();
if(!bl) {
errInfo.append(
prop.getProperty("key_word") + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
}
}
if (isHex != null && isCaseInsenstive != null) {
if (isHex.intValue() == 0 && isCaseInsenstive.intValue() == 0) {
baseStringCfg.setIsHexbin(0);

View File

@@ -1,7 +1,9 @@
package com.nis.util.excel.thread;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.BlockingQueue;
@@ -19,10 +21,17 @@ import com.beust.jcommander.internal.Sets;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.basics.CommonGroupInfo;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.callback.ProxyFileTrafficMirrorCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.web.dao.configuration.ProxyFileTrafficMirrorDao;
import com.nis.web.dao.configuration.PxyObjKeyringDao;
import com.nis.web.service.BaseService;
import com.nis.web.service.SpringContextHolder;
public class CheckStringFormatThread implements Callable<String>{
private Logger logger=Logger.getLogger(CheckStringFormatThread.class);
@@ -32,6 +41,8 @@ public class CheckStringFormatThread implements Callable<String>{
// private DnsResStrategyDao dnsResStrategyDao;
private FunctionServiceDict serviceDict;
private FunctionRegionDict regionDict;
private static PxyObjKeyringDao pxyObjKeyringDao = SpringContextHolder.getBean(PxyObjKeyringDao.class);
private static ProxyFileTrafficMirrorDao proxyFileDao = SpringContextHolder.getBean(ProxyFileTrafficMirrorDao.class);
public CheckStringFormatThread(FunctionServiceDict serviceDict,FunctionRegionDict regionDict,Properties prop,BlockingQueue<? extends Object> srcQueue,BlockingQueue<BaseStringCfg<?>> destQueue) {
this.serviceDict=serviceDict;
this.regionDict=regionDict;
@@ -91,6 +102,16 @@ public class CheckStringFormatThread implements Callable<String>{
StringBuffer errTip = new StringBuffer();
Pattern pattern = Pattern.compile("\t|\r|\n|\b|\f");
Pattern domainPattern = Pattern.compile("^[a-zA-Z0-9.-]*$");
List<SysDataDictionaryItem> sslversions = new ArrayList<>();
List<SysDataDictionaryItem> failmethods = new ArrayList<>();
List<PxyObjKeyring> certificateList=new ArrayList<>();
List<ProxyFileTrafficMirrorCfg> mirrorProfileList=new ArrayList<>();
if(serviceDict!=null&&serviceDict.getServiceId().equals(512)) {
certificateList=pxyObjKeyringDao.findList(null,1,1,"ip");
sslversions=DictUtils.getDictList("SSL_VERSION");
failmethods=DictUtils.getDictList("FAIL_METHOD");
mirrorProfileList=proxyFileDao.findMirrorList(null, 1, 1);
}
for (int i = 0; i < list.size(); i++) {
StringBuffer errInfo = new StringBuffer();
BaseStringCfg baseStringCfg = new BaseStringCfg();
@@ -104,14 +125,20 @@ public class CheckStringFormatThread implements Callable<String>{
errInfo.append(prop.getProperty("config_describe")+prop.getProperty("length_error")+" "+String.format(prop.getProperty("max_length")+":128") + ";");
}
if(regionDict.getFunctionId().equals(606) || regionDict.getFunctionId().equals(607) || regionDict.getFunctionId().equals(608)) {
if(StringUtils.isBlank(baseStringCfg.getGroupName())) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), prop.getProperty("group_name")) + ";");
}
}
if(regionDict.getFunctionId().equals(200)) {
if(!serviceDict.getAction().equals(1)) {
if(!serviceDict.getAction().equals(2)) {
baseStringCfg.setDoLog(0);
}
}
// doLog属性检验
this.validDoLog(baseStringCfg,errInfo);
if (regionDict.getRegionType().equals(2)) {
if (regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())) {
String userRegion1 = baseStringCfg.getUserRegion1();
@@ -132,7 +159,7 @@ public class CheckStringFormatThread implements Callable<String>{
}
// 代理-域名拦截
if (regionDict.getFunctionId().equals(200) && "intercept_domain".equals(regionDict.getConfigServiceType())) {
if(serviceDict.getAction().equals(1)) {
/*if(serviceDict.getAction().equals(1)) {
if(StringUtils.isBlank(baseStringCfg.getUserRegion5())) {
baseStringCfg.setUserRegion5("1");
}
@@ -152,7 +179,7 @@ public class CheckStringFormatThread implements Callable<String>{
}
}
}else if(serviceDict.getAction().equals(64)) {
}else*/ if(serviceDict.getAction().equals(64)) {
baseStringCfg.setUserRegion1("0");// limit_rate_type限速方式默认值
if(StringUtils.isBlank(baseStringCfg.getUserRegion2())) {
baseStringCfg.setUserRegion2("0.1");
@@ -177,7 +204,7 @@ public class CheckStringFormatThread implements Callable<String>{
}
// 代理HTTP(s)阻断
if (regionDict.getFunctionId().equals(207)) {
if (regionDict.getFunctionId().equals(207) || "16".equals(regionDict.getAction()+"")) {
if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) {
baseStringCfg.setUserRegion1("404");
}
@@ -203,9 +230,9 @@ public class CheckStringFormatThread implements Callable<String>{
}
// 代理 HTTP(s)重定向
if (regionDict.getFunctionId().equals(208)) {
if (regionDict.getFunctionId().equals(208) || "48".equals(regionDict.getAction()+"")) {
if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) {
baseStringCfg.setUserRegion1("301");
baseStringCfg.setUserRegion1("302");
}
String userRegion1 = baseStringCfg.getUserRegion1();// 重定向应答码
String userRegion2 = baseStringCfg.getUserRegion2();// 重定向URL
@@ -238,7 +265,7 @@ public class CheckStringFormatThread implements Callable<String>{
}
}
// 代理HTTP(s)替换
if (regionDict.getFunctionId().equals(209)) {
if (regionDict.getFunctionId().equals(209) || "80".equals(regionDict.getAction()+"")) {
if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) {
baseStringCfg.setUserRegion1("http_resp_body");
}
@@ -277,7 +304,7 @@ public class CheckStringFormatThread implements Callable<String>{
}
String keyword = baseStringCfg.getCfgKeywords();
if (!regionDict.getFunctionId().equals(403) && !regionDict.getFunctionId().equals(200)) {// 201域名拦截
if (!regionDict.getFunctionId().equals(403) && !regionDict.getFunctionId().equals(200) && !regionDict.getFunctionId().equals(607)) {// 201域名拦截
if (StringUtils.isBlank(keyword)) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), prop.getProperty("key_word") + " ") + ";");
@@ -437,49 +464,50 @@ public class CheckStringFormatThread implements Callable<String>{
prop.getProperty("is_case_insenstive")) + ";");
}
}
} else {
if (isHex.intValue() != 0 && isHex.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (isCaseInsenstive.intValue() != 0 && isCaseInsenstive.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.indexOf("1") == -1 && isHex.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.equals("1") && isHex.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.indexOf("2") == -1 && isCaseInsenstive.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.equals("2") && isCaseInsenstive.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
// 十六进制 关键字校验
if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) {
boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches();
if(!bl) {
String message = prop.getProperty("key_word");
if(regionDict.getFunctionId().equals(403) || regionDict.getFunctionId().equals(200)) {
message = prop.getProperty("domain_name");
}
errInfo.append(
message + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
}
}
}
isHex = baseStringCfg.getIsHex();
isCaseInsenstive = baseStringCfg.getIsCaseInsenstive();
if (isHex.intValue() != 0 && isHex.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (isCaseInsenstive.intValue() != 0 && isCaseInsenstive.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.indexOf("1") == -1 && isHex.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.equals("1") && isHex.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.indexOf("2") == -1 && isCaseInsenstive.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.equals("2") && isCaseInsenstive.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
// 十六进制 关键字校验
if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) {
boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches();
if(!bl) {
String message = prop.getProperty("key_word");
if(regionDict.getFunctionId().equals(403) || regionDict.getFunctionId().equals(200)) {
message = prop.getProperty("domain_name");
}
errInfo.append(
message + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
}
}
if (isHex != null && isCaseInsenstive != null) {
if (isHex.intValue() == 0 && isCaseInsenstive.intValue() == 0) {
baseStringCfg.setIsHexbin(0);
@@ -493,6 +521,252 @@ public class CheckStringFormatThread implements Callable<String>{
}
}
if(serviceDict!=null&&serviceDict.getServiceId().equals(512)) {
Integer kering=baseStringCfg.getKeyring();
Integer evCet=baseStringCfg.getEvCert();
Integer certTransparency=baseStringCfg.getCertTransparency();
Integer clientCertReq=baseStringCfg.getClientCertReq();
Integer pinning=baseStringCfg.getPinning();
Integer protocolErrors=baseStringCfg.getProtocolErrors();
Integer cn=baseStringCfg.getCn();
Integer issuer=baseStringCfg.getIssuer();
Integer selfSigned=baseStringCfg.getSelfSigned();
Integer expiration=baseStringCfg.getExpiration();
String failMethod=baseStringCfg.getFailMethod();
String min=baseStringCfg.getMin();
String max=baseStringCfg.getMax();
Integer mirrorClient=baseStringCfg.getMirrorClient();
Integer allowHttp2=baseStringCfg.getAllowHttp2();
Integer enable=baseStringCfg.getEnable();
Integer mirrorProfile=baseStringCfg.getMirrorProfile();
Map<String,Object> userRegionMap=new HashMap<>();
Map<String,Object> map=new HashMap<>();
if(kering!=null) {
boolean has=false;
for(PxyObjKeyring keyring:certificateList) {
if(keyring.getCompileId().toString().equals(kering.toString())) {
has=true;
break;
}
}
if(has) {
userRegionMap.put("keyring", kering);
}else {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("pxy_intercept_monit_keyring") + " ") + ";");
}
}else {
userRegionMap.put("keyring", 1);
}
if(evCet!=null) {
if(evCet!=0&&evCet!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("exclusions_ev_cert","exclusions ev cert") + " ") + ";");
}else {
map.put("ev_cert", evCet);
}
}else {
map.put("ev_cert", 0);
}
if(certTransparency!=null) {
if(certTransparency!=0&&certTransparency!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("exclusions_cert_transparency","exclusions cert transparency") + " ") + ";");
}else {
map.put("cert_transparency", certTransparency);
}
}else {
map.put("cert_transparency", 0);
}
if(clientCertReq!=null) {
if(clientCertReq!=0&&clientCertReq!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("exclusions_client_cert_req","exclusions client cert req") + " ") + ";");
}else {
map.put("client_cert_req", clientCertReq);
}
}else {
map.put("client_cert_req", 1);
}
if(pinning!=null) {
if(pinning!=0&&pinning!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("exclusions_pinning","exclusions pinning") + " ") + ";");
}else {
map.put("pinning", pinning);
}
}else {
map.put("pinning", 1);
}
if(protocolErrors!=null) {
if(protocolErrors!=0&&protocolErrors!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("exclusions_protocol_errors","exclusions protocol errors") + " ") + ";");
}else {
map.put("protocol_errors", protocolErrors);
}
}else {
map.put("protocol_errors", 1);
}
userRegionMap.put("exclusions", map);
map=new HashMap<>();
Map<String,Object> map1=new HashMap<>();
if(cn!=null) {
if(cn!=0&&cn!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("cert_verify_approach_cn","cert verify approach cn") + " ") + ";");
}else {
map1.put("cn", cn);
}
}else {
map1.put("cn", 1);
}
if(issuer!=null) {
if(issuer!=0&&issuer!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("cert_verify_approach_issuer","cert verify approach issuer") + " ") + ";");
}else {
map1.put("issuer", issuer);
}
}else {
map1.put("issuer", 1);
}
if(selfSigned!=null) {
if(selfSigned!=0&&selfSigned!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("cert_verify_approach_self_signed","cert verify approach self signed") + " ") + ";");
}else {
map1.put("self-signed", selfSigned);
}
}else {
map1.put("self-signed", 1);
}
if(expiration!=null) {
if(expiration!=0&&expiration!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("cert_verify_approach_expiration","cert verify approach expiration") + " ") + ";");
}else {
map1.put("expiration", expiration);
}
}else {
map1.put("expiration", 1);
}
map.put("approach", map1);
if(StringUtils.isBlank(failMethod)) {
map.put("fail_method", "pass-through");
}else {
boolean has=false;
for(SysDataDictionaryItem fail: failmethods) {
if(fail.getItemCode().equals(failMethod)) {
has=true;
break;
}
}
if(!has) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("cert_verify_fail_method","cert verify fail method") + " ") + ";");
}
map.put("fail_method", failMethod);
}
userRegionMap.put("cert_verify", map);
map=new HashMap<>();
if(mirrorClient==null) {
mirrorClient=1;
map.put("mirror_client", 1);
}else {
if(mirrorClient!=0&&mirrorClient!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("ssl_ver_mirror_client","SSL version mirror client") + " ") + ";");
}else {
map.put("mirror_client", mirrorClient);
}
}
if(allowHttp2==null) {
allowHttp2=1;
map.put("allow_http2", allowHttp2);
}else {
if(allowHttp2!=0&&allowHttp2!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("ssl_ver_allow_http2","SSL version allow http2") + " ") + ";");
}else {
map.put("allow_http2", allowHttp2);
}
}
if(mirrorClient==0) {
int minSort=0,maxSort=0;
if(StringUtils.isBlank(min)) {
min="ssl3";
}
if(StringUtils.isBlank(max)) {
max="tls13";
}
for(SysDataDictionaryItem sslversion: sslversions) {
if(sslversion.getItemCode().equals(min)) {
minSort=sslversion.getItemSort();
}
if(sslversion.getItemCode().equals(max)) {
maxSort=sslversion.getItemSort();
}
}
if(minSort==0) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("ssl_ver_min","min SSL version") + " ") + ";");
}
if(maxSort==0) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("ssl_ver_max","max SSL version") + " ") + ";");
}
if(minSort>maxSort) {
errInfo.append(prop.getProperty("min_should_less_than_max","the min SSL version should less than the max SSL version") + ";");
}
map.put("min", min);
map.put("max", max);
}
userRegionMap.put("ssl_ver", map);
map=new HashMap<>();
if(enable==null) {
enable=0;
map.put("enable", 0);
}else {
if(enable!=0&&enable!=1) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("decrypt_mirror_enable","decrypt mirror enable") + " ") + ";");
}else {
map.put("enable", enable);
}
}
//enable==1的时候才设置mirror_profile
if(enable==1) {
if(mirrorProfile==null) {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("decrypt_mirror_mirror_profile") + " ") + ";");
}else {
boolean has=false;
for(ProxyFileTrafficMirrorCfg _mirrorProfile:mirrorProfileList) {
if(_mirrorProfile.getCompileId().toString().equals(mirrorProfile.toString())) {
has=true;
break;
}
}
if(has) {
map.put("mirror_profile", mirrorProfile);
}else {
errInfo.append(String.format(prop.getProperty("is_incorrect"),
prop.getProperty("decrypt_mirror_mirror_profile") + " ") + ";");
}
map.put("mirror_profile", mirrorProfile);
}
}
userRegionMap.put("decrypt_mirror", map);
baseStringCfg.setUserRegion1(BaseService.gsonToJson(userRegionMap));
}
if (errInfo.toString().length() > 0) {//
errTip.append(String.format(prop.getProperty("line"), baseStringCfg.getIndex()) + ",");
errTip.append(errInfo);

View File

@@ -254,45 +254,46 @@ public class CheckTopicWebsiteFormatThread implements Callable<String>{
prop.getProperty("is_case_insenstive")) + ";");
}
}
} else {
if (isHex.intValue() != 0 && isHex.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (isCaseInsenstive.intValue() != 0 && isCaseInsenstive.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.indexOf("1") == -1 && isHex.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.equals("1") && isHex.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.indexOf("2") == -1 && isCaseInsenstive.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.equals("2") && isCaseInsenstive.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
// 十六进制 关键字校验
if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) {
boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches();
if(!bl) {
errInfo.append(
prop.getProperty("domain_name") + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
}
}
}
isHex = baseStringCfg.getIsHex();
isCaseInsenstive = baseStringCfg.getIsCaseInsenstive();
if (isHex.intValue() != 0 && isHex.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (isCaseInsenstive.intValue() != 0 && isCaseInsenstive.intValue() != 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.indexOf("1") == -1 && isHex.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.equals("1") && isHex.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_hex")) + ";");
}
if (hexP.indexOf("2") == -1 && isCaseInsenstive.intValue() == 1) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
if (hexP.equals("2") && isCaseInsenstive.intValue() == 0) {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive"))
+ ";");
}
// 十六进制 关键字校验
if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) {
boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches();
if(!bl) {
errInfo.append(
prop.getProperty("domain_name") + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
}
}
if (isHex != null && isCaseInsenstive != null) {
if (isHex.intValue() == 0 && isCaseInsenstive.intValue() == 0) {
baseStringCfg.setIsHexbin(0);

View File

@@ -44,7 +44,7 @@ public class DeleteAsnIpTread implements Callable<Throwable> {
while(!asnNos.isEmpty()) {
asnNos.drainTo(asnNoList,5);
for(Long asnNo:asnNoList) {
AsnGroupInfo configGroupInfo=null;//AsnCacheUtils.get(asnNo);
AsnGroupInfo configGroupInfo=AsnCacheUtils.get(asnNo);
if(configGroupInfo==null) {
configGroupInfo=new AsnGroupInfo();
configGroupInfo.setAsnId(asnNo);
@@ -85,7 +85,7 @@ public class DeleteAsnIpTread implements Callable<Throwable> {
}
sb.deleteCharAt(sb.toString().lastIndexOf(","));
asnIpCfgDao.delete(sb.toString());
new AsnIpCfgService().asnIPRegionSendToMaat(listPage, Constants.VALID_NO,1);
new AsnIpCfgService().asnIPRegionSendToMaat(listPage, Constants.VALID_NO);
transactionManager.commit(status);
listPage.clear();
} catch (Throwable e) {

View File

@@ -112,7 +112,7 @@ public class SaveAsnIpThread implements Callable<Throwable>{
_cfg.setAsnIpGroup(asnNoMaps.get(1).get(Long.parseLong(_cfg.getUserRegion1())));
}else {
// ConfigGroupInfo info=asnIpCfgService.getConfigGroupInfoByAsnNo(Long.parseLong(_cfg.getUserRegion1()));
AsnGroupInfo info=null;//AsnCacheUtils.get(Long.parseLong(_cfg.getUserRegion1()));
AsnGroupInfo info=AsnCacheUtils.get(Long.parseLong(_cfg.getUserRegion1()));
if(info==null) {
info=new AsnGroupInfo();
info.setAsnId(Long.parseLong(_cfg.getUserRegion1()));
@@ -166,7 +166,7 @@ public class SaveAsnIpThread implements Callable<Throwable>{
this.save(cfgs);
// splitAndSend(toAddRegionAsnIpCfgs,Constants.VALID_YES);
if(toAddRegionAsnIpCfgs.size()>0) {
new AsnIpCfgService().asnIPRegionSendToMaat(toAddRegionAsnIpCfgs,Constants.VALID_YES,1);
new AsnIpCfgService().asnIPRegionSendToMaat(toAddRegionAsnIpCfgs,Constants.VALID_YES);
}
cfgs.clear();
toAddRegionAsnIpCfgs.clear();

View File

@@ -23,6 +23,7 @@ import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.commons.collections.CollectionUtils;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
@@ -37,6 +38,7 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import com.alibaba.fastjson.JSON;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.Constants;
import com.nis.util.Encodes;
@@ -84,7 +86,10 @@ public class HttpClientUtil {
throw new ConnectException("流量统计服务接口连接错误"+response);
}
} catch (Exception e) {
throw e;
// e.printStackTrace();
logger.error("获取消息失败,相应内容如下: " + response);
logger.error("获取消息失败 ", e);
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:");
}finally {
if (response != null) {
try {
@@ -236,6 +241,7 @@ public class HttpClientUtil {
* @return 查询结果数据json
*/
public static String getMsg(String destUrl, Map<String, Object> params, HttpServletRequest req) throws IOException {
long start=System.currentTimeMillis(), end=System.currentTimeMillis();
// RequestContext requestContext = new RequestContext(req);
// CloseableHttpResponse response = null;
@@ -283,6 +289,7 @@ public class HttpClientUtil {
logger.error("获取消息失败,相应内容如下: " + result);
throw new MaatConvertException(status+"");
}
} catch (Exception e) {
e.printStackTrace();
logger.error("获取消息失败,相应内容如下: " + result);
@@ -292,6 +299,8 @@ public class HttpClientUtil {
if (response != null) {
response.close();
}
end=System.currentTimeMillis();
logger.warn("getMsg cost:"+(end-start)+"ms");
}
return result;
}
@@ -302,12 +311,14 @@ public class HttpClientUtil {
* @return
*/
public static String galaxyMessageFormat(String recv){
JSONObject jobj = JSONObject.fromObject(recv);
long start=System.currentTimeMillis(),end=System.currentTimeMillis();
//JSONObject jobj = JSONObject.fromObject(recv);
com.alibaba.fastjson.JSONObject jobj = JSON.parseObject(recv);
Map<String, Object> parse = (Map<String, Object>)jobj;
Map map = (Map) parse.get("data");
List reslist=new ArrayList();
List<Map<String,Object>> list= (List)map.get("list");
if(list!=null&&list.size()>0){
if(CollectionUtils.isNotEmpty(list)){
for (Map<String,Object> m : list) {
Map recvMap = new HashMap();
Iterator<Entry<String, Object>> iterator = m.entrySet().iterator();
@@ -316,12 +327,12 @@ public class HttpClientUtil {
String key = next.getKey().toString();
Object value = next.getValue();
//处理字段为“null”情况
if(value!=null&&"null".equals(value)){
if("null".equals(value)){
value="";
}
//处理时间字段为“0”情况
if("foundTime".equals(key)||"recvTime".equals(key)){
if(null!=value&&"0".equals(value)){
if("0".equals(value)){
value="";
}
}
@@ -337,6 +348,8 @@ public class HttpClientUtil {
parse.put("data", map);
recv = parse.toString();
}
end=System.currentTimeMillis();
logger.info("galaxyMessageFormat cost:"+(end-start));
return recv;
}

View File

@@ -0,0 +1,69 @@
package com.nis.util.redis;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.apache.log4j.Logger;
import com.nis.util.Configurations;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class RedisPoolHelper {
private Logger logger=Logger.getLogger(RedisPoolHelper.class);
private JedisPool jedisPool;
private String host;
private int timeout;
public RedisPoolHelper(){
init();
}
private void init() {
synchronized (this) {
if (jedisPool == null) {
host=Configurations.getStringProperty("redis.host", "127.0.0.1:6379");
timeout=Configurations.getIntProperty("redis.timeout", 10000);
String[] hostAndPort = host.split(":");
jedisPool = new JedisPool(getPoolConfig(), hostAndPort[0], Integer.parseInt(hostAndPort[1]), timeout);
logger.info("redis pool init complate! host-->"+hostAndPort[0]+" port:"+Integer.parseInt(hostAndPort[1]));
}
}
}
public Jedis getJedis() {
if (jedisPool == null) {
init();
}
return jedisPool.getResource();
}
public JedisPool getJedisPool() {
return jedisPool;
}
public void setJedisPool(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
/**
*
* getPoolConfig(初始化连接池的配置,这里可以设置很多参数的,不过目前没加)
* (这里描述这个方法适用条件 可选)
* @return
*GenericObjectPoolConfig
* @exception
* @since 1.0.0
*/
private GenericObjectPoolConfig getPoolConfig(){
GenericObjectPoolConfig config=new GenericObjectPoolConfig();
config.setMaxTotal(Configurations.getIntProperty("redis.pool.maxtotal", 500));//整个池的最大值
config.setMaxIdle(Configurations.getIntProperty("redis.pool.maxidle", 100));//最大空闲
config.setMaxWaitMillis(Configurations.getIntProperty("redis.pool.maxwaitmillis", -1));//获取不到永远等待
config.setBlockWhenExhausted(Configurations.getBooleanProperty("redis.pool.blockwhenexhausted", true));
config.setNumTestsPerEvictionRun(Configurations.getIntProperty("redis.pool.numtestsperevictionrun", Integer.MAX_VALUE));//always test all idle object
config.setTestOnBorrow(Configurations.getBooleanProperty("redis.pool.testonborrow", true));
config.setTestOnReturn(Configurations.getBooleanProperty("redis.pool.testonreturn", false));
config.setTestWhileIdle(Configurations.getBooleanProperty("redis.pool.testwhileidle", true));//发呆过长时间是否先test一下
config.setTimeBetweenEvictionRunsMillis(Configurations.getLongProperty("redis.pool.timebetweenevictionrunsmillis", 60000L));//-1不启动默认1min一次
config.setMinEvictableIdleTimeMillis(Configurations.getLongProperty("redis.pool.minevictableidletimemillis", 60000L));//可发呆的时间10mins
return config;
}
}

View File

@@ -0,0 +1,38 @@
package com.nis.util.redis;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class SaveHelpInfoThread extends Thread {
private Logger logger=Logger.getLogger(SaveHelpInfoThread.class);
private JedisPool jedisPool;
private Jedis jedis;
private String key;
private String value;
private int expire;
public SaveHelpInfoThread(JedisPool jedisPool,String key,String value,int expire){
this.jedisPool=jedisPool;
this.key=key;
this.value=value;
this.expire=expire;
jedis=jedisPool.getResource();
}
@Override
public void run() {
try {
jedis.set(key, value);
if(expire!=-1){
jedis.expire(key, expire);
}
logger.debug("cache help[key --> "+key+"]");
} catch (Exception e) {
logger.error("save redis error",e);
}finally{
jedis.close();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -29,6 +29,7 @@ import com.google.gson.reflect.TypeToken;
import com.nis.util.Configurations;
import com.nis.util.Constants;
import com.nis.util.CookieUtil;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.util.httpclient.HttpClientUtil;
@@ -87,6 +88,7 @@ public class LoginController extends BaseController {
CookieUtil.addCookie(response, "LOGINED", "false");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
LogUtils.saveLog(request, null, e, null);
}
}
@@ -173,6 +175,7 @@ public class LoginController extends BaseController {
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
LogUtils.saveLog(request, null, e, null);
}
@@ -212,6 +215,7 @@ public class LoginController extends BaseController {
} catch (Exception e) {
e.printStackTrace();
LogUtils.saveLog(request, null, e, null);
}
return "redirect:"+request.getParameter("url");
@@ -230,6 +234,7 @@ public class LoginController extends BaseController {
} catch (Exception e) {
e.printStackTrace();
LogUtils.saveLog(request, null, e, null);
}
return "redirect:"+request.getParameter("url");

View File

@@ -1,9 +1,5 @@
package com.nis.web.controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
@@ -11,7 +7,7 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,13 +15,18 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.nis.domain.SysMenu;
import com.nis.domain.configuration.HelpInfo;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.security.UserUtils;
import com.nis.web.service.configuration.HelpInfoService;
@Controller
@RequestMapping("${adminPath}/sys/")
public class SystemController extends BaseController{
@Autowired
private HelpInfoService helpService;
@RequestMapping("index")
public String index(HttpServletRequest request, HttpServletResponse response,ModelMap model){
return "/sys/sysIndex";
@@ -99,38 +100,120 @@ public class SystemController extends BaseController{
System.out.println(menu.getParentIds());
newList.add(menu);
}*/
//将帮助文档缓存到redis
helpService.cacheAllHelpInfo();
}
} catch (Exception e) {
logger.error("help error",e);
LogUtils.saveLog(request, null, e, null);
}
logger.info("menuSize:"+newList.size());
model.addAttribute("menuList",newList);
return "/help";
}
/**
* @param request
* @param response
* @param model
* @param editedHelpInfo 修改之后的帮助文档内容
* @param helpHrefVal 文档的路径
* @return
*/
@RequestMapping("saveHelp")
@ResponseBody
public boolean saveHelp(HttpServletRequest request, HttpServletResponse response,ModelMap model,@RequestParam(required=true,value="editedHelpInfo")String editedHelpInfo,@RequestParam(required=true,value="helpHrefVal")String helpHrefVal){
try {
StringBuffer helpInfo=new StringBuffer();
helpInfo.append(URLDecoder.decode(editedHelpInfo,"utf-8"));
String htmlName=URLDecoder.decode(helpHrefVal,"utf-8");
String htmlPath=request.getServletContext().getRealPath("/")+htmlName;
File file=new File(htmlPath);
OutputStream out=new FileOutputStream(file);
out.write(helpInfo.toString().getBytes());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
if(StringUtils.strIsBlank(helpHrefVal)){
return false;
}
return true;
try {
StringBuffer helpInfoText=new StringBuffer(); //修改之后的内容
helpInfoText.append(URLDecoder.decode(editedHelpInfo,"utf-8"));
String helpHref=URLDecoder.decode(helpHrefVal,"utf-8");
String[] split = StringUtils.split(helpHref, "/");
if(split!=null&&split.length>0){
HelpInfo helpInfo = new HelpInfo();
helpInfo.setFileComment(helpInfoText.toString());
helpInfo.setFileName(split[split.length-1]);
helpService.saveHelpInfo(helpInfo);
return true;
}
} catch (Exception e) {
logger.error("save helpInfo error",e);
LogUtils.saveLog(request, null, e, null);
}
return false;
}
/**
* 查看帮助文档内容
* @param request
* @param response
* @param model
* @param helpHref
* @return
*/
@RequestMapping("viewHelp")
@ResponseBody
public HelpInfo viewHelp(HttpServletRequest request, HttpServletResponse response,ModelMap model,@RequestParam(required=true,value="helpHref")String helpHref){
if(StringUtils.strIsBlank(helpHref)){
return null;
}
try {
helpHref=URLDecoder.decode(helpHref,"utf-8");
String[] split = StringUtils.split(helpHref, "/");
if(split!=null&&split.length>0){
HelpInfo helpInfo = helpService.findHelpCommentByName(split[split.length-1]);
return helpInfo;
}
} catch (Exception e) {
logger.error("view helpInfo error",e);
LogUtils.saveLog(request, null, e, null);
}
return null;
}
/**
* 查看帮助文档备份内容
* @param request
* @param response
* @param model
* @param helpHref
* @return
*/
@RequestMapping("viewBakHelp")
@ResponseBody
public HelpInfo viewBakHelp(HttpServletRequest request, HttpServletResponse response,ModelMap model,@RequestParam(required=true,value="helpHref")String helpHref){
if(StringUtils.strIsBlank(helpHref)){
return null;
}
try {
helpHref=URLDecoder.decode(helpHref,"utf-8");
String[] split = StringUtils.split(helpHref, "/");
if(split!=null&&split.length>0){
HelpInfo helpInfo = helpService.findHelpBakCommentByName(split[split.length-1]);
return helpInfo;
}
} catch (Exception e) {
logger.error("view helpBakInfo error",e);
LogUtils.saveLog(request, null, e, null);
}
return null;
}
@RequestMapping("clearPolicies")
@ResponseBody
public boolean clearPolicies(HttpServletRequest request, HttpServletResponse response) {
try {
systemService.clearPolicies();
return true;
} catch (Exception e) {
logger.error("Clear Policies Error",e);
LogUtils.saveLog(request, null, e, null);
}
return false;
}
}

View File

@@ -1,10 +1,5 @@
package com.nis.web.controller.basics;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
@@ -22,9 +17,8 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.configuration.AsnKeywordCfg;
import com.nis.domain.specific.ConfigGroupInfo;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController;
/**
@@ -74,7 +68,7 @@ public class AsnGroupController extends BaseController {
//@RequiresPermissions(value={"basics:classification:add","basics:attribute:add","basics:label:add","basics:classification:edit","basics:attribute:edit","basics:label:edit"},logical=Logical.OR)
@RequestMapping(value = "saveOrUpdate")
public String saveOrUpdate(AsnGroupInfo cfg,Model model,
RedirectAttributes redirectAttributes,String itType) {
RedirectAttributes redirectAttributes,String itType,HttpServletRequest request) {
try {
AsnGroupInfo asnGroup=asnGroupInfoService.getGroupIdByNameAndASNId(cfg.getOrganization().trim(), cfg.getCountry().trim(), cfg.getAsnId());
@@ -85,13 +79,9 @@ public class AsnGroupController extends BaseController {
asnGroupInfoService.saveOrUpdate(cfg);
addMessage(redirectAttributes,"success","save_success");
} catch (Exception e) {
e.printStackTrace();
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error","save_failed");
}
logger.error("新增失败",e);
addMessage(redirectAttributes,"error","save_failed");
LogUtils.saveLog(request, null, e, null);
}
return "redirect:" + adminPath + "/basics/asnGroup/asnGroupList";
@@ -106,19 +96,14 @@ public class AsnGroupController extends BaseController {
*/
//@RequiresPermissions(value={"basics:classification:del","basics:attribute:del","basics:label:del"},logical=Logical.OR)
@RequestMapping(value={"delete"})
public String delete(RedirectAttributes redirectAttributes,String ids,String asnIds,String groupIds) {
public String delete(RedirectAttributes redirectAttributes,String ids,String asnIds,HttpServletRequest request) {
try {
asnGroupInfoService.delete(ids,asnIds,groupIds);
//TODO 查询本次删除的所有asnOrg组中是否存在asn 没有is_used=0的asn如果存在则需要将整个组删除
asnGroupInfoService.delete(ids,asnIds);
addMessage(redirectAttributes,"success","delete_success");
} catch (Exception e) {
logger.error("删除失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error","delete_failed");
}
addMessage(redirectAttributes,"error","delete_failed");
LogUtils.saveLog(request, null, e, null);
}
return "redirect:" + adminPath + "/basics/asnGroup/asnGroupList";
}
@@ -173,15 +158,10 @@ public class AsnGroupController extends BaseController {
*/
@ResponseBody
@RequestMapping(value = {"/checkAsnNo"})
public AsnGroupInfo checkAsnNo(AsnGroupInfo cfg, HttpServletRequest request, HttpServletResponse response){
AsnGroupInfo policyGroup=null;
policyGroup = asnGroupInfoService.getInfoByAsnNo(cfg);
if(policyGroup != null){
ConfigGroupInfo group=configGroupInfoService.getAsnOrganization(policyGroup.getOrganization());
if(group != null){
policyGroup.setCommonGroupIds(group.getGroupId().toString());
}
}
public AsnGroupInfo checkIp(AsnGroupInfo cfg, HttpServletRequest request, HttpServletResponse response){
AsnGroupInfo policyGroup = asnGroupInfoService.getInfoByAsnNo(cfg);
return policyGroup;
}
/**
@@ -195,100 +175,8 @@ public class AsnGroupController extends BaseController {
if(asnIpCfg == null){
return false;
}
return true;
}
/**
* 异步获取ASN组织信息
* @param model
* @return
*/
@RequestMapping(value="ajaxGetAsnOrg")
@ResponseBody
public List ajaxGetAsnOrg( ConfigGroupInfo orgGroup,Model model){
List<ConfigGroupInfo> orgaList=new ArrayList<>();
try {
orgaList=configGroupInfoService.findAllList(orgGroup);
} catch (Exception e) {
logger.error("异步获取ASN组织信息失败",e);
return orgaList;
}
return orgaList;
}
/**
* 异步获取ASN组织信息
* @param model
* @return
*/
@RequestMapping(value="ajaxGetAsnNo")
@ResponseBody
public List ajaxGetAsnNo(AsnGroupInfo asnGroup,Model model){
List<AsnGroupInfo> orgaList=new ArrayList<>();
try {
orgaList=asnGroupInfoService.findAsnGroupList(asnGroup);
} catch (Exception e) {
logger.error("异步获取ASN NO信息失败",e);
return orgaList;
}
return orgaList;
}
/**
* 校验是否有配置的ASN域已被删除
* @param model
* @return
*/
@RequestMapping(value="checkAsnRegionIsDeleted")
@ResponseBody
public Map<Integer,String> checkAsnRegionIsDeleted(@RequestParam(required=true,value="compileIds")String compileIds,Model model){
Map<Integer,String> resultMap=new HashMap<>();
try {
if(!StringUtil.isEmpty(compileIds)){
compileIds=compileIds.substring(0,compileIds.length()-1);
Map<Integer, List<String>> compileWithGroupMap=new HashMap<>();
Map<String, String> groupIdWithAsn=new HashMap<>();
//先查询此compileId下是否有is_valid=0和is_audit=0的asn_keyword_cfgs
List<AsnKeywordCfg> asnList=asnGroupInfoService.findAsnKeywordCfgByCompileId(compileIds);
String groupIds="";
for (AsnKeywordCfg asnKeywordCfg : asnList) {
//根据asnKeyword的userRegion2[asn group Id]
groupIds+=asnKeywordCfg.getUserRegion2()+",";
if(compileWithGroupMap.keySet().contains(asnKeywordCfg.getCompileId())){
List<String> groupList=compileWithGroupMap.get(asnKeywordCfg.getCompileId());
groupList.add(asnKeywordCfg.getUserRegion2());
compileWithGroupMap.put(asnKeywordCfg.getCompileId(), groupList);
}else{
List<String> groupList=new ArrayList<>();
groupList.add(asnKeywordCfg.getUserRegion2());
compileWithGroupMap.put(asnKeywordCfg.getCompileId(), groupList);
}
groupIdWithAsn.put(asnKeywordCfg.getUserRegion2(), asnKeywordCfg.getCfgKeywords());
}
if(!StringUtil.isEmpty(groupIds)){
Properties prop=this.getMsgProp();
groupIds=groupIds.substring(0,groupIds.length()-1);
List<String> groupIdList=asnGroupInfoService.findAsnGroupIdByGroupIds(groupIds);
for (Integer compileId : compileWithGroupMap.keySet()) {
for (String groupIdOld : compileWithGroupMap.get(compileId)) {
if(!groupIdList.contains(groupIdOld)){
String tip=prop.getProperty("deletedAsnTip").replace("asnId", groupIdWithAsn.get(groupIdOld));
tip=tip.replace("cfgId", compileId+"");
resultMap.put(compileId, tip);
}
}
}
}
}
} catch (Exception e) {
logger.error("校验编译下的asn是否被删除失败",e);
return resultMap;
}
/*List<AsnGroupInfo> orgaList=new ArrayList<>();
try {
orgaList=asnGroupInfoService.findAsnGroupList(asnGroup);
} catch (Exception e) {
logger.error("异步获取ASN NO信息失败",e);
return orgaList;
}*/
return resultMap;
}
}

View File

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -31,6 +32,7 @@ import com.nis.exceptions.MaatConvertException;
//import com.nis.util.AsnCacheUtils;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -78,15 +80,21 @@ public class AsnIpController extends BaseController{
public String save(Model model,HttpServletRequest request,HttpServletResponse response,@ModelAttribute("cfg")CfgIndexInfo cfg,RedirectAttributes redirectAttributes){
try{
asnIpCfgService.saveAsnIpCfg(cfg);
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
e.printStackTrace();
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error",e.getMessage());
//配置仅保存
if(StringUtil.isEmpty(cfg.getIsValid()) || cfg.getIsValid()!=1) {
addMessage(redirectAttributes, "success", "save_success");
}else {
addMessage(redirectAttributes,"error","save_failed");
//配置直接生效
addMessage(redirectAttributes, "success", "audit_success");
}
} catch (MaatConvertException e) {
logger.error("ASN IP配置下发失败",e);
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} catch (Exception e) {
logger.error("ASN IP配置保存失败",e);
addMessage(redirectAttributes, "error", "save_failed");
LogUtils.saveLog(request, null, e, null);
}
return "redirect:" + adminPath +"/basics/asn/list?functionId="+cfg.getFunctionId();
@@ -97,11 +105,21 @@ public class AsnIpController extends BaseController{
try{
asnIpCfgService.update(cfg);
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
e.printStackTrace();
addMessage(redirectAttributes,"error","save_failed");
//配置仅保存
if(StringUtil.isEmpty(cfg.getIsValid()) || cfg.getIsValid()!=1) {
addMessage(redirectAttributes, "success", "save_success");
}else {
//配置直接生效
addMessage(redirectAttributes, "success", "audit_success");
}
} catch (MaatConvertException e) {
logger.error("ASN IP配置下发失败",e);
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} catch (Exception e) {
logger.error("ASN IP配置保存失败",e);
addMessage(redirectAttributes, "error", "save_failed");
LogUtils.saveLog(request, null, e, null);
}
return "redirect:" + adminPath +"/basics/asn/list?functionId="+cfg.getFunctionId();
@@ -134,24 +152,11 @@ public class AsnIpController extends BaseController{
asnIpMap.put(Long.parseLong(asnIpCfg.getUserRegion1()), _asnIps);
}
}
/********************每次下发一个组的region保证事物********************/
for (Long asnId : asnIpMap.keySet()) {
try {
asnIpCfgService.auditIpBatch(asnIpMap.get(asnId),asnId,isValid);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}
}/*else {
asnIpCfgService.auditIpBatch(asnIpMap,isAudit);
}else {
//条件下所有配置审核
Page<AsnIpCfg> searchPage=new Page<AsnIpCfg>(request,response,"a");
Page<AsnIpCfg> auditPage=new Page<AsnIpCfg>(request,response,"a");
Page<AsnIpCfg> searchPage=new Page<AsnIpCfg>(request,response,"r");
Page<AsnIpCfg> auditPage=new Page<AsnIpCfg>(request,response,"r");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
@@ -160,30 +165,39 @@ public class AsnIpController extends BaseController{
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
}else {
addMessage(redirectAttributes,"error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return list(model, request, response, cfg);
}*/
}
return "redirect:" + adminPath +"/basics/asn/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"/delete"})
@RequiresPermissions(value={"asn:ip:config"})
public String delete(Integer isValid
,String ids,Integer functionId
,RedirectAttributes redirectAttributes){
public String delete(Integer isValid, String ids, Integer functionId, RedirectAttributes redirectAttributes,
HttpServletRequest request, HttpServletResponse response, @ModelAttribute("cfg")AsnIpCfg cfg){
try{
asnIpCfgService.delete(ids);
addMessage(redirectAttributes,"success","delete_success");
if (!StringUtil.isEmpty(ids)) {
asnIpCfgService.delete(ids);
addMessage(redirectAttributes,"success","delete_success");
}else {
// 批量删除
Page<CfgIndexInfo> searchPage = new Page<CfgIndexInfo>(request, response, "a");
deleteAll(searchPage, functionId, cfg);
}
}catch(Exception e){
logger.error("Delete failed",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error",e.getMessage());
LogUtils.saveLog(request, null, e, null);
}else {
addMessage(redirectAttributes,"error","delete_failed");
LogUtils.saveLog(request, null, e, null);
}
}
@@ -272,6 +286,7 @@ public class AsnIpController extends BaseController{
} catch (Exception e) {
logger.error("asnIp export failed",e);
addMessage(redirectAttributes,"error","export_failed");
LogUtils.saveLog(request, null, e, null);
}
//return "redirect:" + adminPath +"/ntc/iplist/list?functionId="+entity.getFunctionId();
}

View File

@@ -0,0 +1,158 @@
package com.nis.web.controller.basics;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
import com.nis.domain.basics.CommonGroupInfo;
import com.nis.util.Constants;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.service.basics.CommonGroupManageService;
/**
* 公共组管理
*/
@Controller
@RequestMapping(value = "${adminPath}/basics/commonGroup")
public class CommonGroupManageController extends BaseController {
@Autowired
private CommonGroupManageService commonGroupManageService;
@RequestMapping(value = {"list"})
public String policyGroupList(CommonGroupInfo cfg, Model model, HttpServletRequest request, HttpServletResponse response) {
if(cfg == null)cfg=new CommonGroupInfo();
Page<CommonGroupInfo> pageCondition = new Page<CommonGroupInfo>(request, response,"r");
Page page = commonGroupManageService.findCommonGroupInfoList(pageCondition,cfg);
model.addAttribute("cfg", cfg);
model.addAttribute("page", page);
return "/basics/commonGroupList";
}
@RequestMapping(value={"/form"})
public String form(Integer groupType,String ids,Model model,String doAction,RedirectAttributes redirectAttributes) {
CommonGroupInfo groupInfo = new CommonGroupInfo();
if(!StringUtil.isEmpty(ids)){
groupInfo = commonGroupManageService.getById(Integer.parseInt(ids));
}
//groupInfo.setGroupType(groupType);
model.addAttribute("_cfg", groupInfo);
return "/basics/commonGroupForm";
}
@RequestMapping(value = "saveOrUpdate")
public String saveOrUpdate(CommonGroupInfo cfg, Model model, RedirectAttributes redirectAttributes,
String itType,Integer groupType,HttpServletRequest request) {
try {
commonGroupManageService.saveOrUpdate(cfg);
addMessage(redirectAttributes,"success","save_success");
} catch (Exception e) {
logger.error("新增失败",e);
addMessage(redirectAttributes,"error","save_failed");
LogUtils.saveLog(request, null, e, null);
}
return "redirect:" + adminPath + "/basics/commonGroup/list";
}
@RequestMapping(value={"delete"})
public String delete(RedirectAttributes redirectAttributes, String groupTypes, String ids, int isValid,HttpServletRequest request) {
try {
commonGroupManageService.deldete(ids, isValid, groupTypes);
addMessage(redirectAttributes,"success","delete_success");
} catch (Exception e) {
logger.error("删除失败",e);
addMessage(redirectAttributes,"error","delete_failed");
LogUtils.saveLog(request, null, e, null);
}
return "redirect:" + adminPath + "/basics/commonGroup/list";
}
@ResponseBody
@RequestMapping(value="ajaxCheckIsLastOneCfg",method=RequestMethod.POST)
public List<Integer> ajaxCheckIsLastOneCfg(Model model, String grouIdAndCfgId, Integer groupType){
return commonGroupManageService.ajaxCheckIsLastOneCfg(grouIdAndCfgId, groupType);
}
@ResponseBody
@RequestMapping(value="ajaxGetGroupInfoByType",method=RequestMethod.GET)
public List<CommonGroupInfo> ajaxGetGroupInfoByType(Integer groupType){
return commonGroupManageService.findCommonGroupInfosByType(groupType);
}
// 数据导出
@RequestMapping(value = "exportGroup")
public void exportGroup(Model model,@ModelAttribute("cfg")CommonGroupInfo entity,String ids,RedirectAttributes redirectAttributes,
HttpServletRequest request,HttpServletResponse response){
try {
entity.setMenuNameCode("common_group_manage");
List<String> titleList=new ArrayList<String>();
Map<String, Class<?>> classMap=new HashMap<String, Class<?>>();
Map<String, List> dataMap=new HashMap<String, List>();
Map<String, String> noExportMap=new HashMap<String, String>();
List<CommonGroupInfo> list = new ArrayList<CommonGroupInfo>();
if (!StringUtil.isEmpty(ids)) {
list = commonGroupManageService.findGroupInfoList(ids);
} else {
Page<CommonGroupInfo> pageInfo=new Page<CommonGroupInfo>(request, response,"r");
pageInfo.setPageNo(1);
pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE);
Page page = commonGroupManageService.findCommonGroupInfoList(pageInfo,entity);
list=page.getList();
}
titleList.add(entity.getMenuNameCode());
classMap.put(entity.getMenuNameCode(), CommonGroupInfo.class);
String cfgIndexInfoNoExport=",config_describe,cfg_id,block_type,do_log,action,valid_identifier,is_audit"
+ ",auditor,audit_time,letter,whether_area_block,classification,attribute,label"
+",userregion1,userregion2,userregion3,userregion4,userregion5,ir_type,";
// 时间过滤
if (entity.getSearch_create_time_start() == null ) {
cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_edit_time_start() == null) {
cfgIndexInfoNoExport = ",edit_time" + cfgIndexInfoNoExport;
}
if (!StringUtil.isEmpty(entity.gethColumns())) {
cfgIndexInfoNoExport = "," + entity.gethColumns() + "," + cfgIndexInfoNoExport;
}
noExportMap.put(entity.getMenuNameCode(),cfgIndexInfoNoExport);
dataMap.put(entity.getMenuNameCode(), list);
String timeRange = initTimeMap(entity);
noExportMap.put("timeRange", timeRange);
if ("csv".equals(entity.getExType())) {
this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
}
} catch (Exception e) {
logger.error("Group export failed",e);
addMessage(redirectAttributes,"error","export_failed");
LogUtils.saveLog(request, null, e, null);
}
}
}

View File

@@ -0,0 +1,318 @@
package com.nis.web.controller.basics;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jets3t.service.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.beust.jcommander.internal.Lists;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.basics.CommonGroupInfo;
import com.nis.domain.basics.DomainCommCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.template.DomainCommCfgTemplate;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
import com.nis.web.service.basics.DomainCommGroupService;
@Controller
@RequestMapping(value = "${adminPath}/basics/domain")
public class DomainCommGroupController extends BaseController{
@Autowired
private DomainCommGroupService domainCommGroupService;
@RequestMapping(value = {"/list"})
public String list(Model model, @ModelAttribute("cfg")DomainCommCfg entity, HttpServletRequest request,HttpServletResponse response){
Page<DomainCommCfg> page = domainCommGroupService.findPage(new Page<DomainCommCfg>(request, response,"r"), entity);
List<FunctionRegionDict> regionList = DictUtils.getFunctionRegionDictList(entity.getFunctionId());
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(entity.getFunctionId());
List<CommonGroupInfo> groupInfos = commonGroupManageService.findCommonGroupInfosByType(Constants.DOMAIN_OBJ_GROUP_TYPE);
model.addAttribute("page", page);
model.addAttribute("regionList", regionList);
model.addAttribute("serviceList", serviceList);
model.addAttribute("policyGroupInfos", groupInfos);
return "/basics/domainCommGroupList";
}
@RequestMapping(value = {"/addForm"})
public String addForm(Model model, @ModelAttribute("cfg")CfgIndexInfo cfg, RedirectAttributes redirectAttributes,
HttpServletRequest request, HttpServletResponse response){
initFormCondition(model,cfg);
/* List<CommonGroupInfo> groupInfos=commonGroupManageService.findCommonGroupInfosByType(Constants.DOMAIN_OBJ_GROUP_TYPE);
model.addAttribute("policyGroupInfos", groupInfos);*/
model.addAttribute("_cfg", cfg);
return "/basics/domainCommGroupFormAdd";
}
@RequestMapping(value = {"/save"})
public String save(Model model, @ModelAttribute("cfg")CfgIndexInfo cfg,RedirectAttributes redirectAttributes,
HttpServletRequest request,HttpServletResponse response){
try{
domainCommGroupService.saveCommGroupCfg(cfg);
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error",e.getMessage());
}else {
addMessage(redirectAttributes,"error","save_failed");
}
}
return "redirect:" + adminPath +"/basics/domain/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"/updateForm"})
public String updateForm(Model model,HttpServletRequest request
,HttpServletResponse response,String ids,@ModelAttribute("cfg")DomainCommCfg cfg
,RedirectAttributes redirectAttributes){
cfg = domainCommGroupService.get(Long.parseLong(ids));
initUpdateFormCondition(model,cfg);
List<CommonGroupInfo> groupInfos=commonGroupManageService.findCommonGroupInfosByType(Constants.DOMAIN_OBJ_GROUP_TYPE);
model.addAttribute("policyGroupInfos", groupInfos);
model.addAttribute("_cfg", cfg);
return "/basics/domainCommGroupFormUpdate";
}
@RequestMapping(value = {"/update"})
public String update(Model model,HttpServletRequest request,HttpServletResponse response,@ModelAttribute("cfg")DomainCommCfg cfg,RedirectAttributes redirectAttributes){
try{
domainCommGroupService.update(cfg);
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
addMessage(redirectAttributes,"error","save_failed");
}
return "redirect:" + adminPath +"/basics/domain/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"/delete"})
public String delete(String groupIds, String ids, Integer functionId, RedirectAttributes redirectAttributes,
HttpServletRequest request, HttpServletResponse response, @ModelAttribute("cfg")DomainCommCfg cfg){
try{
domainCommGroupService.delete(ids, groupIds, cfg, request, response);
addMessage(redirectAttributes,"success","delete_success");
}catch(Exception e){
logger.error("Delete failed",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error",e.getMessage());
}else {
addMessage(redirectAttributes,"error","delete_failed");
}
}
return "redirect:" + adminPath +"/basics/domain/list?functionId="+functionId;
}
// 批量删除前获取提示信息
@ResponseBody
@RequestMapping(value="ajaxCheckIsLastOneCfgBatch",method=RequestMethod.POST)
public List<Integer> ajaxCheckIsLastOneCfgBatch(Model model, DomainCommCfg searchCfg){
return domainCommGroupService.ajaxCheckIsLastOneCfgBatch(searchCfg);
}
// 数据导入
@RequestMapping(value = "import", method=RequestMethod.POST)
public String importIp(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
@RequestParam("files") MultipartFile[] files, Integer serviceDictId ,Integer requestId ,String attribute ,String classify
,String regionDictIds ,String importPath) {
logger.warn("import start...");
long start=System.currentTimeMillis();
ImportBigExcel ei=null;
try {
FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
StringBuffer errTip=new StringBuffer();
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
ei = new ImportBigExcel(file, 0, 1);
FunctionRegionDict regionDict = DictUtils.getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i]));
//加载模板
loadTemplate(ei,regionDict, serviceDict);
//------------------------------------check format start----------------------------
if (regionDict.getRegionType().equals(2)) {
BlockingQueue<DomainCommCfgTemplate> list = ei.getDataList(DomainCommCfgTemplate.class );
stringCfgs = this.checkStringCfgMulity(errTip, serviceDict, regionDict, list);
}
//删除文件
if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
ei.getUploadFile().delete();
}
//------------------------------------check format end----------------------------
Date date = new Date();
//String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
if (regionDict.getRegionType().equals(2)) {
List<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> regionIds = Lists.newArrayList(_stringCfgs.size());
try {
regionIds = ConfigServiceUtil.getId(3,_stringCfgs.size());
} catch (Exception e) {
logger.error("获取域ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
int index = 0;
Set<String> countSet = new HashSet<String>();
for (BaseStringCfg<?> cfg : _stringCfgs) {
cfg.setAction(serviceDict==null?null:serviceDict.getAction());
cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
cfg.setCfgType(regionDict.getConfigRegionValue());
cfg.setCreateTime(date);
cfg.setCreatorId(UserUtils.getUser().getId());
//cfg.setDoLog(2);
cfg.setCompileId(0);
cfg.setFunctionId(regionDict.getFunctionId());
cfg.setIsAudit(Constants.AUDIT_NOT_YET);
cfg.setIsValid(Constants.VALID_NO);
cfg.setIsAreaEffective(0);
cfg.setLable("0");
cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
cfg.setAttribute(attribute);
cfg.setClassify(classify);
cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
cfg.setTableName("domain_comm_cfg");
cfg.setRegionId(regionIds.get(index));
cfg.setGroupName(cfg.getGroupName().toUpperCase());
countSet.add(cfg.getGroupName());
index++;
}
List<CommonGroupInfo> insertGroupList = new ArrayList<CommonGroupInfo>();
Map<String, Integer> groupIdMap = commonGroupManageService.getCountByGroupName(countSet, insertGroupList, Constants.DOMAIN_OBJ_GROUP_TYPE); // 调用服务接口获取GroupId
domainCommGroupService.saveAndSend(regionDict, serviceDict, _stringCfgs, groupIdMap, insertGroupList);
_stringCfgs.clear();
}
}
}
if(errTip.toString().length()>0) {
addMessage(redirectAttributes,"error", errTip.toString());
}
} catch (Exception e) {
if(ei!=null) {
if(ei.getUploadFile().exists()) {
ei.getUploadFile().delete();
}
}
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else if(e instanceof ServiceException) {
addMessage(redirectAttributes,"error", e.getMessage());
}else if(e instanceof IndexOutOfBoundsException){
addMessage(redirectAttributes,"error", "template_error");
}else {
addMessage(redirectAttributes,"error", "import_failed");
}
logger.error("import failed", e);
}
long end=System.currentTimeMillis();
logger.warn("import finish,cost:"+(end-start));
return "redirect:" + adminPath+ importPath;
}
// 数据导出
@RequestMapping(value = "/exportGroupInfo")
public void exportGroupInfo(Model model,HttpServletRequest request,HttpServletResponse response,
@ModelAttribute("cfg")DomainCommCfg entity,String ids,RedirectAttributes redirectAttributes){
try {
List<String> titleList=new ArrayList<String>();
Map<String, Class<?>> classMap=new HashMap<String, Class<?>>();
Map<String, List> dataMap=new HashMap<String, List>();
Map<String, String> noExportMap=new HashMap<String, String>();
List<DomainCommCfg> list = new ArrayList<DomainCommCfg>();
if (!StringUtil.isEmpty(ids)) {
list = domainCommGroupService.findByPage(ids);
} else {
Page<DomainCommCfg> pageInfo=new Page<DomainCommCfg>(request, response,"r");
pageInfo.setPageNo(1);
pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE);
Page<DomainCommCfg> page = domainCommGroupService.findPage(pageInfo, entity);
list=page.getList();
}
CommonGroupInfo groupInfo = new CommonGroupInfo();
for (DomainCommCfg cfg : list) {
groupInfo.setServiceGroupId(cfg.getGroupId());
CommonGroupInfo commonGroupInfo = commonGroupManageService.getGroupInfo(groupInfo);
cfg.setGroupName(commonGroupInfo.getGroupName());
}
titleList.add(entity.getMenuNameCode());
classMap.put(entity.getMenuNameCode(), DomainCommCfg.class);
String cfgIndexInfoNoExport=",block_type,do_log,action,letter,whether_area_block,classification,attribute,label"
+ ",userregion1,userregion2,userregion3,userregion4,userregion5,ir_type,asn_no,"
+ "is_hex,is_case_insenstive,cfg_id,is_audit,auditor,valid_identifier,";
// 时间过滤
if (entity.getSearch_create_time_start() == null ) {
cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_edit_time_start() == null) {
cfgIndexInfoNoExport = ",edit_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_audit_time_start() == null) {
cfgIndexInfoNoExport = ",audit_time" + cfgIndexInfoNoExport;
}
if (!StringUtil.isEmpty(entity.gethColumns())) {
cfgIndexInfoNoExport = "," + entity.gethColumns() + "," + cfgIndexInfoNoExport;
}
noExportMap.put(entity.getMenuNameCode(),cfgIndexInfoNoExport);
dataMap.put(entity.getMenuNameCode(), list);
String timeRange = initTimeMap(entity);
noExportMap.put("timeRange", timeRange);
if ("csv".equals(entity.getExType())) {
this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
}
} catch (Exception e) {
logger.error("domainGroupConfig export failed",e);
addMessage(redirectAttributes,"error","export_failed");
}
}
}

Some files were not shown because too many files have changed in this diff Show More