【fix】客户端渗透客户端编码

This commit is contained in:
wujiawei 2024-09-21 00:32:09 +08:00
parent b4e2f8ec3c
commit 8f1f23eb2b
11 changed files with 355 additions and 24 deletions

View File

@ -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<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {

View File

@ -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<NettyProxyMsg> {
/**
* 处理当前数据
*
* @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();
}
}
}

View File

@ -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<NettyProxyMsg> {
/**
* 处理当前数据
*
* @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<HandleChannelTypeAdvanced> 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();
}
}
}

View File

@ -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<HandleChannelTypeAdvanced> 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<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {
public NettyClientPermeateClientVisitorSocketBuilder builderHandleChannelTypeAdvancedList(List<HandleChannelTypeAdvanced> 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;
}

View File

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

View File

@ -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<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
/**
* 是否支持当前类型
*
* @param msg 通道数据
* @return 布尔类型
*/
@Override
public boolean doSupport(NettyProxyMsg msg) {
return MessageTypeEnums.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE.getTypeByte() == msg.getType();
}
}

View File

@ -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<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
/**
* 是否支持当前类型
*
* @param msg 通道数据
* @return 布尔类型
*/
@Override
public boolean doSupport(NettyProxyMsg msg) {
return MessageTypeEnums.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT.getTypeByte() == msg.getType();
}
}

View File

@ -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<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
/**
* 是否支持当前类型
*
* @param msg 通道数据
* @return 布尔类型
*/
@Override
public boolean doSupport(NettyProxyMsg msg) {
return MessageTypeEnums.REPORT_CLIENT_PERMEATE_CLIENT_CLOSE.getTypeByte() == msg.getType();
}
}

View File

@ -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<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
/**
* 是否支持当前类型
*
* @param msg 通道数据
* @return 布尔类型
*/
@Override
public boolean doSupport(NettyProxyMsg msg) {
return MessageTypeEnums.REPORT_CLIENT_PERMEATE_CLIENT_INIT.getTypeByte() == msg.getType();
}
}

View File

@ -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
*/

View File

@ -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<LazyInternalNetworkClientPermeateClientMapping> 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<List<LazyInternalNetworkClientPermeateClientMapping>> batchStory(List<LazyInternalNetworkClientPermeateClientMappingStoryCommand> lazyInternalNetworkClientPermeateClientMappingStoryCommandList) {
List<LazyInternalNetworkClientPermeateClientMapping> 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<LazyInternalNetworkClientPermeateClientMapping> 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);
}
}
}