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
dab6e580e4
commit
8952d2277f
@ -150,6 +150,8 @@ public class NettyClientPermeateClientRealSocket {
|
|||||||
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, visitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, visitorId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
||||||
|
|
||||||
|
ChannelAttributeKeyUtils.buildVisitorPort(transferChannel, visitorPort);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -14,6 +14,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
||||||
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.socket.PermeateVisitorSocket;
|
import org.framework.lazy.cloud.network.heartbeat.common.socket.PermeateVisitorSocket;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -72,9 +73,11 @@ public class NettyClientPermeateClientVisitorSocket implements PermeateVisitorSo
|
|||||||
try {
|
try {
|
||||||
bootstrap.bind(visitorPort).sync().addListener((ChannelFutureListener) future -> {
|
bootstrap.bind(visitorPort).sync().addListener((ChannelFutureListener) future -> {
|
||||||
if (future.isSuccess()) {
|
if (future.isSuccess()) {
|
||||||
|
Channel channel = future.channel();
|
||||||
|
ChannelAttributeKeyUtils.buildVisitorPort(channel,visitorPort);
|
||||||
// 这里时异步处理
|
// 这里时异步处理
|
||||||
log.info("客户端:[{}]访客端口:[{}] 开启", clientId, visitorPort);
|
log.info("客户端:[{}]访客端口:[{}] 开启", clientId, visitorPort);
|
||||||
NettyVisitorPortContext.pushVisitorChannel(visitorPort, future.channel());
|
NettyVisitorPortContext.pushVisitorChannel(visitorPort, channel);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.error("客户端:[{}]访客端口:[{}]绑定失败", clientId, visitorPort);
|
log.error("客户端:[{}]访客端口:[{}]绑定失败", clientId, visitorPort);
|
||||||
|
@ -13,6 +13,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorConte
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext;
|
||||||
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.socket.PermeateVisitorSocket;
|
import org.framework.lazy.cloud.network.heartbeat.common.socket.PermeateVisitorSocket;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -73,7 +74,8 @@ public class NettyClientPermeateServerVisitorSocket implements PermeateVisitorSo
|
|||||||
if (future.isSuccess()) {
|
if (future.isSuccess()) {
|
||||||
// 这里时异步处理
|
// 这里时异步处理
|
||||||
log.info("客户端:[{}]访客端口:[{}] 开启", clientId, visitorPort);
|
log.info("客户端:[{}]访客端口:[{}] 开启", clientId, visitorPort);
|
||||||
|
Channel channel = future.channel();
|
||||||
|
ChannelAttributeKeyUtils.buildVisitorPort(channel,visitorPort);
|
||||||
} else {
|
} else {
|
||||||
log.error("客户端:[{}]访客端口:[{}]绑定失败", clientId, visitorPort);
|
log.error("客户端:[{}]访客端口:[{}]绑定失败", clientId, visitorPort);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ 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, msg.getData().length);
|
log.debug("【客户端渗透服务端】访客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()));
|
||||||
// 将数据转发访客通道
|
// 将数据转发访客通道
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.Abstrac
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,6 +32,7 @@ public class ServerHandleReportClientTransferClientPermeateChannelConnectionSucc
|
|||||||
byte[] clientId = nettyProxyMsg.getClientId();// 目标客户端ID
|
byte[] clientId = nettyProxyMsg.getClientId();// 目标客户端ID
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
ChannelAttributeKeyUtils.buildClientId(transferChannel, clientId);
|
||||||
|
ChannelAttributeKeyUtils.buildVisitorPort(transferChannel, Integer.parseInt(new String(msgVisitorPort)));
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, msgVisitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(transferChannel, msgVisitorId);
|
||||||
// 绑定访客通道
|
// 绑定访客通道
|
||||||
NettyTransferChannelContext.pushVisitor(transferChannel,msgVisitorId);
|
NettyTransferChannelContext.pushVisitor(transferChannel,msgVisitorId);
|
||||||
|
@ -30,7 +30,7 @@ public class ServerHandleReportClientTransferClientPermeateChannelInitSuccessful
|
|||||||
byte[] msgClientTargetPort = nettyProxyMsg.getClientTargetPort();
|
byte[] msgClientTargetPort = nettyProxyMsg.getClientTargetPort();
|
||||||
byte[] clientId = nettyProxyMsg.getClientId();
|
byte[] clientId = nettyProxyMsg.getClientId();
|
||||||
|
|
||||||
|
ChannelAttributeKeyUtils.buildVisitorPort(transferChannel, Integer.parseInt(new String(msgVisitorPort)));
|
||||||
// next translation
|
// next translation
|
||||||
Channel nextTransferChannel = NettyTransferChannelContext.getVisitor(msgVisitorId);
|
Channel nextTransferChannel = NettyTransferChannelContext.getVisitor(msgVisitorId);
|
||||||
ChannelAttributeKeyUtils.buildTransferNextChannel(nextTransferChannel,transferChannel);
|
ChannelAttributeKeyUtils.buildTransferNextChannel(nextTransferChannel,transferChannel);
|
||||||
|
@ -4,9 +4,13 @@ import io.netty.channel.Channel;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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.adapter.ChannelFlowAdapter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportClientTransferClientResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportClientTransferClientResponseTypeAdvanced;
|
||||||
|
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.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.wu.framework.spring.utils.SpringContextHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上报客户端渗透客户端数据传输结果
|
* 上报客户端渗透客户端数据传输结果
|
||||||
@ -27,7 +31,7 @@ public class ServerHandleReportClientTransferClientResponseTypeAdvanced extends
|
|||||||
byte[] msgVisitorPort = nettyProxyMsg.getVisitorPort();
|
byte[] msgVisitorPort = nettyProxyMsg.getVisitorPort();
|
||||||
byte[] msgClientTargetIp = nettyProxyMsg.getClientTargetIp();
|
byte[] msgClientTargetIp = nettyProxyMsg.getClientTargetIp();
|
||||||
byte[] msgClientTargetPort = nettyProxyMsg.getClientTargetPort();
|
byte[] msgClientTargetPort = nettyProxyMsg.getClientTargetPort();
|
||||||
byte[] clientId = nettyProxyMsg.getClientId();
|
String clientId = nettyProxyMsg.getClientIdString();
|
||||||
// 下发客户端初始化成功
|
// 下发客户端初始化成功
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getTransferNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getTransferNextChannel(channel);
|
||||||
|
|
||||||
@ -42,8 +46,19 @@ public class ServerHandleReportClientTransferClientResponseTypeAdvanced extends
|
|||||||
clientConnectTagetNettyProxyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE);
|
clientConnectTagetNettyProxyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE);
|
||||||
if (nextChannel != null) {
|
if (nextChannel != null) {
|
||||||
nextChannel.writeAndFlush(clientConnectTagetNettyProxyMsg);
|
nextChannel.writeAndFlush(clientConnectTagetNettyProxyMsg);
|
||||||
|
|
||||||
|
//记录出口流量
|
||||||
|
ChannelFlowAdapter channelFlowAdapter = SpringContextHolder.getBean(ChannelFlowAdapter.class);
|
||||||
|
ServerChannelFlow serverChannelFlow = ServerChannelFlow
|
||||||
|
.builder()
|
||||||
|
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
||||||
|
.port(Integer.parseInt(new String(msgVisitorPort)))
|
||||||
|
.clientId(clientId)
|
||||||
|
.flow(clientConnectTagetNettyProxyMsg.getData().length)
|
||||||
|
.build();
|
||||||
|
channelFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
||||||
}else {
|
}else {
|
||||||
log.error("can not find the client:【】 channel",clientId);
|
log.error("can not find the client:【{}】 channel",clientId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,9 +4,13 @@ import io.netty.channel.Channel;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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.adapter.ChannelFlowAdapter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportClientTransferClientTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.AbstractHandleReportClientTransferClientTypeAdvanced;
|
||||||
|
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.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.wu.framework.spring.utils.SpringContextHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上报客户端渗透客户端数据传输
|
* 上报客户端渗透客户端数据传输
|
||||||
@ -27,9 +31,10 @@ public class ServerHandleReportClientTransferClientTypeAdvanced extends Abstract
|
|||||||
byte[] msgVisitorPort = nettyProxyMsg.getVisitorPort();
|
byte[] msgVisitorPort = nettyProxyMsg.getVisitorPort();
|
||||||
byte[] msgClientTargetIp = nettyProxyMsg.getClientTargetIp();
|
byte[] msgClientTargetIp = nettyProxyMsg.getClientTargetIp();
|
||||||
byte[] msgClientTargetPort = nettyProxyMsg.getClientTargetPort();
|
byte[] msgClientTargetPort = nettyProxyMsg.getClientTargetPort();
|
||||||
byte[] clientId = nettyProxyMsg.getClientId();
|
String clientId = nettyProxyMsg.getClientIdString();
|
||||||
// 下发客户端初始化成功
|
// 下发客户端初始化成功
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getTransferNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getTransferNextChannel(channel);
|
||||||
|
Integer visitorPort = ChannelAttributeKeyUtils.getVisitorPort(channel);
|
||||||
|
|
||||||
|
|
||||||
NettyProxyMsg clientConnectTagetNettyProxyMsg = new NettyProxyMsg();
|
NettyProxyMsg clientConnectTagetNettyProxyMsg = new NettyProxyMsg();
|
||||||
@ -42,11 +47,18 @@ public class ServerHandleReportClientTransferClientTypeAdvanced extends Abstract
|
|||||||
clientConnectTagetNettyProxyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST);
|
clientConnectTagetNettyProxyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST);
|
||||||
if (nextChannel != null) {
|
if (nextChannel != null) {
|
||||||
nextChannel.writeAndFlush(clientConnectTagetNettyProxyMsg);
|
nextChannel.writeAndFlush(clientConnectTagetNettyProxyMsg);
|
||||||
|
// 记录进口数据
|
||||||
|
ChannelFlowAdapter channelFlowAdapter = SpringContextHolder.getBean(ChannelFlowAdapter.class);
|
||||||
|
ServerChannelFlow serverChannelFlow = ServerChannelFlow
|
||||||
|
.builder()
|
||||||
|
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
||||||
|
.port(visitorPort)
|
||||||
|
.clientId(clientId)
|
||||||
|
.flow(clientConnectTagetNettyProxyMsg.getData().length)
|
||||||
|
.build();
|
||||||
|
channelFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
||||||
}else {
|
}else {
|
||||||
log.error("can not find the client:【】 channel",clientId);
|
log.error("can not find the client:【{}】 channel",clientId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,11 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
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.NettyByteBuf;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyByteBuf;
|
||||||
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.adapter.ChannelFlowAdapter;
|
||||||
|
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.wu.framework.spring.utils.SpringContextHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端渗透服务端
|
* 客户端渗透服务端
|
||||||
@ -17,6 +21,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeK
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class NettyClientPermeateServerRealHandler extends SimpleChannelInboundHandler<NettyByteBuf> {
|
public class NettyClientPermeateServerRealHandler extends SimpleChannelInboundHandler<NettyByteBuf> {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void channelActive(ChannelHandlerContext ctx) throws Exception {
|
public void channelActive(ChannelHandlerContext ctx) throws Exception {
|
||||||
// 根据访客ID 确认真实通道 读写打开
|
// 根据访客ID 确认真实通道 读写打开
|
||||||
@ -38,13 +43,31 @@ public class NettyClientPermeateServerRealHandler extends SimpleChannelInboundHa
|
|||||||
log.debug("【客户端渗透服务端】服务端真实服务数据:{}", new String(bytes));
|
log.debug("【客户端渗透服务端】服务端真实服务数据:{}", new String(bytes));
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||||
// 消息下发到客户端
|
// 消息下发到客户端
|
||||||
|
String clientId = ChannelAttributeKeyUtils.getClientId(channel);
|
||||||
|
Integer visitorPort = ChannelAttributeKeyUtils.getVisitorPort(channel);
|
||||||
|
|
||||||
|
if (nextChannel != null) {
|
||||||
|
NettyProxyMsg nettyMsg = new NettyProxyMsg();
|
||||||
|
nettyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER);
|
||||||
|
nettyMsg.setData(bytes);
|
||||||
|
|
||||||
|
nextChannel.writeAndFlush(nettyMsg);
|
||||||
|
ChannelFlowAdapter channelFlowAdapter = SpringContextHolder.getBean(ChannelFlowAdapter.class);
|
||||||
|
// 记录出口数据
|
||||||
|
ServerChannelFlow serverChannelFlow = ServerChannelFlow
|
||||||
|
.builder()
|
||||||
|
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
||||||
|
.port(visitorPort)
|
||||||
|
.clientId(clientId)
|
||||||
|
.flow(nettyMsg.getData().length)
|
||||||
|
.build();
|
||||||
|
channelFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
||||||
|
} else {
|
||||||
|
log.error("we can not find next channel for transfer with client permeate server user client_id:{} ", clientId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NettyProxyMsg nettyMsg = new NettyProxyMsg();
|
|
||||||
nettyMsg.setType(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER);
|
|
||||||
nettyMsg.setData(bytes);
|
|
||||||
|
|
||||||
nextChannel.writeAndFlush(nettyMsg);
|
|
||||||
// 记录出口数据
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user