修复出口协议无法选择,加入自定义转发端口,增加arm支持

This commit is contained in:
qaq
2025-11-19 16:32:48 +08:00
parent 9146eb0375
commit 4fef8eeb32
14 changed files with 157 additions and 47 deletions
@@ -21,4 +21,6 @@ public class ForwardDto {
private String remoteAddr;
private String strategy;
private Integer inPort;
}
@@ -25,4 +25,6 @@ public class ForwardUpdateDto {
private String strategy;
private Integer inPort;
}
@@ -57,5 +57,5 @@ public interface TunnelService extends IService<Tunnel> {
*/
R diagnoseTunnel(Long tunnelId);
Integer getNodePort(Long nodeId, Integer type);
Integer getNodePort(Long nodeId, Integer type, Integer port);
}
@@ -163,7 +163,7 @@ 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));
for (ChainTunnel chainTunnel : chainTunnels) {
Integer nodePort = tunnelService.getNodePort(chainTunnel.getNodeId(), 2);
Integer nodePort = tunnelService.getNodePort(chainTunnel.getNodeId(), 2, forwardDto.getInPort());
ForwardPort forwardPort = new ForwardPort();
forwardPort.setForwardId(forward.getId());
@@ -205,7 +205,7 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
return R.err(permissionResult.getErrorMessage());
}
UserTunnel userTunnel = null;
UserTunnel userTunnel;
if (currentUser.getRoleId() != 0) {
userTunnel = getUserTunnel(currentUser.getUserId(), tunnel.getId().intValue());
if (userTunnel == null) {
@@ -236,6 +236,13 @@ public class ForwardServiceImpl extends ServiceImpl<ForwardMapper, Forward> impl
if (forwardPort == null){
return R.err("部分节点不存在1");
}
if (forwardUpdateDto.getInPort() != null && !forwardUpdateDto.getInPort().equals(forwardPort.getPort())) {
Integer nodePort = tunnelService.getNodePort(forwardPort.getNodeId(), 2, forwardUpdateDto.getInPort());
if (Objects.equals(nodePort, forwardUpdateDto.getInPort())) {
forwardPort.setPort(nodePort);
forwardPortService.updateById(forwardPort);
}
}
GostUtil.AddAndUpdateService(serviceName, limiter, node, existForward, forwardPort, tunnel, "UpdateService");
}
@@ -125,7 +125,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.1-beta/install.sh")
command.append("curl -L https://github.com/bqlpfy/flux-panel/releases/download/2.0.2-beta/install.sh")
.append(" -o ./install.sh && chmod +x ./install.sh && ");
String processedServerAddr = processServerAddress(viteConfig.getValue());
command.append("./install.sh")
@@ -81,7 +81,7 @@ public class TunnelServiceImpl extends ServiceImpl<TunnelMapper, Tunnel> impleme
Node node = nodeService.getById(chain_node.getNodeId());
if (node == null) return R.err("节点不存在");
nodes.put(node.getId(), node);
Integer nodePort = getNodePort(chain_node.getNodeId(), 1);
Integer nodePort = getNodePort(chain_node.getNodeId(), 1, null);
chain_node.setPort(nodePort);
chain_node.setInx(inx); // 设置转发链序号
chainTunnels.add(chain_node);
@@ -93,7 +93,7 @@ public class TunnelServiceImpl extends ServiceImpl<TunnelMapper, Tunnel> impleme
Node node = nodeService.getById(out_node.getNodeId());
if (node == null) return R.err("节点不存在");
nodes.put(node.getId(), node);
Integer nodePort = getNodePort(out_node.getNodeId(), 1);
Integer nodePort = getNodePort(out_node.getNodeId(), 1, null);
out_node.setPort(nodePort);
chainTunnels.add(out_node);
}
@@ -472,7 +472,7 @@ public class TunnelServiceImpl extends ServiceImpl<TunnelMapper, Tunnel> impleme
}
@Override
public Integer getNodePort(Long nodeId,Integer type) {
public Integer getNodePort(Long nodeId,Integer type, Integer port) {
Node node = nodeService.getById(nodeId);
if (node == null){
@@ -508,6 +508,9 @@ public class TunnelServiceImpl extends ServiceImpl<TunnelMapper, Tunnel> impleme
if (type == 1) {
return availablePorts.getLast();
}else {
if (port != null && availablePorts.contains(port)) {
return port;
}
return availablePorts.getFirst();
}
}