提交 99c9cd0d authored 作者: wangqiang's avatar wangqiang

海康客户端问题

上级 7997bd5f
...@@ -4,11 +4,11 @@ import com.priusis.client.data.kv.KvEntry; ...@@ -4,11 +4,11 @@ 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.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;
......
package com.priusis.client.extensions.http; package com.priusis.client.extensions.http;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.JsonNode;
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.MqttRpcDataMessage;
import com.priusis.client.service.TenantManagerService; import com.priusis.client.service.TenantManagerService;
import com.priusis.client.service.MqttRpcDataMessage;
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;
......
...@@ -7,7 +7,7 @@ import java.io.Serializable; ...@@ -7,7 +7,7 @@ import java.io.Serializable;
@Data @Data
@Builder @Builder
public class MqttRpcDataMessage implements Serializable { public class MqttRpcDataMessage2 implements Serializable {
private static final long serialVersionUID = -3133461476074777891L; private static final long serialVersionUID = -3133461476074777891L;
......
...@@ -2,12 +2,12 @@ package com.priusis.client.service.core; ...@@ -2,12 +2,12 @@ package com.priusis.client.service.core;
import com.priusis.client.data.kv.KvEntry; import com.priusis.client.data.kv.KvEntry;
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.data.AttributeRequest; import com.priusis.client.service.data.AttributeRequest;
import com.priusis.client.service.data.AttributeResponse; import com.priusis.client.service.data.AttributeResponse;
import com.priusis.client.service.data.AttributesUpdateSubscription; import com.priusis.client.service.data.AttributesUpdateSubscription;
import com.priusis.client.service.data.RpcCommandResponse; import com.priusis.client.service.data.RpcCommandResponse;
import com.priusis.client.service.MqttRpcDataMessage;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
......
package com.priusis.client.service.core; package com.priusis.client.service.core;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
...@@ -16,6 +17,7 @@ import com.priusis.controller.ProgramController; ...@@ -16,6 +17,7 @@ import com.priusis.controller.ProgramController;
import com.priusis.controller.RemoteControlController; import com.priusis.controller.RemoteControlController;
import com.priusis.lib.R; import com.priusis.lib.R;
import com.priusis.monitor.mqtt.*; import com.priusis.monitor.mqtt.*;
import com.priusis.service.common.MacAddrService;
import com.priusis.utils.*; import com.priusis.utils.*;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup;
...@@ -25,6 +27,8 @@ import io.netty.util.concurrent.Promise; ...@@ -25,6 +27,8 @@ import io.netty.util.concurrent.Promise;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -36,10 +40,8 @@ import java.io.*; ...@@ -36,10 +40,8 @@ import java.io.*;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.KeyStore; import java.security.KeyStore;
import java.util.List; import java.text.DecimalFormat;
import java.util.Map; import java.util.*;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.*; import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
...@@ -115,16 +117,22 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall ...@@ -115,16 +117,22 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
private volatile ObjectNode error; private volatile ObjectNode error;
private volatile Boolean realDataMonitor = false;
Sigar sigar = new Sigar();
private MqttClient tbClient; private MqttClient tbClient;
private ScheduledExecutorService scheduler; private ScheduledExecutorService scheduler;
private ExecutorService mqttSenderExecutor; private ExecutorService mqttSenderExecutor;
private ExecutorService mqttReceiverExecutor; private ExecutorService mqttReceiverExecutor;
private ExecutorService callbackExecutor = Executors.newCachedThreadPool(); private ExecutorService callbackExecutor = Executors.newCachedThreadPool();
private ScheduledExecutorService realDataMonitorScheduler;
@Autowired @Autowired
private NioEventLoopGroup nioEventLoopGroup; private NioEventLoopGroup nioEventLoopGroup;
@Autowired
private MacAddrService macAddrService;
@Resource @Resource
private RemoteControlController remoteControlController; private RemoteControlController remoteControlController;
...@@ -152,7 +160,15 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall ...@@ -152,7 +160,15 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
initMqttClient(); initMqttClient();
initMqttSender(incomingQueue); initMqttSender(incomingQueue);
initMqttReceiver(incomingQueue); initMqttReceiver(incomingQueue);
realDataMonitorScheduler = Executors.newSingleThreadScheduledExecutor();
// Map<String, Integer> mqttRpcDataMessageParam = Maps.newHashMap();
// mqttRpcDataMessageParam.put("minutes", 2);
// MqttRpcDataMessage mqttRpcDataMessage = MqttRpcDataMessage.builder().params(JSONUtil.toJsonStr(mqttRpcDataMessageParam)).build();
// realDataMonitorScheduler(mqttRpcDataMessage);
}); });
} }
private void initTimeouts() { private void initTimeouts() {
...@@ -168,6 +184,7 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall ...@@ -168,6 +184,7 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
@Override @Override
public void destroy() throws Exception { public void destroy() throws Exception {
scheduler.shutdownNow(); scheduler.shutdownNow();
realDataMonitorScheduler.shutdownNow();
callbackExecutor.shutdownNow(); callbackExecutor.shutdownNow();
mqttSenderExecutor.shutdownNow(); mqttSenderExecutor.shutdownNow();
mqttReceiverExecutor.shutdownNow(); mqttReceiverExecutor.shutdownNow();
...@@ -402,6 +419,15 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall ...@@ -402,6 +419,15 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
return; return;
} }
} }
// 数据更新频率变为一秒刷新一次
if ("real_data_monitor".equals(mqttRpcDataMessage.getMethod()) && !realDataMonitor) {
realDataMonitor = true;
log.info("数据上报频率请求接受!!! params: {}", mqttRpcDataMessage.getParams());
realDataMonitorScheduler(mqttRpcDataMessage);
realDataMonitor = false;
}
if ("facility_scan".equals(mqttRpcDataMessage.getMethod())) { if ("facility_scan".equals(mqttRpcDataMessage.getMethod())) {
log.info("收到平台扫描软件请求"); log.info("收到平台扫描软件请求");
programController.addProgram2Platform(); programController.addProgram2Platform();
...@@ -429,6 +455,83 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall ...@@ -429,6 +455,83 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
} }
} }
/**
* 数据上报频率请求
*
* @param mqttRpcDataMessage
*/
private void realDataMonitorScheduler(MqttRpcDataMessage mqttRpcDataMessage) {
// 持续时长
Integer durationSeconds = JSONUtil.parseObj(mqttRpcDataMessage.getParams()).getInt("minutes", 1) * 60;
Runnable runnable = new Runnable() {
int i = 1;
public void run() {
try {
if (i >= durationSeconds) {
realDataMonitorScheduler.shutdown();
}
String cpuLoad = "cpuLoad";
String cpuTemp = "cpuTemp";
String memoryOccupyRate = "memoryOccupyRate";
String diskFree = "diskFree";
// CPU负载
double cpuLoadV = Double.parseDouble(new DecimalFormat("#.00").format(sigar.getCpuPerc().getCombined() * 100));
int[] cpuAndGpuTemp = CoreTempUtil.getCpuAndGpuTemp();
// CPU温度
double cpuTempV = cpuAndGpuTemp[0];
Mem mem = sigar.getMem();
// 内存占用率
double memoryOccupyRateV = Double.parseDouble(new DecimalFormat("#.00").format(mem.getUsed() * 1.0 / mem.getTotal() * 100));
// 磁盘使用容量
String collect = null;
FileSystem[] diskStores;
Map<String, Object> data = null;
try {
diskStores = sigar.getFileSystemList();
collect = Arrays.stream(diskStores)
.filter(partition -> StrUtil.isNotBlank(partition.getDevName()))
.filter(partition -> 2 == partition.getType())
.map(partition -> {
try {
FileSystemUsage usage = sigar.getFileSystemUsage(partition.getDirName());
return "\"" + StrUtil.removeSuffix(partition.getDevName(), ":\\") + "盘\":\"" +
new DecimalFormat("#.00").format(100d * (usage.getTotal() - usage.getFree()) / usage.getTotal()) + "%\"";
} catch (SigarException e) {
log.error("SigarException: {}", e.getMessage());
}
return "";
})
.collect(Collectors.joining(",", "{", "}"));
} catch (Exception e) {
log.error("硬盘数据获取失败", e);
}
data = MapUtil.<String, Object>builder()
.put(cpuTemp, cpuTempV)
.put(cpuLoad, cpuLoadV)
.put(memoryOccupyRate, memoryOccupyRateV)
.put(diskFree, collect)
.build();
log.info("采集数据,上报属性: i:{}, mapData:{}", i, data);
List<KvEntry> attrData = getKvEntries(fromString(JSONUtil.toJsonStr(data)));
DeviceData dd = new DeviceData(attrData);
if (dd != null) {
if (!dd.getAttributes().isEmpty()) {
onDeviceAttributesUpdate(dd.getAttributes());
}
}
} catch (Throwable e) {
log.error("Real data monitor Runnable发生异常", e);
} finally {
i++;
}
}
};
realDataMonitorScheduler.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);
}
private void onGatewayAttributesGet(String message) { private void onGatewayAttributesGet(String message) {
log.info("Configuration arrived! {}", message); log.info("Configuration arrived! {}", message);
JsonNode payload = fromString(message); JsonNode payload = fromString(message);
...@@ -750,12 +853,29 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall ...@@ -750,12 +853,29 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
private MqttClientSecurityConfiguration getClientSecurityByMac() { private MqttClientSecurityConfiguration getClientSecurityByMac() {
String mac = null; String mac = null;
MqttRpcDataMessage mqttRpcDataMessage = null;
try {
mqttRpcDataMessage = readFromFile("mac_addr");
mac = mqttRpcDataMessage.getParams();
} catch (IOException e) {
log.warn("未获取到MAC地址 FROM mac_addr");
}
try { try {
mac = MacAddrUtil.get(); if (null == mqttRpcDataMessage) {
mac = MacAddrUtil.getSigarMac();
}
if (StrUtil.isBlank(mac)) { if (StrUtil.isBlank(mac)) {
log.warn("未获取到MAC地址"); log.warn("未获取到MAC地址");
return null; return null;
} }
MqttRpcDataMessage mqttRpcDataMessaget = MqttRpcDataMessage.builder()
.sendTime(System.currentTimeMillis())
.method("mac_addr")
.params(mac).build();
flushRpcDataToFile(mqttRpcDataMessaget);
macAddrService.initMacAddr(mac);
log.info("获取到MAC地址:{}", mac); log.info("获取到MAC地址:{}", mac);
// deviceInfo = StrUtil.format(deviceInfo, mac); // deviceInfo = StrUtil.format(deviceInfo, mac);
......
...@@ -4,10 +4,10 @@ import cn.hutool.core.convert.Convert; ...@@ -4,10 +4,10 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.client.service.TenantManagerService; import com.priusis.client.service.TenantManagerService;
import com.priusis.lib.R; import com.priusis.lib.R;
import com.priusis.utils.SysConfigUtil; import com.priusis.utils.SysConfigUtil;
import com.priusis.client.service.MqttRpcDataMessage;
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.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
......
...@@ -6,11 +6,12 @@ import cn.hutool.core.util.StrUtil; ...@@ -6,11 +6,12 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.priusis.lib.R; import com.priusis.lib.R;
import com.priusis.service.common.MacAddrService;
import com.priusis.utils.CoreTempUtil; import com.priusis.utils.CoreTempUtil;
import com.priusis.utils.MacAddrUtil;
import com.priusis.utils.Oshi4NoneSigarUtil; import com.priusis.utils.Oshi4NoneSigarUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.hyperic.sigar.*; import org.hyperic.sigar.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -34,6 +35,9 @@ import java.util.stream.Collectors; ...@@ -34,6 +35,9 @@ import java.util.stream.Collectors;
@RequestMapping(value = "device_info") @RequestMapping(value = "device_info")
public class DeviceInfoController { public class DeviceInfoController {
@Autowired
private MacAddrService macAddrService;
private Map<String, Object> info; private Map<String, Object> info;
Sigar sigar = new Sigar(); Sigar sigar = new Sigar();
...@@ -125,7 +129,7 @@ public class DeviceInfoController { ...@@ -125,7 +129,7 @@ public class DeviceInfoController {
info = MapUtil.<String, Object>builder() info = MapUtil.<String, Object>builder()
.put("operatingSystem", operatingSystem) .put("operatingSystem", operatingSystem)
.put("mac", MacAddrUtil.get()) .put("mac", macAddrService.getMacAddr())
.put("baseboard", baseboard) .put("baseboard", baseboard)
.put("ip", ip) .put("ip", ip)
.put("cpuModel", cpuModel) .put("cpuModel", cpuModel)
......
...@@ -8,8 +8,9 @@ import cn.hutool.json.JSONObject; ...@@ -8,8 +8,9 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.priusis.lib.R; import com.priusis.lib.R;
import com.priusis.utils.MacAddrUtil; import com.priusis.service.common.MacAddrService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -41,10 +42,13 @@ public class FacilityController { ...@@ -41,10 +42,13 @@ public class FacilityController {
@Value(value = "${apq.url.device_info_g}") @Value(value = "${apq.url.device_info_g}")
private String deviceInfoUrl; private String deviceInfoUrl;
@Autowired
private MacAddrService macAddrService;
@PostMapping("voiceCallPush") @PostMapping("voiceCallPush")
public R voiceCallPush() { public R voiceCallPush() {
String reqUrl = gateway + voiceCallPushUrl; String reqUrl = gateway + voiceCallPushUrl;
String mac = MacAddrUtil.get(); String mac = macAddrService.getMacAddr();
JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(reqUrl, JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(reqUrl,
JSONUtil.createObj().set("macAddress", mac).toString())); JSONUtil.createObj().set("macAddress", mac).toString()));
...@@ -56,7 +60,7 @@ public class FacilityController { ...@@ -56,7 +60,7 @@ public class FacilityController {
@PostMapping("voiceCall") @PostMapping("voiceCall")
public R voiceCall() { public R voiceCall() {
String reqUrl = gateway + voiceCallUrl; String reqUrl = gateway + voiceCallUrl;
String mac = MacAddrUtil.get(); String mac = macAddrService.getMacAddr();
// String mac = "68:ED:A4:1D:E8:00"; // String mac = "68:ED:A4:1D:E8:00";
JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(reqUrl, JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(reqUrl,
JSONUtil.createObj().set("macAddress", mac).toString())); JSONUtil.createObj().set("macAddress", mac).toString()));
......
...@@ -6,8 +6,9 @@ import cn.hutool.json.JSONObject; ...@@ -6,8 +6,9 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.priusis.dto.FacilityPropertyPCAddDto; import com.priusis.dto.FacilityPropertyPCAddDto;
import com.priusis.lib.R; import com.priusis.lib.R;
import com.priusis.utils.MacAddrUtil; import com.priusis.service.common.MacAddrService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -39,14 +40,17 @@ public class FacilityPropertyController { ...@@ -39,14 +40,17 @@ public class FacilityPropertyController {
@Value(value = "${apq.client.tenantId}") @Value(value = "${apq.client.tenantId}")
private Long tenantId; private Long tenantId;
@Autowired
private MacAddrService macAddrService;
@PostMapping("/upd") @PostMapping("/upd")
public R pcUpdFacility(@RequestBody @Valid FacilityPropertyPCAddDto dto) { public R pcUpdFacility(@RequestBody @Valid FacilityPropertyPCAddDto dto) {
String reqUrl = gateway + StrUtil.format(facilityPropertyUpdateUrl); String reqUrl = gateway + StrUtil.format(facilityPropertyUpdateUrl);
dto.setMacAddress(MacAddrUtil.get()); dto.setMacAddress(macAddrService.getMacAddr());
dto.setTenantId(tenantId); dto.setTenantId(tenantId);
String result = HttpUtil.post(reqUrl, JSONUtil.toJsonStr(dto)); String result = HttpUtil.post(reqUrl, JSONUtil.toJsonStr(dto));
JSONObject jsonObject = JSONUtil.parseObj(result); JSONObject jsonObject = JSONUtil.parseObj(result);
if(!Objects.equals(jsonObject.get("code"), 0) ) { if (!Objects.equals(jsonObject.get("code"), 0)) {
log.error("设备资产维护异常,{}", jsonObject.get("msg")); log.error("设备资产维护异常,{}", jsonObject.get("msg"));
return R.error(); return R.error();
} }
...@@ -55,7 +59,7 @@ public class FacilityPropertyController { ...@@ -55,7 +59,7 @@ public class FacilityPropertyController {
@GetMapping("info") @GetMapping("info")
public R info() { public R info() {
String reqUrl = gateway + StrUtil.format(facilityPropertyViewUrl, MacAddrUtil.get()); String reqUrl = gateway + StrUtil.format(facilityPropertyViewUrl, macAddrService.getMacAddr());
String resultData = HttpUtil.get(reqUrl, 3000); String resultData = HttpUtil.get(reqUrl, 3000);
JSONObject data = JSONUtil.parseObj(resultData, true); JSONObject data = JSONUtil.parseObj(resultData, true);
JSONObject data1 = data.getJSONObject("data"); JSONObject data1 = data.getJSONObject("data");
......
...@@ -4,11 +4,9 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,11 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ConcurrentHashSet; import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.StreamProgress; import cn.hutool.core.io.StreamProgress;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
...@@ -20,14 +18,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -20,14 +18,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.priusis.cache.InstalledProgramCache; import com.priusis.cache.InstalledProgramCache;
import com.priusis.lib.R; import com.priusis.lib.R;
import com.priusis.utils.MacAddrUtil; import com.priusis.service.common.MacAddrService;
import com.priusis.utils.ProcessExtensionsApqUtil; import com.priusis.utils.ProcessExtensionsApqUtil;
import com.priusis.utils.SysConfigUtil; import com.priusis.utils.SysConfigUtil;
import com.priusis.vo.FacilityProgramVo; import com.priusis.vo.FacilityProgramVo;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -107,6 +105,9 @@ public class ProgramController { ...@@ -107,6 +105,9 @@ public class ProgramController {
@Resource @Resource
private InstalledProgramCache installedProgramCache; private InstalledProgramCache installedProgramCache;
@Autowired
private MacAddrService macAddrService;
private static final double MIN_MATCH = 0.5; private static final double MIN_MATCH = 0.5;
@GetMapping(value = "{type}/list") @GetMapping(value = "{type}/list")
...@@ -114,7 +115,7 @@ public class ProgramController { ...@@ -114,7 +115,7 @@ public class ProgramController {
@RequestParam(required = false, defaultValue = "1") Integer current, @RequestParam(required = false, defaultValue = "1") Integer current,
@RequestParam(required = false, defaultValue = "10") Integer size) { @RequestParam(required = false, defaultValue = "10") Integer size) {
try { try {
String mac = MacAddrUtil.get(); String mac = macAddrService.getMacAddr();
if (StrUtil.isBlank(mac)) return R.error("未获取到MAC地址"); if (StrUtil.isBlank(mac)) return R.error("未获取到MAC地址");
String url = gateway + StrUtil.format(type.equals("install") ? installUrl : upgradeUrl, mac, current, size); String url = gateway + StrUtil.format(type.equals("install") ? installUrl : upgradeUrl, mac, current, size);
JSONObject rsp = JSONUtil.parseObj(HttpUtil.get(url)); JSONObject rsp = JSONUtil.parseObj(HttpUtil.get(url));
...@@ -236,7 +237,7 @@ public class ProgramController { ...@@ -236,7 +237,7 @@ public class ProgramController {
MAP.remove(key); MAP.remove(key);
if (exitVal == 0) { if (exitVal == 0) {
String reqUrl = gateway + StrUtil.format(type.equals("install") ? installStatusUpIssueUrl : upgradeStatusUpIssueUrl, String reqUrl = gateway + StrUtil.format(type.equals("install") ? installStatusUpIssueUrl : upgradeStatusUpIssueUrl,
MacAddrUtil.get(), id); macAddrService.getMacAddr(), id);
HttpUtil.post(reqUrl, (String) null); HttpUtil.post(reqUrl, (String) null);
} }
})); }));
...@@ -263,7 +264,7 @@ public class ProgramController { ...@@ -263,7 +264,7 @@ public class ProgramController {
public R<Void> installSuccess(@PathVariable @Pattern(regexp = "install|upgrade") String type, public R<Void> installSuccess(@PathVariable @Pattern(regexp = "install|upgrade") String type,
@RequestParam @NotNull Long id) { @RequestParam @NotNull Long id) {
String reqUrl = gateway + StrUtil.format(type.equals("install") ? installStatusUpIssueUrl : upgradeStatusUpIssueUrl, String reqUrl = gateway + StrUtil.format(type.equals("install") ? installStatusUpIssueUrl : upgradeStatusUpIssueUrl,
MacAddrUtil.get(), id); macAddrService.getMacAddr(), id);
HttpUtil.post(reqUrl, (String) null); HttpUtil.post(reqUrl, (String) null);
return R.success(); return R.success();
} }
...@@ -310,7 +311,7 @@ public class ProgramController { ...@@ -310,7 +311,7 @@ public class ProgramController {
//// @Scheduled(fixedDelay = 60000) //// @Scheduled(fixedDelay = 60000)
public void addProgram2Platform() throws IOException { public void addProgram2Platform() throws IOException {
String mac = MacAddrUtil.get(); String mac = macAddrService.getMacAddr();
if (StrUtil.isBlank(mac)) { if (StrUtil.isBlank(mac)) {
log.warn("未获取到MAC地址"); log.warn("未获取到MAC地址");
return; return;
...@@ -404,7 +405,7 @@ public class ProgramController { ...@@ -404,7 +405,7 @@ public class ProgramController {
System.out.println(11); System.out.println(11);
} }
@Scheduled(fixedDelay = 360000) // @Scheduled(fixedDelay = 360000)
protected void autoUpgradeJob() { protected void autoUpgradeJob() {
try { try {
log.info("执行自动安装文件 ==============1"); log.info("执行自动安装文件 ==============1");
...@@ -441,7 +442,7 @@ public class ProgramController { ...@@ -441,7 +442,7 @@ public class ProgramController {
} }
log.info("执行安装文件 =============="); log.info("执行安装文件 ==============");
// if (exitVal == 0) { // if (exitVal == 0) {
// String reqUrl = gateway + StrUtil.format(upgradeStatusUpIssueUrl, MacAddrUtil.get(), m.get("id")); // String reqUrl = gateway + StrUtil.format(upgradeStatusUpIssueUrl, macAddrService.getMacAddr(), m.get("id"));
// HttpUtil.post(reqUrl, (String) null); // HttpUtil.post(reqUrl, (String) null);
// } // }
}); });
......
...@@ -8,11 +8,12 @@ import cn.hutool.json.JSONObject; ...@@ -8,11 +8,12 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.priusis.cache.InstalledProgramCache; import com.priusis.cache.InstalledProgramCache;
import com.priusis.lib.R; import com.priusis.lib.R;
import com.priusis.utils.MacAddrUtil; import com.priusis.service.common.MacAddrService;
import com.priusis.utils.SysConfigUtil; import com.priusis.utils.SysConfigUtil;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.ini4j.ConfigParser; import org.ini4j.ConfigParser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -56,6 +57,9 @@ public class RemoteControlController { ...@@ -56,6 +57,9 @@ public class RemoteControlController {
@Resource @Resource
private InstalledProgramCache installedProgramCache; private InstalledProgramCache installedProgramCache;
@Autowired
private MacAddrService macAddrService;
@PostConstruct @PostConstruct
public void init() { public void init() {
try {// 关闭VNC Server服务的自启动 try {// 关闭VNC Server服务的自启动
...@@ -184,7 +188,7 @@ public class RemoteControlController { ...@@ -184,7 +188,7 @@ public class RemoteControlController {
JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(gateway + sendControlReqUrl, JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(gateway + sendControlReqUrl,
JSONUtil.createObj().set("controlDate", minutes) JSONUtil.createObj().set("controlDate", minutes)
.set("macAddress", MacAddrUtil.get()) .set("macAddress", macAddrService.getMacAddr())
.set("type", 1).toString())); .set("type", 1).toString()));
if (ObjectUtil.notEqual(rsp.getInt("code"), 0)) return R.error(rsp.getStr("msg")); if (ObjectUtil.notEqual(rsp.getInt("code"), 0)) return R.error(rsp.getStr("msg"));
return R.success(); return R.success();
...@@ -195,7 +199,7 @@ public class RemoteControlController { ...@@ -195,7 +199,7 @@ public class RemoteControlController {
private String getRemoteId() { private String getRemoteId() {
if (StrUtil.isNotBlank(remoteId)) return remoteId; if (StrUtil.isNotBlank(remoteId)) return remoteId;
String mac = MacAddrUtil.get(); String mac = macAddrService.getMacAddr();
JSONObject rsp = JSONUtil.parseObj(HttpUtil.get(gateway + StrUtil.format(deviceInfoUrl, mac))); JSONObject rsp = JSONUtil.parseObj(HttpUtil.get(gateway + StrUtil.format(deviceInfoUrl, mac)));
if (ObjectUtil.notEqual(rsp.getInt("code"), 0)) { if (ObjectUtil.notEqual(rsp.getInt("code"), 0)) {
log.error("查询设备信息失败, msg: {}", rsp.getStr("msg")); log.error("查询设备信息失败, msg: {}", rsp.getStr("msg"));
......
package com.priusis.vo; package com.priusis.client.service;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MqttRpcDataMessage implements Serializable { public class MqttRpcDataMessage implements Serializable {
private static final long serialVersionUID = -3133461476074777891L; private static final long serialVersionUID = -3133461476074777891L;
......
package com.priusis.job; package com.priusis.job;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.PathUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.priusis.service.antivirus.AntivirusDoService; import com.priusis.service.antivirus.AntivirusDoService;
import com.priusis.utils.ProcessExtensionsApqUtil;
import com.priusis.utils.WinExecuteUtils; import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
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.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
...@@ -22,12 +15,8 @@ import org.springframework.web.client.RestClientException; ...@@ -22,12 +15,8 @@ import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.io.File; import java.io.File;
import java.io.FileFilter;
import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j @Slf4j
@Component @Component
......
...@@ -6,7 +6,7 @@ import cn.hutool.json.JSONUtil; ...@@ -6,7 +6,7 @@ import cn.hutool.json.JSONUtil;
import com.priusis.dto.HwPortControllerDto; import com.priusis.dto.HwPortControllerDto;
import com.priusis.service.control.DeviceChangeCallbackImpl; import com.priusis.service.control.DeviceChangeCallbackImpl;
import com.priusis.utils.*; import com.priusis.utils.*;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
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.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
...@@ -167,7 +167,7 @@ public class ApqControlJob { ...@@ -167,7 +167,7 @@ public class ApqControlJob {
log.debug("APQ_HWPORT_get_normal_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}", log.debug("APQ_HWPORT_get_normal_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result31); doType, limitType, value, hwDeviceId, hwDeviceName, perm, result31);
if (result31 == 2) { if (result31 == 2) {
mapRequest.put(deviceHardwareEnum.name(), perm); mapRequest.put(deviceHardwareEnum.name(), result31);
} }
} }
} }
...@@ -184,7 +184,7 @@ public class ApqControlJob { ...@@ -184,7 +184,7 @@ public class ApqControlJob {
log.info("APQ_HWPORT_get_storage_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}", log.info("APQ_HWPORT_get_storage_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32); doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32);
if (perm != result32) { if (perm != result32) {
mapRequest.put(deviceHardwareEnum.name(), perm); mapRequest.put(deviceHardwareEnum.name(), result32);
} }
} }
} else if (Objects.equals(deviceHardwareEnum.getHwGroup(), "NET")) { // 设置网络设备权限 } else if (Objects.equals(deviceHardwareEnum.getHwGroup(), "NET")) { // 设置网络设备权限
...@@ -199,7 +199,7 @@ public class ApqControlJob { ...@@ -199,7 +199,7 @@ public class ApqControlJob {
log.info("APQ_HWPORT_get_net_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}", log.info("APQ_HWPORT_get_net_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32); doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32);
if (perm != result32) { if (perm != result32) {
mapRequest.put(deviceHardwareEnum.name(), perm); mapRequest.put(deviceHardwareEnum.name(), result32);
} }
} }
} }
......
package com.priusis.job; package com.priusis.job;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.unit.DataSizeUtil; import cn.hutool.core.io.unit.DataSizeUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
...@@ -8,13 +7,13 @@ import cn.hutool.http.HttpUtil; ...@@ -8,13 +7,13 @@ import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.hutool.system.oshi.CpuInfo; import cn.hutool.system.oshi.CpuInfo;
import cn.hutool.system.oshi.OshiUtil; import cn.hutool.system.oshi.OshiUtil;
import com.priusis.service.common.MacAddrService;
import com.priusis.utils.CoreTempUtil; import com.priusis.utils.CoreTempUtil;
import com.priusis.utils.DiskSmartUtil; import com.priusis.utils.DiskSmartUtil;
import com.priusis.utils.MacAddrUtil;
import com.priusis.utils.Oshi4NoneSigarUtil; import com.priusis.utils.Oshi4NoneSigarUtil;
import com.priusis.utils.sigar.SigarUtil; import com.priusis.utils.sigar.SigarUtil;
import com.priusis.vo.ApqInfoDataVo; import com.priusis.vo.ApqInfoDataVo;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.vo.RemoteDeviceVoResult; import com.priusis.vo.RemoteDeviceVoResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.hyperic.sigar.*; import org.hyperic.sigar.*;
...@@ -46,6 +45,9 @@ public class ApqInfoJob { ...@@ -46,6 +45,9 @@ public class ApqInfoJob {
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Autowired
private MacAddrService macAddrService;
@Value(value = "${apq.iot-gateway}") @Value(value = "${apq.iot-gateway}")
private String gateway; private String gateway;
...@@ -179,7 +181,7 @@ public class ApqInfoJob { ...@@ -179,7 +181,7 @@ public class ApqInfoJob {
try { try {
baseboardV = Oshi4NoneSigarUtil.getBaseboardWithCache(); // 获取主板信息 缓存; baseboardV = Oshi4NoneSigarUtil.getBaseboardWithCache(); // 获取主板信息 缓存;
ipV = InetAddress.getLocalHost().getHostAddress(); ipV = InetAddress.getLocalHost().getHostAddress();
ethernetV = SigarUtil.ethernet(sigar); ethernetV = SigarUtil.ethernetSimple(sigar);
diskTempV = DiskSmartUtil.getDeviceTemp(); diskTempV = DiskSmartUtil.getDeviceTemp();
org.hyperic.sigar.CpuInfo cpuInfo = sigar.getCpuInfoList()[0]; org.hyperic.sigar.CpuInfo cpuInfo = sigar.getCpuInfoList()[0];
...@@ -216,7 +218,7 @@ public class ApqInfoJob { ...@@ -216,7 +218,7 @@ public class ApqInfoJob {
diskSpeedV = SigarUtil.diskSpeed(sigar); diskSpeedV = SigarUtil.diskSpeed(sigar);
data = MapUtil.<String, Object>builder() data = MapUtil.<String, Object>builder()
.put(isNeedCollection(isNoneEven, operatingSystem, mapParams), operatingSystem, operatingSystemV) .put(isNeedCollection(isNoneEven, operatingSystem, mapParams), operatingSystem, operatingSystemV)
.put(isNeedCollection(isNoneEven, mac, mapParams), mac, MacAddrUtil.get()) .put(isNeedCollection(isNoneEven, mac, mapParams), mac, macAddrService.getMacAddr())
.put(isNeedCollection(isNoneEven, baseboard, mapParams), baseboard, baseboardV) .put(isNeedCollection(isNoneEven, baseboard, mapParams), baseboard, baseboardV)
.put(isNeedCollection(isNoneEven, ip, mapParams), ip, ipV) .put(isNeedCollection(isNoneEven, ip, mapParams), ip, ipV)
.put(isNeedCollection(isNoneEven, cpuModel, mapParams), cpuModel, cpuModelV) .put(isNeedCollection(isNoneEven, cpuModel, mapParams), cpuModel, cpuModelV)
...@@ -249,7 +251,7 @@ public class ApqInfoJob { ...@@ -249,7 +251,7 @@ public class ApqInfoJob {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId); params.put("tenantId", tenantId);
params.put("productId", productId); params.put("productId", productId);
params.put("macAddress", MacAddrUtil.get()); params.put("macAddress", macAddrService.getMacAddr());
params.put("name", computerName); params.put("name", computerName);
String remoteDeviceVoJson = HttpUtil.post(gateway + deviceUpdateNameUrl, JSONUtil.toJsonStr(params), 5000); String remoteDeviceVoJson = HttpUtil.post(gateway + deviceUpdateNameUrl, JSONUtil.toJsonStr(params), 5000);
RemoteDeviceVoResult remoteDeviceVo = JSONUtil.toBean(remoteDeviceVoJson, RemoteDeviceVoResult.class); RemoteDeviceVoResult remoteDeviceVo = JSONUtil.toBean(remoteDeviceVoJson, RemoteDeviceVoResult.class);
...@@ -322,10 +324,11 @@ public class ApqInfoJob { ...@@ -322,10 +324,11 @@ public class ApqInfoJob {
// 更新采集到的硬件信息 // 更新采集到的硬件信息
try { try {
MqttRpcDataMessage mqttRpcDataMessage = new MqttRpcDataMessage(); MqttRpcDataMessage mqttRpcDataMessage = MqttRpcDataMessage.builder()
mqttRpcDataMessage.setSendTime(System.currentTimeMillis()); .sendTime(System.currentTimeMillis())
mqttRpcDataMessage.setMethod("hardware_warning"); .method("hardware_warning")
mqttRpcDataMessage.setParams(Convert.toStr(hardwareCache)); .params(JSONUtil.toJsonStr(hardwareCache)).build();
restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class); restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class);
} catch (Exception e) { } catch (Exception e) {
log.error("采集数据异常", e); log.error("采集数据异常", e);
...@@ -335,10 +338,10 @@ public class ApqInfoJob { ...@@ -335,10 +338,10 @@ public class ApqInfoJob {
hardwareCache.put(type, hardwareCacheRefresh); hardwareCache.put(type, hardwareCacheRefresh);
// 更新采集到的硬件信息 // 更新采集到的硬件信息
try { try {
MqttRpcDataMessage mqttRpcDataMessage = new MqttRpcDataMessage(); MqttRpcDataMessage mqttRpcDataMessage = MqttRpcDataMessage.builder()
mqttRpcDataMessage.setSendTime(System.currentTimeMillis()); .sendTime(System.currentTimeMillis())
mqttRpcDataMessage.setMethod("hardware_warning"); .method("hardware_warning")
mqttRpcDataMessage.setParams(JSONUtil.toJsonStr(hardwareCache)); .params(JSONUtil.toJsonStr(hardwareCache)).build();
restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class); restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class);
} catch (Exception e) { } catch (Exception e) {
log.error("采集数据异常", e); log.error("采集数据异常", e);
......
...@@ -3,14 +3,10 @@ package com.priusis.job; ...@@ -3,14 +3,10 @@ package com.priusis.job;
import cn.hutool.core.collection.CollUtil; 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.dto.HwPortControllerDto;
import com.priusis.dto.NetPortControllerDto; import com.priusis.dto.NetPortControllerDto;
import com.priusis.service.control.DeviceChangeCallbackImpl;
import com.priusis.utils.IHwPortController;
import com.priusis.utils.WinExecuteUtils; import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -18,17 +14,9 @@ import org.springframework.scheduling.annotation.Scheduled; ...@@ -18,17 +14,9 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@Slf4j @Slf4j
@Component @Component
......
...@@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil; ...@@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.priusis.dto.RegisterParamDto; import com.priusis.dto.RegisterParamDto;
import com.priusis.utils.WinExecuteUtils; import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
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.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
...@@ -37,7 +37,7 @@ public class ApqRegister4BackListJob { ...@@ -37,7 +37,7 @@ public class ApqRegister4BackListJob {
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Scheduled(fixedDelay = 600000L) @Scheduled(fixedDelay = 120000L)
protected void registerProgramTask() { protected void registerProgramTask() {
log.info("软件检测上报================="); log.info("软件检测上报=================");
......
...@@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil; ...@@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.priusis.dto.RegisterParamDto; import com.priusis.dto.RegisterParamDto;
import com.priusis.utils.WinExecuteUtils; import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
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.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
...@@ -70,7 +70,7 @@ public class ApqRegister4WhiteListJob { ...@@ -70,7 +70,7 @@ public class ApqRegister4WhiteListJob {
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Scheduled(fixedDelay = 600000L) @Scheduled(fixedDelay = 120000L)
protected void registerProgramTask() { protected void registerProgramTask() {
log.info("软件检测上报================="); log.info("软件检测上报=================");
......
package com.priusis.service.common;
import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.utils.MacAddrUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
@Slf4j
@Component
public class MacAddrService {
private static String macAddr;
@Autowired
private RestTemplate restTemplate;
/**
* 获取MAC地址
*/
public void initMacAddr(String macAddr) {
this.macAddr = macAddr;
}
/**
* 获取MAC地址
*/
public String getMacAddr() {
try {
if (null == macAddr) {
// 获取采集到的硬件信息
ResponseEntity<MqttRpcDataMessage> forEntity = null;
try {
forEntity = restTemplate.getForEntity("http://localhost:8765/rpc_cmd/mac_addr", MqttRpcDataMessage.class);
if (null != forEntity) {
MqttRpcDataMessage body = forEntity.getBody();
macAddr = body.getParams();
}
} catch (Exception e) {
log.error("采集数据异常", e);
}
}
if (null == macAddr) {
try {
macAddr = MacAddrUtil.getSigarMac();
MqttRpcDataMessage mqttRpcDataMessage = MqttRpcDataMessage.builder()
.sendTime(System.currentTimeMillis())
.method("mac_addr")
.params(macAddr).build();
restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class);
} catch (Exception e) {
log.error("采集数据异常", e);
}
}
} catch (RestClientException e) {
log.error("macAddr异常");
}
return macAddr;
}
}
package com.priusis.utils; package com.priusis.utils;
import cn.hutool.system.oshi.OshiUtil;
import com.sun.jna.NativeLibrary; import com.sun.jna.NativeLibrary;
import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -40,7 +39,7 @@ public class CoreTempUtil { ...@@ -40,7 +39,7 @@ public class CoreTempUtil {
cpuAndGpuTemp[1] = gpuTempV; cpuAndGpuTemp[1] = gpuTempV;
return cpuAndGpuTemp; return cpuAndGpuTemp;
} catch (Exception e) { } catch (Throwable e) {
log.error("获取CPU温度异常", e); log.error("获取CPU温度异常", e);
cpuAndGpuTemp[0] = 0; cpuAndGpuTemp[0] = 0;
cpuAndGpuTemp[1] = 0; cpuAndGpuTemp[1] = 0;
......
...@@ -5,6 +5,8 @@ import org.hyperic.sigar.NetFlags; ...@@ -5,6 +5,8 @@ import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig; import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.Sigar; import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException; import org.hyperic.sigar.SigarException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate;
/** /**
* @author yangli * @author yangli
...@@ -12,7 +14,8 @@ import org.hyperic.sigar.SigarException; ...@@ -12,7 +14,8 @@ import org.hyperic.sigar.SigarException;
*/ */
@Slf4j @Slf4j
public final class MacAddrUtil { public final class MacAddrUtil {
public static String get() {
public static String getSigarMac() {
Sigar sigar = new Sigar(); Sigar sigar = new Sigar();
String[] ifaces = null; String[] ifaces = null;
try { try {
...@@ -33,6 +36,6 @@ public final class MacAddrUtil { ...@@ -33,6 +36,6 @@ public final class MacAddrUtil {
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(MacAddrUtil.get()); System.out.println(MacAddrUtil.getSigarMac());
} }
} }
...@@ -82,12 +82,14 @@ public class Oshi4NoneSigarUtil { ...@@ -82,12 +82,14 @@ public class Oshi4NoneSigarUtil {
} }
public static void main(String[] args) throws SigarException { public static void main(String[] args) throws SigarException {
System.out.println(Oshi4NoneSigarUtil.getDiskStoresModelFromOshi()); // System.out.println(Oshi4NoneSigarUtil.getDiskStoresModelFromOshi());
/*Sigar sigar = new Sigar(); /*Sigar sigar = new Sigar();
FileSystem[] diskStores = sigar.getFileSystemList(); FileSystem[] diskStores = sigar.getFileSystemList();
for (FileSystem diskStore : diskStores) { for (FileSystem diskStore : diskStores) {
System.out.println(diskStore.getSysTypeName()); System.out.println(diskStore.getSysTypeName());
}*/ }*/
System.out.println(getDiskStoresModelJsonFromOshi());
} }
} }
...@@ -39,7 +39,7 @@ public class SigarUtil { ...@@ -39,7 +39,7 @@ public class SigarUtil {
// memory(); // memory();
// System.out.println("----------------------------------"); // System.out.println("----------------------------------");
// // 操作系统信息 // // 操作系统信息
os(); // os();
// System.out.println("----------------------------------"); // System.out.println("----------------------------------");
// // 用户信息 // // 用户信息
// who(); // who();
...@@ -52,8 +52,8 @@ public class SigarUtil { ...@@ -52,8 +52,8 @@ public class SigarUtil {
// net(); // net();
// System.out.println("----------------------------------"); // System.out.println("----------------------------------");
// // 以太网信息 // // 以太网信息
// System.out.println(ethernet()); System.out.println(ethernet(sigar));
// System.out.println("----------------------------------"); System.out.println("----------------------------------");
Thread.sleep(15000); Thread.sleep(15000);
} }
...@@ -486,4 +486,34 @@ public class SigarUtil { ...@@ -486,4 +486,34 @@ public class SigarUtil {
sb.append("]"); sb.append("]");
return sb.toString(); return sb.toString();
} }
public static String ethernetSimple(Sigar sigar) throws SigarException {
StringBuffer sb = new StringBuffer();
sb.append("[");
int index = 0;
try {
String[] ifaces = sigar.getNetInterfaceList();
for (int i = 0; i < ifaces.length; i++) {
String iface = ifaces[i];
NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(iface);
if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress()) || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0
|| NetFlags.NULL_HWADDR.equals(cfg.getHwaddr()) || NetFlags.ANY_ADDR.equals(cfg.getAddress())) {
continue;
}
if (index != 0) {
sb.append(",");
}
sb.append("{");
sb.append("\"name\":\"").append(cfg.getName()).append("\","); // name
sb.append("\"hwaddr\":\"").append(cfg.getHwaddr()).append("\","); // 网卡MAC地址
sb.append("\"address\":\"").append(cfg.getAddress()).append("\""); // IP地址
sb.append("}");
index++;
}
} catch (Exception e) {
log.error("获取ethernet信息异常", e);
}
sb.append("]");
return sb.toString();
}
} }
package com.priusis; package com.priusis;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.priusis; package com.priusis;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
...@@ -3,8 +3,8 @@ package com.priusis; ...@@ -3,8 +3,8 @@ package com.priusis;
import cn.hutool.core.io.unit.DataSizeUtil; import cn.hutool.core.io.unit.DataSizeUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.system.oshi.OshiUtil; import cn.hutool.system.oshi.OshiUtil;
import com.priusis.utils.MacAddrUtil; import com.priusis.service.common.MacAddrService;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -23,6 +23,9 @@ public class RestTest { ...@@ -23,6 +23,9 @@ public class RestTest {
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Autowired
private MacAddrService macAddrService;
@Test @Test
public void test1() throws Exception { public void test1() throws Exception {
// 获取采集配置,数据上报频率 params == data // 获取采集配置,数据上报频率 params == data
...@@ -33,7 +36,7 @@ public class RestTest { ...@@ -33,7 +36,7 @@ public class RestTest {
// 上报PC实时信息 // 上报PC实时信息
Map<String, Object> data = MapUtil.<String, Object>builder() Map<String, Object> data = MapUtil.<String, Object>builder()
.put("operatingSystem", OshiUtil.getOs().toString()) .put("operatingSystem", OshiUtil.getOs().toString())
.put("mac", MacAddrUtil.get()) .put("mac", macAddrService.getMacAddr())
.put("baseboard", OshiUtil.getSystem().getBaseboard().getManufacturer() + " " + OshiUtil.getSystem().getBaseboard().getVersion()) .put("baseboard", OshiUtil.getSystem().getBaseboard().getManufacturer() + " " + OshiUtil.getSystem().getBaseboard().getVersion())
.put("ip", InetAddress.getLocalHost().getHostAddress()) .put("ip", InetAddress.getLocalHost().getHostAddress())
.put("cpuModel", OshiUtil.getCpuInfo(0).getCpuModel()) .put("cpuModel", OshiUtil.getCpuInfo(0).getCpuModel())
......
package com.priusis; package com.priusis;
import com.priusis.vo.MqttRpcDataMessage; import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
{
"requestId": 3,
"methodName": "control_warning",
"params": {
"MOUSE_KEYBOARD/DONGLE/USB_TRANSFORM/CAMERA/SERIAL_PORT/GPIO/BLUETOOTH": 1/2, (1:拒绝, 2:允许)
"USB_DRIVE/MOBILE_DRIVE/CD_DRIVE/TYPE_C": 1/2/3/4/5/6, (1拒绝 2 3 4 5 6允许)
"NETWORK_PORT/MODULE_45G/WIFI": 1/2/3/4, (1拒绝 2 3 4允许)
}
}
MOUSE_KEYBOARD: "鼠标键盘"
DONGLE: "加密狗"
USB_TRANSFORM: "USB转换"
CAMERA: "摄像头"
SERIAL_PORT: "串口"
GPIO: "GPIO"
BLUETOOTH: "无线蓝牙"
USB_DRIVE: "U盘"
MOBILE_DRIVE: "移动硬盘"
CD_DRIVE: "驱动"
TYPE_C: "TYPE_C"
NETWORK_PORT: "网口"
MODULE_45G: "4G/5G模块"
WIFI: "无线WIFI"
{
"requestId": 5,
"methodName": "hardware_warning",
"params": {
"type":"hard_disk",
"PHYSICALDRIVE0":{
"name":"PHYSICALDRIVE0",
"type":"Reduce",
"value":"Samsung Flash Drive USB Device2"
},
"PHYSICALDRIVE1":{
"name":"PHYSICALDRIVE1",
"type":"Add",
"value":"Samsung Flash Drive USB Device(AA00000000000489)"
}
}
}
?
{
"requestId": 5,
"methodName": "hardware_warning",
"params": {
"type":"hard_disk",
[{
"name":"PHYSICALDRIVE0",
"type":"Reduce",
"value":"Samsung Flash Drive USB Device2"
},
{
"name":"PHYSICALDRIVE1",
"type":"Add",
"value":"Samsung Flash Drive USB Device(AA00000000000489)"
}]
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论