mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2025-06-08 06:17:55 +08:00
[fix] socks、http代理 添加流量计费
This commit is contained in:
parent
664bafdc86
commit
9cd85abe1d
@ -1,6 +1,8 @@
|
|||||||
package org.framework.lazy.cloud.network.heartbeat.common.advanced.flow.proxy;
|
package org.framework.lazy.cloud.network.heartbeat.common.advanced.flow.proxy;
|
||||||
|
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
|
|
||||||
public interface ChannelProxyFlow {
|
public interface ChannelProxyFlow {
|
||||||
|
|
||||||
@ -32,6 +34,18 @@ public interface ChannelProxyFlow {
|
|||||||
*/
|
*/
|
||||||
ChannelFlowEnum channelFlowEnum();
|
ChannelFlowEnum channelFlowEnum();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理流量类型
|
||||||
|
* @see ChannelProxyFlowTypeEnum
|
||||||
|
*/
|
||||||
|
ChannelProxyFlowTypeEnum channelProxyFlowTypeEnum();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理类型
|
||||||
|
* @see ChannelProxyTypeEnum
|
||||||
|
*/
|
||||||
|
ChannelProxyTypeEnum channelProxyTypeEnum();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流量
|
* 流量
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server;
|
||||||
|
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelTypeAdvanced;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ProxyMessageTypeEnums;
|
||||||
|
|
||||||
|
public abstract class AbstractHandleHttpReportClientProxyClientTransferRequestTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否支持当前类型
|
||||||
|
*
|
||||||
|
* @param nettyProxyMsg 通道数据
|
||||||
|
* @return 布尔类型 是、否
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected boolean doSupport(NettyProxyMsg nettyProxyMsg) {
|
||||||
|
return ProxyMessageTypeEnums.HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_.getTypeByte() == nettyProxyMsg.getType();
|
||||||
|
}
|
||||||
|
}
|
@ -84,6 +84,14 @@ public class ProxyMessageType {
|
|||||||
*/
|
*/
|
||||||
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CONNECTION_ + 1;
|
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CONNECTION_ + 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* http 另一个客户端将返回数据通过传输通道返回
|
||||||
|
*
|
||||||
|
* @see ProxyMessageTypeEnums#HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_
|
||||||
|
* @see AbstractHandleHttpReportClientProxyClientTransferRequestTypeAdvanced
|
||||||
|
*/
|
||||||
|
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL_ + 1;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* http 另一个客户端将返回数据通过传输通道返回
|
* http 另一个客户端将返回数据通过传输通道返回
|
||||||
@ -91,7 +99,7 @@ public class ProxyMessageType {
|
|||||||
* @see ProxyMessageTypeEnums#HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_RESPONSE_
|
* @see ProxyMessageTypeEnums#HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_RESPONSE_
|
||||||
* @see AbstractHandleHttpReportClientProxyClientTransferResponseTypeAdvanced
|
* @see AbstractHandleHttpReportClientProxyClientTransferResponseTypeAdvanced
|
||||||
*/
|
*/
|
||||||
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_RESPONSE_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL_ + 1;
|
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_RESPONSE_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_ + 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上报传输通道关闭
|
* 上报传输通道关闭
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package org.framework.lazy.cloud.network.heartbeat.common.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理流量类型
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum ChannelProxyFlowTypeEnum {
|
||||||
|
|
||||||
|
// HTTP
|
||||||
|
HTTP,
|
||||||
|
// Socks
|
||||||
|
SOCKS
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.framework.lazy.cloud.network.heartbeat.common.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理类型
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum ChannelProxyTypeEnum {
|
||||||
|
|
||||||
|
SERVER_PROXY_SERVER("服务端代理服务端"),
|
||||||
|
SERVER_PROXY_CLIENT("服务端远程客户端"),
|
||||||
|
CLIENT_PROXY_CLIENT("客户端远程客户端"),
|
||||||
|
CLIENT_PROXY_SEVER("客户端远程服务端");
|
||||||
|
|
||||||
|
private final String desc;
|
||||||
|
}
|
@ -110,6 +110,14 @@ public enum ProxyMessageTypeEnums {
|
|||||||
* @see AbstractHandleHttpDistributeClientProxyClientTransferRequestTypeAdvanced
|
* @see AbstractHandleHttpDistributeClientProxyClientTransferRequestTypeAdvanced
|
||||||
*/
|
*/
|
||||||
HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_(ProxyMessageType.HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_, "http 下发数据到另一个客户端"),
|
HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_(ProxyMessageType.HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_, "http 下发数据到另一个客户端"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* http 另一个客户端将返回数据通过传输通道 请求
|
||||||
|
*
|
||||||
|
* @see ProxyMessageTypeEnums#HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_
|
||||||
|
* @see AbstractHandleHttpReportClientProxyClientTransferRequestTypeAdvanced
|
||||||
|
*/
|
||||||
|
HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_(ProxyMessageType.HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_, "http 另一个客户端将返回数据通过传输通道请求"),
|
||||||
/**
|
/**
|
||||||
* http 另一个客户端将返回数据通过传输通道返回
|
* http 另一个客户端将返回数据通过传输通道返回
|
||||||
*
|
*
|
||||||
|
@ -18,6 +18,7 @@ public class ChannelAttributeKeyUtils {
|
|||||||
private static final AttributeKey<String> ORIGINAL_IP = AttributeKey.newInstance("originalIp");
|
private static final AttributeKey<String> ORIGINAL_IP = AttributeKey.newInstance("originalIp");
|
||||||
private static final AttributeKey<String> TARGET_IP = AttributeKey.newInstance("targetIp");
|
private static final AttributeKey<String> TARGET_IP = AttributeKey.newInstance("targetIp");
|
||||||
private static final AttributeKey<Integer> TARGET_PORT = AttributeKey.newInstance("targetPort");
|
private static final AttributeKey<Integer> TARGET_PORT = AttributeKey.newInstance("targetPort");
|
||||||
|
private static final AttributeKey<String> TARGET_CLIENT_ID = AttributeKey.newInstance("targetClientId");
|
||||||
private static final AttributeKey<Integer> OUT_FLOW = AttributeKey.newInstance("outFlow");
|
private static final AttributeKey<Integer> OUT_FLOW = AttributeKey.newInstance("outFlow");
|
||||||
private static final AttributeKey<Integer> IN_FLOW = AttributeKey.newInstance("inFlow");
|
private static final AttributeKey<Integer> IN_FLOW = AttributeKey.newInstance("inFlow");
|
||||||
|
|
||||||
@ -87,6 +88,36 @@ public class ChannelAttributeKeyUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为通道绑定 访客属性
|
||||||
|
*
|
||||||
|
* @param channel 通道
|
||||||
|
* @param targetClientId 客户端ID
|
||||||
|
*/
|
||||||
|
public static void buildTargetClientId(Channel channel, byte[] targetClientId) {
|
||||||
|
channel.attr(TARGET_CLIENT_ID).set(new String(targetClientId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为通道绑定 访客属性
|
||||||
|
*
|
||||||
|
* @param channel 通道
|
||||||
|
* @param targetClientId 客户端ID
|
||||||
|
*/
|
||||||
|
public static void buildTargetClientId(Channel channel, String targetClientId) {
|
||||||
|
channel.attr(TARGET_CLIENT_ID).set(targetClientId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取 通道中访客ID
|
||||||
|
*
|
||||||
|
* @param channel 通道
|
||||||
|
*/
|
||||||
|
public static String getTargetClientId(Channel channel) {
|
||||||
|
return channel.attr(TARGET_CLIENT_ID).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 为通道绑定 出口流量
|
* 为通道绑定 出口流量
|
||||||
*
|
*
|
||||||
|
@ -203,13 +203,13 @@ public class ServerAutoConfiguration {
|
|||||||
@Configuration()
|
@Configuration()
|
||||||
static class ServerHttpProxyConfiguration {
|
static class ServerHttpProxyConfiguration {
|
||||||
@Bean
|
@Bean
|
||||||
public ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdvanced serverHandleHttpReportClientProxyServerProxyTransferTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportClientProxyServerTransferRequestTypeAdvanced serverHandleHttpReportClientProxyServerProxyTransferTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
return new ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdvanced(channelProxyFlowAdapter);
|
return new ServerHandleHttpReportClientProxyServerTransferRequestTypeAdvanced(channelProxyFlowAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ServerHandleHttpReportClientProxyServerProxyTransferResponseTypeAdvanced serverHandleHttpReportClientProxyServerProxyTransferResponseTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportClientProxyServerTransferResponseTypeAdvanced serverHandleHttpReportClientProxyServerProxyTransferResponseTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
return new ServerHandleHttpReportClientProxyServerProxyTransferResponseTypeAdvanced(channelProxyFlowAdapter);
|
return new ServerHandleHttpReportClientProxyServerTransferResponseTypeAdvanced(channelProxyFlowAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -219,8 +219,8 @@ public class ServerAutoConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced serverHandleHttpReportClientProxyClientConnectTransferTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportClientProxyClientTransferRequestTypeAdvanced serverHandleHttpReportClientProxyClientConnectTransferTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
return new ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced(channelProxyFlowAdapter);
|
return new ServerHandleHttpReportClientProxyClientTransferRequestTypeAdvanced(channelProxyFlowAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -242,8 +242,8 @@ public class ServerAutoConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ServerHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced serverHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportServerProxyClientTransferRequestTypeAdvanced serverHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
return new ServerHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced(channelProxyFlowAdapter);
|
return new ServerHandleHttpReportServerProxyClientTransferRequestTypeAdvanced(channelProxyFlowAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ -4,6 +4,8 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.flow.proxy.ChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.flow.proxy.ChannelProxyFlow;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
@Data
|
@Data
|
||||||
@ -12,6 +14,8 @@ public class ServerChannelProxyFlow implements ChannelProxyFlow {
|
|||||||
private String ip;
|
private String ip;
|
||||||
private Integer port;
|
private Integer port;
|
||||||
private ChannelFlowEnum channelFlowEnum;
|
private ChannelFlowEnum channelFlowEnum;
|
||||||
|
private ChannelProxyFlowTypeEnum channelProxyFlowTypeEnum;
|
||||||
|
private ChannelProxyTypeEnum channelProxyTypeEnum;
|
||||||
private Integer flow;
|
private Integer flow;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -55,6 +59,26 @@ public class ServerChannelProxyFlow implements ChannelProxyFlow {
|
|||||||
return channelFlowEnum;
|
return channelFlowEnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理流量类型
|
||||||
|
*
|
||||||
|
* @see ChannelProxyFlowTypeEnum
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ChannelProxyFlowTypeEnum channelProxyFlowTypeEnum() {
|
||||||
|
return channelProxyFlowTypeEnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理类型
|
||||||
|
*
|
||||||
|
* @see ChannelProxyTypeEnum
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ChannelProxyTypeEnum channelProxyTypeEnum() {
|
||||||
|
return channelProxyTypeEnum;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流量
|
* 流量
|
||||||
*
|
*
|
||||||
|
@ -5,7 +5,6 @@ import io.netty.channel.Channel;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.ChannelContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.ChannelContext;
|
||||||
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.adapter.ChannelFlowAdapter;
|
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelProxyFlowAdapter;
|
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelProxyFlowAdapter;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyTransferChannelContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.NettyTransferChannelContext;
|
||||||
@ -13,8 +12,9 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyC
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyClientConnectionTransferTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyClientConnectionTransferTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.context.annotation.Role;
|
import org.springframework.context.annotation.Role;
|
||||||
@ -28,12 +28,12 @@ import org.springframework.stereotype.Component;
|
|||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced
|
public class ServerHandleHttpReportClientProxyClientTransferRequestTypeAdvanced
|
||||||
extends AbstractHandleHttpReportClientProxyClientConnectionTransferTypeAdvanced<NettyProxyMsg> {
|
extends AbstractHandleHttpReportClientProxyClientConnectionTransferTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
||||||
|
|
||||||
public ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportClientProxyClientTransferRequestTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,6 +49,7 @@ public class ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced
|
|||||||
Channel channel = nettyChannelContext.channel();
|
Channel channel = nettyChannelContext.channel();
|
||||||
// 创建链接、发送数据
|
// 创建链接、发送数据
|
||||||
String targetPortString = nettyProxyMsg.getTargetPortString();
|
String targetPortString = nettyProxyMsg.getTargetPortString();
|
||||||
|
Integer targetPort = Integer.parseInt(targetPortString);
|
||||||
String targetIpString = nettyProxyMsg.getTargetIpString();
|
String targetIpString = nettyProxyMsg.getTargetIpString();
|
||||||
byte[] data = nettyProxyMsg.getData();
|
byte[] data = nettyProxyMsg.getData();
|
||||||
byte[] visitorId = nettyProxyMsg.getVisitorId();
|
byte[] visitorId = nettyProxyMsg.getVisitorId();
|
||||||
@ -56,6 +57,9 @@ public class ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced
|
|||||||
String msgVisitorId = new String(visitorId);
|
String msgVisitorId = new String(visitorId);
|
||||||
ChannelAttributeKeyUtils.buildClientId(channel, clientId);
|
ChannelAttributeKeyUtils.buildClientId(channel, clientId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(channel, msgVisitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(channel, msgVisitorId);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetClientId(channel, clientId);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetIp(channel, targetIpString);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetPort(channel, targetPort);
|
||||||
|
|
||||||
NettyTransferChannelContext.pushVisitor(channel, msgVisitorId);
|
NettyTransferChannelContext.pushVisitor(channel, msgVisitorId);
|
||||||
NettyByteBuf nettyByteBuf = new NettyByteBuf();
|
NettyByteBuf nettyByteBuf = new NettyByteBuf();
|
||||||
@ -67,7 +71,7 @@ public class ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced
|
|||||||
NettyProxyMsg clientConnectTagetNettyProxyMsg = new NettyProxyMsg();
|
NettyProxyMsg clientConnectTagetNettyProxyMsg = new NettyProxyMsg();
|
||||||
clientConnectTagetNettyProxyMsg.setVisitorId(msgVisitorId);
|
clientConnectTagetNettyProxyMsg.setVisitorId(msgVisitorId);
|
||||||
clientConnectTagetNettyProxyMsg.setClientTargetIp(targetIpString);
|
clientConnectTagetNettyProxyMsg.setClientTargetIp(targetIpString);
|
||||||
clientConnectTagetNettyProxyMsg.setClientTargetPort(Integer.parseInt(targetPortString));
|
clientConnectTagetNettyProxyMsg.setClientTargetPort(targetPort);
|
||||||
clientConnectTagetNettyProxyMsg.setClientId(clientId);
|
clientConnectTagetNettyProxyMsg.setClientId(clientId);
|
||||||
clientConnectTagetNettyProxyMsg.setType(ProxyMessageType.HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_CONNECTION_SUCCESSFUL_);
|
clientConnectTagetNettyProxyMsg.setType(ProxyMessageType.HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_CONNECTION_SUCCESSFUL_);
|
||||||
if (loadBalance != null) {
|
if (loadBalance != null) {
|
||||||
@ -80,8 +84,11 @@ public class ServerHandleHttpReportClientProxyClientConnectTransferTypeAdvanced
|
|||||||
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
.builder()
|
.builder()
|
||||||
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
||||||
.port(Integer.parseInt(targetPortString))
|
.port(targetPort)
|
||||||
|
.ip(targetIpString)
|
||||||
.clientId(new String(clientId))
|
.clientId(new String(clientId))
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.HTTP)
|
||||||
.flow(data.length)
|
.flow(data.length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
@ -10,6 +10,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyP
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyClientTransferResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyClientTransferResponseTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
@ -47,6 +49,9 @@ public class ServerHandleHttpReportClientProxyClientTransferResponseTypeAdvanced
|
|||||||
// 将返回数据下发客户端
|
// 将返回数据下发客户端
|
||||||
Channel transferNextChannel = ChannelAttributeKeyUtils.getTransferNextChannel(channel);
|
Channel transferNextChannel = ChannelAttributeKeyUtils.getTransferNextChannel(channel);
|
||||||
|
|
||||||
|
String targetIp = ChannelAttributeKeyUtils.getTargetIp(transferNextChannel);
|
||||||
|
Integer targetPort = ChannelAttributeKeyUtils.getTargetPort(transferNextChannel);
|
||||||
|
|
||||||
String clientId = nettyProxyMsg.getClientIdString();
|
String clientId = nettyProxyMsg.getClientIdString();
|
||||||
Integer visitorPort = nettyProxyMsg.getVisitorPortInt();
|
Integer visitorPort = nettyProxyMsg.getVisitorPortInt();
|
||||||
String visitorId = nettyProxyMsg.getVisitorIdString();
|
String visitorId = nettyProxyMsg.getVisitorIdString();
|
||||||
@ -61,8 +66,11 @@ public class ServerHandleHttpReportClientProxyClientTransferResponseTypeAdvanced
|
|||||||
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
.builder()
|
.builder()
|
||||||
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
||||||
.port(visitorPort)
|
.port(targetPort)
|
||||||
|
.ip(targetIp)
|
||||||
.clientId(clientId)
|
.clientId(clientId)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.HTTP)
|
||||||
.flow(responseProxyMsg.getData().length)
|
.flow(responseProxyMsg.getData().length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
||||||
|
@ -10,6 +10,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelT
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyServerTransferRequestTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyServerTransferRequestTypeAdvanced;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.http.NettyHttpClientProxyServerTransfer;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.http.NettyHttpClientProxyServerTransfer;
|
||||||
@ -30,12 +32,12 @@ import java.util.List;
|
|||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdvanced
|
public class ServerHandleHttpReportClientProxyServerTransferRequestTypeAdvanced
|
||||||
extends AbstractHandleHttpReportClientProxyServerTransferRequestTypeAdvanced<NettyProxyMsg> {
|
extends AbstractHandleHttpReportClientProxyServerTransferRequestTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
||||||
|
|
||||||
public ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportClientProxyServerTransferRequestTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +52,7 @@ public class ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdva
|
|||||||
Channel channel = nettyChannelContext.channel();
|
Channel channel = nettyChannelContext.channel();
|
||||||
// 创建链接、发送数据
|
// 创建链接、发送数据
|
||||||
String targetPortString = nettyProxyMsg.getTargetPortString();
|
String targetPortString = nettyProxyMsg.getTargetPortString();
|
||||||
|
int targetPort = Integer.parseInt(targetPortString);
|
||||||
String targetIpString = nettyProxyMsg.getTargetIpString();
|
String targetIpString = nettyProxyMsg.getTargetIpString();
|
||||||
String clientIdString = nettyProxyMsg.getClientIdString();
|
String clientIdString = nettyProxyMsg.getClientIdString();
|
||||||
byte[] data = nettyProxyMsg.getData();
|
byte[] data = nettyProxyMsg.getData();
|
||||||
@ -57,6 +60,9 @@ public class ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdva
|
|||||||
|
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildClientId(channel, clientIdString);
|
ChannelAttributeKeyUtils.buildClientId(channel, clientIdString);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetClientId(channel, clientIdString);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetIp(channel, targetIpString);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetPort(channel,targetPort);
|
||||||
|
|
||||||
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList = new ArrayList<>(SpringContextHolder.getApplicationContext().getBeansOfType(HandleChannelTypeAdvanced.class).values());
|
List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList = new ArrayList<>(SpringContextHolder.getApplicationContext().getBeansOfType(HandleChannelTypeAdvanced.class).values());
|
||||||
NettyClientProperties nettyClientProperties = SpringContextHolder.getBean(NettyClientProperties.class);
|
NettyClientProperties nettyClientProperties = SpringContextHolder.getBean(NettyClientProperties.class);
|
||||||
@ -64,7 +70,7 @@ public class ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdva
|
|||||||
NettyHttpClientProxyServerTransfer nettyHttpClientProxyServerTransfer = new NettyHttpClientProxyServerTransfer();
|
NettyHttpClientProxyServerTransfer nettyHttpClientProxyServerTransfer = new NettyHttpClientProxyServerTransfer();
|
||||||
nettyHttpClientProxyServerTransfer.setSsl(false);
|
nettyHttpClientProxyServerTransfer.setSsl(false);
|
||||||
nettyHttpClientProxyServerTransfer.setTargetIp(targetIpString);
|
nettyHttpClientProxyServerTransfer.setTargetIp(targetIpString);
|
||||||
nettyHttpClientProxyServerTransfer.setTargetPort(Integer.parseInt(targetPortString));
|
nettyHttpClientProxyServerTransfer.setTargetPort(targetPort);
|
||||||
|
|
||||||
|
|
||||||
nettyHttpClientProxyServerTransfer.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList);
|
nettyHttpClientProxyServerTransfer.setHandleChannelTypeAdvancedList(handleChannelTypeAdvancedList);
|
||||||
@ -79,8 +85,11 @@ public class ServerHandleHttpReportClientProxyServerProxyTransferRequestTypeAdva
|
|||||||
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
.builder()
|
.builder()
|
||||||
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
||||||
.port(Integer.parseInt(targetPortString))
|
.port(targetPort)
|
||||||
|
.ip(targetIpString)
|
||||||
.clientId(clientIdString)
|
.clientId(clientIdString)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_SEVER)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.HTTP)
|
||||||
.flow(data.length)
|
.flow(data.length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
@ -9,6 +9,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyP
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyServerTransferResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportClientProxyServerTransferResponseTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
@ -23,12 +25,12 @@ import org.springframework.stereotype.Component;
|
|||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class ServerHandleHttpReportClientProxyServerProxyTransferResponseTypeAdvanced
|
public class ServerHandleHttpReportClientProxyServerTransferResponseTypeAdvanced
|
||||||
extends AbstractHandleHttpReportClientProxyServerTransferResponseTypeAdvanced<NettyProxyMsg> {
|
extends AbstractHandleHttpReportClientProxyServerTransferResponseTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
||||||
|
|
||||||
public ServerHandleHttpReportClientProxyServerProxyTransferResponseTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportClientProxyServerTransferResponseTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,6 +47,9 @@ public class ServerHandleHttpReportClientProxyServerProxyTransferResponseTypeAdv
|
|||||||
byte[] data = nettyProxyMsg.getData();
|
byte[] data = nettyProxyMsg.getData();
|
||||||
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||||
|
|
||||||
|
String targetIp = ChannelAttributeKeyUtils.getTargetIp(nextChannel);
|
||||||
|
Integer targetPort = ChannelAttributeKeyUtils.getTargetPort(nextChannel);
|
||||||
// 将数据返回给客户端
|
// 将数据返回给客户端
|
||||||
NettyProxyMsg responseNettyProxyMsg = new NettyProxyMsg();
|
NettyProxyMsg responseNettyProxyMsg = new NettyProxyMsg();
|
||||||
responseNettyProxyMsg.setType(ProxyMessageType.HTTP_DISTRIBUTE_CLIENT_PROXY_SERVER_TRANSFER_);
|
responseNettyProxyMsg.setType(ProxyMessageType.HTTP_DISTRIBUTE_CLIENT_PROXY_SERVER_TRANSFER_);
|
||||||
@ -59,8 +64,11 @@ public class ServerHandleHttpReportClientProxyServerProxyTransferResponseTypeAdv
|
|||||||
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
.builder()
|
.builder()
|
||||||
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
||||||
.port(visitorPort)
|
.port(targetPort)
|
||||||
|
.ip(targetIp)
|
||||||
.clientId(clientId)
|
.clientId(clientId)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_SEVER)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.HTTP)
|
||||||
.flow(data.length)
|
.flow(data.length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
@ -11,6 +11,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyC
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
@ -21,12 +23,12 @@ import org.springframework.stereotype.Component;
|
|||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class ServerHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced
|
public class ServerHandleHttpReportServerProxyClientTransferRequestTypeAdvanced
|
||||||
extends AbstractHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced<NettyProxyMsg> {
|
extends AbstractHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced<NettyProxyMsg> {
|
||||||
|
|
||||||
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
private final ChannelProxyFlowAdapter channelProxyFlowAdapter;
|
||||||
|
|
||||||
public ServerHandleHttpReportServerProxyClientTransferChannelInitSuccessfulTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
public ServerHandleHttpReportServerProxyClientTransferRequestTypeAdvanced(ChannelProxyFlowAdapter channelProxyFlowAdapter) {
|
||||||
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
this.channelProxyFlowAdapter = channelProxyFlowAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,11 +45,19 @@ public class ServerHandleHttpReportServerProxyClientTransferChannelInitSuccessfu
|
|||||||
// 数据下发
|
// 数据下发
|
||||||
byte[] msgVisitorId = nettyProxyMsg.getVisitorId();
|
byte[] msgVisitorId = nettyProxyMsg.getVisitorId();
|
||||||
|
|
||||||
byte[] msgClientTargetIp = nettyProxyMsg.getClientTargetIp();
|
String targetIpString = nettyProxyMsg.getTargetIpString();
|
||||||
byte[] msgClientTargetPort = nettyProxyMsg.getClientTargetPort();
|
String targetPortString = nettyProxyMsg.getTargetPortString();
|
||||||
|
Integer targetPort = Integer.parseInt(targetPortString);
|
||||||
|
|
||||||
|
|
||||||
byte[] clientId = nettyProxyMsg.getClientId();
|
byte[] clientId = nettyProxyMsg.getClientId();
|
||||||
|
|
||||||
|
|
||||||
|
ChannelAttributeKeyUtils.buildTargetClientId(channel, clientId);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetIp(channel, targetIpString);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetPort(channel, targetPort);
|
||||||
|
|
||||||
|
|
||||||
// next
|
// next
|
||||||
Channel nextChannel = NettyTransferChannelContext.getVisitor(msgVisitorId);
|
Channel nextChannel = NettyTransferChannelContext.getVisitor(msgVisitorId);
|
||||||
ChannelAttributeKeyUtils.buildNextChannel(nextChannel, channel);
|
ChannelAttributeKeyUtils.buildNextChannel(nextChannel, channel);
|
||||||
@ -62,8 +72,8 @@ public class ServerHandleHttpReportServerProxyClientTransferChannelInitSuccessfu
|
|||||||
NettyProxyMsg clientConnectTagetNettyProxyMsg = new NettyProxyMsg();
|
NettyProxyMsg clientConnectTagetNettyProxyMsg = new NettyProxyMsg();
|
||||||
clientConnectTagetNettyProxyMsg.setVisitorId(msgVisitorId);
|
clientConnectTagetNettyProxyMsg.setVisitorId(msgVisitorId);
|
||||||
|
|
||||||
clientConnectTagetNettyProxyMsg.setClientTargetIp(msgClientTargetIp);
|
clientConnectTagetNettyProxyMsg.setClientTargetIp(targetIpString);
|
||||||
clientConnectTagetNettyProxyMsg.setClientTargetPort(msgClientTargetPort);
|
clientConnectTagetNettyProxyMsg.setClientTargetPort(targetPort);
|
||||||
clientConnectTagetNettyProxyMsg.setClientId(clientId);
|
clientConnectTagetNettyProxyMsg.setClientId(clientId);
|
||||||
clientConnectTagetNettyProxyMsg.setData(nettyByteBufData.getData());
|
clientConnectTagetNettyProxyMsg.setData(nettyByteBufData.getData());
|
||||||
|
|
||||||
@ -75,8 +85,11 @@ public class ServerHandleHttpReportServerProxyClientTransferChannelInitSuccessfu
|
|||||||
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
.builder()
|
.builder()
|
||||||
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
||||||
.port(Integer.parseInt(new String(msgClientTargetPort)))
|
.port(targetPort)
|
||||||
|
.ip(targetIpString)
|
||||||
.clientId(new String(clientId))
|
.clientId(new String(clientId))
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.SERVER_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.HTTP)
|
||||||
.flow(nettyByteBufData.getData().length)
|
.flow(nettyByteBufData.getData().length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
@ -9,6 +9,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyP
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportServerProxyClientTransferResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server.AbstractHandleHttpReportServerProxyClientTransferResponseTypeAdvanced;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
@ -43,6 +45,9 @@ public class ServerHandleHttpReportServerProxyClientTransferResponseTypeAdvanced
|
|||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||||
String clientId = ChannelAttributeKeyUtils.getClientId(nextChannel);
|
String clientId = ChannelAttributeKeyUtils.getClientId(nextChannel);
|
||||||
Integer visitorPort = ChannelAttributeKeyUtils.getVisitorPort(nextChannel);
|
Integer visitorPort = ChannelAttributeKeyUtils.getVisitorPort(nextChannel);
|
||||||
|
String targetClientId = ChannelAttributeKeyUtils.getTargetClientId(nextChannel);
|
||||||
|
String targetIp = ChannelAttributeKeyUtils.getTargetIp(nextChannel);
|
||||||
|
Integer targetPort = ChannelAttributeKeyUtils.getTargetPort(nextChannel);
|
||||||
|
|
||||||
if(ObjectUtils.isNotEmpty(nextChannel)) {
|
if(ObjectUtils.isNotEmpty(nextChannel)) {
|
||||||
log.info("目标客户端返回数据通过服务端下发到原始通道");
|
log.info("目标客户端返回数据通过服务端下发到原始通道");
|
||||||
@ -54,8 +59,11 @@ public class ServerHandleHttpReportServerProxyClientTransferResponseTypeAdvanced
|
|||||||
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
.builder()
|
.builder()
|
||||||
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
||||||
.port(visitorPort)
|
.port(targetPort)
|
||||||
.clientId(clientId)
|
.ip(targetIp)
|
||||||
|
.clientId(targetClientId)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.SERVER_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.HTTP)
|
||||||
.flow(nettyProxyMsg.getData().length)
|
.flow(nettyProxyMsg.getData().length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
||||||
|
@ -9,6 +9,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyP
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyClientTransferRequestTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyClientTransferRequestTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
||||||
@ -62,6 +64,8 @@ public class ServerHandleSocksReportClientProxyClientTransferRequestTypeAdvanced
|
|||||||
.port(targetPort)
|
.port(targetPort)
|
||||||
.ip(targetIp)
|
.ip(targetIp)
|
||||||
.clientId(clientId)
|
.clientId(clientId)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.SOCKS)
|
||||||
.flow(nettyProxyMsg.getData().length)
|
.flow(nettyProxyMsg.getData().length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(transferChannel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(transferChannel, serverChannelFlow);
|
||||||
|
@ -9,6 +9,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyP
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyClientTransferResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyClientTransferResponseTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
||||||
@ -61,6 +63,8 @@ public class ServerHandleSocksReportClientProxyClientTransferResponseTypeAdvance
|
|||||||
.ip(targetIp)
|
.ip(targetIp)
|
||||||
.port(targetPort)
|
.port(targetPort)
|
||||||
.clientId(clientId)
|
.clientId(clientId)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.SOCKS)
|
||||||
.flow(nettyProxyMsg.getData().length)
|
.flow(nettyProxyMsg.getData().length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(nextChannel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(nextChannel, serverChannelFlow);
|
||||||
|
@ -9,6 +9,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyC
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyServerTransferRequestTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyServerTransferRequestTypeAdvanced;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
||||||
@ -60,6 +62,8 @@ public class ServerHandleSocksReportClientProxyServerTransferRequestTypeAdvanced
|
|||||||
.port(targetPort)
|
.port(targetPort)
|
||||||
.ip(targetIp)
|
.ip(targetIp)
|
||||||
.clientId(clientId)
|
.clientId(clientId)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_SEVER)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.SOCKS)
|
||||||
.flow(nettyProxyMsg.getData().length)
|
.flow(nettyProxyMsg.getData().length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(transferChannel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(transferChannel, serverChannelFlow);
|
||||||
|
@ -11,6 +11,8 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.ser
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyServerTransferResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportClientProxyServerTransferResponseTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
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.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.proxy.ServerChannelProxyFlow;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
||||||
@ -63,6 +65,8 @@ public class ServerHandleSocksReportClientProxyServerTransferResponseTypeAdvance
|
|||||||
.ip(targetIp)
|
.ip(targetIp)
|
||||||
.port(targetPort)
|
.port(targetPort)
|
||||||
.clientId(clientId)
|
.clientId(clientId)
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.CLIENT_PROXY_SEVER)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.SOCKS)
|
||||||
.flow(nettyProxyMsg.getData().length)
|
.flow(nettyProxyMsg.getData().length)
|
||||||
.build();
|
.build();
|
||||||
channelProxyFlowAdapter.asyncHandler(nextChannel, serverChannelFlow);
|
channelProxyFlowAdapter.asyncHandler(nextChannel, serverChannelFlow);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.advanced;
|
package org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.advanced;
|
||||||
|
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import io.netty.channel.Channel;
|
import io.netty.channel.Channel;
|
||||||
import io.netty.util.ReferenceCountUtil;
|
import io.netty.util.ReferenceCountUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -9,14 +8,16 @@ import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelProxyFlo
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportServerProxyClientRequestTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportServerProxyClientRequestTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportServerProxyClientResponseTypeAdvanced;
|
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.context.annotation.Role;
|
import org.springframework.context.annotation.Role;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.wu.framework.core.utils.ObjectUtils;
|
|
||||||
|
|
||||||
|
|
||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
@ -41,6 +42,9 @@ public class ServerHandleSocksReportServerProxyClientRequestTypeAdvanced
|
|||||||
public void doHandler(NettyChannelContext nettyChannelContext, NettyProxyMsg nettyProxyMsg) {
|
public void doHandler(NettyChannelContext nettyChannelContext, NettyProxyMsg nettyProxyMsg) {
|
||||||
|
|
||||||
Channel channel = nettyChannelContext.channel();
|
Channel channel = nettyChannelContext.channel();
|
||||||
|
String targetClientId = ChannelAttributeKeyUtils.getTargetClientId(channel);
|
||||||
|
String targetIp = ChannelAttributeKeyUtils.getTargetIp(channel);
|
||||||
|
Integer targetPort = ChannelAttributeKeyUtils.getTargetPort(channel);
|
||||||
|
|
||||||
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||||
@ -52,6 +56,18 @@ public class ServerHandleSocksReportServerProxyClientRequestTypeAdvanced
|
|||||||
|
|
||||||
nettyProxyMsgRequest.setData(nettyProxyMsg.getData());
|
nettyProxyMsgRequest.setData(nettyProxyMsg.getData());
|
||||||
nextChannel.writeAndFlush(nettyProxyMsgRequest);
|
nextChannel.writeAndFlush(nettyProxyMsgRequest);
|
||||||
|
// 记录进口数据
|
||||||
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
|
.builder()
|
||||||
|
.channelFlowEnum(ChannelFlowEnum.IN_FLOW)
|
||||||
|
.port(targetPort)
|
||||||
|
.ip(targetIp)
|
||||||
|
.clientId("SERVER")
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.SERVER_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.SOCKS)
|
||||||
|
.flow(nettyProxyMsg.getData().length)
|
||||||
|
.build();
|
||||||
|
channelProxyFlowAdapter.asyncHandler(channel, serverChannelFlow);
|
||||||
} else {
|
} else {
|
||||||
log.info("释放内存");
|
log.info("释放内存");
|
||||||
ReferenceCountUtil.release(nettyProxyMsg);
|
ReferenceCountUtil.release(nettyProxyMsg);
|
||||||
|
@ -8,8 +8,11 @@ import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelProxyFlo
|
|||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyChannelContext;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportServerProxyClientResponseTypeAdvanced;
|
import org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.socks.server.AbstractHandleSocksReportServerProxyClientResponseTypeAdvanced;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.ProxyMessageType;
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyFlowTypeEnum;
|
||||||
|
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||||
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.proxy.ServerChannelProxyFlow;
|
||||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
import org.framework.lazy.cloud.network.heartbeat.server.netty.proxy.socks.handler.NettySocksClientProxyServerRealHandler;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.context.annotation.Role;
|
import org.springframework.context.annotation.Role;
|
||||||
@ -40,11 +43,28 @@ public class ServerHandleSocksReportServerProxyClientResponseTypeAdvanced
|
|||||||
public void doHandler(NettyChannelContext nettyChannelContext, NettyProxyMsg nettyProxyMsg) {
|
public void doHandler(NettyChannelContext nettyChannelContext, NettyProxyMsg nettyProxyMsg) {
|
||||||
|
|
||||||
Channel channel = nettyChannelContext.channel();
|
Channel channel = nettyChannelContext.channel();
|
||||||
|
|
||||||
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
Channel nextChannel = ChannelAttributeKeyUtils.getNextChannel(channel);
|
||||||
|
|
||||||
|
String targetClientId = ChannelAttributeKeyUtils.getTargetClientId(nextChannel);
|
||||||
|
String targetIp = ChannelAttributeKeyUtils.getTargetIp(nextChannel);
|
||||||
|
Integer targetPort = ChannelAttributeKeyUtils.getTargetPort(nextChannel);
|
||||||
if(ObjectUtils.isNotEmpty(nextChannel)&&nextChannel.isActive()){
|
if(ObjectUtils.isNotEmpty(nextChannel)&&nextChannel.isActive()){
|
||||||
ByteBuf buf = nextChannel.config().getAllocator().buffer(nettyProxyMsg.getData().length);
|
ByteBuf buf = nextChannel.config().getAllocator().buffer(nettyProxyMsg.getData().length);
|
||||||
buf.writeBytes(nettyProxyMsg.getData());
|
buf.writeBytes(nettyProxyMsg.getData());
|
||||||
nextChannel.writeAndFlush(buf);
|
nextChannel.writeAndFlush(buf);
|
||||||
|
// 记录出口数据
|
||||||
|
ServerChannelProxyFlow serverChannelFlow = ServerChannelProxyFlow
|
||||||
|
.builder()
|
||||||
|
.channelFlowEnum(ChannelFlowEnum.OUT_FLOW)
|
||||||
|
.ip(targetIp)
|
||||||
|
.port(targetPort)
|
||||||
|
.clientId("SERVER")
|
||||||
|
.channelProxyTypeEnum(ChannelProxyTypeEnum.SERVER_PROXY_CLIENT)
|
||||||
|
.channelProxyFlowTypeEnum(ChannelProxyFlowTypeEnum.SOCKS)
|
||||||
|
.flow(nettyProxyMsg.getData().length)
|
||||||
|
.build();
|
||||||
|
channelProxyFlowAdapter.asyncHandler(nextChannel, serverChannelFlow);
|
||||||
}else {
|
}else {
|
||||||
log.error("服务端代理客户端socks,本地通道已关闭!");
|
log.error("服务端代理客户端socks,本地通道已关闭!");
|
||||||
}
|
}
|
||||||
|
@ -47,8 +47,12 @@ public class ServerHandleSocksReportServerProxyClientTypeAdvanced
|
|||||||
|
|
||||||
String msgVisitorId = new String(visitorId);
|
String msgVisitorId = new String(visitorId);
|
||||||
ChannelAttributeKeyUtils.buildVisitorId(visitorrChannel, msgVisitorId);
|
ChannelAttributeKeyUtils.buildVisitorId(visitorrChannel, msgVisitorId);
|
||||||
NettyTransferChannelContext.pushVisitor(visitorrChannel, msgVisitorId);
|
ChannelAttributeKeyUtils.buildTargetIp(visitorrChannel, host);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetPort(visitorrChannel,port);
|
||||||
|
ChannelAttributeKeyUtils.buildTargetClientId(visitorrChannel,targetClientId);
|
||||||
|
|
||||||
ChannelAttributeKeyUtils.buildSocks5AddressType(visitorrChannel,socks5AddressTypeByte);
|
ChannelAttributeKeyUtils.buildSocks5AddressType(visitorrChannel,socks5AddressTypeByte);
|
||||||
|
NettyTransferChannelContext.pushVisitor(visitorrChannel, msgVisitorId);
|
||||||
|
|
||||||
// 客户端连接客户端传输通道
|
// 客户端连接客户端传输通道
|
||||||
Channel loadBalance = ChannelContext.getLoadBalance(targetClientId);
|
Channel loadBalance = ChannelContext.getLoadBalance(targetClientId);
|
||||||
|
@ -32,8 +32,6 @@ public class NettySocksServerProxyClientVisitorInboundHandler extends SimpleChan
|
|||||||
@Override
|
@Override
|
||||||
public void channelRead0(ChannelHandlerContext ctx, NettyByteBuf nettyByteBuf) throws Exception {
|
public void channelRead0(ChannelHandlerContext ctx, NettyByteBuf nettyByteBuf) throws Exception {
|
||||||
log.info("【socks】转发服务端请求到客户端");
|
log.info("【socks】转发服务端请求到客户端");
|
||||||
// 结果下发
|
|
||||||
Channel channel = ctx.channel();
|
|
||||||
byte[] bytes = nettyByteBuf.getData();
|
byte[] bytes = nettyByteBuf.getData();
|
||||||
log.debug("bytes.length:{}",bytes.length);
|
log.debug("bytes.length:{}",bytes.length);
|
||||||
log.debug("服务端代理客户端,socks本地接收请求数据:{}", new String(bytes));
|
log.debug("服务端代理客户端,socks本地接收请求数据:{}", new String(bytes));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user