REM:
1. 增加添加节点入口
This commit is contained in:
huangxin 2020-04-13 19:50:13 +08:00
parent b5fe65f728
commit a7cdb3b9dc
7 changed files with 240 additions and 87 deletions

View File

@ -1,87 +0,0 @@
package com.cmcc.hy.phoenix.controller;
import com.cmcc.hy.phoenix.annotation.bodyencdec.ReqDec;
import com.cmcc.hy.phoenix.common.ConstValue;
import com.cmcc.hy.phoenix.common.ErrorCode;
import com.cmcc.hy.phoenix.pojo.dto.ProtocolDTO;
import com.cmcc.hy.phoenix.pojo.vo.ProtocolResp;
import com.cmcc.hy.phoenix.service.LoginService;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Builder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Objects;
import static com.cmcc.hy.phoenix.common.ErrorCode.ERR_OK;
@Controller
@RequestMapping(value = "/handle")
@Slf4j
@Api(value = "抗DDoS处置平台认证接口", tags = "抗DDoS处置平台认证接口")
@Component
public class DispointPointController {
@Resource
private ObjectMapper objectMapper;
@Resource
private LoginService loginService;
@PostMapping("/manager")
@ResponseBody
@ApiOperation("节点管理")
@ReqDec
@Builder
public ProtocolResp disposePointManager(@RequestBody(required = true) ProtocolDTO mr,
@RequestHeader HttpHeaders headers){
// 存放返回信息Json字符串
String msgCtx = "";
ErrorCode err = ERR_OK;
log.info("请求token: {}", headers.get("Authorization"));
log.info("请求参数 {}", mr);
// 参数检测
if (mr == null) {
err = ErrorCode.ERR_PARAMS;
return ProtocolResp.result(err, -1, msgCtx);
} else if (mr.IsRequestTimeout()) {
err = ErrorCode.ERR_REQTIMEOUT;
} else {
//try{
// 获取 Token
String token = Objects.
requireNonNull(headers.get("Authorization"))
.get(0).replaceFirst("Bearer ", "");
// 判断Head头是否存在
if (headers.get("Authorization") == null) {
err = ErrorCode.ERR_MISSAUTHHEAD;
} else if ((err = loginService.authTokenCheck(token)) == ERR_OK) {
// Token 正确则处理业务
switch (mr.getCmdId()) {
case ConstValue.ProtocolCmdId.ADD_DISPOSE_POINT:
break;
case ConstValue.ProtocolCmdId.DEL_DISPOSE_POINT:
break;
default:
err = ErrorCode.ERR_UNKNOWNCMD;
}
}
// } catch (JsonProcessingException | NoSuchAlgorithmException ex) {
// log.error(ex.getMessage());
// err = ErrorCode.ERR_EXCEPTION;
// }
}
return ProtocolResp.result(err, mr.getCmdId(), msgCtx);
}
}

View File

