Merge branch 'v2.0.5_dev' into 'master'
V2.0.5 dev See merge request DDOSAQ/phoenix_ddos_handle!15
This commit is contained in:
commit
eea1a67ade
|
@ -2,7 +2,7 @@
|
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
|
||||
<id>assembly</id>
|
||||
<id>${project.version}</id>
|
||||
<formats>
|
||||
<format>tgz</format>
|
||||
</formats>
|
||||
|
@ -11,7 +11,7 @@
|
|||
<directory>${project.build.directory}</directory>
|
||||
<outputDirectory>${file.separator}</outputDirectory>
|
||||
<includes>
|
||||
<include>phoenix_ddos_handle.jar</include>
|
||||
<include>dispose_platform.jar</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# processor_check.sh脚本内容如下
|
||||
|
||||
#!/bin/bash
|
||||
APP_NAME=phoenix_ddos_handle.jar
|
||||
APP_NAME=dispose_platform.jar
|
||||
WORK_PATH=$(cd `dirname $0`; pwd)
|
||||
|
||||
pids=`ps -ef | grep $APP_NAME | grep -v grep | wc -l`
|
||||
|
|
|
@ -5,4 +5,4 @@ JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -server -Xms512M -Xmx512M -X
|
|||
WORK_PATH=$(cd `dirname $0`; pwd)
|
||||
cd $WORK_PATH
|
||||
cd ..
|
||||
$JAVA_HOME/bin/java $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS $JAVA_OPTS -jar phoenix_ddos_handle.jar &
|
||||
$JAVA_HOME/bin/java $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS $JAVA_OPTS -jar dispose_platform.jar &
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
APP_NAME=phoenix_ddos_handle.jar
|
||||
APP_NAME=dispose_platform.jar
|
||||
|
||||
pids=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}'`
|
||||
for pid in $pids
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
#模板配置
|
||||
template.umcTemplate[0].name=Game_Server_10G
|
||||
template.umcTemplate[0].bandMin=1500
|
||||
template.umcTemplate[0].bandMax=-1
|
||||
template.umcTemplate[0].type=GAME
|
||||
|
||||
template.umcTemplate[1].name=Game_Server_1G
|
||||
template.umcTemplate[1].bandMin=0
|
||||
template.umcTemplate[1].bandMax=1500
|
||||
template.umcTemplate[1].type=GAME
|
||||
|
||||
template.umcTemplate[2].name=DNS_Server_10G
|
||||
template.umcTemplate[2].bandMin=1500
|
||||
template.umcTemplate[2].bandMax=-1
|
||||
template.umcTemplate[2].type=DNS
|
||||
|
||||
template.umcTemplate[3].name=DNS_Server_1G
|
||||
template.umcTemplate[3].bandMin=0
|
||||
template.umcTemplate[3].bandMax=1500
|
||||
template.umcTemplate[3].type=DNS
|
||||
|
||||
template.umcTemplate[4].name=WEB_Server_10G
|
||||
template.umcTemplate[4].bandMin=1500
|
||||
template.umcTemplate[4].bandMax=-1
|
||||
template.umcTemplate[4].type=WEB
|
||||
|
||||
template.umcTemplate[5].name=WEB_Server_1G
|
||||
template.umcTemplate[5].bandMin=0
|
||||
template.umcTemplate[5].bandMax=1500
|
||||
template.umcTemplate[5].type=WEB
|
||||
|
||||
template.umcTemplate[6].name=General_Server_10G
|
||||
template.umcTemplate[6].bandMin=1500
|
||||
template.umcTemplate[6].bandMax=-1
|
||||
template.umcTemplate[6].type=GENERAL
|
||||
|
||||
template.umcTemplate[7].name=General_Server_1G
|
||||
template.umcTemplate[7].bandMin=500
|
||||
template.umcTemplate[7].bandMax=1500
|
||||
template.umcTemplate[7].type=GENERAL
|
||||
|
||||
template.umcTemplate[8].name=General_Server_100M
|
||||
template.umcTemplate[8].bandMin=0
|
||||
template.umcTemplate[8].bandMax=500
|
||||
template.umcTemplate[8].type=GENERAL
|
||||
|
|
@ -1 +1 @@
|
|||
spring.profiles.active=local,dispose
|
||||
spring.profiles.active=local,dispose,template
|
12
pom.xml
12
pom.xml
|
@ -8,18 +8,18 @@
|
|||
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
|
||||
<undertow.version>2.1.3.Final</undertow.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<spring.framework.version>2.3.4.RELEASE</spring.framework.version>
|
||||
<spring.framework.version>2.3.8.RELEASE</spring.framework.version>
|
||||
</properties>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.3.4.RELEASE</version>
|
||||
<version>2.3.8.RELEASE</version>
|
||||
<relativePath/>
|
||||
</parent>
|
||||
<groupId>com.dispose</groupId>
|
||||
<artifactId>phoenix_ddos_handle</artifactId>
|
||||
<version>2.0.3</version>
|
||||
<name>phoenix_ddos_handle</name>
|
||||
<artifactId>dispose_platform</artifactId>
|
||||
<version>2.0.5</version>
|
||||
<name>dispose_platform</name>
|
||||
<description>Dispose Platform</description>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
@ -219,7 +219,7 @@
|
|||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>phoenix_ddos_handle</finalName>
|
||||
<finalName>dispose_platform</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
|
|
|
@ -4,10 +4,12 @@ import com.dispose.common.DisposeCapacityType;
|
|||
import com.dispose.common.DisposeObjectType;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.NetflowDirection;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.pojo.vo.DeviceFirewareInfo;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The interface Dispose ability.
|
||||
|
@ -98,4 +100,31 @@ public interface DisposeAbility {
|
|||
* @return the boolean
|
||||
*/
|
||||
boolean isCarryProtectIp(String ipAddr);
|
||||
|
||||
/**
|
||||
* Is carry attack type boolean.
|
||||
*
|
||||
* @param attackType the attack type
|
||||
* @return the boolean
|
||||
*/
|
||||
boolean isCarryAttackType(Long attackType);
|
||||
|
||||
/**
|
||||
* Period task runtime.
|
||||
*/
|
||||
void periodTaskRuntime();
|
||||
|
||||
/**
|
||||
* Device ready boolean.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
boolean deviceReady();
|
||||
|
||||
/**
|
||||
* Upgrade service group.
|
||||
*
|
||||
* @param svrList the svr list
|
||||
*/
|
||||
void upgradeServiceGroup(List<ServiceInfo> svrList);
|
||||
}
|
||||
|
|
|
@ -2,13 +2,16 @@ package com.dispose.ability.impl;
|
|||
|
||||
import com.dispose.ability.DisposeAbility;
|
||||
import com.dispose.common.CommonEnumHandler;
|
||||
import com.dispose.common.DDoSAttackType;
|
||||
import com.dispose.common.DisposeCapacityType;
|
||||
import com.dispose.common.DisposeConfigValue;
|
||||
import com.dispose.common.DisposeObjectType;
|
||||
import com.dispose.common.DpTechAttackType;
|
||||
import com.dispose.common.DpTechConfigValue;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.Helper;
|
||||
import com.dispose.common.NetflowDirection;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.pojo.vo.DeviceFirewareInfo;
|
||||
import com.dptech.dispose.AbnormalFlowCleaningServicePortType;
|
||||
|
@ -48,12 +51,29 @@ public class DpTechAbilityImpl implements DisposeAbility {
|
|||
* The Protect ip v 6.
|
||||
*/
|
||||
private final List<String> protectIpV6 = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* The Timer cnt.
|
||||
*/
|
||||
private long timerCnt = 0;
|
||||
/**
|
||||
* The Device link status.
|
||||
*/
|
||||
private boolean deviceLinkStatus = false;
|
||||
/**
|
||||
* The Clean type port.
|
||||
*/
|
||||
private AbnormalFlowCleaningServicePortType cleanTypePort;
|
||||
|
||||
/**
|
||||
* Gets clean type port.
|
||||
*
|
||||
* @return the clean type port
|
||||
*/
|
||||
public AbnormalFlowCleaningServicePortType getCleanTypePort() {
|
||||
return cleanTypePort;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Init device env.
|
||||
*
|
||||
|
@ -107,7 +127,8 @@ public class DpTechAbilityImpl implements DisposeAbility {
|
|||
* @return the mul return type
|
||||
*/
|
||||
@Override
|
||||
public MulReturnType<ErrorCode, String> runDispose(String disposeObject, DisposeObjectType objectType, DisposeCapacityType capType,
|
||||
public MulReturnType<ErrorCode, String> runDispose(String disposeObject, DisposeObjectType objectType,
|
||||
DisposeCapacityType capType,
|
||||
NetflowDirection nfDirection,
|
||||
Integer attackType,
|
||||
Long duration) {
|
||||
|
@ -205,15 +226,23 @@ public class DpTechAbilityImpl implements DisposeAbility {
|
|||
*/
|
||||
@Override
|
||||
public boolean getDeviceLinkStatus() {
|
||||
return deviceLinkStatus;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Dev get link status.
|
||||
*/
|
||||
private void devGetLinkStatus() {
|
||||
try {
|
||||
// 获取防护对象接口调用成功认为设备心跳正常
|
||||
cleanTypePort.getAllProtectionObjectFromUMC().getProtectionObjectDataForService();
|
||||
return true;
|
||||
deviceLinkStatus = true;
|
||||
} catch (Exception ex) {
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
|
||||
return false;
|
||||
deviceLinkStatus = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -246,7 +275,7 @@ public class DpTechAbilityImpl implements DisposeAbility {
|
|||
*/
|
||||
@Override
|
||||
public Long toDeviceAttackType(Long ddosAttackTypeMask) {
|
||||
return DpTechAttackType.formDdosAttackTypeMaks(ddosAttackTypeMask);
|
||||
return DpTechAttackType.getTypeMaskFromAttackType(new DpTechAttackType[] {DpTechAttackType.UDP_FLOOD});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -327,4 +356,55 @@ public class DpTechAbilityImpl implements DisposeAbility {
|
|||
public MulReturnType<ErrorCode, Long> taskStatus(String taskId) {
|
||||
return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L);
|
||||
}
|
||||
|
||||
/**
|
||||
* Period task runtime.
|
||||
*/
|
||||
@Override
|
||||
public void periodTaskRuntime() {
|
||||
log.debug("++++DpTech Period Task Running");
|
||||
|
||||
if (timerCnt++ % DpTechConfigValue.PROTECTION_UPGRADE_PERIOD == 0) {
|
||||
// 定时检测防护对象
|
||||
getDisposeDeviceProtectObject();
|
||||
}
|
||||
|
||||
// 更新心跳状态
|
||||
if (timerCnt++ % DisposeConfigValue.HEART_PERIOD_OF_SECOND == 0) {
|
||||
devGetLinkStatus();
|
||||
}
|
||||
|
||||
log.debug("----DpTech Period Task Running");
|
||||
}
|
||||
|
||||
/**
|
||||
* Device ready boolean.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean deviceReady() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade service group.
|
||||
*
|
||||
* @param svrList the svr list
|
||||
*/
|
||||
@Override
|
||||
public void upgradeServiceGroup(List<ServiceInfo> svrList) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Is carry attack type boolean.
|
||||
*
|
||||
* @param attackType the attack type
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean isCarryAttackType(Long attackType) {
|
||||
return !DDoSAttackType.maskToDdosAttackType(attackType).contains(DDoSAttackType.NONE_ATTACKS);
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,9 +2,11 @@ package com.dispose.ability.impl;
|
|||
|
||||
import com.dispose.ability.DisposeAbility;
|
||||
import com.dispose.common.DisposeCapacityType;
|
||||
import com.dispose.common.DisposeConfigValue;
|
||||
import com.dispose.common.DisposeObjectType;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.NetflowDirection;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.pojo.vo.DeviceFirewareInfo;
|
||||
import com.haohan.dispose.common.HaoHanStartCleanResp;
|
||||
|
@ -16,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type Hao han ability.
|
||||
|
@ -38,6 +41,14 @@ public class HaoHanAbilityImpl implements DisposeAbility {
|
|||
* The Url root path.
|
||||
*/
|
||||
private String urlRootPath;
|
||||
/**
|
||||
* The Timer cnt.
|
||||
*/
|
||||
private long timerCnt = 0;
|
||||
/**
|
||||
* The Device link status.
|
||||
*/
|
||||
private boolean deviceLinkStatus = false;
|
||||
|
||||
/**
|
||||
* Init device env.
|
||||
|
@ -153,14 +164,23 @@ public class HaoHanAbilityImpl implements DisposeAbility {
|
|||
*/
|
||||
@Override
|
||||
public boolean getDeviceLinkStatus() {
|
||||
return deviceLinkStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dev get link status.
|
||||
*/
|
||||
private void devGetLinkStatus() {
|
||||
try {
|
||||
// 获取任务信息接口调用成功认为设备心跳正常
|
||||
return (restfulInterface.getCleanTaskStatus(this.urlRootPath, -1) != null);
|
||||
if (restfulInterface.getCleanTaskStatus(this.urlRootPath, -1) != null) {
|
||||
deviceLinkStatus = true;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
|
||||
return false;
|
||||
deviceLinkStatus = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -225,4 +245,49 @@ public class HaoHanAbilityImpl implements DisposeAbility {
|
|||
public MulReturnType<ErrorCode, Long> taskStatus(String taskId) {
|
||||
return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L);
|
||||
}
|
||||
|
||||
/**
|
||||
* Period task runtime.
|
||||
*/
|
||||
@Override
|
||||
public void periodTaskRuntime() {
|
||||
log.debug("++++HaoHan Period Task Running");
|
||||
|
||||
// 更新心跳状态
|
||||
if (timerCnt++ % DisposeConfigValue.HEART_PERIOD_OF_SECOND == 0) {
|
||||
devGetLinkStatus();
|
||||
}
|
||||
|
||||
log.debug("----HaoHan Period Task Running");
|
||||
}
|
||||
|
||||
/**
|
||||
* Device ready boolean.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean deviceReady() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade service group.
|
||||
*
|
||||
* @param svrList the svr list
|
||||
*/
|
||||
@Override
|
||||
public void upgradeServiceGroup(List<ServiceInfo> svrList) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Is carry attack type boolean.
|
||||
*
|
||||
* @param attackType the attack type
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean isCarryAttackType(Long attackType) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,9 +3,11 @@ package com.dispose.ability.impl;
|
|||
import cn.hutool.http.HttpResponse;
|
||||
import com.dispose.ability.DisposeAbility;
|
||||
import com.dispose.common.DisposeCapacityType;
|
||||
import com.dispose.common.DisposeConfigValue;
|
||||
import com.dispose.common.DisposeObjectType;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.NetflowDirection;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.pojo.vo.DeviceFirewareInfo;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
@ -20,6 +22,7 @@ import org.springframework.stereotype.Component;
|
|||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type Hua wei ability.
|
||||
|
@ -29,16 +32,22 @@ import javax.servlet.http.HttpServletResponse;
|
|||
@Component
|
||||
@Slf4j
|
||||
public class HuaWeiAbilityImpl implements DisposeAbility {
|
||||
/**
|
||||
* The Restful interface.
|
||||
*/
|
||||
private final HuaWeiInterface restfulInterface = new HuaWeiInterface();
|
||||
|
||||
/**
|
||||
* The constant OBJECT_MAPPER.
|
||||
*/
|
||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
|
||||
/**
|
||||
* The Restful interface.
|
||||
*/
|
||||
private final HuaWeiInterface restfulInterface = new HuaWeiInterface();
|
||||
/**
|
||||
* The Timer cnt.
|
||||
*/
|
||||
private long timerCnt = 0;
|
||||
/**
|
||||
* The Device link status.
|
||||
*/
|
||||
private boolean deviceLinkStatus = false;
|
||||
/**
|
||||
* The Url root path.
|
||||
*/
|
||||
|
@ -136,14 +145,18 @@ public class HuaWeiAbilityImpl implements DisposeAbility {
|
|||
}
|
||||
|
||||
if (resp != ErrorCode.ERR_OK) {
|
||||
log.error("----Error HuaWei start clean {} return error: {}, {}", disposeObject, resp.getCode(), resp.getMsg());
|
||||
log.error("----Error HuaWei start clean {} return error: {}, {}", disposeObject, resp.getCode(),
|
||||
resp.getMsg());
|
||||
return new MulReturnType<>(ErrorCode.ERR_HUAWEI_ERROR, null);
|
||||
}
|
||||
|
||||
log.debug("----Finish HuaWei Start Cleanup Task: {}", disposeObject);
|
||||
log.info("----Finish HuaWei Start Cleanup Task: {}", disposeObject);
|
||||
return new MulReturnType<>(ErrorCode.ERR_OK, null);
|
||||
} catch (Exception ex) {
|
||||
log.error("----Exception HuaWei Start Cleanup Task: {}, {}, {}", disposeObject, nfDirection, duration);
|
||||
log.error("----Exception HuaWei Start Cleanup Task [{}]: {}, {}, {}, {}, {}", ex.getMessage(),
|
||||
disposeObject,
|
||||
nfDirection,
|
||||
duration, url, token);
|
||||
return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null);
|
||||
}
|
||||
}
|
||||
|
@ -181,7 +194,7 @@ public class HuaWeiAbilityImpl implements DisposeAbility {
|
|||
}
|
||||
|
||||
try {
|
||||
log.debug("++++Begging HuaWei Stop Cleanup Task: {}", taskId);
|
||||
log.info("++++Begging HuaWei Stop Cleanup Task: {}", taskId);
|
||||
|
||||
if (capType != DisposeCapacityType.CLEANUP) {
|
||||
log.error("----Error HuaWei don't support dispose capacity type: {}", capType);
|
||||
|
@ -211,10 +224,12 @@ public class HuaWeiAbilityImpl implements DisposeAbility {
|
|||
return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, null);
|
||||
}
|
||||
|
||||
log.debug("----Finish HuaWei Stop Cleanup Task: {}", taskId);
|
||||
log.info("----Finish HuaWei Stop Cleanup Task: {}", taskId);
|
||||
return new MulReturnType<>(ErrorCode.ERR_OK, null);
|
||||
} catch (Exception ex) {
|
||||
log.error("----Exception HuaWei Stop Cleanup Task: {}, {}, {}", disposeObject, nfDirection, taskId);
|
||||
log.error("----Exception HuaWei Stop Cleanup Task [{}]: {}, {}, {}, {}", ex.getMessage(),
|
||||
disposeObject,
|
||||
nfDirection, url, token);
|
||||
return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null);
|
||||
}
|
||||
}
|
||||
|
@ -270,12 +285,20 @@ public class HuaWeiAbilityImpl implements DisposeAbility {
|
|||
*/
|
||||
@Override
|
||||
public boolean getDeviceLinkStatus() {
|
||||
return deviceLinkStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dev get link status.
|
||||
*/
|
||||
private void devGetLinkStatus() {
|
||||
try {
|
||||
//查询所有的zone接口调用成功认为设备心跳正常
|
||||
String url = urlRootPath + "/allzone";
|
||||
|
||||
if (token == null || token.length() == 0) {
|
||||
return false;
|
||||
deviceLinkStatus = false;
|
||||
return;
|
||||
}
|
||||
|
||||
HttpResponse response = restfulInterface.queryAllZones(url, token);
|
||||
|
@ -286,13 +309,14 @@ public class HuaWeiAbilityImpl implements DisposeAbility {
|
|||
response = restfulInterface.queryAllZones(url, token);
|
||||
}
|
||||
|
||||
return response.getStatus() == HttpServletResponse.SC_OK;
|
||||
} catch (
|
||||
Exception ex) {
|
||||
if (response.getStatus() == HttpServletResponse.SC_OK) {
|
||||
deviceLinkStatus = true;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
|
||||
return false;
|
||||
deviceLinkStatus = false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -330,5 +354,50 @@ public class HuaWeiAbilityImpl implements DisposeAbility {
|
|||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Period task runtime.
|
||||
*/
|
||||
@Override
|
||||
public void periodTaskRuntime() {
|
||||
log.debug("++++HuaWei Period Task Running");
|
||||
|
||||
// 更新心跳状态
|
||||
if (timerCnt++ % DisposeConfigValue.HEART_PERIOD_OF_SECOND == 0) {
|
||||
devGetLinkStatus();
|
||||
}
|
||||
|
||||
log.debug("----HuaWei Period Task Running");
|
||||
}
|
||||
|
||||
/**
|
||||
* Device ready boolean.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean deviceReady() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade service group.
|
||||
*
|
||||
* @param svrList the svr list
|
||||
*/
|
||||
@Override
|
||||
public void upgradeServiceGroup(List<ServiceInfo> svrList) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Is carry attack type boolean.
|
||||
*
|
||||
* @param attackType the attack type
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean isCarryAttackType(Long attackType) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,12 +2,14 @@ package com.dispose.ability.impl;
|
|||
|
||||
import com.dispose.ability.DisposeAbility;
|
||||
import com.dispose.common.DisposeCapacityType;
|
||||
import com.dispose.common.DisposeConfigValue;
|
||||
import com.dispose.common.DisposeObjectType;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.Helper;
|
||||
import com.dispose.common.IpAddrType;
|
||||
import com.dispose.common.NetflowDirection;
|
||||
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.pojo.vo.DeviceFirewareInfo;
|
||||
import com.pengxin.dispose.common.PengXinDisposeAbilityRsp;
|
||||
|
@ -55,6 +57,15 @@ public class PengXinAbilityImpl implements DisposeAbility {
|
|||
* The Task req id.
|
||||
*/
|
||||
private Long taskReqId = System.currentTimeMillis();
|
||||
/**
|
||||
* The Timer cnt.
|
||||
*/
|
||||
private long timerCnt = 0;
|
||||
/**
|
||||
* The Device link status.
|
||||
*/
|
||||
private boolean deviceLinkStatus = false;
|
||||
|
||||
/**
|
||||
* The Url root path.
|
||||
*/
|
||||
|
@ -310,11 +321,19 @@ public class PengXinAbilityImpl implements DisposeAbility {
|
|||
*/
|
||||
@Override
|
||||
public boolean getDeviceLinkStatus() {
|
||||
return deviceLinkStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dev get link status.
|
||||
*/
|
||||
private void devGetLinkStatus() {
|
||||
try {
|
||||
String url = urlRootPath + "dispose_device/information/linkstatus";
|
||||
|
||||
if (token == null || token.length() == 0) {
|
||||
return false;
|
||||
deviceLinkStatus = false;
|
||||
return;
|
||||
}
|
||||
|
||||
ErrorCode err = restfulInterface.getLinkStatus(url, token);
|
||||
|
@ -325,12 +344,14 @@ public class PengXinAbilityImpl implements DisposeAbility {
|
|||
err = restfulInterface.getLinkStatus(url, token);
|
||||
}
|
||||
|
||||
return err == ErrorCode.ERR_OK;
|
||||
if (err == ErrorCode.ERR_OK) {
|
||||
deviceLinkStatus = true;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
|
||||
return false;
|
||||
deviceLinkStatus = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -480,4 +501,52 @@ public class PengXinAbilityImpl implements DisposeAbility {
|
|||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Period task runtime.
|
||||
*/
|
||||
@Override
|
||||
public void periodTaskRuntime() {
|
||||
log.debug("++++PengXin Period Task Running");
|
||||
|
||||
// 更新防护对象
|
||||
getDisposeDeviceProtectObject();
|
||||
|
||||
// 更新心跳状态
|
||||
if (timerCnt++ % DisposeConfigValue.HEART_PERIOD_OF_SECOND == 0) {
|
||||
devGetLinkStatus();
|
||||
}
|
||||
|
||||
log.debug("----PengXin Period Task Running");
|
||||
}
|
||||
|
||||
/**
|
||||
* Device ready boolean.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean deviceReady() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade service group.
|
||||
*
|
||||
* @param svrList the svr list
|
||||
*/
|
||||
@Override
|
||||
public void upgradeServiceGroup(List<ServiceInfo> svrList) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Is carry attack type boolean.
|
||||
*
|
||||
* @param attackType the attack type
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean isCarryAttackType(Long attackType) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,10 +5,12 @@ import com.dispose.common.DisposeCapacityType;
|
|||
import com.dispose.common.DisposeObjectType;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.NetflowDirection;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.pojo.vo.DeviceFirewareInfo;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type Virtual ability.
|
||||
|
@ -143,4 +145,42 @@ public class VirtualAbilityImpl implements DisposeAbility {
|
|||
public MulReturnType<ErrorCode, Long> taskStatus(String taskId) {
|
||||
return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L);
|
||||
}
|
||||
|
||||
/**
|
||||
* Period task runtime.
|
||||
*/
|
||||
@Override
|
||||
public void periodTaskRuntime() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Device ready boolean.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean deviceReady() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade service group.
|
||||
*
|
||||
* @param svrList the svr list
|
||||
*/
|
||||
@Override
|
||||
public void upgradeServiceGroup(List<ServiceInfo> svrList) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Is carry attack type boolean.
|
||||
*
|
||||
* @param attackType the attack type
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean isCarryAttackType(Long attackType) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,6 +79,21 @@ public class ConstValue {
|
|||
public static final String IP_PORT_REG = "^[1-9]$|(^[1-9][0-9]$)|(^[1-9][0-9][0-9]$)|(^[1-9][0-9][0-9][0-9]$)|" +
|
||||
"(^[1-6][0-5][0-5][0-3][0-5]$)";
|
||||
|
||||
/**
|
||||
* The constant BUSINESS_TYPE.
|
||||
*/
|
||||
public static final String BUSINESS_TYPE = "^(GENERAL)|(WEB)|(DNS)|(GAME)$";
|
||||
|
||||
/**
|
||||
* The constant NUMBER_TYPE.
|
||||
*/
|
||||
public static final String NUMBER_TYPE = "^[0-9]+([.]{1}[0-9]+){0,1}$";
|
||||
|
||||
/**
|
||||
* The constant IP_SEGMENT_SPILT.
|
||||
*/
|
||||
public static final String[] IP_SEGMENT_SPILT = new String[] {"-", "/"};
|
||||
|
||||
/**
|
||||
* The type Protocol.
|
||||
*
|
||||
|
|
|
@ -186,6 +186,11 @@ public enum DDoSAttackType implements BaseEnum {
|
|||
*/
|
||||
IGMP_FLOOD(42, "IGMP_FLOOD"),
|
||||
|
||||
|
||||
/**
|
||||
* None attacks d do s attack type.
|
||||
*/
|
||||
NONE_ATTACKS(63, "NONE_ATTACKS"),
|
||||
/**
|
||||
* The All attacks.
|
||||
*/
|
||||
|
@ -224,7 +229,7 @@ public enum DDoSAttackType implements BaseEnum {
|
|||
|
||||
if (types.contains(ALL_ATTACKS)) {
|
||||
for (DDoSAttackType type : DDoSAttackType.values()) {
|
||||
if (type.equals(ALL_ATTACKS)) {
|
||||
if (type.equals(ALL_ATTACKS) || type.equals(NONE_ATTACKS)) {
|
||||
continue;
|
||||
}
|
||||
mask |= (long) 1 << type.getValue();
|
||||
|
@ -249,7 +254,8 @@ public enum DDoSAttackType implements BaseEnum {
|
|||
|
||||
if (Arrays.asList(types).contains(ALL_ATTACKS)) {
|
||||
for (DDoSAttackType type : DDoSAttackType.values()) {
|
||||
if (type.equals(ALL_ATTACKS)) {
|
||||
// 掩码处理跳过所有攻击类型与不指定攻击类型
|
||||
if (type.equals(ALL_ATTACKS) || type.equals(NONE_ATTACKS)) {
|
||||
continue;
|
||||
}
|
||||
mask |= (long) 1 << type.getValue();
|
||||
|
@ -270,8 +276,12 @@ public enum DDoSAttackType implements BaseEnum {
|
|||
* @return the type mask from attack type
|
||||
*/
|
||||
public static Long getTypeMaskFromAttackType(Integer[] types) {
|
||||
// 如果指定了所有攻击类型,选择所有攻击类型
|
||||
if (Arrays.stream(types).anyMatch(v -> ALL_ATTACKS.getValue().equals(v))) {
|
||||
return getTypeMaskFromAttackType(new DDoSAttackType[]{ALL_ATTACKS});
|
||||
} else if (Arrays.stream(types).anyMatch(v -> NONE_ATTACKS.getValue().equals(v))) {
|
||||
// 如果不指定攻击类型
|
||||
return getTypeMaskFromAttackType(new DDoSAttackType[]{NONE_ATTACKS});
|
||||
} else {
|
||||
long mask = 0L;
|
||||
for (int i : types) {
|
||||
|
|
|
@ -58,4 +58,9 @@ public class DisposeConfigValue {
|
|||
* The constant ENABLE_UTEST_MOCK.
|
||||
*/
|
||||
public static volatile boolean ENABLE_UTEST_MOCK = false;
|
||||
|
||||
/**
|
||||
* The constant HEART_PERIOD_OF_SECOND.
|
||||
*/
|
||||
public static long HEART_PERIOD_OF_SECOND = 30;
|
||||
}
|
||||
|
|
|
@ -19,9 +19,13 @@ public enum DisposeDeviceType implements BaseEnum {
|
|||
*/
|
||||
PENGXIN_PLATFORM(2, "鹏信处置设备"),
|
||||
/**
|
||||
* The HuaWei platform.
|
||||
* The Huawei platform.
|
||||
*/
|
||||
HUAWEI_PLATFORM(3, "华为处置设备"),
|
||||
/**
|
||||
* Dptech bypass umc dispose device type.
|
||||
*/
|
||||
DPTECH_BYPASS_UMC(4, "迪普旁路牵引UMC管理平台"),
|
||||
/**
|
||||
* The Virtual dispose.
|
||||
*/
|
||||
|
|
|
@ -57,7 +57,13 @@ public enum DpTechAttackType implements BaseEnum {
|
|||
/**
|
||||
* The Host total traffic.
|
||||
*/
|
||||
HOST_TOTAL_TRAFFIC(31, "Host Total Traffic");
|
||||
HOST_TOTAL_TRAFFIC(31, "Host Total Traffic"),
|
||||
|
||||
/**
|
||||
* The Auto attack type.
|
||||
*/
|
||||
AUTO_ATTACK_TYPE(32, "Automatic detect attack type"),
|
||||
;
|
||||
|
||||
/**
|
||||
* The Code.
|
||||
|
@ -130,10 +136,10 @@ public enum DpTechAttackType implements BaseEnum {
|
|||
}
|
||||
|
||||
/**
|
||||
* From ddos attack type value stream.
|
||||
* From ddos attack type value list.
|
||||
*
|
||||
* @param type the type
|
||||
* @return the stream
|
||||
* @return the list
|
||||
*/
|
||||
public static List<DpTechAttackType> fromDdosAttackTypeValue(DDoSAttackType type) {
|
||||
List<DpTechAttackType> attackList = new ArrayList<>();
|
||||
|
@ -204,6 +210,10 @@ public enum DpTechAttackType implements BaseEnum {
|
|||
attackList.addAll(Arrays.asList(DpTechAttackType.values()));
|
||||
break;
|
||||
|
||||
case NONE_ATTACKS:
|
||||
attackList.add(AUTO_ATTACK_TYPE);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -21,4 +21,9 @@ public class DpTechConfigValue {
|
|||
* The constant SOAP_RECEIVE_TIMEOUT_SECOND.
|
||||
*/
|
||||
public static volatile long SOAP_RECEIVE_TIMEOUT_SECOND = 60;
|
||||
|
||||
/**
|
||||
* The Protection upgrade period.
|
||||
*/
|
||||
public static final long PROTECTION_UPGRADE_PERIOD = 10;
|
||||
}
|
||||
|
|
|
@ -165,7 +165,7 @@ public enum ErrorCode {
|
|||
*/
|
||||
ERR_UNTRUSTTOKEN(38, "未经授权的Token"),
|
||||
/**
|
||||
* Err unknowninterface error code.
|
||||
* The Err unknowninterface.
|
||||
*/
|
||||
ERR_UNKNOWNINTERFACE(39, "未提供该接口"),
|
||||
/**
|
||||
|
@ -217,19 +217,19 @@ public enum ErrorCode {
|
|||
*/
|
||||
ERR_DECRYPT_AES256(111, "AES256解密失败"),
|
||||
/**
|
||||
* The Err no device by areaCode.
|
||||
* The Err nodevice areacode.
|
||||
*/
|
||||
ERR_NODEVICE_AREACODE(112, "区域无该设备"),
|
||||
/**
|
||||
* The Err specified IP already exists.
|
||||
* The Err specifiedip exists.
|
||||
*/
|
||||
ERR_SPECIFIEDIP_EXISTS(113, "指定的IP已经存在"),
|
||||
/**
|
||||
* The Err specified IP does not exists.
|
||||
* The Err specifiedip notexists.
|
||||
*/
|
||||
ERR_SPECIFIEDIP_NOTEXISTS(114, "指定的IP地址不存在"),
|
||||
/**
|
||||
* The Err server processing request.
|
||||
* The Err server processreq.
|
||||
*/
|
||||
ERR_SERVER_PROCESSREQ(115, "服务器处理请求错误"),
|
||||
/**
|
||||
|
@ -240,6 +240,44 @@ public enum ErrorCode {
|
|||
* The Err pengxin error.
|
||||
*/
|
||||
ERR_PENGXIN_ERROR(117, "鹏信设备返回错误"),
|
||||
|
||||
/**
|
||||
* The Err nosuchumcprotectobject.
|
||||
*/
|
||||
ERR_NOSUCHUMCPROTECTOBJECT(200, "没有找到UMC防护对象"),
|
||||
|
||||
/**
|
||||
* The Err protectobjectexists.
|
||||
*/
|
||||
ERR_PROTECTOBJECTEXISTS(201, "该防护对象已经存在"),
|
||||
|
||||
/**
|
||||
* The Err tractionstrategyrunning.
|
||||
*/
|
||||
ERR_TRACTIONSTRATEGYRUNNING(201, "该防护策略正在运行"),
|
||||
|
||||
/**
|
||||
* The Err nosuchprotectstrategy.
|
||||
*/
|
||||
ERR_NOSUCHPROTECTSTRATEGY(202, "没有该防护策略"),
|
||||
|
||||
|
||||
/**
|
||||
* The Err businessexists.
|
||||
*/
|
||||
ERR_BUSINESSEXISTS(300, "该业务已经存在"),
|
||||
|
||||
/**
|
||||
* Err businessnotexists error code.
|
||||
*/
|
||||
ERR_BUSINESSNOTEXISTS(301, "该业务不存在"),
|
||||
|
||||
/**
|
||||
* Err addbusiness error code.
|
||||
*/
|
||||
ERR_ADDBUSINESS(302, "添加客户业务失败"),
|
||||
|
||||
ERR_DELBUSINESS(303, "删除客户业务失败"),
|
||||
;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
package com.dispose.common;
|
||||
|
||||
import com.dispose.config.TemplateConfigure;
|
||||
import com.dispose.pojo.vo.TemplateInfo;
|
||||
import inet.ipaddr.AddressStringException;
|
||||
import inet.ipaddr.IPAddress;
|
||||
import inet.ipaddr.IPAddressSeqRange;
|
||||
import inet.ipaddr.IPAddressString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
|
@ -14,6 +17,7 @@ import java.sql.Timestamp;
|
|||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -21,6 +25,7 @@ import java.util.stream.Collectors;
|
|||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Slf4j
|
||||
public class Helper {
|
||||
|
||||
/**
|
||||
|
@ -155,7 +160,8 @@ public class Helper {
|
|||
} else if (addr.isIPv6() && ipV6All.equals(rangeIp)) {
|
||||
return true;
|
||||
}
|
||||
} catch (Exception ignored) {}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
|
||||
// 处理CIDR格式
|
||||
if (rangeIp.contains(cidrSplit)) {
|
||||
|
@ -177,7 +183,8 @@ public class Helper {
|
|||
addr = new IPAddressString(ipAddr).toAddress();
|
||||
IPAddressSeqRange range = lower.toSequentialRange(upper);
|
||||
return range.contains(addr);
|
||||
} catch (AddressStringException ignored) {}
|
||||
} catch (AddressStringException ignored) {
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -202,4 +209,22 @@ public class Helper {
|
|||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets dp template.
|
||||
*
|
||||
* @param type the type
|
||||
* @param bandWidth the band width
|
||||
* @return the dp template
|
||||
*/
|
||||
public static String getDpTemplate(String type, Long bandWidth) {
|
||||
Optional<String> ret = TemplateConfigure.UMC_TEMPLATE.stream()
|
||||
.filter(v -> v.getType().equals(type))
|
||||
.filter(v -> (bandWidth == 0 && v.getBandMin() == 0)
|
||||
|| (bandWidth > v.getBandMin() && (bandWidth <= v.getBandMax() || v.getBandMax() == -1L)))
|
||||
.map(TemplateInfo::getName)
|
||||
.findFirst();
|
||||
|
||||
return ret.orElse("");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
package com.dispose.config;
|
||||
|
||||
import com.dispose.pojo.vo.TemplateInfo;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type Template configure.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "template")
|
||||
@Configuration
|
||||
public class TemplateConfigure {
|
||||
|
||||
/**
|
||||
* The Umc template.
|
||||
*/
|
||||
public static List<TemplateInfo> UMC_TEMPLATE;
|
||||
|
||||
/**
|
||||
* The Umc template.
|
||||
*/
|
||||
private List<TemplateInfo> umcTemplate;
|
||||
|
||||
/**
|
||||
* Init template configure.
|
||||
*/
|
||||
@PostConstruct
|
||||
private void initTemplateConfigure() {
|
||||
TemplateConfigure.UMC_TEMPLATE = umcTemplate;
|
||||
}
|
||||
}
|
|
@ -105,7 +105,7 @@ public class DisposeTaskController {
|
|||
NetflowDirection netDir = CommonEnumHandler.codeOf(NetflowDirection.class,
|
||||
Optional.ofNullable(req.getFlowDirection()).orElse(2));
|
||||
Long attackType = DDoSAttackType.getTypeMaskFromAttackType(Optional.ofNullable(req.getAttackType())
|
||||
.orElse(new Integer[]{DDoSAttackType.ALL_ATTACKS.getValue()}));
|
||||
.orElse(new Integer[]{DDoSAttackType.NONE_ATTACKS.getValue()}));
|
||||
Integer flowBand = Optional.ofNullable(req.getFlowBandwidth())
|
||||
.orElse(DisposeConfigValue.DEFAULT_DISPOSE_BANDWIDTH);
|
||||
|
||||
|
@ -186,7 +186,7 @@ public class DisposeTaskController {
|
|||
.orElse(2)))
|
||||
.attackType(DDoSAttackType.getTypeMaskFromAttackType(
|
||||
Optional.ofNullable(req.getAttackType())
|
||||
.orElse(new Integer[]{DDoSAttackType.ALL_ATTACKS.getValue()})))
|
||||
.orElse(new Integer[]{DDoSAttackType.NONE_ATTACKS.getValue()})))
|
||||
.flowBandWidth(Optional.ofNullable(req.getFlowBandwidth())
|
||||
.orElse(DisposeConfigValue.DEFAULT_DISPOSE_BANDWIDTH))
|
||||
.build();
|
||||
|
@ -237,7 +237,7 @@ public class DisposeTaskController {
|
|||
NetflowDirection netDir = CommonEnumHandler.codeOf(NetflowDirection.class,
|
||||
Optional.ofNullable(req.getFlowDirection()).orElse(2));
|
||||
Long attackType = DDoSAttackType.getTypeMaskFromAttackType(Optional.ofNullable(req.getAttackType())
|
||||
.orElse(new Integer[]{DDoSAttackType.ALL_ATTACKS.getValue()}));
|
||||
.orElse(new Integer[]{DDoSAttackType.NONE_ATTACKS.getValue()}));
|
||||
Integer flowBand = Optional.ofNullable(req.getFlowBandwidth())
|
||||
.orElse(DisposeConfigValue.DEFAULT_DISPOSE_BANDWIDTH);
|
||||
|
||||
|
|
|
@ -0,0 +1,178 @@
|
|||
package com.dispose.controller;
|
||||
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO;
|
||||
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
|
||||
import com.dispose.pojo.dto.protocol.device.business.AddUserSvrReq;
|
||||
import com.dispose.pojo.dto.protocol.device.business.AddUserSvrRsp;
|
||||
import com.dispose.pojo.dto.protocol.device.business.BusinessIdArray;
|
||||
import com.dispose.pojo.dto.protocol.device.business.UserSvrInfo;
|
||||
import com.dispose.pojo.dto.protocol.device.business.UserSvrRsp;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.security.annotation.Decryption;
|
||||
import com.dispose.security.annotation.Encryption;
|
||||
import com.dispose.service.UserBusinessManagerService;
|
||||
import com.dispose.validation.group.ValidGroups;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type User business controller.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping(value = "/business")
|
||||
@Slf4j
|
||||
@Api(value = "抗DDoS处置平台客户业务管理接口", tags = "抗DDoS处置平台客户业务管理接口")
|
||||
@Component
|
||||
@Validated
|
||||
@Encryption
|
||||
@Decryption
|
||||
public class UserBusinessController {
|
||||
/**
|
||||
* The User business manager service.
|
||||
*/
|
||||
@Resource
|
||||
private UserBusinessManagerService userBusinessManagerService;
|
||||
|
||||
/**
|
||||
* Add user business protocol resp dto.
|
||||
*
|
||||
* @param mr the mr
|
||||
* @return the protocol resp dto
|
||||
*/
|
||||
@PutMapping("/manage")
|
||||
@ResponseBody
|
||||
@ApiOperation("添加客户业务信息")
|
||||
public ProtocolRespDTO<AddUserSvrRsp> addUserBusiness(
|
||||
@Validated(ValidGroups.AddUserInfoValid.class)
|
||||
@RequestBody ProtocolReqDTO<AddUserSvrReq> mr) {
|
||||
List<ServiceInfo> svrList = new ArrayList<>();
|
||||
|
||||
// 参数转换
|
||||
for (UserSvrInfo v : mr.getMsgContent().getItems()) {
|
||||
svrList.add(ServiceInfo.builder()
|
||||
.serviceId(v.getBusinessId())
|
||||
.serviceType(v.getBusinessType())
|
||||
.serviceBandwidth((long) Math.ceil(Double.parseDouble(v.getBusinessBandwidth())))
|
||||
.serviceIp(StringUtils.deleteWhitespace(v.getBusinessIp()))
|
||||
.build());
|
||||
}
|
||||
|
||||
// 添加业务
|
||||
List<MulReturnType<ErrorCode, String>> ret = userBusinessManagerService.addUserBusiness(svrList);
|
||||
|
||||
AddUserSvrRsp rspInfo = AddUserSvrRsp.builder()
|
||||
.items(new ArrayList<>())
|
||||
.build();
|
||||
|
||||
// 处理反回值
|
||||
ret.forEach(v -> {
|
||||
UserSvrRsp rsp = UserSvrRsp.builder()
|
||||
.businessId(v.getSecondParam())
|
||||
.build();
|
||||
|
||||
rsp.setStatus(v.getFirstParam().getCode());
|
||||
rsp.setMessage(new String[]{v.getFirstParam().getMsg()});
|
||||
rspInfo.getItems().add(rsp);
|
||||
});
|
||||
|
||||
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Del user business protocol resp dto.
|
||||
*
|
||||
* @param mr the mr
|
||||
* @return the protocol resp dto
|
||||
*/
|
||||
@DeleteMapping("/manage")
|
||||
@ResponseBody
|
||||
@ApiOperation("删除客户业务信息")
|
||||
public ProtocolRespDTO<AddUserSvrRsp> delUserBusiness(
|
||||
@Validated(ValidGroups.AddUserInfoValid.class)
|
||||
@RequestBody ProtocolReqDTO<BusinessIdArray> mr) {
|
||||
// 删除业务
|
||||
List<MulReturnType<ErrorCode, String>> ret = userBusinessManagerService.delUserBusiness(mr.getMsgContent()
|
||||
.getBusinessId());
|
||||
|
||||
// 处理反回值
|
||||
AddUserSvrRsp rspInfo = AddUserSvrRsp.builder()
|
||||
.items(new ArrayList<>())
|
||||
.build();
|
||||
|
||||
ret.forEach(v -> {
|
||||
UserSvrRsp rsp = UserSvrRsp.builder()
|
||||
.businessId(v.getSecondParam())
|
||||
.build();
|
||||
|
||||
rsp.setStatus(v.getFirstParam().getCode());
|
||||
rsp.setMessage(new String[]{v.getFirstParam().getMsg()});
|
||||
rspInfo.getItems().add(rsp);
|
||||
});
|
||||
|
||||
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade user business protocol resp dto.
|
||||
*
|
||||
* @param mr the mr
|
||||
* @return the protocol resp dto
|
||||
*/
|
||||
@PostMapping("/updateBusiness")
|
||||
@ResponseBody
|
||||
@ApiOperation("更新客户业务信息")
|
||||
public ProtocolRespDTO<AddUserSvrRsp> upgradeUserBusiness(
|
||||
@Validated(ValidGroups.AddUserInfoValid.class)
|
||||
@RequestBody ProtocolReqDTO<AddUserSvrReq> mr) {
|
||||
List<ServiceInfo> svrList = new ArrayList<>();
|
||||
|
||||
// 参数转换
|
||||
for (UserSvrInfo v : mr.getMsgContent().getItems()) {
|
||||
svrList.add(ServiceInfo.builder()
|
||||
.serviceId(v.getBusinessId())
|
||||
.serviceType(v.getBusinessType())
|
||||
.serviceBandwidth((long) Math.ceil(Double.parseDouble(v.getBusinessBandwidth())))
|
||||
.serviceIp(v.getBusinessIp())
|
||||
.build());
|
||||
}
|
||||
|
||||
// 更新业务
|
||||
List<MulReturnType<ErrorCode, String>> ret = userBusinessManagerService.upgradeUserBusiness(svrList);
|
||||
|
||||
AddUserSvrRsp rspInfo = AddUserSvrRsp.builder()
|
||||
.items(new ArrayList<>())
|
||||
.build();
|
||||
|
||||
// 处理反回值
|
||||
ret.forEach(v -> {
|
||||
UserSvrRsp rsp = UserSvrRsp.builder()
|
||||
.businessId(v.getSecondParam())
|
||||
.build();
|
||||
|
||||
rsp.setStatus(v.getFirstParam().getCode());
|
||||
rsp.setMessage(new String[]{v.getFirstParam().getMsg()});
|
||||
rspInfo.getItems().add(rsp);
|
||||
});
|
||||
|
||||
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
|
||||
}
|
||||
}
|
|
@ -136,6 +136,15 @@ public interface DeviceTaskManager {
|
|||
*/
|
||||
DeviceTask getTaskById(Long id);
|
||||
|
||||
/**
|
||||
* Device task created boolean.
|
||||
*
|
||||
* @param taskId the task id
|
||||
* @param devId the dev id
|
||||
* @return the boolean
|
||||
*/
|
||||
boolean deviceTaskCreated(Long taskId, Long devId);
|
||||
|
||||
/**
|
||||
* Gets peng xin task.
|
||||
*
|
||||
|
|
|
@ -41,6 +41,13 @@ public interface DisposeTaskManager {
|
|||
*/
|
||||
List<DisposeTask> getExpiredTasks();
|
||||
|
||||
/**
|
||||
* Gets un expired tasks.
|
||||
*
|
||||
* @return the un expired tasks
|
||||
*/
|
||||
List<DisposeTask> getUnExpiredTasks();
|
||||
|
||||
/**
|
||||
* Gets new dispose tasks.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package com.dispose.manager;
|
||||
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
|
||||
/**
|
||||
* The interface User business manager.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
public interface UserBusinessManager {
|
||||
/**
|
||||
* Add user business error code.
|
||||
*
|
||||
* @param svrInfo the svr info
|
||||
* @return the error code
|
||||
*/
|
||||
ErrorCode addUserBusiness(ServiceInfo svrInfo);
|
||||
|
||||
/**
|
||||
* Del user business error code.
|
||||
*
|
||||
* @param svrId the svr id
|
||||
* @return the error code
|
||||
*/
|
||||
ErrorCode delUserBusiness(String svrId);
|
||||
}
|
|
@ -25,6 +25,18 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
|||
@Resource
|
||||
private DeviceTaskMapper deviceTaskMapper;
|
||||
|
||||
/**
|
||||
* Device task created boolean.
|
||||
*
|
||||
* @param taskId the task id
|
||||
* @param devId the dev id
|
||||
* @return the boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean deviceTaskCreated(Long taskId, Long devId) {
|
||||
return deviceTaskMapper.getTaskByDetails(taskId, devId).size() != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add dispose device task info boolean.
|
||||
*
|
||||
|
@ -80,11 +92,11 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
|||
}
|
||||
|
||||
/**
|
||||
* Change dispose device task info dev status long.
|
||||
* Change dispose device task info dev status int.
|
||||
*
|
||||
* @param id the id
|
||||
* @param devStatus the dev status
|
||||
* @return the long
|
||||
* @return the int
|
||||
*/
|
||||
@Override
|
||||
public int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus) {
|
||||
|
@ -297,9 +309,9 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets PengXin device task info.
|
||||
* Get peng xin task list.
|
||||
*
|
||||
* @return the minId task info.
|
||||
* @return the list
|
||||
*/
|
||||
@Override
|
||||
public List<DeviceTask> getPengXinTask(){
|
||||
|
|
|
@ -56,7 +56,8 @@ public class DisposeDeviceManagerImpl implements DisposeDeviceManager {
|
|||
@Override
|
||||
public MulReturnType<ErrorCode, Long> addDisposeDevice(DisposeDevice dev) {
|
||||
// 看看系统中有没有存在相同IP+端口地址的设备,有的话返回失败
|
||||
DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort());
|
||||
DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort(),
|
||||
dev.getDeviceType().getValue());
|
||||
|
||||
if (tDev != null) {
|
||||
// 如果设备是删除状态,则更新设备信息
|
||||
|
@ -135,20 +136,17 @@ public class DisposeDeviceManagerImpl implements DisposeDeviceManager {
|
|||
*/
|
||||
@Override
|
||||
public MulReturnType<ErrorCode, Long> upgradeDisposeDevice(DisposeDevice dev) {
|
||||
DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort());
|
||||
DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort(),
|
||||
dev.getDeviceType().getValue());
|
||||
|
||||
// 处理默认端口情况
|
||||
if (tDev == null) {
|
||||
if (dev.getIpPort() == null || dev.getIpPort().length() == 0) {
|
||||
// HTTP 默认端口
|
||||
if (dev.getUrlType() == HttpType.HTTP) {
|
||||
tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(),
|
||||
HttpType.getDefaultPort(HttpType.HTTP));
|
||||
} else if (dev.getUrlType() == HttpType.HTTPS) {
|
||||
// HTTPS 默认端口
|
||||
tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(),
|
||||
HttpType.getDefaultPort(HttpType.HTTPS));
|
||||
}
|
||||
dev.getUrlType() == HttpType.HTTP ?
|
||||
HttpType.getDefaultPort(HttpType.HTTP) :
|
||||
HttpType.getDefaultPort(HttpType.HTTPS),
|
||||
dev.getDeviceType().getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,16 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager {
|
|||
return disposeTaskMapper.getExpiredTasks();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets un expired tasks.
|
||||
*
|
||||
* @return the un expired tasks
|
||||
*/
|
||||
@Override
|
||||
public List<DisposeTask> getUnExpiredTasks() {
|
||||
return disposeTaskMapper.getUnExpiredTasks();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets new dispose tasks.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
package com.dispose.manager.impl;
|
||||
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.manager.UserBusinessManager;
|
||||
import com.dispose.mapper.ServiceGroupMapper;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type User business manager.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Component
|
||||
public class UserBusinessManagerImpl implements UserBusinessManager {
|
||||
/**
|
||||
* The Service group mapper.
|
||||
*/
|
||||
@Resource
|
||||
private ServiceGroupMapper serviceGroupMapper;
|
||||
|
||||
/**
|
||||
* Add user business error code.
|
||||
*
|
||||
* @param svrInfo the svr info
|
||||
* @return the error code
|
||||
*/
|
||||
@Override
|
||||
public ErrorCode addUserBusiness(ServiceInfo svrInfo) {
|
||||
|
||||
if (serviceGroupMapper.selectByServiceId(svrInfo.getServiceId()) != null) {
|
||||
return ErrorCode.ERR_BUSINESSEXISTS;
|
||||
}
|
||||
|
||||
List<ServiceInfo> svrList = new ArrayList<>();
|
||||
svrList.add(svrInfo);
|
||||
|
||||
return serviceGroupMapper.addServiceGroup(svrList) != 1 ? ErrorCode.ERR_ADDBUSINESS : ErrorCode.ERR_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Del user business error code.
|
||||
*
|
||||
* @param svrId the svr id
|
||||
* @return the error code
|
||||
*/
|
||||
@Override
|
||||
public ErrorCode delUserBusiness(String svrId) {
|
||||
if (serviceGroupMapper.selectByServiceId(svrId) == null) {
|
||||
return ErrorCode.ERR_BUSINESSNOTEXISTS;
|
||||
}
|
||||
|
||||
return serviceGroupMapper.delServiceGroupByServiceId(svrId) != 1 ? ErrorCode.ERR_DELBUSINESS : ErrorCode.ERR_OK;
|
||||
}
|
||||
}
|
|
@ -83,7 +83,8 @@ public interface DisposeDeviceMapper {
|
|||
* @return the device by address
|
||||
*/
|
||||
DisposeDevice getDeviceByAddress(@Param("ipAddr") String ipAddr,
|
||||
@Param("ipPort") String ipPort);
|
||||
@Param("ipPort") String ipPort,
|
||||
@Param("devType") Integer devType);
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -104,4 +104,11 @@ public interface DisposeTaskMapper {
|
|||
* @return the expired tasks
|
||||
*/
|
||||
List<DisposeTask> getExpiredTasks();
|
||||
|
||||
/**
|
||||
* Gets un expired tasks.
|
||||
*
|
||||
* @return the un expired tasks
|
||||
*/
|
||||
List<DisposeTask> getUnExpiredTasks();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
package com.dispose.mapper;
|
||||
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The interface Service group mapper.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
public interface ServiceGroupMapper {
|
||||
/**
|
||||
* Select all list.
|
||||
*
|
||||
* @return the list
|
||||
*/
|
||||
List<ServiceInfo> selectAll();
|
||||
|
||||
/**
|
||||
* Select by service id service info.
|
||||
*
|
||||
* @param serviceId the service id
|
||||
* @return the service info
|
||||
*/
|
||||
ServiceInfo selectByServiceId(@Param("serviceId") String serviceId);
|
||||
|
||||
/**
|
||||
* Add service group int.
|
||||
*
|
||||
* @param svrGrps the svr grps
|
||||
* @return the int
|
||||
*/
|
||||
int addServiceGroup(@Param("svrGrps") List<ServiceInfo> svrGrps);
|
||||
|
||||
/**
|
||||
* Del service group by id int.
|
||||
*
|
||||
* @param id the id
|
||||
* @return the int
|
||||
*/
|
||||
int delServiceGroupById(@Param("id") Long id);
|
||||
|
||||
/**
|
||||
* Del service group by service id int.
|
||||
*
|
||||
* @param serviceId the service id
|
||||
* @return the int
|
||||
*/
|
||||
int delServiceGroupByServiceId(@Param("serviceId") String serviceId);
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package com.dispose.pojo.dto.protocol.device.ability;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Hashtable;
|
||||
|
||||
/**
|
||||
* The type Dp bypass manager.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class DpBypassManager {
|
||||
/**
|
||||
* The Protect object.
|
||||
*/
|
||||
Hashtable<String, DpProtectObject> protectObject;
|
||||
|
||||
/**
|
||||
* The Protect strategy.
|
||||
*/
|
||||
Hashtable<String, DpProtectionStrategyInfo> protectStrategy;
|
||||
|
||||
/**
|
||||
* The Traction strategy name.
|
||||
*/
|
||||
Hashtable<String, DpTractionStrategy> tractionStrategyName;
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package com.dispose.pojo.dto.protocol.device.ability;
|
||||
|
||||
import com.dispose.common.IpAddrType;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Hashtable;
|
||||
|
||||
/**
|
||||
* The type Dp protect object.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class DpProtectObject {
|
||||
/**
|
||||
* The Protect name.
|
||||
*/
|
||||
private String protectName;
|
||||
|
||||
/**
|
||||
* The Detection devices.
|
||||
*/
|
||||
private String detectionDevices;
|
||||
|
||||
/**
|
||||
* The Cleanup devices.
|
||||
*/
|
||||
private String cleanupDevices;
|
||||
|
||||
/**
|
||||
* The Ip type.
|
||||
*/
|
||||
private IpAddrType ipType;
|
||||
|
||||
/**
|
||||
* The Ip segment.
|
||||
*/
|
||||
private Hashtable<String, String> ipSegment;
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.dispose.pojo.dto.protocol.device.ability;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* The type Dp protection strategy info.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class DpProtectionStrategyInfo {
|
||||
/**
|
||||
* The Protect target name.
|
||||
*/
|
||||
private String protectTargetName;
|
||||
/**
|
||||
* The Protect strategy name.
|
||||
*/
|
||||
private String protectStrategyName;
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package com.dispose.pojo.dto.protocol.device.ability;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* The type Dp traction strategy.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class DpTractionStrategy {
|
||||
/**
|
||||
* The Policy name.
|
||||
*/
|
||||
private String policyName;
|
||||
/**
|
||||
* The Protect name.
|
||||
*/
|
||||
private String protectName;
|
||||
/**
|
||||
* The Ip range.
|
||||
*/
|
||||
private String ipRange;
|
||||
/**
|
||||
* The Running.
|
||||
*/
|
||||
private boolean running;
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.dispose.pojo.dto.protocol.device.business;
|
||||
|
||||
import com.dispose.validation.group.ValidGroups;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type Add user svr req.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class AddUserSvrReq {
|
||||
/**
|
||||
* The Items.
|
||||
*/
|
||||
@NotNull(message = "items 设备列表不能为空", groups = ValidGroups.AddUserInfoValid.class)
|
||||
@Size(min = 1, message = "items 至少需要有一个元素", groups = ValidGroups.AddUserInfoValid.class)
|
||||
@Valid
|
||||
private List<UserSvrInfo> items;
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.dispose.pojo.dto.protocol.device.business;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type Add user svr rsp.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class AddUserSvrRsp {
|
||||
/**
|
||||
* The Items.
|
||||
*/
|
||||
private List<UserSvrRsp> items;
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package com.dispose.pojo.dto.protocol.device.business;
|
||||
|
||||
import com.dispose.validation.group.ValidGroups;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
/**
|
||||
* The type Business id array.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class BusinessIdArray {
|
||||
/**
|
||||
* The Business id.
|
||||
*/
|
||||
@NotNull(message = "businessId 字段不能为空", groups = ValidGroups.AddUserInfoValid.class)
|
||||
@Size(min = 1, message = "businessId 字段必须指定明确编号", groups = ValidGroups.AddUserInfoValid.class)
|
||||
private String[] businessId;
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package com.dispose.pojo.dto.protocol.device.business;
|
||||
|
||||
import com.dispose.common.ConstValue;
|
||||
import com.dispose.validation.group.ValidGroups;
|
||||
import com.dispose.validation.valids.ValidIpSegment;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
/**
|
||||
* The type User svr info.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class UserSvrInfo {
|
||||
/**
|
||||
* The Business id.
|
||||
*/
|
||||
@NotBlank(message = "businessId 客户业务ID能为空", groups = ValidGroups.AddUserInfoValid.class)
|
||||
@Size(min = 1, max = 13, message = "businessId 字符串长度为 [1, 13]", groups = ValidGroups.AddUserInfoValid.class)
|
||||
private String businessId;
|
||||
/**
|
||||
* The Business type.
|
||||
*/
|
||||
@NotBlank(message = "businessType 客户业务类型不能为空", groups = ValidGroups.AddUserInfoValid.class)
|
||||
@Pattern(regexp = ConstValue.BUSINESS_TYPE,
|
||||
message = "businessType 未知业务类型, [GENERAL, WEB, DNS, GAME]",
|
||||
groups = ValidGroups.AddUserInfoValid.class)
|
||||
private String businessType;
|
||||
/**
|
||||
* The Business ip.
|
||||
*/
|
||||
@JsonProperty("businessIP")
|
||||
@ValidIpSegment(message = "businessIp Ip地址格式错误", groups = ValidGroups.AddUserInfoValid.class)
|
||||
@NotBlank(message = "businessIp 业务IP地址段不能为空", groups = ValidGroups.AddUserInfoValid.class)
|
||||
private String businessIp;
|
||||
/**
|
||||
* The Business bandwidth.
|
||||
*/
|
||||
@NotBlank(message = "businessBandwidth 客户业务带宽不能为空", groups = ValidGroups.AddUserInfoValid.class)
|
||||
@Pattern(regexp = ConstValue.NUMBER_TYPE,
|
||||
message = "businessBandwidth 只能为数字",
|
||||
groups = ValidGroups.AddUserInfoValid.class)
|
||||
private String businessBandwidth;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.dispose.pojo.dto.protocol.device.business;
|
||||
|
||||
import com.dispose.pojo.dto.protocol.base.BaseRespStatus;
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* The type User svr rsp.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@JsonPropertyOrder({"businessId", "status", "message"})
|
||||
public class UserSvrRsp extends BaseRespStatus {
|
||||
/**
|
||||
* The Business id.
|
||||
*/
|
||||
private String businessId;
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package com.dispose.pojo.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import tk.mybatis.mapper.annotation.KeySql;
|
||||
import tk.mybatis.mapper.annotation.NameStyle;
|
||||
import tk.mybatis.mapper.code.Style;
|
||||
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
* The type Service info.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@JsonPropertyOrder(alphabetic = true)
|
||||
@Table(name = "service_group")
|
||||
@NameStyle(Style.normal)
|
||||
public class ServiceInfo {
|
||||
/**
|
||||
* The constant serialVersionUID.
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* The Id.
|
||||
*/
|
||||
@Id
|
||||
@KeySql(useGeneratedKeys = true)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* The Service id.
|
||||
*/
|
||||
private String serviceId;
|
||||
|
||||
/**
|
||||
* The Service type.
|
||||
*/
|
||||
private String serviceType;
|
||||
|
||||
/**
|
||||
* The Service bandwidth.
|
||||
*/
|
||||
private Long serviceBandwidth;
|
||||
|
||||
/**
|
||||
* The Service ip.
|
||||
*/
|
||||
private String serviceIp;
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package com.dispose.pojo.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* The type Template info.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class TemplateInfo {
|
||||
/**
|
||||
* The Name.
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* The Band min.
|
||||
*/
|
||||
private Long bandMin;
|
||||
/**
|
||||
* The Band max.
|
||||
*/
|
||||
private Long bandMax;
|
||||
/**
|
||||
* The Type.
|
||||
*/
|
||||
private String type;
|
||||
}
|
|
@ -23,6 +23,15 @@ import java.util.Map;
|
|||
*/
|
||||
@Slf4j
|
||||
public class RestfulInterface {
|
||||
/**
|
||||
* The constant OBJECT_MAPPER.
|
||||
*/
|
||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
/**
|
||||
* The constant timeOutValue.
|
||||
*/
|
||||
private static int timeOutValue = 1000;
|
||||
|
||||
/**
|
||||
* Instantiates a new Restful interface.
|
||||
*/
|
||||
|
@ -30,15 +39,6 @@ public class RestfulInterface {
|
|||
throw new AssertionError("Instantiating utility class.");
|
||||
}
|
||||
|
||||
/**
|
||||
* The constant timeOutValue.
|
||||
*/
|
||||
private static int timeOutValue = 1000;
|
||||
/**
|
||||
* The constant OBJECT_MAPPER.
|
||||
*/
|
||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
|
||||
/**
|
||||
* Init env.
|
||||
*
|
||||
|
|
|
@ -18,9 +18,10 @@ public interface DisposeAbilityRouterService {
|
|||
*
|
||||
* @param ipAddr the ip addr
|
||||
* @param ipPort the ip port
|
||||
* @param deviceType the device type
|
||||
* @return the ability device
|
||||
*/
|
||||
AbilityInfo getAbilityDevice(String ipAddr, String ipPort);
|
||||
AbilityInfo getAbilityDevice(String ipAddr, String ipPort, String deviceType);
|
||||
|
||||
/**
|
||||
* Gets ability device.
|
||||
|
@ -54,4 +55,9 @@ public interface DisposeAbilityRouterService {
|
|||
* @return the error code
|
||||
*/
|
||||
ErrorCode verifyDisposeCapacity(Long deviceId, String disposeIp, DisposeCapacityType capacityType);
|
||||
|
||||
/**
|
||||
* Run period task.
|
||||
*/
|
||||
void runPeriodTask();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package com.dispose.service;
|
||||
|
||||
/**
|
||||
* The interface Template service.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
public interface TemplateService {
|
||||
/**
|
||||
* Gets template.
|
||||
*
|
||||
* @param type the type
|
||||
* @param bandWidth the band width
|
||||
* @return the template
|
||||
*/
|
||||
String getTemplate(String type, Long bandWidth);
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.dispose.service;
|
||||
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The interface User business manager service.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
public interface UserBusinessManagerService {
|
||||
/**
|
||||
* Add user business list.
|
||||
*
|
||||
* @param svrInfoList the svr info list
|
||||
* @return the list
|
||||
*/
|
||||
List<MulReturnType<ErrorCode, String>> addUserBusiness(List<ServiceInfo> svrInfoList);
|
||||
|
||||
/**
|
||||
* Upgrade user business list.
|
||||
*
|
||||
* @param svrInfoList the svr info list
|
||||
* @return the list
|
||||
*/
|
||||
List<MulReturnType<ErrorCode, String>> upgradeUserBusiness(List<ServiceInfo> svrInfoList);
|
||||
|
||||
/**
|
||||
* Del user business list.
|
||||
*
|
||||
* @param svrId the svr id
|
||||
* @return the list
|
||||
*/
|
||||
List<MulReturnType<ErrorCode, String>> delUserBusiness(String[] svrId);
|
||||
}
|
|
@ -133,28 +133,25 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
// 设置任务状态为启动中
|
||||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING);
|
||||
|
||||
// 遍历设备攻击类型
|
||||
for (DpTechAttackType t : DpTechAttackType.maskToDdosAttackType(deviceTask.getTaskAttackType())) {
|
||||
// 启动迪普设备,采用一种攻击类型
|
||||
DpTechAttackType attackType = DpTechAttackType.maskToDdosAttackType(deviceTask.getTaskAttackType()).get(0);
|
||||
// 出方向
|
||||
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_IN) {
|
||||
// 已经启动过的任务不再重复启动
|
||||
if ((deviceTask.getExecAttackTypeOut() & t.getAttackTypeMask()) != 0) {
|
||||
continue;
|
||||
}
|
||||
// 设置启动任务攻击类型状态
|
||||
deviceTaskManager.execAttackTypeSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT,
|
||||
t.getValue());
|
||||
attackType.getValue());
|
||||
// 调用迪普设备启动处置任务
|
||||
ret = ai.getDb().runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(),
|
||||
disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_OUT,
|
||||
t.getValue(), null);
|
||||
attackType.getValue(), null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 标志启动成功
|
||||
deviceTaskManager.attackTypeStatusSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT,
|
||||
t.getValue());
|
||||
attackType.getValue());
|
||||
|
||||
log.info("DPTECH_UMC setup task {}, {} succeed: {}", t, NetflowDirection.DIRECTION_OUT, deviceTask);
|
||||
log.info("DPTECH_UMC setup task {}, {} succeed: {}", attackType, NetflowDirection.DIRECTION_OUT,
|
||||
deviceTask);
|
||||
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0);
|
||||
} else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES * 10) {
|
||||
|
@ -164,35 +161,32 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry());
|
||||
//清除任务攻击类型启动标志
|
||||
deviceTaskManager.execAttackTypeCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT,
|
||||
t.getValue());
|
||||
log.error("DPTECH_UMC setup task {}, {} times {} error: {}", t,
|
||||
attackType.getValue());
|
||||
log.error("DPTECH_UMC setup task {}, {} times {} error: {}", attackType,
|
||||
NetflowDirection.DIRECTION_OUT, deviceTask.getErrRetry(), deviceTask);
|
||||
} else {
|
||||
log.error("DPTECH_UMC setup task {}, {} error {}: {}", t,
|
||||
log.error("DPTECH_UMC setup task {}, {} error {}: {}", attackType,
|
||||
NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
}
|
||||
|
||||
// 入方向
|
||||
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_OUT) {
|
||||
// 已经启动过的任务不再重复启动
|
||||
if ((deviceTask.getExecAttackTypeIn() & t.getAttackTypeMask()) != 0) {
|
||||
continue;
|
||||
}
|
||||
// 设置启动任务攻击类型状态
|
||||
deviceTaskManager.execAttackTypeSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN,
|
||||
t.getValue());
|
||||
attackType.getValue());
|
||||
// 调用迪普设备启动处置任务
|
||||
ret = ai.getDb().runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(),
|
||||
disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_IN,
|
||||
t.getValue(), null);
|
||||
attackType.getValue(), null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 标志启动成功
|
||||
deviceTaskManager.attackTypeStatusSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN,
|
||||
t.getValue());
|
||||
attackType.getValue());
|
||||
|
||||
log.info("DPTECH_UMC setup task {}, {} succeed: {}", t, NetflowDirection.DIRECTION_IN, deviceTask);
|
||||
log.info("DPTECH_UMC setup task {}, {} succeed: {}", attackType, NetflowDirection.DIRECTION_IN,
|
||||
deviceTask);
|
||||
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0);
|
||||
} else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES * 10) {
|
||||
|
@ -202,15 +196,15 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry());
|
||||
//清除任务攻击类型启动标志
|
||||
deviceTaskManager.execAttackTypeCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN,
|
||||
t.getValue());
|
||||
log.error("DPTECH_UMC setup task {}, {} times {} error: {}", t,
|
||||
attackType.getValue());
|
||||
log.error("DPTECH_UMC setup task {}, {} times {} error: {}", attackType,
|
||||
NetflowDirection.DIRECTION_IN, deviceTask.getErrRetry(), deviceTask);
|
||||
} else {
|
||||
log.error("DPTECH_UMC setup task {}, {} error {}: {}", t,
|
||||
log.error("DPTECH_UMC setup task {}, {} error {}: {}", attackType,
|
||||
NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 检查需要处置的各种攻击类型任务启动状态与处置任务执行状态,判断该处置任务是否调用成功
|
||||
boolean taskSetupSucceed = true;
|
||||
|
@ -468,7 +462,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
}
|
||||
|
||||
// 对新建的任务,创建对应处置设备任务信息
|
||||
for (DisposeTask v : disposeTaskManager.getNewDisposeTasks()) {
|
||||
for (DisposeTask v : disposeTaskManager.getUnExpiredTasks()) {
|
||||
// 设置任务状态, 开始创建任务
|
||||
disposeTaskManager.changeDisposeTaskStatus(v.getId(), DisposeTaskStatus.TASK_STARTING);
|
||||
|
||||
|
@ -483,12 +477,22 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
.getDisposeCapacity()))
|
||||
// 当前设备是否支持处置该IP
|
||||
.filter(c -> c.getDb().isCarryProtectIp(v.getDisposeObject()))
|
||||
// 判断当前攻击类型是否支持
|
||||
.filter(c -> c.getDb().isCarryAttackType(v.getAttackType()))
|
||||
// 判断设备是否就绪
|
||||
.filter(c -> c.getDb().deviceReady())
|
||||
.forEach(d -> {
|
||||
log.info("Add dispose task for device: {}", d.getDev());
|
||||
// 检查当前设备是否已经创建了该任务
|
||||
if (deviceTaskManager.deviceTaskCreated(v.getId(),
|
||||
d.getDev().getId())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!deviceTaskManager.addDisposeDeviceTaskInfo(v.getId(), d.getDev().getId(),
|
||||
d.getDb()
|
||||
.toDeviceAttackType(v.getAttackType()))) {
|
||||
log.info("Add dispose task for device: {}", d.getDev());
|
||||
if (!deviceTaskManager
|
||||
.addDisposeDeviceTaskInfo(v.getId(),
|
||||
d.getDev().getId(),
|
||||
d.getDb().toDeviceAttackType(v.getAttackType()))) {
|
||||
log.error("Add task {} to device {} error", v, d);
|
||||
}
|
||||
});
|
||||
|
@ -534,6 +538,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
dpTechDeviceTaskRun(ai, v, task);
|
||||
break;
|
||||
|
||||
case DPTECH_BYPASS_UMC:
|
||||
restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.DPTECH_BYPASS_UMC);
|
||||
break;
|
||||
|
||||
case HAOHAN_PLATFORM:
|
||||
restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.HAOHAN_PLATFORM);
|
||||
break;
|
||||
|
@ -607,6 +615,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
dpTechDeviceTaskStop(ai, v, task);
|
||||
break;
|
||||
|
||||
case DPTECH_BYPASS_UMC:
|
||||
restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.DPTECH_BYPASS_UMC);
|
||||
break;
|
||||
|
||||
case HAOHAN_PLATFORM:
|
||||
restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.HAOHAN_PLATFORM);
|
||||
break;
|
||||
|
|
|
@ -2,18 +2,22 @@ package com.dispose.service.impl;
|
|||
|
||||
import com.dispose.ability.DisposeAbility;
|
||||
import com.dispose.ability.impl.DpTechAbilityImpl;
|
||||
import com.dispose.ability.impl.DpTechBypassAbilityImpl;
|
||||
import com.dispose.ability.impl.HaoHanAbilityImpl;
|
||||
import com.dispose.ability.impl.HuaWeiAbilityImpl;
|
||||
import com.dispose.ability.impl.PengXinAbilityImpl;
|
||||
import com.dispose.ability.impl.VirtualAbilityImpl;
|
||||
import com.dispose.ability.impl.HuaWeiAbilityImpl;
|
||||
import com.dispose.common.DisposeCapacityType;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.HttpType;
|
||||
import com.dispose.manager.DisposeDeviceManager;
|
||||
import com.dispose.mapper.ServiceGroupMapper;
|
||||
import com.dispose.pojo.entity.DisposeDevice;
|
||||
import com.dispose.pojo.po.AbilityInfo;
|
||||
import com.dispose.service.DisposeAbilityRouterService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
@ -41,6 +45,12 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
@Resource
|
||||
private DisposeDeviceManager disposeDeviceManager;
|
||||
|
||||
/**
|
||||
* The Service group mapper.
|
||||
*/
|
||||
@Resource
|
||||
private ServiceGroupMapper serviceGroupMapper;
|
||||
|
||||
/**
|
||||
* Init dispose ability.
|
||||
*/
|
||||
|
@ -55,11 +65,12 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
*
|
||||
* @param ipAddr the ip addr
|
||||
* @param ipPort the ip port
|
||||
* @param deviceType the device type
|
||||
* @return the ability device
|
||||
*/
|
||||
@Override
|
||||
public AbilityInfo getAbilityDevice(String ipAddr, String ipPort) {
|
||||
return disposeAbilityMap.get(getAbilityDeviceHashKey(ipAddr, ipPort));
|
||||
public AbilityInfo getAbilityDevice(String ipAddr, String ipPort, String deviceType) {
|
||||
return disposeAbilityMap.get(getAbilityDeviceHashKey(ipAddr, ipPort, deviceType));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,7 +87,8 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
.orElse(null);
|
||||
|
||||
if (dev != null) {
|
||||
return disposeAbilityMap.get(getAbilityDeviceHashKey(dev.getIpAddr(), dev.getIpPort()));
|
||||
return disposeAbilityMap.get(getAbilityDeviceHashKey(dev.getIpAddr(), dev.getIpPort(),
|
||||
String.valueOf(dev.getDeviceType())));
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -103,7 +115,7 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
DisposeAbility db;
|
||||
|
||||
String httpType = dev.getUrlType() == HttpType.HTTP ? "http://" : "https://";
|
||||
String addr = getAbilityDeviceHashKey(dev.getIpAddr(), dev.getIpPort());
|
||||
String addr = (dev.getIpPort() == null || dev.getIpPort().length() == 0) ? dev.getIpAddr() : (dev.getIpAddr() + ":" + dev.getIpPort());
|
||||
String url = httpType + addr + "/" + dev.getUrlPath();
|
||||
|
||||
switch (dev.getDeviceType()) {
|
||||
|
@ -122,6 +134,10 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
case VIRTUAL_DISPOSE:
|
||||
db = new VirtualAbilityImpl();
|
||||
break;
|
||||
case DPTECH_BYPASS_UMC:
|
||||
db = new DpTechBypassAbilityImpl();
|
||||
db.upgradeServiceGroup(serviceGroupMapper.selectAll());
|
||||
break;
|
||||
default:
|
||||
log.error("Unknown dispose device type: {}", dev.getDeviceType());
|
||||
return ErrorCode.ERR_PARAMS;
|
||||
|
@ -131,8 +147,11 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
db.initDeviceEnv(url, dev.getUserName(), dev.getPassword());
|
||||
db.getDisposeDeviceProtectObject();
|
||||
|
||||
String hashKey = getAbilityDeviceHashKey(dev.getIpAddr(), dev.getIpPort(),
|
||||
String.valueOf(dev.getDeviceType()));
|
||||
|
||||
// 缓存处置设备到Hash表中
|
||||
disposeAbilityMap.put(addr, AbilityInfo.builder()
|
||||
disposeAbilityMap.put(hashKey, AbilityInfo.builder()
|
||||
.db(db)
|
||||
.dev(dev)
|
||||
.linkStatus(false)
|
||||
|
@ -171,6 +190,20 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
return ErrorCode.ERR_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run period task.
|
||||
*/
|
||||
@Override
|
||||
@Async("deviceTaskExecutor")
|
||||
@Scheduled(fixedDelay = 1000)
|
||||
public void runPeriodTask() {
|
||||
getAllAbilityDevices().forEach(v -> {
|
||||
v.getDb().periodTaskRuntime();
|
||||
// 同步最新处置平台业务信息到设备
|
||||
v.getDb().upgradeServiceGroup(serviceGroupMapper.selectAll());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets ability device hash key.
|
||||
*
|
||||
|
@ -178,7 +211,8 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
|||
* @param ipPort the ip port
|
||||
* @return the ability device hash key
|
||||
*/
|
||||
private String getAbilityDeviceHashKey(String ipAddr, String ipPort) {
|
||||
return (ipPort == null || ipPort.length() == 0) ? ipAddr : (ipAddr + ":" + ipPort);
|
||||
private String getAbilityDeviceHashKey(String ipAddr, String ipPort, String deviceType) {
|
||||
String addrPort = ipPort == null || ipPort.length() == 0 ? ipAddr : (ipAddr + ":" + ipPort);
|
||||
return addrPort + "-" + deviceType;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
package com.dispose.service.impl;
|
||||
|
||||
import com.dispose.config.TemplateConfigure;
|
||||
import com.dispose.pojo.vo.TemplateInfo;
|
||||
import com.dispose.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* The type Template service.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class TemplateServiceImpl implements TemplateService {
|
||||
@Resource
|
||||
TemplateConfigure templateConfigure;
|
||||
|
||||
/**
|
||||
* Gets template.
|
||||
*
|
||||
* @param type the type
|
||||
* @param bandWidth the band width
|
||||
* @return the template
|
||||
*/
|
||||
@Override
|
||||
public String getTemplate(String type, Long bandWidth) {
|
||||
// 遍历所有模板
|
||||
for (TemplateInfo v : templateConfigure.getUmcTemplate()) {
|
||||
// 判断类型是否一致
|
||||
if (v.getType().equals(type)) {
|
||||
// 当前带宽大于当前模板最小值
|
||||
if (bandWidth > v.getBandMin() || bandWidth == 0) {
|
||||
// 模板最大值为-1或者带宽小于等于模板最小值,返回模板名称
|
||||
if (v.getBandMax() == -1 && bandWidth != 0) {
|
||||
log.debug("Template analyze: {}, {} match {}", type, bandWidth, v);
|
||||
return v.getName();
|
||||
} else if (bandWidth <= v.getBandMax() && bandWidth >= v.getBandMin()) {
|
||||
log.debug("Template analyze: {}, {} match {}", type, bandWidth, v);
|
||||
return v.getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 纪录异常日志
|
||||
log.error("Template analyze: {}, {} match nothing!!!", type, bandWidth);
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
package com.dispose.service.impl;
|
||||
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.manager.UserBusinessManager;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.pojo.po.MulReturnType;
|
||||
import com.dispose.service.UserBusinessManagerService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The type User business manager service.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class UserBusinessManagerServiceImpl implements UserBusinessManagerService {
|
||||
/**
|
||||
* The User business manager.
|
||||
*/
|
||||
@Resource
|
||||
private UserBusinessManager userBusinessManager;
|
||||
|
||||
/**
|
||||
* Add user business list.
|
||||
*
|
||||
* @param svrInfoList the svr info list
|
||||
* @return the list
|
||||
*/
|
||||
@Override
|
||||
public List<MulReturnType<ErrorCode, String>> addUserBusiness(List<ServiceInfo> svrInfoList) {
|
||||
List<MulReturnType<ErrorCode, String>> rsp = new ArrayList<>();
|
||||
|
||||
for (ServiceInfo v : svrInfoList) {
|
||||
rsp.add(new MulReturnType<>(
|
||||
userBusinessManager.addUserBusiness(v),
|
||||
v.getServiceId()
|
||||
));
|
||||
}
|
||||
|
||||
return rsp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade user business list.
|
||||
*
|
||||
* @param svrInfoList the svr info list
|
||||
* @return the list
|
||||
*/
|
||||
@Override
|
||||
public List<MulReturnType<ErrorCode, String>> upgradeUserBusiness(List<ServiceInfo> svrInfoList) {
|
||||
|
||||
List<MulReturnType<ErrorCode, String>> rsp = new ArrayList<>();
|
||||
|
||||
for (ServiceInfo v : svrInfoList) {
|
||||
// 删除旧业务
|
||||
userBusinessManager.delUserBusiness(v.getServiceId());
|
||||
|
||||
// 添加新业务
|
||||
rsp.add(new MulReturnType<>(
|
||||
userBusinessManager.addUserBusiness(v),
|
||||
v.getServiceId()
|
||||
));
|
||||
}
|
||||
|
||||
return rsp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Del user business list.
|
||||
*
|
||||
* @param svrId the svr id
|
||||
* @return the list
|
||||
*/
|
||||
@Override
|
||||
public List<MulReturnType<ErrorCode, String>> delUserBusiness(String[] svrId) {
|
||||
List<MulReturnType<ErrorCode, String>> rsp = new ArrayList<>();
|
||||
|
||||
for (String v : svrId) {
|
||||
rsp.add(new MulReturnType<>(
|
||||
userBusinessManager.delUserBusiness(v),
|
||||
v
|
||||
));
|
||||
}
|
||||
|
||||
return rsp;
|
||||
}
|
||||
}
|
|
@ -57,9 +57,6 @@ public class DeviceManagerTask {
|
|||
((v.getDev().getIpPort() == null || v.getDev().getIpPort().length() == 0) ? "" :
|
||||
":" + v.getDev().getIpPort()),
|
||||
ret.getFirstParam());
|
||||
|
||||
// 更新设备保护对象
|
||||
v.getDb().getDisposeDeviceProtectObject();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,4 +40,13 @@ public class ThreadPoolConfig {
|
|||
executor.setCorePoolSize(Runtime.getRuntime().availableProcessors());
|
||||
return executor;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Executor dpTechTaskExecutor() {
|
||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||
executor.setThreadNamePrefix("dpTechTask-");
|
||||
executor.setMaxPoolSize(Runtime.getRuntime().availableProcessors() << 1 + 1);
|
||||
executor.setCorePoolSize(Runtime.getRuntime().availableProcessors());
|
||||
return executor;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -101,4 +101,12 @@ public interface ValidGroups {
|
|||
*/
|
||||
interface GetDevVerReqValid extends ProtocolCommonValid {
|
||||
}
|
||||
|
||||
/**
|
||||
* The interface Add device valid.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
interface AddUserInfoValid extends ProtocolCommonValid {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.dispose.common.ErrorCode;
|
|||
import com.dispose.restful.RestfulInterface;
|
||||
import com.huawei.dispose.common.HuaWeiCreatDivertReq;
|
||||
import com.huawei.dispose.common.HuaWeiLoginReq;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
@ -14,6 +15,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@Slf4j
|
||||
public class HuaWeiInterface {
|
||||
/**
|
||||
* Auth http response.
|
||||
|
@ -60,6 +62,8 @@ public class HuaWeiInterface {
|
|||
}
|
||||
}
|
||||
|
||||
log.error("----HuaWei response [{}]: {}", response == null ? -1 : response.getStatus(), response);
|
||||
|
||||
return ErrorCode.ERR_UNKNOWNCMD;
|
||||
}
|
||||
|
||||
|
@ -92,6 +96,7 @@ public class HuaWeiInterface {
|
|||
}
|
||||
}
|
||||
|
||||
log.error("----HuaWei response [{}]: {}", response == null ? -1 : response.getStatus(), response);
|
||||
return ErrorCode.ERR_UNKNOWNCMD;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
-- ----------------------------
|
||||
-- Records of dispose_device
|
||||
-- ----------------------------
|
||||
INSERT INTO `dispose_device` VALUES (1, '10.88.77.15', '', 0, 0, '中移杭研实验室迪普清洗设备', 'DPTech', 'UMC', '5.7.13', 'admin', 'UMCAdministrator', 'UMC/service/AbnormalFlowCleaningService', 0, '实验室测试设备', 0);
|
||||
-- INSERT INTO `dispose_device` VALUES (2, '10.88.77.88:18080', 1, 1, 0, '中移杭研实验室浩瀚清洗设备', 'HaoHan', 'Unknown', 'Unknown', '', '', 'http://%s/DDoSClean/clean', '实验室测试设备', 0);
|
||||
-- id, deviceId, capacityType, objectType, ipType, protectIp, reserveNetflow
|
||||
INSERT INTO `dispose_capacity` VALUES (1, 1, 0, 1, 3, '0.0.0.0', 10);
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_account
|
||||
-- ----------------------------
|
||||
INSERT INTO `user_account` VALUES (1, 'admin', 'c3855e6b6bb120450f160ba91134522868f89d36062f2061ebeefd80817e1d58', '2020-06-29 10:18:44', '0000-00-00 00:00:00', 0);
|
||||
INSERT INTO `user_account`
|
||||
VALUES (1, 'admin', 'c3855e6b6bb120450f160ba91134522868f89d36062f2061ebeefd80817e1d58', '2020-11-13 09:25:19', '',
|
||||
'2021-01-20 10:18:56', '1db9ddc47de514eb16b7ec07d7f7f96f7a714ae00e1209755bab30d543a0a2c3',
|
||||
'2021-01-20 10:20:57', '1970-01-02 00:00:00', 0, 0);
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
Target Server Version : 50731
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 11/09/2020 00:46:15
|
||||
Date: 19/01/2021 15:22:39
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
@ -23,9 +23,9 @@ SET FOREIGN_KEY_CHECKS = 0;
|
|||
DROP TABLE IF EXISTS `device_task`;
|
||||
CREATE TABLE `device_task`
|
||||
(
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '任务信息唯一标识符',
|
||||
`taskId` int(11) UNSIGNED NOT NULL COMMENT '处置任务唯一标识符',
|
||||
`deviceId` int(10) UNSIGNED NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '任务信息唯一标识符',
|
||||
`taskId` bigint(11) NOT NULL COMMENT '处置任务唯一标识符',
|
||||
`deviceId` bigint(11) NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`beginTime` timestamp(0) NULL DEFAULT NULL COMMENT '任务开始时间',
|
||||
`endTime` timestamp(0) NULL DEFAULT NULL COMMENT '任务结束时间',
|
||||
`taskAttackType` bigint(255) UNSIGNED NOT NULL DEFAULT 0 COMMENT '需要处置的攻击类型',
|
||||
|
@ -34,9 +34,9 @@ CREATE TABLE `device_task`
|
|||
`execAttackTypeOut` bigint(255) UNSIGNED NOT NULL DEFAULT 0 COMMENT '已经执行处置的攻击类型(Output)',
|
||||
`attackTypeStatusOut` bigint(255) UNSIGNED NOT NULL DEFAULT 0 COMMENT '执行的攻击类型状态(Input)',
|
||||
`externId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '扩展任务ID',
|
||||
`errRetry` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调用失败重试次数',
|
||||
`status` int(10) NOT NULL DEFAULT 0 COMMENT '任务状态',
|
||||
`devStatus` int(10) NOT NULL DEFAULT 0 COMMENT '设备任务状态',
|
||||
`errRetry` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调用失败重试次数',
|
||||
`status` int(11) NOT NULL DEFAULT 0 COMMENT '任务状态',
|
||||
`devStatus` int(11) NOT NULL DEFAULT 0 COMMENT '设备任务状态',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `task_info_ibfk_1` (`taskId`) USING BTREE,
|
||||
INDEX `task_info_ibfk_2` (`deviceId`) USING BTREE,
|
||||
|
@ -46,7 +46,7 @@ CREATE TABLE `device_task`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dispose_capacity
|
||||
|
@ -54,11 +54,11 @@ CREATE TABLE `device_task`
|
|||
DROP TABLE IF EXISTS `dispose_capacity`;
|
||||
CREATE TABLE `dispose_capacity`
|
||||
(
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '设备处置能力唯一标识符',
|
||||
`deviceId` int(11) UNSIGNED NOT NULL COMMENT '设备ID',
|
||||
`capacityType` int(8) NOT NULL COMMENT '处置能力:\r\n0:清洗\r\n1:高防 \r\n2:路由黑洞 \r\n3:检测\r\n4:WAF封堵\r\n',
|
||||
`objectType` int(8) NOT NULL COMMENT '处置对象类型:\r\n0:IP\r\n1:域名 \r\n2:URL',
|
||||
`ipType` int(8) NOT NULL DEFAULT 3 COMMENT 'IP 地址类型:\r\n1 << 0:支持IPV4\r\n1 << 1:支持IPV6',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '设备处置能力唯一标识符',
|
||||
`deviceId` bigint(11) NOT NULL COMMENT '设备ID',
|
||||
`capacityType` int(11) NOT NULL COMMENT '处置能力:\r\n0:清洗\r\n1:高防 \r\n2:路由黑洞 \r\n3:检测\r\n4:WAF封堵\r\n',
|
||||
`objectType` int(11) NOT NULL COMMENT '处置对象类型:\r\n0:IP\r\n1:域名 \r\n2:URL',
|
||||
`ipType` int(11) NOT NULL DEFAULT 3 COMMENT 'IP 地址类型:\r\n1 << 0:支持IPV4\r\n1 << 1:支持IPV6',
|
||||
`protectIp` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '该处置能力能够处置的IP',
|
||||
`reserveNetflow` int(11) NULL DEFAULT NULL COMMENT '清洗能力储备流量值,单位(G)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
|
@ -68,7 +68,7 @@ CREATE TABLE `dispose_capacity`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dispose_device
|
||||
|
@ -76,7 +76,7 @@ CREATE TABLE `dispose_capacity`
|
|||
DROP TABLE IF EXISTS `dispose_device`;
|
||||
CREATE TABLE `dispose_device`
|
||||
(
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '设备唯一标识符',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '设备唯一标识符',
|
||||
`ipAddr` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '设备IP地址, IPv4/IPv6',
|
||||
`ipPort` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '端口',
|
||||
`deviceType` int(11) NOT NULL DEFAULT 0 COMMENT '能力节点类型,0:迪普UMC平台,1:浩瀚设备',
|
||||
|
@ -97,7 +97,7 @@ CREATE TABLE `dispose_device`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dispose_task
|
||||
|
@ -105,9 +105,9 @@ CREATE TABLE `dispose_device`
|
|||
DROP TABLE IF EXISTS `dispose_task`;
|
||||
CREATE TABLE `dispose_task`
|
||||
(
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '处置任务唯一标识符',
|
||||
`deviceId` int(10) NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`accountId` int(10) UNSIGNED NOT NULL COMMENT '用户唯一标识符',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '处置任务唯一标识符',
|
||||
`deviceId` bigint(11) NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`accountId` bigint(11) NOT NULL COMMENT '用户唯一标识符',
|
||||
`areaCode` int(11) NOT NULL DEFAULT -1 COMMENT '设备物理位置区域码',
|
||||
`disposeCapacity` int(11) NOT NULL COMMENT '处置能力类型:0:清洗 1:高防 2:黑洞 3:检测',
|
||||
`disposeObject` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '处置对象',
|
||||
|
@ -116,8 +116,8 @@ CREATE TABLE `dispose_task`
|
|||
`planEndTime` timestamp(0) NOT NULL DEFAULT '1970-01-02 00:00:00' COMMENT '计划结束时间',
|
||||
`endTime` timestamp(0) NULL DEFAULT '1970-01-02 00:00:00' COMMENT '实际结束时间',
|
||||
`flowDirection` int(11) NOT NULL DEFAULT 2 COMMENT '流量方向, 0:流入;1:流出;2:双向',
|
||||
`attackType` bigint(20) UNSIGNED NOT NULL DEFAULT 18446744073709551615 COMMENT '攻击类型,默认0, 全部攻击',
|
||||
`flowBandWidth` int(10) UNSIGNED NULL DEFAULT 1024 COMMENT '攻击流量占用带宽(MB)',
|
||||
`attackType` bigint(20) NOT NULL DEFAULT 0 COMMENT '攻击类型,默认0, 全部攻击',
|
||||
`flowBandWidth` int(11) UNSIGNED NULL DEFAULT 1024 COMMENT '攻击流量占用带宽(MB)',
|
||||
`currentStatus` int(11) NOT NULL DEFAULT 0 COMMENT '状态,0:停止。1:启动',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `dispose_task_device_capacity_id_fk` (`disposeCapacity`) USING BTREE,
|
||||
|
@ -128,13 +128,31 @@ CREATE TABLE `dispose_task`
|
|||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for service_group
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `service_group`;
|
||||
CREATE TABLE `service_group`
|
||||
(
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '业务ID唯一标识符',
|
||||
`serviceId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务ID',
|
||||
`serviceType` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务类型:SERVER,WEB,DNS,GAME',
|
||||
`serviceBandwidth` int(11) NOT NULL DEFAULT 1 COMMENT '业务带宽,单位M',
|
||||
`serviceIp` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务IP地址,逗号分割',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for user_account
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_account`;
|
||||
CREATE TABLE `user_account`
|
||||
(
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '账户唯一编号',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '账户唯一编号',
|
||||
`username` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
|
||||
`password` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
|
||||
`createTime` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
|
||||
|
@ -143,7 +161,7 @@ CREATE TABLE `user_account`
|
|||
`token` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户token',
|
||||
`lastAccess` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '最后一次访问时间戳',
|
||||
`lockTime` timestamp(0) NOT NULL DEFAULT '1970-01-02 00:00:00' COMMENT '账户锁定时间',
|
||||
`pwdErrTimes` int(10) NOT NULL DEFAULT 0 COMMENT '密码错误次数',
|
||||
`pwdErrTimes` int(11) NOT NULL DEFAULT 0 COMMENT '密码错误次数',
|
||||
`status` int(11) NULL DEFAULT 0 COMMENT '账户状态',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `USERNAME` (`username`) USING BTREE
|
||||
|
@ -151,6 +169,6 @@ CREATE TABLE `user_account`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
|
|
@ -70,6 +70,7 @@
|
|||
LEFT JOIN dispose_capacity c ON d.id = c.deviceId
|
||||
WHERE d.ipAddr = #{ipAddr}
|
||||
AND d.ipPort = #{ipPort}
|
||||
AND d.deviceType = #{devType}
|
||||
</select>
|
||||
|
||||
<select id="getDeviceById" resultMap="dispose_device">
|
||||
|
|
|
@ -139,6 +139,15 @@
|
|||
WHERE currentStatus = ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()}
|
||||
</select>
|
||||
|
||||
<select id="getUnExpiredTasks" resultType="com.dispose.pojo.entity.DisposeTask">
|
||||
SELECT *
|
||||
FROM dispose_task
|
||||
WHERE currentStatus != ${@com.dispose.common.DisposeTaskStatus@TASK_FINISHED.getValue()}
|
||||
AND currentStatus != ${@com.dispose.common.DisposeTaskStatus@TASK_CANCELED.getValue()}
|
||||
AND currentStatus != ${@com.dispose.common.DisposeTaskStatus@TASK_EXPIRED.getValue()}
|
||||
AND planEndTime > CURRENT_TIMESTAMP()
|
||||
</select>
|
||||
|
||||
<select id="getExpiredTasks" resultType="com.dispose.pojo.entity.DisposeTask">
|
||||
SELECT *
|
||||
FROM dispose_task
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.dispose.mapper.ServiceGroupMapper">
|
||||
<resultMap id="service_grp" type="com.dispose.pojo.entity.ServiceInfo">
|
||||
<id column="id" property="id"/>
|
||||
<result column = "serviceId" property="serviceId"/>
|
||||
<result column="serviceType" property="serviceType"/>
|
||||
<result column="serviceBandwidth" property="serviceBandwidth"/>
|
||||
<result column="serviceIp" property="serviceIp"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectAll" resultMap="service_grp">
|
||||
SELECT *
|
||||
FROM service_group
|
||||
</select>
|
||||
|
||||
<select id="selectByServiceId" resultMap="service_grp">
|
||||
SELECT *
|
||||
FROM service_group
|
||||
WHERE serviceId = #{serviceId}
|
||||
</select>
|
||||
|
||||
<insert id="addServiceGroup" useGeneratedKeys="true" keyProperty="id"
|
||||
parameterType="com.dispose.pojo.entity.ServiceInfo">
|
||||
INSERT IGNORE INTO service_group(serviceId, serviceType, serviceBandwidth, serviceIp)
|
||||
VALUES
|
||||
<foreach collection="svrGrps" item="svg" separator=",">
|
||||
(#{svg.serviceId}, #{svg.serviceType}, #{svg.serviceBandwidth}, #{svg.serviceIp})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<delete id="delServiceGroupById">
|
||||
DELETE
|
||||
FROM service_group
|
||||
WHERE service_group.id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="delServiceGroupByServiceId">
|
||||
DELETE
|
||||
FROM service_group
|
||||
WHERE service_group.serviceId = #{serviceId}
|
||||
</delete>
|
||||
|
||||
<!-- <select id="getDeviceDisposeCapacity" resultMap="dispose_capacity">-->
|
||||
<!-- SELECT *-->
|
||||
<!-- FROM dispose_capacity-->
|
||||
<!-- WHERE dispose_capacity.deviceId = #{deviceId}-->
|
||||
<!-- </select>-->
|
||||
</mapper>
|
|
@ -23,9 +23,9 @@ SET FOREIGN_KEY_CHECKS = 0;
|
|||
DROP TABLE IF EXISTS `device_task`;
|
||||
CREATE TABLE `device_task`
|
||||
(
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '任务信息唯一标识符',
|
||||
`taskId` int(11) UNSIGNED NOT NULL COMMENT '处置任务唯一标识符',
|
||||
`deviceId` int(10) UNSIGNED NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '任务信息唯一标识符',
|
||||
`taskId` bigint(11) NOT NULL COMMENT '处置任务唯一标识符',
|
||||
`deviceId` bigint(11) NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`beginTime` timestamp(0) NULL DEFAULT NULL COMMENT '任务开始时间',
|
||||
`endTime` timestamp(0) NULL DEFAULT NULL COMMENT '任务结束时间',
|
||||
`taskAttackType` bigint(255) UNSIGNED NOT NULL DEFAULT 0 COMMENT '需要处置的攻击类型',
|
||||
|
@ -34,9 +34,9 @@ CREATE TABLE `device_task`
|
|||
`execAttackTypeOut` bigint(255) UNSIGNED NOT NULL DEFAULT 0 COMMENT '已经执行处置的攻击类型(Output)',
|
||||
`attackTypeStatusOut` bigint(255) UNSIGNED NOT NULL DEFAULT 0 COMMENT '执行的攻击类型状态(Input)',
|
||||
`externId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '扩展任务ID',
|
||||
`errRetry` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调用失败重试次数',
|
||||
`status` int(10) NOT NULL DEFAULT 0 COMMENT '任务状态',
|
||||
`devStatus` int(10) NOT NULL DEFAULT 0 COMMENT '设备任务状态',
|
||||
`errRetry` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调用失败重试次数',
|
||||
`status` int(11) NOT NULL DEFAULT 0 COMMENT '任务状态',
|
||||
`devStatus` int(11) NOT NULL DEFAULT 0 COMMENT '设备任务状态',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `task_info_ibfk_1` (`taskId`) USING BTREE,
|
||||
INDEX `task_info_ibfk_2` (`deviceId`) USING BTREE,
|
||||
|
@ -46,7 +46,7 @@ CREATE TABLE `device_task`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of device_task
|
||||
|
@ -58,11 +58,11 @@ CREATE TABLE `device_task`
|
|||
DROP TABLE IF EXISTS `dispose_capacity`;
|
||||
CREATE TABLE `dispose_capacity`
|
||||
(
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '设备处置能力唯一标识符',
|
||||
`deviceId` int(11) UNSIGNED NOT NULL COMMENT '设备ID',
|
||||
`capacityType` int(8) NOT NULL COMMENT '处置能力:\r\n0:清洗\r\n1:高防 \r\n2:路由黑洞 \r\n3:检测\r\n4:WAF封堵\r\n',
|
||||
`objectType` int(8) NOT NULL COMMENT '处置对象类型:\r\n0:IP\r\n1:域名 \r\n2:URL',
|
||||
`ipType` int(8) NOT NULL DEFAULT 3 COMMENT 'IP 地址类型:\r\n1 << 0:支持IPV4\r\n1 << 1:支持IPV6',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '设备处置能力唯一标识符',
|
||||
`deviceId` bigint(11) NOT NULL COMMENT '设备ID',
|
||||
`capacityType` int(11) NOT NULL COMMENT '处置能力:\r\n0:清洗\r\n1:高防 \r\n2:路由黑洞 \r\n3:检测\r\n4:WAF封堵\r\n',
|
||||
`objectType` int(11) NOT NULL COMMENT '处置对象类型:\r\n0:IP\r\n1:域名 \r\n2:URL',
|
||||
`ipType` int(11) NOT NULL DEFAULT 3 COMMENT 'IP 地址类型:\r\n1 << 0:支持IPV4\r\n1 << 1:支持IPV6',
|
||||
`protectIp` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '该处置能力能够处置的IP',
|
||||
`reserveNetflow` int(11) NULL DEFAULT NULL COMMENT '清洗能力储备流量值,单位(G)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
|
@ -72,7 +72,7 @@ CREATE TABLE `dispose_capacity`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of dispose_capacity
|
||||
|
@ -99,7 +99,7 @@ VALUES (7, 4, 0, 1, 3, '0.0.0.0', 10);
|
|||
DROP TABLE IF EXISTS `dispose_device`;
|
||||
CREATE TABLE `dispose_device`
|
||||
(
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '设备唯一标识符',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '设备唯一标识符',
|
||||
`ipAddr` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '设备IP地址, IPv4/IPv6',
|
||||
`ipPort` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '端口',
|
||||
`deviceType` int(11) NOT NULL DEFAULT 0 COMMENT '能力节点类型,0:迪普UMC平台,1:浩瀚设备',
|
||||
|
@ -120,7 +120,7 @@ CREATE TABLE `dispose_device`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of dispose_device
|
||||
|
@ -144,9 +144,9 @@ VALUES (4, '127.0.0.1', '1002', 999, 0, '虚拟处置设备', 'Virtual Dispose D
|
|||
DROP TABLE IF EXISTS `dispose_task`;
|
||||
CREATE TABLE `dispose_task`
|
||||
(
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '处置任务唯一标识符',
|
||||
`deviceId` int(10) NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`accountId` int(10) UNSIGNED NOT NULL COMMENT '用户唯一标识符',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '处置任务唯一标识符',
|
||||
`deviceId` bigint(11) NOT NULL COMMENT '处置设备唯一标识符',
|
||||
`accountId` bigint(11) NOT NULL COMMENT '用户唯一标识符',
|
||||
`areaCode` int(11) NOT NULL DEFAULT -1 COMMENT '设备物理位置区域码',
|
||||
`disposeCapacity` int(11) NOT NULL COMMENT '处置能力类型:0:清洗 1:高防 2:黑洞 3:检测',
|
||||
`disposeObject` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '处置对象',
|
||||
|
@ -155,8 +155,8 @@ CREATE TABLE `dispose_task`
|
|||
`planEndTime` timestamp(0) NOT NULL DEFAULT '1970-01-02 00:00:00' COMMENT '计划结束时间',
|
||||
`endTime` timestamp(0) NULL DEFAULT '1970-01-02 00:00:00' COMMENT '实际结束时间',
|
||||
`flowDirection` int(11) NOT NULL DEFAULT 2 COMMENT '流量方向, 0:流入;1:流出;2:双向',
|
||||
`attackType` bigint(20) UNSIGNED NOT NULL DEFAULT 18446744073709551615 COMMENT '攻击类型,默认0, 全部攻击',
|
||||
`flowBandWidth` int(10) UNSIGNED NULL DEFAULT 1024 COMMENT '攻击流量占用带宽(MB)',
|
||||
`attackType` bigint(20) NOT NULL DEFAULT 0 COMMENT '攻击类型,默认0, 全部攻击',
|
||||
`flowBandWidth` int(11) UNSIGNED NULL DEFAULT 1024 COMMENT '攻击流量占用带宽(MB)',
|
||||
`currentStatus` int(11) NOT NULL DEFAULT 0 COMMENT '状态,0:停止。1:启动',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `dispose_task_device_capacity_id_fk` (`disposeCapacity`) USING BTREE,
|
||||
|
@ -179,13 +179,31 @@ VALUES (2, -1, 1, -1, 0, '192.168.10.2', 1, CURRENT_TIMESTAMP, date_add(now(), i
|
|||
8796093022207,
|
||||
1024, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for service_group
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `service_group`;
|
||||
CREATE TABLE `service_group`
|
||||
(
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '业务ID唯一标识符',
|
||||
`serviceId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务ID',
|
||||
`serviceType` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务类型:SERVER,WEB,DNS,GAME',
|
||||
`serviceBandwidth` int(11) NOT NULL DEFAULT 1 COMMENT '业务带宽,单位M',
|
||||
`serviceIp` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务IP地址,逗号分割',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for user_account
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_account`;
|
||||
CREATE TABLE `user_account`
|
||||
(
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '账户唯一编号',
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '账户唯一编号',
|
||||
`username` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
|
||||
`password` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
|
||||
`createTime` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
|
||||
|
@ -194,7 +212,7 @@ CREATE TABLE `user_account`
|
|||
`token` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户token',
|
||||
`lastAccess` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '最后一次访问时间戳',
|
||||
`lockTime` timestamp(0) NOT NULL DEFAULT '1970-01-02 00:00:00' COMMENT '账户锁定时间',
|
||||
`pwdErrTimes` int(10) NOT NULL DEFAULT 0 COMMENT '密码错误次数',
|
||||
`pwdErrTimes` int(11) NOT NULL DEFAULT 0 COMMENT '密码错误次数',
|
||||
`status` int(11) NULL DEFAULT 0 COMMENT '账户状态',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `USERNAME` (`username`) USING BTREE
|
||||
|
@ -202,8 +220,7 @@ CREATE TABLE `user_account`
|
|||
AUTO_INCREMENT = 1
|
||||
CHARACTER SET = utf8
|
||||
COLLATE = utf8_general_ci
|
||||
ROW_FORMAT = Dynamic;
|
||||
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
-- ----------------------------
|
||||
-- Records of user_account
|
||||
-- ----------------------------
|
||||
|
|
|
@ -26,7 +26,7 @@ import java.util.Optional;
|
|||
@Data
|
||||
@Slf4j
|
||||
@EnableEncryptableProperties
|
||||
@ActiveProfiles({"test", "dispose"})
|
||||
@ActiveProfiles({"test", "dispose", "template"})
|
||||
public class CommonEnvironment {
|
||||
|
||||
/**
|
||||
|
|
|
@ -26,7 +26,7 @@ import javax.annotation.Resource;
|
|||
@Slf4j
|
||||
@Getter
|
||||
@EnableEncryptableProperties
|
||||
@ActiveProfiles({"test", "dispose"})
|
||||
@ActiveProfiles({"test", "dispose", "template"})
|
||||
public class InitTestEnvironment {
|
||||
/**
|
||||
* The constant HTTP_CONNECT_TIMEOUT.
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
package com.dispose.test.dev.config;
|
||||
|
||||
import com.dispose.common.Helper;
|
||||
import com.dispose.config.TemplateConfigure;
|
||||
import com.dispose.service.impl.TemplateServiceImpl;
|
||||
import com.dispose.test.dev.Global.InitTestEnvironment;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* The type Template configure test.
|
||||
*
|
||||
* @author <huangxin@cmhi.chinamoblie.com>
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
@Slf4j
|
||||
public class TemplateConfigureTest extends InitTestEnvironment {
|
||||
/**
|
||||
* The Template configure.
|
||||
*/
|
||||
@Resource
|
||||
TemplateConfigure templateConfigure;
|
||||
|
||||
/**
|
||||
* The Template service.
|
||||
*/
|
||||
@Resource
|
||||
TemplateServiceImpl templateService;
|
||||
|
||||
/**
|
||||
* Template loads test.
|
||||
*/
|
||||
@Test
|
||||
public void templateLoadsTest() {
|
||||
log.info("Load template: {}", templateConfigure.getUmcTemplate());
|
||||
Assert.assertEquals(9, templateConfigure.getUmcTemplate().size());
|
||||
}
|
||||
|
||||
/**
|
||||
* Template get test.
|
||||
*/
|
||||
@Test
|
||||
public void templateGetTest() {
|
||||
for (String v : new String[]{"DNS", "GAME", "WEB", "GENERAL"}) {
|
||||
for (Long k : new Long[]{0L, 200L, 500L, 800L, 1500L, 1600L}) {
|
||||
log.info("[{}, {}] with template: {}", v, k,
|
||||
Helper.getDpTemplate(v, k));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,138 @@
|
|||
package com.dispose.test.dev.controller;
|
||||
|
||||
import com.dispose.common.ConstValue;
|
||||
import com.dispose.common.ErrorCode;
|
||||
import com.dispose.common.ProtoCryptoType;
|
||||
import com.dispose.mapper.ServiceGroupMapper;
|
||||
import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO;
|
||||
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
|
||||
import com.dispose.pojo.dto.protocol.device.business.AddUserSvrReq;
|
||||
import com.dispose.pojo.dto.protocol.device.business.AddUserSvrRsp;
|
||||
import com.dispose.pojo.dto.protocol.device.business.UserSvrInfo;
|
||||
import com.dispose.service.UserBusinessManagerService;
|
||||
import com.dispose.test.dev.Global.InitTestEnvironment;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import jodd.net.HttpStatus;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Assert;
|
||||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.MethodSorters;
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
@AutoConfigureMockMvc
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@Transactional
|
||||
@Rollback
|
||||
@Slf4j
|
||||
public class UserBusinessControllerTest extends InitTestEnvironment {
|
||||
/**
|
||||
* The Mock mvc.
|
||||
*/
|
||||
@Resource
|
||||
private MockMvc mockMvc;
|
||||
/**
|
||||
* The Object mapper.
|
||||
*/
|
||||
@Resource
|
||||
private ObjectMapper objectMapper;
|
||||
/**
|
||||
* The User business manager service.
|
||||
*/
|
||||
@Resource
|
||||
private UserBusinessManagerService userBusinessManagerService;
|
||||
|
||||
/**
|
||||
* The service group mapper.
|
||||
*/
|
||||
@Resource
|
||||
private ServiceGroupMapper serviceGroupMapper;
|
||||
/**
|
||||
* A 1 add user business test.
|
||||
*
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
@Test
|
||||
public void a1_addUserBusinessTest() throws Exception{
|
||||
List<UserSvrInfo> newList = new ArrayList<>();
|
||||
newList.add(UserSvrInfo.builder()
|
||||
.businessId("controller1")
|
||||
.businessType("GAME")
|
||||
.businessIp("192.168.1.1")
|
||||
.businessBandwidth("50")
|
||||
.build());
|
||||
newList.add(UserSvrInfo.builder()
|
||||
.businessId("controller2")
|
||||
.businessType("GAME")
|
||||
.businessIp("192.168.1.2")
|
||||
.businessBandwidth("150")
|
||||
.build());
|
||||
|
||||
AddUserSvrReq req = AddUserSvrReq.builder()
|
||||
.items(newList)
|
||||
.build();
|
||||
|
||||
ProtocolReqDTO<AddUserSvrReq> reqInfo = new ProtocolReqDTO<>();
|
||||
reqInfo.setVer(ConstValue.Protocol.VERSION);
|
||||
reqInfo.setCryptoType(ProtoCryptoType.CRYPTO_NONE.getCode());
|
||||
reqInfo.setTimeStamp(System.currentTimeMillis());
|
||||
reqInfo.setMsgContent(req);
|
||||
log.info("reqIfo: {}",reqInfo);
|
||||
|
||||
String ret = mockMvc.perform(MockMvcRequestBuilders
|
||||
.put("/business/manage")
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.header("Authorization", ConstValue.STRING_HTTP_AUTH_HEAD + getLoginToken())
|
||||
.content(objectMapper.writeValueAsString(reqInfo)))
|
||||
.andDo(print()).andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.code").value(HttpStatus.ok().status()))
|
||||
.andReturn()
|
||||
.getResponse()
|
||||
.getContentAsString();
|
||||
|
||||
ProtocolRespDTO<AddUserSvrRsp> rspInfo = objectMapper.readValue(ret,
|
||||
new TypeReference<ProtocolRespDTO<AddUserSvrRsp>>() {
|
||||
});
|
||||
|
||||
verifyRespProtocol(rspInfo);
|
||||
log.debug(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rspInfo));
|
||||
|
||||
Assert.assertNotNull(rspInfo.getMsgContent().getItems());
|
||||
|
||||
rspInfo.getMsgContent().getItems().forEach(k -> {
|
||||
Assert.assertNotNull(k.getStatus());
|
||||
if (k.getStatus() == ErrorCode.ERR_OK.getCode()) {
|
||||
Assert.assertNotNull(k.getMessage());
|
||||
Assert.assertNotNull(k.getBusinessId());
|
||||
Assert.assertTrue(serviceGroupMapper.selectAll().stream().anyMatch(v ->
|
||||
k.getBusinessId().equals(v.getServiceId())
|
||||
));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -26,7 +26,9 @@ import java.lang.reflect.Modifier;
|
|||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Hashtable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
|
@ -607,4 +609,61 @@ public class demo {
|
|||
@Test
|
||||
public void codeDebug() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Dp ip segment test.
|
||||
*/
|
||||
@Test
|
||||
public void dpIpSegmentTest() {
|
||||
String ipSegmentString = "1_192.168.10.1-192.168.10.12,2_192.168.1.2-192.168.1.20,3_-";
|
||||
|
||||
Arrays.stream(ipSegmentString.split(",")).forEach(
|
||||
k -> {
|
||||
String value = k.replaceAll("\\d+_", "");
|
||||
String key = k.replace(value, "").replace("_", "");
|
||||
|
||||
if (Pattern.matches(ConstValue.ipAddrSegmentReg(), value)) {
|
||||
log.info("Result: {}, {}", key, value);
|
||||
} else {
|
||||
log.error("Result: {}, {} error", key, value);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* List to string with char test.
|
||||
*/
|
||||
@Test
|
||||
public void listToStringWithCharTest() {
|
||||
List<String> demoList = new ArrayList<>();
|
||||
List<String> demoList2 = new ArrayList<>();
|
||||
Hashtable<String, String> tmpTable = new Hashtable<>();
|
||||
Hashtable<String, String> tmpTable2 = new Hashtable<>();
|
||||
|
||||
demoList.add("192.168.0.1");
|
||||
demoList.add("192.168.0.2");
|
||||
demoList.add("192.168.0.24/24");
|
||||
|
||||
demoList2.add("192.168.0.2");
|
||||
demoList2.add("192.168.0.1");
|
||||
demoList2.add("192.168.0.24/24");
|
||||
//demoList2.add("192.168.0.24/23");
|
||||
|
||||
tmpTable.put("1", "192.168.0.1");
|
||||
tmpTable.put("2", "192.168.0.2");
|
||||
tmpTable.put("3", "192.168.0.3");
|
||||
|
||||
tmpTable2.put("2", "192.168.0.2");
|
||||
tmpTable2.put("1", "192.168.0.1");
|
||||
tmpTable2.put("3", "192.168.0.3");
|
||||
|
||||
log.info("Result demoList: {}", String.join(",", demoList));
|
||||
log.info("Result demoList: {}", String.join(",", demoList2));
|
||||
|
||||
log.info("demoList difference demoList2: {}", demoList2.containsAll(demoList));
|
||||
log.info("demoList2 difference demoList1: {}", demoList.containsAll(demoList2));
|
||||
log.info("demoList2 difference demoList1: {}", demoList.equals(demoList2));
|
||||
log.info("tmpTable difference tmpTable: {}", tmpTable.equals(tmpTable2));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -200,7 +200,8 @@ public class DisposeDeviceManagerTest extends InitTestEnvironment {
|
|||
) {
|
||||
MulReturnType<ErrorCode, ObjectStatus> ret = disposeDeviceManager.changeDisposeDeviceStatus(v.getId(), obj);
|
||||
|
||||
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort());
|
||||
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort(),
|
||||
v.getDeviceType().getValue());
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
Assert.assertNotNull(dev);
|
||||
|
|
|
@ -114,7 +114,8 @@ public class DisposeDeviceMapperTest extends InitTestEnvironment {
|
|||
|
||||
devList.forEach(v -> {
|
||||
if(v.getIpPort().length() != 0){
|
||||
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort());
|
||||
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort(),
|
||||
v.getDeviceType().getValue());
|
||||
|
||||
String beforeVer = dev.getVersion();
|
||||
if (dev.getVersion().equals("B5.2.27.7")) {
|
||||
|
@ -164,12 +165,14 @@ public class DisposeDeviceMapperTest extends InitTestEnvironment {
|
|||
List<DisposeDevice> devList = disposeDeviceMapper.selectAll();
|
||||
|
||||
devList.forEach(v -> {
|
||||
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort());
|
||||
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort(),
|
||||
v.getDeviceType().getValue());
|
||||
Assert.assertNotNull(dev);
|
||||
|
||||
if(v.getIpPort().length() != 0){
|
||||
dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(),
|
||||
String.valueOf(Long.parseLong(Optional.ofNullable(v.getIpPort()).orElse("123")) + 1233));
|
||||
String.valueOf(Long.parseLong(Optional.ofNullable(v.getIpPort()).orElse("123")) + 1233),
|
||||
v.getDeviceType().getValue());
|
||||
|
||||
Assert.assertNull(dev);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,157 @@
|
|||
package com.dispose.test.dev.mapper;
|
||||
|
||||
import com.dispose.mapper.ServiceGroupMapper;
|
||||
import com.dispose.pojo.entity.ServiceInfo;
|
||||
import com.dispose.test.dev.Global.InitTestEnvironment;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
@Slf4j
|
||||
//@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
//@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
|
||||
//@Transactional
|
||||
//@Rollback
|
||||
public class ServiceGroupMapperTest extends InitTestEnvironment {
|
||||
/**
|
||||
* The service group mapper.
|
||||
*/
|
||||
@Resource
|
||||
private ServiceGroupMapper serviceGroupMapper;
|
||||
/**
|
||||
* The Object mapper.
|
||||
*/
|
||||
@Resource
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
/**
|
||||
* A 1 select all.
|
||||
*
|
||||
* @throws JsonProcessingException the json processing exception
|
||||
*/
|
||||
@Test
|
||||
public void a1_selectAllTest() throws JsonProcessingException{
|
||||
List<ServiceInfo> serviceList = serviceGroupMapper.selectAll();
|
||||
//Assert.assertNotNull(serviceList);
|
||||
//Assert.assertNotEquals(serviceList.size(), 0);
|
||||
log.info("Database: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(serviceList));
|
||||
}
|
||||
|
||||
/**
|
||||
* A 2 add new service group.
|
||||
*
|
||||
* @throws JsonProcessingException the json processing exception
|
||||
*/
|
||||
@Test
|
||||
public void a2_addServiceGroup() throws JsonProcessingException{
|
||||
List<ServiceInfo> service = new ArrayList<>();
|
||||
service.add(ServiceInfo.builder()
|
||||
.serviceId("100")
|
||||
.serviceType("GAME")
|
||||
.serviceBandwidth(1000L)
|
||||
.serviceIp("192.168.100.1-192.168.100.10,192.168.100.20-192.168.100.21")
|
||||
.build());
|
||||
service.add(ServiceInfo.builder()
|
||||
.serviceId("101")
|
||||
.serviceType("DNS")
|
||||
.serviceBandwidth(2000L)
|
||||
.serviceIp("192.168.101.1-192.168.101.10")
|
||||
.build());
|
||||
|
||||
int num = serviceGroupMapper.addServiceGroup(service);
|
||||
Assert.assertEquals(num, service.size());
|
||||
log.info("add num {}: {}", num, objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(service));
|
||||
|
||||
List<ServiceInfo> serviceList = serviceGroupMapper.selectAll();
|
||||
Assert.assertNotNull(serviceList);
|
||||
Assert.assertNotEquals(serviceList.size(), 0);
|
||||
|
||||
log.info("Database: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(serviceList));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* A 3 delete service group by id.
|
||||
*/
|
||||
@Test
|
||||
public void a3_delServiceGroupByIdTest(){
|
||||
List<ServiceInfo> service = new ArrayList<>();
|
||||
service.add(ServiceInfo.builder()
|
||||
.serviceId("102")
|
||||
.serviceType("GAME")
|
||||
.serviceBandwidth(1000L)
|
||||
.serviceIp("192.168.102.1-192.168.102.10,192.168.102.20-192.168.102.21")
|
||||
.build());
|
||||
service.add(ServiceInfo.builder()
|
||||
.serviceId("103")
|
||||
.serviceType("DNS")
|
||||
.serviceBandwidth(2000L)
|
||||
.serviceIp("192.168.103.1-192.168.103.10")
|
||||
.build());
|
||||
serviceGroupMapper.addServiceGroup(service);
|
||||
|
||||
log.info("service number: {}", serviceGroupMapper.selectAll().size());
|
||||
serviceGroupMapper.selectAll().forEach(v -> {
|
||||
int ret = serviceGroupMapper.delServiceGroupById(v.getId());
|
||||
|
||||
try {
|
||||
log.info("service info: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(v));
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Assert.assertEquals(1,ret);
|
||||
});
|
||||
log.info("service after delete operate: {}", serviceGroupMapper.selectAll());
|
||||
Assert.assertEquals(0,serviceGroupMapper.selectAll().size());
|
||||
}
|
||||
|
||||
/**
|
||||
* A 4 delete service group by service id.
|
||||
*/
|
||||
@Test
|
||||
public void a4_delServiceGroupByServiceIdTest(){
|
||||
List<ServiceInfo> service = new ArrayList<>();
|
||||
service.add(ServiceInfo.builder()
|
||||
.serviceId("104")
|
||||
.serviceType("GAME")
|
||||
.serviceBandwidth(1000L)
|
||||
.serviceIp("192.168.104.1-192.168.104.10,192.168.104.20-192.168.104.21")
|
||||
.build());
|
||||
service.add(ServiceInfo.builder()
|
||||
.serviceId("105")
|
||||
.serviceType("DNS")
|
||||
.serviceBandwidth(2000L)
|
||||
.serviceIp("192.168.105.1-192.168.105.10")
|
||||
.build());
|
||||
serviceGroupMapper.addServiceGroup(service);
|
||||
|
||||
log.info("service number: {}", serviceGroupMapper.selectAll().size());
|
||||
serviceGroupMapper.selectAll().forEach(v -> {
|
||||
int ret = serviceGroupMapper.delServiceGroupByServiceId(v.getServiceId());
|
||||
|
||||
try {
|
||||
log.info("service info: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(v));
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Assert.assertEquals(1,ret);
|
||||
});
|
||||
log.info("service after delete operate: {}", serviceGroupMapper.selectAll());
|
||||
Assert.assertEquals(0,serviceGroupMapper.selectAll().size());
|
||||
}
|
||||
|
||||
}
|
|
@ -149,7 +149,8 @@ public class DisposeAbilityRouterServiceTest extends InitTestEnvironment {
|
|||
e.printStackTrace();
|
||||
}
|
||||
|
||||
AbilityInfo abilityInfo = disposeAbilityRouterService.getAbilityDevice(v.getIpAddr(), v.getIpPort());
|
||||
AbilityInfo abilityInfo = disposeAbilityRouterService.getAbilityDevice(v.getIpAddr(), v.getIpPort(),
|
||||
String.valueOf(v.getDeviceType()));
|
||||
|
||||
Assert.assertNotNull(abilityInfo);
|
||||
|
||||
|
@ -251,7 +252,8 @@ public class DisposeAbilityRouterServiceTest extends InitTestEnvironment {
|
|||
log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(deviceList));
|
||||
|
||||
deviceList.forEach(v -> {
|
||||
AbilityInfo abilityInfo = disposeAbilityRouterService.getAbilityDevice(v.getIpAddr(), v.getIpPort());
|
||||
AbilityInfo abilityInfo = disposeAbilityRouterService.getAbilityDevice(v.getIpAddr(), v.getIpPort(),
|
||||
String.valueOf(v.getDeviceType()));
|
||||
|
||||
Assert.assertNotNull(abilityInfo);
|
||||
Assert.assertNotNull(abilityInfo.getDev());
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
package com.dispose.test.dev.service;
|
||||
|
||||
import com.dispose.service.TemplateService;
|
||||
import com.dispose.test.dev.Global.InitTestEnvironment;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Assert;
|
||||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.MethodSorters;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
@Slf4j
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
|
||||
@Transactional
|
||||
@Rollback
|
||||
public class TemplateServiceTest extends InitTestEnvironment {
|
||||
|
||||
@Resource
|
||||
private TemplateService templateService;
|
||||
|
||||
@Test
|
||||
public void getTemplateTest() {
|
||||
|
||||
Assert.assertEquals("Game_Server_10G", templateService.getTemplate("GAME",1600L));
|
||||
Assert.assertEquals("Game_Server_1G", templateService.getTemplate("GAME",1500L));
|
||||
Assert.assertEquals("Game_Server_1G", templateService.getTemplate("GAME", 100L));
|
||||
Assert.assertEquals("Game_Server_1G", templateService.getTemplate("GAME", 1L));
|
||||
Assert.assertEquals("Game_Server_1G", templateService.getTemplate("GAME", 0L));
|
||||
Assert.assertNull(templateService.getTemplate("GAME",-1L));
|
||||
|
||||
Assert.assertEquals("DNS_Server_10G", templateService.getTemplate("DNS",1600L));
|
||||
Assert.assertEquals("DNS_Server_1G", templateService.getTemplate("DNS",1500L));
|
||||
Assert.assertEquals("DNS_Server_1G", templateService.getTemplate("DNS",1L));
|
||||
Assert.assertEquals("DNS_Server_1G", templateService.getTemplate("DNS",0L));
|
||||
Assert.assertNull(templateService.getTemplate("DNS",-1L));
|
||||
|
||||
Assert.assertEquals("WEB_Server_10G", templateService.getTemplate("WEB",1600L));
|
||||
Assert.assertEquals("WEB_Server_1G", templateService.getTemplate("WEB",1500L));
|
||||
Assert.assertEquals("WEB_Server_1G", templateService.getTemplate("WEB",1L));
|
||||
Assert.assertEquals("WEB_Server_1G", templateService.getTemplate("WEB",0L));
|
||||
Assert.assertNull(templateService.getTemplate("WEB",-1L));
|
||||
|
||||
Assert.assertEquals("General_Server_10G", templateService.getTemplate("GENERAL",1600L));
|
||||
Assert.assertEquals("General_Server_1G", templateService.getTemplate("GENERAL",1500L));
|
||||
Assert.assertEquals("General_Server_100M", templateService.getTemplate("GENERAL",500L));
|
||||
Assert.assertEquals("General_Server_100M", templateService.getTemplate("GENERAL",1L));
|
||||
Assert.assertEquals("General_Server_100M", templateService.getTemplate("GENERAL",0L));
|
||||
Assert.assertNull(templateService.getTemplate("GENERAL",-1L));
|
||||
|
||||
Assert.assertNull(templateService.getTemplate("ALL",100L));
|
||||
}
|
||||
}
|
|
@ -196,7 +196,8 @@ public class P1All {
|
|||
Assert.assertNotNull(k.getDevStatus());
|
||||
});
|
||||
|
||||
DisposeDevice dev = c.getDisposeDeviceMapper().getDeviceByAddress("127.0.0.1", "");
|
||||
DisposeDevice dev = c.getDisposeDeviceMapper().getDeviceByAddress("127.0.0.1", "",
|
||||
DisposeDeviceType.VIRTUAL_DISPOSE.getValue());
|
||||
|
||||
Assert.assertNotNull(dev);
|
||||
|
||||
|
|
|
@ -363,7 +363,7 @@ public class P2DeviceAdd {
|
|||
.method(RequestMethod.PUT)
|
||||
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1599094454403," +
|
||||
"\"msgContent\":{\"items\":[{\"ipAddr\":\"127.0.0.1\",\"ipPort\":\"\"," +
|
||||
"\"deviceType\":0,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"deviceType\":999,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"manufacturer\":\"DPTech\",\"model\":\"UMC\",\"version\":\"5.7.13\"," +
|
||||
"\"userName\":\"test\",\"password\":\"testpassword\"," +
|
||||
"\"urlPath\":\"UMC/service/AbnormalFlowCleaningService\",\"urlType\":0," +
|
||||
|
@ -797,7 +797,8 @@ public class P2DeviceAdd {
|
|||
Assert.assertNotNull(k.getDevId());
|
||||
});
|
||||
|
||||
DisposeDevice dev = c.getDisposeDeviceMapper().getDeviceByAddress("10.88.77.15", "");
|
||||
DisposeDevice dev = c.getDisposeDeviceMapper().getDeviceByAddress("10.88.77.15", "", DisposeDeviceType.DPTECH_UMC
|
||||
.getValue());
|
||||
Assert.assertNotNull(dev);
|
||||
|
||||
Assert.assertEquals(dev.getDeviceType(), DisposeDeviceType.DPTECH_UMC);
|
||||
|
|
|
@ -37,7 +37,7 @@ public class P2DeviceUpgrade {
|
|||
.method(RequestMethod.POST)
|
||||
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1599094454403," +
|
||||
"\"msgContent\":{\"items\":[{\"ipAddr\":\"127.0.0.1\",\"ipPort\":\"\"," +
|
||||
"\"deviceType\":0,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"deviceType\":999,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"manufacturer\":\"DPTech\",\"model\":\"UMC\",\"version\":\"5.7.13\"," +
|
||||
"\"userName\":\"admin\",\"password\":\"testpassword\"," +
|
||||
"\"urlPath\":\"UMC/service/AbnormalFlowCleaningService\",\"urlType\":0," +
|
||||
|
@ -48,7 +48,7 @@ public class P2DeviceUpgrade {
|
|||
.rspCode(ErrorCode.ERR_OK)
|
||||
.autoLogin(true)
|
||||
.verifyCallback((VerifyProtoRespCallback<CommDeviceListRsp>) (v, e, c) -> {
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.DPTECH_UMC, new HashMap<>());
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.VIRTUAL_DISPOSE, new HashMap<>());
|
||||
Assert.assertEquals(dev.getDevCapacity().size(), 2);
|
||||
|
||||
dev.getDevCapacity().forEach(k -> {
|
||||
|
@ -73,7 +73,7 @@ public class P2DeviceUpgrade {
|
|||
.method(RequestMethod.POST)
|
||||
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1599094454403," +
|
||||
"\"msgContent\":{\"items\":[{\"ipAddr\":\"127.0.0.1\",\"ipPort\":\"\"," +
|
||||
"\"deviceType\":0,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"deviceType\":999,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"manufacturer\":\"DPTech\",\"model\":\"UMC\",\"version\":\"5.7.13\"," +
|
||||
"\"userName\":\"admin\",\"password\":\"testpassword\"," +
|
||||
"\"urlPath\":\"UMC/service/AbnormalFlowCleaningService\",\"urlType\":0," +
|
||||
|
@ -84,7 +84,7 @@ public class P2DeviceUpgrade {
|
|||
.rspCode(ErrorCode.ERR_OK)
|
||||
.autoLogin(true)
|
||||
.verifyCallback((VerifyProtoRespCallback<CommDeviceListRsp>) (v, e, c) -> {
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.DPTECH_UMC, new HashMap<>());
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.VIRTUAL_DISPOSE, new HashMap<>());
|
||||
Assert.assertEquals(dev.getDevCapacity().size(), 2);
|
||||
|
||||
dev.getDevCapacity().forEach(k -> {
|
||||
|
@ -109,7 +109,7 @@ public class P2DeviceUpgrade {
|
|||
.method(RequestMethod.POST)
|
||||
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1599094454403," +
|
||||
"\"msgContent\":{\"items\":[{\"ipAddr\":\"127.0.0.1\",\"ipPort\":\"\"," +
|
||||
"\"deviceType\":0,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"deviceType\":999,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"manufacturer\":\"DPTech\",\"model\":\"UMC\",\"version\":\"5.7.13\"," +
|
||||
"\"userName\":\"admin\",\"password\":\"testpassword\"," +
|
||||
"\"urlPath\":\"UMC/service/AbnormalFlowCleaningService\",\"urlType\":0," +
|
||||
|
@ -119,7 +119,7 @@ public class P2DeviceUpgrade {
|
|||
.rspCode(ErrorCode.ERR_OK)
|
||||
.autoLogin(true)
|
||||
.verifyCallback((VerifyProtoRespCallback<CommDeviceListRsp>) (v, e, c) -> {
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.DPTECH_UMC, new HashMap<>());
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.VIRTUAL_DISPOSE, new HashMap<>());
|
||||
Assert.assertEquals(dev.getDevCapacity().size(), 1);
|
||||
|
||||
dev.getDevCapacity().forEach(k -> {
|
||||
|
@ -141,7 +141,7 @@ public class P2DeviceUpgrade {
|
|||
.method(RequestMethod.POST)
|
||||
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1599094454403," +
|
||||
"\"msgContent\":{\"items\":[{\"ipAddr\":\"127.0.0.1\",\"ipPort\":\"\"," +
|
||||
"\"deviceType\":0,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"deviceType\":999,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"manufacturer\":\"DPTech\",\"model\":\"UMC\",\"version\":\"5.7.13\"," +
|
||||
"\"userName\":\"admin\",\"password\":\"testpassword\"," +
|
||||
"\"urlPath\":\"UMC/service/AbnormalFlowCleaningService\",\"urlType\":0," +
|
||||
|
@ -152,7 +152,7 @@ public class P2DeviceUpgrade {
|
|||
.rspCode(ErrorCode.ERR_OK)
|
||||
.autoLogin(true)
|
||||
.verifyCallback((VerifyProtoRespCallback<CommDeviceListRsp>) (v, e, c) -> {
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.DPTECH_UMC, new HashMap<>());
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.VIRTUAL_DISPOSE, new HashMap<>());
|
||||
Assert.assertEquals(dev.getDevCapacity().size(), 1);
|
||||
|
||||
dev.getDevCapacity().forEach(k -> {
|
||||
|
@ -267,7 +267,7 @@ public class P2DeviceUpgrade {
|
|||
.method(RequestMethod.POST)
|
||||
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1599094454403," +
|
||||
"\"msgContent\":{\"items\":[{\"ipAddr\":\"127.0.0.1\",\"ipPort\":\"\"," +
|
||||
"\"deviceType\":0,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"deviceType\":999,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||
"\"manufacturer\":\"DPTech\",\"model\":\"UMC\",\"version\":\"5.7.13\"," +
|
||||
"\"userName\":\"admin\",\"password\":\"testpassword\"," +
|
||||
"\"urlPath\":\"UMC/service/AbnormalFlowCleaningService\",\"urlType\":0," +
|
||||
|
@ -278,7 +278,7 @@ public class P2DeviceUpgrade {
|
|||
.rspCode(ErrorCode.ERR_OK)
|
||||
.autoLogin(true)
|
||||
.verifyCallback((VerifyProtoRespCallback<CommDeviceListRsp>) (v, e, c) -> {
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.DPTECH_UMC,
|
||||
DisposeDevice dev = verifyDpTechDeviceAddResp(v, e, c, DisposeDeviceType.VIRTUAL_DISPOSE,
|
||||
new HashMap<>());
|
||||
Assert.assertEquals(dev.getDevCapacity().size(), 2);
|
||||
|
||||
|
@ -985,23 +985,24 @@ public class P2DeviceUpgrade {
|
|||
Assert.assertNotNull(k.getDevStatus());
|
||||
});
|
||||
|
||||
DisposeDevice dev = c.getDisposeDeviceMapper().getDeviceByAddress("127.0.0.1", "");
|
||||
DisposeDevice dev = c.getDisposeDeviceMapper().getDeviceByAddress("127.0.0.1", "", DisposeDeviceType.VIRTUAL_DISPOSE
|
||||
.getValue());
|
||||
Assert.assertNotNull(dev);
|
||||
|
||||
if (deviceType == DisposeDeviceType.DPTECH_UMC) {
|
||||
//Assert.assertEquals(dev.getUserName(), fixItems.getOrDefault("userName", "admin"));
|
||||
Assert.assertEquals(dev.getDeviceType(), DisposeDeviceType.DPTECH_UMC);
|
||||
Assert.assertEquals(dev.getManufacturer(), "DPTech");
|
||||
//Assert.assertEquals(dev.getManufacturer(), "DPTech");
|
||||
Assert.assertEquals(dev.getVersion(), fixItems.getOrDefault("version", "5.7.13"));
|
||||
Assert.assertEquals(dev.getDeviceName(), fixItems.getOrDefault("deviceName", "中移杭研实验室迪普清洗设备"));
|
||||
//Assert.assertEquals(dev.getDeviceName(), fixItems.getOrDefault("deviceName", "中移杭研实验室迪普清洗设备"));
|
||||
//Assert.assertEquals(dev.getUrlPath(), fixItems.getOrDefault("urlPath", "UMC/service" +
|
||||
// "/AbnormalFlowCleaningService"));
|
||||
} else if (deviceType == DisposeDeviceType.VIRTUAL_DISPOSE) {
|
||||
//Assert.assertEquals(dev.getUserName(), fixItems.getOrDefault("userName", "test"));
|
||||
Assert.assertEquals(dev.getDeviceType(), DisposeDeviceType.VIRTUAL_DISPOSE);
|
||||
Assert.assertEquals(dev.getManufacturer(), "Virtual");
|
||||
//Assert.assertEquals(dev.getManufacturer(), "Virtual");
|
||||
Assert.assertEquals(dev.getVersion(), fixItems.getOrDefault("version", "5.7.13"));
|
||||
Assert.assertEquals(dev.getDeviceName(), fixItems.getOrDefault("deviceName", "中移杭研实验室虚拟清洗设备"));
|
||||
//Assert.assertEquals(dev.getDeviceName(), fixItems.getOrDefault("deviceName", "中移杭研实验室虚拟清洗设备"));
|
||||
//Assert.assertEquals(dev.getUrlPath(), fixItems.getOrDefault("urlPath", "UMC/service/"));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue