parent
8d5191e609
commit
23c0b35c4a
|
@ -0,0 +1,519 @@
|
||||||
|
package com.dispose.ability.impl;
|
||||||
|
|
||||||
|
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;
|
||||||
|
import com.pengxin.dispose.common.PengXinStartTaskItem;
|
||||||
|
import com.pengxin.dispose.common.PengXinStartTaskRsp;
|
||||||
|
import com.pengxin.dispose.common.PengXinStopTaskRsp;
|
||||||
|
import com.pengxin.dispose.common.PengXinTaskStatusRsp;
|
||||||
|
import com.pengxin.dispose.protocol.PengXinInterface;
|
||||||
|
import inet.ipaddr.IPAddress;
|
||||||
|
import inet.ipaddr.IPAddressString;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang.RandomStringUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type upf ability.
|
||||||
|
* @author Nicole
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class UpfAbilityImpl extends PengXinAbilityImpl {
|
||||||
|
/**
|
||||||
|
* The Protect ip v 4.
|
||||||
|
*/
|
||||||
|
private final List<String> protectIpV4 = new ArrayList<>();
|
||||||
|
/**
|
||||||
|
* The Protect ip v 6.
|
||||||
|
*/
|
||||||
|
private final List<String> protectIpV6 = new ArrayList<>();
|
||||||
|
/**
|
||||||
|
* The Restful interface.
|
||||||
|
*/
|
||||||
|
private final PengXinInterface restfulInterface = new PengXinInterface();
|
||||||
|
/**
|
||||||
|
* The upf dispose type.
|
||||||
|
*/
|
||||||
|
private final Integer[] upfDisposeType = new Integer[]{0, 4, 1, 3};
|
||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private String urlRootPath;
|
||||||
|
/**
|
||||||
|
* The Username.
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private String username;
|
||||||
|
/**
|
||||||
|
* The Password.
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private String password;
|
||||||
|
/**
|
||||||
|
* The Token.
|
||||||
|
*/
|
||||||
|
private String token;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets upf task type.
|
||||||
|
*
|
||||||
|
* @param capType the cap type
|
||||||
|
* @return the upf task type
|
||||||
|
*/
|
||||||
|
private int getUpfTaskType(DisposeCapacityType capType) {
|
||||||
|
return upfDisposeType[capType.getValue()];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets upf object type.
|
||||||
|
*
|
||||||
|
* @param objType the obj type
|
||||||
|
* @return the upf object type
|
||||||
|
*/
|
||||||
|
private int getUpfObjectType(DisposeObjectType objType) {
|
||||||
|
switch (objType) {
|
||||||
|
case URL:
|
||||||
|
return 2;
|
||||||
|
case DOMAIN:
|
||||||
|
return 1;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init device env.
|
||||||
|
*
|
||||||
|
* @param urlPath the url path
|
||||||
|
* @param username the username
|
||||||
|
* @param password the password
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void initDeviceEnv(String urlPath, String username, String password) {
|
||||||
|
this.urlRootPath = urlPath;
|
||||||
|
this.username = username;
|
||||||
|
this.password = password;
|
||||||
|
restfulInterface.setParams(1, 0);
|
||||||
|
//获取token值
|
||||||
|
upgradeToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run dispose mul return type.
|
||||||
|
*
|
||||||
|
* @param disposeObject the dispose object
|
||||||
|
* @param objectType the object type
|
||||||
|
* @param capType the cap type
|
||||||
|
* @param nfDirection the nf direction
|
||||||
|
* @param attackType the attack type
|
||||||
|
* @param duration the duration
|
||||||
|
* @return the mul return type
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public MulReturnType<ErrorCode, String> runDispose(String disposeObject, DisposeObjectType objectType,
|
||||||
|
DisposeCapacityType capType,
|
||||||
|
@Nullable NetflowDirection nfDirection,
|
||||||
|
@Nullable Integer attackType,
|
||||||
|
@Nullable Long duration) {
|
||||||
|
List<PengXinStartTaskItem> reqItems = new ArrayList<>();
|
||||||
|
String url = urlRootPath + "dispose_device/task/start";
|
||||||
|
//1.调用upf设备登录接口,生成token值;2.upf不提供登录接口,随机生成token值,保证有token值
|
||||||
|
if (token == null || token.length() == 0) {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_LOGOUT, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
log.info("++++Begging UPF Start Cleanup Task: {}", disposeObject);
|
||||||
|
if (capType != DisposeCapacityType.BLACKHOOL) {
|
||||||
|
log.error("----Error UPF don't support dispose capacity type: {}", capType);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 适配处置时间参数, -1为不限制处置时间
|
||||||
|
if (duration == null || duration < 0) {
|
||||||
|
duration = -1L;
|
||||||
|
}
|
||||||
|
|
||||||
|
reqItems.add(PengXinStartTaskItem.builder()
|
||||||
|
.type(getUpfTaskType(capType))
|
||||||
|
.disposeObject(disposeObject)
|
||||||
|
.objectType(getUpfObjectType(objectType))
|
||||||
|
.disposeTime(duration)
|
||||||
|
.taskReqId(String.valueOf(taskReqId++))
|
||||||
|
.build());
|
||||||
|
|
||||||
|
ProtocolRespDTO<PengXinStartTaskRsp> rspInfo = restfulInterface.startDisposeTask(url, token, reqItems);
|
||||||
|
|
||||||
|
// upf设备不判断header认证消息中的token值
|
||||||
|
if (rspInfo == null || rspInfo.getCode() != ErrorCode.ERR_OK.getHttpCode()) {
|
||||||
|
log.error("----Error UPF start clean {} server return error", disposeObject);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UPF_ERROR, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rspInfo.getMsgContent().getItems().size() == 0) {
|
||||||
|
log.error("----Error UPF start clean {} server return nothing", disposeObject);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UPF_ERROR, null);
|
||||||
|
} else {
|
||||||
|
int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus();
|
||||||
|
if (errCode != ErrorCode.ERR_OK.getCode()) {
|
||||||
|
log.error("----Error UPF start clean {} server return error: {}", disposeObject, errCode);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UPF_ERROR, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("----Finish UPF Start Cleanup Task: {}", disposeObject);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_OK, rspInfo.getMsgContent().getItems().get(0).getTaskId());
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.error("----Exception UPF Start Cleanup Task: {}, {}, {}", disposeObject, nfDirection, duration);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop dispose mul return type.
|
||||||
|
*
|
||||||
|
* @param disposeObject the dispose object
|
||||||
|
* @param capType the cap type
|
||||||
|
* @param nfDirection the nf direction
|
||||||
|
* @param attackType the attack type
|
||||||
|
* @param taskId the task id
|
||||||
|
* @return the mul return type
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public MulReturnType<ErrorCode, Long> stopDispose(String disposeObject, DisposeCapacityType capType,
|
||||||
|
@Nullable NetflowDirection nfDirection,
|
||||||
|
@Nullable Integer attackType,
|
||||||
|
@Nullable String taskId) {
|
||||||
|
String url = urlRootPath + "dispose_device/task/stop";
|
||||||
|
//1.调用upf设备登录接口,生成token值;2.upf不提供登录接口,随机生成token值,保证有token值
|
||||||
|
if (token == null || token.length() == 0) {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_LOGOUT, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
log.info("++++Begging UPF Stop Cleanup Task: {}", taskId);
|
||||||
|
if (capType != DisposeCapacityType.BLACKHOOL) {
|
||||||
|
log.error("----Error UPF don't support dispose capacity type: {}", capType);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (taskId == null) {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_PARAMS, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
ProtocolRespDTO<PengXinStopTaskRsp> rspInfo = restfulInterface.stopDisposeTask(url, token,
|
||||||
|
new String[]{taskId});
|
||||||
|
|
||||||
|
if (rspInfo == null || rspInfo.getCode() != ErrorCode.ERR_OK.getHttpCode()) {
|
||||||
|
log.error("----Error UPF stop task{} server return error", taskId);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UPF_ERROR, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rspInfo.getMsgContent().getItems().size() == 0) {
|
||||||
|
log.error("----Error UPF stop clean {} server return nothing", disposeObject);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UPF_ERROR, null);
|
||||||
|
} else {
|
||||||
|
int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus();
|
||||||
|
if (errCode != ErrorCode.ERR_OK.getCode()) {
|
||||||
|
log.error("----Error UPF stop clean {} server return error: {}", disposeObject, errCode);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_UPF_ERROR, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("----Finish UPF Stop Cleanup Task: {}", taskId);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_OK, null);
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.error("----Exception UPF Stop Cleanup Task: {}, {}, {}", disposeObject, nfDirection, taskId);
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets ability device fireware.
|
||||||
|
*
|
||||||
|
* @return the ability device fireware
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public MulReturnType<ErrorCode, DeviceFirewareInfo> getAbilityDeviceFireware() {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_OK,
|
||||||
|
DeviceFirewareInfo.builder()
|
||||||
|
.vendor("UPF")
|
||||||
|
.model("Unknown")
|
||||||
|
.firmware("Unknown")
|
||||||
|
.os("Linux Server")
|
||||||
|
.kernel("Linux")
|
||||||
|
.arch("x86_64")
|
||||||
|
.version("Unknown")
|
||||||
|
.memory(-1)
|
||||||
|
.freeMemory(-1)
|
||||||
|
.cpuUsed(-1)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To device attack type long.
|
||||||
|
*
|
||||||
|
* @param ddosAttackTypeMask the ddos attack type mask
|
||||||
|
* @return the long
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long toDeviceAttackType(Long ddosAttackTypeMask) {
|
||||||
|
return ddosAttackTypeMask;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets device link status.
|
||||||
|
*
|
||||||
|
* @return the device link status
|
||||||
|
*/
|
||||||
|
@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) {
|
||||||
|
deviceLinkStatus = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ErrorCode err = restfulInterface.getLinkStatus(url, token);
|
||||||
|
|
||||||
|
if (err == ErrorCode.ERR_LOGOUT) {
|
||||||
|
// 重新登录获取 token
|
||||||
|
upgradeToken();
|
||||||
|
err = restfulInterface.getLinkStatus(url, token);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err == ErrorCode.ERR_OK) {
|
||||||
|
deviceLinkStatus = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.error(ex.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
deviceLinkStatus = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets dispose device protect object.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void getDisposeDeviceProtectObject() {
|
||||||
|
if (token == null || token.length() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
String url = urlRootPath + "dispose_device/information/capacity";
|
||||||
|
ProtocolRespDTO<PengXinDisposeAbilityRsp> rspInfo = restfulInterface.getDeviceDisposeAbility(url, token);
|
||||||
|
|
||||||
|
if (rspInfo != null && rspInfo.getCode() == ErrorCode.ERR_OK.getHttpCode()
|
||||||
|
&& rspInfo.getMsgContent().getStatus() == ErrorCode.ERR_OK.getCode()) {
|
||||||
|
|
||||||
|
rspInfo.getMsgContent().getCapacity().forEach(v -> {
|
||||||
|
if (v.getObjectType().equals(DisposeObjectType.DOMAIN.getValue())) {
|
||||||
|
log.error("Unsupported: {}", v.getObjectType());
|
||||||
|
} else if (v.getObjectType().equals(DisposeObjectType.URL.getValue())) {
|
||||||
|
log.error("Unsupported: {}", v.getObjectType());
|
||||||
|
} else {
|
||||||
|
synchronized (this) {
|
||||||
|
|
||||||
|
protectIpV4.clear();
|
||||||
|
protectIpV6.clear();
|
||||||
|
|
||||||
|
if (v.getIpType() == null || v.getIpType().equals(IpAddrType.IPV4_IPV6.getValue())) {
|
||||||
|
if (v.getDisposeIp() == null) {
|
||||||
|
protectIpV4.add("");
|
||||||
|
protectIpV6.add("");
|
||||||
|
}
|
||||||
|
} else if (v.getIpType().equals(IpAddrType.IPV4.getValue())) {
|
||||||
|
protectIpV4.add("");
|
||||||
|
} else if (v.getIpType().equals(IpAddrType.IPV6.getValue())) {
|
||||||
|
protectIpV6.add("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is carry protect ip boolean.
|
||||||
|
*
|
||||||
|
* @param ipAddress the ip address
|
||||||
|
* @return the boolean
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isCarryProtectIp(String ipAddress) {
|
||||||
|
boolean ret = false;
|
||||||
|
IPAddress address = new IPAddressString(ipAddress).getAddress();
|
||||||
|
synchronized (this) {
|
||||||
|
if (address.isIPv4()) {
|
||||||
|
ret = protectIpV4.stream().anyMatch(v -> Helper.ipInRange(v, ipAddress));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (address.isIPv6()) {
|
||||||
|
ret = protectIpV6.stream().anyMatch(v -> Helper.ipInRange(v, ipAddress));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ret) {
|
||||||
|
// 更新设备防护IP
|
||||||
|
getDisposeDeviceProtectObject();
|
||||||
|
|
||||||
|
synchronized (this) {
|
||||||
|
if (address.isIPv4()) {
|
||||||
|
ret = protectIpV4.stream().anyMatch(v -> Helper.ipInRange(v, ipAddress));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (address.isIPv6()) {
|
||||||
|
ret = protectIpV6.stream().anyMatch(v -> Helper.ipInRange(v, ipAddress));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Task status mul return type.
|
||||||
|
*
|
||||||
|
* @param taskId the task id
|
||||||
|
* @return the mul return type
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public MulReturnType<ErrorCode, Long> taskStatus(String taskId) {
|
||||||
|
if (token == null || token.length() == 0) {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_LOGOUT, -1L);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
String url = urlRootPath + "dispose_device/task/get";
|
||||||
|
ProtocolRespDTO<PengXinTaskStatusRsp> rspInfo = restfulInterface.getDeviceTaskStatus(url, token,
|
||||||
|
new String[]{taskId});
|
||||||
|
|
||||||
|
if (rspInfo != null && rspInfo.getCode() == ErrorCode.ERR_OK.getHttpCode()) {
|
||||||
|
int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus();
|
||||||
|
if (rspInfo.getMsgContent().getItems().size() == 0 || errCode != ErrorCode.ERR_OK.getCode()) {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_NOSUCHTASK, -1L);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_OK,
|
||||||
|
rspInfo.getMsgContent().getItems().get(0).getTaskStatus());
|
||||||
|
} else {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, -1L);
|
||||||
|
}
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, -1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Upgrade token.
|
||||||
|
*/
|
||||||
|
private void upgradeToken() {
|
||||||
|
try {
|
||||||
|
//目前1.UPF不提供用户登录接口,使用随机生成的token值;2UPF登录接口不校验用户名和密码,返回值为REE_OK和token值
|
||||||
|
//方案1:
|
||||||
|
this.token = RandomStringUtils.random(10);
|
||||||
|
// //方案2
|
||||||
|
// String url = urlRootPath + "dispose_device/auth/login";
|
||||||
|
// ProtocolRespDTO<PengXinLoginRsp> logInfo = restfulInterface.login(url, username, password);
|
||||||
|
//
|
||||||
|
// if (logInfo != null && logInfo.getMsgContent().getStatus() == ErrorCode.ERR_OK.getCode()) {
|
||||||
|
// this.token = logInfo.getMsgContent().getToken();
|
||||||
|
// }
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Period task runtime.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void periodTaskRuntime() {
|
||||||
|
log.debug("++++UPF Period Task Running");
|
||||||
|
// 更新防护对象
|
||||||
|
getDisposeDeviceProtectObject();
|
||||||
|
// 更新心跳状态
|
||||||
|
if (timerCnt++ % DisposeConfigValue.HEART_PERIOD_OF_SECOND == 0) {
|
||||||
|
devGetLinkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("----UPF 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,6 +30,10 @@ public enum DisposeDeviceType implements BaseEnum {
|
||||||
* The Huawei FireWall platform.
|
* The Huawei FireWall platform.
|
||||||
*/
|
*/
|
||||||
HUAWEI_FIREWALL_PLATFORM(5, "华为防火墙"),
|
HUAWEI_FIREWALL_PLATFORM(5, "华为防火墙"),
|
||||||
|
/**
|
||||||
|
* The upf platform.
|
||||||
|
*/
|
||||||
|
UPF_PLATFORM(6, "UPF设备"),
|
||||||
/**
|
/**
|
||||||
* The Virtual dispose.
|
* The Virtual dispose.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -240,7 +240,10 @@ public enum ErrorCode {
|
||||||
* The Err pengxin error.
|
* The Err pengxin error.
|
||||||
*/
|
*/
|
||||||
ERR_PENGXIN_ERROR(117, "鹏信设备返回错误"),
|
ERR_PENGXIN_ERROR(117, "鹏信设备返回错误"),
|
||||||
|
/**
|
||||||
|
* The Err upf error.
|
||||||
|
*/
|
||||||
|
ERR_UPF_ERROR(118, "UPF设备返回错误"),
|
||||||
/**
|
/**
|
||||||
* The Err nosuchumcprotectobject.
|
* The Err nosuchumcprotectobject.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -588,6 +588,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
||||||
restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.HUAWEI_FIREWALL_PLATFORM);
|
restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.HUAWEI_FIREWALL_PLATFORM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case UPF_PLATFORM:
|
||||||
|
restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.UPF_PLATFORM);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
log.error("Unknown dispose device type: {}", ai.getDev());
|
log.error("Unknown dispose device type: {}", ai.getDev());
|
||||||
break;
|
break;
|
||||||
|
@ -669,6 +673,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
||||||
restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.HUAWEI_FIREWALL_PLATFORM);
|
restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.HUAWEI_FIREWALL_PLATFORM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case UPF_PLATFORM:
|
||||||
|
restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.UPF_PLATFORM);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
log.error("Unknown dispose device type: {}", ai.getDev());
|
log.error("Unknown dispose device type: {}", ai.getDev());
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.dispose.ability.impl.HaoHanAbilityImpl;
|
||||||
import com.dispose.ability.impl.HuaWeiAbilityImpl;
|
import com.dispose.ability.impl.HuaWeiAbilityImpl;
|
||||||
import com.dispose.ability.impl.HuaWeiFireWallAbilityImpl;
|
import com.dispose.ability.impl.HuaWeiFireWallAbilityImpl;
|
||||||
import com.dispose.ability.impl.PengXinAbilityImpl;
|
import com.dispose.ability.impl.PengXinAbilityImpl;
|
||||||
|
import com.dispose.ability.impl.UpfAbilityImpl;
|
||||||
import com.dispose.ability.impl.VirtualAbilityImpl;
|
import com.dispose.ability.impl.VirtualAbilityImpl;
|
||||||
import com.dispose.common.DisposeCapacityType;
|
import com.dispose.common.DisposeCapacityType;
|
||||||
import com.dispose.common.ErrorCode;
|
import com.dispose.common.ErrorCode;
|
||||||
|
@ -172,6 +173,9 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ
|
||||||
case HUAWEI_FIREWALL_PLATFORM:
|
case HUAWEI_FIREWALL_PLATFORM:
|
||||||
db = new HuaWeiFireWallAbilityImpl();
|
db = new HuaWeiFireWallAbilityImpl();
|
||||||
break;
|
break;
|
||||||
|
case UPF_PLATFORM:
|
||||||
|
db = new UpfAbilityImpl();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
log.error("Unknown dispose device type: {}", dev.getDeviceType());
|
log.error("Unknown dispose device type: {}", dev.getDeviceType());
|
||||||
return ErrorCode.ERR_PARAMS;
|
return ErrorCode.ERR_PARAMS;
|
||||||
|
|
Loading…
Reference in New Issue