新增节点状态上报接口,魔改XrayR

This commit is contained in:
lys 2026-03-03 14:53:37 +08:00
parent 82d14037e4
commit 05410c662c
3 changed files with 54 additions and 0 deletions

View File

@ -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();
}
/**
* 订阅链接
*/

View File

@ -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);
}

View File

@ -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, "节点不存在!");