From 37d9065c5a373f85b3d8f0335f362dd5340ee8e6 Mon Sep 17 00:00:00 2001 From: wujiawei <12345678> Date: Wed, 18 Sep 2024 22:33:24 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=20=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8?= =?UTF-8?q?next=20=E9=80=9A=E9=81=93=E8=BF=9B=E8=A1=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InternalNetworkPermeateServerVisitor.java | 4 +-- ...ClientRealAutoReadConnectTypeAdvanced.java | 6 ++-- ...lTransferTypeAdvancedHandleDistribute.java | 8 ++++-- ...ettyClientPermeateServerVisitorSocket.java | 13 ++++----- ...portHandleChannelTransferTypeAdvanced.java | 8 ++++-- ...rtSingleClientRealConnectTypeAdvanced.java | 6 ++++ ...ttyServerPermeateClientVisitorFilter.java} | 8 +++--- .../netty/filter/PermeateVisitorFilter.java | 2 -- ...tyServerPermeateClientVisitorHandler.java} | 28 +++++++++++-------- ...ettyServerPermeateClientVisitorSocket.java | 14 +++++----- .../src/main/resources/application-dev.yml | 2 +- 11 files changed, 56 insertions(+), 43 deletions(-) rename wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/{VisitorFilter.java => NettyServerPermeateClientVisitorFilter.java} (78%) rename wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/{VisitorHandler.java => NettyServerPermeateClientVisitorHandler.java} (87%) diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/InternalNetworkPermeateServerVisitor.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/InternalNetworkPermeateServerVisitor.java index da76698..6932671 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/InternalNetworkPermeateServerVisitor.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/InternalNetworkPermeateServerVisitor.java @@ -2,6 +2,7 @@ package org.framework.lazy.cloud.network.heartbeat.client.netty; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties; import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeate; @@ -10,8 +11,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelT import java.util.List; -@Builder -@Accessors(chain = true) +@NoArgsConstructor @Data public class InternalNetworkPermeateServerVisitor implements InternalNetworkPermeate { diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced.java index 8c254cd..56320ee 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced.java @@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j; import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext; import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils; @Slf4j public class ClientHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced extends AbstractHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced { @@ -21,8 +22,9 @@ public class ClientHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced e byte[] visitorId = nettyProxyMsg.getVisitorId(); // 获取访客对应的真实代理通道 Channel realChannel = NettyRealIdContext.getReal(visitorId); - if (realChannel != null) { - realChannel.config().setOption(ChannelOption.AUTO_READ, true); + Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel); + if (nextChannel != null) { + nextChannel.config().setOption(ChannelOption.AUTO_READ, true); } } diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientReportHandleChannelTransferTypeAdvancedHandleDistribute.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientReportHandleChannelTransferTypeAdvancedHandleDistribute.java index d890483..8ce6a1e 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientReportHandleChannelTransferTypeAdvancedHandleDistribute.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientReportHandleChannelTransferTypeAdvancedHandleDistribute.java @@ -9,6 +9,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext; import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeChannelTransferTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums; +import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils; /** @@ -40,8 +41,9 @@ public class ClientReportHandleChannelTransferTypeAdvancedHandleDistribute exten byte[] clientTargetPort = nettyProxyMsg.getClientTargetPort(); byte[] visitorId = nettyProxyMsg.getVisitorId(); // 真实服务通道 - Channel realChannel = NettyRealIdContext.getReal(new String(visitorId)); - if (realChannel == null) { +// Channel realChannel = NettyRealIdContext.getReal(new String(visitorId)); + Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel); + if (nextChannel == null) { log.error("无法获取访客:{} 真实服务", new String(visitorId)); return; } @@ -51,7 +53,7 @@ public class ClientReportHandleChannelTransferTypeAdvancedHandleDistribute exten ByteBuf buf = channel.config().getAllocator().buffer(nettyProxyMsg.getData().length); buf.writeBytes(nettyProxyMsg.getData()); - realChannel.writeAndFlush(buf); + nextChannel.writeAndFlush(buf); } diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateServerVisitorSocket.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateServerVisitorSocket.java index 06ce99b..75de2a7 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateServerVisitorSocket.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateServerVisitorSocket.java @@ -233,15 +233,14 @@ public class NettyClientPermeateServerVisitorSocket { if (visitorPort == null) { throw new IllegalArgumentException("visitorPort must not null"); } - InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor = InternalNetworkPermeateServerVisitor - .builder() - .targetIp(clientTargetIp) - .targetPort(clientTargetPort) - .visitorPort(visitorPort) - .build(); + InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor = new InternalNetworkPermeateServerVisitor(); + + internalNetworkPermeateServerVisitor.setTargetIp(clientTargetIp); + internalNetworkPermeateServerVisitor.setTargetPort(clientTargetPort); + internalNetworkPermeateServerVisitor.setVisitorPort(visitorPort); - NettyClientPermeateServerVisitorFilter visitorFilter = new NettyClientPermeateServerVisitorFilter(); + NettyClientPermeateServerVisitorFilter visitorFilter = new NettyClientPermeateServerVisitorFilter(internalNetworkPermeateServerVisitor); return new NettyClientPermeateServerVisitorSocket(visitorFilter, clientId, visitorPort); } diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java index e3cc07d..356b171 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java @@ -10,6 +10,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext; import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter; import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportHandleChannelTransferTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum; +import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils; import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.ServerChannelFlow; import org.springframework.stereotype.Component; @@ -45,10 +46,11 @@ public class ServerHandleReportHandleChannelTransferTypeAdvanced extends Abstrac // log.debug("访客ID:【{}】接收到客户端:[{}] 返回数据大小:[{}] 内网穿透返回的数据:[{}]", new String(visitorId), clientId, msg.getData().length, new String(msg.getData())); // 将数据转发访客通道 Channel visitor = NettyRealIdContext.getReal(visitorId); - if (visitor != null) { - ByteBuf buf = visitor.config().getAllocator().buffer(msg.getData().length); + Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel); + if (nextChannel != null) { + ByteBuf buf = nextChannel.config().getAllocator().buffer(msg.getData().length); buf.writeBytes(msg.getData()); - ChannelFuture channelFuture = visitor.writeAndFlush(buf); + ChannelFuture channelFuture = nextChannel.writeAndFlush(buf); boolean success = channelFuture.isSuccess(); log.debug("visitor writerAndFlush status: {}", success); // 记录出口数据 diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportSingleClientRealConnectTypeAdvanced.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportSingleClientRealConnectTypeAdvanced.java index 12b1652..6325b7b 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportSingleClientRealConnectTypeAdvanced.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportSingleClientRealConnectTypeAdvanced.java @@ -10,6 +10,9 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext; import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportSingleClientRealConnectTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils; +/** + * 服务端渗透客户端通信通道 + */ @Slf4j @Component public class ServerHandleReportSingleClientRealConnectTypeAdvanced extends AbstractHandleReportSingleClientRealConnectTypeAdvanced { @@ -38,6 +41,9 @@ public class ServerHandleReportSingleClientRealConnectTypeAdvanced extends Abstr Channel visitorRealChannel = NettyRealIdContext.getReal(new String(visitorId)); visitorRealChannel.config().setOption(ChannelOption.AUTO_READ, true); + ChannelAttributeKeyUtils.buildNextChannel(channel, visitorRealChannel); + ChannelAttributeKeyUtils.buildNextChannel(visitorRealChannel, channel); + // 或许此处还应该通知服务端 这个访客绑定的客户端真实通道打开 // 下发客户端 真实通道自动读写开启 diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/VisitorFilter.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/NettyServerPermeateClientVisitorFilter.java similarity index 78% rename from wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/VisitorFilter.java rename to wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/NettyServerPermeateClientVisitorFilter.java index ded4325..51992c5 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/VisitorFilter.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/NettyServerPermeateClientVisitorFilter.java @@ -8,13 +8,13 @@ import io.netty.channel.socket.SocketChannel; import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPenetrationRealClient; import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter; import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer; -import org.framework.lazy.cloud.network.heartbeat.server.netty.handler.VisitorHandler; +import org.framework.lazy.cloud.network.heartbeat.server.netty.handler.NettyServerPermeateClientVisitorHandler; -public class VisitorFilter extends DebugChannelInitializer { +public class NettyServerPermeateClientVisitorFilter extends DebugChannelInitializer { private final InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient; private final ChannelFlowAdapter channelFlowAdapter; - public VisitorFilter(InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient, ChannelFlowAdapter channelFlowAdapter) { + public NettyServerPermeateClientVisitorFilter(InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient, ChannelFlowAdapter channelFlowAdapter) { this.internalNetworkPenetrationRealClient = internalNetworkPenetrationRealClient; this.channelFlowAdapter = channelFlowAdapter; } @@ -32,6 +32,6 @@ public class VisitorFilter extends DebugChannelInitializer { protected void initChannel0(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new ChannelDuplexHandler()); - pipeline.addLast(new VisitorHandler(internalNetworkPenetrationRealClient, channelFlowAdapter)); + pipeline.addLast(new NettyServerPermeateClientVisitorHandler(internalNetworkPenetrationRealClient, channelFlowAdapter)); } } diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/PermeateVisitorFilter.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/PermeateVisitorFilter.java index dfdb24d..8715bb3 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/PermeateVisitorFilter.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/PermeateVisitorFilter.java @@ -5,12 +5,10 @@ import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPenetrationRealClient; import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeateRealServer; import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter; import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer; import org.framework.lazy.cloud.network.heartbeat.server.netty.handler.PermeateVisitorHandler; -import org.framework.lazy.cloud.network.heartbeat.server.netty.handler.VisitorHandler; public class PermeateVisitorFilter extends DebugChannelInitializer { private final InternalNetworkPermeateRealServer internalNetworkPermeateRealServer; diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/VisitorHandler.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/NettyServerPermeateClientVisitorHandler.java similarity index 87% rename from wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/VisitorHandler.java rename to wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/NettyServerPermeateClientVisitorHandler.java index 20bac0d..8131e36 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/VisitorHandler.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/NettyServerPermeateClientVisitorHandler.java @@ -18,12 +18,12 @@ import org.wu.framework.core.utils.ObjectUtils; import java.util.UUID; @Slf4j -public class VisitorHandler extends SimpleChannelInboundHandler { +public class NettyServerPermeateClientVisitorHandler extends SimpleChannelInboundHandler { private final InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient; private final ChannelFlowAdapter channelFlowAdapter;// 流量适配器 // private final NettyChannelPool nettyChannelPool = new DefaultNettyChannelPool(10); - public VisitorHandler(InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient, ChannelFlowAdapter channelFlowAdapter) { + public NettyServerPermeateClientVisitorHandler(InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient, ChannelFlowAdapter channelFlowAdapter) { this.internalNetworkPenetrationRealClient = internalNetworkPenetrationRealClient; this.channelFlowAdapter = channelFlowAdapter; } @@ -97,8 +97,9 @@ public class VisitorHandler extends SimpleChannelInboundHandler { // 使用访客的通信通道 Channel visitorCommunicationChannel = NettyCommunicationIdContext.getVisitor(visitorId); + Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(visitorChannel); // 绑定数据流量 - ChannelAttributeKeyUtils.buildInFlow(visitorCommunicationChannel, bytes.length); + ChannelAttributeKeyUtils.buildInFlow(nextChannel, bytes.length); NettyProxyMsg nettyProxyMsg = new NettyProxyMsg(); nettyProxyMsg.setType(MessageType.DISTRIBUTE_CLIENT_TRANSFER); nettyProxyMsg.setClientId(clientId); @@ -107,7 +108,7 @@ public class VisitorHandler extends SimpleChannelInboundHandler { nettyProxyMsg.setVisitorPort(visitorPort); nettyProxyMsg.setVisitorId(visitorId); nettyProxyMsg.setData(bytes); - visitorCommunicationChannel.writeAndFlush(nettyProxyMsg); + nextChannel.writeAndFlush(nettyProxyMsg); // 处理访客流量 ServerChannelFlow serverChannelFlow = ServerChannelFlow .builder() @@ -129,16 +130,17 @@ public class VisitorHandler extends SimpleChannelInboundHandler { return; } // 通信通道自动读写打开 ,然后关闭通信通道 - Channel visitorChannel = NettyCommunicationIdContext.getVisitor(visitorId); - if (visitorChannel != null && visitorChannel.isActive()) { +// Channel visitorChannel = NettyCommunicationIdContext.getVisitor(visitorId); + Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel()); + if (nextChannel != null && nextChannel.isActive()) { - visitorChannel.config().setOption(ChannelOption.AUTO_READ, true); + nextChannel.config().setOption(ChannelOption.AUTO_READ, true); // 通知服务端 关闭访问通道、真实通道 NettyProxyMsg myMsg = new NettyProxyMsg(); myMsg.setType(MessageType.DISTRIBUTE_SINGLE_CLIENT_REAL_CLOSE_VISITOR); myMsg.setVisitorId(visitorId); - visitorChannel.writeAndFlush(myMsg); + nextChannel.writeAndFlush(myMsg); } // 关闭 访客通信通道、访客真实通道 NettyRealIdContext.clear(visitorId); @@ -158,9 +160,10 @@ public class VisitorHandler extends SimpleChannelInboundHandler { } Channel visitorCommunicationChannel = NettyCommunicationIdContext.getVisitor(visitorId); - if (visitorCommunicationChannel != null) { + Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel()); + if (nextChannel != null) { log.debug("visitorId:{} transfer AUTO_READ:{} ",visitorId,ctx.channel().isWritable()); - visitorCommunicationChannel.config().setOption(ChannelOption.AUTO_READ, ctx.channel().isWritable()); + nextChannel.config().setOption(ChannelOption.AUTO_READ, ctx.channel().isWritable()); } // Channel visitorChannel = ctx.channel(); // String vid = visitorChannel.attr(Constant.VID).get(); @@ -191,13 +194,14 @@ public class VisitorHandler extends SimpleChannelInboundHandler { String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel); // 使用通信通道 下发关闭访客 Channel visitorChannel = NettyCommunicationIdContext.getVisitor(visitorId); - if (visitorChannel != null) { + Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel()); + if (nextChannel != null) { // 下发关闭访客 NettyProxyMsg closeRealClient = new NettyProxyMsg(); closeRealClient.setType(MessageType.DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT_AUTO_READ); closeRealClient.setClientId(clientId); closeRealClient.setVisitorId(visitorId); - visitorChannel.writeAndFlush(closeRealClient); + nextChannel.writeAndFlush(closeRealClient); } ctx.close(); diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyServerPermeateClientVisitorSocket.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyServerPermeateClientVisitorSocket.java index 0fb7959..a6bfc8e 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyServerPermeateClientVisitorSocket.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyServerPermeateClientVisitorSocket.java @@ -10,7 +10,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPenetrat import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorContext; import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext; import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter; -import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.VisitorFilter; +import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.NettyServerPermeateClientVisitorFilter; import java.io.IOException; @@ -24,14 +24,14 @@ import java.io.IOException; public class NettyServerPermeateClientVisitorSocket { private final EventLoopGroup bossGroup = new NioEventLoopGroup(); private final EventLoopGroup workerGroup = new NioEventLoopGroup(); - private final VisitorFilter visitorFilter; + private final NettyServerPermeateClientVisitorFilter nettyServerPermeateClientVisitorFilter; @Getter private final String clientId; @Getter private final int visitorPort; - public NettyServerPermeateClientVisitorSocket(VisitorFilter visitorFilter, String clientId, int visitorPort) { - this.visitorFilter = visitorFilter; + public NettyServerPermeateClientVisitorSocket(NettyServerPermeateClientVisitorFilter nettyServerPermeateClientVisitorFilter, String clientId, int visitorPort) { + this.nettyServerPermeateClientVisitorFilter = nettyServerPermeateClientVisitorFilter; this.clientId = clientId; this.visitorPort = visitorPort; } @@ -64,7 +64,7 @@ public class NettyServerPermeateClientVisitorSocket { .childOption(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(1024 * 1024, 1024 * 1024 * 2)) - .childHandler(visitorFilter); + .childHandler(nettyServerPermeateClientVisitorFilter); ChannelFuture sync = bootstrap.bind(visitorPort).sync(); sync.addListener((ChannelFutureListener) future -> { if (future.isSuccess()) { @@ -229,8 +229,8 @@ public class NettyServerPermeateClientVisitorSocket { .visitorPort(visitorPort) .visitorId(visitorId).build(); - VisitorFilter visitorFilter = new VisitorFilter(internalNetworkPenetrationRealClient, channelFlowAdapter); - return new NettyServerPermeateClientVisitorSocket(visitorFilter, clientId, visitorPort); + NettyServerPermeateClientVisitorFilter nettyServerPermeateClientVisitorFilter = new NettyServerPermeateClientVisitorFilter(internalNetworkPenetrationRealClient, channelFlowAdapter); + return new NettyServerPermeateClientVisitorSocket(nettyServerPermeateClientVisitorFilter, clientId, visitorPort); } 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 782ffb9..55c0d39 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 @@ -7,7 +7,7 @@ spring: inet-host: 127.0.0.1 inet-port: 7001 inet-path: wu-lazy-cloud-heartbeat-server - client-id: wujiawei-acw # 客户端ID + client-id: wujiawei # 客户端ID # inet-host: 124.222.48.62 # 服务端地址 # inet-port: 30676 #服务端端口 # # inet-path: wu-lazy-cloud-heartbeat-server