mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2025-06-16 18:35:05 +08:00
【fix】 添加服务端、客户端路由管理接口
This commit is contained in:
@ -50,14 +50,17 @@ public class ServerAutoConfiguration {
|
||||
LazyServerPermeateClientMappingApplication lazyServerPermeateClientMappingApplication,
|
||||
LazyClientPermeateServerMappingApplication lazyClientPermeateServerMappingApplication,
|
||||
LazyClientPermeateClientMappingApplication lazyClientPermeateClientMappingApplication,
|
||||
LazyNettyServerRouteApplication lazyNettyServerRouteApplication,
|
||||
LazyNettyClientTokenBucketApplication lazyNettyClientTokenBucketApplication,
|
||||
ServerNodeProperties serverNodeProperties
|
||||
) {
|
||||
return new ServerHandleTcpClientConnectSuccessTypeAdvanced(lazyClientStatsChangeApplication,
|
||||
return new ServerHandleTcpClientConnectSuccessTypeAdvanced(
|
||||
lazyClientStatsChangeApplication,
|
||||
lazyNettyClientBlacklistApplication,
|
||||
lazyServerPermeateClientMappingApplication,
|
||||
lazyClientPermeateServerMappingApplication,
|
||||
lazyClientPermeateClientMappingApplication,
|
||||
lazyNettyServerRouteApplication,
|
||||
lazyNettyClientTokenBucketApplication,
|
||||
serverNodeProperties
|
||||
);
|
||||
|
@ -9,13 +9,17 @@ import org.framework.lazy.cloud.network.heartbeat.common.constant.TcpMessageType
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.permeate.tcp.server.AbstractHandleTcpClientConnectSuccessTypeAdvanced;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||
import org.framework.lazy.cloud.network.heartbeat.protocol.route.RouteType;
|
||||
import org.framework.lazy.cloud.network.heartbeat.protocol.route.ServerProxyRoute;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.properties.ServerNodeProperties;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.*;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.netty.client.permeate.client.mapping.LazyClientPermeateClientMappingQueryListCommand;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.netty.client.permeate.server.mapping.LazyClientPermeateServerMappingQueryListCommand;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.netty.client.state.LazyNettyClientLoginCommand;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.command.lazy.netty.server.route.LazyNettyServerRouteQueryListCommand;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyClientPermeateClientMappingDTO;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyClientPermeateServerMappingDTO;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.dto.LazyNettyServerRouteDTO;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.netty.client.blacklist.LazyNettyClientBlacklist;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Role;
|
||||
@ -41,16 +45,18 @@ public class ServerHandleTcpClientConnectSuccessTypeAdvanced extends AbstractHan
|
||||
private final LazyClientPermeateServerMappingApplication lazyClientPermeateServerMappingApplication;
|
||||
private final LazyClientPermeateClientMappingApplication lazyClientPermeateClientMappingApplication;
|
||||
|
||||
private final LazyNettyServerRouteApplication lazyNettyServerRouteApplication;
|
||||
private final LazyNettyClientTokenBucketApplication lazyNettyClientTokenBucketApplication;
|
||||
|
||||
private final ServerNodeProperties serverNodeProperties;
|
||||
|
||||
public ServerHandleTcpClientConnectSuccessTypeAdvanced(LazyClientStatsChangeApplication lazyClientStatsChangeApplication, LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication, LazyServerPermeateClientMappingApplication lazyServerPermeateClientMappingApplication, LazyClientPermeateServerMappingApplication lazyClientPermeateServerMappingApplication, LazyClientPermeateClientMappingApplication lazyClientPermeateClientMappingApplication, LazyNettyClientTokenBucketApplication lazyNettyClientTokenBucketApplication, ServerNodeProperties serverNodeProperties) {
|
||||
public ServerHandleTcpClientConnectSuccessTypeAdvanced(LazyClientStatsChangeApplication lazyClientStatsChangeApplication, LazyNettyClientBlacklistApplication lazyNettyClientBlacklistApplication, LazyServerPermeateClientMappingApplication lazyServerPermeateClientMappingApplication, LazyClientPermeateServerMappingApplication lazyClientPermeateServerMappingApplication, LazyClientPermeateClientMappingApplication lazyClientPermeateClientMappingApplication, LazyNettyServerRouteApplication lazyNettyServerRouteApplication, LazyNettyClientTokenBucketApplication lazyNettyClientTokenBucketApplication, ServerNodeProperties serverNodeProperties) {
|
||||
this.lazyClientStatsChangeApplication = lazyClientStatsChangeApplication;
|
||||
this.lazyNettyClientBlacklistApplication = lazyNettyClientBlacklistApplication;
|
||||
this.lazyServerPermeateClientMappingApplication = lazyServerPermeateClientMappingApplication;
|
||||
this.lazyClientPermeateServerMappingApplication = lazyClientPermeateServerMappingApplication;
|
||||
this.lazyClientPermeateClientMappingApplication = lazyClientPermeateClientMappingApplication;
|
||||
this.lazyNettyServerRouteApplication = lazyNettyServerRouteApplication;
|
||||
this.lazyNettyClientTokenBucketApplication = lazyNettyClientTokenBucketApplication;
|
||||
this.serverNodeProperties = serverNodeProperties;
|
||||
}
|
||||
@ -176,6 +182,26 @@ public class ServerHandleTcpClientConnectSuccessTypeAdvanced extends AbstractHan
|
||||
newChannel.writeAndFlush(nettyMsg);
|
||||
}
|
||||
});
|
||||
// 下发服务端路由
|
||||
LazyNettyServerRouteQueryListCommand lazyNettyServerRouteQueryListCommand = new LazyNettyServerRouteQueryListCommand();
|
||||
lazyNettyServerRouteQueryListCommand.setIsDeleted(false);
|
||||
lazyNettyServerRouteApplication.findList(lazyNettyServerRouteQueryListCommand)
|
||||
.accept(lazyNettyServerRouteDTOS -> {
|
||||
for (LazyNettyServerRouteDTO lazyNettyServerRouteDTO : lazyNettyServerRouteDTOS) {
|
||||
String routeIp = lazyNettyServerRouteDTO.getRouteIp();
|
||||
String routePort = lazyNettyServerRouteDTO.getRoutePort();
|
||||
ServerProxyRoute serverProxyRoute = new ServerProxyRoute();
|
||||
serverProxyRoute.setServerIp("default");
|
||||
serverProxyRoute.setAllowIp(routeIp);
|
||||
serverProxyRoute.setAllowPort(routePort);
|
||||
serverProxyRoute.setRouteType(RouteType.CLIENT_PROXY_SEVER);
|
||||
NettyProxyMsg nettyMsg = new NettyProxyMsg();
|
||||
nettyMsg.setType(TcpMessageType.HTTP_CLIENT_PROXY_SERVER_SERVER_ROUTE_DISTRIBUTE_);
|
||||
nettyMsg.setData((JSON.toJSONString(serverProxyRoute)
|
||||
.getBytes(StandardCharsets.UTF_8)));
|
||||
newChannel.writeAndFlush(nettyMsg);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,20 @@
|
||||
package org.framework.lazy.cloud.network.heartbeat.server.standalone.infrastructure.persistence;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import io.netty.channel.Channel;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.ChannelContext;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyProxyMsg;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.constant.TcpMessageType;
|
||||
import org.framework.lazy.cloud.network.heartbeat.protocol.route.RouteContext;
|
||||
import org.framework.lazy.cloud.network.heartbeat.protocol.route.RouteType;
|
||||
import org.framework.lazy.cloud.network.heartbeat.protocol.route.ServerProxyRoute;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.infrastructure.entity.LazyNettyServerRouteDO;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.infrastructure.converter.LazyNettyServerRouteConverter;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.infrastructure.mapper.LazyNettyServerRouteMapper;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.standalone.domain.model.lazy.netty.server.route.LazyNettyServerRouteRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.wu.framework.lazy.orm.database.lambda.stream.wrapper.LazyUpdateSetValueWrappers;
|
||||
@ -43,6 +53,27 @@ public class LazyNettyServerRouteRepositoryImpl implements LazyNettyServerRout
|
||||
public Result<LazyNettyServerRoute> story(LazyNettyServerRoute lazyNettyServerRoute) {
|
||||
LazyNettyServerRouteDO lazyNettyServerRouteDO = LazyNettyServerRouteConverter.INSTANCE.fromLazyNettyServerRoute(lazyNettyServerRoute);
|
||||
lazyLambdaStream.upsert(lazyNettyServerRouteDO);
|
||||
// 更新服务端路由
|
||||
String routeIp = lazyNettyServerRoute.getRouteIp();
|
||||
String routePort = lazyNettyServerRoute.getRoutePort();
|
||||
ServerProxyRoute serverProxyRoute = new ServerProxyRoute();
|
||||
serverProxyRoute.setServerIp("default");
|
||||
serverProxyRoute.setAllowIp(routeIp);
|
||||
serverProxyRoute.setAllowPort(routePort);
|
||||
serverProxyRoute.setRouteType(RouteType.CLIENT_PROXY_SEVER);
|
||||
RouteContext.setRoute(serverProxyRoute);
|
||||
// 发送所有客户端本地路由刷新
|
||||
ChannelContext.getChannels().forEach((clientId, channels) -> {
|
||||
NettyProxyMsg nettyMsg = new NettyProxyMsg();
|
||||
nettyMsg.setType(TcpMessageType.HTTP_CLIENT_PROXY_SERVER_SERVER_ROUTE_DISTRIBUTE_);
|
||||
nettyMsg.setData((JSON.toJSONString(serverProxyRoute)
|
||||
.getBytes(StandardCharsets.UTF_8)));
|
||||
// 发送所有客户端ID
|
||||
for (Channel channel : channels) {
|
||||
channel.writeAndFlush(nettyMsg);
|
||||
}
|
||||
});
|
||||
|
||||
return ResultFactory.successOf();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user