diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/CmdChannelHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/CmdChannelHandler.java index f4bb1c67..190eab7a 100644 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/CmdChannelHandler.java +++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/CmdChannelHandler.java @@ -20,7 +20,7 @@ import org.dromara.neutrinoproxy.core.ProxyMessage; @Slf4j public class CmdChannelHandler extends SimpleChannelInboundHandler{ private static volatile Boolean transferLogEnable = Boolean.FALSE; - private IBeanHandler beanHandler; + private final IBeanHandler beanHandler; public CmdChannelHandler(IBeanHandler beanHandler) { this.beanHandler = beanHandler; @@ -31,7 +31,7 @@ public class CmdChannelHandler extends SimpleChannelInboundHandler } @Override - protected void channelRead0(ChannelHandlerContext ctx, ProxyMessage proxyMessage) throws Exception { + protected void channelRead0(ChannelHandlerContext ctx, ProxyMessage proxyMessage){ if (ProxyMessage.TYPE_HEARTBEAT != proxyMessage.getType() || transferLogEnable) { log.debug("[CMD Channel]Client CmdChannel recieved proxy message, type is {}", proxyMessage.getType()); } @@ -58,13 +58,13 @@ public class CmdChannelHandler extends SimpleChannelInboundHandler } @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause){ log.error("[CMD Channel]Client CmdChannel Error channelId:{}", ctx.channel().id().asLongText(), cause); ctx.close(); } @Override - public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { + public void userEventTriggered(ChannelHandlerContext ctx, Object evt){ if(evt instanceof IdleStateEvent) { IdleStateEvent event = (IdleStateEvent)evt; switch (event.state()) { diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageAuthHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageAuthHandler.java index f85ee936..a49e96a4 100644 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageAuthHandler.java +++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageAuthHandler.java @@ -19,9 +19,8 @@ import org.dromara.neutrinoproxy.core.dispatcher.Match; @Slf4j @Match(type = Constants.ProxyDataTypeName.AUTH) public class ProxyMessageAuthHandler implements ProxyMessageHandler { - private ProxyConfig proxyConfig; - - private Runnable stop; + private final ProxyConfig proxyConfig; + private final Runnable stop; public ProxyMessageAuthHandler(ProxyConfig proxyConfig,Runnable stop){ this.proxyConfig=proxyConfig; diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageConnectHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageConnectHandler.java index 804c2cc2..53f5e6f3 100644 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageConnectHandler.java +++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageConnectHandler.java @@ -21,9 +21,9 @@ import org.dromara.neutrinoproxy.core.dispatcher.Match; @Match(type = Constants.ProxyDataTypeName.CONNECT) public class ProxyMessageConnectHandler implements ProxyMessageHandler { - private Bootstrap tcpProxyTunnelBootstrap; - private Bootstrap realServerBootstrap; - private ProxyConfig proxyConfig; + private final Bootstrap tcpProxyTunnelBootstrap; + private final Bootstrap realServerBootstrap; + private final ProxyConfig proxyConfig; public ProxyMessageConnectHandler(Bootstrap tcpProxyTunnelBootstrap,Bootstrap realServerBootstrap,ProxyConfig proxyConfig){ this.proxyConfig=proxyConfig; @@ -39,48 +39,43 @@ public class ProxyMessageConnectHandler implements ProxyMessageHandler { String ip = serverInfo[0]; int port = Integer.parseInt(serverInfo[1]); // 连接真实的、被代理的服务 - realServerBootstrap.connect(ip, port).addListener(new ChannelFutureListener() { + realServerBootstrap.connect(ip, port).addListener((ChannelFutureListener) future -> { + // 连接后端服务器成功 + if (future.isSuccess()) { + final Channel realServerChannel = future.channel(); - @Override - public void operationComplete(ChannelFuture future) throws Exception { + realServerChannel.config().setOption(ChannelOption.AUTO_READ, false); - // 连接后端服务器成功 - if (future.isSuccess()) { - final Channel realServerChannel = future.channel(); + // 获取连接 + ProxyUtil.borrowTcpProxyChanel(tcpProxyTunnelBootstrap, new ProxyChannelBorrowListener() { - realServerChannel.config().setOption(ChannelOption.AUTO_READ, false); + @Override + public void success(Channel channel) { + // 连接绑定 + channel.attr(Constants.NEXT_CHANNEL).set(realServerChannel); + realServerChannel.attr(Constants.NEXT_CHANNEL).set(channel); - // 获取连接 - ProxyUtil.borrowTcpProxyChanel(tcpProxyTunnelBootstrap, new ProxyChannelBorrowListener() { + // 远程绑定 + channel.writeAndFlush(ProxyMessage.buildConnectMessage(visitorId + "@" + proxyConfig.getTunnel().getLicenseKey())); - @Override - public void success(Channel channel) { - // 连接绑定 - channel.attr(Constants.NEXT_CHANNEL).set(realServerChannel); - realServerChannel.attr(Constants.NEXT_CHANNEL).set(channel); + realServerChannel.config().setOption(ChannelOption.AUTO_READ, true); + ProxyUtil.addRealServerChannel(visitorId, realServerChannel); + ProxyUtil.setRealServerChannelVisitorId(realServerChannel, visitorId); + } - // 远程绑定 - channel.writeAndFlush(ProxyMessage.buildConnectMessage(visitorId + "@" + proxyConfig.getTunnel().getLicenseKey())); + @Override + public void error(Throwable cause) { + ProxyMessage proxyMessage1 = new ProxyMessage(); + proxyMessage1.setType(ProxyMessage.TYPE_DISCONNECT); + proxyMessage1.setInfo(visitorId); + cmdChannel.writeAndFlush(proxyMessage1); + } + }); - realServerChannel.config().setOption(ChannelOption.AUTO_READ, true); - ProxyUtil.addRealServerChannel(visitorId, realServerChannel); - ProxyUtil.setRealServerChannelVisitorId(realServerChannel, visitorId); - } - - @Override - public void error(Throwable cause) { - ProxyMessage proxyMessage = new ProxyMessage(); - proxyMessage.setType(ProxyMessage.TYPE_DISCONNECT); - proxyMessage.setInfo(visitorId); - cmdChannel.writeAndFlush(proxyMessage); - } - }); - - } else { - cmdChannel.writeAndFlush(ProxyMessage.buildDisconnectMessage(visitorId)); - } - } - }); + } else { + cmdChannel.writeAndFlush(ProxyMessage.buildDisconnectMessage(visitorId)); + } + }); } @Override diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageFactory.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageFactory.java index 7363810b..e71b15a0 100644 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageFactory.java +++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageFactory.java @@ -10,7 +10,6 @@ import org.dromara.neutrinoproxy.client.sdk.core.IAbProxyClientService; import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum; import org.dromara.neutrinoproxy.core.ProxyMessage; import org.dromara.neutrinoproxy.core.ProxyMessageHandler; -import org.dromara.neutrinoproxy.core.aot.NeutrinoCoreRuntimeNativeRegistrar; import org.dromara.neutrinoproxy.core.dispatcher.DefaultDispatcher; import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher; @@ -24,7 +23,7 @@ import java.util.List; public abstract class ProxyMessageFactory extends IProxyConfiguration { public abstract void beanInject(String beanName, Object t); - public abstract Object getBean(String beanName,Class c); + public abstract Object getBean(String beanName,Class c); public abstract void stop(); public abstract boolean isAotRuntime(); @@ -42,7 +41,6 @@ public abstract class ProxyMessageFactory extends IProxyConfiguration { public void init(ProxyConfig proxyConfig){ NioEventLoopGroup tunnelWorkGroup = super.tunnelWorkGroup(proxyConfig); beanInject("tunnelWorkGroup",tunnelWorkGroup); - Object tunnelWorkGroup1 = getBean("tunnelWorkGroup",NioEventLoopGroup.class); NioEventLoopGroup tcpRealServerWorkGroup = super.tcpRealServerWorkGroup(proxyConfig); beanInject("tcpRealServerWorkGroup",tcpRealServerWorkGroup); NioEventLoopGroup udpServerGroup = super.udpServerGroup(proxyConfig); @@ -59,13 +57,11 @@ public abstract class ProxyMessageFactory extends IProxyConfiguration { beanInject("realServerBootstrap",realServerBootstrap); Bootstrap udpServerBootstrap = super.udpServerBootstrap(proxyConfig, udpServerGroup, udpWorkGroup); beanInject("udpServerBootstrap",udpServerBootstrap); -// NeutrinoCoreRuntimeNativeRegistrar neutrinoCoreRuntimeNativeRegistrar = super.neutrinoCoreRuntimeNativeRegistrar(); -// beanInject("neutrinoCoreRuntimeNativeRegistrar",neutrinoCoreRuntimeNativeRegistrar); dispatcher(proxyConfig, tcpProxyTunnelBootstrap, realServerBootstrap); } public void dispatcher(ProxyConfig proxyConfig, Bootstrap tcpProxyTunnelBootstrap, Bootstrap realServerBootstrap) { List list = Lists.newArrayList( - new ProxyMessageAuthHandler(proxyConfig,()->stop()), + new ProxyMessageAuthHandler(proxyConfig, this::stop), new ProxyMessageConnectHandler(tcpProxyTunnelBootstrap,realServerBootstrap,proxyConfig), new ProxyMessageDisconnectHandler(), new ProxyMessageErrorHandler(), diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageConnectHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageConnectHandler.java index 03eff2eb..bdfb900c 100644 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageConnectHandler.java +++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageConnectHandler.java @@ -22,8 +22,8 @@ import org.dromara.neutrinoproxy.core.dispatcher.Match; @Match(type = Constants.ProxyDataTypeName.UDP_CONNECT) public class UdpProxyMessageConnectHandler implements ProxyMessageHandler { - private ProxyConfig proxyConfig; - private Bootstrap udpProxyTunnelBootstrap; + private final ProxyConfig proxyConfig; + private final Bootstrap udpProxyTunnelBootstrap; public UdpProxyMessageConnectHandler(ProxyConfig proxyConfig,Bootstrap udpProxyTunnelBootstrap){ this.proxyConfig=proxyConfig; diff --git a/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/SpringProxyConfig.java b/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/SpringProxyConfig.java index dc3c9117..ae728fb1 100644 --- a/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/SpringProxyConfig.java +++ b/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/SpringProxyConfig.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "neutrino.proxy") @Component public class SpringProxyConfig { + private Boolean enable=false; private Protocol protocol; private Tunnel tunnel; private Client client; diff --git a/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/core/ProxyClientService.java b/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/core/ProxyClientService.java index dea7bb83..2ff4cc5e 100644 --- a/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/core/ProxyClientService.java +++ b/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/core/ProxyClientService.java @@ -25,9 +25,11 @@ public class ProxyClientService implements ApplicationRunner { private SpringProxyConfig springProxyConfig; @Override public void run(ApplicationArguments args) { - log.info("启动中...."); - ProxyConfig proxyConfig = BeanUtil.toBean(springProxyConfig, ProxyConfig.class); - proxyConfiguration.start(proxyConfig); - log.info("启动成功...."); + if(springProxyConfig.getEnable()){ + log.info("启动中...."); + ProxyConfig proxyConfig = BeanUtil.toBean(springProxyConfig, ProxyConfig.class); + proxyConfiguration.start(proxyConfig); + log.info("启动成功...."); + } } } diff --git a/neutrino-proxy-client-starter/src/main/resources/application.yml b/neutrino-proxy-client-starter/src/main/resources/application.yml index e763c056..71da0060 100644 --- a/neutrino-proxy-client-starter/src/main/resources/application.yml +++ b/neutrino-proxy-client-starter/src/main/resources/application.yml @@ -50,3 +50,4 @@ neutrino: puppet-port-range: 10000-10500 # 是否开启隧道传输报文日志(日志级别为debug时开启才有效) transfer-log-enable: ${CLIENT_LOG:false} + enable: true