@ -0,0 +1,145 @@
package com.cmcc.hy.phoenix.controller;
import com.cmcc.hy.phoenix.annotation.bodyencdec.ReqDec;
import com.cmcc.hy.phoenix.common.ConstValue;
import com.cmcc.hy.phoenix.common.ErrorCode;
import com.cmcc.hy.phoenix.pojo.dto.ProtocolDTO;
import com.cmcc.hy.phoenix.pojo.entity.DeviceCapacity;
import com.cmcc.hy.phoenix.pojo.entity.DisposeDevice;
import com.cmcc.hy.phoenix.pojo.po.DeviceCmdInfo;
import com.cmcc.hy.phoenix.pojo.vo.AddDispointPointReq;
import com.cmcc.hy.phoenix.pojo.vo.DevManagerResp;
import com.cmcc.hy.phoenix.pojo.vo.ProtocolResp;
import com.cmcc.hy.phoenix.service.DisposeDeviceManager;
import com.cmcc.hy.phoenix.service.LoginService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Builder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Objects;
import static com.cmcc.hy.phoenix.common.ErrorCode.ERR_OK;
@Controller
@RequestMapping(value = "/handle")
@Slf4j
@Api(value = "抗DDoS处置平台认证接口", tags = "抗DDoS处置平台认证接口")
@Component
public class DisposePointController {
@Resource
private ObjectMapper objectMapper;
@Resource
private LoginService loginService;
@Resource
private DisposeDeviceManager disposeDeviceManager;
@PostMapping("/manager")
@ResponseBody
@ApiOperation("节点管理")
@ReqDec
@Builder
public ProtocolResp disposePointManager(@RequestBody(required = true) ProtocolDTO mr,
@RequestHeader HttpHeaders headers) {
// 存放返回信息Json字符串
String msgCtx = "";
ErrorCode err = ERR_OK;
log.info("请求token: {}", headers.get("Authorization"));
log.info("请求参数 {}", mr);
// 参数检测
if (mr == null) {
err = ErrorCode.ERR_PARAMS;
return ProtocolResp.result(err, -1, msgCtx);
} else if (mr.IsRequestTimeout()) {
err = ErrorCode.ERR_REQTIMEOUT;
} else {
try {
// 获取 Token
String token = Objects.
requireNonNull(headers.get("Authorization"))
.get(0).replaceFirst("Bearer ", "");
// 判断Head头是否存在
if (headers.get("Authorization") == null) {
err = ErrorCode.ERR_MISSAUTHHEAD;
} else if ((err = loginService.authTokenCheck(token)) == ERR_OK) {
// Token 正确则处理业务
switch (mr.getCmdId()) {
case ConstValue.ProtocolCmdId.ADD_DISPOSE_POINT:
msgCtx = addDisposePoint(mr);
break;
case ConstValue.ProtocolCmdId.DEL_DISPOSE_POINT:
break;
default:
err = ErrorCode.ERR_UNKNOWNCMD;
}
}
} catch (JsonProcessingException ex) {
log.error(ex.getMessage());
err = ErrorCode.ERR_EXCEPTION;
}
}
return ProtocolResp.result(err, mr.getCmdId(), msgCtx);
}
private String addDisposePoint(ProtocolDTO mr)
throws JsonProcessingException {
ErrorCode err = ErrorCode.ERR_OK;
DevManagerResp rspInfo = new DevManagerResp();
List<DeviceCmdInfo> devRsp = new ArrayList<>();
rspInfo.setResult(devRsp);
AddDispointPointReq reqInfo = objectMapper.readValue(mr.getMsgContent(), AddDispointPointReq.class);
reqInfo.getItems().forEach(v -> {
//
DisposeDevice dev = new DisposeDevice();
dev.setIpv4(v.getIp());
dev.setType(v.getType());
dev.setAreaCode(v.getAreaCode());
dev.setName(v.getName());
dev.setReadme(v.getReadme());
dev.setManufacturer(v.getManufacturer());
dev.setModel(v.getModel());
dev.setVersion(v.getVersion());
dev.setDevCaps(new ArrayList<>());
v.getCapacity().forEach(k -> {
DeviceCapacity devCap = new DeviceCapacity();
devCap.setCapacity(k.getType());
devCap.setTolFlowCapacity(k.getTolFlowCapacity());
dev.getDevCaps().add(devCap);
});
EnumMap<ErrorCode, Long> ret = disposeDeviceManager.addNewDisposeDevice(dev);
ErrorCode errno = ret.keySet().iterator().next();
devRsp.add(new DeviceCmdInfo(v.getId(), String.valueOf(ret.get(errno)), errno.getCode(), errno.getMsg()));
});
return objectMapper.writeValueAsString(rspInfo);
}
}

View File

@ -0,0 +1,17 @@
package com.cmcc.hy.phoenix.pojo.po;
import lombok.*;
import org.springframework.lang.Nullable;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DeciveCaps {
private int type;
@Nullable
private int tolFlowCapacity;
@Nullable
private String disposeIp;
}

View File

@ -0,0 +1,18 @@
package com.cmcc.hy.phoenix.pojo.po;
import com.fasterxml.jackson.annotation.JsonFilter;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@Builder
public class DeviceCmdInfo {
private String id;
private String devId;
private int status;
private String message;
}

View File

@ -0,0 +1,28 @@
package com.cmcc.hy.phoenix.pojo.po;
import lombok.*;
import org.springframework.lang.Nullable;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DisposeAddInfo {
private String id;
private int type;
private String name;
private String ip;
private int areaCode;
@Nullable
private String manufacturer;
@Nullable
private String model;
@Nullable
private String version;
@Nullable
private String readme;
private List<DeciveCaps> capacity;
}

View File

@ -0,0 +1,17 @@
package com.cmcc.hy.phoenix.pojo.vo;
import com.cmcc.hy.phoenix.pojo.po.DisposeAddInfo;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class AddDispointPointReq {
private List<DisposeAddInfo> items;
}

View File

@ -0,0 +1,15 @@
package com.cmcc.hy.phoenix.pojo.vo;
import com.cmcc.hy.phoenix.pojo.po.DeviceCmdInfo;
import lombok.*;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DevManagerResp {
private List<DeviceCmdInfo> result;
}