From 518b048fe6a2d4944fa3773dedcb415b9e090db7 Mon Sep 17 00:00:00 2001 From: HuangXin Date: Sat, 5 Sep 2020 11:24:53 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20REM:=201.=20=E5=A2=9E=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=AE=BE=E5=A4=87=E9=93=BE=E6=8E=A5=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=202.=20=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=89=88=E6=9C=AC=E4=BF=A1=E6=81=AF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AE=9E=E7=8E=B0=203.=20=E5=A2=9E=E5=8A=A0=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E8=8E=B7=E5=8F=96=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=204.=20=E5=90=88=E5=B9=B6=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82DTO=E5=AE=9A=E4=B9=89=205.?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dispose/common/AuthConfigValue.java | 2 +- .../dispose/common/DisposeCapacityType.java | 4 +- .../com/dispose/common/DisposeTaskStatus.java | 2 +- src/main/java/com/dispose/common/Helper.java | 7 +- .../com/dispose/config/AuthConfigure.java | 6 + .../DisposeDeviceManagerController.java | 4 +- .../controller/DisposeInfoController.java | 143 ++++++++++++----- .../controller/DisposeTaskController.java | 144 +++++++++++++----- .../dispose/manager/DisposeTaskManager.java | 11 ++ .../manager/impl/DisposeTaskManagerImpl.java | 28 ++++ ...ceVersionDetail.java => DeviceDetail.java} | 10 +- .../protocol/device/info/GetDevVerReq.java | 4 - ...eVerInfoRsp.java => GetDeviceInfoRsp.java} | 8 +- ...GetDeviceReq.java => BasePagesGetReq.java} | 2 +- .../protocol/task/GetDeviceTaskDetail.java | 38 +++++ .../pojo/dto/protocol/task/GetTaskDetail.java | 74 +++++++++ .../pojo/dto/protocol/task/GetTaskRsp.java | 55 +++++++ .../pojo/dto/protocol/task/TaskStartReq.java | 1 - .../com/dispose/pojo/entity/DisposeTask.java | 1 - .../dispose/service/DisposeTaskService.java | 12 ++ .../service/impl/DisposeTaskServiceImpl.java | 17 +++ .../validation/valids/ValidIpPort.java | 10 ++ .../validation/valids/ValidSplitPageSize.java | 10 ++ .../DisposeDeviceManagerControllerTest.java | 6 +- 24 files changed, 499 insertions(+), 100 deletions(-) rename src/main/java/com/dispose/pojo/dto/protocol/device/info/{DeviceVersionDetail.java => DeviceDetail.java} (76%) delete mode 100644 src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDevVerReq.java rename src/main/java/com/dispose/pojo/dto/protocol/device/info/{GetDeviceVerInfoRsp.java => GetDeviceInfoRsp.java} (72%) rename src/main/java/com/dispose/pojo/dto/protocol/device/manager/{GetDeviceReq.java => BasePagesGetReq.java} (97%) create mode 100644 src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java create mode 100644 src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskDetail.java create mode 100644 src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskRsp.java diff --git a/src/main/java/com/dispose/common/AuthConfigValue.java b/src/main/java/com/dispose/common/AuthConfigValue.java index 9ec51481..0022d3ca 100644 --- a/src/main/java/com/dispose/common/AuthConfigValue.java +++ b/src/main/java/com/dispose/common/AuthConfigValue.java @@ -37,7 +37,7 @@ public class AuthConfigValue { /** * The constant TRUST_INFO_CACHE. */ - public static volatile HashMap TRUST_INFO_CACHE = new HashMap<>(); + public static final HashMap TRUST_INFO_CACHE = new HashMap<>(); /** * The constant AUTH_CHECK. diff --git a/src/main/java/com/dispose/common/DisposeCapacityType.java b/src/main/java/com/dispose/common/DisposeCapacityType.java index 30c6177e..34614f93 100644 --- a/src/main/java/com/dispose/common/DisposeCapacityType.java +++ b/src/main/java/com/dispose/common/DisposeCapacityType.java @@ -12,7 +12,7 @@ public enum DisposeCapacityType implements BaseEnum { */ CLEANUP(0, "清洗能力"), /** - * Blackhool dispose capacity type. + * The Blackhool. */ BLACKHOOL(1, "压制能力"), /** @@ -20,7 +20,7 @@ public enum DisposeCapacityType implements BaseEnum { */ HIDEPEND(2, "高防能力"), /** - * The Detecive. + * The Detective. */ DETECTIVE(3, "检测能力"), ; diff --git a/src/main/java/com/dispose/common/DisposeTaskStatus.java b/src/main/java/com/dispose/common/DisposeTaskStatus.java index 95674e9a..7709cdbb 100644 --- a/src/main/java/com/dispose/common/DisposeTaskStatus.java +++ b/src/main/java/com/dispose/common/DisposeTaskStatus.java @@ -17,7 +17,7 @@ public enum DisposeTaskStatus implements BaseEnum { /** * The Task started. */ - TASK_STARTED(2, "启动完成"), + TASK_STARTED(2, "处置中"), /** * The Task finished. */ diff --git a/src/main/java/com/dispose/common/Helper.java b/src/main/java/com/dispose/common/Helper.java index 916ae97d..f22917bf 100644 --- a/src/main/java/com/dispose/common/Helper.java +++ b/src/main/java/com/dispose/common/Helper.java @@ -81,6 +81,7 @@ public class Helper { public static String ipAddressNormalize(String ipAddr) { IPAddressString addrString = new IPAddressString(ipAddr); IPAddress addr = addrString.getAddress(); + final String cidrSplit = "/"; if (addr.isIPv6()) { return addr.toFullString().toUpperCase(); @@ -89,11 +90,11 @@ public class Helper { String ip; String mask = ""; - if (!ipAddr.contains("/")) { + if (!ipAddr.contains(cidrSplit)) { ip = ipAddr; } else { - ip = ipAddr.substring(0, ipAddr.indexOf("/")); - mask = ipAddr.substring(ipAddr.indexOf("/")); + ip = ipAddr.substring(0, ipAddr.indexOf(cidrSplit)); + mask = ipAddr.substring(ipAddr.indexOf(cidrSplit)); } diff --git a/src/main/java/com/dispose/config/AuthConfigure.java b/src/main/java/com/dispose/config/AuthConfigure.java index aacc0ec8..2457b94b 100644 --- a/src/main/java/com/dispose/config/AuthConfigure.java +++ b/src/main/java/com/dispose/config/AuthConfigure.java @@ -45,6 +45,11 @@ public class AuthConfigure implements WebMvcConfigurer { AuthConfigValue.VERIFY_REQUEST_TOKEN = Optional.ofNullable(verifyRequestToken).orElse(true); } + /** + * Init auth interceptor token interceptor. + * + * @return the token interceptor + */ @Bean public TokenInterceptor initAuthInterceptor(){ return new TokenInterceptor(); @@ -60,5 +65,6 @@ public class AuthConfigure implements WebMvcConfigurer { // 注册需要检查token的控制器接口 registry.addInterceptor(initAuthInterceptor()).addPathPatterns("/information/**"); registry.addInterceptor(initAuthInterceptor()).addPathPatterns("/task/**"); + registry.addInterceptor(initAuthInterceptor()).addPathPatterns("/info/**"); } } diff --git a/src/main/java/com/dispose/controller/DisposeDeviceManagerController.java b/src/main/java/com/dispose/controller/DisposeDeviceManagerController.java index cf3361ff..16b414b8 100644 --- a/src/main/java/com/dispose/controller/DisposeDeviceManagerController.java +++ b/src/main/java/com/dispose/controller/DisposeDeviceManagerController.java @@ -18,9 +18,9 @@ import com.dispose.pojo.dto.protocol.device.manager.AddCapacityInfo; import com.dispose.pojo.dto.protocol.device.manager.AddDeviceReq; import com.dispose.pojo.dto.protocol.device.manager.AddDeviceRet; import com.dispose.pojo.dto.protocol.device.manager.AddDeviceRsp; +import com.dispose.pojo.dto.protocol.device.manager.BasePagesGetReq; import com.dispose.pojo.dto.protocol.device.manager.DeviceInfoRsp; import com.dispose.pojo.dto.protocol.device.manager.GetDeviceDetail; -import com.dispose.pojo.dto.protocol.device.manager.GetDeviceReq; import com.dispose.pojo.dto.protocol.device.manager.GetDeviceRsp; import com.dispose.pojo.entity.DisposeCapacity; import com.dispose.pojo.entity.DisposeDevice; @@ -247,7 +247,7 @@ public class DisposeDeviceManagerController { @ApiOperation("获取处置能力节点") public ProtocolRespDTO getAllDisposeDevice( @Validated(ValidGroups.ProtocolCommonValid.class) - @RequestBody ProtocolReqDTO mr) { + @RequestBody ProtocolReqDTO mr) { MulReturnType, List> ret = disposeDeviceManagerService.getPageDisposeDevice(mr.getMsgContent().getStartPage(), diff --git a/src/main/java/com/dispose/controller/DisposeInfoController.java b/src/main/java/com/dispose/controller/DisposeInfoController.java index 8c9b37eb..bde4a7d6 100644 --- a/src/main/java/com/dispose/controller/DisposeInfoController.java +++ b/src/main/java/com/dispose/controller/DisposeInfoController.java @@ -8,9 +8,9 @@ import com.dispose.pojo.dto.protocol.base.IdArraysReq; import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.dispose.pojo.dto.protocol.device.info.AreaInfoDetail; -import com.dispose.pojo.dto.protocol.device.info.DeviceVersionDetail; +import com.dispose.pojo.dto.protocol.device.info.DeviceDetail; import com.dispose.pojo.dto.protocol.device.info.GetAreaInfoRsp; -import com.dispose.pojo.dto.protocol.device.info.GetDeviceVerInfoRsp; +import com.dispose.pojo.dto.protocol.device.info.GetDeviceInfoRsp; import com.dispose.pojo.dto.protocol.device.info.GetPlatformVerInfoRsp; import com.dispose.pojo.entity.DisposeDevice; import com.dispose.service.AreaCodeManagerService; @@ -34,9 +34,9 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.stream.Collectors; /** @@ -113,9 +113,9 @@ public class DisposeInfoController { } /** - * Gets version info. + * Gets platform version info. * - * @return the version info + * @return the platform version info */ @GetMapping("platformVersion") @ResponseBody @@ -129,55 +129,118 @@ public class DisposeInfoController { return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); } + /** + * Gets device version info. + * + * @param mr the mr + * @return the device version info + */ @PostMapping("deviceVersion") @ResponseBody @ApiOperation("获取设备版本信息") - public ProtocolRespDTO getDeviceVersionInfo( + public ProtocolRespDTO getDeviceVersionInfo( @Validated(ValidGroups.GetDevVerReqValid.class) @RequestBody ProtocolReqDTO mr ) { - GetDeviceVerInfoRsp rspInfo = GetDeviceVerInfoRsp.builder() - .items(new ArrayList<>()) - .build(); - List reqIds = Arrays.stream(mr.getMsgContent().getId()).map(Long::parseLong).collect(Collectors.toList()); + GetDeviceInfoRsp rspInfo = GetDeviceInfoRsp.builder().build(); + List rspList = new ArrayList<>(); - Map devMap = disposeDeviceManagerService.getAllDisposeDevice() - .stream() - .collect(Collectors.toMap(DisposeDevice::getId, - Function.identity())); + // 获取请求id列表 + List reqIds = Arrays.stream(mr.getMsgContent().getId()).map(Long::parseLong) + .collect(Collectors.toList()); + // 获取所有可用设备 + List disposeDevice = disposeDeviceManagerService.getAllDisposeDevice(); - List allDevId = new ArrayList<>(devMap.keySet()); + // 获取设备版本信息 + disposeDevice.stream().filter(v -> reqIds.size() == 0 || reqIds.contains(v.getId())) + .forEach(d -> { + DeviceDetail dv = DeviceDetail.builder().build(); + dv.setId(String.valueOf(d.getId())); + dv.setIpAddr(d.getIpAddr()); + dv.setIpPort(Helper.ipPortNormalize(d.getIpPort(), d.getUrlType())); + dv.setVersion(disposeAbilityRouterService.getAbilityDevice(d.getId()) + .getFirewareInfo() + .getVersion()); - if (reqIds.size() == 0) { - reqIds = allDevId; - } + dv.setStatus(ErrorCode.ERR_OK.getCode()); + dv.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()}); + rspList.add(dv); + }); - reqIds.stream().collect(Collectors.groupingBy(allDevId::contains)) - .forEach((k, v) -> v.forEach(m -> { - DeviceVersionDetail dv = DeviceVersionDetail.builder().build(); - dv.setId(String.valueOf(m)); + // 设置不存在id的错误码 + reqIds.stream() + .filter(v -> disposeDevice.stream().noneMatch(k -> k.getId().equals(v))) + .forEach(v -> { + DeviceDetail dv = DeviceDetail.builder().build(); + dv.setId(String.valueOf(v)); + dv.setStatus(ErrorCode.ERR_NOSUCHDEVICE.getCode()); + dv.setMessage(new String[]{ErrorCode.ERR_NOSUCHDEVICE.getMsg()}); + rspList.add(dv); + }); - if (k) { - DisposeDevice d = devMap.get(m); - - dv.setIpAddr(d.getIpAddr()); - dv.setIpPort(Helper.ipPortNormalize(d.getIpPort(), d.getUrlType())); - dv.setVersion(disposeAbilityRouterService.getAbilityDevice(d.getId()) - .getFirewareInfo() - .getVersion()); - - dv.setStatus(ErrorCode.ERR_OK.getCode()); - dv.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()}); - } else { - dv.setStatus(ErrorCode.ERR_NOSUCHDEVICE.getCode()); - dv.setMessage(new String[]{ErrorCode.ERR_NOSUCHDEVICE.getMsg()}); - } - - rspInfo.getItems().add(dv); - })); + // 对返回的信息按照设备ID排序 + rspInfo.setItems(rspList.stream() + .sorted(Comparator.comparing(DeviceDetail::getId)) + .collect(Collectors.toList())); return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); } + /** + * Gets device link status info. + * + * @param mr the mr + * @return the device link status info + */ + @PostMapping("deviceLinkStatus") + @ResponseBody + @ApiOperation("获取设备在线状态") + public ProtocolRespDTO getDeviceLinkStatusInfo( + @Validated(ValidGroups.GetDevVerReqValid.class) + @RequestBody ProtocolReqDTO mr + ) { + GetDeviceInfoRsp rspInfo = GetDeviceInfoRsp.builder().build(); + List rspList = new ArrayList<>(); + + // 获取请求id列表 + List reqIds = Arrays.stream(mr.getMsgContent().getId()).map(Long::parseLong) + .collect(Collectors.toList()); + + // 获取所有可用设备 + List disposeDevice = disposeDeviceManagerService.getAllDisposeDevice(); + + // 获取设备版本信息 + disposeDevice.stream().filter(v -> reqIds.size() == 0 || reqIds.contains(v.getId())) + .forEach(d -> { + DeviceDetail dv = DeviceDetail.builder().build(); + dv.setId(String.valueOf(d.getId())); + dv.setIpAddr(d.getIpAddr()); + dv.setIpPort(Helper.ipPortNormalize(d.getIpPort(), d.getUrlType())); + dv.setOnline(disposeAbilityRouterService.getAbilityDevice(d.getId()) + .getDb() + .getDeviceLinkStatus() ? 1 : 0); + dv.setStatus(ErrorCode.ERR_OK.getCode()); + dv.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()}); + rspList.add(dv); + }); + + // 设置不存在id的错误码 + reqIds.stream() + .filter(v -> disposeDevice.stream().noneMatch(k -> k.getId().equals(v))) + .forEach(v -> { + DeviceDetail dv = DeviceDetail.builder().build(); + dv.setId(String.valueOf(v)); + dv.setStatus(ErrorCode.ERR_NOSUCHDEVICE.getCode()); + dv.setMessage(new String[]{ErrorCode.ERR_NOSUCHDEVICE.getMsg()}); + rspList.add(dv); + }); + + // 对返回的信息按照设备ID排序 + rspInfo.setItems(rspList.stream() + .sorted(Comparator.comparing(DeviceDetail::getId)) + .collect(Collectors.toList())); + + return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); + } } diff --git a/src/main/java/com/dispose/controller/DisposeTaskController.java b/src/main/java/com/dispose/controller/DisposeTaskController.java index 8d2f35b3..ce121af8 100644 --- a/src/main/java/com/dispose/controller/DisposeTaskController.java +++ b/src/main/java/com/dispose/controller/DisposeTaskController.java @@ -11,6 +11,10 @@ import com.dispose.pojo.dto.protocol.base.BaseRespStatus; import com.dispose.pojo.dto.protocol.base.IdArraysReq; import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; +import com.dispose.pojo.dto.protocol.device.manager.BasePagesGetReq; +import com.dispose.pojo.dto.protocol.task.GetDeviceTaskDetail; +import com.dispose.pojo.dto.protocol.task.GetTaskDetail; +import com.dispose.pojo.dto.protocol.task.GetTaskRsp; import com.dispose.pojo.dto.protocol.task.TaskStartMulRsp; import com.dispose.pojo.dto.protocol.task.TaskStartReq; import com.dispose.pojo.dto.protocol.task.TaskStartRsp; @@ -21,6 +25,7 @@ import com.dispose.pojo.po.MulReturnType; import com.dispose.service.DisposeTaskService; import com.dispose.service.UserAccountService; import com.dispose.validation.group.ValidGroups; +import com.github.pagehelper.PageInfo; import com.security.annotation.Decryption; import com.security.annotation.Encryption; import io.swagger.annotations.Api; @@ -87,27 +92,30 @@ public class DisposeTaskController { // 构造处置任务参数 DisposeTask task = DisposeTask.builder() - .deviceId(Long.parseLong(Optional.ofNullable(req.getId()).orElse("-1"))) - .accountId(userAccountService.getUserIdByAuthHead(Objects.requireNonNull(headers.get("Authorization")).get(0))) - .disposeCapacity(CommonEnumHandler.codeOf(DisposeCapacityType.class, req.getType())) - .disposeIp(Helper.ipAddressNormalize(req.getDisposeIp())) - .planEndTime(String.valueOf(req.getDisposeTime())) - .flowDirection(CommonEnumHandler.codeOf(NetflowDirection.class, - Optional.ofNullable(req.getFlowDirection()).orElse(2))) - .attackType(DDoSAttackType.getTypeMaskFromAttackType( - Optional.ofNullable(req.getAttackType()) - .orElse(new Integer[]{DDoSAttackType.ALL_ATTACKS.getValue()}))) - .flowBandWidth(Optional.ofNullable(req.getFlowBandwidth()) - .orElse(DisposeConfigValue.DEFAULT_DISPOSE_BANDWIDTH)) - .build(); + .deviceId(Long.parseLong(Optional.ofNullable(req.getId()).orElse("-1"))) + .accountId(userAccountService.getUserIdByAuthHead(Objects.requireNonNull(headers.get("Authorization")) + .get(0))) + .disposeCapacity(CommonEnumHandler.codeOf(DisposeCapacityType.class, + req.getType())) + .disposeIp(Helper.ipAddressNormalize(req.getDisposeIp())) + .planEndTime(String.valueOf(req.getDisposeTime())) + .flowDirection(CommonEnumHandler.codeOf(NetflowDirection.class, + Optional.ofNullable(req.getFlowDirection()) + .orElse(2))) + .attackType(DDoSAttackType.getTypeMaskFromAttackType( + Optional.ofNullable(req.getAttackType()) + .orElse(new Integer[]{DDoSAttackType.ALL_ATTACKS.getValue()}))) + .flowBandWidth(Optional.ofNullable(req.getFlowBandwidth()) + .orElse(DisposeConfigValue.DEFAULT_DISPOSE_BANDWIDTH)) + .build(); // 创建处置任务 MulReturnType ret = disposeTaskService.createTask(task); // 设置返回消息 TaskStartRsp rspInfo = TaskStartRsp.builder() - .disposeIp(task.getDisposeIp()) - .build(); + .disposeIp(task.getDisposeIp()) + .build(); rspInfo.setStatus(ret.getFirstParam().getCode()); rspInfo.setMessage(new String[]{ret.getFirstParam().getMsg()}); @@ -126,23 +134,30 @@ public class DisposeTaskController { return ProtocolRespDTO.result(ret.getFirstParam(), rspInfo); } + /** + * Start task mul ip protocol resp dto. + * + * @param mr the mr + * @param headers the headers + * @return the protocol resp dto + */ @PostMapping("/startMulIp") @ResponseBody @ApiOperation("启动处置任务") public ProtocolRespDTO startTaskMulIp(@Validated(ValidGroups.TaskStartMulReqValid.class) - @RequestBody ProtocolReqDTO mr, - @NotNull @RequestHeader HttpHeaders headers) { + @RequestBody ProtocolReqDTO mr, + @NotNull @RequestHeader HttpHeaders headers) { TaskStartReq req = mr.getMsgContent(); Long devId = Long.parseLong(Optional.ofNullable(req.getId()).orElse("-1")); Long aId = userAccountService.getUserIdByAuthHead(Objects.requireNonNull(headers.get("Authorization")).get(0)); DisposeCapacityType capType = CommonEnumHandler.codeOf(DisposeCapacityType.class, req.getType()); String endTime = String.valueOf(req.getDisposeTime()); NetflowDirection netDir = CommonEnumHandler.codeOf(NetflowDirection.class, - Optional.ofNullable(req.getFlowDirection()).orElse(2)); + 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.ALL_ATTACKS.getValue()})); Integer flowBand = Optional.ofNullable(req.getFlowBandwidth()) - .orElse(DisposeConfigValue.DEFAULT_DISPOSE_BANDWIDTH); + .orElse(DisposeConfigValue.DEFAULT_DISPOSE_BANDWIDTH); TaskStartMulRsp mulRsp = TaskStartMulRsp.builder() .items(new ArrayList<>()) @@ -151,23 +166,23 @@ public class DisposeTaskController { for (String ip : req.getMulDisposeIp()) { // 构造处置任务参数 DisposeTask task = DisposeTask.builder() - .deviceId(devId) - .accountId(aId) - .disposeCapacity(capType) - .disposeIp(Helper.ipAddressNormalize(ip)) - .planEndTime(endTime) - .flowDirection(netDir) - .attackType(attackType) - .flowBandWidth(flowBand) - .build(); + .deviceId(devId) + .accountId(aId) + .disposeCapacity(capType) + .disposeIp(Helper.ipAddressNormalize(ip)) + .planEndTime(endTime) + .flowDirection(netDir) + .attackType(attackType) + .flowBandWidth(flowBand) + .build(); // 创建处置任务 MulReturnType ret = disposeTaskService.createTask(task); // 设置返回消息 TaskStartRsp rspInfo = TaskStartRsp.builder() - .disposeIp(ip) - .build(); + .disposeIp(ip) + .build(); // 启动任务成功 if (ret.getFirstParam() == ErrorCode.ERR_OK || @@ -209,9 +224,9 @@ public class DisposeTaskController { // 停止成功 if (ret.getFirstParam() == ErrorCode.ERR_OK) { rspInfo.setDisposeDevice(ret.getSecondParam().getDeviceTask().stream() - .map(DeviceTask::getDeviceId) - .map(String::valueOf) - .toArray(String[]::new)); + .map(DeviceTask::getDeviceId) + .map(String::valueOf) + .toArray(String[]::new)); rspInfo.setType(ret.getSecondParam().getDisposeCapacity().getValue()); rspInfo.setDisposeIp(ret.getSecondParam().getDisposeIp()); rspInfo.setLeftTime(String.valueOf(Math.abs( @@ -227,4 +242,65 @@ public class DisposeTaskController { return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspList); } + + /** + * Gets all dispose task. + * + * @param mr the mr + * @return the all dispose task + */ + @PostMapping("/taskList") + @ResponseBody + @ApiOperation("获取处置任务") + public ProtocolRespDTO getAllDisposeTask( + @Validated(ValidGroups.ProtocolCommonValid.class) + @RequestBody ProtocolReqDTO mr + ) { + GetTaskRsp rspInfo = new GetTaskRsp(); + + MulReturnType, List> ret = + disposeTaskService.getPageDisposeTask(mr.getMsgContent().getStartPage(), + mr.getMsgContent().getPageSize()); + + // 拼装返回数据 + rspInfo.setStatus(ErrorCode.ERR_OK.getCode()); + rspInfo.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()}); + + // 分页信息 + rspInfo.setCurPageNumber(ret.getFirstParam().getPageNum()); + rspInfo.setPageSize(ret.getFirstParam().getPageSize()); + rspInfo.setTotalItems((int) ret.getFirstParam().getTotal()); + rspInfo.setTotalPages(ret.getFirstParam().getPages()); + + ret.getSecondParam().forEach(v -> { + GetTaskDetail taskDetail = GetTaskDetail.builder() + .taskId(String.valueOf(v.getId())) + .accountId(String.valueOf(v.getAccountId())) + .disposeCapacity(v.getDisposeCapacity().getValue()) + .disposeIp(v.getDisposeIp()) + .createTime(v.getCreateTime()) + .planEndTime(v.getPlanEndTime()) + .endTime(v.getEndTime()) + .flowDirection(v.getFlowDirection().getValue()) + .attackType(v.getAttackType().toString()) + .flowBandWidth(v.getFlowBandWidth()) + .currentStatus(v.getCurrentStatus().getValue()) + .deviceTask(new ArrayList<>()) + .build(); + v.getDeviceTask().forEach(k -> { + GetDeviceTaskDetail deviceTaskDetail = GetDeviceTaskDetail.builder() + .devTaskId(String.valueOf(k.getId())) + .devId(String.valueOf(k.getDeviceId())) + .externId(String.valueOf(k.getExternId())) + .status(k.getStatus()) + .build(); + + taskDetail.getDeviceTask().add(deviceTaskDetail); + }); + + rspInfo.getItems().add(taskDetail); + }); + + return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); + } } diff --git a/src/main/java/com/dispose/manager/DisposeTaskManager.java b/src/main/java/com/dispose/manager/DisposeTaskManager.java index dd90a898..224a1907 100644 --- a/src/main/java/com/dispose/manager/DisposeTaskManager.java +++ b/src/main/java/com/dispose/manager/DisposeTaskManager.java @@ -4,6 +4,8 @@ import com.dispose.common.DisposeCapacityType; import com.dispose.common.DisposeTaskStatus; import com.dispose.common.ErrorCode; import com.dispose.pojo.entity.DisposeTask; +import com.dispose.pojo.po.MulReturnType; +import com.github.pagehelper.PageInfo; import java.util.List; @@ -62,4 +64,13 @@ public interface DisposeTaskManager { */ DisposeTask getDisposeTaskById(Long taskId); + /** + * Gets pages of task. + * + * @param startPage the start page + * @param pageSize the page size + * @return the pages of task + */ + MulReturnType, List> getPagesOfTask(Integer startPage, + Integer pageSize); } diff --git a/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java index ac4d7d21..0ab3c6f4 100644 --- a/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java @@ -7,10 +7,14 @@ import com.dispose.manager.DisposeTaskManager; import com.dispose.mapper.DeviceTaskMapper; import com.dispose.mapper.DisposeTaskMapper; import com.dispose.pojo.entity.DisposeTask; +import com.dispose.pojo.po.MulReturnType; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -103,4 +107,28 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager { public DisposeTask getDisposeTaskById(Long taskId) { return disposeTaskMapper.getDisposeTaskById(taskId); } + + /** + * Gets pages of task. + * + * @param startPage the start page + * @param pageSize the page size + * @return the pages of task + */ + @Override + public MulReturnType, List> getPagesOfTask(Integer startPage, + Integer pageSize) { + // 设置分页信息 + PageHelper.startPage(startPage, pageSize); + + List taskList = disposeTaskMapper.selectAll(); + + if(taskList == null) { + taskList = new ArrayList<>(); + } + + PageInfo pageInfo = new PageInfo<>(taskList); + + return new MulReturnType<>(pageInfo, taskList); + } } diff --git a/src/main/java/com/dispose/pojo/dto/protocol/device/info/DeviceVersionDetail.java b/src/main/java/com/dispose/pojo/dto/protocol/device/info/DeviceDetail.java similarity index 76% rename from src/main/java/com/dispose/pojo/dto/protocol/device/info/DeviceVersionDetail.java rename to src/main/java/com/dispose/pojo/dto/protocol/device/info/DeviceDetail.java index d60a767e..333cf70a 100644 --- a/src/main/java/com/dispose/pojo/dto/protocol/device/info/DeviceVersionDetail.java +++ b/src/main/java/com/dispose/pojo/dto/protocol/device/info/DeviceDetail.java @@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; /** - * The type Device version detail. + * The type Device detail. * * @author */ @@ -19,9 +19,9 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor -@JsonPropertyOrder({"id", "ipAddr", "ipPort", "version", "status", "message"}) +@JsonPropertyOrder({"id", "ipAddr", "ipPort", "version", "online" ,"status", "message"}) @JsonInclude(JsonInclude.Include.NON_NULL) -public class DeviceVersionDetail extends BaseIdResp { +public class DeviceDetail extends BaseIdResp { /** * The Ip addr. */ @@ -34,4 +34,8 @@ public class DeviceVersionDetail extends BaseIdResp { * The Version. */ private String version; + /** + * The Online. + */ + private Integer online; } diff --git a/src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDevVerReq.java b/src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDevVerReq.java deleted file mode 100644 index 3a15dd94..00000000 --- a/src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDevVerReq.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dispose.pojo.dto.protocol.device.info; - -public class GetDevVerReq { -} diff --git a/src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDeviceVerInfoRsp.java b/src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDeviceInfoRsp.java similarity index 72% rename from src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDeviceVerInfoRsp.java rename to src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDeviceInfoRsp.java index 6c4b5b60..4c78e00c 100644 --- a/src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDeviceVerInfoRsp.java +++ b/src/main/java/com/dispose/pojo/dto/protocol/device/info/GetDeviceInfoRsp.java @@ -8,7 +8,7 @@ import lombok.Data; import java.util.List; /** - * The type Get device ver info rsp. + * The type Get device info rsp. * * @author */ @@ -16,9 +16,9 @@ import java.util.List; @Builder @AllArgsConstructor @JsonPropertyOrder({"items", "status", "message"}) -public class GetDeviceVerInfoRsp { +public class GetDeviceInfoRsp { /** - * The Device version. + * The Items. */ - private List items; + private List items; } diff --git a/src/main/java/com/dispose/pojo/dto/protocol/device/manager/GetDeviceReq.java b/src/main/java/com/dispose/pojo/dto/protocol/device/manager/BasePagesGetReq.java similarity index 97% rename from src/main/java/com/dispose/pojo/dto/protocol/device/manager/GetDeviceReq.java rename to src/main/java/com/dispose/pojo/dto/protocol/device/manager/BasePagesGetReq.java index 0ae47649..f911255b 100644 --- a/src/main/java/com/dispose/pojo/dto/protocol/device/manager/GetDeviceReq.java +++ b/src/main/java/com/dispose/pojo/dto/protocol/device/manager/BasePagesGetReq.java @@ -21,7 +21,7 @@ import javax.validation.constraints.Positive; @NoArgsConstructor @AllArgsConstructor @JsonInclude(JsonInclude.Include.NON_NULL) -public class GetDeviceReq { +public class BasePagesGetReq { /** * The Start page. */ diff --git a/src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java b/src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java new file mode 100644 index 00000000..5662e53e --- /dev/null +++ b/src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java @@ -0,0 +1,38 @@ +package com.dispose.pojo.dto.protocol.task; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * The type Get device task detail. + * + * @author + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@JsonPropertyOrder({"devTaskId", "devId", "externId", "status"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GetDeviceTaskDetail { + /** + * The Dev task id. + */ + private String devTaskId; + /** + * The Dev id. + */ + private String devId; + /** + * The Extern id. + */ + private String externId; + /** + * The Status. + */ + private Long status; +} diff --git a/src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskDetail.java b/src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskDetail.java new file mode 100644 index 00000000..f6e32d92 --- /dev/null +++ b/src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskDetail.java @@ -0,0 +1,74 @@ +package com.dispose.pojo.dto.protocol.task; + +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 java.util.List; + +/** + * The type Get task detail. + * + * @author + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonPropertyOrder({"taskId", "accountId", "disposeCapacity", "disposeIp", "createTime", "planEndTime", "endTime", + "flowDirection", "attackType", "flowBandWidth", "currentStatus", "deviceTask"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GetTaskDetail { + + /** + * The Task id. + */ + private String taskId; + /** + * The Account id. + */ + private String accountId; + /** + * The Dispose capacity. + */ + private Integer disposeCapacity; + /** + * The Dispose ip. + */ + private String disposeIp; + /** + * The Create time. + */ + private String createTime; + /** + * The Plan end time. + */ + private String planEndTime; + /** + * The End time. + */ + private String endTime; + /** + * The Flow direction. + */ + private Integer flowDirection; + /** + * The Attack type. + */ + private String attackType; + /** + * The Flow band width. + */ + private Integer flowBandWidth; + /** + * The Current status. + */ + private Integer currentStatus; + /** + * The Device task. + */ + private List deviceTask; +} diff --git a/src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskRsp.java b/src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskRsp.java new file mode 100644 index 00000000..e769cab9 --- /dev/null +++ b/src/main/java/com/dispose/pojo/dto/protocol/task/GetTaskRsp.java @@ -0,0 +1,55 @@ +package com.dispose.pojo.dto.protocol.task; + +import com.dispose.pojo.dto.protocol.base.BaseRespStatus; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.ArrayList; +import java.util.List; + +/** + * The type Get task rsp. + * + * @author + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +@AllArgsConstructor +@JsonPropertyOrder({"curPageNumber", "pageSize", "totalItems", "totalPages", "status", "message", "items"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GetTaskRsp extends BaseRespStatus { + + /** + * The Cur page number. + */ + private Integer curPageNumber; + /** + * The Page size. + */ + private Integer pageSize; + /** + * The Total items. + */ + private Integer totalItems; + /** + * The Total pages. + */ + private Integer totalPages; + + /** + * The Items. + */ + private List items; + + /** + * Instantiates a new Get task rsp. + */ + public GetTaskRsp() { + this.items = new ArrayList<>(); + } +} diff --git a/src/main/java/com/dispose/pojo/dto/protocol/task/TaskStartReq.java b/src/main/java/com/dispose/pojo/dto/protocol/task/TaskStartReq.java index 416e863f..fdf4d640 100644 --- a/src/main/java/com/dispose/pojo/dto/protocol/task/TaskStartReq.java +++ b/src/main/java/com/dispose/pojo/dto/protocol/task/TaskStartReq.java @@ -8,7 +8,6 @@ import com.dispose.validation.valids.ValidArrayIpAddr; import com.dispose.validation.valids.ValidBaseEnum; import com.dispose.validation.valids.ValidBaseEnumArray; import com.dispose.validation.valids.ValidIpAddr; -import com.dispose.validation.valids.ValidSplitPageSize; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/dispose/pojo/entity/DisposeTask.java b/src/main/java/com/dispose/pojo/entity/DisposeTask.java index 2d17fdb1..ef2acc04 100644 --- a/src/main/java/com/dispose/pojo/entity/DisposeTask.java +++ b/src/main/java/com/dispose/pojo/entity/DisposeTask.java @@ -43,7 +43,6 @@ public class DisposeTask implements Serializable { @Id @KeySql(useGeneratedKeys = true) private Long id; - /** * The Device id. */ diff --git a/src/main/java/com/dispose/service/DisposeTaskService.java b/src/main/java/com/dispose/service/DisposeTaskService.java index 6bbfd558..aabb2ff0 100644 --- a/src/main/java/com/dispose/service/DisposeTaskService.java +++ b/src/main/java/com/dispose/service/DisposeTaskService.java @@ -3,6 +3,9 @@ package com.dispose.service; import com.dispose.common.ErrorCode; import com.dispose.pojo.entity.DisposeTask; import com.dispose.pojo.po.MulReturnType; +import com.github.pagehelper.PageInfo; + +import java.util.List; /** * The interface Dispose task service. @@ -35,4 +38,13 @@ public interface DisposeTaskService { */ DisposeTask getDisposeTask(Long taskId); + /** + * Gets page dispose task. + * + * @param startPage the start page + * @param pageSize the page size + * @return the page dispose task + */ + MulReturnType, List> getPageDisposeTask(Integer startPage, + Integer pageSize); } diff --git a/src/main/java/com/dispose/service/impl/DisposeTaskServiceImpl.java b/src/main/java/com/dispose/service/impl/DisposeTaskServiceImpl.java index 722bd1db..f3a028ea 100644 --- a/src/main/java/com/dispose/service/impl/DisposeTaskServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DisposeTaskServiceImpl.java @@ -7,9 +7,11 @@ import com.dispose.pojo.entity.DisposeTask; import com.dispose.pojo.po.MulReturnType; import com.dispose.service.DisposeAbilityRouterService; import com.dispose.service.DisposeTaskService; +import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; /** * The type Dispose task service. @@ -24,6 +26,9 @@ public class DisposeTaskServiceImpl implements DisposeTaskService { @Resource DisposeTaskManager disposeTaskManager; + /** + * The Dispose ability router service. + */ @Resource DisposeAbilityRouterService disposeAbilityRouterService; @@ -90,4 +95,16 @@ public class DisposeTaskServiceImpl implements DisposeTaskService { return disposeTaskManager.getDisposeTaskById(taskId); } + /** + * Gets page dispose task. + * + * @param startPage the start page + * @param pageSize the page size + * @return the page dispose task + */ + @Override + public MulReturnType, List> getPageDisposeTask(Integer startPage, + Integer pageSize) { + return disposeTaskManager.getPagesOfTask(startPage, pageSize); + } } diff --git a/src/main/java/com/dispose/validation/valids/ValidIpPort.java b/src/main/java/com/dispose/validation/valids/ValidIpPort.java index 4ff19f75..c43059d7 100644 --- a/src/main/java/com/dispose/validation/valids/ValidIpPort.java +++ b/src/main/java/com/dispose/validation/valids/ValidIpPort.java @@ -10,11 +10,21 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * The interface Valid ip port. + * + * @author + */ @Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented @Constraint(validatedBy = {ValidIpPortImpl.class}) public @interface ValidIpPort { + /** + * Message string. + * + * @return the string + */ String message(); /** diff --git a/src/main/java/com/dispose/validation/valids/ValidSplitPageSize.java b/src/main/java/com/dispose/validation/valids/ValidSplitPageSize.java index 0ff6396f..492c47c0 100644 --- a/src/main/java/com/dispose/validation/valids/ValidSplitPageSize.java +++ b/src/main/java/com/dispose/validation/valids/ValidSplitPageSize.java @@ -10,11 +10,21 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * The interface Valid split page size. + * + * @author + */ @Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented @Constraint(validatedBy = {ValidSplitPageSizeImpl.class}) public @interface ValidSplitPageSize { + /** + * Message string. + * + * @return the string + */ String message() default ""; /** diff --git a/src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java b/src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java index 97c47f8a..ce813665 100644 --- a/src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java +++ b/src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java @@ -18,8 +18,8 @@ import com.dispose.pojo.dto.protocol.device.manager.AddDeviceInfo; import com.dispose.pojo.dto.protocol.device.manager.AddDeviceReq; import com.dispose.pojo.dto.protocol.device.manager.AddDeviceRet; import com.dispose.pojo.dto.protocol.device.manager.AddDeviceRsp; +import com.dispose.pojo.dto.protocol.device.manager.BasePagesGetReq; import com.dispose.pojo.dto.protocol.device.manager.DeviceInfoRsp; -import com.dispose.pojo.dto.protocol.device.manager.GetDeviceReq; import com.dispose.pojo.dto.protocol.device.manager.GetDeviceRsp; import com.dispose.pojo.entity.DisposeDevice; import com.dispose.pojo.po.MulReturnType; @@ -373,13 +373,13 @@ public class DisposeDeviceManagerControllerTest extends InitTestEnvironment { public void d1_getAllDisposeDevice() throws Exception { List deviceList = disposeDeviceMapper.selectAll(); - GetDeviceReq getReq = new GetDeviceReq(); + BasePagesGetReq getReq = new BasePagesGetReq(); for (int i = 1; i < 5; i++) { getReq.setStartPage(i); getReq.setPageSize(i * 10); - ProtocolReqDTO reqInfo = new ProtocolReqDTO<>(); + ProtocolReqDTO reqInfo = new ProtocolReqDTO<>(); reqInfo.setVer(ConstValue.Protocol.VERSION); reqInfo.setCryptoType(ProtoCryptoType.CRYPTO_NONE.getCode());