This commit is contained in:
wujiawei
2024-09-18 20:28:18 +08:00
parent 15da22ba2d
commit 2166a1eee6
8 changed files with 505 additions and 23 deletions

View File

@ -5,7 +5,7 @@ import io.netty.channel.Channel;
import io.netty.channel.ChannelId;
import lombok.extern.slf4j.Slf4j;
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyClientStatsChangeApplication;
import org.framework.lazy.cloud.network.heartbeat.server.netty.socket.NettyVisitorSocket;
import org.framework.lazy.cloud.network.heartbeat.server.netty.socket.NettyServerPermeateClientVisitorSocket;
import org.springframework.stereotype.Component;
import org.wu.framework.core.utils.ObjectUtils;
import org.framework.lazy.cloud.network.heartbeat.common.ChannelContext;
@ -71,9 +71,9 @@ public class ServerHandleReportDisconnectTypeAdvanced extends AbstractHandleRepo
channel.writeAndFlush(stagingNettyProxyMsg);
}
// 关闭绑定的访客端口
List<NettyVisitorSocket> visitorSockets = NettyClientVisitorContext.getVisitorSockets(new String(clientId));
List<NettyServerPermeateClientVisitorSocket> visitorSockets = NettyClientVisitorContext.getVisitorSockets(new String(clientId));
if (!ObjectUtils.isEmpty(visitorSockets)) {
for (NettyVisitorSocket visitorSocket : visitorSockets) {
for (NettyServerPermeateClientVisitorSocket visitorSocket : visitorSockets) {
int visitorPort = visitorSocket.getVisitorPort();
try {
visitorSocket.close();

View File

@ -10,7 +10,6 @@ import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPenetrat
import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorContext;
import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext;
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
import org.framework.lazy.cloud.network.heartbeat.common.allocator.NettyRecvByteBufAllocator;
import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.VisitorFilter;
import java.io.IOException;
@ -22,7 +21,7 @@ import java.io.IOException;
* @see NettyClientVisitorContext
*/
@Slf4j
public class NettyVisitorSocket {
public class NettyServerPermeateClientVisitorSocket {
private final EventLoopGroup bossGroup = new NioEventLoopGroup();
private final EventLoopGroup workerGroup = new NioEventLoopGroup();
private final VisitorFilter visitorFilter;
@ -31,7 +30,7 @@ public class NettyVisitorSocket {
@Getter
private final int visitorPort;
public NettyVisitorSocket(VisitorFilter visitorFilter, String clientId, int visitorPort) {
public NettyServerPermeateClientVisitorSocket(VisitorFilter visitorFilter, String clientId, int visitorPort) {
this.visitorFilter = visitorFilter;
this.clientId = clientId;
this.visitorPort = visitorPort;
@ -209,7 +208,7 @@ public class NettyVisitorSocket {
return this;
}
public NettyVisitorSocket build() {
public NettyServerPermeateClientVisitorSocket build() {
if (clientId == null) {
throw new IllegalArgumentException("clientId must not null");
}
@ -231,7 +230,7 @@ public class NettyVisitorSocket {
.visitorId(visitorId).build();
VisitorFilter visitorFilter = new VisitorFilter(internalNetworkPenetrationRealClient, channelFlowAdapter);
return new NettyVisitorSocket(visitorFilter, clientId, visitorPort);
return new NettyServerPermeateClientVisitorSocket(visitorFilter, clientId, visitorPort);
}

View File

@ -1,7 +1,7 @@
package org.framework.lazy.cloud.network.heartbeat.server.standalone.application.impl;
import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorContext;
import org.framework.lazy.cloud.network.heartbeat.server.netty.socket.NettyVisitorSocket;
import org.framework.lazy.cloud.network.heartbeat.server.netty.socket.NettyServerPermeateClientVisitorSocket;
import org.framework.lazy.cloud.network.heartbeat.server.properties.ServerNodeProperties;
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyInternalNetworkPenetrationMappingApplication;
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.assembler.InternalNetworkPenetrationMappingDTOAssembler;
@ -157,15 +157,15 @@ public class LazyInternalNetworkPenetrationMappingApplicationImpl implements Laz
*/
private void changeCloseSocket(String clientId, Integer visitorPort) {
// 删除 客户端映射
List<NettyVisitorSocket> nettyVisitorSocketList = NettyClientVisitorContext.getVisitorSockets(clientId);
if (!ObjectUtils.isEmpty(nettyVisitorSocketList)) {
nettyVisitorSocketList = nettyVisitorSocketList.stream()
.filter(nettyVisitorSocket -> nettyVisitorSocket.getVisitorPort() == visitorPort).toList();
if (!ObjectUtils.isEmpty(nettyVisitorSocketList)) {
List<NettyServerPermeateClientVisitorSocket> nettyServerPermeateClientVisitorSocketList = NettyClientVisitorContext.getVisitorSockets(clientId);
if (!ObjectUtils.isEmpty(nettyServerPermeateClientVisitorSocketList)) {
nettyServerPermeateClientVisitorSocketList = nettyServerPermeateClientVisitorSocketList.stream()
.filter(nettyServerPermeateClientVisitorSocket -> nettyServerPermeateClientVisitorSocket.getVisitorPort() == visitorPort).toList();
if (!ObjectUtils.isEmpty(nettyServerPermeateClientVisitorSocketList)) {
// 关闭端口
for (NettyVisitorSocket nettyVisitorSocket : nettyVisitorSocketList) {
for (NettyServerPermeateClientVisitorSocket nettyServerPermeateClientVisitorSocket : nettyServerPermeateClientVisitorSocketList) {
try {
nettyVisitorSocket.close();
nettyServerPermeateClientVisitorSocket.close();
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}
@ -282,7 +282,7 @@ public class LazyInternalNetworkPenetrationMappingApplicationImpl implements Laz
*/
private void createVisitor(String clientId, String clientTargetIp, Integer clientTargetPort, Integer visitorPort) {
// 更新 客户端映射
NettyVisitorSocket nettyVisitorSocket = NettyVisitorSocket.NettyVisitorSocketBuilder
NettyServerPermeateClientVisitorSocket nettyServerPermeateClientVisitorSocket = NettyServerPermeateClientVisitorSocket.NettyVisitorSocketBuilder
.builder()
.builderClientId(clientId)
.builderClientTargetIp(clientTargetIp)
@ -291,7 +291,7 @@ public class LazyInternalNetworkPenetrationMappingApplicationImpl implements Laz
.builderChannelFlowAdapter(channelFlowAdapter)
.build();
try {
nettyVisitorSocket.startVisitorServer();
nettyServerPermeateClientVisitorSocket.startVisitorServer();
} catch (Exception e) {
log.error("客户端:{},网络端口:{},开放失败", clientId, visitorPort);
throw new RuntimeException(e);

View File

@ -1,7 +1,7 @@
package org.framework.lazy.cloud.network.heartbeat.server.standalone.application.impl;
import org.framework.lazy.cloud.network.heartbeat.server.netty.socket.NettyVisitorSocket;
import org.framework.lazy.cloud.network.heartbeat.server.netty.socket.NettyServerPermeateClientVisitorSocket;
import org.framework.lazy.cloud.network.heartbeat.server.properties.ServerNodeProperties;
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.LazyNettyClientStateApplication;
import org.framework.lazy.cloud.network.heartbeat.server.standalone.application.assembler.NettyClientStateDTOAssembler;
@ -170,11 +170,11 @@ public class LazyNettyClientStateApplicationImpl implements LazyNettyClientState
// 心跳关闭
ChannelContext.clear(clientId);
// 关闭访客
List<NettyVisitorSocket> nettyVisitorSocketList = NettyClientVisitorContext.getVisitorSockets(clientId);
if (!ObjectUtils.isEmpty(nettyVisitorSocketList)) {
for (NettyVisitorSocket nettyVisitorSocket : nettyVisitorSocketList) {
List<NettyServerPermeateClientVisitorSocket> nettyServerPermeateClientVisitorSocketList = NettyClientVisitorContext.getVisitorSockets(clientId);
if (!ObjectUtils.isEmpty(nettyServerPermeateClientVisitorSocketList)) {
for (NettyServerPermeateClientVisitorSocket nettyServerPermeateClientVisitorSocket : nettyServerPermeateClientVisitorSocketList) {
try {
nettyVisitorSocket.close();
nettyServerPermeateClientVisitorSocket.close();
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}