【fix】修复无法启动问题

This commit is contained in:
wujiawei 2025-04-30 18:53:36 +08:00
parent f88e0e2b7f
commit 6e79901be3
6 changed files with 29 additions and 34 deletions

View File

@ -9,12 +9,13 @@ import io.netty.handler.codec.socksx.v5.Socks5AddressType;
import io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder;
import io.netty.handler.codec.socksx.v5.Socks5CommandStatus;
import lombok.extern.slf4j.Slf4j;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettySocketChannelContext;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socket.AbstractHandleSocketLocalProxyTypeAdvanced;
import org.framework.lazy.cloud.network.heartbeat.common.factory.EventLoopGroupFactory;
import org.framework.lazy.cloud.network.heartbeat.protocol.handler.NettyClient2DestInboundHandler;
import org.framework.lazy.cloud.network.heartbeat.protocol.handler.NettyDest2ClientInboundHandler;
import org.framework.lazy.cloud.network.heartbeat.protocol.handler.NettyProxy2realInboundHandler;
import org.framework.lazy.cloud.network.heartbeat.protocol.handler.NettySocketReal2ProxyInboundHandler;
import org.framework.lazy.cloud.network.heartbeat.protocol.handler.NettySocks5CommandRequestHandler;
import org.springframework.stereotype.Component;
@ -32,13 +33,14 @@ public class NettySocketProtocolHandleSocketLocalProxyTypeAdvanced
*/
@Override
protected void doHandler(NettyChannelContext nettyChannelContext, NettyProxyMsg nettyProxyMsg) {
Channel channel = nettyChannelContext.channel();
ChannelHandlerContext channelHandlerContext = nettyChannelContext.channelHandlerContext();
NettySocketChannelContext nettySocketChannelContext = (NettySocketChannelContext) nettyChannelContext;
Channel channel = nettySocketChannelContext.channel();
ChannelHandlerContext channelHandlerContext = nettySocketChannelContext.channelHandlerContext();
EventLoopGroup group = EventLoopGroupFactory.createClientWorkGroup();
String host = nettyProxyMsg.getTargetIpString();
Integer port = Integer.parseInt(nettyProxyMsg.getTargetPortString());
Bootstrap b = new Bootstrap();
Socks5AddressType socks5AddressType=Socks5AddressType.IPv4;
Socks5AddressType socks5AddressType = nettySocketChannelContext.getSocks5AddressType();
b.group(group)
.channel(NioSocketChannel.class)
@ -46,7 +48,7 @@ public class NettySocketProtocolHandleSocketLocalProxyTypeAdvanced
.handler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(new NettyDest2ClientInboundHandler(channelHandlerContext));
ch.pipeline().addLast(new NettySocketReal2ProxyInboundHandler(channelHandlerContext));
}
});
log.info("准备连接目标服务器ip={},port={}", host, port);
@ -55,7 +57,7 @@ public class NettySocketProtocolHandleSocketLocalProxyTypeAdvanced
if (future.isSuccess()) {
log.info("目标服务器连接成功");
//添加客户端转发请求到服务端的Handler
channel.pipeline().addLast(new NettyClient2DestInboundHandler(future));
channel.pipeline().addLast(new NettyProxy2realInboundHandler(future));
DefaultSocks5CommandResponse commandResponse = new DefaultSocks5CommandResponse(Socks5CommandStatus.SUCCESS, socks5AddressType);
channel.writeAndFlush(commandResponse);
channel.pipeline().remove(NettySocks5CommandRequestHandler.class);

View File

@ -13,7 +13,7 @@ import org.springframework.stereotype.Component;
@Slf4j
@Component
public class NettyTcpProxySocketApplicationListener implements SocketApplicationListener {
public class NettySocketProxySocketApplicationListener implements SocketApplicationListener {
private final EventLoopGroup bossGroup = new NioEventLoopGroup();
private final EventLoopGroup workerGroup = new NioEventLoopGroup();
@ -21,7 +21,7 @@ public class NettyTcpProxySocketApplicationListener implements SocketApplication
private ChannelFuture channelFuture;
private final ProtocolProxyProperties protocolProxyProperties;
public NettyTcpProxySocketApplicationListener(NettyTcpProxyFilter nettyTcpProxyFilter, ProtocolProxyProperties protocolProxyProperties) {
public NettySocketProxySocketApplicationListener(NettyTcpProxyFilter nettyTcpProxyFilter, ProtocolProxyProperties protocolProxyProperties) {
this.nettyTcpProxyFilter = nettyTcpProxyFilter;
this.protocolProxyProperties = protocolProxyProperties;
}
@ -34,8 +34,8 @@ public class NettyTcpProxySocketApplicationListener implements SocketApplication
*/
@Override
public void doRunning() throws Exception {
ProtocolProxyProperties.TcpProtocolProxy tcpProtocolProxy = protocolProxyProperties.getTcpProtocolProxy();
Integer tcpProtocolProxyPort = tcpProtocolProxy.getPort();
ProtocolProxyProperties.SocketProtocolProxy socketProtocolProxy = protocolProxyProperties.getSocketProtocolProxy();
Integer socketProtocolProxyPort = socketProtocolProxy.getPort();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
@ -53,19 +53,19 @@ public class NettyTcpProxySocketApplicationListener implements SocketApplication
.childOption(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(1024 * 1024, 1024 * 1024 * 2))
.childHandler(nettyTcpProxyFilter);
channelFuture = b.bind(tcpProtocolProxyPort).sync();
channelFuture = b.bind(socketProtocolProxyPort).sync();
channelFuture.addListener((ChannelFutureListener) channelFuture -> {
// 服务器已启动
log.info("TCP 协议代理 服务器启动成功 【{}】", tcpProtocolProxyPort);
log.info("Socket 协议代理 服务器启动成功 【{}】", socketProtocolProxyPort);
});
channelFuture.channel().closeFuture().sync();
} catch (Exception e) {
log.error("启动TCP 协议代理 失败,端口:{}", tcpProtocolProxyPort, e);
log.error("启动Socket 协议代理 失败,端口:{}", socketProtocolProxyPort, e);
} finally {
destroy();
// 服务器已关闭
log.warn("TCP 协议代理 服务关闭");
log.warn("Socket 协议代理 服务关闭");
}
}

View File

@ -11,11 +11,11 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class NettyClient2DestInboundHandler extends ChannelInboundHandlerAdapter {
public class NettyProxy2realInboundHandler extends ChannelInboundHandlerAdapter {
private final ChannelFuture dstChannelFuture;
public NettyClient2DestInboundHandler(ChannelFuture dstChannelFuture) {
public NettyProxy2realInboundHandler(ChannelFuture dstChannelFuture) {
this.dstChannelFuture = dstChannelFuture;
}
@ -47,7 +47,7 @@ public class NettyClient2DestInboundHandler extends ChannelInboundHandlerAdapter
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
log.error("NettyClient2DestInboundHandler exception", cause);
log.error("NettyProxy2realInboundHandler exception", cause);
ctx.close();
}
}

View File

@ -9,11 +9,11 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class NettyDest2ClientInboundHandler extends ChannelInboundHandlerAdapter {
public class NettySocketReal2ProxyInboundHandler extends ChannelInboundHandlerAdapter {
private final ChannelHandlerContext clientChannelHandlerContext;
public NettyDest2ClientInboundHandler(ChannelHandlerContext clientChannelHandlerContext) {
public NettySocketReal2ProxyInboundHandler(ChannelHandlerContext clientChannelHandlerContext) {
this.clientChannelHandlerContext = clientChannelHandlerContext;
}
@ -43,7 +43,7 @@ public class NettyDest2ClientInboundHandler extends ChannelInboundHandlerAdapter
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
log.error("NettyDest2ClientInboundHandler exception", cause);
log.error("NettySocketReal2ProxyInboundHandler exception", cause);
ctx.close();
}
}

View File

@ -3,7 +3,7 @@ package org.framework.lazy.cloud.network.heartbeat.protocol.init;
import lombok.extern.slf4j.Slf4j;
import org.framework.lazy.cloud.network.heartbeat.protocol.context.NettyHttpProxySocketApplicationListener;
import org.framework.lazy.cloud.network.heartbeat.protocol.context.NettyTcpProxySocketApplicationListener;
import org.framework.lazy.cloud.network.heartbeat.protocol.context.NettySocketProxySocketApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@ -17,7 +17,7 @@ import org.springframework.context.annotation.Import;
@Slf4j
@Configuration
@Import({NettyHttpProxySocketApplicationListener.class,
NettyTcpProxySocketApplicationListener.class})
NettySocketProxySocketApplicationListener.class})
public class InitProtocolProxySocket {

View File

@ -21,11 +21,8 @@ public class ProtocolProxyProperties {
/**
* tcp协议代理
*/
private TcpProtocolProxy tcpProtocolProxy = new TcpProtocolProxy();
/**
* udp协议代理
*/
private UdpProtocolProxy udpProtocolProxy = new UdpProtocolProxy();
private SocketProtocolProxy socketProtocolProxy = new SocketProtocolProxy();
@ -35,12 +32,8 @@ public class ProtocolProxyProperties {
}
@Data
public static class TcpProtocolProxy {
public static class SocketProtocolProxy {
private Integer port=9001;
}
@Data
public static class UdpProtocolProxy {
private Integer port=10001;
}
}