From 4a7bdb366fc59e7d4ee3bd159905be2b8f911d99 Mon Sep 17 00:00:00 2001 From: wujiawei <1207537021@qq.com> Date: Tue, 17 Sep 2024 18:21:33 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=E3=80=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E5=86=85=E7=BD=91=E6=B8=97=E9=80=8F=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netty/handler/NettyClientRealHandler.java | 1 - .../handler/PermeateClientRealHandler.java | 10 ++--- .../netty/handler/PermeateVisitorHandler.java | 15 +++---- .../socket/NettyPermeateClientRealSocket.java | 40 +++++++++++-------- .../socket/NettyPermeateVisitorSocket.java | 10 ----- .../src/main/resources/application-dev.yml | 7 +++- 6 files changed, 38 insertions(+), 45 deletions(-) diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientRealHandler.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientRealHandler.java index 1afd07f..a7fafb6 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientRealHandler.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientRealHandler.java @@ -1,7 +1,6 @@ package org.framework.lazy.cloud.network.heartbeat.client.netty.handler; -import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOption; diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/PermeateClientRealHandler.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/PermeateClientRealHandler.java index f50fdc5..8c5cf7b 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/PermeateClientRealHandler.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/PermeateClientRealHandler.java @@ -6,12 +6,8 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOption; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; -import org.framework.lazy.cloud.network.heartbeat.common.MessageType; import org.framework.lazy.cloud.network.heartbeat.common.NettyByteBuf; -import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext; -import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils; -import org.wu.framework.core.utils.ObjectUtils; /** * 来自客户端 真实服务器返回的数据请求 @@ -24,7 +20,8 @@ public class PermeateClientRealHandler extends SimpleChannelInboundHandler // 判断是否有可用的通道 如果没有创建新的通道 + log.info("开始准备绑定渗透真实通道: {}", internalNetworkPermeateRealServer.getVisitorPort()); // 创建这是客户端通道池 NettyPermeateClientRealSocket.buildRealServer(internalNetworkPermeateRealServer, visitorChannel, visitorId); - - Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(visitorChannel); - if (nextChannel != null) { - // 绑定 访客 - ChannelAttributeKeyUtils.buildVisitorId(nextChannel, visitorId); - nextChannel.config().setOption(ChannelOption.AUTO_READ, true); - } else { - log.error("服务端内网渗透失败,无法连接到服务端访客"); - } - log.info("内网渗透 服务端访客端口连接成功了"); + super.channelActive(ctx); } @@ -73,6 +65,8 @@ public class PermeateVisitorHandler extends SimpleChannelInboundHandler // 使用访客的通信通道 Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(visitorChannel); + // 下一个通道开启自动读写 + nextChannel.config().setOption(ChannelOption.AUTO_READ, true); // 绑定数据流量 ChannelAttributeKeyUtils.buildInFlow(nextChannel, bytes.length); nextChannel.writeAndFlush(bytes); @@ -80,6 +74,7 @@ public class PermeateVisitorHandler extends SimpleChannelInboundHandler // 处理访客流量 ServerChannelFlow serverChannelFlow = ServerChannelFlow .builder() + .clientId("server_id") .channelFlowEnum(ChannelFlowEnum.IN_FLOW) .port(visitorPort) .flow(bytes.length) diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateClientRealSocket.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateClientRealSocket.java index 1314fc5..eb44db1 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateClientRealSocket.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateClientRealSocket.java @@ -23,9 +23,7 @@ public class NettyPermeateClientRealSocket { * @param internalNetworkPermeateRealServer 访客信息 */ public static void buildRealServer(InternalNetworkPermeateRealServer internalNetworkPermeateRealServer,Channel visitorChannel ,String visitorId) { - buildNewRealServer(internalNetworkPermeateRealServer,visitorChannel,visitorId); - } /** @@ -33,7 +31,8 @@ public class NettyPermeateClientRealSocket { * @param visitorChannel * @param visitorId */ - private static void buildNewRealServer(InternalNetworkPermeateRealServer internalNetworkPermeateRealServer, Channel visitorChannel, String visitorId) { + private static void buildNewRealServer(InternalNetworkPermeateRealServer internalNetworkPermeateRealServer, + Channel visitorChannel, String visitorId) { try { String clientTargetIp = internalNetworkPermeateRealServer.getClientTargetIp(); Integer clientTargetPort = internalNetworkPermeateRealServer.getClientTargetPort(); @@ -54,27 +53,34 @@ public class NettyPermeateClientRealSocket { ; - bootstrap.connect(clientTargetIp, clientTargetPort).addListener((ChannelFutureListener) future -> { - if (future.isSuccess()) { - // 客户端链接真实服务成功 设置自动读写false 等待访客连接成功后设置成true - Channel realChannel = future.channel(); - realChannel.config().setOption(ChannelOption.AUTO_READ, false); + bootstrap + .connect(clientTargetIp, clientTargetPort) + .sync() + .addListener((ChannelFutureListener) channelFuture -> { + if (channelFuture.isSuccess()) { + // 客户端链接真实服务成功 设置自动读写false 等待访客连接成功后设置成true + Channel realChannel = channelFuture.channel(); + realChannel.config().setOption(ChannelOption.AUTO_READ, true); - log.info("服务端内网渗透通过,绑定本地服务,IP:{},端口:{} 新建通道成功", clientTargetIp, clientTargetPort); - ChannelAttributeKeyUtils.buildVisitorPort(realChannel, visitorPort); - // 缓存当前端口对应的通道、通道池 - ChannelAttributeKeyUtils.buildNextChannel(realChannel, visitorChannel); - ChannelAttributeKeyUtils.buildNextChannel(visitorChannel, realChannel); + log.info("服务端内网渗透通过,绑定本地服务,IP:{},端口:{} 新建通道成功", clientTargetIp, clientTargetPort); + ChannelAttributeKeyUtils.buildVisitorPort(realChannel, visitorPort); + // 缓存当前端口对应的通道、通道池 + ChannelAttributeKeyUtils.buildNextChannel(realChannel, visitorChannel); + ChannelAttributeKeyUtils.buildNextChannel(visitorChannel, realChannel); - ChannelAttributeKeyUtils.buildVisitorId(realChannel, visitorId); + ChannelAttributeKeyUtils.buildVisitorId(realChannel, visitorId); - } else { - log.error("服务端内网渗透 无法连接当前网络内的目标IP:【{}】,目标端口:【{}】", clientTargetIp, clientTargetPort); + visitorChannel.config().setOption(ChannelOption.AUTO_READ, true); + + } else { + log.error("服务端内网渗透 无法连接当前网络内的目标IP:【{}】,目标端口:【{}】", clientTargetIp, clientTargetPort); // future.channel().eventLoop().schedule(() -> { // buildNewRealServer(internalNetworkPermeateRealServer); // }, 2, TimeUnit.SECONDS); - } + } }); + + } catch (Exception e) { e.printStackTrace(); } diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateVisitorSocket.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateVisitorSocket.java index 86a013e..5af2fa1 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateVisitorSocket.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyPermeateVisitorSocket.java @@ -180,16 +180,6 @@ public class NettyPermeateVisitorSocket { return this; } - /** - * 绑定访客ID - * - * @param visitorId 访客ID - * @return 当前对象 - */ - public NettyPermeateVisitorSocketBuilder builderVisitorId(String visitorId) { - this.visitorId = visitorId; - return this; - } public NettyPermeateVisitorSocket build() { diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/src/main/resources/application-dev.yml b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/src/main/resources/application-dev.yml index 23756a5..64ac3a8 100644 --- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/src/main/resources/application-dev.yml +++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/src/main/resources/application-dev.yml @@ -21,4 +21,9 @@ spring: url: jdbc:mysql://127.0.0.1:3306/wu_lazy_cloud_netty_server?allowMultiQueries=true&useUnicode=true&autoReconnect=true&useAffectedRows=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&databaseTerm=SCHEMA username: root password: wujiawei - driver-class-name: com.mysql.cj.jdbc.Driver \ No newline at end of file + driver-class-name: com.mysql.cj.jdbc.Driver + +--- +logging: + level: + root: DEBUG \ No newline at end of file