parent
008ceba7de
commit
4038c75cb5
|
@ -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,85 +208,22 @@ 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;
|
||||
|
|
Loading…
Reference in New Issue