From 8f1f23eb2b1c4fb5493e71c4828880f24e38ce93 Mon Sep 17 00:00:00 2001 From: wujiawei <1207537021@qq.com> Date: Sat, 21 Sep 2024 00:32:09 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=E3=80=91=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E6=B8=97=E9=80=8F=E5=AE=A2=E6=88=B7=E7=AB=AF=E7=BC=96?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/HeartbeatClientConfiguration.java | 11 +++- ...ClientPermeateClientCloseTypeAdvanced.java | 44 +++++++++++++ ...eClientPermeateClientInitTypeAdvanced.java | 63 +++++++++++++++++++ ...ettyClientPermeateClientVisitorSocket.java | 23 ++++--- .../network/heartbeat/common/MessageType.java | 48 +++++++++++--- ...ClientPermeateClientCloseTypeAdvanced.java | 28 +++++++++ ...eClientPermeateClientInitTypeAdvanced.java | 28 +++++++++ ...ClientPermeateClientCloseTypeAdvanced.java | 27 ++++++++ ...tClientPermeateClientInitTypeAdvanced.java | 27 ++++++++ .../common/enums/MessageTypeEnums.java | 18 ++++++ ...tPermeateClientMappingApplicationImpl.java | 62 +++++++++++++++++- 11 files changed, 355 insertions(+), 24 deletions(-) create mode 100644 wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientCloseTypeAdvanced.java create mode 100644 wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientInitTypeAdvanced.java create mode 100644 wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced.java create mode 100644 wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientInitTypeAdvanced.java create mode 100644 wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientCloseTypeAdvanced.java create mode 100644 wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientInitTypeAdvanced.java diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/config/HeartbeatClientConfiguration.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/config/HeartbeatClientConfiguration.java index d8be6bd..c9712c3 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/config/HeartbeatClientConfiguration.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/config/HeartbeatClientConfiguration.java @@ -3,7 +3,6 @@ package org.framework.lazy.cloud.network.heartbeat.client.config; import org.framework.lazy.cloud.network.heartbeat.client.netty.advanced.*; import org.framework.lazy.cloud.network.heartbeat.client.netty.event.ClientChangeEvent; -import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter; import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -133,6 +132,16 @@ public class HeartbeatClientConfiguration { return new ClientHandleDistributeClientPermeateServerCloseTypeAdvanced(); } + @Bean + public ClientHandleDistributeClientPermeateClientCloseTypeAdvanced clientHandleDistributeClientPermeateClientCloseTypeAdvanced() { + return new ClientHandleDistributeClientPermeateClientCloseTypeAdvanced(); + } + + @Bean + public ClientHandleDistributeClientPermeateClientInitTypeAdvanced clientHandleDistributeClientPermeateClientInitTypeAdvanced() { + return new ClientHandleDistributeClientPermeateClientInitTypeAdvanced(); + } + @Bean public ClientHandleDistributeSingleClientRealConnectTypeAdvanced clientHandleDistributeSingleClientRealConnectTypeAdvanced(NettyClientProperties nettyClientProperties, List handleChannelTypeAdvancedList) { diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientCloseTypeAdvanced.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientCloseTypeAdvanced.java new file mode 100644 index 0000000..ac35311 --- /dev/null +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientCloseTypeAdvanced.java @@ -0,0 +1,44 @@ +package org.framework.lazy.cloud.network.heartbeat.client.netty.advanced; + + +import io.netty.channel.Channel; +import lombok.extern.slf4j.Slf4j; +import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; +import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeClientPermeateServerCloseTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums; +import org.framework.lazy.cloud.network.heartbeat.common.socket.PermeateVisitorSocket; + + +/** + * 客户端渗透客户端init close 信息 + * + * @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE + */ +@Slf4j +public class ClientHandleDistributeClientPermeateClientCloseTypeAdvanced extends AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced { + + + /** + * 处理当前数据 + * + * @param channel 当前通道 + * @param nettyProxyMsg 通道数据 + */ + @Override + public void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) { + // 初始化 客户端渗透服务端socket + byte[] msgVisitorPort = nettyProxyMsg.getVisitorPort(); + Integer visitorPort = Integer.parseInt(new String(msgVisitorPort)); + PermeateVisitorSocket visitorSocket = NettyVisitorPortContext.getVisitorSocket(visitorPort); + // 关闭当前客户端渗透服务端访客通道 + try { + visitorSocket.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + +} 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 new file mode 100644 index 0000000..eba550a --- /dev/null +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/advanced/ClientHandleDistributeClientPermeateClientInitTypeAdvanced.java @@ -0,0 +1,63 @@ +package org.framework.lazy.cloud.network.heartbeat.client.netty.advanced; + + +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; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 客户端渗透客户端init信息 + * + * @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT + */ +@Slf4j +public class ClientHandleDistributeClientPermeateClientInitTypeAdvanced extends AbstractHandleDistributeClientPermeateClientInitTypeAdvanced { + + /** + * 处理当前数据 + * + * @param channel 当前通道 + * @param nettyProxyMsg 通道数据 + */ + @Override + public void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) { + // 初始化 客户端渗透服务端socket + byte[] clientIdBytes = nettyProxyMsg.getClientId(); + byte[] visitorPort = nettyProxyMsg.getVisitorPort(); + byte[] clientTargetIp = nettyProxyMsg.getClientTargetIp(); + byte[] clientTargetPort = nettyProxyMsg.getClientTargetPort(); + + 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)) + .builderClientTargetIp(new String(clientTargetIp)) + .builderClientTargetPort(Integer.parseInt(new String(clientTargetPort))) + .builderVisitorPort(Integer.parseInt(new String(visitorPort))) + .builderNettyClientProperties(nettyClientProperties) +// .builderChannelFlowAdapter(channelFlowAdapter) + .builderHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList) + + .build(); + try { + nettyClientPermeateClientVisitorSocket.start(); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} 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 863a591..093292c 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 @@ -9,7 +9,6 @@ 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.filter.NettyClientPermeateClientVisitorFilter; -import org.framework.lazy.cloud.network.heartbeat.client.netty.filter.NettyClientPermeateServerVisitorFilter; 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; @@ -114,7 +113,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo } - public static final class NettyVisitorSocketBuilder { + public static final class NettyClientPermeateClientVisitorSocketBuilder { /** * 客户端ID @@ -155,8 +154,8 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo */ private List handleChannelTypeAdvancedList; - public static NettyVisitorSocketBuilder builder() { - return new NettyVisitorSocketBuilder(); + public static NettyClientPermeateClientVisitorSocketBuilder builder() { + return new NettyClientPermeateClientVisitorSocketBuilder(); } /** @@ -165,7 +164,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param clientId 客户端 * @return 返回当前对象 */ - public NettyVisitorSocketBuilder builderClientId(String clientId) { + public NettyClientPermeateClientVisitorSocketBuilder builderClientId(String clientId) { this.clientId = clientId; return this; } @@ -176,7 +175,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param clientTargetIp 客户端目标IP * @return 当前对象 */ - public NettyVisitorSocketBuilder builderClientTargetIp(String clientTargetIp) { + public NettyClientPermeateClientVisitorSocketBuilder builderClientTargetIp(String clientTargetIp) { this.clientTargetIp = clientTargetIp; return this; } @@ -187,7 +186,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param clientTargetPort 客户端目标端口 * @return 当前对象 */ - public NettyVisitorSocketBuilder builderClientTargetPort(Integer clientTargetPort) { + public NettyClientPermeateClientVisitorSocketBuilder builderClientTargetPort(Integer clientTargetPort) { this.clientTargetPort = clientTargetPort; return this; } @@ -198,7 +197,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param visitorPort 访客端口 * @return 当前对象 */ - public NettyVisitorSocketBuilder builderVisitorPort(Integer visitorPort) { + public NettyClientPermeateClientVisitorSocketBuilder builderVisitorPort(Integer visitorPort) { this.visitorPort = visitorPort; return this; } @@ -209,7 +208,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param channelFlowAdapter 流量适配器 * @return 当前对象 */ - public NettyVisitorSocketBuilder builderChannelFlowAdapter(ChannelFlowAdapter channelFlowAdapter) { + public NettyClientPermeateClientVisitorSocketBuilder builderChannelFlowAdapter(ChannelFlowAdapter channelFlowAdapter) { this.channelFlowAdapter = channelFlowAdapter; return this; } /** @@ -218,7 +217,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param handleChannelTypeAdvancedList 流量适配器 * @return 当前对象 */ - public NettyVisitorSocketBuilder builderHandleChannelTypeAdvancedList(List handleChannelTypeAdvancedList) { + public NettyClientPermeateClientVisitorSocketBuilder builderHandleChannelTypeAdvancedList(List handleChannelTypeAdvancedList) { this.handleChannelTypeAdvancedList = handleChannelTypeAdvancedList; return this; } @@ -228,7 +227,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param nettyClientProperties 客户服务端地址配置属性 * @return 返回当前对象 */ - public NettyVisitorSocketBuilder builderNettyClientProperties(NettyClientProperties nettyClientProperties) { + public NettyClientPermeateClientVisitorSocketBuilder builderNettyClientProperties(NettyClientProperties nettyClientProperties) { this.nettyClientProperties = nettyClientProperties; return this; } @@ -239,7 +238,7 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo * @param visitorId 访客ID * @return 当前对象 */ - public NettyVisitorSocketBuilder builderVisitorId(String visitorId) { + public NettyClientPermeateClientVisitorSocketBuilder builderVisitorId(String visitorId) { this.visitorId = visitorId; return this; } diff --git a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/MessageType.java b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/MessageType.java index a71e3f4..58f8514 100644 --- a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/MessageType.java +++ b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/MessageType.java @@ -118,6 +118,20 @@ public class MessageType { */ public static final byte REPORT_CLIENT_PERMEATE_SERVER_CLOSE = 0X14; + /** + * 上报 客户端渗透客户端init信息 + * + * @see MessageTypeEnums#REPORT_CLIENT_PERMEATE_CLIENT_INIT + * @see AbstractHandleReportClientPermeateClientInitTypeAdvanced + */ + public static final byte REPORT_CLIENT_PERMEATE_CLIENT_INIT = 0X15; + /** + * 上报 客户端渗透客户端init close 信息 + * + * @see MessageTypeEnums#REPORT_CLIENT_PERMEATE_CLIENT_CLOSE + * @see AbstractHandleReportClientPermeateClientCloseTypeAdvanced + */ + public static final byte REPORT_CLIENT_PERMEATE_CLIENT_CLOSE = 0X16; /** * 上报 客户端渗透客户端数据传输通道连接成功 * @@ -125,7 +139,7 @@ public class MessageType { * @see AbstractHandleReportClientTransferClientPermeateChannelConnectionSuccessfulTypeAdvanced * @see MessageType#DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL */ - public static final byte REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL = 0X15; + public static final byte REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL = 0X17; /** @@ -135,7 +149,7 @@ public class MessageType { * @see AbstractHandleReportClientTransferClientPermeateChannelInitSuccessfulTypeAdvanced * @see MessageType#DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_INIT_SUCCESSFUL */ - public static final byte REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_INIT_SUCCESSFUL = 0X16; + public static final byte REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_INIT_SUCCESSFUL = 0X18; /** * 上报客户端渗透客户端数据传输请求 * @@ -143,7 +157,7 @@ public class MessageType { * @see AbstractHandleReportClientTransferClientTypeAdvanced * @see MessageType#DISTRIBUTE_CLIENT_TRANSFER_CLIENT_REQUEST */ - public static final byte REPORT_CLIENT_TRANSFER_CLIENT_REQUEST = 0X17; + public static final byte REPORT_CLIENT_TRANSFER_CLIENT_REQUEST = 0X19; /** * 上报客户端渗透客户端数据传输结果 @@ -152,7 +166,7 @@ public class MessageType { * @see AbstractHandleReportClientTransferClientResponseTypeAdvanced * @see MessageType#DISTRIBUTE_CLIENT_TRANSFER_CLIENT_RESPONSE */ - public static final byte REPORT_CLIENT_TRANSFER_CLIENT_RESPONSE = 0X18; + public static final byte REPORT_CLIENT_TRANSFER_CLIENT_RESPONSE = 0X20; /** * 下发 客户端接收连接成功通知 @@ -263,6 +277,24 @@ public class MessageType { */ public static final byte DISTRIBUTE_CLIENT_PERMEATE_SERVER_CLOSE = -0X14; + /** + * 下发 客户端渗透客户端init信息 + * + * @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT + * @see AbstractHandleDistributeClientPermeateClientInitTypeAdvanced + */ + public static final byte DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT = -0X15; + + /** + * 下发 客户端渗透客户端init close信息 + * + * @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE + * @see AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced + */ + public static final byte DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE = -0X16; + + + /** * 下发 客户端渗透客户端数据传输通道连接成功 * @@ -270,7 +302,7 @@ public class MessageType { * @see AbstractHandleDistributeClientTransferClientPermeateChannelConnectionSuccessfulTypeAdvanced * @see MessageType#REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL */ - public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL = -0X15; + public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL = -0X17; /** @@ -280,7 +312,7 @@ public class MessageType { * @see AbstractHandleDistributeClientTransferClientPermeateChannelInitSuccessfulTypeAdvanced * @see MessageType#DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_INIT_SUCCESSFUL */ - public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_INIT_SUCCESSFUL = -0X16; + public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_INIT_SUCCESSFUL = -0X18; /** * 下发 客户端渗透客户端数据传输请求 @@ -289,7 +321,7 @@ public class MessageType { * @see AbstractHandleDistributeClientTransferClientTypeAdvanced * @see MessageType#REPORT_CLIENT_TRANSFER_CLIENT_REQUEST */ - public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_REQUEST = -0X17; + public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_REQUEST = -0X19; /** * 下发客户端渗透客户端数据传输响应 * @@ -297,5 +329,5 @@ public class MessageType { * @see AbstractHandleDistributeClientTransferClientResponseTypeAdvanced * @see MessageType#REPORT_CLIENT_TRANSFER_CLIENT_RESPONSE */ - public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_RESPONSE = -0X18; + public static final byte DISTRIBUTE_CLIENT_TRANSFER_CLIENT_RESPONSE = -0X20; } diff --git a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced.java b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced.java new file mode 100644 index 0000000..48b13ac --- /dev/null +++ b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced.java @@ -0,0 +1,28 @@ +package org.framework.lazy.cloud.network.heartbeat.common.advanced.client; + + +import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums; + + +/** + * 下发 客户端渗透客户端init close 信息 + * + * @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE + */ +public abstract class AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced extends AbstractHandleChannelTypeAdvanced implements HandleChannelTypeAdvanced { + + + /** + * 是否支持当前类型 + * + * @param msg 通道数据 + * @return 布尔类型 是、否 + */ + @Override + public boolean doSupport(NettyProxyMsg msg) { + return MessageTypeEnums.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE.getTypeByte() == msg.getType(); + } +} diff --git a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientInitTypeAdvanced.java b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientInitTypeAdvanced.java new file mode 100644 index 0000000..3863b05 --- /dev/null +++ b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/client/AbstractHandleDistributeClientPermeateClientInitTypeAdvanced.java @@ -0,0 +1,28 @@ +package org.framework.lazy.cloud.network.heartbeat.common.advanced.client; + + +import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums; + + +/** + * 下发 客户端渗透客户端init信息 + * + * @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT + */ +public abstract class AbstractHandleDistributeClientPermeateClientInitTypeAdvanced extends AbstractHandleChannelTypeAdvanced implements HandleChannelTypeAdvanced { + + + /** + * 是否支持当前类型 + * + * @param msg 通道数据 + * @return 布尔类型 是、否 + */ + @Override + public boolean doSupport(NettyProxyMsg msg) { + return MessageTypeEnums.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT.getTypeByte() == msg.getType(); + } +} diff --git a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientCloseTypeAdvanced.java b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientCloseTypeAdvanced.java new file mode 100644 index 0000000..aa67fb7 --- /dev/null +++ b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientCloseTypeAdvanced.java @@ -0,0 +1,27 @@ +package org.framework.lazy.cloud.network.heartbeat.common.advanced.server; + + +import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums; + + +/** + * 上报 客户端渗透客户端init close 信息 + * REPORT_CLIENT_PERMEATE_CLIENT_CLOSE + */ +public abstract class AbstractHandleReportClientPermeateClientCloseTypeAdvanced extends AbstractHandleChannelTypeAdvanced implements HandleChannelTypeAdvanced { + + + /** + * 是否支持当前类型 + * + * @param msg 通道数据 + * @return 布尔类型 是、否 + */ + @Override + public boolean doSupport(NettyProxyMsg msg) { + return MessageTypeEnums.REPORT_CLIENT_PERMEATE_CLIENT_CLOSE.getTypeByte() == msg.getType(); + } +} diff --git a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientInitTypeAdvanced.java b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientInitTypeAdvanced.java new file mode 100644 index 0000000..0629838 --- /dev/null +++ b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/advanced/server/AbstractHandleReportClientPermeateClientInitTypeAdvanced.java @@ -0,0 +1,27 @@ +package org.framework.lazy.cloud.network.heartbeat.common.advanced.server; + + +import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced; +import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums; + + +/** + * 上报 客户端渗透客户端init信息 + * REPORT_CLIENT_PERMEATE_CLIENT_INIT + */ +public abstract class AbstractHandleReportClientPermeateClientInitTypeAdvanced extends AbstractHandleChannelTypeAdvanced implements HandleChannelTypeAdvanced { + + + /** + * 是否支持当前类型 + * + * @param msg 通道数据 + * @return 布尔类型 是、否 + */ + @Override + public boolean doSupport(NettyProxyMsg msg) { + return MessageTypeEnums.REPORT_CLIENT_PERMEATE_CLIENT_INIT.getTypeByte() == msg.getType(); + } +} diff --git a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/enums/MessageTypeEnums.java b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/enums/MessageTypeEnums.java index caed586..6e4c274 100644 --- a/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/enums/MessageTypeEnums.java +++ b/wu-lazy-cloud-heartbeat-common/src/main/java/org/framework/lazy/cloud/network/heartbeat/common/enums/MessageTypeEnums.java @@ -71,6 +71,15 @@ public enum MessageTypeEnums { * @see AbstractHandleReportClientPermeateServerCloseTypeAdvanced */ REPORT_CLIENT_PERMEATE_SERVER_CLOSE(MessageType.REPORT_CLIENT_PERMEATE_SERVER_CLOSE, "上报 客户端渗透服务端init close 信息"), + /** + * @see AbstractHandleReportClientPermeateClientInitTypeAdvanced + */ + REPORT_CLIENT_PERMEATE_CLIENT_INIT(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_INIT, "上报 客户端渗透客户端init信息"), + /** + * 上报 客户端渗透客户端init close 信息 + * @see AbstractHandleReportClientPermeateClientCloseTypeAdvanced + */ + REPORT_CLIENT_PERMEATE_CLIENT_CLOSE(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_CLOSE, "上报 客户端渗透客户端init close 信息"), /** * 上报 客户端渗透客户端数据传输通道连接成功 * @see AbstractHandleReportClientTransferClientPermeateChannelConnectionSuccessfulTypeAdvanced @@ -152,6 +161,15 @@ public enum MessageTypeEnums { * @see AbstractHandleDistributeClientPermeateServerCloseTypeAdvanced */ DISTRIBUTE_CLIENT_PERMEATE_SERVER_CLOSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_CLOSE, "下发 客户端渗透服务端init close信息"), + /** + * @see AbstractHandleDistributeClientPermeateClientInitTypeAdvanced + */ + DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT, "下发 客户端渗透客户端init信息"), + + /** + * @see AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced + */ + DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE, "下发 客户端渗透客户端init close信息"), /** * @see AbstractHandleDistributeClientTransferClientPermeateChannelConnectionSuccessfulTypeAdvanced */ 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 10767d6..3788d4b 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 @@ -1,11 +1,12 @@ package org.framework.lazy.cloud.network.heartbeat.server.standalone.application.impl; +import io.netty.channel.Channel; +import org.framework.lazy.cloud.network.heartbeat.common.ChannelContext; +import org.framework.lazy.cloud.network.heartbeat.common.MessageType; +import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg; import org.wu.framework.database.lazy.web.plus.stereotype.LazyApplication; import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkClientPermeateClientMappingApplication; -import org.springframework.web.bind.annotation.*; import org.wu.framework.web.response.Result; -import org.wu.framework.web.response.ResultFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.internal.network.client.permeate.client.mapping.LazyInternalNetworkClientPermeateClientMapping; import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.internal.network.client.permeate.client.mapping.LazyInternalNetworkClientPermeateClientMappingRemoveCommand; import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.internal.network.client.permeate.client.mapping.LazyInternalNetworkClientPermeateClientMappingStoryCommand; @@ -44,6 +45,9 @@ public class LazyInternalNetworkClientPermeateClientMappingApplicationImpl imple @Override public Result story(LazyInternalNetworkClientPermeateClientMappingStoryCommand lazyInternalNetworkClientPermeateClientMappingStoryCommand) { LazyInternalNetworkClientPermeateClientMapping lazyInternalNetworkClientPermeateClientMapping = LazyInternalNetworkClientPermeateClientMappingDTOAssembler.INSTANCE.toLazyInternalNetworkClientPermeateClientMapping(lazyInternalNetworkClientPermeateClientMappingStoryCommand); + // 下发客户端渗透客户端请求 + createClientPermeateClientSocketMessage(lazyInternalNetworkClientPermeateClientMapping); + return lazyInternalNetworkClientPermeateClientMappingRepository.story(lazyInternalNetworkClientPermeateClientMapping); } /** @@ -59,6 +63,9 @@ public class LazyInternalNetworkClientPermeateClientMappingApplicationImpl imple @Override public Result> batchStory(List lazyInternalNetworkClientPermeateClientMappingStoryCommandList) { List lazyInternalNetworkClientPermeateClientMappingList = lazyInternalNetworkClientPermeateClientMappingStoryCommandList.stream().map( LazyInternalNetworkClientPermeateClientMappingDTOAssembler.INSTANCE::toLazyInternalNetworkClientPermeateClientMapping).collect(Collectors.toList()); + for (LazyInternalNetworkClientPermeateClientMapping lazyInternalNetworkClientPermeateClientMapping : lazyInternalNetworkClientPermeateClientMappingList) { + createClientPermeateClientSocketMessage(lazyInternalNetworkClientPermeateClientMapping); + } return lazyInternalNetworkClientPermeateClientMappingRepository.batchStory(lazyInternalNetworkClientPermeateClientMappingList); } /** @@ -74,6 +81,8 @@ public class LazyInternalNetworkClientPermeateClientMappingApplicationImpl imple @Override public Result updateOne(LazyInternalNetworkClientPermeateClientMappingUpdateCommand lazyInternalNetworkClientPermeateClientMappingUpdateCommand) { LazyInternalNetworkClientPermeateClientMapping lazyInternalNetworkClientPermeateClientMapping = LazyInternalNetworkClientPermeateClientMappingDTOAssembler.INSTANCE.toLazyInternalNetworkClientPermeateClientMapping(lazyInternalNetworkClientPermeateClientMappingUpdateCommand); + createClientPermeateClientSocketMessage(lazyInternalNetworkClientPermeateClientMapping); + createClientPermeateClientSocketMessage(lazyInternalNetworkClientPermeateClientMapping); return lazyInternalNetworkClientPermeateClientMappingRepository.story(lazyInternalNetworkClientPermeateClientMapping); } @@ -141,4 +150,51 @@ public class LazyInternalNetworkClientPermeateClientMappingApplicationImpl imple return lazyInternalNetworkClientPermeateClientMappingRepository.remove(lazyInternalNetworkClientPermeateClientMapping); } + /** + * 关闭 客户端渗透客户端socket 消息 + * + * @param lazyInternalNetworkClientPermeateClientMapping 客户端渗透客户端映射 + */ + public void closeClientPermeateClientSocketMessage(LazyInternalNetworkClientPermeateClientMapping lazyInternalNetworkClientPermeateClientMapping){ + // 发送客户端初始化渗透 + String clientId = lazyInternalNetworkClientPermeateClientMapping.getFromClientId(); + ChannelContext.ClientChannel clientChannel = ChannelContext.get(clientId); + if(clientChannel!=null && clientChannel.getChannel()!=null&&clientChannel.getChannel().isActive()){ + Channel channel = clientChannel.getChannel(); + String permeateTargetIp = lazyInternalNetworkClientPermeateClientMapping.getPermeateTargetIp(); + Integer permeateTargetPort = lazyInternalNetworkClientPermeateClientMapping.getPermeateTargetPort(); + Integer visitorPort = lazyInternalNetworkClientPermeateClientMapping.getVisitorPort(); + NettyProxyMsg nettyMsg = new NettyProxyMsg(); + nettyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE); + nettyMsg.setClientTargetIp(permeateTargetIp); + nettyMsg.setClientTargetPort(permeateTargetPort); + nettyMsg.setVisitorPort(visitorPort); + channel.writeAndFlush(nettyMsg); + } + } + + /** + * 创建 客户端渗透客户端socket 消息 + * + * @param lazyInternalNetworkClientPermeateClientMapping 客户端渗透客户端映射 + */ + public void createClientPermeateClientSocketMessage(LazyInternalNetworkClientPermeateClientMapping lazyInternalNetworkClientPermeateClientMapping){ + // 发送客户端初始化渗透 + String fromClientId = lazyInternalNetworkClientPermeateClientMapping.getFromClientId(); + String toClientId = lazyInternalNetworkClientPermeateClientMapping.getToClientId(); + ChannelContext.ClientChannel clientChannel = ChannelContext.get(fromClientId); + if(clientChannel!=null && clientChannel.getChannel()!=null&&clientChannel.getChannel().isActive()){ + Channel channel = clientChannel.getChannel(); + String permeateTargetIp = lazyInternalNetworkClientPermeateClientMapping.getPermeateTargetIp(); + Integer permeateTargetPort = lazyInternalNetworkClientPermeateClientMapping.getPermeateTargetPort(); + Integer visitorPort = lazyInternalNetworkClientPermeateClientMapping.getVisitorPort(); + NettyProxyMsg nettyMsg = new NettyProxyMsg(); + nettyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT); + nettyMsg.setClientTargetIp(permeateTargetIp); + nettyMsg.setClientTargetPort(permeateTargetPort); + nettyMsg.setVisitorPort(visitorPort); + nettyMsg.setClientId(toClientId); + channel.writeAndFlush(nettyMsg); + } + } } \ No newline at end of file