修复agent时携带错误的屏蔽协议数据,编辑转发时无法使用原分配端口

This commit is contained in:
qaq
2025-11-20 13:51:48 +08:00
parent 37ea338a35
commit 43aebdf8f4
10 changed files with 51 additions and 21 deletions
@@ -169,7 +169,7 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
forward.setUpdatedTime(System.currentTimeMillis());
List<JSONObject> success = new ArrayList<>();
List<ChainTunnel> chainTunnels = chainTunnelService.list(new QueryWrapper<ChainTunnel>().eq("tunnel_id", tunnel.getId()).eq("chain_type", 1));
chainTunnels = get_port(chainTunnels, forwardDto.getInPort());
chainTunnels = get_port(chainTunnels, forwardDto.getInPort(), 0L);
this.save(forward);
for (ChainTunnel chainTunnel : chainTunnels) {
@@ -251,7 +251,12 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
List<ChainTunnel> chainTunnels = chainTunnelService.list(new QueryWrapper<ChainTunnel>().eq("tunnel_id", tunnel.getId()).eq("chain_type", 1));
chainTunnels = get_port(chainTunnels, forwardUpdateDto.getInPort());
// 自己占用的应该不算
chainTunnels = get_port(chainTunnels, forwardUpdateDto.getInPort(), existForward.getId());
for (ChainTunnel chainTunnel : chainTunnels) {
String serviceName = buildServiceName(existForward.getId(), existForward.getUserId(), userTunnel);
Integer limiter = permissionResult.getLimiter();
@@ -940,12 +945,12 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
}
public List<ChainTunnel> get_port(List<ChainTunnel> chainTunnelList, Integer in_port) {
public List<ChainTunnel> get_port(List<ChainTunnel> chainTunnelList, Integer in_port, Long forward_id) {
List<List<Integer>> list = new ArrayList<>();
// 获取每个节点的端口列表
for (ChainTunnel tunnel : chainTunnelList) {
List<Integer> nodePort = getNodePort(tunnel.getNodeId());
List<Integer> nodePort = getNodePort(tunnel.getNodeId(), forward_id);
if (nodePort.isEmpty()) {
throw new RuntimeException("暂无可用端口");
}
@@ -968,7 +973,7 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
}
// ========== 未指定 in_port 查找最小的共同端口 ==========
Set<Integer> intersection = new HashSet<>(list.get(0));
Set<Integer> intersection = new HashSet<>(list.getFirst());
for (int i = 1; i < list.size(); i++) {
intersection.retainAll(list.get(i));
}
@@ -995,7 +1000,7 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
return chainTunnelList;
}
public List<Integer> getNodePort(Long nodeId) {
public List<Integer> getNodePort(Long nodeId, Long forward_id) {
Node node = nodeService.getById(nodeId);
if (node == null) {
@@ -1012,7 +1017,7 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
.collect(Collectors.toSet());
List<ForwardPort> list = forwardPortService.list(new QueryWrapper<ForwardPort>().eq("node_id", nodeId));
List<ForwardPort> list = forwardPortService.list(new QueryWrapper<ForwardPort>().eq("node_id", nodeId).ne("forward_id", forward_id));
Set<Integer> forwardUsedPorts = new HashSet<>();
for (ForwardPort forwardPort : list) {
forwardUsedPorts.add(forwardPort.getPort());
@@ -126,7 +126,7 @@ public class NodeServiceImpl extends ServiceImpl<NodeMapper, Node> implements No
ViteConfig viteConfig = viteConfigService.getOne(new QueryWrapper<ViteConfig>().eq("name", "ip"));
if (viteConfig == null) return R.err("请先前往网站配置中设置ip");
StringBuilder command = new StringBuilder();
command.append("curl -L https://github.com/bqlpfy/flux-panel/releases/download/2.0.4-beta/install.sh")
command.append("curl -L https://github.com/bqlpfy/flux-panel/releases/download/2.0.5-beta/install.sh")
.append(" -o ./install.sh && chmod +x ./install.sh && ");
String processedServerAddr = GostUtil.processServerAddress(viteConfig.getValue());
command.append("./install.sh")