mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2025-06-06 13:27:55 +08:00
[fix] 修复位置问题
This commit is contained in:
parent
bc1c2b008b
commit
576498afc7
@ -75,8 +75,8 @@ public class HeartbeatClientConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ClientHandleDistributeClientTransferClientResponseTypeAdvanced clientHandleDistributeClientTransferClientResponseTypeAdvanced() {
|
public ClientHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced clientHandleDistributeClientTransferClientResponseTypeAdvanced() {
|
||||||
return new ClientHandleDistributeClientTransferClientResponseTypeAdvanced();
|
return new ClientHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced();
|
||||||
}
|
}
|
||||||
@Bean
|
@Bean
|
||||||
public ClientHandleDistributeSingleClientRealCloseVisitorTypeAdvanced handleDistributeSingleClientRealCloseVisitorTypeAdvanced() {
|
public ClientHandleDistributeSingleClientRealCloseVisitorTypeAdvanced handleDistributeSingleClientRealCloseVisitorTypeAdvanced() {
|
||||||
@ -84,8 +84,8 @@ public class HeartbeatClientConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ClientReportHandleChannelTransferTypeAdvancedHandleDistribute handleChannelTransferTypeAdvancedHandleDistribute(NettyClientProperties nettyClientProperties) {
|
public ClientHandleChannelTransferTypeAdvancedHandleDistributeDistribute handleChannelTransferTypeAdvancedHandleDistribute(NettyClientProperties nettyClientProperties) {
|
||||||
return new ClientReportHandleChannelTransferTypeAdvancedHandleDistribute(nettyClientProperties);
|
return new ClientHandleChannelTransferTypeAdvancedHandleDistributeDistribute(nettyClientProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -153,9 +153,13 @@ public class HeartbeatClientConfiguration {
|
|||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ClientHandleDistributeSingleClientRealConnectTypeAdvanced clientHandleDistributeSingleClientRealConnectTypeAdvanced(NettyClientProperties nettyClientProperties,
|
public ClientHandleDistributeServicePermeateClientRealConnectTypeAdvanced clientHandleDistributeSingleClientRealConnectTypeAdvanced(NettyClientProperties nettyClientProperties,
|
||||||
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {
|
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {
|
||||||
return new ClientHandleDistributeSingleClientRealConnectTypeAdvanced(nettyClientProperties, handleChannelTypeAdvancedList);
|
return new ClientHandleDistributeServicePermeateClientRealConnectTypeAdvanced(nettyClientProperties, handleChannelTypeAdvancedList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ClientHandleHandleDistributeClientPermeateServerTransferCloseTypeAdvanced clientHandleHandleDistributeClientPermeateServerTransferCloseTypeAdvanced() {
|
||||||
|
return new ClientHandleHandleDistributeClientPermeateServerTransferCloseTypeAdvanced();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,9 +43,4 @@ public class InternalNetworkPermeateServerVisitor implements InternalNetworkPerm
|
|||||||
*/
|
*/
|
||||||
private List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList;
|
private List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 访客ID
|
|
||||||
*/
|
|
||||||
private String visitorId;
|
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,7 @@ 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.common.NettyProxyMsg;
|
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.AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeChannelTransferTypeAdvanced;
|
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
@ -18,11 +17,11 @@ import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeK
|
|||||||
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_TRANSFER
|
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_TRANSFER
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ClientReportHandleChannelTransferTypeAdvancedHandleDistribute extends AbstractHandleDistributeChannelTransferTypeAdvanced<NettyProxyMsg> {
|
public class ClientHandleChannelTransferTypeAdvancedHandleDistributeDistribute extends AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
private final NettyClientProperties nettyClientProperties;
|
private final NettyClientProperties nettyClientProperties;
|
||||||
|
|
||||||
public ClientReportHandleChannelTransferTypeAdvancedHandleDistribute(NettyClientProperties nettyClientProperties) {
|
public ClientHandleChannelTransferTypeAdvancedHandleDistributeDistribute(NettyClientProperties nettyClientProperties) {
|
||||||
this.nettyClientProperties = nettyClientProperties;
|
this.nettyClientProperties = nettyClientProperties;
|
||||||
}
|
}
|
||||||
|
|
@ -47,16 +47,13 @@ public class ClientHandleDistributeClientPermeateServerInitTypeAdvanced extends
|
|||||||
byte[] clientTargetPort = nettyProxyMsg.getClientTargetPort();
|
byte[] clientTargetPort = nettyProxyMsg.getClientTargetPort();
|
||||||
|
|
||||||
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);
|
|
||||||
NettyClientPermeateServerVisitorSocket nettyClientPermeateServerVisitorSocket = NettyClientPermeateServerVisitorSocket.NettyVisitorSocketBuilder.builder()
|
NettyClientPermeateServerVisitorSocket nettyClientPermeateServerVisitorSocket = NettyClientPermeateServerVisitorSocket.NettyVisitorSocketBuilder.builder()
|
||||||
.builderClientId(new String(clientIdBytes))
|
.builderClientId(new String(clientIdBytes))
|
||||||
.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)
|
|
||||||
.builderHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList)
|
.builderHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList)
|
||||||
|
|
||||||
.build();
|
.build();
|
||||||
try {
|
try {
|
||||||
nettyClientPermeateServerVisitorSocket.start();
|
nettyClientPermeateServerVisitorSocket.start();
|
||||||
|
@ -28,16 +28,15 @@ public class ClientHandleDistributeClientTransferServerPermeateChannelConnection
|
|||||||
/**
|
/**
|
||||||
* 处理当前数据
|
* 处理当前数据
|
||||||
*
|
*
|
||||||
* @param channel 当前通道
|
* @param transferChannel 当前通道
|
||||||
* @param nettyProxyMsg 通道数据
|
* @param nettyProxyMsg 通道数据
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) {
|
public void doHandler(Channel transferChannel, NettyProxyMsg nettyProxyMsg) {
|
||||||
// 连接成功 开启自动读取写
|
// 连接成功 开启自动读取写
|
||||||
byte[] msgVisitorId = nettyProxyMsg.getVisitorId();
|
byte[] msgVisitorId = nettyProxyMsg.getVisitorId();
|
||||||
String visitorId = new String(msgVisitorId);
|
String visitorId = new String(msgVisitorId);
|
||||||
Channel visitor = NettyRealIdContext.getReal(visitorId);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(transferChannel);
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
|
||||||
nextChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
nextChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyServe
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPenetrationRealClient;
|
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPenetrationRealClient;
|
||||||
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.AbstractHandleDistributeSingleClientRealConnectTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -15,12 +15,12 @@ import java.util.List;
|
|||||||
* 客户端创建真实代理同奥
|
* 客户端创建真实代理同奥
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ClientHandleDistributeSingleClientRealConnectTypeAdvanced extends AbstractHandleDistributeSingleClientRealConnectTypeAdvanced<NettyProxyMsg> {
|
public class ClientHandleDistributeServicePermeateClientRealConnectTypeAdvanced extends AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
private final NettyClientProperties nettyClientProperties;// 服务端地址信息
|
private final NettyClientProperties nettyClientProperties;// 服务端地址信息
|
||||||
private final List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList;
|
private final List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList;
|
||||||
|
|
||||||
public ClientHandleDistributeSingleClientRealConnectTypeAdvanced(NettyClientProperties nettyClientProperties, List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {
|
public ClientHandleDistributeServicePermeateClientRealConnectTypeAdvanced(NettyClientProperties nettyClientProperties, List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) {
|
||||||
this.nettyClientProperties = nettyClientProperties;
|
this.nettyClientProperties = nettyClientProperties;
|
||||||
this.handleChannelTypeAdvancedList = handleChannelTypeAdvancedList;
|
this.handleChannelTypeAdvancedList = handleChannelTypeAdvancedList;
|
||||||
}
|
}
|
@ -5,7 +5,7 @@ import io.netty.buffer.ByteBuf;
|
|||||||
import io.netty.channel.Channel;
|
import io.netty.channel.Channel;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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.client.AbstractHandleDistributeClientTransferClientResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeK
|
|||||||
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE
|
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ClientHandleDistributeClientTransferClientResponseTypeAdvanced extends AbstractHandleDistributeClientTransferClientResponseTypeAdvanced<NettyProxyMsg> {
|
public class ClientHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced extends AbstractHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
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.common.NettyProxyMsg;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeClientPermeateServerTransferCloseTypeAdvanced;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下发 客户端渗透服务端通信通道关闭
|
||||||
|
*
|
||||||
|
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class ClientHandleHandleDistributeClientPermeateServerTransferCloseTypeAdvanced extends AbstractHandleDistributeClientPermeateServerTransferCloseTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理当前数据
|
||||||
|
*
|
||||||
|
* @param channel 当前通道
|
||||||
|
* @param nettyProxyMsg 通道数据
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) {
|
||||||
|
// 关闭本地通信通道
|
||||||
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||||
|
channel.close();
|
||||||
|
nextChannel.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -4,7 +4,6 @@ import io.netty.channel.Channel;
|
|||||||
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.handler.NettyClientPermeateClientRealHandler;
|
import org.framework.lazy.cloud.network.heartbeat.client.netty.handler.NettyClientPermeateClientRealHandler;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.client.netty.handler.NettyServerPermeateClientRealHandler;
|
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.decoder.TransferDecoder;
|
import org.framework.lazy.cloud.network.heartbeat.common.decoder.TransferDecoder;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.encoder.TransferEncoder;
|
import org.framework.lazy.cloud.network.heartbeat.common.encoder.TransferEncoder;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer;
|
import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer;
|
||||||
|
@ -12,11 +12,8 @@ import org.framework.lazy.cloud.network.heartbeat.client.netty.InternalNetworkPe
|
|||||||
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.NettyClientPermeateServerVisitorTransferSocket;
|
import org.framework.lazy.cloud.network.heartbeat.client.netty.socket.NettyClientPermeateServerVisitorTransferSocket;
|
||||||
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.NettyProxyMsg;
|
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.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
import org.wu.framework.core.utils.ObjectUtils;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -44,13 +41,14 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
|||||||
|
|
||||||
// 生成访客ID
|
// 生成访客ID
|
||||||
String visitorId = UUID.randomUUID().toString();
|
String visitorId = UUID.randomUUID().toString();
|
||||||
|
|
||||||
|
log.info("this channel{} use visitorId:{}", visitorChannel.id().asLongText(), visitorId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(visitorChannel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(visitorChannel, visitorId);
|
||||||
internalNetworkPermeateServerVisitor.setVisitorId(visitorId);
|
|
||||||
// 判断是否有可用的通道 如果没有创建新的通道
|
// 判断是否有可用的通道 如果没有创建新的通道
|
||||||
// Channel transferChannel = nettyChannelPool.availableChannel(visitorId);
|
// Channel transferChannel = nettyChannelPool.availableChannel(visitorId);
|
||||||
// 创建访客连接服务端通道
|
// 创建访客连接服务端通道
|
||||||
NettyClientPermeateServerVisitorTransferSocket.buildTransferServer(internalNetworkPermeateServerVisitor,visitorChannel);
|
NettyClientPermeateServerVisitorTransferSocket.buildTransferServer(internalNetworkPermeateServerVisitor,visitorChannel);
|
||||||
log.debug("客户端渗透服务端访客端口连接成功了");
|
log.info("客户端渗透服务端访客端口连接成功了,访客ID:{}", visitorId);
|
||||||
super.channelActive(ctx);
|
super.channelActive(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +63,7 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
|||||||
byte[] bytes = new byte[buf.readableBytes()];
|
byte[] bytes = new byte[buf.readableBytes()];
|
||||||
buf.readBytes(bytes);
|
buf.readBytes(bytes);
|
||||||
// 获取客户端通道,而后进行数据下发
|
// 获取客户端通道,而后进行数据下发
|
||||||
log.debug("【客户端渗透服务端】访客端口成功接收数据:{}", new String(bytes));
|
log.info("【客户端渗透服务端】访客端口成功接收数据:{}", new String(bytes));
|
||||||
|
|
||||||
// 使用访客的通信通道
|
// 使用访客的通信通道
|
||||||
Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort();
|
Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort();
|
||||||
@ -78,14 +76,14 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
|||||||
nettyProxyMsg.setData(bytes);
|
nettyProxyMsg.setData(bytes);
|
||||||
nextChannel.writeAndFlush(nettyProxyMsg);
|
nextChannel.writeAndFlush(nettyProxyMsg);
|
||||||
// 处理访客流量
|
// 处理访客流量
|
||||||
log.debug("【客户端渗透服务端】访客端口成功发送数据了");
|
log.info("【客户端渗透服务端】访客端口成功发送数据了 访客ID:{}", visitorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||||
Channel channel = ctx.channel();
|
Channel channel = ctx.channel();
|
||||||
String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel);
|
String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel);
|
||||||
String clientId = ChannelAttributeKeyUtils.getClientId(channel);
|
log.info("channel inactive:{}", visitorId);
|
||||||
if (StringUtil.isNullOrEmpty(visitorId)) {
|
if (StringUtil.isNullOrEmpty(visitorId)) {
|
||||||
super.channelInactive(ctx);
|
super.channelInactive(ctx);
|
||||||
return;
|
return;
|
||||||
@ -102,7 +100,12 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
|||||||
myMsg.setType(MessageType.REPORT_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE);
|
myMsg.setType(MessageType.REPORT_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE);
|
||||||
myMsg.setVisitorId(visitorId);
|
myMsg.setVisitorId(visitorId);
|
||||||
nextChannel.writeAndFlush(myMsg);
|
nextChannel.writeAndFlush(myMsg);
|
||||||
|
//通信通道
|
||||||
|
nextChannel.close();
|
||||||
}
|
}
|
||||||
|
// 访客通道关闭
|
||||||
|
channel.close();
|
||||||
|
|
||||||
log.warn("【客户端渗透服务端】访客端口断开连接");
|
log.warn("【客户端渗透服务端】访客端口断开连接");
|
||||||
super.channelInactive(ctx);
|
super.channelInactive(ctx);
|
||||||
}
|
}
|
||||||
@ -111,10 +114,10 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
|||||||
public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception {
|
public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception {
|
||||||
|
|
||||||
if (ctx.channel().isWritable()) {
|
if (ctx.channel().isWritable()) {
|
||||||
log.debug("Channel is writable again");
|
log.info("Channel is writable again");
|
||||||
// 恢复之前暂停的操作,如写入数据
|
// 恢复之前暂停的操作,如写入数据
|
||||||
} else {
|
} else {
|
||||||
log.debug("Channel is not writable");
|
log.info("Channel is not writable");
|
||||||
// 暂停写入操作,等待可写状态
|
// 暂停写入操作,等待可写状态
|
||||||
}
|
}
|
||||||
log.info("channelWritabilityChanged!");
|
log.info("channelWritabilityChanged!");
|
||||||
@ -128,7 +131,6 @@ public class NettyClientPermeateServerVisitorHandler extends SimpleChannelInboun
|
|||||||
String clientId = ChannelAttributeKeyUtils.getClientId(channel);
|
String clientId = ChannelAttributeKeyUtils.getClientId(channel);
|
||||||
String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel);
|
String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel);
|
||||||
// 使用通信通道 下发关闭访客
|
// 使用通信通道 下发关闭访客
|
||||||
Channel visitorChannel = NettyCommunicationIdContext.getVisitor(visitorId);
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||||
if (nextChannel != null) {
|
if (nextChannel != null) {
|
||||||
// 下发关闭访客
|
// 下发关闭访客
|
||||||
|
@ -30,7 +30,7 @@ public class NettyServerPermeateClientRealHandler extends SimpleChannelInboundHa
|
|||||||
Integer visitorPort = ChannelAttributeKeyUtils.getVisitorPort(ctx.channel());
|
Integer visitorPort = ChannelAttributeKeyUtils.getVisitorPort(ctx.channel());
|
||||||
String clientId = ChannelAttributeKeyUtils.getClientId(ctx.channel());
|
String clientId = ChannelAttributeKeyUtils.getClientId(ctx.channel());
|
||||||
// 访客通信通道 上报服务端代理完成
|
// 访客通信通道 上报服务端代理完成
|
||||||
Channel visitorChannel = NettyCommunicationIdContext.getVisitor(visitorId);
|
Channel visitor = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||||
NettyProxyMsg returnMessage = new NettyProxyMsg();
|
NettyProxyMsg returnMessage = new NettyProxyMsg();
|
||||||
returnMessage.setType(MessageType.REPORT_CLIENT_TRANSFER);
|
returnMessage.setType(MessageType.REPORT_CLIENT_TRANSFER);
|
||||||
returnMessage.setVisitorId(visitorId);
|
returnMessage.setVisitorId(visitorId);
|
||||||
@ -38,7 +38,7 @@ public class NettyServerPermeateClientRealHandler extends SimpleChannelInboundHa
|
|||||||
returnMessage.setVisitorPort(visitorPort);
|
returnMessage.setVisitorPort(visitorPort);
|
||||||
returnMessage.setData(bytes);
|
returnMessage.setData(bytes);
|
||||||
|
|
||||||
visitorChannel.writeAndFlush(returnMessage);
|
visitor.writeAndFlush(returnMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ public class NettyServerPermeateClientRealHandler extends SimpleChannelInboundHa
|
|||||||
String clientId = ChannelAttributeKeyUtils.getClientId(ctx.channel());
|
String clientId = ChannelAttributeKeyUtils.getClientId(ctx.channel());
|
||||||
String visitorId = ChannelAttributeKeyUtils.getVisitorId(ctx.channel());
|
String visitorId = ChannelAttributeKeyUtils.getVisitorId(ctx.channel());
|
||||||
// 客户端真实通信通道
|
// 客户端真实通信通道
|
||||||
Channel visitor = NettyCommunicationIdContext.getVisitor(visitorId);
|
Channel visitor = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||||
if (visitor != null) {
|
if (visitor != null) {
|
||||||
// 上报关闭这个客户端的访客通道
|
// 上报关闭这个客户端的访客通道
|
||||||
NettyProxyMsg closeVisitorMsg = new NettyProxyMsg();
|
NettyProxyMsg closeVisitorMsg = new NettyProxyMsg();
|
||||||
@ -79,11 +79,12 @@ public class NettyServerPermeateClientRealHandler extends SimpleChannelInboundHa
|
|||||||
|
|
||||||
// 获取访客的传输通道
|
// 获取访客的传输通道
|
||||||
String visitorId = ChannelAttributeKeyUtils.getVisitorId(ctx.channel());
|
String visitorId = ChannelAttributeKeyUtils.getVisitorId(ctx.channel());
|
||||||
|
|
||||||
if(ObjectUtils.isEmpty(visitorId)) {
|
if(ObjectUtils.isEmpty(visitorId)) {
|
||||||
super.channelWritabilityChanged(ctx);
|
super.channelWritabilityChanged(ctx);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Channel visitorCommunicationChannel = NettyCommunicationIdContext.getVisitor(visitorId);
|
Channel visitorCommunicationChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||||
if (visitorCommunicationChannel != null) {
|
if (visitorCommunicationChannel != null) {
|
||||||
log.debug("visitorId:{} transfer AUTO_READ:{} ",visitorId,ctx.channel().isWritable());
|
log.debug("visitorId:{} transfer AUTO_READ:{} ",visitorId,ctx.channel().isWritable());
|
||||||
visitorCommunicationChannel.config().setOption(ChannelOption.AUTO_READ, ctx.channel().isWritable());
|
visitorCommunicationChannel.config().setOption(ChannelOption.AUTO_READ, ctx.channel().isWritable());
|
||||||
|
@ -15,6 +15,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelT
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端连接真实服务
|
* 客户端连接真实服务
|
||||||
@ -131,7 +132,7 @@ public class NettyClientPermeateClientRealSocket {
|
|||||||
// 使用的客户端ID:{}
|
// 使用的客户端ID:{}
|
||||||
log.info("Client ID used: {}", clientId);
|
log.info("Client ID used: {}", clientId);
|
||||||
future.addListener((ChannelFutureListener) futureListener -> {
|
future.addListener((ChannelFutureListener) futureListener -> {
|
||||||
Channel visitorChannel = futureListener.channel();
|
Channel transferChannel = futureListener.channel();
|
||||||
if (futureListener.isSuccess()) {
|
if (futureListener.isSuccess()) {
|
||||||
realChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
realChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
||||||
// 通知服务端访客连接成功
|
// 通知服务端访客连接成功
|
||||||
@ -142,20 +143,30 @@ public class NettyClientPermeateClientRealSocket {
|
|||||||
nettyProxyMsg.setClientTargetPort(clientTargetPort);
|
nettyProxyMsg.setClientTargetPort(clientTargetPort);
|
||||||
nettyProxyMsg.setVisitorPort(visitorPort);
|
nettyProxyMsg.setVisitorPort(visitorPort);
|
||||||
nettyProxyMsg.setType(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL);
|
nettyProxyMsg.setType(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL);
|
||||||
visitorChannel.writeAndFlush(nettyProxyMsg);
|
transferChannel.writeAndFlush(nettyProxyMsg);
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(visitorChannel, realChannel);
|
ChannelAttributeKeyUtils.buildNextChannel(transferChannel, realChannel);
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(realChannel, visitorChannel);
|
ChannelAttributeKeyUtils.buildNextChannel(realChannel, transferChannel);
|
||||||
|
|
||||||
// 绑定客户端真实通信通道
|
// 绑定客户端真实通信通道
|
||||||
NettyCommunicationIdContext.pushVisitor(visitorChannel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(visitorChannel, visitorId);
|
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(visitorChannel, clientId);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.info("无法连接到服务端....");
|
log.info("无法连接到服务端....");
|
||||||
|
transferChannel.eventLoop().schedule(() -> {
|
||||||
|
try {
|
||||||
|
newVisitorConnect2Server(clientId,
|
||||||
|
clientTargetIp,
|
||||||
|
clientTargetPort,
|
||||||
|
visitorPort,
|
||||||
|
visitorId,realChannel, nettyClientProperties, handleChannelTypeAdvancedList);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}, 2, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext;
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelTypeAdapter;
|
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelTypeAdapter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端渗透服务端传输通道
|
* 客户端渗透服务端传输通道
|
||||||
*/
|
*/
|
||||||
@ -75,7 +77,7 @@ public class NettyClientPermeateClientVisitorTransferSocket {
|
|||||||
// 使用的客户端ID:{}
|
// 使用的客户端ID:{}
|
||||||
log.info("Client ID used: {}", clientId);
|
log.info("Client ID used: {}", clientId);
|
||||||
future.addListener((ChannelFutureListener) futureListener -> {
|
future.addListener((ChannelFutureListener) futureListener -> {
|
||||||
Channel channel = futureListener.channel();
|
Channel transferChannel = futureListener.channel();
|
||||||
if (futureListener.isSuccess()) {
|
if (futureListener.isSuccess()) {
|
||||||
|
|
||||||
NettyProxyMsg myMsg = new NettyProxyMsg();
|
NettyProxyMsg myMsg = new NettyProxyMsg();
|
||||||
@ -87,20 +89,26 @@ public class NettyClientPermeateClientVisitorTransferSocket {
|
|||||||
myMsg.setClientTargetPort(targetPort);
|
myMsg.setClientTargetPort(targetPort);
|
||||||
|
|
||||||
myMsg.setVisitorId(visitorId);
|
myMsg.setVisitorId(visitorId);
|
||||||
channel.writeAndFlush(myMsg);
|
transferChannel.writeAndFlush(myMsg);
|
||||||
// 绑定客户端真实通信通道
|
// 绑定客户端真实通信通道
|
||||||
NettyCommunicationIdContext.pushVisitor(channel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(channel, visitorId);
|
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(channel, clientId);
|
|
||||||
// 传输通道打开后自动读取
|
// 传输通道打开后自动读取
|
||||||
Channel visitor = NettyRealIdContext.getReal(visitorId);
|
Channel visitor = NettyRealIdContext.getReal(visitorId);
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(visitor, channel);
|
ChannelAttributeKeyUtils.buildNextChannel(visitor, transferChannel);
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(channel, visitor);
|
ChannelAttributeKeyUtils.buildNextChannel(transferChannel, visitor);
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.info("无法连接到服务端....");
|
log.info("无法连接到服务端....");
|
||||||
|
transferChannel.eventLoop().schedule(() -> {
|
||||||
|
try {
|
||||||
|
buildTransferServer(internalNetworkClientPermeateClientVisitor);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}, 2, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -263,8 +263,8 @@ public class NettyClientPermeateServerVisitorSocket implements PermeateVisitorSo
|
|||||||
internalNetworkPermeateServerVisitor.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList);
|
internalNetworkPermeateServerVisitor.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList);
|
||||||
|
|
||||||
|
|
||||||
NettyClientPermeateServerVisitorFilter visitorFilter = new NettyClientPermeateServerVisitorFilter(internalNetworkPermeateServerVisitor);
|
NettyClientPermeateServerVisitorFilter nettyClientPermeateServerVisitorFilter = new NettyClientPermeateServerVisitorFilter(internalNetworkPermeateServerVisitor);
|
||||||
return new NettyClientPermeateServerVisitorSocket(visitorFilter, clientId, visitorPort);
|
return new NettyClientPermeateServerVisitorSocket(nettyClientPermeateServerVisitorFilter, clientId, visitorPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg;
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelTypeAdapter;
|
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelTypeAdapter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端渗透服务端传输通道
|
* 客户端渗透服务端传输通道
|
||||||
*/
|
*/
|
||||||
@ -21,20 +23,12 @@ import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeK
|
|||||||
public class NettyClientPermeateServerVisitorTransferSocket {
|
public class NettyClientPermeateServerVisitorTransferSocket {
|
||||||
static EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
|
static EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
|
||||||
|
|
||||||
/**
|
|
||||||
* 连接服务端通信通道
|
|
||||||
*/
|
|
||||||
public static void buildTransferServer(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor, Channel visitorChannel) {
|
|
||||||
newTransferConnect2Server(internalNetworkPermeateServerVisitor,visitorChannel);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 连接服务端通信通道
|
* 连接服务端通信通道
|
||||||
* <p>
|
* <p>
|
||||||
* internalNetworkPermeateServerVisitor
|
* internalNetworkPermeateServerVisitor
|
||||||
*/
|
*/
|
||||||
protected static void newTransferConnect2Server(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor, Channel visitorChannel) {
|
public static void buildTransferServer(InternalNetworkPermeateServerVisitor internalNetworkPermeateServerVisitor, Channel visitorChannel) {
|
||||||
|
|
||||||
Bootstrap bootstrap = new Bootstrap();
|
Bootstrap bootstrap = new Bootstrap();
|
||||||
bootstrap.group(eventLoopGroup)
|
bootstrap.group(eventLoopGroup)
|
||||||
@ -63,7 +57,7 @@ public class NettyClientPermeateServerVisitorTransferSocket {
|
|||||||
String targetIp = internalNetworkPermeateServerVisitor.getTargetIp();
|
String targetIp = internalNetworkPermeateServerVisitor.getTargetIp();
|
||||||
Integer targetPort = internalNetworkPermeateServerVisitor.getTargetPort();
|
Integer targetPort = internalNetworkPermeateServerVisitor.getTargetPort();
|
||||||
|
|
||||||
String visitorId = internalNetworkPermeateServerVisitor.getVisitorId();
|
String visitorId = ChannelAttributeKeyUtils.getVisitorId(visitorChannel);
|
||||||
Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort();
|
Integer visitorPort = internalNetworkPermeateServerVisitor.getVisitorPort();
|
||||||
|
|
||||||
// 客户端新建访客通道 连接服务端IP:{},连接服务端端口:{}
|
// 客户端新建访客通道 连接服务端IP:{},连接服务端端口:{}
|
||||||
@ -73,7 +67,7 @@ public class NettyClientPermeateServerVisitorTransferSocket {
|
|||||||
// 使用的客户端ID:{}
|
// 使用的客户端ID:{}
|
||||||
log.info("Client ID used: {}", clientId);
|
log.info("Client ID used: {}", clientId);
|
||||||
future.addListener((ChannelFutureListener) futureListener -> {
|
future.addListener((ChannelFutureListener) futureListener -> {
|
||||||
Channel channel = futureListener.channel();
|
Channel transferChannel = futureListener.channel();
|
||||||
if (futureListener.isSuccess()) {
|
if (futureListener.isSuccess()) {
|
||||||
|
|
||||||
NettyProxyMsg myMsg = new NettyProxyMsg();
|
NettyProxyMsg myMsg = new NettyProxyMsg();
|
||||||
@ -82,18 +76,24 @@ public class NettyClientPermeateServerVisitorTransferSocket {
|
|||||||
myMsg.setVisitorPort(visitorPort);
|
myMsg.setVisitorPort(visitorPort);
|
||||||
myMsg.setClientTargetIp(targetIp);
|
myMsg.setClientTargetIp(targetIp);
|
||||||
myMsg.setClientTargetPort(targetPort);
|
myMsg.setClientTargetPort(targetPort);
|
||||||
|
|
||||||
myMsg.setVisitorId(visitorId);
|
myMsg.setVisitorId(visitorId);
|
||||||
channel.writeAndFlush(myMsg);
|
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(channel, visitorId);
|
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(channel, clientId);
|
|
||||||
// 传输通道打开后自动读取
|
// 传输通道打开后自动读取
|
||||||
|
ChannelAttributeKeyUtils.buildNextChannel(visitorChannel, transferChannel);
|
||||||
|
ChannelAttributeKeyUtils.buildNextChannel(transferChannel, visitorChannel);
|
||||||
|
|
||||||
|
transferChannel.writeAndFlush(myMsg);
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(visitorChannel, channel);
|
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(channel, visitorChannel);
|
|
||||||
} else {
|
} else {
|
||||||
log.info("客户端渗透服务端通信通道中断....");
|
log.info("客户端渗透服务端通信通道中断....");
|
||||||
|
transferChannel.eventLoop().schedule(() -> {
|
||||||
|
try {
|
||||||
|
buildTransferServer(internalNetworkPermeateServerVisitor, visitorChannel);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}, 2, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ public class NettyServerPermeateClientRealSocket {
|
|||||||
|
|
||||||
log.info("访客通过 客户端:【{}】,绑定本地服务,IP:{},端口:{} 新建通道成功", clientId, clientTargetIp, clientTargetPort);
|
log.info("访客通过 客户端:【{}】,绑定本地服务,IP:{},端口:{} 新建通道成功", clientId, clientTargetIp, clientTargetPort);
|
||||||
// 客户端真实通道
|
// 客户端真实通道
|
||||||
NettyRealIdContext.pushReal(realChannel, visitorId);
|
// NettyRealIdContext.pushReal(realChannel, visitorId);
|
||||||
// 绑定访客ID到当前真实通道属性
|
// 绑定访客ID到当前真实通道属性
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(realChannel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(realChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(realChannel, clientId);
|
ChannelAttributeKeyUtils.buildClientId(realChannel, clientId);
|
||||||
@ -84,7 +84,7 @@ public class NettyServerPermeateClientRealSocket {
|
|||||||
|
|
||||||
|
|
||||||
// 新建一个通道处理
|
// 新建一个通道处理
|
||||||
newVisitorConnect2Server(internalNetworkPenetrationRealClient, nettyClientProperties, handleChannelTypeAdvancedList);
|
newVisitorConnect2Server(internalNetworkPenetrationRealClient, nettyClientProperties, handleChannelTypeAdvancedList,realChannel);
|
||||||
|
|
||||||
// 是否等 服务端相应访客通道已经可以自动读写
|
// 是否等 服务端相应访客通道已经可以自动读写
|
||||||
// realChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
// realChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
||||||
@ -132,7 +132,8 @@ public class NettyServerPermeateClientRealSocket {
|
|||||||
*/
|
*/
|
||||||
protected static void newVisitorConnect2Server(InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient,
|
protected static void newVisitorConnect2Server(InternalNetworkPenetrationRealClient internalNetworkPenetrationRealClient,
|
||||||
NettyClientProperties nettyClientProperties,
|
NettyClientProperties nettyClientProperties,
|
||||||
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList) throws InterruptedException {
|
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList,
|
||||||
|
Channel realChannel) throws InterruptedException {
|
||||||
Bootstrap bootstrap = new Bootstrap();
|
Bootstrap bootstrap = new Bootstrap();
|
||||||
bootstrap.group(eventLoopGroup)
|
bootstrap.group(eventLoopGroup)
|
||||||
.channel(NioSocketChannel.class)
|
.channel(NioSocketChannel.class)
|
||||||
@ -171,7 +172,7 @@ public class NettyServerPermeateClientRealSocket {
|
|||||||
// 使用的客户端ID:{}
|
// 使用的客户端ID:{}
|
||||||
log.info("Client ID used: {}" , visitorClientId);
|
log.info("Client ID used: {}" , visitorClientId);
|
||||||
future.addListener((ChannelFutureListener) futureListener -> {
|
future.addListener((ChannelFutureListener) futureListener -> {
|
||||||
Channel channel = futureListener.channel();
|
Channel transferChannel = futureListener.channel();
|
||||||
if (futureListener.isSuccess()) {
|
if (futureListener.isSuccess()) {
|
||||||
|
|
||||||
NettyProxyMsg myMsg = new NettyProxyMsg();
|
NettyProxyMsg myMsg = new NettyProxyMsg();
|
||||||
@ -182,17 +183,17 @@ public class NettyServerPermeateClientRealSocket {
|
|||||||
myMsg.setClientTargetPort(clientTargetPort);
|
myMsg.setClientTargetPort(clientTargetPort);
|
||||||
|
|
||||||
myMsg.setVisitorId(visitorId);
|
myMsg.setVisitorId(visitorId);
|
||||||
channel.writeAndFlush(myMsg);
|
transferChannel.writeAndFlush(myMsg);
|
||||||
// 绑定客户端真实通信通道
|
// 绑定客户端真实通信通道
|
||||||
NettyCommunicationIdContext.pushVisitor(channel, visitorId);
|
NettyCommunicationIdContext.pushVisitor(transferChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(channel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(channel, visitorClientId);
|
ChannelAttributeKeyUtils.buildClientId(transferChannel, visitorClientId);
|
||||||
// 客户端真实通道自动读写打开
|
// 客户端真实通道自动读写打开
|
||||||
Channel visitor = NettyRealIdContext.getReal(visitorId);
|
|
||||||
visitor.config().setOption(ChannelOption.AUTO_READ, true);
|
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(visitor, channel);
|
realChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(channel, visitor);
|
|
||||||
|
ChannelAttributeKeyUtils.buildNextChannel(realChannel, transferChannel);
|
||||||
|
ChannelAttributeKeyUtils.buildNextChannel(transferChannel, realChannel);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -200,9 +201,9 @@ public class NettyServerPermeateClientRealSocket {
|
|||||||
} else {
|
} else {
|
||||||
log.info("每隔2s重连....");
|
log.info("每隔2s重连....");
|
||||||
// 离线
|
// 离线
|
||||||
channel.eventLoop().schedule(() -> {
|
transferChannel.eventLoop().schedule(() -> {
|
||||||
try {
|
try {
|
||||||
newVisitorConnect2Server(internalNetworkPenetrationRealClient, nettyClientProperties, handleChannelTypeAdvancedList);
|
newVisitorConnect2Server(internalNetworkPenetrationRealClient, nettyClientProperties, handleChannelTypeAdvancedList,realChannel);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@ package org.framework.lazy.cloud.network.heartbeat.common;
|
|||||||
|
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelHeartbeatTypeAdvanced;
|
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.client.*;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.*;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.*;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
||||||
|
|
||||||
@ -52,7 +54,7 @@ public class MessageType {
|
|||||||
* 上报 客户端数据传输(内网穿透数据回传)
|
* 上报 客户端数据传输(内网穿透数据回传)
|
||||||
*
|
*
|
||||||
* @see MessageTypeEnums#REPORT_CLIENT_TRANSFER
|
* @see MessageTypeEnums#REPORT_CLIENT_TRANSFER
|
||||||
* @see AbstractHandleReportHandleChannelTransferTypeAdvanced
|
* @see AbstractHandleReportServicePermeateClientTransferTypeAdvanced
|
||||||
*/
|
*/
|
||||||
public static final byte REPORT_CLIENT_TRANSFER = 0X05;
|
public static final byte REPORT_CLIENT_TRANSFER = 0X05;
|
||||||
|
|
||||||
@ -61,14 +63,14 @@ public class MessageType {
|
|||||||
* 上报 客户端创建需要代理的真实端口成功
|
* 上报 客户端创建需要代理的真实端口成功
|
||||||
*
|
*
|
||||||
* @see MessageTypeEnums#REPORT_SINGLE_CLIENT_REAL_CONNECT
|
* @see MessageTypeEnums#REPORT_SINGLE_CLIENT_REAL_CONNECT
|
||||||
* @see AbstractHandleReportSingleClientRealConnectTypeAdvanced
|
* @see AbstractHandleReportServicePermeateClientRealConnectTypeAdvanced
|
||||||
*/
|
*/
|
||||||
public static final byte REPORT_SINGLE_CLIENT_REAL_CONNECT = 0X06;
|
public static final byte REPORT_SINGLE_CLIENT_REAL_CONNECT = 0X06;
|
||||||
/**
|
/**
|
||||||
* 上报 客户端关闭一个访客通道
|
* 上报 客户端关闭一个访客通道
|
||||||
*
|
*
|
||||||
* @see MessageTypeEnums#REPORT_SINGLE_CLIENT_CLOSE_VISITOR
|
* @see MessageTypeEnums#REPORT_SINGLE_CLIENT_CLOSE_VISITOR
|
||||||
* @see AbstractHandleReportSingleClientCloseVisitorTypeAdvanced
|
* @see AbstractHandleReportServicePermeateClientCloseVisitorTypeAdvanced
|
||||||
*/
|
*/
|
||||||
public static final byte REPORT_SINGLE_CLIENT_CLOSE_VISITOR = 0X08;
|
public static final byte REPORT_SINGLE_CLIENT_CLOSE_VISITOR = 0X08;
|
||||||
|
|
||||||
@ -83,7 +85,7 @@ public class MessageType {
|
|||||||
* 服务端通道 is active
|
* 服务端通道 is active
|
||||||
*
|
*
|
||||||
* @see MessageTypeEnums#SERVER_CHANNEL_ACTIVE
|
* @see MessageTypeEnums#SERVER_CHANNEL_ACTIVE
|
||||||
* @see AbstractHandleServerChannelActiveTypeAdvanced
|
* @see AbstractHandleReportServerChannelActiveTypeAdvanced
|
||||||
*/
|
*/
|
||||||
public static final byte SERVER_CHANNEL_ACTIVE = 0X10;
|
public static final byte SERVER_CHANNEL_ACTIVE = 0X10;
|
||||||
|
|
||||||
@ -207,6 +209,9 @@ public class MessageType {
|
|||||||
*/
|
*/
|
||||||
public static final byte REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_CLOSE = 0X25;
|
public static final byte REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_CLOSE = 0X25;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下发 客户端接收连接成功通知
|
* 下发 客户端接收连接成功通知
|
||||||
*
|
*
|
||||||
@ -240,14 +245,14 @@ public class MessageType {
|
|||||||
* 下发 客户端数据传输(内网穿透数据发送)
|
* 下发 客户端数据传输(内网穿透数据发送)
|
||||||
*
|
*
|
||||||
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_TRANSFER
|
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_TRANSFER
|
||||||
* @see AbstractHandleDistributeChannelTransferTypeAdvanced
|
* @see AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced
|
||||||
*/
|
*/
|
||||||
public static final byte DISTRIBUTE_CLIENT_TRANSFER = -0X05;
|
public static final byte DISTRIBUTE_CLIENT_TRANSFER = -0X05;
|
||||||
/**
|
/**
|
||||||
* 下发 客户端创建需要代理的真实端口
|
* 下发 客户端创建需要代理的真实端口
|
||||||
*
|
*
|
||||||
* @see MessageTypeEnums#DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT
|
* @see MessageTypeEnums#DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT
|
||||||
* @see AbstractHandleDistributeSingleClientRealConnectTypeAdvanced
|
* @see AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced
|
||||||
*/
|
*/
|
||||||
public static final byte DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT = -0X06;
|
public static final byte DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT = -0X06;
|
||||||
|
|
||||||
@ -381,7 +386,7 @@ public class MessageType {
|
|||||||
* 下发客户端渗透客户端数据传输响应
|
* 下发客户端渗透客户端数据传输响应
|
||||||
*
|
*
|
||||||
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE
|
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE
|
||||||
* @see AbstractHandleDistributeClientTransferClientResponseTypeAdvanced
|
* @see AbstractHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced
|
||||||
* @see MessageType#REPORT_CLIENT_TRANSFER_CLIENT_RESPONSE
|
* @see MessageType#REPORT_CLIENT_TRANSFER_CLIENT_RESPONSE
|
||||||
*/
|
*/
|
||||||
public static final byte DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE = -0X24;
|
public static final byte DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE = -0X24;
|
||||||
|
@ -10,7 +10,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
|||||||
* 下发 客户端 创建真实连接
|
* 下发 客户端 创建真实连接
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public abstract class AbstractHandleDistributeSingleClientRealConnectTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
public abstract class AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否支持当前类型
|
* 是否支持当前类型
|
@ -12,7 +12,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
|||||||
*
|
*
|
||||||
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE
|
* @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractHandleDistributeClientTransferClientResponseTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
public abstract class AbstractHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -11,7 +11,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
|||||||
* 客户端处理服务端下发数据
|
* 客户端处理服务端下发数据
|
||||||
* DISTRIBUTE_CLIENT_TRANSFER
|
* DISTRIBUTE_CLIENT_TRANSFER
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractHandleDistributeChannelTransferTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
public abstract class AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -11,7 +11,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
|||||||
* 服务端通道 is active
|
* 服务端通道 is active
|
||||||
* SERVER_CHANNEL_ACTIVE
|
* SERVER_CHANNEL_ACTIVE
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractHandleServerChannelActiveTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
public abstract class AbstractHandleReportServerChannelActiveTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -11,7 +11,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
|||||||
* 服务端处理客户端 关闭一个访客
|
* 服务端处理客户端 关闭一个访客
|
||||||
* REPORT_SINGLE_CLIENT_CLOSE_VISITOR
|
* REPORT_SINGLE_CLIENT_CLOSE_VISITOR
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractHandleReportSingleClientCloseVisitorTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
public abstract class AbstractHandleReportServicePermeateClientCloseVisitorTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -11,7 +11,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
|||||||
* 服务端处理客户端绑定真实服务成功
|
* 服务端处理客户端绑定真实服务成功
|
||||||
* REPORT_SINGLE_CLIENT_REAL_CONNECT
|
* REPORT_SINGLE_CLIENT_REAL_CONNECT
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractHandleReportSingleClientRealConnectTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
public abstract class AbstractHandleReportServicePermeateClientRealConnectTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -11,7 +11,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.enums.MessageTypeEnums;
|
|||||||
* 服务端处理客户端上报数据
|
* 服务端处理客户端上报数据
|
||||||
* REPORT_CLIENT_STAGING_CLOSED
|
* REPORT_CLIENT_STAGING_CLOSED
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractHandleReportHandleChannelTransferTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
public abstract class AbstractHandleReportServicePermeateClientTransferTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -5,6 +5,8 @@ import lombok.Getter;
|
|||||||
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.advanced.AbstractHandleChannelHeartbeatTypeAdvanced;
|
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.client.*;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.*;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,16 +36,16 @@ public enum MessageTypeEnums {
|
|||||||
*/
|
*/
|
||||||
REPORT_CLIENT_STAGING_CLOSED(MessageType.REPORT_CLIENT_STAGING_CLOSED, "上报 客户端暂存关闭"),
|
REPORT_CLIENT_STAGING_CLOSED(MessageType.REPORT_CLIENT_STAGING_CLOSED, "上报 客户端暂存关闭"),
|
||||||
/**
|
/**
|
||||||
* @see AbstractHandleReportHandleChannelTransferTypeAdvanced
|
* @see AbstractHandleReportServicePermeateClientTransferTypeAdvanced
|
||||||
*/
|
*/
|
||||||
|
|
||||||
REPORT_CLIENT_TRANSFER(MessageType.REPORT_CLIENT_TRANSFER, "上报 客户端数据传输(内网穿透数据回传)"),
|
REPORT_CLIENT_TRANSFER(MessageType.REPORT_CLIENT_TRANSFER, "上报 客户端数据传输(内网穿透数据回传)"),
|
||||||
/**
|
/**
|
||||||
* @see AbstractHandleReportSingleClientRealConnectTypeAdvanced
|
* @see AbstractHandleReportServicePermeateClientRealConnectTypeAdvanced
|
||||||
*/
|
*/
|
||||||
REPORT_SINGLE_CLIENT_REAL_CONNECT(MessageType.REPORT_SINGLE_CLIENT_REAL_CONNECT, "上报 客户端创建需要代理的真实端口成功"),
|
REPORT_SINGLE_CLIENT_REAL_CONNECT(MessageType.REPORT_SINGLE_CLIENT_REAL_CONNECT, "上报 客户端创建需要代理的真实端口成功"),
|
||||||
/**
|
/**
|
||||||
* @see AbstractHandleReportSingleClientCloseVisitorTypeAdvanced
|
* @see AbstractHandleReportServicePermeateClientCloseVisitorTypeAdvanced
|
||||||
*/
|
*/
|
||||||
REPORT_SINGLE_CLIENT_CLOSE_VISITOR(MessageType.REPORT_SINGLE_CLIENT_CLOSE_VISITOR, "上报 客户端关闭一个访客通道"),
|
REPORT_SINGLE_CLIENT_CLOSE_VISITOR(MessageType.REPORT_SINGLE_CLIENT_CLOSE_VISITOR, "上报 客户端关闭一个访客通道"),
|
||||||
/**
|
/**
|
||||||
@ -51,7 +53,7 @@ public enum MessageTypeEnums {
|
|||||||
*/
|
*/
|
||||||
REPORT_SINGLE_CLIENT_MESSAGE(MessageType.REPORT_SINGLE_CLIENT_MESSAGE, "上报 客户端消息到另一个客户端"),
|
REPORT_SINGLE_CLIENT_MESSAGE(MessageType.REPORT_SINGLE_CLIENT_MESSAGE, "上报 客户端消息到另一个客户端"),
|
||||||
/**
|
/**
|
||||||
* @see AbstractHandleServerChannelActiveTypeAdvanced
|
* @see AbstractHandleReportServerChannelActiveTypeAdvanced
|
||||||
*/
|
*/
|
||||||
SERVER_CHANNEL_ACTIVE(MessageType.SERVER_CHANNEL_ACTIVE, "服务端通道 is active"),
|
SERVER_CHANNEL_ACTIVE(MessageType.SERVER_CHANNEL_ACTIVE, "服务端通道 is active"),
|
||||||
/**
|
/**
|
||||||
@ -140,11 +142,11 @@ public enum MessageTypeEnums {
|
|||||||
*/
|
*/
|
||||||
DISTRIBUTE_CLIENT_STAGING_CLOSED_NOTIFICATION(MessageType.DISTRIBUTE_CLIENT_STAGING_CLOSED_NOTIFICATION, "下发 客户端暂存关闭通知"),
|
DISTRIBUTE_CLIENT_STAGING_CLOSED_NOTIFICATION(MessageType.DISTRIBUTE_CLIENT_STAGING_CLOSED_NOTIFICATION, "下发 客户端暂存关闭通知"),
|
||||||
/**
|
/**
|
||||||
* @see AbstractHandleDistributeChannelTransferTypeAdvanced
|
* @see AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced
|
||||||
*/
|
*/
|
||||||
DISTRIBUTE_CLIENT_TRANSFER(MessageType.DISTRIBUTE_CLIENT_TRANSFER, "下发 客户端数据传输(内网穿透数据发送)"),
|
DISTRIBUTE_CLIENT_TRANSFER(MessageType.DISTRIBUTE_CLIENT_TRANSFER, "下发 客户端数据传输(内网穿透数据发送)"),
|
||||||
/**
|
/**
|
||||||
* @see AbstractHandleDistributeSingleClientRealConnectTypeAdvanced
|
* @see AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced
|
||||||
*/
|
*/
|
||||||
DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT(MessageType.DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT, "下发 客户端创建需要代理的真实端口"),
|
DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT(MessageType.DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT, "下发 客户端创建需要代理的真实端口"),
|
||||||
/**
|
/**
|
||||||
@ -216,7 +218,7 @@ public enum MessageTypeEnums {
|
|||||||
DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST, "下发客户端渗透客户端数据传输"),
|
DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST, "下发客户端渗透客户端数据传输"),
|
||||||
/**
|
/**
|
||||||
* 下发客户端渗透客户端数据传输
|
* 下发客户端渗透客户端数据传输
|
||||||
* @see AbstractHandleDistributeClientTransferClientResponseTypeAdvanced
|
* @see AbstractHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced
|
||||||
*/
|
*/
|
||||||
DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE, "下发客户端渗透客户端数据传输"),
|
DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE, "下发客户端渗透客户端数据传输"),
|
||||||
/**
|
/**
|
||||||
|
@ -26,12 +26,12 @@ public class HeartbeatServerConfiguration {
|
|||||||
/**
|
/**
|
||||||
* 处理 服务端处理客户端数据传输
|
* 处理 服务端处理客户端数据传输
|
||||||
*
|
*
|
||||||
* @return ServerHandleReportHandleChannelTransferTypeAdvanced
|
* @return ServerHandleReportServicePermeateClientTransferTypeAdvanced
|
||||||
*/
|
*/
|
||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@Bean
|
@Bean
|
||||||
public ServerHandleReportHandleChannelTransferTypeAdvanced serverReportChannelTransferTypeAdvanced(ChannelFlowAdapter channelFlowAdapter) {
|
public ServerHandleReportServicePermeateClientTransferTypeAdvanced serverReportChannelTransferTypeAdvanced(ChannelFlowAdapter channelFlowAdapter) {
|
||||||
return new ServerHandleReportHandleChannelTransferTypeAdvanced(channelFlowAdapter);
|
return new ServerHandleReportServicePermeateClientTransferTypeAdvanced(channelFlowAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@ -69,14 +69,14 @@ public class HeartbeatServerConfiguration {
|
|||||||
|
|
||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@Bean
|
@Bean
|
||||||
public ServerHandleReportSingleClientCloseVisitorTypeAdvanced serverReportSingleClientCloseVisitorTypeAdvanced() {
|
public ServerHandleReportServicePermeateClientCloseVisitorTypeAdvanced serverReportSingleClientCloseVisitorTypeAdvanced() {
|
||||||
return new ServerHandleReportSingleClientCloseVisitorTypeAdvanced();
|
return new ServerHandleReportServicePermeateClientCloseVisitorTypeAdvanced();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@Bean
|
@Bean
|
||||||
public ServerHandleReportSingleClientRealConnectTypeAdvanced serverReportSingleClientRealConnectTypeAdvanced() {
|
public ServerHandleReportServicePermeateClientRealConnectTypeAdvanced serverReportSingleClientRealConnectTypeAdvanced() {
|
||||||
return new ServerHandleReportSingleClientRealConnectTypeAdvanced();
|
return new ServerHandleReportServicePermeateClientRealConnectTypeAdvanced();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
|
@ -5,7 +5,6 @@ import io.netty.channel.Channel;
|
|||||||
import io.netty.channel.ChannelFuture;
|
import io.netty.channel.ChannelFuture;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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.NettyRealIdContext;
|
|
||||||
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.common.advanced.server.AbstractHandleReportClientPermeateServerTransferTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportClientPermeateServerTransferTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
||||||
@ -37,10 +36,10 @@ public class ServerHandleReportClientPermeateServerTransferTypeAdvanced extends
|
|||||||
String clientId = new String(msg.getClientId());
|
String clientId = new String(msg.getClientId());
|
||||||
Integer visitorPort = Integer.valueOf(new String(msg.getVisitorPort()));
|
Integer visitorPort = Integer.valueOf(new String(msg.getVisitorPort()));
|
||||||
byte[] visitorId = msg.getVisitorId();
|
byte[] visitorId = msg.getVisitorId();
|
||||||
// log.info("访客ID:【{}】 访客端口:[{}] 接收到客户端:[{}]", new String(visitorId), visitorPort, clientId);
|
log.info("【客户端渗透服务端】访客ID:【{}】 访客端口:[{}] 接收到客户端:[{}] 接收服务端数据大小:[{}]", new String(visitorId), visitorPort, clientId, msg.getData().length);
|
||||||
// log.debug("访客ID:【{}】接收到客户端:[{}] 返回数据大小:[{}] 内网穿透返回的数据:[{}]", new String(visitorId), clientId, msg.getData().length, new String(msg.getData()));
|
log.debug("【客户端渗透服务端】访客ID:【{}】接收到客户端:[{}] 接收服务端数据大小:[{}] 接收服务端数据:[{}]", new String(visitorId), clientId, msg.getData().length, new String(msg.getData()));
|
||||||
// 将数据转发访客通道
|
// 将数据转发访客通道
|
||||||
Channel visitor = NettyRealIdContext.getReal(visitorId);
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||||
if (nextChannel != null) {
|
if (nextChannel != null) {
|
||||||
ByteBuf buf = nextChannel.config().getAllocator().buffer(msg.getData().length);
|
ByteBuf buf = nextChannel.config().getAllocator().buffer(msg.getData().length);
|
||||||
@ -58,6 +57,6 @@ public class ServerHandleReportClientPermeateServerTransferTypeAdvanced extends
|
|||||||
.build();
|
.build();
|
||||||
channelFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
channelFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
||||||
}
|
}
|
||||||
log.debug("访客ID:【{}】接收到客户端:[{}] 发送真实数据成功", new String(visitorId), clientId);
|
log.debug("客户端渗透服务端】访客ID:【{}】接收到客户端:[{}] 传输真实数据成功", new String(visitorId), clientId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,11 +14,11 @@ public class ServerHandleReportClientTransferServerPermeateChannelConnectionSucc
|
|||||||
/**
|
/**
|
||||||
* 处理当前数据
|
* 处理当前数据
|
||||||
*
|
*
|
||||||
* @param channel 当前通道
|
* @param transferChannel 当前通道
|
||||||
* @param nettyProxyMsg 通道数据
|
* @param nettyProxyMsg 通道数据
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) {
|
protected void doHandler(Channel transferChannel, NettyProxyMsg nettyProxyMsg) {
|
||||||
// 创建目标地址连接
|
// 创建目标地址连接
|
||||||
byte[] msgVisitorId = nettyProxyMsg.getVisitorId();
|
byte[] msgVisitorId = nettyProxyMsg.getVisitorId();
|
||||||
byte[] msgVisitorPort = nettyProxyMsg.getVisitorPort();
|
byte[] msgVisitorPort = nettyProxyMsg.getVisitorPort();
|
||||||
@ -28,7 +28,7 @@ public class ServerHandleReportClientTransferServerPermeateChannelConnectionSucc
|
|||||||
Integer.parseInt(new String(msgVisitorPort)),
|
Integer.parseInt(new String(msgVisitorPort)),
|
||||||
new String(msgClientTargetIp),
|
new String(msgClientTargetIp),
|
||||||
Integer.parseInt(new String(msgClientTargetPort)),
|
Integer.parseInt(new String(msgClientTargetPort)),
|
||||||
channel
|
transferChannel
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,14 +6,14 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext;
|
||||||
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.NettyRealIdContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportSingleClientCloseVisitorTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportServicePermeateClientCloseVisitorTypeAdvanced;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务端处理客户端 关闭一个访客
|
* 服务端处理客户端 关闭一个访客
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class ServerHandleReportSingleClientCloseVisitorTypeAdvanced extends AbstractHandleReportSingleClientCloseVisitorTypeAdvanced<NettyProxyMsg> {
|
public class ServerHandleReportServicePermeateClientCloseVisitorTypeAdvanced extends AbstractHandleReportServicePermeateClientCloseVisitorTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyCommunicationIdContext;
|
||||||
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.NettyRealIdContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportSingleClientRealConnectTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportServicePermeateClientRealConnectTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,16 +15,16 @@ import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeK
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class ServerHandleReportSingleClientRealConnectTypeAdvanced extends AbstractHandleReportSingleClientRealConnectTypeAdvanced<NettyProxyMsg> {
|
public class ServerHandleReportServicePermeateClientRealConnectTypeAdvanced extends AbstractHandleReportServicePermeateClientRealConnectTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理当前数据
|
* 处理当前数据
|
||||||
*
|
*
|
||||||
* @param channel 当前通道
|
* @param transferChannel 当前通道
|
||||||
* @param nettyProxyMsg 通道数据
|
* @param nettyProxyMsg 通道数据
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void doHandler(Channel channel, NettyProxyMsg nettyProxyMsg) {
|
protected void doHandler(Channel transferChannel, NettyProxyMsg nettyProxyMsg) {
|
||||||
// 客户端绑定端口成功
|
// 客户端绑定端口成功
|
||||||
byte[] clientId = nettyProxyMsg.getClientId();
|
byte[] clientId = nettyProxyMsg.getClientId();
|
||||||
byte[] clientTargetIp = nettyProxyMsg.getClientTargetIp();
|
byte[] clientTargetIp = nettyProxyMsg.getClientTargetIp();
|
||||||
@ -33,16 +33,16 @@ public class ServerHandleReportSingleClientRealConnectTypeAdvanced extends Abstr
|
|||||||
byte[] visitorId = nettyProxyMsg.getVisitorId();
|
byte[] visitorId = nettyProxyMsg.getVisitorId();
|
||||||
log.info("客户端:{},绑定真实服务ip:{},port:{},成功", new String(clientId), new String(clientTargetIp), new String(clientTargetPort));
|
log.info("客户端:{},绑定真实服务ip:{},port:{},成功", new String(clientId), new String(clientTargetIp), new String(clientTargetPort));
|
||||||
// 绑定服务端访客通信通道
|
// 绑定服务端访客通信通道
|
||||||
NettyCommunicationIdContext.pushVisitor(channel, new String(visitorId));
|
NettyCommunicationIdContext.pushVisitor(transferChannel, new String(visitorId));
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(channel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(channel, clientId);
|
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorPort(channel, Integer.valueOf(new String(visitorPort)));
|
ChannelAttributeKeyUtils.buildVisitorPort(transferChannel, Integer.valueOf(new String(visitorPort)));
|
||||||
// 访客通道开启自动读取
|
// 访客通道开启自动读取
|
||||||
Channel visitorRealChannel = NettyRealIdContext.getReal(new String(visitorId));
|
Channel visitorRealChannel = NettyRealIdContext.getReal(visitorId);
|
||||||
visitorRealChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
visitorRealChannel.config().setOption(ChannelOption.AUTO_READ, true);
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(channel, visitorRealChannel);
|
ChannelAttributeKeyUtils.buildNextChannel(transferChannel, visitorRealChannel);
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(visitorRealChannel, channel);
|
ChannelAttributeKeyUtils.buildNextChannel(visitorRealChannel, transferChannel);
|
||||||
|
|
||||||
// 或许此处还应该通知服务端 这个访客绑定的客户端真实通道打开
|
// 或许此处还应该通知服务端 这个访客绑定的客户端真实通道打开
|
||||||
|
|
@ -8,14 +8,12 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
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.NettyRealIdContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyRealIdContext;
|
||||||
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.common.advanced.server.AbstractHandleReportHandleChannelTransferTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportServicePermeateClientTransferTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
||||||
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.netty.flow.ServerChannelFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.ServerChannelFlow;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务端处理客户端数据传输
|
* 服务端处理客户端数据传输
|
||||||
@ -23,11 +21,11 @@ import java.nio.charset.StandardCharsets;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class ServerHandleReportHandleChannelTransferTypeAdvanced extends AbstractHandleReportHandleChannelTransferTypeAdvanced<NettyProxyMsg> {
|
public class ServerHandleReportServicePermeateClientTransferTypeAdvanced extends AbstractHandleReportServicePermeateClientTransferTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
private final ChannelFlowAdapter channelFlowAdapter;
|
private final ChannelFlowAdapter channelFlowAdapter;
|
||||||
|
|
||||||
public ServerHandleReportHandleChannelTransferTypeAdvanced(ChannelFlowAdapter channelFlowAdapter) {
|
public ServerHandleReportServicePermeateClientTransferTypeAdvanced(ChannelFlowAdapter channelFlowAdapter) {
|
||||||
this.channelFlowAdapter = channelFlowAdapter;
|
this.channelFlowAdapter = channelFlowAdapter;
|
||||||
}
|
}
|
||||||
|
|
@ -45,14 +45,6 @@ public class NettyClientPermeateServerRealHandler extends SimpleChannelInboundHa
|
|||||||
|
|
||||||
nextChannel.writeAndFlush(nettyMsg);
|
nextChannel.writeAndFlush(nettyMsg);
|
||||||
// 记录出口数据
|
// 记录出口数据
|
||||||
// ServerChannelFlow serverChannelFlow = ServerChannelFlow
|
|
||||||
// .builder()
|
|
||||||
// .channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
|
||||||
// .port(visitorPort)
|
|
||||||
// .clientId(clientId)
|
|
||||||
// .flow(msg.getData().length)
|
|
||||||
// .build();
|
|
||||||
// channelFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -62,8 +54,11 @@ public class NettyClientPermeateServerRealHandler extends SimpleChannelInboundHa
|
|||||||
// 客户端真实通信通道
|
// 客户端真实通信通道
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||||
if (nextChannel != null) {
|
if (nextChannel != null) {
|
||||||
// 上报关闭这个客户端的访客通道
|
log.info("【客户端渗透服务端】服务端真实连接断开");
|
||||||
nextChannel.close();
|
// 下发关闭这个客户端的访客通道
|
||||||
|
NettyProxyMsg closeVisitorMsg = new NettyProxyMsg();
|
||||||
|
closeVisitorMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE);
|
||||||
|
nextChannel.writeAndFlush(closeVisitorMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
super.channelInactive(ctx);
|
super.channelInactive(ctx);
|
||||||
@ -71,12 +66,13 @@ public class NettyClientPermeateServerRealHandler extends SimpleChannelInboundHa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception {
|
public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception {
|
||||||
|
log.info("channelWritabilityChanged");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
||||||
|
log.info("exceptionCaught:{}", cause.getMessage());
|
||||||
super.exceptionCaught(ctx, cause);
|
super.exceptionCaught(ctx, cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -96,7 +96,6 @@ public class NettyServerPermeateClientVisitorHandler extends SimpleChannelInboun
|
|||||||
log.debug("【服务端】访客端口成功接收数据:{}", new String(bytes));
|
log.debug("【服务端】访客端口成功接收数据:{}", new String(bytes));
|
||||||
|
|
||||||
// 使用访客的通信通道
|
// 使用访客的通信通道
|
||||||
Channel visitorCommunicationChannel = NettyCommunicationIdContext.getVisitor(visitorId);
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(visitorChannel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(visitorChannel);
|
||||||
// 绑定数据流量
|
// 绑定数据流量
|
||||||
ChannelAttributeKeyUtils.buildInFlow(nextChannel, bytes.length);
|
ChannelAttributeKeyUtils.buildInFlow(nextChannel, bytes.length);
|
||||||
@ -159,7 +158,6 @@ public class NettyServerPermeateClientVisitorHandler extends SimpleChannelInboun
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Channel visitorCommunicationChannel = NettyCommunicationIdContext.getVisitor(visitorId);
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||||
if (nextChannel != null) {
|
if (nextChannel != null) {
|
||||||
log.debug("visitorId:{} transfer AUTO_READ:{} ",visitorId,ctx.channel().isWritable());
|
log.debug("visitorId:{} transfer AUTO_READ:{} ",visitorId,ctx.channel().isWritable());
|
||||||
@ -193,7 +191,6 @@ public class NettyServerPermeateClientVisitorHandler extends SimpleChannelInboun
|
|||||||
String clientId = ChannelAttributeKeyUtils.getClientId(channel);
|
String clientId = ChannelAttributeKeyUtils.getClientId(channel);
|
||||||
String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel);
|
String visitorId = ChannelAttributeKeyUtils.getVisitorId(channel);
|
||||||
// 使用通信通道 下发关闭访客
|
// 使用通信通道 下发关闭访客
|
||||||
Channel visitorChannel = NettyCommunicationIdContext.getVisitor(visitorId);
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(ctx.channel());
|
||||||
if (nextChannel != null) {
|
if (nextChannel != null) {
|
||||||
// 下发关闭访客
|
// 下发关闭访客
|
||||||
|
@ -6,12 +6,12 @@ import io.netty.channel.*;
|
|||||||
import io.netty.channel.nio.NioEventLoopGroup;
|
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.common.InternalNetworkPermeateRealServer;
|
|
||||||
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.NettyProxyMsg;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg;
|
||||||
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.netty.filter.ClientPermeateServerRealFilter;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.ClientPermeateServerRealFilter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.PermeateClientRealFilter;
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端渗透服务端 连接真实通道
|
* 客户端渗透服务端 连接真实通道
|
||||||
@ -25,7 +25,7 @@ public class NettyClientPermeateServerConnectRealSocket {
|
|||||||
* 连接真实服务
|
* 连接真实服务
|
||||||
*/
|
*/
|
||||||
public static void buildNewRealServer(
|
public static void buildNewRealServer(
|
||||||
String visitorId,int visitorPort,String targetIp,int targetPort, Channel visitorChannel) {
|
String visitorId, int visitorPort, String targetIp, int targetPort, Channel transferChannel) {
|
||||||
try {
|
try {
|
||||||
Bootstrap bootstrap = new Bootstrap();
|
Bootstrap bootstrap = new Bootstrap();
|
||||||
bootstrap.group(eventLoopGroup).channel(NioSocketChannel.class)
|
bootstrap.group(eventLoopGroup).channel(NioSocketChannel.class)
|
||||||
@ -54,8 +54,8 @@ public class NettyClientPermeateServerConnectRealSocket {
|
|||||||
log.info("服务端内网渗透通过,绑定本地服务,IP:{},端口:{} channelID:{} 新建通道成功", targetIp, targetPort,realChannel.id().asLongText());
|
log.info("服务端内网渗透通过,绑定本地服务,IP:{},端口:{} channelID:{} 新建通道成功", targetIp, targetPort,realChannel.id().asLongText());
|
||||||
ChannelAttributeKeyUtils.buildVisitorPort(realChannel, visitorPort);
|
ChannelAttributeKeyUtils.buildVisitorPort(realChannel, visitorPort);
|
||||||
// 缓存当前端口对应的通道、通道池
|
// 缓存当前端口对应的通道、通道池
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(realChannel, visitorChannel);
|
ChannelAttributeKeyUtils.buildNextChannel(realChannel, transferChannel);
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(visitorChannel, realChannel);
|
ChannelAttributeKeyUtils.buildNextChannel(transferChannel, realChannel);
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(realChannel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(realChannel, visitorId);
|
||||||
|
|
||||||
@ -66,15 +66,14 @@ public class NettyClientPermeateServerConnectRealSocket {
|
|||||||
myMsg.setClientTargetIp(targetIp);
|
myMsg.setClientTargetIp(targetIp);
|
||||||
myMsg.setClientTargetPort(targetPort);
|
myMsg.setClientTargetPort(targetPort);
|
||||||
|
|
||||||
myMsg.setVisitorId(visitorId);
|
|
||||||
|
|
||||||
visitorChannel.writeAndFlush(myMsg);
|
transferChannel.writeAndFlush(myMsg);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.error("服务端内网渗透 无法连接当前网络内的目标IP:【{}】,目标端口:【{}】", targetIp, targetPort);
|
log.error("服务端内网渗透 无法连接当前网络内的目标IP:【{}】,目标端口:【{}】", targetIp, targetPort);
|
||||||
// future.channel().eventLoop().schedule(() -> {
|
channelFuture.channel().eventLoop().schedule(() -> {
|
||||||
// buildNewRealServer(internalNetworkPermeateRealServer);
|
buildNewRealServer(visitorId, visitorPort, targetIp, targetPort, transferChannel);
|
||||||
// }, 2, TimeUnit.SECONDS);
|
}, 2, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeate
|
|||||||
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.netty.filter.PermeateClientRealFilter;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.PermeateClientRealFilter;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务端渗透服务端 连接真实通道
|
* 服务端渗透服务端 连接真实通道
|
||||||
*/
|
*/
|
||||||
@ -74,9 +76,9 @@ public class NettyServerPermeateServerConnectRealSocket {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.error("服务端内网渗透 无法连接当前网络内的目标IP:【{}】,目标端口:【{}】", clientTargetIp, clientTargetPort);
|
log.error("服务端内网渗透 无法连接当前网络内的目标IP:【{}】,目标端口:【{}】", clientTargetIp, clientTargetPort);
|
||||||
// future.channel().eventLoop().schedule(() -> {
|
channelFuture.channel().eventLoop().schedule(() -> {
|
||||||
// buildNewRealServer(internalNetworkPermeateRealServer);
|
buildNewRealServer(internalNetworkPermeateRealServer, visitorChannel, visitorId);
|
||||||
// }, 2, TimeUnit.SECONDS);
|
}, 2, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user