parent
008ceba7de
commit
4038c75cb5
|
@ -107,26 +107,26 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING);
|
||||
// 设置启动任务攻击类型状态
|
||||
deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI,
|
||||
deviceTask.getTaskAttackType());
|
||||
deviceTask.getTaskAttackType());
|
||||
|
||||
// 调用设备执行处置任务
|
||||
ret = ai.getDb()
|
||||
.runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(),
|
||||
disposeTask.getDisposeCapacity(),
|
||||
null, null, null);
|
||||
disposeTask.getDisposeCapacity(),
|
||||
null, null, null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 设置攻击类型任务启动结果
|
||||
deviceTaskManager.setAttackTypeStatus(deviceTask.getId(),
|
||||
disposeTask.getFlowDirection(), deviceTask.getTaskAttackType());
|
||||
disposeTask.getFlowDirection(), deviceTask.getTaskAttackType());
|
||||
// 更改处置任务状态为处置中
|
||||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(),
|
||||
DisposeTaskStatus.TASK_STARTED);
|
||||
DisposeTaskStatus.TASK_STARTED);
|
||||
log.info("VIRTUAL_DISPOSE setup task succeed: {}", deviceTask);
|
||||
} else {
|
||||
// 任务出错,不在重试,当做失败任务处理
|
||||
deviceTaskManager.setAttackTypeStatus(deviceTask.getId(),
|
||||
disposeTask.getFlowDirection(), 0L);
|
||||
disposeTask.getFlowDirection(), 0L);
|
||||
log.error("VIRTUAL_DISPOSE setup task error {}: {}", ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
}
|
||||
|
@ -157,6 +157,50 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
}
|
||||
|
||||
|
||||
private void dpTechDeviceExe(AbilityInfo ai,
|
||||
DeviceTask deviceTask,
|
||||
DisposeTask disposeTask, NetflowDirection netflowDirection) {
|
||||
|
||||
MulReturnType<ErrorCode, String> ret;
|
||||
final int nTime = 10;
|
||||
|
||||
// 启动迪普设备,采用一种攻击类型
|
||||
DpTechAttackType attackType = DpTechAttackType.maskToDdosAttackType(deviceTask.getTaskAttackType()).get(0);
|
||||
|
||||
// 设置启动任务攻击类型状态
|
||||
deviceTaskManager.execAttackTypeSetBit(deviceTask.getId(), netflowDirection,
|
||||
attackType.getValue());
|
||||
// 调用迪普设备启动处置任务
|
||||
ret = ai.getDb().runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(),
|
||||
disposeTask.getDisposeCapacity(), netflowDirection,
|
||||
attackType.getValue(), null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 标志启动成功
|
||||
deviceTaskManager.attackTypeStatusSetBit(deviceTask.getId(), netflowDirection,
|
||||
attackType.getValue());
|
||||
|
||||
log.info("DPTECH_UMC setup task {}, {} succeed: {}", attackType, netflowDirection,
|
||||
deviceTask);
|
||||
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0);
|
||||
} else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES * nTime) {
|
||||
// 设置该任务为新任务,待下次重试启动
|
||||
// 记录任务出错重试次数
|
||||
deviceTask.setErrRetry(deviceTask.getErrRetry() + 1);
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry());
|
||||
//清除任务攻击类型启动标志
|
||||
deviceTaskManager.execAttackTypeCleanBit(deviceTask.getId(), netflowDirection,
|
||||
attackType.getValue());
|
||||
log.error("DPTECH_UMC setup task {}, {} times {} error: {}", attackType,
|
||||
netflowDirection, deviceTask.getErrRetry(), deviceTask);
|
||||
} else {
|
||||
log.error("DPTECH_UMC setup task {}, {} error {}: {}", attackType,
|
||||
netflowDirection, ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Dp tech device task run.
|
||||
*
|
||||
|
@ -164,86 +208,23 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
* @param deviceTask the device task
|
||||
* @param disposeTask the dispose task
|
||||
*/
|
||||
private void dpTechDeviceTaskRun(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask) {
|
||||
MulReturnType<ErrorCode, String> ret;
|
||||
final int nTime = 10;
|
||||
private void dpTechDeviceTaskRun(AbilityInfo ai,
|
||||
DeviceTask deviceTask,
|
||||
DisposeTask disposeTask) {
|
||||
|
||||
// 设置任务状态为启动中
|
||||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING);
|
||||
|
||||
// 启动迪普设备,采用一种攻击类型
|
||||
DpTechAttackType attackType = DpTechAttackType.maskToDdosAttackType(deviceTask.getTaskAttackType()).get(0);
|
||||
// 出方向
|
||||
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_IN) {
|
||||
// 设置启动任务攻击类型状态
|
||||
deviceTaskManager.execAttackTypeSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT,
|
||||
attackType.getValue());
|
||||
// 调用迪普设备启动处置任务
|
||||
ret = ai.getDb().runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(),
|
||||
disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_OUT,
|
||||
attackType.getValue(), null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 标志启动成功
|
||||
deviceTaskManager.attackTypeStatusSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT,
|
||||
attackType.getValue());
|
||||
|
||||
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 * nTime) {
|
||||
// 设置该任务为新任务,待下次重试启动
|
||||
// 记录任务出错重试次数
|
||||
deviceTask.setErrRetry(deviceTask.getErrRetry() + 1);
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry());
|
||||
//清除任务攻击类型启动标志
|
||||
deviceTaskManager.execAttackTypeCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT,
|
||||
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 {}: {}", attackType,
|
||||
NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
dpTechDeviceExe(ai, deviceTask, disposeTask, NetflowDirection.DIRECTION_OUT);
|
||||
}
|
||||
|
||||
// 入方向
|
||||
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_OUT) {
|
||||
// 设置启动任务攻击类型状态
|
||||
deviceTaskManager.execAttackTypeSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN,
|
||||
attackType.getValue());
|
||||
// 调用迪普设备启动处置任务
|
||||
ret = ai.getDb().runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(),
|
||||
disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_IN,
|
||||
attackType.getValue(), null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 标志启动成功
|
||||
deviceTaskManager.attackTypeStatusSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN,
|
||||
attackType.getValue());
|
||||
|
||||
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 * nTime) {
|
||||
// 设置该任务为新任务,待下次重试启动
|
||||
// 记录任务出错重试次数
|
||||
deviceTask.setErrRetry(deviceTask.getErrRetry() + 1);
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry());
|
||||
//清除任务攻击类型启动标志
|
||||
deviceTaskManager.execAttackTypeCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN,
|
||||
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 {}: {}", attackType,
|
||||
NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
dpTechDeviceExe(ai, deviceTask, disposeTask, NetflowDirection.DIRECTION_IN);
|
||||
}
|
||||
|
||||
|
||||
// 检查需要处置的各种攻击类型任务启动状态与处置任务执行状态,判断该处置任务是否调用成功
|
||||
boolean taskSetupSucceed = true;
|
||||
|
||||
|
@ -292,12 +273,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_IN) {
|
||||
// 调用迪普设备停止处置任务
|
||||
ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(),
|
||||
NetflowDirection.DIRECTION_OUT, t.getValue(), null);
|
||||
NetflowDirection.DIRECTION_OUT, t.getValue(), null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 标志停止成功
|
||||
deviceTaskManager.attackTypeStatusCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT,
|
||||
t.getValue());
|
||||
t.getValue());
|
||||
|
||||
log.info("DPTECH_UMC stop task {}, {} succeed: {}", t, NetflowDirection.DIRECTION_OUT, deviceTask);
|
||||
|
||||
|
@ -307,10 +288,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
deviceTask.setErrRetry(deviceTask.getErrRetry() + 1);
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry());
|
||||
log.error("DPTECH_UMC stop task {}, {} times {} error: {}", t,
|
||||
NetflowDirection.DIRECTION_OUT, deviceTask.getErrRetry(), deviceTask);
|
||||
NetflowDirection.DIRECTION_OUT, deviceTask.getErrRetry(), deviceTask);
|
||||
} else {
|
||||
log.info("DPTECH_UMC stop task {}, {} error {}: {}", t,
|
||||
NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask);
|
||||
NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -318,15 +299,15 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_OUT) {
|
||||
// 调用迪普设备启动处置任务
|
||||
ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(),
|
||||
NetflowDirection.DIRECTION_IN, t.getValue(), null);
|
||||
NetflowDirection.DIRECTION_IN, t.getValue(), null);
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 标志启动成功
|
||||
deviceTaskManager.attackTypeStatusCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN,
|
||||
t.getValue());
|
||||
t.getValue());
|
||||
|
||||
log.info("DPTECH_UMC setup task {}, {} succeed: {}", t,
|
||||
NetflowDirection.DIRECTION_IN, deviceTask);
|
||||
NetflowDirection.DIRECTION_IN, deviceTask);
|
||||
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0);
|
||||
} else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES * 10) {
|
||||
|
@ -334,10 +315,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
deviceTask.setErrRetry(deviceTask.getErrRetry() + 1);
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry());
|
||||
log.error("DPTECH_UMC stop task {}, {} times {} error: {}", t,
|
||||
NetflowDirection.DIRECTION_IN, deviceTask.getErrRetry(), deviceTask);
|
||||
NetflowDirection.DIRECTION_IN, deviceTask.getErrRetry(), deviceTask);
|
||||
} else {
|
||||
log.info("DPTECH_UMC stop task {}, {} error {}: {}", t,
|
||||
NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask);
|
||||
NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -393,17 +374,17 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING);
|
||||
// 设置启动任务攻击类型状态
|
||||
deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI,
|
||||
deviceTask.getTaskAttackType());
|
||||
deviceTask.getTaskAttackType());
|
||||
|
||||
ret = ai.getDb()
|
||||
.runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(),
|
||||
disposeTask.getDisposeCapacity(), null,
|
||||
null, (long) -(Helper.getTimestampDiffNow(disposeTask.getPlanEndTime()) / 60));
|
||||
disposeTask.getDisposeCapacity(), null,
|
||||
null, (long) -(Helper.getTimestampDiffNow(disposeTask.getPlanEndTime()) / 60));
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
// 设置攻击类型任务启动结果
|
||||
deviceTaskManager.setAttackTypeStatus(deviceTask.getId(),
|
||||
disposeTask.getFlowDirection(), deviceTask.getTaskAttackType());
|
||||
disposeTask.getFlowDirection(), deviceTask.getTaskAttackType());
|
||||
// 更改处置任务状态为处置中
|
||||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTED);
|
||||
|
||||
|
@ -424,18 +405,18 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
// 记录任务出错重试次数
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1);
|
||||
log.error("{} setup task times {} error {}: {}", deviceType, deviceTask.getErrRetry(),
|
||||
ret.getSecondParam(), deviceTask);
|
||||
ret.getSecondParam(), deviceTask);
|
||||
} else {
|
||||
// 任务出错,不在重试,当做失败任务处理
|
||||
deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L);
|
||||
|
||||
// 设置该任务为启动失败
|
||||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(),
|
||||
DisposeTaskStatus.TASK_START_FAILED);
|
||||
DisposeTaskStatus.TASK_START_FAILED);
|
||||
|
||||
//任务出错,设备任务状态为启动处置任务失败
|
||||
deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(),
|
||||
(long) PengXinTaskStatus.TASK_STARTED_FAILED.getValue());
|
||||
(long) PengXinTaskStatus.TASK_STARTED_FAILED.getValue());
|
||||
|
||||
// 记录任务出错重试次数
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0);
|
||||
|
@ -463,7 +444,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
|
||||
// 停止处置任务
|
||||
ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null,
|
||||
deviceTask.getExternId());
|
||||
deviceTask.getExternId());
|
||||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
log.info("{} stop task succeed: {}, device taskId {}", deviceType, deviceTask, ret.getSecondParam());
|
||||
|
@ -475,7 +456,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
// 记录任务出错重试次数
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1);
|
||||
log.error("{} stop task times {} error {}: {}", deviceType, deviceTask.getErrRetry(),
|
||||
ret.getSecondParam(), deviceTask);
|
||||
ret.getSecondParam(), deviceTask);
|
||||
} else {
|
||||
// 记录任务出错重试次数
|
||||
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0);
|
||||
|
@ -494,7 +475,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
// 清理过期任务
|
||||
for (DisposeTask v : disposeTaskManager.getExpiredTasks()) {
|
||||
log.info("Task {} {} {} is expired, expect finished at {}",
|
||||
v.getId(), v.getDisposeCapacity(), v.getDisposeObject(), v.getPlanEndTime());
|
||||
v.getId(), v.getDisposeCapacity(), v.getDisposeObject(), v.getPlanEndTime());
|
||||
// 设置任务状态,过期任务不再为设备创建处置任务
|
||||
disposeTaskManager.changeDisposeTaskStatus(v.getId(), DisposeTaskStatus.TASK_EXPIRED);
|
||||
}
|
||||
|
@ -529,15 +510,15 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
|
||||
// 检查当前设备是否已经创建了该任务
|
||||
if (deviceTaskManager.deviceTaskCreated(v.getId(),
|
||||
d.getDev().getId())) {
|
||||
d.getDev().getId())) {
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("Add dispose task for device: {}", d.getDev());
|
||||
if (!deviceTaskManager
|
||||
.addDisposeDeviceTaskInfo(v.getId(),
|
||||
d.getDev().getId(),
|
||||
d.getDb().toDeviceAttackType(v.getAttackType()))) {
|
||||
d.getDev().getId(),
|
||||
d.getDb().toDeviceAttackType(v.getAttackType()))) {
|
||||
log.error("Add task {} to device {} error", v, d);
|
||||
}
|
||||
});
|
||||
|
@ -719,9 +700,9 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
|
||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||
log.debug("id:{}, before devStatus:{}, after devStatus:{}", v.getId(),
|
||||
v.getDevStatus(), ret.getSecondParam());
|
||||
v.getDevStatus(), ret.getSecondParam());
|
||||
deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getId(),
|
||||
ret.getSecondParam());
|
||||
ret.getSecondParam());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue