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

海康客户端问题

上级 7997bd5f
......@@ -4,11 +4,11 @@ import com.priusis.client.data.kv.KvEntry;
import com.priusis.client.extensions.ExtensionUpdate;
import com.priusis.client.extensions.http.conf.HttpConfiguration;
import com.priusis.client.service.MqttDeliveryFuture;
import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.client.service.conf.PcExtensionConfiguration;
import com.priusis.client.service.core.MqttService;
import com.priusis.client.service.data.DeviceData;
import com.priusis.client.util.ConfigurationTools;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
......
package com.priusis.client.extensions.http;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
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.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
......
......@@ -7,7 +7,7 @@ import java.io.Serializable;
@Data
@Builder
public class MqttRpcDataMessage implements Serializable {
public class MqttRpcDataMessage2 implements Serializable {
private static final long serialVersionUID = -3133461476074777891L;
......
......@@ -2,12 +2,12 @@ package com.priusis.client.service.core;
import com.priusis.client.data.kv.KvEntry;
import com.priusis.client.service.MqttDeliveryFuture;
import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.client.service.conf.PcExtensionConfiguration;
import com.priusis.client.service.data.AttributeRequest;
import com.priusis.client.service.data.AttributeResponse;
import com.priusis.client.service.data.AttributesUpdateSubscription;
import com.priusis.client.service.data.RpcCommandResponse;
import com.priusis.client.service.MqttRpcDataMessage;
import java.io.File;
import java.io.IOException;
......
package com.priusis.client.service.core;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
......@@ -16,6 +17,7 @@ import com.priusis.controller.ProgramController;
import com.priusis.controller.RemoteControlController;
import com.priusis.lib.R;
import com.priusis.monitor.mqtt.*;
import com.priusis.service.common.MacAddrService;
import com.priusis.utils.*;
import io.netty.buffer.ByteBuf;
import io.netty.channel.nio.NioEventLoopGroup;
......@@ -25,6 +27,8 @@ import io.netty.util.concurrent.Promise;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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.Value;
......@@ -36,10 +40,8 @@ import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.KeyStore;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.text.DecimalFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
......@@ -115,16 +117,22 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
private volatile ObjectNode error;
private volatile Boolean realDataMonitor = false;
Sigar sigar = new Sigar();
private MqttClient tbClient;
private ScheduledExecutorService scheduler;
private ExecutorService mqttSenderExecutor;
private ExecutorService mqttReceiverExecutor;
private ExecutorService callbackExecutor = Executors.newCachedThreadPool();
private ScheduledExecutorService realDataMonitorScheduler;
@Autowired
private NioEventLoopGroup nioEventLoopGroup;
@Autowired
private MacAddrService macAddrService;
@Resource
private RemoteControlController remoteControlController;
......@@ -152,7 +160,15 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
initMqttClient();
initMqttSender(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() {
......@@ -168,6 +184,7 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
@Override
public void destroy() throws Exception {
scheduler.shutdownNow();
realDataMonitorScheduler.shutdownNow();
callbackExecutor.shutdownNow();
mqttSenderExecutor.shutdownNow();
mqttReceiverExecutor.shutdownNow();
......@@ -402,6 +419,15 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
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())) {
log.info("收到平台扫描软件请求");
programController.addProgram2Platform();
......@@ -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) {
log.info("Configuration arrived! {}", message);
JsonNode payload = fromString(message);
......@@ -750,12 +853,29 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
private MqttClientSecurityConfiguration getClientSecurityByMac() {
String mac = null;
MqttRpcDataMessage mqttRpcDataMessage = null;
try {
mqttRpcDataMessage = readFromFile("mac_addr");
mac = mqttRpcDataMessage.getParams();
} catch (IOException e) {
log.warn("未获取到MAC地址 FROM mac_addr");
}
try {
mac = MacAddrUtil.get();
if (null == mqttRpcDataMessage) {
mac = MacAddrUtil.getSigarMac();
}
if (StrUtil.isBlank(mac)) {
log.warn("未获取到MAC地址");
return null;
}
MqttRpcDataMessage mqttRpcDataMessaget = MqttRpcDataMessage.builder()
.sendTime(System.currentTimeMillis())
.method("mac_addr")
.params(mac).build();
flushRpcDataToFile(mqttRpcDataMessaget);
macAddrService.initMacAddr(mac);
log.info("获取到MAC地址:{}", mac);
// deviceInfo = StrUtil.format(deviceInfo, mac);
......
......@@ -4,10 +4,10 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.client.service.TenantManagerService;
import com.priusis.lib.R;
import com.priusis.utils.SysConfigUtil;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......
......@@ -6,11 +6,12 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.priusis.lib.R;
import com.priusis.service.common.MacAddrService;
import com.priusis.utils.CoreTempUtil;
import com.priusis.utils.MacAddrUtil;
import com.priusis.utils.Oshi4NoneSigarUtil;
import lombok.extern.slf4j.Slf4j;
import org.hyperic.sigar.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -34,6 +35,9 @@ import java.util.stream.Collectors;
@RequestMapping(value = "device_info")
public class DeviceInfoController {
@Autowired
private MacAddrService macAddrService;
private Map<String, Object> info;
Sigar sigar = new Sigar();
......@@ -125,7 +129,7 @@ public class DeviceInfoController {
info = MapUtil.<String, Object>builder()
.put("operatingSystem", operatingSystem)
.put("mac", MacAddrUtil.get())
.put("mac", macAddrService.getMacAddr())
.put("baseboard", baseboard)
.put("ip", ip)
.put("cpuModel", cpuModel)
......
......@@ -8,8 +8,9 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.google.common.collect.Maps;
import com.priusis.lib.R;
import com.priusis.utils.MacAddrUtil;
import com.priusis.service.common.MacAddrService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -41,10 +42,13 @@ public class FacilityController {
@Value(value = "${apq.url.device_info_g}")
private String deviceInfoUrl;
@Autowired
private MacAddrService macAddrService;
@PostMapping("voiceCallPush")
public R voiceCallPush() {
String reqUrl = gateway + voiceCallPushUrl;
String mac = MacAddrUtil.get();
String mac = macAddrService.getMacAddr();
JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(reqUrl,
JSONUtil.createObj().set("macAddress", mac).toString()));
......@@ -56,7 +60,7 @@ public class FacilityController {
@PostMapping("voiceCall")
public R voiceCall() {
String reqUrl = gateway + voiceCallUrl;
String mac = MacAddrUtil.get();
String mac = macAddrService.getMacAddr();
// String mac = "68:ED:A4:1D:E8:00";
JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(reqUrl,
JSONUtil.createObj().set("macAddress", mac).toString()));
......
......@@ -6,8 +6,9 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.priusis.dto.FacilityPropertyPCAddDto;
import com.priusis.lib.R;
import com.priusis.utils.MacAddrUtil;
import com.priusis.service.common.MacAddrService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -39,14 +40,17 @@ public class FacilityPropertyController {
@Value(value = "${apq.client.tenantId}")
private Long tenantId;
@Autowired
private MacAddrService macAddrService;
@PostMapping("/upd")
public R pcUpdFacility(@RequestBody @Valid FacilityPropertyPCAddDto dto) {
String reqUrl = gateway + StrUtil.format(facilityPropertyUpdateUrl);
dto.setMacAddress(MacAddrUtil.get());
dto.setMacAddress(macAddrService.getMacAddr());
dto.setTenantId(tenantId);
String result = HttpUtil.post(reqUrl, JSONUtil.toJsonStr(dto));
JSONObject jsonObject = JSONUtil.parseObj(result);
if(!Objects.equals(jsonObject.get("code"), 0) ) {
if (!Objects.equals(jsonObject.get("code"), 0)) {
log.error("设备资产维护异常,{}", jsonObject.get("msg"));
return R.error();
}
......@@ -55,7 +59,7 @@ public class FacilityPropertyController {
@GetMapping("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);
JSONObject data = JSONUtil.parseObj(resultData, true);
JSONObject data1 = data.getJSONObject("data");
......
......@@ -4,11 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.StreamProgress;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpResponse;
......@@ -20,14 +18,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.priusis.cache.InstalledProgramCache;
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.SysConfigUtil;
import com.priusis.vo.FacilityProgramVo;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -107,6 +105,9 @@ public class ProgramController {
@Resource
private InstalledProgramCache installedProgramCache;
@Autowired
private MacAddrService macAddrService;
private static final double MIN_MATCH = 0.5;
@GetMapping(value = "{type}/list")
......@@ -114,7 +115,7 @@ public class ProgramController {
@RequestParam(required = false, defaultValue = "1") Integer current,
@RequestParam(required = false, defaultValue = "10") Integer size) {
try {
String mac = MacAddrUtil.get();
String mac = macAddrService.getMacAddr();
if (StrUtil.isBlank(mac)) return R.error("未获取到MAC地址");
String url = gateway + StrUtil.format(type.equals("install") ? installUrl : upgradeUrl, mac, current, size);
JSONObject rsp = JSONUtil.parseObj(HttpUtil.get(url));
......@@ -236,7 +237,7 @@ public class ProgramController {
MAP.remove(key);
if (exitVal == 0) {
String reqUrl = gateway + StrUtil.format(type.equals("install") ? installStatusUpIssueUrl : upgradeStatusUpIssueUrl,
MacAddrUtil.get(), id);
macAddrService.getMacAddr(), id);
HttpUtil.post(reqUrl, (String) null);
}
}));
......@@ -263,7 +264,7 @@ public class ProgramController {
public R<Void> installSuccess(@PathVariable @Pattern(regexp = "install|upgrade") String type,
@RequestParam @NotNull Long id) {
String reqUrl = gateway + StrUtil.format(type.equals("install") ? installStatusUpIssueUrl : upgradeStatusUpIssueUrl,
MacAddrUtil.get(), id);
macAddrService.getMacAddr(), id);
HttpUtil.post(reqUrl, (String) null);
return R.success();
}
......@@ -310,7 +311,7 @@ public class ProgramController {
//// @Scheduled(fixedDelay = 60000)
public void addProgram2Platform() throws IOException {
String mac = MacAddrUtil.get();
String mac = macAddrService.getMacAddr();
if (StrUtil.isBlank(mac)) {
log.warn("未获取到MAC地址");
return;
......@@ -404,7 +405,7 @@ public class ProgramController {
System.out.println(11);
}
@Scheduled(fixedDelay = 360000)
// @Scheduled(fixedDelay = 360000)
protected void autoUpgradeJob() {
try {
log.info("执行自动安装文件 ==============1");
......@@ -441,7 +442,7 @@ public class ProgramController {
}
log.info("执行安装文件 ==============");
// 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);
// }
});
......
......@@ -8,11 +8,12 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.priusis.cache.InstalledProgramCache;
import com.priusis.lib.R;
import com.priusis.utils.MacAddrUtil;
import com.priusis.service.common.MacAddrService;
import com.priusis.utils.SysConfigUtil;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.ini4j.ConfigParser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -56,6 +57,9 @@ public class RemoteControlController {
@Resource
private InstalledProgramCache installedProgramCache;
@Autowired
private MacAddrService macAddrService;
@PostConstruct
public void init() {
try {// 关闭VNC Server服务的自启动
......@@ -184,7 +188,7 @@ public class RemoteControlController {
JSONObject rsp = JSONUtil.parseObj(HttpUtil.post(gateway + sendControlReqUrl,
JSONUtil.createObj().set("controlDate", minutes)
.set("macAddress", MacAddrUtil.get())
.set("macAddress", macAddrService.getMacAddr())
.set("type", 1).toString()));
if (ObjectUtil.notEqual(rsp.getInt("code"), 0)) return R.error(rsp.getStr("msg"));
return R.success();
......@@ -195,7 +199,7 @@ public class RemoteControlController {
private String getRemoteId() {
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)));
if (ObjectUtil.notEqual(rsp.getInt("code"), 0)) {
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.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MqttRpcDataMessage implements Serializable {
private static final long serialVersionUID = -3133461476074777891L;
......
package com.priusis.job;
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.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.priusis.service.antivirus.AntivirusDoService;
import com.priusis.utils.ProcessExtensionsApqUtil;
import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
......@@ -22,12 +15,8 @@ import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import java.io.File;
import java.io.FileFilter;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j
@Component
......
......@@ -6,7 +6,7 @@ import cn.hutool.json.JSONUtil;
import com.priusis.dto.HwPortControllerDto;
import com.priusis.service.control.DeviceChangeCallbackImpl;
import com.priusis.utils.*;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
......@@ -167,7 +167,7 @@ public class ApqControlJob {
log.debug("APQ_HWPORT_get_normal_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result31);
if (result31 == 2) {
mapRequest.put(deviceHardwareEnum.name(), perm);
mapRequest.put(deviceHardwareEnum.name(), result31);
}
}
}
......@@ -184,7 +184,7 @@ public class ApqControlJob {
log.info("APQ_HWPORT_get_storage_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32);
if (perm != result32) {
mapRequest.put(deviceHardwareEnum.name(), perm);
mapRequest.put(deviceHardwareEnum.name(), result32);
}
}
} else if (Objects.equals(deviceHardwareEnum.getHwGroup(), "NET")) { // 设置网络设备权限
......@@ -199,7 +199,7 @@ public class ApqControlJob {
log.info("APQ_HWPORT_get_net_device_permit doType:{}, limitType;{},value:{}, hwDeviceId:{}, name;{}, perm:{}, ret:{}",
doType, limitType, value, hwDeviceId, hwDeviceName, perm, result32);
if (perm != result32) {
mapRequest.put(deviceHardwareEnum.name(), perm);
mapRequest.put(deviceHardwareEnum.name(), result32);
}
}
}
......
package com.priusis.job;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.unit.DataSizeUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
......@@ -8,13 +7,13 @@ import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.system.oshi.CpuInfo;
import cn.hutool.system.oshi.OshiUtil;
import com.priusis.service.common.MacAddrService;
import com.priusis.utils.CoreTempUtil;
import com.priusis.utils.DiskSmartUtil;
import com.priusis.utils.MacAddrUtil;
import com.priusis.utils.Oshi4NoneSigarUtil;
import com.priusis.utils.sigar.SigarUtil;
import com.priusis.vo.ApqInfoDataVo;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import com.priusis.vo.RemoteDeviceVoResult;
import lombok.extern.slf4j.Slf4j;
import org.hyperic.sigar.*;
......@@ -46,6 +45,9 @@ public class ApqInfoJob {
@Autowired
private RestTemplate restTemplate;
@Autowired
private MacAddrService macAddrService;
@Value(value = "${apq.iot-gateway}")
private String gateway;
......@@ -179,7 +181,7 @@ public class ApqInfoJob {
try {
baseboardV = Oshi4NoneSigarUtil.getBaseboardWithCache(); // 获取主板信息 缓存;
ipV = InetAddress.getLocalHost().getHostAddress();
ethernetV = SigarUtil.ethernet(sigar);
ethernetV = SigarUtil.ethernetSimple(sigar);
diskTempV = DiskSmartUtil.getDeviceTemp();
org.hyperic.sigar.CpuInfo cpuInfo = sigar.getCpuInfoList()[0];
......@@ -216,7 +218,7 @@ public class ApqInfoJob {
diskSpeedV = SigarUtil.diskSpeed(sigar);
data = MapUtil.<String, Object>builder()
.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, ip, mapParams), ip, ipV)
.put(isNeedCollection(isNoneEven, cpuModel, mapParams), cpuModel, cpuModelV)
......@@ -249,7 +251,7 @@ public class ApqInfoJob {
Map<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId);
params.put("productId", productId);
params.put("macAddress", MacAddrUtil.get());
params.put("macAddress", macAddrService.getMacAddr());
params.put("name", computerName);
String remoteDeviceVoJson = HttpUtil.post(gateway + deviceUpdateNameUrl, JSONUtil.toJsonStr(params), 5000);
RemoteDeviceVoResult remoteDeviceVo = JSONUtil.toBean(remoteDeviceVoJson, RemoteDeviceVoResult.class);
......@@ -322,10 +324,11 @@ public class ApqInfoJob {
// 更新采集到的硬件信息
try {
MqttRpcDataMessage mqttRpcDataMessage = new MqttRpcDataMessage();
mqttRpcDataMessage.setSendTime(System.currentTimeMillis());
mqttRpcDataMessage.setMethod("hardware_warning");
mqttRpcDataMessage.setParams(Convert.toStr(hardwareCache));
MqttRpcDataMessage mqttRpcDataMessage = MqttRpcDataMessage.builder()
.sendTime(System.currentTimeMillis())
.method("hardware_warning")
.params(JSONUtil.toJsonStr(hardwareCache)).build();
restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class);
} catch (Exception e) {
log.error("采集数据异常", e);
......@@ -335,10 +338,10 @@ public class ApqInfoJob {
hardwareCache.put(type, hardwareCacheRefresh);
// 更新采集到的硬件信息
try {
MqttRpcDataMessage mqttRpcDataMessage = new MqttRpcDataMessage();
mqttRpcDataMessage.setSendTime(System.currentTimeMillis());
mqttRpcDataMessage.setMethod("hardware_warning");
mqttRpcDataMessage.setParams(JSONUtil.toJsonStr(hardwareCache));
MqttRpcDataMessage mqttRpcDataMessage = MqttRpcDataMessage.builder()
.sendTime(System.currentTimeMillis())
.method("hardware_warning")
.params(JSONUtil.toJsonStr(hardwareCache)).build();
restTemplate.postForObject("http://localhost:8765/rpc_cmd", mqttRpcDataMessage, String.class);
} catch (Exception e) {
log.error("采集数据异常", e);
......
......@@ -3,14 +3,10 @@ package com.priusis.job;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.priusis.dto.HwPortControllerDto;
import com.priusis.dto.NetPortControllerDto;
import com.priusis.service.control.DeviceChangeCallbackImpl;
import com.priusis.utils.IHwPortController;
import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.http.ResponseEntity;
......@@ -18,17 +14,9 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@Slf4j
@Component
......
......@@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.priusis.dto.RegisterParamDto;
import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
......@@ -37,7 +37,7 @@ public class ApqRegister4BackListJob {
@Autowired
private RestTemplate restTemplate;
@Scheduled(fixedDelay = 600000L)
@Scheduled(fixedDelay = 120000L)
protected void registerProgramTask() {
log.info("软件检测上报=================");
......
......@@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.priusis.dto.RegisterParamDto;
import com.priusis.utils.WinExecuteUtils;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
......@@ -70,7 +70,7 @@ public class ApqRegister4WhiteListJob {
@Autowired
private RestTemplate restTemplate;
@Scheduled(fixedDelay = 600000L)
@Scheduled(fixedDelay = 120000L)
protected void registerProgramTask() {
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;
import cn.hutool.system.oshi.OshiUtil;
import com.sun.jna.NativeLibrary;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
......@@ -40,7 +39,7 @@ public class CoreTempUtil {
cpuAndGpuTemp[1] = gpuTempV;
return cpuAndGpuTemp;
} catch (Exception e) {
} catch (Throwable e) {
log.error("获取CPU温度异常", e);
cpuAndGpuTemp[0] = 0;
cpuAndGpuTemp[1] = 0;
......
......@@ -5,6 +5,8 @@ import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate;
/**
* @author yangli
......@@ -12,7 +14,8 @@ import org.hyperic.sigar.SigarException;
*/
@Slf4j
public final class MacAddrUtil {
public static String get() {
public static String getSigarMac() {
Sigar sigar = new Sigar();
String[] ifaces = null;
try {
......@@ -33,6 +36,6 @@ public final class MacAddrUtil {
}
public static void main(String[] args) {
System.out.println(MacAddrUtil.get());
System.out.println(MacAddrUtil.getSigarMac());
}
}
......@@ -82,12 +82,14 @@ public class Oshi4NoneSigarUtil {
}
public static void main(String[] args) throws SigarException {
System.out.println(Oshi4NoneSigarUtil.getDiskStoresModelFromOshi());
// System.out.println(Oshi4NoneSigarUtil.getDiskStoresModelFromOshi());
/*Sigar sigar = new Sigar();
FileSystem[] diskStores = sigar.getFileSystemList();
for (FileSystem diskStore : diskStores) {
System.out.println(diskStore.getSysTypeName());
}*/
System.out.println(getDiskStoresModelJsonFromOshi());
}
}
......@@ -39,7 +39,7 @@ public class SigarUtil {
// memory();
// System.out.println("----------------------------------");
// // 操作系统信息
os();
// os();
// System.out.println("----------------------------------");
// // 用户信息
// who();
......@@ -52,8 +52,8 @@ public class SigarUtil {
// net();
// System.out.println("----------------------------------");
// // 以太网信息
// System.out.println(ethernet());
// System.out.println("----------------------------------");
System.out.println(ethernet(sigar));
System.out.println("----------------------------------");
Thread.sleep(15000);
}
......@@ -486,4 +486,34 @@ public class SigarUtil {
sb.append("]");
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;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.priusis;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
......
......@@ -3,8 +3,8 @@ package com.priusis;
import cn.hutool.core.io.unit.DataSizeUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.system.oshi.OshiUtil;
import com.priusis.utils.MacAddrUtil;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.service.common.MacAddrService;
import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,6 +23,9 @@ public class RestTest {
@Autowired
private RestTemplate restTemplate;
@Autowired
private MacAddrService macAddrService;
@Test
public void test1() throws Exception {
// 获取采集配置,数据上报频率 params == data
......@@ -33,7 +36,7 @@ public class RestTest {
// 上报PC实时信息
Map<String, Object> data = MapUtil.<String, Object>builder()
.put("operatingSystem", OshiUtil.getOs().toString())
.put("mac", MacAddrUtil.get())
.put("mac", macAddrService.getMacAddr())
.put("baseboard", OshiUtil.getSystem().getBaseboard().getManufacturer() + " " + OshiUtil.getSystem().getBaseboard().getVersion())
.put("ip", InetAddress.getLocalHost().getHostAddress())
.put("cpuModel", OshiUtil.getCpuInfo(0).getCpuModel())
......
package com.priusis;
import com.priusis.vo.MqttRpcDataMessage;
import com.priusis.client.service.MqttRpcDataMessage;
import org.junit.Test;
import org.junit.runner.RunWith;
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论