diff --git a/client+/neutrino-proxy-client-starter/pom.xml b/client+/neutrino-proxy-client-starter/pom.xml index fcad790c..9c2a34ba 100644 --- a/client+/neutrino-proxy-client-starter/pom.xml +++ b/client+/neutrino-proxy-client-starter/pom.xml @@ -73,6 +73,18 @@ ${mica-auto.vaersion} provided + + + com.jcraft + jsch + 0.1.54 + + + com.jcraft + jzlib + 1.1.3 + + diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/SpringProxyClient.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/SpringProxyClient.java index 082df470..29315de8 100644 --- a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/SpringProxyClient.java +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/SpringProxyClient.java @@ -16,7 +16,4 @@ public class SpringProxyClient { SpringApplication.run(SpringProxyClient.class, args); } - - - } diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/ProxyConfiguration.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/ProxyConfiguration.java index 4e33afec..52a39dd6 100644 --- a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/ProxyConfiguration.java +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/config/ProxyConfiguration.java @@ -1,8 +1,6 @@ package org.dromara.neutrinoproxy.client.starter.config; -import org.dromara.neutrinoproxy.client.sdk.config.IBeanHandler; import org.dromara.neutrinoproxy.client.sdk.handler.ProxyMessageFactory; -import org.dromara.neutrinoproxy.client.starter.handler.BeanHandler; import org.dromara.neutrinoproxy.client.starter.util.ApplicationContextUtils; import org.springframework.stereotype.Component; @@ -15,22 +13,6 @@ import org.springframework.stereotype.Component; @Component public class ProxyConfiguration extends ProxyMessageFactory { - - @Override - public IBeanHandler getBeanHandler() { - return new BeanHandler(); - } - - @Override - public void beanInject(String beanName, Object bean) { - ApplicationContextUtils.addBean(beanName,bean); - } - - @Override - public Object getBean(String beanName,Class c) { - return ApplicationContextUtils.getBean(beanName,c); - } - @Override public void stop() { ApplicationContextUtils.stop(); diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/handler/BeanHandler.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/handler/BeanHandler.java deleted file mode 100644 index 1d24fdff..00000000 --- a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/handler/BeanHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.dromara.neutrinoproxy.client.starter.handler; - -import cn.hutool.core.bean.BeanUtil; -import org.dromara.neutrinoproxy.client.sdk.config.IBeanHandler; -import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig; -import org.dromara.neutrinoproxy.client.starter.config.SpringProxyConfig; -import org.dromara.neutrinoproxy.client.starter.util.ApplicationContextUtils; -import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher; - - -/** - * - * @author: gc.x - * @date: 2024/1/21 - */ - -public class BeanHandler implements IBeanHandler { - - - @Override - public Dispatcher getDispatcher(){ - return (Dispatcher) ApplicationContextUtils.getBean("dispatcher"); - } - - @Override - public ProxyConfig getProxyConfig() { - SpringProxyConfig springProxyConfig =ApplicationContextUtils.getBean(SpringProxyConfig.class); - ProxyConfig proxyConfig = BeanUtil.toBean(springProxyConfig, ProxyConfig.class); - return proxyConfig; - } -} diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionFactory.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionFactory.java new file mode 100644 index 00000000..8f0748ca --- /dev/null +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionFactory.java @@ -0,0 +1,10 @@ +package org.dromara.neutrinoproxy.client.starter.ssh; + +/** + * + * @author: gc.x + * @date: 2024/1/21 + */ +public class SSHConnectionFactory { + public static final SSHConnectionService factory = new SSHConnectionServiceImpl(); +} diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionService.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionService.java new file mode 100644 index 00000000..76007126 --- /dev/null +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionService.java @@ -0,0 +1,13 @@ +package org.dromara.neutrinoproxy.client.starter.ssh; + +/** + * + * @author: gc.x + * @date: 2024/1/21 + */ +public interface SSHConnectionService { + String addConnection(String host, String username, String password, int localPort, int remotePort,String remoteHost); + void openTunnel(String sshId); + void closeTunnel(String sshId); + void closeAllTunnels(); +} \ No newline at end of file diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionServiceImpl.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionServiceImpl.java new file mode 100644 index 00000000..b5f38f60 --- /dev/null +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHConnectionServiceImpl.java @@ -0,0 +1,64 @@ +package org.dromara.neutrinoproxy.client.starter.ssh; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +/** + * + * @author: gc.x + * @date: 2024/1/21 + */ +public class SSHConnectionServiceImpl implements SSHConnectionService { + + private Map connections; + private Map factories; + + public SSHConnectionServiceImpl() { + connections = new HashMap<>(); + factories = new HashMap<>(); + } + + @Override + public String addConnection(String host, String username, String password, int localPort, int remotePort,String remoteHost) { + SSHProxy connection = new SSHProxy(); + String sshId = UUID.randomUUID().toString(); + connection.setSshId(sshId); + connection.setHost(host); + connection.setUsername(username); + connection.setPassword(password); + connection.setLocalPort(localPort); + connection.setRemotePort(remotePort); + connection.setRemoteHost(remoteHost); + connections.put(connection.getSshId(), connection); + return sshId; + } + + @Override + public void openTunnel(String sshId) { + SSHProxy connection = connections.get(sshId); + if (connection != null && !factories.containsKey(sshId)) { + SSHProxyFactory factory = new SSHProxyFactoryImpl(connection); + factory.openTunnel(); + factories.put(sshId, factory); + } + } + + @Override + public void closeTunnel(String sshId) { + SSHProxyFactory factory = factories.get(sshId); + + if (factory != null) { + factory.closeTunnel(); + factories.remove(sshId); + } + } + + @Override + public void closeAllTunnels() { + for (Map.Entry entry : factories.entrySet()) { + SSHProxyFactory factory = entry.getValue(); + factory.closeTunnel(); + } + factories.clear(); + } +} \ No newline at end of file diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxy.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxy.java new file mode 100644 index 00000000..0de09ee4 --- /dev/null +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxy.java @@ -0,0 +1,27 @@ +package org.dromara.neutrinoproxy.client.starter.ssh; + +import lombok.Data; +/** + * + * @author: gc.x + * @date: 2024/1/21 + */ +@Data +public class SSHProxy { + private String sshId; + + //跳板机服务器公网IP + private String host; + //跳板机服务器登录名 + private String username; + //跳板机登陆密码 + private String password; + //本地的端口 + private int localPort; + + //需代理服务器端口号 + private int remotePort; + //需代理服务器ip + private String remoteHost; + +} \ No newline at end of file diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxyFactory.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxyFactory.java new file mode 100644 index 00000000..6d00d1ed --- /dev/null +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxyFactory.java @@ -0,0 +1,10 @@ +package org.dromara.neutrinoproxy.client.starter.ssh; +/** + * + * @author: gc.x + * @date: 2024/1/21 + */ +public interface SSHProxyFactory { + void openTunnel(); + void closeTunnel(); +} \ No newline at end of file diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxyFactoryImpl.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxyFactoryImpl.java new file mode 100644 index 00000000..44a8e6e6 --- /dev/null +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/SSHProxyFactoryImpl.java @@ -0,0 +1,63 @@ +package org.dromara.neutrinoproxy.client.starter.ssh; + +import com.jcraft.jsch.JSch; +import com.jcraft.jsch.Session; +import lombok.extern.slf4j.Slf4j; +/** + * + * @author: gc.x + * @date: 2024/1/21 + */ +@Slf4j +public class SSHProxyFactoryImpl implements SSHProxyFactory { + private SSHProxy connection; + private Session session; + + public SSHProxyFactoryImpl(SSHProxy connection) { + this.connection = connection; + } + + @Override + public void openTunnel() { + try { + JSch jsch = new JSch(); + session = jsch.getSession(connection.getUsername(), connection.getHost(), 22); + session.setPassword(connection.getPassword()); + // 开启调试模式,打印更多详细日志 + java.util.Properties config = new java.util.Properties(); + config.put("StrictHostKeyChecking", "no"); + config.put("userauth.gssapi-with-mic", "no"); + config.put("compression.s2c", "zlib@openssh.com,zlib,none"); + config.put("compression.c2s", "zlib@openssh.com,zlib,none"); + session.setConfig(config); + session.setDaemonThread(true); + JSch.setLogger(new com.jcraft.jsch.Logger() { + public boolean isEnabled(int level) { + return true; + } + public void log(int level, String message) { + log.info("JSch - " + level + ": " + message); + } + }); + + int assignedPort = session.setPortForwardingL(connection.getLocalPort(), connection.getRemoteHost(), connection.getRemotePort()); + session.connect(10000); + if (assignedPort != -1) { + log.info("SSH connection established successfully!"); + } else { + log.info("Failed to establish SSH connection!"); + } + } catch (Exception e) { + // 异常处理 + e.printStackTrace(); + } + } + + @Override + public void closeTunnel() { + if (session != null && session.isConnected()) { + session.disconnect(); + log.info("SSH connection closed successfully!"); + } + } +} \ No newline at end of file diff --git a/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/Test.java b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/Test.java new file mode 100644 index 00000000..6ef517de --- /dev/null +++ b/client+/neutrino-proxy-client-starter/src/main/java/org/dromara/neutrinoproxy/client/starter/ssh/Test.java @@ -0,0 +1,22 @@ +package org.dromara.neutrinoproxy.client.starter.ssh; +/** + * + * @author: gc.x + * @date: 2024/1/21 + */ +public class Test { + public static void main(String[] args) { + + // 添加SSH连接 + String sshId = SSHConnectionFactory.factory.addConnection("194.36.209.398", "root", "xxxxxx", 1234, 6379,"xx.xx.xx.xx"); + SSHConnectionFactory.factory.openTunnel(sshId); + try { + Thread.sleep(100000000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + // 关闭SSH隧道 + SSHConnectionFactory.factory.closeTunnel(sshId); + + } +} diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/IBeanHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/IBeanHandler.java deleted file mode 100644 index 266d5b3d..00000000 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/IBeanHandler.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.dromara.neutrinoproxy.client.sdk.config; - -import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher; - -public interface IBeanHandler { - Dispatcher getDispatcher(); - ProxyConfig getProxyConfig(); -} diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/IProxyConfiguration.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/IProxyConfiguration.java index 007eb8ba..9fba8a20 100644 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/IProxyConfiguration.java +++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/IProxyConfiguration.java @@ -14,7 +14,6 @@ import org.dromara.neutrinoproxy.client.sdk.core.*; import org.dromara.neutrinoproxy.client.sdk.util.ProxyUtil; import org.dromara.neutrinoproxy.core.ProxyMessageDecoder; import org.dromara.neutrinoproxy.core.ProxyMessageEncoder; -import org.dromara.neutrinoproxy.core.aot.NeutrinoCoreRuntimeNativeRegistrar; import java.net.InetSocketAddress; @@ -26,7 +25,6 @@ import java.net.InetSocketAddress; public abstract class IProxyConfiguration { - public abstract IBeanHandler getBeanHandler(); public NioEventLoopGroup tunnelWorkGroup(ProxyConfig proxyConfig) { return new NioEventLoopGroup(proxyConfig.getTunnel().getThreadCount()); @@ -76,7 +74,7 @@ public abstract class IProxyConfiguration { proxyConfig.getProtocol().getLengthAdjustment(), proxyConfig.getProtocol().getInitialBytesToStrip())); ch.pipeline().addLast(new ProxyMessageEncoder()); ch.pipeline().addLast(new IdleStateHandler(proxyConfig.getProtocol().getReadIdleTime(), proxyConfig.getProtocol().getWriteIdleTime(), proxyConfig.getProtocol().getAllIdleTimeSeconds())); - ch.pipeline().addLast(new CmdChannelHandler(getBeanHandler())); + ch.pipeline().addLast(new CmdChannelHandler()); } }); return bootstrap; @@ -103,7 +101,7 @@ public abstract class IProxyConfiguration { proxyConfig.getProtocol().getLengthAdjustment(), proxyConfig.getProtocol().getInitialBytesToStrip())); ch.pipeline().addLast(new ProxyMessageEncoder()); ch.pipeline().addLast(new IdleStateHandler(proxyConfig.getProtocol().getReadIdleTime(), proxyConfig.getProtocol().getWriteIdleTime(), proxyConfig.getProtocol().getAllIdleTimeSeconds())); - ch.pipeline().addLast(new TcpProxyChannelHandler(getBeanHandler())); + ch.pipeline().addLast(new TcpProxyChannelHandler()); } }); return bootstrap; @@ -129,7 +127,7 @@ public abstract class IProxyConfiguration { proxyConfig.getProtocol().getLengthAdjustment(), proxyConfig.getProtocol().getInitialBytesToStrip())); ch.pipeline().addLast(new ProxyMessageEncoder()); ch.pipeline().addLast(new IdleStateHandler(proxyConfig.getProtocol().getReadIdleTime(), proxyConfig.getProtocol().getWriteIdleTime(), proxyConfig.getProtocol().getAllIdleTimeSeconds())); - ch.pipeline().addLast(new UdpProxyChannelHandler(getBeanHandler())); + ch.pipeline().addLast(new UdpProxyChannelHandler()); } }); return bootstrap; 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 190eab7a..a3c8fde4 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 @@ -6,11 +6,12 @@ import io.netty.channel.ChannelOption; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.timeout.IdleStateEvent; import lombok.extern.slf4j.Slf4j; -import org.dromara.neutrinoproxy.client.sdk.config.IBeanHandler; import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig; +import org.dromara.neutrinoproxy.client.sdk.handler.ProxyMessageFactory; import org.dromara.neutrinoproxy.client.sdk.util.ProxyUtil; import org.dromara.neutrinoproxy.core.Constants; import org.dromara.neutrinoproxy.core.ProxyMessage; +import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher; /** * 处理与服务端之间的数据传输 @@ -20,11 +21,10 @@ import org.dromara.neutrinoproxy.core.ProxyMessage; @Slf4j public class CmdChannelHandler extends SimpleChannelInboundHandler{ private static volatile Boolean transferLogEnable = Boolean.FALSE; - private final IBeanHandler beanHandler; - public CmdChannelHandler(IBeanHandler beanHandler) { - this.beanHandler = beanHandler; - ProxyConfig proxyConfig = beanHandler.getProxyConfig(); + + public CmdChannelHandler() { + ProxyConfig proxyConfig = (ProxyConfig) ProxyMessageFactory.beanManager.get("proxyConfig").getBean(); if (null != proxyConfig.getClient() && null != proxyConfig.getTunnel().getHeartbeatLogEnable()) { transferLogEnable = proxyConfig.getTunnel().getHeartbeatLogEnable(); } @@ -35,7 +35,9 @@ public class CmdChannelHandler extends SimpleChannelInboundHandler if (ProxyMessage.TYPE_HEARTBEAT != proxyMessage.getType() || transferLogEnable) { log.debug("[CMD Channel]Client CmdChannel recieved proxy message, type is {}", proxyMessage.getType()); } - beanHandler.getDispatcher().dispatch(ctx, proxyMessage); +// beanHandler.getDispatcher().dispatch(ctx, proxyMessage); + Dispatcher dispatcher = (Dispatcher) ProxyMessageFactory.beanManager.get("dispatcher").getBean(); + dispatcher.dispatch(ctx,proxyMessage); } @Override diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/TcpProxyChannelHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/TcpProxyChannelHandler.java index 41f1c7ff..5daf8a9e 100644 --- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/TcpProxyChannelHandler.java +++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/TcpProxyChannelHandler.java @@ -6,10 +6,11 @@ import io.netty.channel.ChannelOption; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.timeout.IdleStateEvent; import lombok.extern.slf4j.Slf4j; -import org.dromara.neutrinoproxy.client.sdk.config.IBeanHandler; +import org.dromara.neutrinoproxy.client.sdk.handler.ProxyMessageFactory; import org.dromara.neutrinoproxy.client.sdk.util.ProxyUtil; import org.dromara.neutrinoproxy.core.Constants; import org.dromara.neutrinoproxy.core.ProxyMessage; +import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher; /** * 处理与服务端之间的数据传输 @@ -19,16 +20,14 @@ import org.dromara.neutrinoproxy.core.ProxyMessage; @Slf4j public class TcpProxyChannelHandler extends SimpleChannelInboundHandler { - private IBeanHandler beanHandler; - public TcpProxyChannelHandler(IBeanHandler beanHandler) { - this.beanHandler = beanHandler; - } + @Override protected void channelRead0(ChannelHandlerContext ctx, ProxyMessage proxyMessage) throws Exception { if (ProxyMessage.TYPE_HEARTBEAT != proxyMessage.getType()) { log.debug("[TCP Proxy Channel]Client ProxyChannel recieved proxy message, type is {}", proxyMessage.getType()); } - beanHandler.getDispatcher().dispatch(ctx, proxyMessage); + Dispatcher dispatcher = (Dispatcher) ProxyMessageFactory.beanManager.get("dispatcher").getBean(); + dispatcher.dispatch(ctx,proxyMessage); } @Override @@ -54,13 +53,13 @@ public class TcpProxyChannelHandler extends SimpleChannelInboundHandler { - private IBeanHandler beanHandler; - public UdpProxyChannelHandler(IBeanHandler beanHandler) { - this.beanHandler = beanHandler; - } @Override - protected void channelRead0(ChannelHandlerContext ctx, ProxyMessage proxyMessage) throws Exception { + protected void channelRead0(ChannelHandlerContext ctx, ProxyMessage proxyMessage) { if (ProxyMessage.TYPE_HEARTBEAT != proxyMessage.getType()) { log.debug("[UDP Proxy Channel]Client ProxyChannel recieved proxy message, type is {}", proxyMessage.getType()); } - beanHandler.getDispatcher().dispatch(ctx, proxyMessage); + Dispatcher dispatcher = (Dispatcher) ProxyMessageFactory.beanManager.get("dispatcher").getBean(); + dispatcher.dispatch(ctx,proxyMessage); } @Override @@ -54,13 +52,13 @@ public class UdpProxyChannelHandler extends SimpleChannelInboundHandler c); - public abstract void stop(); public abstract boolean isAotRuntime(); + public static Map beanManager=new ConcurrentHashMap<>(); + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class BeanInfo{ + private String beanName; + private T bean; + private Class beanClass; + } public void start(ProxyConfig proxyConfig){ init(proxyConfig); IAbProxyClientService clientService=new IAbProxyClientService(); clientService.setProxyConfig(proxyConfig); - clientService.setCmdTunnelBootstrap((Bootstrap) getBean("cmdTunnelBootstrap",Bootstrap.class)); - clientService.setUdpServerBootstrap((Bootstrap) getBean("udpServerBootstrap",Bootstrap.class)); + clientService.setCmdTunnelBootstrap((Bootstrap)beanManager.get("cmdTunnelBootstrap").getBean()); + clientService.setUdpServerBootstrap((Bootstrap)beanManager.get("udpServerBootstrap").getBean()); clientService.setIsAotRuntime(isAotRuntime()); clientService.init(); } public void init(ProxyConfig proxyConfig){ + beanManager.put("proxyConfig",BeanInfo.builder().bean(proxyConfig).beanName("proxyConfig").beanClass(ProxyConfig.class).build()); NioEventLoopGroup tunnelWorkGroup = super.tunnelWorkGroup(proxyConfig); - beanInject("tunnelWorkGroup",tunnelWorkGroup); + beanManager.put("tunnelWorkGroup",BeanInfo.builder().bean(tunnelWorkGroup).beanName("tunnelWorkGroup").beanClass(NioEventLoopGroup.class).build()); NioEventLoopGroup tcpRealServerWorkGroup = super.tcpRealServerWorkGroup(proxyConfig); - beanInject("tcpRealServerWorkGroup",tcpRealServerWorkGroup); + beanManager.put("tcpRealServerWorkGroup",BeanInfo.builder().bean(tcpRealServerWorkGroup).beanName("tcpRealServerWorkGroup").beanClass(NioEventLoopGroup.class).build()); NioEventLoopGroup udpServerGroup = super.udpServerGroup(proxyConfig); - beanInject("udpServerGroup",udpServerGroup); + beanManager.put("udpServerGroup",BeanInfo.builder().bean(udpServerGroup).beanName("udpServerGroup").beanClass(NioEventLoopGroup.class).build()); NioEventLoopGroup udpWorkGroup = super.udpWorkGroup(proxyConfig); - beanInject("udpWorkGroup",udpWorkGroup); + beanManager.put("udpWorkGroup",BeanInfo.builder().bean(udpWorkGroup).beanName("udpWorkGroup").beanClass(NioEventLoopGroup.class).build()); Bootstrap cmdTunnelBootstrap = super.cmdTunnelBootstrap(proxyConfig, tunnelWorkGroup); - beanInject("cmdTunnelBootstrap",cmdTunnelBootstrap); + beanManager.put("cmdTunnelBootstrap",BeanInfo.builder().bean(cmdTunnelBootstrap).beanName("cmdTunnelBootstrap").beanClass(Bootstrap.class).build()); Bootstrap tcpProxyTunnelBootstrap = super.tcpProxyTunnelBootstrap(proxyConfig, tunnelWorkGroup); - beanInject("tcpProxyTunnelBootstrap",tcpProxyTunnelBootstrap); + beanManager.put("tcpProxyTunnelBootstrap",BeanInfo.builder().bean(tcpProxyTunnelBootstrap).beanName("tcpProxyTunnelBootstrap").beanClass(Bootstrap.class).build()); Bootstrap udpProxyTunnelBootstrap = super.udpProxyTunnelBootstrap(proxyConfig, tunnelWorkGroup); - beanInject("udpProxyTunnelBootstrap",udpProxyTunnelBootstrap); + beanManager.put("udpProxyTunnelBootstrap",BeanInfo.builder().bean(udpProxyTunnelBootstrap).beanName("udpProxyTunnelBootstrap").beanClass(Bootstrap.class).build()); Bootstrap realServerBootstrap = super.realServerBootstrap(proxyConfig, tcpRealServerWorkGroup); - beanInject("realServerBootstrap",realServerBootstrap); + beanManager.put("realServerBootstrap",BeanInfo.builder().bean(realServerBootstrap).beanName("realServerBootstrap").beanClass(Bootstrap.class).build()); Bootstrap udpServerBootstrap = super.udpServerBootstrap(proxyConfig, udpServerGroup, udpWorkGroup); - beanInject("udpServerBootstrap",udpServerBootstrap); + beanManager.put("udpServerBootstrap",BeanInfo.builder().bean(udpServerBootstrap).beanName("udpServerBootstrap").beanClass(Bootstrap.class).build()); dispatcher(proxyConfig, tcpProxyTunnelBootstrap, realServerBootstrap); } public void dispatcher(ProxyConfig proxyConfig, Bootstrap tcpProxyTunnelBootstrap, Bootstrap realServerBootstrap) { @@ -72,6 +86,6 @@ public abstract class ProxyMessageFactory extends IProxyConfiguration { Dispatcher dispatcher = new DefaultDispatcher<>("MessageDispatcher", list, proxyMessage -> ProxyDataTypeEnum.of((int)proxyMessage.getType()) == null ? null : ProxyDataTypeEnum.of((int)proxyMessage.getType()).getName()); - beanInject("dispatcher",dispatcher); + beanManager.put("dispatcher",BeanInfo.builder().bean(dispatcher).beanName("dispatcher").beanClass(Dispatcher.class).build()); } } diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java index 2c9ae5bc..a7fccb4d 100644 --- a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java +++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java @@ -1,13 +1,10 @@ package org.dromara.neutrinoproxy.client.config; -import org.dromara.neutrinoproxy.client.handler.BeanHandler; -import org.dromara.neutrinoproxy.client.sdk.config.IBeanHandler; import org.dromara.neutrinoproxy.client.sdk.handler.ProxyMessageFactory; import org.dromara.neutrinoproxy.core.aot.NeutrinoCoreRuntimeNativeRegistrar; import org.noear.solon.Solon; import org.noear.solon.annotation.Bean; import org.noear.solon.annotation.Configuration; -import org.noear.solon.core.BeanWrap; import org.noear.solon.core.runtime.NativeDetector; /** @@ -18,25 +15,6 @@ import org.noear.solon.core.runtime.NativeDetector; @Configuration public class ProxyConfiguration extends ProxyMessageFactory { - - @Override - public IBeanHandler getBeanHandler() { - return new BeanHandler(); - } - - @Override - public void beanInject(String beanName, Object bean) { - //包装Bean(指定名字的) - BeanWrap beanWrap = Solon.context().wrap(beanName, bean); - //以名字注册 - Solon.context().putWrap(beanName, beanWrap); - } - - @Override - public Object getBean(String beanName,Class c) { - return Solon.context().getBean(beanName); - } - @Override public void stop() { Solon.stop(); diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/BeanHandler.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/BeanHandler.java deleted file mode 100644 index 92107bcf..00000000 --- a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/BeanHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.dromara.neutrinoproxy.client.handler; - -import cn.hutool.core.bean.BeanUtil; -import org.dromara.neutrinoproxy.client.config.SolonProxyConfig; -import org.dromara.neutrinoproxy.client.sdk.config.IBeanHandler; -import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig; -import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher; -import org.noear.solon.Solon; - - - -public class BeanHandler implements IBeanHandler { - - - @Override - public Dispatcher getDispatcher(){ - return Solon.context().getBean("dispatcher"); - } - - @Override - public ProxyConfig getProxyConfig() { - SolonProxyConfig solonProxyConfig = Solon.context().getBean(SolonProxyConfig.class); - ProxyConfig proxyConfig = BeanUtil.toBean(solonProxyConfig, ProxyConfig.class); - return proxyConfig; - } -}