mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2025-06-06 13:27:55 +08:00
[fix] 统一使用next 通道进行数据处理
This commit is contained in:
parent
37d9065c5a
commit
7028e001ea
@ -2,13 +2,13 @@ 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.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;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Role;
|
||||
import org.framework.lazy.cloud.network.heartbeat.client.netty.event.ClientChangeEvent;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -55,6 +55,7 @@ public class HeartbeatClientConfiguration {
|
||||
return new ClientHandleDistributeClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced();
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public ClientHandleDistributeSingleClientRealCloseVisitorTypeAdvanced handleDistributeSingleClientRealCloseVisitorTypeAdvanced() {
|
||||
return new ClientHandleDistributeSingleClientRealCloseVisitorTypeAdvanced();
|
||||
@ -90,10 +91,20 @@ public class HeartbeatClientConfiguration {
|
||||
return new HandleDistributeStagingOpenedTypeAdvanced();
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理 客户端渗透服务端init信息
|
||||
*
|
||||
* @return ClientHandleDistributeClientPermeateServerInitTypeAdvanced
|
||||
*/
|
||||
@Bean
|
||||
public ClientHandleDistributeClientPermeateServerInitTypeAdvanced clientHandleDistributeClientPermeateServerInitTypeAdvanced(NettyClientProperties nettyClientProperties) {
|
||||
return new ClientHandleDistributeClientPermeateServerInitTypeAdvanced(nettyClientProperties);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ClientHandleDistributeSingleClientRealConnectTypeAdvanced clientHandleDistributeSingleClientRealConnectTypeAdvanced(NettyClientProperties nettyClientProperties,
|
||||
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {
|
||||
return new ClientHandleDistributeSingleClientRealConnectTypeAdvanced(nettyClientProperties, handleChannelTypeAdvancedList);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,68 @@
|
||||
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.NettyClientPermeateServerVisitorSocket;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced;
|
||||
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.inner.lazy.orm.spring.SpringConnectionHandler;
|
||||
import org.wu.framework.spring.utils.SpringContextHolder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* 客户端渗透服务端init信息
|
||||
*
|
||||
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT
|
||||
*/
|
||||
@Slf4j
|
||||
public class ClientHandleDistributeClientPermeateServerInitTypeAdvanced extends AbstractHandleDistributeClientPermeateServerInitTypeAdvanced<NettyProxyMsg> {
|
||||
|
||||
private final NettyClientProperties nettyClientProperties;
|
||||
|
||||
public ClientHandleDistributeClientPermeateServerInitTypeAdvanced(NettyClientProperties nettyClientProperties) {
|
||||
this.nettyClientProperties = nettyClientProperties;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理当前数据
|
||||
*
|
||||
* @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);
|
||||
NettyClientPermeateServerVisitorSocket nettyClientPermeateServerVisitorSocket = NettyClientPermeateServerVisitorSocket.NettyVisitorSocketBuilder.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 {
|
||||
nettyClientPermeateServerVisitorSocket.start();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -10,6 +10,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||
|
||||
|
||||
/**
|
||||
@ -36,7 +37,8 @@ public class ClientHandleDistributeClientTransferServerPermeateChannelConnection
|
||||
byte[] msgVisitorId = nettyProxyMsg.getVisitorId();
|
||||
String visitorId = new String(msgVisitorId);
|
||||
Channel visitor = NettyRealIdContext.getReal(visitorId);
|
||||
visitor.config().setOption(ChannelOption.AUTO_READ, true);
|
||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||
nextChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
||||
|
||||
}
|
||||
|
||||
|
@ -23,14 +23,10 @@ import java.util.UUID;
|
||||
@Slf4j
|
||||
public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboundHandler<ByteBuf> {
|
||||
private final InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor;
|
||||
// private final ChannelFlowAdapter channelFlowAdapter;// 流量适配器
|
||||
// private final NettyChannelPool nettyChannelPool = new DefaultNettyChannelPool(10);
|
||||
|
||||
public NettyClientPermeateServerVisitorHandler(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) {
|
||||
this.internalNetworkPermeateServerVisitor = internalNetworkPermeateServerVisitor;
|
||||
|
||||
// this.channelFlowAdapter = channelFlowAdapter;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -59,7 +55,7 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
||||
// Channel transferChannel = nettyChannelPool.availableChannel(visitorId);
|
||||
// 创建访客连接服务端通道
|
||||
NettyClientTransferServerSocket.buildTransferServer(internalNetworkPermeateServerVisitor);
|
||||
log.info("服务端访客端口连接成功了");
|
||||
log.info("客户端渗透服务端访客端口连接成功了");
|
||||
super.channelActive(ctx);
|
||||
}
|
||||
|
||||
@ -74,12 +70,14 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
||||
byte[] bytes = new byte[buf.readableBytes()];
|
||||
buf.readBytes(bytes);
|
||||
// 获取客户端通道,而后进行数据下发
|
||||
log.debug("【服务端】访客端口成功接收数据:{}", new String(bytes));
|
||||
log.debug("【客户端渗透服务端】访客端口成功接收数据:{}", new String(bytes));
|
||||
|
||||
// 使用访客的通信通道
|
||||
Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort();
|
||||
NettyProxyMsg nettyProxyMsg = new NettyProxyMsg();
|
||||
nettyProxyMsg.setType(MessageType.REPORT_CLIENT_TRANSFER);
|
||||
nettyProxyMsg.setVisitorId(visitorId);
|
||||
nettyProxyMsg.setVisitorPort(visitorPort);
|
||||
nettyProxyMsg.setData(bytes);
|
||||
nextChannel.writeAndFlush(nettyProxyMsg);
|
||||
// 处理访客流量
|
||||
@ -91,7 +89,7 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
||||
// .flow(bytes.length)
|
||||
// .build();
|
||||
// channelFlowAdapter.asyncHandler(visitorChannel, serverChannelFlow);
|
||||
log.debug("服务端访客端口成功发送数据了");
|
||||
log.debug("【客户端渗透服务端】访客端口成功发送数据了");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -119,7 +117,7 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
||||
// 关闭 访客通信通道、访客真实通道
|
||||
NettyRealIdContext.clear(visitorId);
|
||||
NettyCommunicationIdContext.clear(visitorId);
|
||||
log.warn("服务端访客端口断开连接");
|
||||
log.warn("【客户端渗透服务端】访客端口断开连接");
|
||||
super.channelInactive(ctx);
|
||||
}
|
||||
|
||||
@ -167,13 +165,14 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
||||
String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel);
|
||||
// 使用通信通道 下发关闭访客
|
||||
Channel visitorChannel = NettyCommunicationIdContext.getVisitor(visitorId);
|
||||
if (visitorChannel != null) {
|
||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||
if (nextChannel != null) {
|
||||
// 下发关闭访客
|
||||
NettyProxyMsg closeRealClient = new NettyProxyMsg();
|
||||
closeRealClient.setType(MessageType.DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT_AUTO_READ);
|
||||
closeRealClient.setClientId(clientId);
|
||||
closeRealClient.setVisitorId(visitorId);
|
||||
visitorChannel.writeAndFlush(closeRealClient);
|
||||
nextChannel.writeAndFlush(closeRealClient);
|
||||
}
|
||||
|
||||
ctx.close();
|
||||
|
@ -12,8 +12,10 @@ import org.framework.lazy.cloud.network.heartbeat.client.netty.filter.NettyClien
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorContext;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 内网穿透 客户端渗透服务端通道
|
||||
@ -143,6 +145,11 @@ public class NettyClientPermeateServerVisitorSocket {
|
||||
*/
|
||||
private NettyClientProperties nettyClientProperties;
|
||||
|
||||
/**
|
||||
* 处理器
|
||||
*/
|
||||
private List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList;
|
||||
|
||||
public static NettyVisitorSocketBuilder builder() {
|
||||
return new NettyVisitorSocketBuilder();
|
||||
}
|
||||
@ -200,6 +207,15 @@ public class NettyClientPermeateServerVisitorSocket {
|
||||
public NettyVisitorSocketBuilder builderChannelFlowAdapter(ChannelFlowAdapter channelFlowAdapter) {
|
||||
this.channelFlowAdapter = channelFlowAdapter;
|
||||
return this;
|
||||
} /**
|
||||
* 绑定流量适配器
|
||||
*
|
||||
* @param handleChannelTypeAdvancedList 流量适配器
|
||||
* @return 当前对象
|
||||
*/
|
||||
public NettyVisitorSocketBuilder builderHandleChannelTypeAdvancedList(List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {
|
||||
this.handleChannelTypeAdvancedList = handleChannelTypeAdvancedList;
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* 服务端地址信息
|
||||
@ -238,6 +254,9 @@ public class NettyClientPermeateServerVisitorSocket {
|
||||
internalNetworkPermeateServerVisitor.setTargetIp(clientTargetIp);
|
||||
internalNetworkPermeateServerVisitor.setTargetPort(clientTargetPort);
|
||||
internalNetworkPermeateServerVisitor.setVisitorPort(visitorPort);
|
||||
internalNetworkPermeateServerVisitor.setNettyClientProperties(nettyClientProperties);
|
||||
internalNetworkPermeateServerVisitor.setChannelFlowAdapter(channelFlowAdapter);
|
||||
internalNetworkPermeateServerVisitor.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList);
|
||||
|
||||
|
||||
NettyClientPermeateServerVisitorFilter visitorFilter = new NettyClientPermeateServerVisitorFilter(internalNetworkPermeateServerVisitor);
|
||||
|
@ -105,6 +105,14 @@ public class MessageType {
|
||||
*/
|
||||
public static final byte REPORT_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL = 0X12;
|
||||
|
||||
/**
|
||||
* 上报 客户端渗透服务端init信息
|
||||
*
|
||||
* @see MessageTypeEnums#REPORT_CLIENT_PERMEATE_SERVER_INIT
|
||||
* @see AbstractHandleReportClientPermeateServerInitTypeAdvanced
|
||||
*/
|
||||
public static final byte REPORT_CLIENT_PERMEATE_SERVER_INIT = 0X13;
|
||||
|
||||
/**
|
||||
* 下发 客户端接收连接成功通知
|
||||
*
|
||||
@ -197,4 +205,12 @@ public class MessageType {
|
||||
* @see AbstractHandleDistributeClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced
|
||||
*/
|
||||
public static final byte DISTRIBUTE_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL = -0X12;
|
||||
|
||||
/**
|
||||
* 下发 客户端渗透服务端init信息
|
||||
*
|
||||
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT
|
||||
* @see AbstractHandleDistributeClientPermeateServerInitTypeAdvanced
|
||||
*/
|
||||
public static final byte DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT = -0X13;
|
||||
}
|
||||
|
@ -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_SERVER_INIT
|
||||
*/
|
||||
public abstract class AbstractHandleDistributeClientPermeateServerInitTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||
|
||||
|
||||
/**
|
||||
* 是否支持当前类型
|
||||
*
|
||||
* @param msg 通道数据
|
||||
* @return 布尔类型 是、否
|
||||
*/
|
||||
@Override
|
||||
public boolean doSupport(NettyProxyMsg msg) {
|
||||
return MessageTypeEnums.DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT.getTypeByte() == msg.getType();
|
||||
}
|
||||
}
|
@ -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_SERVER_INIT
|
||||
*/
|
||||
public abstract class AbstractHandleReportClientPermeateServerInitTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||
|
||||
|
||||
/**
|
||||
* 是否支持当前类型
|
||||
*
|
||||
* @param msg 通道数据
|
||||
* @return 布尔类型 是、否
|
||||
*/
|
||||
@Override
|
||||
public boolean doSupport(NettyProxyMsg msg) {
|
||||
return MessageTypeEnums.REPORT_CLIENT_PERMEATE_SERVER_INIT.getTypeByte() == msg.getType();
|
||||
}
|
||||
}
|
@ -2,10 +2,8 @@ package org.framework.lazy.cloud.network.heartbeat.common.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelHeartbeatTypeAdvanced;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.*;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.*;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.MessageType;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelHeartbeatTypeAdvanced;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.*;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.*;
|
||||
|
||||
@ -64,10 +62,13 @@ public enum MessageTypeEnums {
|
||||
* @see AbstractHandleReportClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced
|
||||
*/
|
||||
REPORT_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL(MessageType.REPORT_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL, "上报 客户端渗透服务端数据传输通道连接成功"),
|
||||
/**
|
||||
* @see AbstractHandleReportClientPermeateServerInitTypeAdvanced
|
||||
*/
|
||||
REPORT_CLIENT_PERMEATE_SERVER_INIT(MessageType.REPORT_CLIENT_PERMEATE_SERVER_INIT, "上报 客户端渗透服务端init信息"),
|
||||
/**
|
||||
* @see AbstractHandleDistributeConnectSuccessNotificationTypeAdvancedHandle
|
||||
*/
|
||||
|
||||
DISTRIBUTE_CLIENT_CONNECTION_SUCCESS_NOTIFICATION(MessageType.DISTRIBUTE_CLIENT_CONNECTION_SUCCESS_NOTIFICATION, "下发 客户端接收连接成功通知"),
|
||||
|
||||
|
||||
@ -116,6 +117,10 @@ public enum MessageTypeEnums {
|
||||
* @see AbstractHandleDistributeClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced
|
||||
*/
|
||||
DISTRIBUTE_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL(MessageType.DISTRIBUTE_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL, "下发 客户端渗透服务端数据传输通道连接成功"),
|
||||
/**
|
||||
* @see AbstractHandleDistributeClientPermeateServerInitTypeAdvanced
|
||||
*/
|
||||
DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT, "下发 客户端渗透服务端init信息"),
|
||||
;
|
||||
|
||||
private final byte typeByte;
|
||||
|
@ -1,16 +1,15 @@
|
||||
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.netty.advanced.*;
|
||||
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Role;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
||||
|
||||
|
||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||
@ -43,8 +42,12 @@ public class HeartbeatServerConfiguration {
|
||||
public ServerHandleClientConnectSuccessTypeAdvanced serverReportConnectSuccessTypeAdvanced(
|
||||
LazyClientStatsChangeApplication lazyClientStatsChangeApplication,
|
||||
LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication,
|
||||
LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication) {
|
||||
return new ServerHandleClientConnectSuccessTypeAdvanced(lazyClientStatsChangeApplication, lazyNettyClientBlacklistApplication, lazyInternalNetworkPenetrationMappingApplication);
|
||||
LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication,
|
||||
LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication) {
|
||||
return new ServerHandleClientConnectSuccessTypeAdvanced(lazyClientStatsChangeApplication,
|
||||
lazyNettyClientBlacklistApplication,
|
||||
lazyInternalNetworkPenetrationMappingApplication,
|
||||
lazyInternalNetworkClientPermeateServerMappingApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,16 +4,19 @@ package org.framework.lazy.cloud.network.heartbeat.server.netty.advanced;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import io.netty.channel.Channel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyClientStatsChangeApplication;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkPenetrationMappingApplication;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyNettyClientBlacklistApplication;
|
||||
import org.springframework.stereotype.Component;
|
||||
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.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.command.lazy.internal.network.client.permeate.server.mapping.LazyInternalNetworkClientPermeateServerMappingQueryListCommand;
|
||||
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;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
@ -30,11 +33,13 @@ public class ServerHandleClientConnectSuccessTypeAdvanced extends AbstractHandle
|
||||
private final LazyClientStatsChangeApplication lazyClientStatsChangeApplication;
|
||||
private final LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication;
|
||||
private final LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication;
|
||||
private final LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication;
|
||||
|
||||
public ServerHandleClientConnectSuccessTypeAdvanced(LazyClientStatsChangeApplication lazyClientStatsChangeApplication, LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication, LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication) {
|
||||
public ServerHandleClientConnectSuccessTypeAdvanced(LazyClientStatsChangeApplication lazyClientStatsChangeApplication, LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication, LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication, LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication) {
|
||||
this.lazyClientStatsChangeApplication = lazyClientStatsChangeApplication;
|
||||
this.lazyNettyClientBlacklistApplication = lazyNettyClientBlacklistApplication;
|
||||
this.lazyInternalNetworkPenetrationMappingApplication = lazyInternalNetworkPenetrationMappingApplication;
|
||||
this.lazyInternalNetworkClientPermeateServerMappingApplication = lazyInternalNetworkClientPermeateServerMappingApplication;
|
||||
}
|
||||
|
||||
|
||||
@ -94,6 +99,28 @@ public class ServerHandleClientConnectSuccessTypeAdvanced extends AbstractHandle
|
||||
|
||||
}
|
||||
});
|
||||
// 查询客户端渗透服务端信息
|
||||
LazyInternalNetworkClientPermeateServerMappingQueryListCommand lazyInternalNetworkClientPermeateServerMappingQueryListCommand = new LazyInternalNetworkClientPermeateServerMappingQueryListCommand();
|
||||
lazyInternalNetworkClientPermeateServerMappingQueryListCommand.setClientId(clientId);
|
||||
lazyInternalNetworkClientPermeateServerMappingQueryListCommand.setIsDeleted(false);
|
||||
lazyInternalNetworkClientPermeateServerMappingApplication.findList(lazyInternalNetworkClientPermeateServerMappingQueryListCommand)
|
||||
.accept(lazyInternalNetworkClientPermeateServerMappingDTOS -> {
|
||||
for (LazyInternalNetworkClientPermeateServerMappingDTO lazyInternalNetworkClientPermeateServerMappingDTO : lazyInternalNetworkClientPermeateServerMappingDTOS) {
|
||||
|
||||
String permeateTargetIp = lazyInternalNetworkClientPermeateServerMappingDTO.getPermeateTargetIp();
|
||||
Integer permeateTargetPort = lazyInternalNetworkClientPermeateServerMappingDTO.getPermeateTargetPort();
|
||||
Integer visitorPort = lazyInternalNetworkClientPermeateServerMappingDTO.getVisitorPort();
|
||||
NettyProxyMsg nettyMsg = new NettyProxyMsg();
|
||||
nettyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT);
|
||||
nettyMsg.setClientTargetIp(permeateTargetIp);
|
||||
nettyMsg.setClientTargetPort(permeateTargetPort);
|
||||
nettyMsg.setVisitorPort(visitorPort);
|
||||
newChannel.writeAndFlush(nettyMsg);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// 查询客户端渗透客户端信息
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,10 @@
|
||||
package org.framework.lazy.cloud.network.heartbeat.server.standalone.application.impl;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
import org.framework.lazy.cloud.network.heartbeat.client.netty.event.ClientChangeEvent;
|
||||
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.framework.lazy.cloud.network.heartbeat.server.properties.ServerNodeProperties;
|
||||
import org.wu.framework.database.lazy.web.plus.stereotype.LazyApplication;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkClientPermeateServerMappingApplication;
|
||||
@ -51,6 +56,21 @@ public class LazyInternalNetworkClientPermeateServerMappingApplicationImpl imple
|
||||
LazyInternalNetworkClientPermeateServerMapping lazyInternalNetworkClientPermeateServerMapping = LazyInternalNetworkClientPermeateServerMappingDTOAssembler.INSTANCE.toLazyInternalNetworkClientPermeateServerMapping(lazyInternalNetworkClientPermeateServerMappingStoryCommand);
|
||||
String serverId = serverNodeProperties.getNodeId();
|
||||
lazyInternalNetworkClientPermeateServerMapping.setServerId(serverId);
|
||||
// 发送客户端初始化渗透
|
||||
String clientId = lazyInternalNetworkClientPermeateServerMapping.getClientId();
|
||||
ChannelContext.ClientChannel clientChannel = ChannelContext.get(clientId);
|
||||
if(clientChannel!=null && clientChannel.getChannel()!=null&&clientChannel.getChannel().isActive()){
|
||||
Channel channel = clientChannel.getChannel();
|
||||
String permeateTargetIp = lazyInternalNetworkClientPermeateServerMapping.getPermeateTargetIp();
|
||||
Integer permeateTargetPort = lazyInternalNetworkClientPermeateServerMapping.getPermeateTargetPort();
|
||||
Integer visitorPort = lazyInternalNetworkClientPermeateServerMapping.getVisitorPort();
|
||||
NettyProxyMsg nettyMsg = new NettyProxyMsg();
|
||||
nettyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT);
|
||||
nettyMsg.setClientTargetIp(permeateTargetIp);
|
||||
nettyMsg.setClientTargetPort(permeateTargetPort);
|
||||
nettyMsg.setVisitorPort(visitorPort);
|
||||
channel.writeAndFlush(nettyMsg);
|
||||
}
|
||||
return lazyInternalNetworkClientPermeateServerMappingRepository.story(lazyInternalNetworkClientPermeateServerMapping);
|
||||
}
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user