diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/InternalNetworkClientPermeateClientVisitor.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/InternalNetworkClientPermeateClientVisitor.java new file mode 100644 index 0000000..1955d2c --- /dev/null +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/InternalNetworkClientPermeateClientVisitor.java @@ -0,0 +1,59 @@ +package org.framework.lazy.cloud.network.heartbeat.client.netty; + +import lombok.Data; +import lombok.NoArgsConstructor; +import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties; +import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeate; +import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced; + +import java.util.List; + +@NoArgsConstructor +@Data +public class InternalNetworkClientPermeateClientVisitor implements InternalNetworkPermeate { + + /** + * 当前客户端ID + */ + private String fromClientId; + /** + * 目标客户端ID + */ + private String toClientId; + /** + * 目标地址 + */ + private String targetIp; + + /** + * 目标端口 + */ + private Integer targetPort; + + + /** + * 访问端口 + */ + private Integer visitorPort; + + /** + * 流量适配器 + */ + private ChannelFlowAdapter channelFlowAdapter; + /** + * 服务端地址信息 + */ + private NettyClientProperties nettyClientProperties; + + /** + * 通道处理器 + */ + private List handleChannelTypeAdvancedList; + + + /** + * 访客ID + */ + private String visitorId; +} diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientInitTypeAdvanced.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientInitTypeAdvanced.java index eba550a..b8b1beb 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientInitTypeAdvanced.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientInitTypeAdvanced.java @@ -5,11 +5,9 @@ import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties; import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientPermeateClientVisitorSocket; -import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientPermeateServerVisitorSocket; import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeClientPermeateClientInitTypeAdvanced; -import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeClientPermeateServerInitTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums; import org.wu.framework.spring.utils.SpringContextHolder; @@ -34,22 +32,24 @@ public class ClientHandleDistributeClientPermeateClientInitTypeAdvanced extends @Override public void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) { // 初始化 客户端渗透服务端socket - byte[] clientIdBytes = nettyProxyMsg.getClientId(); + byte[] fromClientIdBytes = nettyProxyMsg.getClientId(); byte[] visitorPort = nettyProxyMsg.getVisitorPort(); byte[] clientTargetIp = nettyProxyMsg.getClientTargetIp(); byte[] clientTargetPort = nettyProxyMsg.getClientTargetPort(); + byte[] toClientIdBytes = nettyProxyMsg.getData(); List handleChannelTypeAdvancedList = new ArrayList<>(SpringContextHolder.getApplicationContext().getBeansOfType(HandleChannelTypeAdvanced.class).values()); // ChannelFlowAdapter channelFlowAdapter = SpringContextHolder.getBean(ChannelFlowAdapter.class); NettyClientProperties nettyClientProperties = SpringContextHolder.getBean(NettyClientProperties.class); NettyClientPermeateClientVisitorSocket nettyClientPermeateClientVisitorSocket = NettyClientPermeateClientVisitorSocket.NettyClientPermeateClientVisitorSocketBuilder.builder() - .builderClientId(new String(clientIdBytes)) + .builderClientId(new String(fromClientIdBytes)) .builderClientTargetIp(new String(clientTargetIp)) .builderClientTargetPort(Integer.parseInt(new String(clientTargetPort))) .builderVisitorPort(Integer.parseInt(new String(visitorPort))) .builderNettyClientProperties(nettyClientProperties) // .builderChannelFlowAdapter(channelFlowAdapter) + .builderToClientId(new String(toClientIdBytes)) .builderHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList) .build(); diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientPermeateClientVisitorFilter.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientPermeateClientVisitorFilter.java index 3a58307..e8c66bf 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientPermeateClientVisitorFilter.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientPermeateClientVisitorFilter.java @@ -5,17 +5,16 @@ 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.client.netty.InternalNetworkPermeateServerVisitor; +import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkClientPermeateClientVisitor; import org.framework.lazy.cloud.network.heartbeat.client.netty.handler.NettyClientPermeateClientVisitorHandler; -import org.framework.lazy.cloud.network.heartbeat.client.netty.handler.NettyClientPermeateServerVisitorHandler; import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer; public class NettyClientPermeateClientVisitorFilter extends DebugChannelInitializer { - private final InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor; + private final InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor; - public NettyClientPermeateClientVisitorFilter(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) { - this.internalNetworkPermeateServerVisitor = internalNetworkPermeateServerVisitor; + public NettyClientPermeateClientVisitorFilter(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) { + this.internalNetworkClientPermeateClientVisitor = internalNetworkClientPermeateClientVisitor; } @@ -32,6 +31,6 @@ public class NettyClientPermeateClientVisitorFilter extends DebugChannelInitiali protected void initChannel0(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new ChannelDuplexHandler()); - pipeline.addLast(new NettyClientPermeateClientVisitorHandler(internalNetworkPermeateServerVisitor)); + pipeline.addLast(new NettyClientPermeateClientVisitorHandler(internalNetworkClientPermeateClientVisitor)); } } diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientPermeateClientVisitorHandler.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientPermeateClientVisitorHandler.java index dadc4e1..50e3e34 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientPermeateClientVisitorHandler.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/handler/NettyClientPermeateClientVisitorHandler.java @@ -8,7 +8,7 @@ import io.netty.channel.ChannelOption; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; -import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkPermeateServerVisitor; +import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkClientPermeateClientVisitor; import org.framework.lazy.cloud.network.heartbeat.client.netty.advanced.ClientHandleDistributeClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientTransferClientSocket; import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientTransferServerSocket; @@ -23,11 +23,11 @@ import java.util.UUID; @Slf4j public class NettyClientPermeateClientVisitorHandler extends SimpleChannelInboundHandler { - private final InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor; + private final InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor; // private final NettyChannelPool nettyChannelPool = new DefaultNettyChannelPool(10); - public NettyClientPermeateClientVisitorHandler(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) { - this.internalNetworkPermeateServerVisitor = internalNetworkPermeateServerVisitor; + public NettyClientPermeateClientVisitorHandler(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) { + this.internalNetworkClientPermeateClientVisitor = internalNetworkClientPermeateClientVisitor; } /** @@ -51,11 +51,11 @@ public class NettyClientPermeateClientVisitorHandler extends SimpleChannelInboun // 当前通道绑定访客ID ChannelAttributeKeyUtils.buildVisitorId(visitorChannel, visitorId); - internalNetworkPermeateServerVisitor.setVisitorId(visitorId); + internalNetworkClientPermeateClientVisitor.setVisitorId(visitorId); // 判断是否有可用的通道 如果没有创建新的通道 // Channel transferChannel = nettyChannelPool.availableChannel(visitorId); // 创建访客连接客户端通道 - NettyClientTransferClientSocket.buildTransferServer(internalNetworkPermeateServerVisitor); + NettyClientTransferClientSocket.buildTransferServer(internalNetworkClientPermeateClientVisitor); log.info("客户端渗透客户端访客端口连接成功了"); super.channelActive(ctx); } @@ -74,7 +74,7 @@ public class NettyClientPermeateClientVisitorHandler extends SimpleChannelInboun log.debug("【客户端渗透客户端】访客端口成功接收数据:{}", new String(bytes)); // 使用访客的通信通道 - Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort(); + Integer visitorPort = internalNetworkClientPermeateClientVisitor.getVisitorPort(); NettyProxyMsg nettyProxyMsg = new NettyProxyMsg(); nettyProxyMsg.setType(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_REQUEST); nettyProxyMsg.setVisitorId(visitorId); diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateClientVisitorSocket.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateClientVisitorSocket.java index 093292c..262d105 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateClientVisitorSocket.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientPermeateClientVisitorSocket.java @@ -7,7 +7,7 @@ import io.netty.channel.socket.nio.NioServerSocketChannel; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties; -import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkPermeateServerVisitor; +import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkClientPermeateClientVisitor; import org.framework.lazy.cloud.network.heartbeat.client.netty.filter.NettyClientPermeateClientVisitorFilter; import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorContext; import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext; @@ -139,6 +139,10 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * 访客ID */ private String visitorId; + /** + * 目标客户端ID + */ + private String toClientId; /** * 流量适配器 @@ -243,6 +247,16 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo return this; } + /** + * 目标客户端ID + * + * @param toClientId 目标客户端ID + * @return 当前对象 + */ + public NettyClientPermeateClientVisitorSocketBuilder builderToClientId(String toClientId) { + this.toClientId = toClientId; + return this; + } public NettyClientPermeateClientVisitorSocket build() { if (clientTargetIp == null) { throw new IllegalArgumentException("clientTargetIp must not null"); @@ -253,17 +267,19 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo if (visitorPort == null) { throw new IllegalArgumentException("visitorPort must not null"); } - InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor = new InternalNetworkPermeateServerVisitor(); + InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor = new InternalNetworkClientPermeateClientVisitor(); - internalNetworkPermeateServerVisitor.setTargetIp(clientTargetIp); - internalNetworkPermeateServerVisitor.setTargetPort(clientTargetPort); - internalNetworkPermeateServerVisitor.setVisitorPort(visitorPort); - internalNetworkPermeateServerVisitor.setNettyClientProperties(nettyClientProperties); - internalNetworkPermeateServerVisitor.setChannelFlowAdapter(channelFlowAdapter); - internalNetworkPermeateServerVisitor.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList); + internalNetworkClientPermeateClientVisitor.setFromClientId(nettyClientProperties.getClientId()); + internalNetworkClientPermeateClientVisitor.setToClientId(toClientId); + internalNetworkClientPermeateClientVisitor.setTargetIp(clientTargetIp); + internalNetworkClientPermeateClientVisitor.setTargetPort(clientTargetPort); + internalNetworkClientPermeateClientVisitor.setVisitorPort(visitorPort); + internalNetworkClientPermeateClientVisitor.setNettyClientProperties(nettyClientProperties); + internalNetworkClientPermeateClientVisitor.setChannelFlowAdapter(channelFlowAdapter); + internalNetworkClientPermeateClientVisitor.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList); - NettyClientPermeateClientVisitorFilter visitorFilter = new NettyClientPermeateClientVisitorFilter(internalNetworkPermeateServerVisitor); + NettyClientPermeateClientVisitorFilter visitorFilter = new NettyClientPermeateClientVisitorFilter(internalNetworkClientPermeateClientVisitor); return new NettyClientPermeateClientVisitorSocket(visitorFilter, clientId, visitorPort); } diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientTransferClientSocket.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientTransferClientSocket.java index a4364d2..b32ff5d 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientTransferClientSocket.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientTransferClientSocket.java @@ -7,7 +7,7 @@ import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties; -import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkPermeateServerVisitor; +import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkClientPermeateClientVisitor; import org.framework.lazy.cloud.network.heartbeat.client.netty.filter.NettyClientPermeateTransferFilter; import org.framework.lazy.cloud.network.heartbeat.common.MessageType; import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext; @@ -28,8 +28,8 @@ public class NettyClientTransferClientSocket { /** * 连接服务端通信通道 */ - public static void buildTransferServer(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) { - newTransferConnect2Server(internalNetworkPermeateServerVisitor); + public static void buildTransferServer(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) { + newTransferConnect2Server(internalNetworkClientPermeateClientVisitor); } @@ -38,7 +38,7 @@ public class NettyClientTransferClientSocket { *

* internalNetworkPermeateServerVisitor */ - protected static void newTransferConnect2Server(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) { + protected static void newTransferConnect2Server(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) { Bootstrap bootstrap = new Bootstrap(); bootstrap.group(eventLoopGroup) @@ -55,20 +55,21 @@ public class NettyClientTransferClientSocket { .option(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(1024 * 1024, 1024 * 1024 * 2)) - .handler(new NettyClientPermeateTransferFilter(new ChannelTypeAdapter(internalNetworkPermeateServerVisitor.getHandleChannelTypeAdvancedList()))) + .handler(new NettyClientPermeateTransferFilter(new ChannelTypeAdapter(internalNetworkClientPermeateClientVisitor.getHandleChannelTypeAdvancedList()))) ; - NettyClientProperties nettyClientProperties = internalNetworkPermeateServerVisitor.getNettyClientProperties(); + NettyClientProperties nettyClientProperties = internalNetworkClientPermeateClientVisitor.getNettyClientProperties(); String inetHost = nettyClientProperties.getInetHost(); int inetPort = nettyClientProperties.getInetPort(); // local client id String clientId = nettyClientProperties.getClientId(); - String targetIp = internalNetworkPermeateServerVisitor.getTargetIp(); - Integer targetPort = internalNetworkPermeateServerVisitor.getTargetPort(); + String targetIp = internalNetworkClientPermeateClientVisitor.getTargetIp(); + Integer targetPort = internalNetworkClientPermeateClientVisitor.getTargetPort(); - String visitorId = internalNetworkPermeateServerVisitor.getVisitorId(); - Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort(); + String visitorId = internalNetworkClientPermeateClientVisitor.getVisitorId(); + Integer visitorPort = internalNetworkClientPermeateClientVisitor.getVisitorPort(); + String toClientId = internalNetworkClientPermeateClientVisitor.getToClientId(); // 客户端新建访客通道 连接服务端IP:{},连接服务端端口:{} log.info("Client creates a new visitor channel to connect to server IP: {}, connecting to server port: {}", inetHost, inetPort); @@ -83,7 +84,7 @@ public class NettyClientTransferClientSocket { NettyProxyMsg myMsg = new NettyProxyMsg(); myMsg.setType(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL); // other clientId - myMsg.setClientId(clientId); + myMsg.setClientId(toClientId); myMsg.setVisitorPort(visitorPort); myMsg.setClientTargetIp(targetIp); myMsg.setClientTargetPort(targetPort); @@ -105,7 +106,7 @@ public class NettyClientTransferClientSocket { log.info("每隔2s重连...."); // 离线 channel.eventLoop().schedule(() -> { - newTransferConnect2Server(internalNetworkPermeateServerVisitor); + newTransferConnect2Server(internalNetworkClientPermeateClientVisitor); }, 2, TimeUnit.SECONDS); } }); diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/config/HeartbeatServerConfiguration.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/config/HeartbeatServerConfiguration.java index c365ecc..c9faa20 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/config/HeartbeatServerConfiguration.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/config/HeartbeatServerConfiguration.java @@ -3,10 +3,7 @@ package org.framework.lazy.cloud.network.heartbeat.server.config; import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter; import org.framework.lazy.cloud.network.heartbeat.server.netty.advanced.*; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyClientStatsChangeApplication; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkClientPermeateServerMappingApplication; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkPenetrationMappingApplication; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyNettyClientBlacklistApplication; +import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.*; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Role; @@ -43,11 +40,13 @@ public class HeartbeatServerConfiguration { LazyClientStatsChangeApplication lazyClientStatsChangeApplication, LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication, LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication, - LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication) { + LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication, + LazyInternalNetworkClientPermeateClientMappingApplication lazyInternalNetworkClientPermeateClientMappingApplication) { return new ServerHandleClientConnectSuccessTypeAdvanced(lazyClientStatsChangeApplication, lazyNettyClientBlacklistApplication, lazyInternalNetworkPenetrationMappingApplication, - lazyInternalNetworkClientPermeateServerMappingApplication); + lazyInternalNetworkClientPermeateServerMappingApplication, + lazyInternalNetworkClientPermeateClientMappingApplication); } /** diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleClientConnectSuccessTypeAdvanced.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleClientConnectSuccessTypeAdvanced.java index d12a1d7..984e242 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleClientConnectSuccessTypeAdvanced.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleClientConnectSuccessTypeAdvanced.java @@ -9,11 +9,10 @@ import org.framework.lazy.cloud.network.heartbeat.common.MessageType; import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleClientConnectSuccessTypeAdvanced; import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyClientStatsChangeApplication; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkClientPermeateServerMappingApplication; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkPenetrationMappingApplication; -import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyNettyClientBlacklistApplication; +import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.*; +import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.internal.network.client.permeate.client.mapping.LazyInternalNetworkClientPermeateClientMappingQueryListCommand; import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.internal.network.client.permeate.server.mapping.LazyInternalNetworkClientPermeateServerMappingQueryListCommand; +import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyInternalNetworkClientPermeateClientMappingDTO; import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyInternalNetworkClientPermeateServerMappingDTO; import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.netty.client.blacklist.LazyNettyClientBlacklist; import org.springframework.stereotype.Component; @@ -34,12 +33,14 @@ public class ServerHandleClientConnectSuccessTypeAdvanced extends AbstractHandle private final LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication; private final LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication; private final LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication; + private final LazyInternalNetworkClientPermeateClientMappingApplication lazyInternalNetworkClientPermeateClientMappingApplication; - public ServerHandleClientConnectSuccessTypeAdvanced(LazyClientStatsChangeApplication lazyClientStatsChangeApplication, LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication, LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication, LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication) { + public ServerHandleClientConnectSuccessTypeAdvanced(LazyClientStatsChangeApplication lazyClientStatsChangeApplication, LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication, LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication, LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication, LazyInternalNetworkClientPermeateClientMappingApplication lazyInternalNetworkClientPermeateClientMappingApplication) { this.lazyClientStatsChangeApplication = lazyClientStatsChangeApplication; this.lazyNettyClientBlacklistApplication = lazyNettyClientBlacklistApplication; this.lazyInternalNetworkPenetrationMappingApplication = lazyInternalNetworkPenetrationMappingApplication; this.lazyInternalNetworkClientPermeateServerMappingApplication = lazyInternalNetworkClientPermeateServerMappingApplication; + this.lazyInternalNetworkClientPermeateClientMappingApplication = lazyInternalNetworkClientPermeateClientMappingApplication; } @@ -121,7 +122,27 @@ public class ServerHandleClientConnectSuccessTypeAdvanced extends AbstractHandle // 查询客户端渗透客户端信息 + LazyInternalNetworkClientPermeateClientMappingQueryListCommand lazyInternalNetworkClientPermeateClientMappingQueryListCommand = new LazyInternalNetworkClientPermeateClientMappingQueryListCommand(); + lazyInternalNetworkClientPermeateClientMappingQueryListCommand.setFromClientId(clientId); + lazyInternalNetworkClientPermeateClientMappingQueryListCommand.setIsDeleted(false); + lazyInternalNetworkClientPermeateClientMappingApplication.findList(lazyInternalNetworkClientPermeateClientMappingQueryListCommand) + .accept(lazyInternalNetworkClientPermeateServerMappingDTOS -> { + for (LazyInternalNetworkClientPermeateClientMappingDTO lazyInternalNetworkClientPermeateClientMappingDTO : lazyInternalNetworkClientPermeateServerMappingDTOS) { + String permeateTargetIp = lazyInternalNetworkClientPermeateClientMappingDTO.getPermeateTargetIp(); + Integer permeateTargetPort = lazyInternalNetworkClientPermeateClientMappingDTO.getPermeateTargetPort(); + Integer visitorPort = lazyInternalNetworkClientPermeateClientMappingDTO.getVisitorPort(); + String toClientId = lazyInternalNetworkClientPermeateClientMappingDTO.getToClientId(); + NettyProxyMsg nettyMsg = new NettyProxyMsg(); + nettyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT); + nettyMsg.setClientTargetIp(permeateTargetIp); + nettyMsg.setClientTargetPort(permeateTargetPort); + nettyMsg.setVisitorPort(visitorPort); + nettyMsg.setClientId(clientId); + nettyMsg.setData(toClientId.getBytes(StandardCharsets.UTF_8)); + newChannel.writeAndFlush(nettyMsg); + } + }); } diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/standalone/application/impl/LazyInternalNetworkClientPermeateClientMappingApplicationImpl.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/standalone/application/impl/LazyInternalNetworkClientPermeateClientMappingApplicationImpl.java index 3788d4b..6208c12 100644 --- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/standalone/application/impl/LazyInternalNetworkClientPermeateClientMappingApplicationImpl.java +++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/standalone/application/impl/LazyInternalNetworkClientPermeateClientMappingApplicationImpl.java @@ -15,6 +15,8 @@ import org.framework.lazy.cloud.network.heartbeat.server.standalone.application. import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.internal.network.client.permeate.client.mapping.LazyInternalNetworkClientPermeateClientMappingQueryOneCommand; import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.assembler.LazyInternalNetworkClientPermeateClientMappingDTOAssembler; import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyInternalNetworkClientPermeateClientMappingDTO; + +import java.nio.charset.StandardCharsets; import java.util.stream.Collectors; import jakarta.annotation.Resource; import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.internal.network.client.permeate.client.mapping.LazyInternalNetworkClientPermeateClientMappingRepository; @@ -193,7 +195,8 @@ public class LazyInternalNetworkClientPermeateClientMappingApplicationImpl imple nettyMsg.setClientTargetIp(permeateTargetIp); nettyMsg.setClientTargetPort(permeateTargetPort); nettyMsg.setVisitorPort(visitorPort); - nettyMsg.setClientId(toClientId); + nettyMsg.setClientId(fromClientId); + nettyMsg.setData(toClientId.getBytes(StandardCharsets.UTF_8)); channel.writeAndFlush(nettyMsg); } }