From 24fe9e4bc980180e543b5760b575bad59f5afaef Mon Sep 17 00:00:00 2001 From: wujiawei <12345678> Date: Sat, 3 May 2025 23:34:28 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=E3=80=91=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0socks=E4=BB=A3=E7=90=86=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...leSocketClientProxyServerTypeAdvanced.java | 12 +++++------ ...lientProxyServerVisitorInboundHandler.java | 8 ++++---- .../common/constant/ProxyMessageType.java | 1 + .../handler/NettyHttpProxyHandler.java | 6 +++--- .../NettySocks5CommandRequestHandler.java | 20 ++++++++++++------- .../src/main/resources/application-dev.yml | 10 +++++----- 6 files changed, 32 insertions(+), 25 deletions(-) diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/advanced/NettySocketProtocolHandleSocketClientProxyServerTypeAdvanced.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/advanced/NettySocketProtocolHandleSocketClientProxyServerTypeAdvanced.java index f24f617..8550f97 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/advanced/NettySocketProtocolHandleSocketClientProxyServerTypeAdvanced.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/advanced/NettySocketProtocolHandleSocketClientProxyServerTypeAdvanced.java @@ -12,13 +12,16 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyC 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.socks.client.AbstractHandleSocketClientProxyServerTypeAdvanced; -import org.framework.lazy.cloud.network.heartbeat.common.factory.EventLoopGroupFactory; +import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType; import org.springframework.stereotype.Component; import org.wu.framework.spring.utils.SpringContextHolder; import java.util.ArrayList; import java.util.List; +/** + * @see ProxyMessageType#SOCKET_CLIENT_PROXY_SERVER_ + */ @Slf4j @Component public class NettySocketProtocolHandleSocketClientProxyServerTypeAdvanced @@ -34,12 +37,9 @@ public class NettySocketProtocolHandleSocketClientProxyServerTypeAdvanced NettySocketChannelContext nettySocketChannelContext = (NettySocketChannelContext) nettyChannelContext; - Channel channel = nettySocketChannelContext.channel(); - ChannelHandlerContext channelHandlerContext = nettySocketChannelContext.channelHandlerContext(); - EventLoopGroup group = EventLoopGroupFactory.createClientWorkGroup(); + Channel proxyChannel = nettySocketChannelContext.channel(); String host = nettyProxyMsg.getTargetIpString(); Integer port = Integer.parseInt(nettyProxyMsg.getTargetPortString()); - Bootstrap b = new Bootstrap(); Socks5AddressType socks5AddressType = nettySocketChannelContext.getSocks5AddressType(); @@ -58,7 +58,7 @@ public class NettySocketProtocolHandleSocketClientProxyServerTypeAdvanced nettySocksClientProxyServer.setNettyClientProperties(nettyClientProperties); // 创建连接 - NettySocksClientProxyServerSocket.buildTransferServer(nettySocksClientProxyServer, channel); + NettySocksClientProxyServerSocket.buildTransferServer(nettySocksClientProxyServer, proxyChannel); diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/handler/NettyClientProxyServerVisitorInboundHandler.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/handler/NettyClientProxyServerVisitorInboundHandler.java index 2bb8293..40aed43 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/handler/NettyClientProxyServerVisitorInboundHandler.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/proxy/socks/handler/NettyClientProxyServerVisitorInboundHandler.java @@ -28,12 +28,12 @@ public class NettyClientProxyServerVisitorInboundHandler extends SimpleChannelIn @Override public void channelRead0(ChannelHandlerContext ctx, NettyByteBuf nettyByteBuf) throws Exception { - log.info("转发客户端的请求到代理服务器"); + log.info("【socks】转发客户端的请求到代理服务器"); // 结果下发 Channel channel = ctx.channel(); byte[] bytes = nettyByteBuf.getData(); log.debug("bytes.length:{}",bytes.length); - log.debug("客户端代理服务端,本地接收请求数据:{}", new String(bytes)); + log.debug("客户端代理服务端,socks本地接收请求数据:{}", new String(bytes)); Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel); if (nextChannel.isActive()) { @@ -51,7 +51,7 @@ public class NettyClientProxyServerVisitorInboundHandler extends SimpleChannelIn @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { - log.info("客户端与代理服务器的连接已经断开,即将断开代理服务器和目标服务器的连接"); + log.info("【socks】客户端与代理服务器的连接已经断开,即将断开代理服务器和目标服务器的连接"); Channel channel = ctx.channel(); Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel); if (nextChannel.isActive()) { @@ -67,7 +67,7 @@ public class NettyClientProxyServerVisitorInboundHandler extends SimpleChannelIn @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - log.error("NettyClientProxyServerVisitorInboundHandler exception", cause); + log.error("【socks】NettyClientProxyServerVisitorInboundHandler exception", cause); ctx.close(); } } diff --git a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/constant/ProxyMessageType.java b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/constant/ProxyMessageType.java index 67a181d..c9f2c7f 100644 --- a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/constant/ProxyMessageType.java +++ b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/constant/ProxyMessageType.java @@ -6,6 +6,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.Abs import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.client.*; import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.*; import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.AbstractHandleSocketLocalProxyTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.client.AbstractHandleSocketClientProxyServerTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.client.AbstractHandleSocksDistributeClientProxyServerConnectionTransferSuccessTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.client.AbstractHandleSocksDistributeClientProxyServerTransferResponseTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.client.AbstractHandleSocksDistributeClientProxyServerTransferCloseTypeAdvanced; diff --git a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettyHttpProxyHandler.java b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettyHttpProxyHandler.java index 911fd96..d3c89e5 100644 --- a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettyHttpProxyHandler.java +++ b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettyHttpProxyHandler.java @@ -50,11 +50,11 @@ public class NettyHttpProxyHandler extends ChannelInboundHandlerAdapter { public void channelActive(ChannelHandlerContext ctx) throws Exception { Channel channel = ctx.channel(); if (channel instanceof NioSocketChannel) { - System.out.println("这是一个TCP通道"); + System.out.println("http 这是一个TCP通道"); } else if (channel instanceof NioDatagramChannel) { - System.out.println("这是一个UDP通道"); + System.out.println("http 这是一个UDP通道"); } else { - System.out.println("未知类型的通道"); + System.out.println("http 未知类型的通道"); } String visitorId = UUID.randomUUID().toString(); ChannelAttributeKeyUtils.buildVisitorId(channel, visitorId); diff --git a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5CommandRequestHandler.java b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5CommandRequestHandler.java index b106bf2..3a6da2a 100644 --- a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5CommandRequestHandler.java +++ b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5CommandRequestHandler.java @@ -1,14 +1,17 @@ package org.framework.lazy.cloud.network.heartbeat.protocol.handler; -import io.netty.channel.*; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.socket.nio.NioDatagramChannel; import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.socksx.v5.*; +import io.netty.handler.codec.socksx.v5.Socks5AddressType; +import io.netty.handler.codec.socksx.v5.Socks5CommandRequest; +import io.netty.handler.codec.socksx.v5.Socks5CommandType; import io.netty.util.ReferenceCountUtil; import lombok.extern.slf4j.Slf4j; -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.adapter.ChannelTypeAdapter; +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.constant.ProxyMessageType; import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils; @@ -33,11 +36,11 @@ public class NettySocks5CommandRequestHandler extends SimpleChannelInboundHandle public void channelActive(ChannelHandlerContext ctx) throws Exception { Channel channel = ctx.channel(); if (channel instanceof NioSocketChannel) { - System.out.println("这是一个TCP通道"); + System.out.println("socks 这是一个TCP通道"); } else if (channel instanceof NioDatagramChannel) { - System.out.println("这是一个UDP通道"); + System.out.println("socks 这是一个UDP通道"); } else { - System.out.println("未知类型的通道"); + System.out.println("socks 未知类型的通道"); } String visitorId = UUID.randomUUID().toString(); ChannelAttributeKeyUtils.buildVisitorId(channel, visitorId); @@ -78,6 +81,9 @@ public class NettySocks5CommandRequestHandler extends SimpleChannelInboundHandle proxyMsg.setType(ProxyMessageType.SOCKET_SERVER_PROXY_CLIENT_); } } + + // 绑定当前通道地址类型 + ChannelAttributeKeyUtils.buildSocks5AddressType(ctx.channel(), socks5AddressType.byteValue()); NettySocketChannelContext nettyChannelContext=new NettySocketChannelContext(); nettyChannelContext.setChannelHandlerContext(ctx); nettyChannelContext.setSocks5AddressType(request.dstAddrType()); diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml index c8e2f6c..094d84c 100644 --- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml +++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml @@ -4,14 +4,14 @@ spring: client: # inet-host: 124.222.48.62 # inet-port: 30676 -# inet-host: 124.222.152.160 -# inet-port: 30560 + inet-host: 124.222.152.160 + inet-port: 30560 # inet-host: 127.0.0.1 # inet-port: 7001 - inet-host: 36.26.30.20 - inet-port: 30560 +# inet-host: 36.26.30.20 +# inet-port: 30560 inet-path: wu-lazy-cloud-heartbeat-server - client-id: http-local-proxy # 客户端ID + client-id: socks-local-proxy # 客户端ID app-key: a4bf4415-25aa-4007-914b-31ec77d1292f app-secret: 88e6d827-12e7-4a5d-93e0-92c04c2414bc protocol-type: tcp