新增节点状态上报接口,魔改XrayR
This commit is contained in:
parent
82d14037e4
commit
05410c662c
|
|
@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
|
|||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.utils.ServletUtils;
|
||||
import org.dromara.net.domain.bo.NetXrayRConfigBo;
|
||||
import org.dromara.net.domain.bo.soga.SogaStatusBo;
|
||||
import org.dromara.net.domain.vo.NetXrayRUsersVo;
|
||||
import org.dromara.net.service.INetXrayRService;
|
||||
import org.dromara.net.service.ISubLinkStrategy;
|
||||
|
|
@ -58,6 +59,16 @@ public class XrayRController {
|
|||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 节点状态上报
|
||||
*/
|
||||
@SaIgnore
|
||||
@PostMapping("/api/v1/server/UniProxy/status")
|
||||
public R<Void> submitStatus(@RequestBody SogaStatusBo status, NetXrayRConfigBo bo) {
|
||||
netXrayRService.submitStatus(status, bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 订阅链接
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package org.dromara.net.service;
|
|||
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.net.domain.bo.NetXrayRConfigBo;
|
||||
import org.dromara.net.domain.bo.soga.SogaStatusBo;
|
||||
import org.dromara.net.domain.vo.NetXrayRUserVo;
|
||||
import org.dromara.net.domain.vo.NetXrayRUsersVo;
|
||||
|
||||
|
|
@ -24,4 +25,9 @@ public interface INetXrayRService {
|
|||
* 用户流量上报
|
||||
*/
|
||||
void push(Map<Long,Long[]> boMap, NetXrayRConfigBo bo);
|
||||
|
||||
/**
|
||||
* 节点状态上报
|
||||
*/
|
||||
void submitStatus(SogaStatusBo status, NetXrayRConfigBo bo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import org.dromara.net.domain.NetFlowRecord;
|
|||
import org.dromara.net.domain.NetNode;
|
||||
import org.dromara.net.domain.NetUser;
|
||||
import org.dromara.net.domain.bo.NetXrayRConfigBo;
|
||||
import org.dromara.net.domain.bo.soga.SogaStatusBo;
|
||||
import org.dromara.net.domain.vo.NetXrayRUserVo;
|
||||
import org.dromara.net.domain.vo.NetXrayRUsersVo;
|
||||
import org.dromara.net.mapper.NetFlowRecordMapper;
|
||||
|
|
@ -101,6 +102,42 @@ public class NetXrayRServiceImpl implements INetXrayRService {
|
|||
netFlowRecordMapper.insert(flowRecords,1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* 节点状态上报
|
||||
*/
|
||||
@Override
|
||||
public void submitStatus(SogaStatusBo status, NetXrayRConfigBo bo) {
|
||||
Assert.isTrue(verifyToken(bo), "token 不正确");
|
||||
|
||||
if (status == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新节点状态信息
|
||||
NetNode node = new NetNode();
|
||||
node.setId(bo.getNode_id());
|
||||
node.setCpuUsageRate(status.getCpu() != null ? String.format("%.2f", status.getCpu()) : null);
|
||||
node.setUptime(status.getUptime() != null ? status.getUptime().intValue() : null);
|
||||
|
||||
if (status.getMem() != null) {
|
||||
node.setMemTotal(status.getMem().getTotal());
|
||||
node.setMemUsed(status.getMem().getUsed());
|
||||
}
|
||||
if (status.getSwap() != null) {
|
||||
node.setSwapTotal(status.getSwap().getTotal());
|
||||
node.setSwapUsed(status.getSwap().getUsed());
|
||||
}
|
||||
if (status.getDisk() != null) {
|
||||
node.setDiskTotal(status.getDisk().getTotal());
|
||||
node.setDiskUsed(status.getDisk().getUsed());
|
||||
}
|
||||
|
||||
netNodeMapper.updateById(node);
|
||||
|
||||
log.debug("节点 {} 状态上报 - CPU: {}%, 运行时间: {}s",
|
||||
bo.getNode_id(), status.getCpu(), status.getUptime());
|
||||
}
|
||||
|
||||
private boolean verifyToken(NetXrayRConfigBo bo) {
|
||||
NetNode netNode = TenantHelper.ignore(() -> netNodeMapper.selectById(bo.getNode_id()));
|
||||
Assert.notNull(netNode, "节点不存在!");
|
||||
|
|
|
|||
Loading…
Reference in New Issue