mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2025-06-06 21:37:56 +08:00
【fix】客户端渗透客户端编码
This commit is contained in:
parent
b4daa3ba70
commit
2c139c9ae1
@ -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<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 访客ID
|
||||||
|
*/
|
||||||
|
private String visitorId;
|
||||||
|
}
|
@ -5,11 +5,9 @@ import io.netty.channel.Channel;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties;
|
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.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.NettyProxyMsg;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced;
|
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.AbstractHandleDistributeClientPermeateClientInitTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeClientPermeateServerInitTypeAdvanced;
|
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
||||||
import org.wu.framework.spring.utils.SpringContextHolder;
|
import org.wu.framework.spring.utils.SpringContextHolder;
|
||||||
|
|
||||||
@ -34,22 +32,24 @@ public class ClientHandleDistributeClientPermeateClientInitTypeAdvanced extends
|
|||||||
@Override
|
@Override
|
||||||
public void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) {
|
public void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) {
|
||||||
// 初始化 客户端渗透服务端socket
|
// 初始化 客户端渗透服务端socket
|
||||||
byte[] clientIdBytes = nettyProxyMsg.getClientId();
|
byte[] fromClientIdBytes = nettyProxyMsg.getClientId();
|
||||||
byte[] visitorPort = nettyProxyMsg.getVisitorPort();
|
byte[] visitorPort = nettyProxyMsg.getVisitorPort();
|
||||||
byte[] clientTargetIp = nettyProxyMsg.getClientTargetIp();
|
byte[] clientTargetIp = nettyProxyMsg.getClientTargetIp();
|
||||||
byte[] clientTargetPort = nettyProxyMsg.getClientTargetPort();
|
byte[] clientTargetPort = nettyProxyMsg.getClientTargetPort();
|
||||||
|
byte[] toClientIdBytes = nettyProxyMsg.getData();
|
||||||
|
|
||||||
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList = new ArrayList<>(SpringContextHolder.getApplicationContext().getBeansOfType(HandleChannelTypeAdvanced.class).values());
|
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList = new ArrayList<>(SpringContextHolder.getApplicationContext().getBeansOfType(HandleChannelTypeAdvanced.class).values());
|
||||||
// ChannelFlowAdapter channelFlowAdapter = SpringContextHolder.getBean(ChannelFlowAdapter.class);
|
// ChannelFlowAdapter channelFlowAdapter = SpringContextHolder.getBean(ChannelFlowAdapter.class);
|
||||||
NettyClientProperties nettyClientProperties = SpringContextHolder.getBean(NettyClientProperties.class);
|
NettyClientProperties nettyClientProperties = SpringContextHolder.getBean(NettyClientProperties.class);
|
||||||
NettyClientPermeateClientVisitorSocket nettyClientPermeateClientVisitorSocket =
|
NettyClientPermeateClientVisitorSocket nettyClientPermeateClientVisitorSocket =
|
||||||
NettyClientPermeateClientVisitorSocket.NettyClientPermeateClientVisitorSocketBuilder.builder()
|
NettyClientPermeateClientVisitorSocket.NettyClientPermeateClientVisitorSocketBuilder.builder()
|
||||||
.builderClientId(new String(clientIdBytes))
|
.builderClientId(new String(fromClientIdBytes))
|
||||||
.builderClientTargetIp(new String(clientTargetIp))
|
.builderClientTargetIp(new String(clientTargetIp))
|
||||||
.builderClientTargetPort(Integer.parseInt(new String(clientTargetPort)))
|
.builderClientTargetPort(Integer.parseInt(new String(clientTargetPort)))
|
||||||
.builderVisitorPort(Integer.parseInt(new String(visitorPort)))
|
.builderVisitorPort(Integer.parseInt(new String(visitorPort)))
|
||||||
.builderNettyClientProperties(nettyClientProperties)
|
.builderNettyClientProperties(nettyClientProperties)
|
||||||
// .builderChannelFlowAdapter(channelFlowAdapter)
|
// .builderChannelFlowAdapter(channelFlowAdapter)
|
||||||
|
.builderToClientId(new String(toClientIdBytes))
|
||||||
.builderHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList)
|
.builderHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList)
|
||||||
|
|
||||||
.build();
|
.build();
|
||||||
|
@ -5,17 +5,16 @@ import io.netty.channel.ChannelDuplexHandler;
|
|||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.ChannelPipeline;
|
import io.netty.channel.ChannelPipeline;
|
||||||
import io.netty.channel.socket.SocketChannel;
|
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.NettyClientPermeateClientVisitorHandler;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.client.netty.handler.NettyClientPermeateServerVisitorHandler;
|
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer;
|
import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer;
|
||||||
|
|
||||||
public class NettyClientPermeateClientVisitorFilter extends DebugChannelInitializer<SocketChannel> {
|
public class NettyClientPermeateClientVisitorFilter extends DebugChannelInitializer<SocketChannel> {
|
||||||
|
|
||||||
private final InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor;
|
private final InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor;
|
||||||
|
|
||||||
public NettyClientPermeateClientVisitorFilter(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) {
|
public NettyClientPermeateClientVisitorFilter(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) {
|
||||||
this.internalNetworkPermeateServerVisitor = internalNetworkPermeateServerVisitor;
|
this.internalNetworkClientPermeateClientVisitor = internalNetworkClientPermeateClientVisitor;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,6 +31,6 @@ public class NettyClientPermeateClientVisitorFilter extends DebugChannelInitiali
|
|||||||
protected void initChannel0(SocketChannel ch) throws Exception {
|
protected void initChannel0(SocketChannel ch) throws Exception {
|
||||||
ChannelPipeline pipeline = ch.pipeline();
|
ChannelPipeline pipeline = ch.pipeline();
|
||||||
pipeline.addLast(new ChannelDuplexHandler());
|
pipeline.addLast(new ChannelDuplexHandler());
|
||||||
pipeline.addLast(new NettyClientPermeateClientVisitorHandler(internalNetworkPermeateServerVisitor));
|
pipeline.addLast(new NettyClientPermeateClientVisitorHandler(internalNetworkClientPermeateClientVisitor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import io.netty.channel.ChannelOption;
|
|||||||
import io.netty.channel.SimpleChannelInboundHandler;
|
import io.netty.channel.SimpleChannelInboundHandler;
|
||||||
import io.netty.util.internal.StringUtil;
|
import io.netty.util.internal.StringUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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.advanced.ClientHandleDistributeClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientTransferClientSocket;
|
import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientTransferClientSocket;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientTransferServerSocket;
|
import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientTransferServerSocket;
|
||||||
@ -23,11 +23,11 @@ import java.util.UUID;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class NettyClientPermeateClientVisitorHandler extends SimpleChannelInboundHandler<ByteBuf> {
|
public class NettyClientPermeateClientVisitorHandler extends SimpleChannelInboundHandler<ByteBuf> {
|
||||||
private final InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor;
|
private final InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor;
|
||||||
// private final NettyChannelPool nettyChannelPool = new DefaultNettyChannelPool(10);
|
// private final NettyChannelPool nettyChannelPool = new DefaultNettyChannelPool(10);
|
||||||
|
|
||||||
public NettyClientPermeateClientVisitorHandler(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) {
|
public NettyClientPermeateClientVisitorHandler(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) {
|
||||||
this.internalNetworkPermeateServerVisitor = internalNetworkPermeateServerVisitor;
|
this.internalNetworkClientPermeateClientVisitor = internalNetworkClientPermeateClientVisitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,11 +51,11 @@ public class NettyClientPermeateClientVisitorHandler extends SimpleChannelInboun
|
|||||||
// 当前通道绑定访客ID
|
// 当前通道绑定访客ID
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(visitorChannel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(visitorChannel, visitorId);
|
||||||
|
|
||||||
internalNetworkPermeateServerVisitor.setVisitorId(visitorId);
|
internalNetworkClientPermeateClientVisitor.setVisitorId(visitorId);
|
||||||
// 判断是否有可用的通道 如果没有创建新的通道
|
// 判断是否有可用的通道 如果没有创建新的通道
|
||||||
// Channel transferChannel = nettyChannelPool.availableChannel(visitorId);
|
// Channel transferChannel = nettyChannelPool.availableChannel(visitorId);
|
||||||
// 创建访客连接客户端通道
|
// 创建访客连接客户端通道
|
||||||
NettyClientTransferClientSocket.buildTransferServer(internalNetworkPermeateServerVisitor);
|
NettyClientTransferClientSocket.buildTransferServer(internalNetworkClientPermeateClientVisitor);
|
||||||
log.info("客户端渗透客户端访客端口连接成功了");
|
log.info("客户端渗透客户端访客端口连接成功了");
|
||||||
super.channelActive(ctx);
|
super.channelActive(ctx);
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ public class NettyClientPermeateClientVisitorHandler extends SimpleChannelInboun
|
|||||||
log.debug("【客户端渗透客户端】访客端口成功接收数据:{}", new String(bytes));
|
log.debug("【客户端渗透客户端】访客端口成功接收数据:{}", new String(bytes));
|
||||||
|
|
||||||
// 使用访客的通信通道
|
// 使用访客的通信通道
|
||||||
Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort();
|
Integer visitorPort = internalNetworkClientPermeateClientVisitor.getVisitorPort();
|
||||||
NettyProxyMsg nettyProxyMsg = new NettyProxyMsg();
|
NettyProxyMsg nettyProxyMsg = new NettyProxyMsg();
|
||||||
nettyProxyMsg.setType(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_REQUEST);
|
nettyProxyMsg.setType(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_REQUEST);
|
||||||
nettyProxyMsg.setVisitorId(visitorId);
|
nettyProxyMsg.setVisitorId(visitorId);
|
||||||
|
@ -7,7 +7,7 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties;
|
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.client.netty.filter.NettyClientPermeateClientVisitorFilter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorContext;
|
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.NettyVisitorPortContext;
|
||||||
@ -139,6 +139,10 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo
|
|||||||
* 访客ID
|
* 访客ID
|
||||||
*/
|
*/
|
||||||
private String visitorId;
|
private String visitorId;
|
||||||
|
/**
|
||||||
|
* 目标客户端ID
|
||||||
|
*/
|
||||||
|
private String toClientId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流量适配器
|
* 流量适配器
|
||||||
@ -243,6 +247,16 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目标客户端ID
|
||||||
|
*
|
||||||
|
* @param toClientId 目标客户端ID
|
||||||
|
* @return 当前对象
|
||||||
|
*/
|
||||||
|
public NettyClientPermeateClientVisitorSocketBuilder builderToClientId(String toClientId) {
|
||||||
|
this.toClientId = toClientId;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public NettyClientPermeateClientVisitorSocket build() {
|
public NettyClientPermeateClientVisitorSocket build() {
|
||||||
if (clientTargetIp == null) {
|
if (clientTargetIp == null) {
|
||||||
throw new IllegalArgumentException("clientTargetIp must not null");
|
throw new IllegalArgumentException("clientTargetIp must not null");
|
||||||
@ -253,17 +267,19 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo
|
|||||||
if (visitorPort == null) {
|
if (visitorPort == null) {
|
||||||
throw new IllegalArgumentException("visitorPort must not null");
|
throw new IllegalArgumentException("visitorPort must not null");
|
||||||
}
|
}
|
||||||
InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor = new InternalNetworkPermeateServerVisitor();
|
InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor = new InternalNetworkClientPermeateClientVisitor();
|
||||||
|
|
||||||
internalNetworkPermeateServerVisitor.setTargetIp(clientTargetIp);
|
internalNetworkClientPermeateClientVisitor.setFromClientId(nettyClientProperties.getClientId());
|
||||||
internalNetworkPermeateServerVisitor.setTargetPort(clientTargetPort);
|
internalNetworkClientPermeateClientVisitor.setToClientId(toClientId);
|
||||||
internalNetworkPermeateServerVisitor.setVisitorPort(visitorPort);
|
internalNetworkClientPermeateClientVisitor.setTargetIp(clientTargetIp);
|
||||||
internalNetworkPermeateServerVisitor.setNettyClientProperties(nettyClientProperties);
|
internalNetworkClientPermeateClientVisitor.setTargetPort(clientTargetPort);
|
||||||
internalNetworkPermeateServerVisitor.setChannelFlowAdapter(channelFlowAdapter);
|
internalNetworkClientPermeateClientVisitor.setVisitorPort(visitorPort);
|
||||||
internalNetworkPermeateServerVisitor.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList);
|
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);
|
return new NettyClientPermeateClientVisitorSocket(visitorFilter, clientId, visitorPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import io.netty.channel.nio.NioEventLoopGroup;
|
|||||||
import io.netty.channel.socket.nio.NioSocketChannel;
|
import io.netty.channel.socket.nio.NioSocketChannel;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.client.config.NettyClientProperties;
|
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.client.netty.filter.NettyClientPermeateTransferFilter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.MessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.MessageType;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext;
|
||||||
@ -28,8 +28,8 @@ public class NettyClientTransferClientSocket {
|
|||||||
/**
|
/**
|
||||||
* 连接服务端通信通道
|
* 连接服务端通信通道
|
||||||
*/
|
*/
|
||||||
public static void buildTransferServer(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) {
|
public static void buildTransferServer(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) {
|
||||||
newTransferConnect2Server(internalNetworkPermeateServerVisitor);
|
newTransferConnect2Server(internalNetworkClientPermeateClientVisitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ public class NettyClientTransferClientSocket {
|
|||||||
* <p>
|
* <p>
|
||||||
* internalNetworkPermeateServerVisitor
|
* internalNetworkPermeateServerVisitor
|
||||||
*/
|
*/
|
||||||
protected static void newTransferConnect2Server(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor) {
|
protected static void newTransferConnect2Server(InternalNetworkClientPermeateClientVisitor internalNetworkClientPermeateClientVisitor) {
|
||||||
|
|
||||||
Bootstrap bootstrap = new Bootstrap();
|
Bootstrap bootstrap = new Bootstrap();
|
||||||
bootstrap.group(eventLoopGroup)
|
bootstrap.group(eventLoopGroup)
|
||||||
@ -55,20 +55,21 @@ public class NettyClientTransferClientSocket {
|
|||||||
|
|
||||||
.option(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(1024 * 1024, 1024 * 1024 * 2))
|
.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();
|
String inetHost = nettyClientProperties.getInetHost();
|
||||||
int inetPort = nettyClientProperties.getInetPort();
|
int inetPort = nettyClientProperties.getInetPort();
|
||||||
// local client id
|
// local client id
|
||||||
|
|
||||||
String clientId = nettyClientProperties.getClientId();
|
String clientId = nettyClientProperties.getClientId();
|
||||||
|
|
||||||
String targetIp = internalNetworkPermeateServerVisitor.getTargetIp();
|
String targetIp = internalNetworkClientPermeateClientVisitor.getTargetIp();
|
||||||
Integer targetPort = internalNetworkPermeateServerVisitor.getTargetPort();
|
Integer targetPort = internalNetworkClientPermeateClientVisitor.getTargetPort();
|
||||||
|
|
||||||
String visitorId = internalNetworkPermeateServerVisitor.getVisitorId();
|
String visitorId = internalNetworkClientPermeateClientVisitor.getVisitorId();
|
||||||
Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort();
|
Integer visitorPort = internalNetworkClientPermeateClientVisitor.getVisitorPort();
|
||||||
|
String toClientId = internalNetworkClientPermeateClientVisitor.getToClientId();
|
||||||
|
|
||||||
// 客户端新建访客通道 连接服务端IP:{},连接服务端端口:{}
|
// 客户端新建访客通道 连接服务端IP:{},连接服务端端口:{}
|
||||||
log.info("Client creates a new visitor channel to connect to server IP: {}, connecting to server port: {}", inetHost, inetPort);
|
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();
|
NettyProxyMsg myMsg = new NettyProxyMsg();
|
||||||
myMsg.setType(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL);
|
myMsg.setType(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL);
|
||||||
// other clientId
|
// other clientId
|
||||||
myMsg.setClientId(clientId);
|
myMsg.setClientId(toClientId);
|
||||||
myMsg.setVisitorPort(visitorPort);
|
myMsg.setVisitorPort(visitorPort);
|
||||||
myMsg.setClientTargetIp(targetIp);
|
myMsg.setClientTargetIp(targetIp);
|
||||||
myMsg.setClientTargetPort(targetPort);
|
myMsg.setClientTargetPort(targetPort);
|
||||||
@ -105,7 +106,7 @@ public class NettyClientTransferClientSocket {
|
|||||||
log.info("每隔2s重连....");
|
log.info("每隔2s重连....");
|
||||||
// 离线
|
// 离线
|
||||||
channel.eventLoop().schedule(() -> {
|
channel.eventLoop().schedule(() -> {
|
||||||
newTransferConnect2Server(internalNetworkPermeateServerVisitor);
|
newTransferConnect2Server(internalNetworkClientPermeateClientVisitor);
|
||||||
}, 2, TimeUnit.SECONDS);
|
}, 2, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -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.common.adapter.ChannelFlowAdapter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.advanced.*;
|
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.*;
|
||||||
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.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Role;
|
import org.springframework.context.annotation.Role;
|
||||||
@ -43,11 +40,13 @@ public class HeartbeatServerConfiguration {
|
|||||||
LazyClientStatsChangeApplication lazyClientStatsChangeApplication,
|
LazyClientStatsChangeApplication lazyClientStatsChangeApplication,
|
||||||
LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication,
|
LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication,
|
||||||
LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication,
|
LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication,
|
||||||
LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication) {
|
LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication,
|
||||||
|
LazyInternalNetworkClientPermeateClientMappingApplication lazyInternalNetworkClientPermeateClientMappingApplication) {
|
||||||
return new ServerHandleClientConnectSuccessTypeAdvanced(lazyClientStatsChangeApplication,
|
return new ServerHandleClientConnectSuccessTypeAdvanced(lazyClientStatsChangeApplication,
|
||||||
lazyNettyClientBlacklistApplication,
|
lazyNettyClientBlacklistApplication,
|
||||||
lazyInternalNetworkPenetrationMappingApplication,
|
lazyInternalNetworkPenetrationMappingApplication,
|
||||||
lazyInternalNetworkClientPermeateServerMappingApplication);
|
lazyInternalNetworkClientPermeateServerMappingApplication,
|
||||||
|
lazyInternalNetworkClientPermeateClientMappingApplication);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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.NettyProxyMsg;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleClientConnectSuccessTypeAdvanced;
|
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.common.utils.ChannelAttributeKeyUtils;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyClientStatsChangeApplication;
|
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.*;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkClientPermeateServerMappingApplication;
|
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.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.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.application.dto.LazyInternalNetworkClientPermeateServerMappingDTO;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.netty.client.blacklist.LazyNettyClientBlacklist;
|
import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.netty.client.blacklist.LazyNettyClientBlacklist;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -34,12 +33,14 @@ public class ServerHandleClientConnectSuccessTypeAdvanced extends AbstractHandle
|
|||||||
private final LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication;
|
private final LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication;
|
||||||
private final LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication;
|
private final LazyInternalNetworkPenetrationMappingApplication lazyInternalNetworkPenetrationMappingApplication;
|
||||||
private final LazyInternalNetworkClientPermeateServerMappingApplication lazyInternalNetworkClientPermeateServerMappingApplication;
|
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.lazyClientStatsChangeApplication = lazyClientStatsChangeApplication;
|
||||||
this.lazyNettyClientBlacklistApplication = lazyNettyClientBlacklistApplication;
|
this.lazyNettyClientBlacklistApplication = lazyNettyClientBlacklistApplication;
|
||||||
this.lazyInternalNetworkPenetrationMappingApplication = lazyInternalNetworkPenetrationMappingApplication;
|
this.lazyInternalNetworkPenetrationMappingApplication = lazyInternalNetworkPenetrationMappingApplication;
|
||||||
this.lazyInternalNetworkClientPermeateServerMappingApplication = lazyInternalNetworkClientPermeateServerMappingApplication;
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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.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.assembler.LazyInternalNetworkClientPermeateClientMappingDTOAssembler;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyInternalNetworkClientPermeateClientMappingDTO;
|
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyInternalNetworkClientPermeateClientMappingDTO;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.internal.network.client.permeate.client.mapping.LazyInternalNetworkClientPermeateClientMappingRepository;
|
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.setClientTargetIp(permeateTargetIp);
|
||||||
nettyMsg.setClientTargetPort(permeateTargetPort);
|
nettyMsg.setClientTargetPort(permeateTargetPort);
|
||||||
nettyMsg.setVisitorPort(visitorPort);
|
nettyMsg.setVisitorPort(visitorPort);
|
||||||
nettyMsg.setClientId(toClientId);
|
nettyMsg.setClientId(fromClientId);
|
||||||
|
nettyMsg.setData(toClientId.getBytes(StandardCharsets.UTF_8));
|
||||||
channel.writeAndFlush(nettyMsg);
|
channel.writeAndFlush(nettyMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user