修正部分业务配置自定义域位置,特殊处理ip drop业务

This commit is contained in:
zhangwei
2018-11-29 18:46:35 +08:00
parent 4f1bfc33f1
commit 14461b8cb9
4 changed files with 128 additions and 78 deletions

View File

@@ -83,6 +83,7 @@ public interface ConfigSynchronizationDao {
public List<DnsResStrategy> getDnsStrategyList(BaseCfg entity);
public List<DnsIpCfg> getDnsIpCfgList(BaseCfg entity);
public List<IpPortCfg> getIpPortListByService(BaseCfg entity);
public List<IpPortCfg> getIpDropList(@Param("tableName")String tableName,@Param("compileIds")List compileIds);
public List<AppPolicyCfg> getAppPolicyList(BaseCfg entity);
public List<AppFeatureIndex> getAppFeatureIndexList(BaseCfg entity);

View File

@@ -744,8 +744,24 @@
a.antiddos_protocol,a.bps_threadshold
</sql>
<sql id="IpCfg_Column" >
a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port
,a.protocol,a.protocol_id,a.direction,a.dest_port,a.dest_ip_address,a.cfg_type,a.compile_id
a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port,
a.protocol,a.protocol_id,a.direction,a.dest_port,a.dest_ip_address,a.cfg_type,a.compile_id
</sql>
<sql id="IpCfg_AllColumn" >
a.cfg_id,a.cfg_desc,a.action,a.is_valid,a.is_audit,a.creator_id,a.audit_time,
a.service_id,a.request_id,a.compile_id,a.is_area_effective,a.classify,a.attribute,a.lable,
a.area_effective_ids,a.function_id,a.do_log,a.dns_strategy_id,a.user_region1,a.user_region2,
a.user_region3,a.user_region4,a.user_region5,
a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port,
a.protocol,a.protocol_id,a.direction,a.dest_port,a.dest_ip_address,a.cfg_type
</sql>
<sql id="IpDropCfg_Column" >
a.cfg_id,a.cfg_desc,a.action,a.is_valid,a.is_audit,a.creator_id,a.audit_time,
a.service_id,a.request_id,a.compile_id,a.is_area_effective,a.classify,a.attribute,a.lable,
a.area_effective_ids,a.function_id,a.user_region1,a.user_region2,
a.user_region3,a.user_region4,a.user_region5,
a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port,
a.protocol,a.protocol_id,a.direction,a.dest_port,a.dest_ip_address,a.cfg_type
</sql>
<sql id="AsnIpCfg_Column" >
a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port
@@ -979,6 +995,17 @@
</foreach>
</where>
</select>
<select id="getIpDropList" resultMap="ipPortMap" parameterType="com.nis.domain.configuration.CfgIndexInfo">
SELECT
<include refid="IpDropCfg_Column" />
FROM ${tableName} a
<where>
and a.compile_id in
<foreach collection="compileIds" index="index" item="compileId" open="(" separator="," close=")">
#{compileId}
</foreach>
</where>
</select>
<select id="getAppIpPortList" resultMap="ipPortMap" parameterType="com.nis.domain.configuration.CfgIndexInfo">
SELECT
<include refid="AppIpCfg_Column" />
@@ -1217,12 +1244,7 @@
</select>
<select id="getIpPortListByService" resultMap="ipPortMap" >
select
a.cfg_id,a.cfg_desc,a.action,a.is_valid,a.is_audit,a.creator_id,a.audit_time,
a.service_id,a.request_id,a.is_area_effective,a.classify,a.attribute,a.lable,
a.area_effective_ids,a.function_id,a.do_log,a.user_region1,a.user_region2,
a.user_region3,a.user_region4,a.user_region5,
<include refid="IpCfg_Column"></include>
<include refid="IpCfg_AllColumn"></include>
<trim prefix="," prefixOverrides=",">
,s.name as creator_name,u.name as auditor_name
<if test="serviceId==1028">

View File

@@ -54,6 +54,7 @@ import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DateUtils;
import com.nis.util.DictUtils;
import com.nis.util.FileUtils;
import com.nis.util.ServiceConfigTemplateUtil;
import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.CommonPolicyDao;
@@ -286,7 +287,7 @@ public class ConfigSynchronizationService extends BaseService{
}
//批量获取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, strList.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
for(CfgIndexInfo cfg:list){
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
@@ -350,14 +351,15 @@ public class ConfigSynchronizationService extends BaseService{
}
}
if(ipList.size()>0){
List<Integer> ipGroupId = ConfigServiceUtil.getId(2,1);//多条IP只获取一个groupId
// List<Integer> ipGroupId = ConfigServiceUtil.getId(2,1);//多条IP只获取一个groupId
for(int index=0;index<ipList.size();index++){
IpPortCfg ip = ipList.get(index);
if(ip.getCompileId().equals(cfg.getCompileId())){
// BeanUtils.copyProperties(cfg, ip);
ip.setRegionId(regionIds.get(0));
regionIds.remove(0);
ip.setGroupId(ipGroupId.get(0));
ip.setGroupId(groupIds.get(0));
groupIds.remove(0);
ip.setIsValid(entity.getIsValid());
ip.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
list1.add(ip);
@@ -523,7 +525,8 @@ public class ConfigSynchronizationService extends BaseService{
}
}else {
//调用服务接口配置全量更新
// JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
// FileUtils.writeToFile("d:\\configSync\\"+entity.getServiceId()+"_"+page.getPageNo()+"_"+System.currentTimeMillis()+".txt", json, false);
JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
}
return hasData;
@@ -591,7 +594,7 @@ public class ConfigSynchronizationService extends BaseService{
}
//批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号compileIds.size()表示app策略本身有一个字符串域
List<Integer> regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+compileIds.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> groupIds = ConfigServiceUtil.getId(2, strList.size()+compileIds.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+compileIds.size()+complexStrList.size()+numList.size()+fileList.size());
for(AppPolicyCfg cfg:list){
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
@@ -661,14 +664,15 @@ public class ConfigSynchronizationService extends BaseService{
if(ipList.size()>0){
List<Integer> ipGroupId = ConfigServiceUtil.getId(2,1);//多条IP只获取一个groupId
// List<Integer> ipGroupId = ConfigServiceUtil.getId(2,1);//多条IP只获取一个groupId
for(int index=0;index<ipList.size();index++){
IpPortCfg ip = ipList.get(index);
if(ip.getCompileId().equals(cfg.getCompileId())){
// BeanUtils.copyProperties(cfg, ip);
ip.setRegionId(regionIds.get(0));
regionIds.remove(0);
ip.setGroupId(ipGroupId.get(0));
ip.setGroupId(groupIds.get(0));
groupIds.remove(0);
ip.setIsValid(entity.getIsValid());
ip.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
list1.add(ip);
@@ -800,7 +804,8 @@ public class ConfigSynchronizationService extends BaseService{
}
}else {
//调用服务接口配置全量更新
// JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
// FileUtils.writeToFile("d:\\configSync\\"+entity.getServiceId()+"_"+page.getPageNo()+"_"+System.currentTimeMillis()+".txt", json, false);
JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
}
return hasData;
@@ -870,7 +875,7 @@ public class ConfigSynchronizationService extends BaseService{
}
//批量获取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, strList.size()+complexStrList.size()+numList.size()+fileList.size());
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
for(AppFeatureIndex cfg:list){
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
@@ -917,14 +922,15 @@ public class ConfigSynchronizationService extends BaseService{
}
}
if(ipList.size()>0){
List<Integer> ipGroupId = ConfigServiceUtil.getId(2,1);//多条IP只获取一个groupId
// List<Integer> ipGroupId = ConfigServiceUtil.getId(2,1);//多条IP只获取一个groupId
for(int index=0;index<ipList.size();index++){
IpPortCfg ip = ipList.get(index);
if(ip.getCompileId().equals(cfg.getCompileId())){
// BeanUtils.copyProperties(cfg, ip);
ip.setRegionId(regionIds.get(0));
regionIds.remove(0);
ip.setGroupId(ipGroupId.get(0));
ip.setGroupId(groupIds.get(0));
groupIds.remove(0);
ip.setIsValid(entity.getIsValid());
ip.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
list1.add(ip);
@@ -1055,7 +1061,8 @@ public class ConfigSynchronizationService extends BaseService{
}
}else {
//调用服务接口配置全量更新
// JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
// FileUtils.writeToFile("d:\\configSync\\"+entity.getServiceId()+"_"+page.getPageNo()+"_"+System.currentTimeMillis()+".txt", json, false);
JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
}
return hasData;
@@ -1263,6 +1270,7 @@ public class ConfigSynchronizationService extends BaseService{
}
}else {
//调用服务接口配置全量更新
// FileUtils.writeToFile("d:\\configSync\\"+entity.getServiceId()+"_"+page.getPageNo()+"_"+System.currentTimeMillis()+".txt", json, false);
JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
@@ -1447,7 +1455,8 @@ public class ConfigSynchronizationService extends BaseService{
}
}else {
//调用服务接口配置全量更新
// JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
// FileUtils.writeToFile("d:\\configSync\\"+entity.getServiceId()+"_"+page.getPageNo()+"_"+System.currentTimeMillis()+".txt", json, false);
JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
}
@@ -1564,7 +1573,8 @@ public class ConfigSynchronizationService extends BaseService{
}
}else {
//调用服务接口配置全量更新
// JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
// FileUtils.writeToFile("d:\\configSync\\"+entity.getServiceId()+"_"+page.getPageNo()+"_"+System.currentTimeMillis()+".txt", json, false);
JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
}
@@ -1619,63 +1629,81 @@ public class ConfigSynchronizationService extends BaseService{
configCompileList = new ArrayList();
List list = new ArrayList();
List newList = new ArrayList();
if(className.equals("AvFileSampleCfg")){
list = configSynchronizationDao.getAvFileCfgList(entity);
}else if(className.equals("PxyObjKeyring")){
list = configSynchronizationDao.getPxyObjKeyringCfgList(entity);
if(entity.getServiceId().equals(3)){//ip drop回调类配置用了主表和子表关系
list = configSynchronizationDao.getCfgIndexList(entity);
List<Integer> compileIds = Lists.newArrayList();
for(int i=0;i<list.size();i++){
PxyObjKeyring cfg = (PxyObjKeyring) list.get(i);
newList.add(convertCallBackProxyObjKeyring(cfg));
CfgIndexInfo cfg = (CfgIndexInfo) list.get(i);
compileIds.add(cfg.getCompileId());
}
}else if(className.equals("PxyObjTrustedCaCert")){
list = configSynchronizationDao.getPxyObjTrustedCertCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(cfg,null));
}
}else if(className.equals("PxyObjTrustedCaCrl")){
list = configSynchronizationDao.getPxyObjTrustedCrlCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(null,cfg));
}
}else if(className.equals("DnsResStrategy")){
list = configSynchronizationDao.getDnsStrategyList(entity);
for(int i=0;i<list.size();i++){
DnsResStrategy cfg = (DnsResStrategy) list.get(i);
newList.add(convertCallBackDnsResStrategy(cfg));
}
}else if(className.equals("DnsIpCfg")){
list = configSynchronizationDao.getDnsIpCfgList(entity);
for(int i=0;i<list.size();i++){
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
List subList = configSynchronizationDao.getIpDropList("ip_port_cfg", compileIds);
for(int i=0;i<subList.size();i++){
IpPortCfg cfg = (IpPortCfg) subList.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}
}else if(className.equals("IpPortCfg")){
list = configSynchronizationDao.getIpPortListByService(entity);
for(int i=0;i<list.size();i++){
IpPortCfg cfg = (IpPortCfg) list.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}else{
if(className.equals("AvFileSampleCfg")){
list = configSynchronizationDao.getAvFileCfgList(entity);
}else if(className.equals("PxyObjKeyring")){
list = configSynchronizationDao.getPxyObjKeyringCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjKeyring cfg = (PxyObjKeyring) list.get(i);
newList.add(convertCallBackProxyObjKeyring(cfg));
}
}else if(className.equals("PxyObjTrustedCaCert")){
list = configSynchronizationDao.getPxyObjTrustedCertCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(cfg,null));
}
}else if(className.equals("PxyObjTrustedCaCrl")){
list = configSynchronizationDao.getPxyObjTrustedCrlCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(null,cfg));
}
}else if(className.equals("DnsResStrategy")){
list = configSynchronizationDao.getDnsStrategyList(entity);
for(int i=0;i<list.size();i++){
DnsResStrategy cfg = (DnsResStrategy) list.get(i);
newList.add(convertCallBackDnsResStrategy(cfg));
}
}else if(className.equals("DnsIpCfg")){
list = configSynchronizationDao.getDnsIpCfgList(entity);
for(int i=0;i<list.size();i++){
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}
}else if(className.equals("IpPortCfg")){
list = configSynchronizationDao.getIpPortListByService(entity);
for(int i=0;i<list.size();i++){
IpPortCfg cfg = (IpPortCfg) list.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}
}
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
//调用服务接口下发配置数据
String json=gsonToJson(newList);
if(isUpdateCfg) {
logger.info("配置批量下发:"+json);
//调用服务接口同步回调类配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
if(result!=null){
logger.info("配置批量下发响应信息:"+result.getMsg());
if(newList.size()>0){
//调用服务接口下发配置数据
String json=gsonToJson(newList);
if(isUpdateCfg) {
logger.info("配置批量下发:"+json);
//调用服务接口同步回调类配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
if(result!=null){
logger.info("配置批量下发响应信息:"+result.getMsg());
}
}else {
// logger.info("回调类配置同步:"+json);
// FileUtils.writeToFile("d:\\configSync\\"+entity.getServiceId()+"_"+page.getPageNo()+"_"+System.currentTimeMillis()+".txt", json, false);
//调用服务接口同步回调类配置
JSONObject result = ConfigServiceUtil.configSync(json,2,entity.getServiceId(),entity.getTableName(),(hasData?null:"FINISHED"));
// logger.info("回调类配置同步:"+result.getMsg());
}
}else {
logger.info("回调类配置同步:"+json);
//调用服务接口同步回调类配置
JSONObject result = ConfigServiceUtil.configSync(json,2,entity.getServiceId(),entity.getTableName(),(hasData?null:"FINISHED"));
// logger.info("回调类配置同步:"+result.getMsg());
}
return hasData;

View File

@@ -18,7 +18,9 @@
<serviceCfg cfgType="1" tableName="asn_ip_cfg" groupReuse="true" groupId="userRegion4"></serviceCfg>
<userRegion regionKey="ASN_ID" regionColumn="userRegion5" userRegionPosition="0" ></userRegion>
</service>
<service id="3" functionId="5" serviceType="2" tableName="ip_port_cfg" className="IpPortCfg" desc="IP丢弃"/>
<service id="3" functionId="5" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="IP丢弃">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
</service>
<service id="514" functionId="5" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="IP限速">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="0"></userRegion>
@@ -86,14 +88,14 @@
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="mail_keyword_cfg" ></serviceCfg>
</service>
<service id="132" functionId="34" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="邮件地址监测">
<!--<service id="132" functionId="34" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="邮件地址监测">
<serviceCfg cfgType="2" tableName="mail_keyword_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
</service>
<service id="20" functionId="34" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="邮件地址封堵">
<serviceCfg cfgType="2" tableName="mail_keyword_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
</service>
</service>-->
<service id="132" functionId="35" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="邮件地址监测">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="mail_keyword_cfg" ></serviceCfg>
@@ -174,7 +176,7 @@
</service>
<service id="512" functionId="200" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="IP拦截监测">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<userRegion regionKey="keyring_id" regionColumn="userRegion1" handleType="none" ></userRegion>
<userRegion regionKey="keyring_id" regionColumn="userRegion1" userRegionPosition="0" ></userRegion>
</service>
<service id="521" functionId="200" serviceType="1" tableName="cfg_index_info" className="CfgIndexInfo" desc="IP拦截白名单">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
@@ -262,48 +264,45 @@
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
<userRegion regionKey="PROTO_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="1"></userRegion>
</service>
<service id="33" functionId="63" serviceType="1" tableName="app_policy_cfg" className="AppPolicyCfg" desc="APP封堵">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
<userRegion regionKey="APP_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="BEHAV_ID" regionColumn="behavCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="0"></userRegion>
</service>
<service id="145" functionId="63" serviceType="1" tableName="app_policy_cfg" className="AppPolicyCfg" desc="APP监测">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
<userRegion regionKey="APP_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="BEHAV_ID" regionColumn="behavCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="0"></userRegion>
</service>
<service id="1056" functionId="63" serviceType="1" tableName="app_policy_cfg" className="AppPolicyCfg" desc="APP限速">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
<userRegion regionKey="APP_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="BEHAV_ID" regionColumn="behavCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="0"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="1"></userRegion>
</service>
<service id="36" functionId="408" serviceType="1" tableName="app_policy_cfg" className="AppPolicyCfg" desc="隧道协议行为封堵">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
<userRegion regionKey="APP_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="BEHAV_ID" regionColumn="behavCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="0"></userRegion>
</service>
<service id="148" functionId="408" serviceType="1" tableName="app_policy_cfg" className="AppPolicyCfg" desc="隧道协议行为监测">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
<userRegion regionKey="APP_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="BEHAV_ID" regionColumn="behavCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="0"></userRegion>
</service>
<service id="1060" functionId="408" serviceType="1" tableName="app_policy_cfg" className="AppPolicyCfg" desc="隧道协议行为限速">
<serviceCfg cfgType="1" tableName="ip_port_cfg" ></serviceCfg>
<serviceCfg cfgType="2" tableName="ntc_subscribe_id_cfg" ></serviceCfg>
<userRegion regionKey="APP_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="BEHAV_ID" regionColumn="behavCode" userRegionPosition="1"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="0"></userRegion>
<userRegion regionKey="Droprate" regionColumn="userRegion2" userRegionPosition="1"></userRegion>
</service>
<service id="1028" functionId="405" serviceType="1" cfgType="1" tableName="app_ip_cfg" className="AppIpCfg" desc="APP IP特征">
<userRegion regionKey="APP_ID" regionColumn="appCode" userRegionPosition="1"></userRegion>