【fix】新增本地socks代理服务端

This commit is contained in:
wujiawei
2025-05-03 23:34:28 +08:00
parent 2adf5e4749
commit 24fe9e4bc9
6 changed files with 32 additions and 25 deletions

View File

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

View File

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