提交 9ec007c0 authored 作者: wangqiang's avatar wangqiang

问题修改

上级 d31675c6
...@@ -4,11 +4,12 @@ import com.priusis.client.data.kv.KvEntry; ...@@ -4,11 +4,12 @@ import com.priusis.client.data.kv.KvEntry;
import com.priusis.client.extensions.ExtensionUpdate; import com.priusis.client.extensions.ExtensionUpdate;
import com.priusis.client.extensions.http.conf.HttpConfiguration; import com.priusis.client.extensions.http.conf.HttpConfiguration;
import com.priusis.client.service.MqttDeliveryFuture; import com.priusis.client.service.MqttDeliveryFuture;
import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.client.service.conf.PcExtensionConfiguration; import com.priusis.client.service.conf.PcExtensionConfiguration;
import com.priusis.client.service.core.MqttService; import com.priusis.client.service.core.MqttService;
import com.priusis.client.service.data.DeviceData; import com.priusis.client.service.data.DeviceData;
import com.priusis.client.service.data.RpcCommandResponse;
import com.priusis.client.util.ConfigurationTools; import com.priusis.client.util.ConfigurationTools;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
...@@ -87,6 +88,16 @@ public class DefaultHttpService extends ExtensionUpdate implements HttpService { ...@@ -87,6 +88,16 @@ public class DefaultHttpService extends ExtensionUpdate implements HttpService {
return mqttService.flushRpcDataToFile(mqttRpcDataMessage); return mqttService.flushRpcDataToFile(mqttRpcDataMessage);
} }
@Override
public void processRpcRes(String token, MqttRpcDataMessage mqttRpcDataMessage) throws Exception {
RpcCommandResponse rpcCommandResponse = new RpcCommandResponse();
rpcCommandResponse.setRequestId(mqttRpcDataMessage.getRequestId());
rpcCommandResponse.setBizRequestId(mqttRpcDataMessage.getBizRequestId());
rpcCommandResponse.setMethod(mqttRpcDataMessage.getMethod());
rpcCommandResponse.setData(mqttRpcDataMessage.getParams());
mqttService.onDeviceRpcResponse(rpcCommandResponse);
}
@Override @Override
public MqttRpcDataMessage readFromFile(String method) throws IOException { public MqttRpcDataMessage readFromFile(String method) throws IOException {
return mqttService.readFromFile(method); return mqttService.readFromFile(method);
......
...@@ -3,8 +3,8 @@ package com.priusis.client.extensions.http; ...@@ -3,8 +3,8 @@ package com.priusis.client.extensions.http;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.priusis.client.extensions.http.conf.HttpRequestProcessingError; import com.priusis.client.extensions.http.conf.HttpRequestProcessingError;
import com.priusis.client.service.TenantManagerService;
import com.priusis.client.service.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.client.service.TenantManagerService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
...@@ -14,8 +14,6 @@ import org.springframework.web.bind.annotation.*; ...@@ -14,8 +14,6 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import static com.priusis.client.util.JsonTools.fromString;
@RestController @RestController
@Slf4j @Slf4j
public class HttpController { public class HttpController {
...@@ -53,6 +51,16 @@ public class HttpController { ...@@ -53,6 +51,16 @@ public class HttpController {
} }
} }
@RequestMapping(value = "/rpc_res/{token}", method = RequestMethod.POST)
public void handleRpcResDataRequest(@PathVariable String token, @RequestBody String body) {
MqttRpcDataMessage mqttRpcDataMessage = JSONUtil.toBean(body, MqttRpcDataMessage.class);
try {
service.processRpcRes(token, mqttRpcDataMessage);
} catch (Exception e) {
log.error("Failed to process rpc res persistent : {}", body);
}
}
@ExceptionHandler(Exception.class) @ExceptionHandler(Exception.class)
public void handlePriusisiotException(Exception exception, HttpServletResponse response) { public void handlePriusisiotException(Exception exception, HttpServletResponse response) {
log.debug("Processing exception {}", exception.getMessage(), exception); log.debug("Processing exception {}", exception.getMessage(), exception);
......
...@@ -14,5 +14,7 @@ public interface HttpService extends ExtensionService { ...@@ -14,5 +14,7 @@ public interface HttpService extends ExtensionService {
File flushRpcDataToFile(MqttRpcDataMessage mqttRpcDataMessage) throws IOException; File flushRpcDataToFile(MqttRpcDataMessage mqttRpcDataMessage) throws IOException;
void processRpcRes(String token, MqttRpcDataMessage mqttRpcDataMessage) throws Exception;
MqttRpcDataMessage readFromFile(String method) throws IOException; MqttRpcDataMessage readFromFile(String method) throws IOException;
} }
...@@ -72,6 +72,11 @@ public abstract class DefaultTenantManagerService implements TenantManagerServic ...@@ -72,6 +72,11 @@ public abstract class DefaultTenantManagerService implements TenantManagerServic
httpService.processEventRequest(token, body); httpService.processEventRequest(token, body);
} }
@Override
public void processRpcRes(String token, MqttRpcDataMessage mqttRpcDataMessage) throws Exception {
httpService.processRpcRes(token, mqttRpcDataMessage);
}
@Override @Override
public File flushRpcDataToFile(MqttRpcDataMessage mqttRpcDataMessage) throws IOException { public File flushRpcDataToFile(MqttRpcDataMessage mqttRpcDataMessage) throws IOException {
return httpService.flushRpcDataToFile(mqttRpcDataMessage); return httpService.flushRpcDataToFile(mqttRpcDataMessage);
......
...@@ -12,6 +12,8 @@ public interface TenantManagerService { ...@@ -12,6 +12,8 @@ public interface TenantManagerService {
void processEventRequest(String token, String body) throws Exception; void processEventRequest(String token, String body) throws Exception;
void processRpcRes(String token, MqttRpcDataMessage mqttRpcDataMessage) throws Exception;
File flushRpcDataToFile(MqttRpcDataMessage mqttRpcDataMessage) throws IOException; File flushRpcDataToFile(MqttRpcDataMessage mqttRpcDataMessage) throws IOException;
MqttRpcDataMessage readFromFile(String method) throws IOException; MqttRpcDataMessage readFromFile(String method) throws IOException;
......
...@@ -9,7 +9,9 @@ import lombok.Data; ...@@ -9,7 +9,9 @@ import lombok.Data;
public class RpcCommandResponse { public class RpcCommandResponse {
private int requestId; private int requestId;
private String bizRequestId;
private String deviceName; private String deviceName;
private String method;
private String data; private String data;
} }
apq: apq:
iot-gateway: 192.168.124.19:7002 iot-gateway: 192.168.124.19:7002
webrtc_path: https://ceshi.priusis.com:8443
client: client:
productId: 210 productId: 210
tenantId: 156 tenantId: 156
......
...@@ -16,6 +16,7 @@ public class MqttRpcDataMessage implements Serializable { ...@@ -16,6 +16,7 @@ public class MqttRpcDataMessage implements Serializable {
private static final long serialVersionUID = -3133461476074777891L; private static final long serialVersionUID = -3133461476074777891L;
private int requestId; private int requestId;
private String bizRequestId;
private String method; private String method;
private Long sendTime; private Long sendTime;
private String params; private String params;
......
package com.priusis.job; package com.priusis.job;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.priusis.client.service.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
...@@ -78,10 +77,11 @@ public class ApqControlJob { ...@@ -78,10 +77,11 @@ public class ApqControlJob {
// 获取硬件监控配置 params == data // 获取硬件监控配置 params == data
ResponseEntity<MqttRpcDataMessage> forEntity = null; ResponseEntity<MqttRpcDataMessage> forEntity = null;
try { try {
forEntity = restTemplate.getForEntity("http://localhost:8765/rpc_cmd/controll", MqttRpcDataMessage.class); forEntity = restTemplate.getForEntity("http://localhost:8765/rpc_cmd/controll_4_merge", MqttRpcDataMessage.class);
} catch (Exception e) { } catch (Exception e) {
log.error("硬件监控上报异常", e.getMessage()); log.error("硬件监控上报异常", e.getMessage());
} }
if (null != forEntity) { if (null != forEntity) {
MqttRpcDataMessage body = forEntity.getBody(); MqttRpcDataMessage body = forEntity.getBody();
String params = body.getParams(); String params = body.getParams();
...@@ -90,99 +90,15 @@ public class ApqControlJob { ...@@ -90,99 +90,15 @@ public class ApqControlJob {
int result = IHwPortController.instanceDll.APQ_HWPORT_Initialize(); int result = IHwPortController.instanceDll.APQ_HWPORT_Initialize();
log.info("APQ_HWPORT_Initialize ret:{}", result); log.info("APQ_HWPORT_Initialize ret:{}", result);
try {
Long sendTime = body.getSendTime(); Long sendTime = body.getSendTime();
long current = System.currentTimeMillis();
List<HwPortControllerDto> hwPortControllerDtos = JSONUtil.toList(params, HwPortControllerDto.class); List<HwPortControllerDto> hwPortControllerDtos = JSONUtil.toList(params, HwPortControllerDto.class);
// 合并硬件请求检查
// 先获取数据
// 获取硬件监控配置 params == data
ResponseEntity<MqttRpcDataMessage> persistentEntity = null;
try { try {
persistentEntity = restTemplate.getForEntity("http://localhost:8765/rpc_cmd/controll_4_merge", MqttRpcDataMessage.class);
} catch (Exception e) {
log.error("硬件监控上报异常merge", e.getMessage());
}
List<HwPortControllerDto> persistentHwPortControllerDtos = null;
if (null != persistentEntity) {
MqttRpcDataMessage persistentEntityBody = persistentEntity.getBody();
String persistentEntityParams = persistentEntityBody.getParams();
if (StrUtil.isNotBlank(persistentEntityParams)) {
persistentHwPortControllerDtos = JSONUtil.toList(persistentEntityParams, HwPortControllerDto.class);
persistentHwPortControllerDtos.removeAll(hwPortControllerDtos);
persistentHwPortControllerDtos.addAll(hwPortControllerDtos);
}
} else {
persistentHwPortControllerDtos = hwPortControllerDtos;
}
MqttRpcDataMessage mqttRpcDataMessage = MqttRpcDataMessage.builder()
.sendTime(System.currentTimeMillis())
.method("controll_4_merge")
.params(JSONUtil.toJsonStr(persistentHwPortControllerDtos)).build();
restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class);
if (current - sendTime <= FIXED_DELAY && CollUtil.isNotEmpty(hwPortControllerDtos)) {
// 收到硬件策略下发请求
log.info("收到硬件策略下发请求, sendTime:{}, params:{}", sendTime, params);
for (HwPortControllerDto hwPortControllerDto : hwPortControllerDtos) {
HwPortControllerDto.DeviceHardwareEnum deviceHardwareEnum = hwPortControllerDto.getKey();
int doType = hwPortControllerDto.getDoType();
int limitType = hwPortControllerDto.getLimitType();
int value = hwPortControllerDto.getValue();
List<Integer> hwDeviceIds = deviceHardwareEnum.getHwDeviceIds();
String hwDeviceName = deviceHardwareEnum.getName();
// 设置普通设备权限
if (Objects.equals(deviceHardwareEnum.getHwGroup(), "Normal")) {
// 1F/2T
for (Integer hwDeviceId : hwDeviceIds) {
int perm = (doType == 1 ? 2 : 1);
int result32 = IHwPortController.instanceDll.APQ_HWPORT_set_normal_device_permit(hwDeviceId, perm, null);
log.info("APQ_HWPORT_set_normal_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32);
}
} else if (Objects.equals(deviceHardwareEnum.getHwGroup(), "Storage")) { // 设置存储设备权限
// 1F/2T/3T-ALL/4T-R/5T-CI/6T-CO 拷出目前无用!! Storage移动硬盘,TYPEC 无效 !!
for (Integer hwDeviceId : hwDeviceIds) {
int perm = (doType == 1 ? 2 : 1);
if (perm == 2) {
// limitType 1读写 2只读 3拷入 4拷出 5不限速 6限速
perm = (limitType == 1 ? 3 : limitType == 2 ? 4 : limitType == 3 ? 5 : limitType == 4 ? 6 : 3);
}
int result32 = IHwPortController.instanceDll.APQ_HWPORT_set_storage_device_permit(hwDeviceId, perm, null);
log.info("APQ_HWPORT_set_storage_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32);
}
} else if (Objects.equals(deviceHardwareEnum.getHwGroup(), "NET")) { // 设置网络设备权限
// 1F/2T/3T-NS/4T-S-200 网口,4G/5G模块,无线WIFI区分不了 !!
for (Integer hwDeviceId : hwDeviceIds) {
int perm = (doType == 1 ? 2 : 1);
if (perm == 2) {
// limitType 1读写 2只读 3拷入 4拷出 5不限速 6限速
perm = (limitType == 5 ? 3 : limitType == 6 ? 4 : 2);
}
int result32 = IHwPortController.instanceDll.APQ_HWPORT_set_net_device_permit(hwDeviceId, perm, value, null);
log.info("APQ_HWPORT_set_net_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32);
}
}
// 应用硬件接口管理模块的配置内容
int result5 = IHwPortController.instanceDll.APQ_HWPORT_Apply();
log.info("APQ_HWPORT_Apply ret:{}", result5);
}
} else {
log.info("执行硬件监控, sendTime:{}, params:{}", sendTime, params); log.info("执行硬件监控, sendTime:{}, params:{}", sendTime, params);
// 上报硬件监控数据 // 上报硬件监控数据
Map mapRequest = new HashMap(); Map mapRequest = new HashMap();
for (HwPortControllerDto hwPortControllerDto : persistentHwPortControllerDtos) { for (HwPortControllerDto hwPortControllerDto : hwPortControllerDtos) {
HwPortControllerDto.DeviceHardwareEnum deviceHardwareEnum = hwPortControllerDto.getKey(); HwPortControllerDto.DeviceHardwareEnum deviceHardwareEnum = hwPortControllerDto.getKey();
int doType = hwPortControllerDto.getDoType(); int doType = hwPortControllerDto.getDoType();
int limitType = hwPortControllerDto.getLimitType(); int limitType = hwPortControllerDto.getLimitType();
...@@ -247,7 +163,8 @@ public class ApqControlJob { ...@@ -247,7 +163,8 @@ public class ApqControlJob {
Map map = restTemplate.postForObject("http://localhost:8765/uplink_event/oc-client", eventMapRequest, Map.class); Map map = restTemplate.postForObject("http://localhost:8765/uplink_event/oc-client", eventMapRequest, Map.class);
log.info("存在硬件接口扫描告警,上报告警事件: mapData:{}, ret:{}", mapRequest, map); log.info("存在硬件接口扫描告警,上报告警事件: mapData:{}, ret:{}", mapRequest, map);
} }
} } catch (Exception e) {
log.error("APQ_HWPORT ERROR: {}", e.getMessage());
} finally { } finally {
result = IHwPortController.instanceDll.APQ_HWPORT_Uninitialize(); result = IHwPortController.instanceDll.APQ_HWPORT_Uninitialize();
log.info("APQ_HWPORT_Uninitialize ret:{}", result); log.info("APQ_HWPORT_Uninitialize ret:{}", result);
......
...@@ -44,27 +44,41 @@ public class DeviceChangeCallbackImpl implements IDeviceChangeCallback { ...@@ -44,27 +44,41 @@ public class DeviceChangeCallbackImpl implements IDeviceChangeCallback {
if (changeDataSplits.length >= 5) { if (changeDataSplits.length >= 5) {
String classData = changeDataSplits[4]; String classData = changeDataSplits[4];
String changeDataDesc = changeDataSplits[0]; String changeDataDesc = changeDataSplits[0];
boolean needPush = true;
String deviceClass = classData.split("=")[1].toUpperCase();
if (StrUtil.equalsIgnoreCase("class=Keyboard", classData)) { if (StrUtil.equalsIgnoreCase("class=Keyboard", classData)) {
changeDataDesc = "键盘"; changeDataDesc = "键盘";
} else if (StrUtil.equalsIgnoreCase("class=Mouse", classData)) { } else if (StrUtil.equalsIgnoreCase("class=Mouse", classData)) {
changeDataDesc = "鼠标"; changeDataDesc = "鼠标";
} else if (StrUtil.equalsIgnoreCase("class=DiskDrive", classData)) { } else if (StrUtil.equalsIgnoreCase("class=Bluetooth", classData)) {
changeDataDesc = "USB"; changeDataDesc = "无线蓝牙";
} else if (StrUtil.equalsIgnoreCase("class=CDROM", classData)) {
changeDataDesc = "光驱";
deviceClass = "CD_DRIVE";
} else if (StrUtil.equalsIgnoreCase("class=Ports", classData)) {
changeDataDesc = "串口";
deviceClass = "SERIAL_PORT";
} else if (StrUtil.equalsIgnoreCase("class=USB", classData)) {
changeDataDesc = "U盘/移动硬盘";
deviceClass = "USB_DRIVE";
List<String> addUSBs = USBCheck.getAddUSB(); List<String> addUSBs = USBCheck.getAddUSB();
if (null != addUSBs) { if (null != addUSBs) {
for (String addUSB : addUSBs) { for (String addUSB : addUSBs) {
antivirusDoService.doAntivirus(addUSB + ":"); antivirusDoService.doAntivirus(addUSB + ":");
} }
} }
} else {
needPush = false;
} }
String changeContent = String.format("%s%s", changeType == 1 ? "插入" : "拔出", changeDataDesc); String changeContent = String.format("%s%s", changeType == 1 ? "插入" : "拔出", changeDataDesc);
mapRequest.put("deviceClass", classData.split("=")[1]); mapRequest.put("deviceClass", deviceClass);
mapRequest.put("changeContent", changeContent); mapRequest.put("changeContent", changeContent);
mapRequest.put("changeRemark", changeData); mapRequest.put("changeRemark", changeData);
log.info("存在硬件接口扫描告警,上报告警事件!changeContent: {}, changeRemark: {}", changeContent, changeData); log.info("存在硬件接口扫描告警,上报告警事件!changeContent: {}, changeRemark: {}", changeContent, changeData);
if (needPush) {
Map eventMapRequest = new HashMap(); Map eventMapRequest = new HashMap();
eventMapRequest.put("requestId", 4); eventMapRequest.put("requestId", 4);
eventMapRequest.put("methodName", "control_dev_warning"); eventMapRequest.put("methodName", "control_dev_warning");
...@@ -73,4 +87,5 @@ public class DeviceChangeCallbackImpl implements IDeviceChangeCallback { ...@@ -73,4 +87,5 @@ public class DeviceChangeCallbackImpl implements IDeviceChangeCallback {
log.info("存在硬件接口扫描告警,上报告警事件: mapData:{}, ret:{}", mapRequest, map); log.info("存在硬件接口扫描告警,上报告警事件: mapData:{}, ret:{}", mapRequest, map);
} }
} }
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论