diff --git a/neutrino-proxy-client-sdk/pom.xml b/neutrino-proxy-client-sdk/pom.xml
index 9db95010..b1041eba 100644
--- a/neutrino-proxy-client-sdk/pom.xml
+++ b/neutrino-proxy-client-sdk/pom.xml
@@ -3,32 +3,75 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- neutrino-proxy
- org.dromara.neutrino-proxy
- ${revision}
- ../pom.xml
+ org.noear
+ solon-parent
+ 2.5.12
+
4.0.0
- jar
+ org.dromara.neutrino-proxy
neutrino-proxy-client-sdk
-
+ ${revision}
+ jar
+
+ 2.0.1
+ 1.18.30
+ 5.8.20
+
org.dromara.neutrino-proxy
neutrino-proxy-core
${revision}
+
+
+ org.noear
+ solon-test
+
+
+ org.noear
+ solon.aot
+
+
+ org.noear
+ solon.logging.logback
+
+
+ cn.hutool
+ hutool-core
+
+
+ cn.hutool
+ hutool-cache
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ com.google.guava
+ guava
+
+
- org.noear
- solon-lib
+ org.projectlombok
+ lombok
+ ${lombok.version}
- com.github.jsqlparser
- jsqlparser
- 4.5
- compile
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ 2.20.0
+ provided
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/ProxyConfig.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/ProxyConfig.java
index ba740bef..eb2abdfd 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/ProxyConfig.java
+++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/ProxyConfig.java
@@ -1,8 +1,6 @@
package org.dromara.neutrinoproxy.client.sdk.config;
import lombok.Data;
-import org.noear.solon.annotation.Component;
-import org.noear.solon.annotation.Inject;
/**
*
@@ -10,13 +8,9 @@ import org.noear.solon.annotation.Inject;
* @date: 2022/6/16
*/
@Data
-@Component
public class ProxyConfig {
- @Inject("${neutrino.proxy.protocol}")
private Protocol protocol;
- @Inject("${neutrino.proxy.tunnel}")
private Tunnel tunnel;
- @Inject("${neutrino.proxy.client}")
private Client client;
@Data
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/IAbProxyClientService.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/IAbProxyClientService.java
index 9e442ea7..b560451f 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/IAbProxyClientService.java
+++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/IAbProxyClientService.java
@@ -11,7 +11,6 @@ import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig;
import org.dromara.neutrinoproxy.client.sdk.util.ProxyUtil;
import org.dromara.neutrinoproxy.client.sdk.util.UdpServerUtil;
import org.dromara.neutrinoproxy.core.ProxyMessage;
-import org.noear.solon.Solon;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -31,6 +30,8 @@ public class IAbProxyClientService {
public Bootstrap udpServerBootstrap;
+ public Boolean isAotRuntime;
+
private volatile Channel channel;
/**
* 重连次数
@@ -46,7 +47,7 @@ public class IAbProxyClientService {
reconnectExecutor.scheduleWithFixedDelay(this::reconnect, 10, proxyConfig.getTunnel().getReconnection().getIntervalSeconds(), TimeUnit.SECONDS);
try {
this.start();
- UdpServerUtil.initCache(proxyConfig, udpServerBootstrap);
+ UdpServerUtil.initCache(proxyConfig, udpServerBootstrap,isAotRuntime);
} catch (Exception e) {
// 启动连不上也做一下重连,因此先catch异常
log.error("[CmdChannel] start error", e);
@@ -56,23 +57,19 @@ public class IAbProxyClientService {
public void start() {
if (StrUtil.isEmpty(proxyConfig.getTunnel().getServerIp())) {
log.error("not found server-ip config.");
- Solon.stop();
return;
}
if (null == proxyConfig.getTunnel().getServerPort()) {
log.error("not found server-port config.");
- Solon.stop();
return;
}
if (null != proxyConfig.getTunnel().getSslEnable() && proxyConfig.getTunnel().getSslEnable()
&& StrUtil.isEmpty(proxyConfig.getTunnel().getJksPath())) {
log.error("not found jks-path config.");
- Solon.stop();
return;
}
if (StrUtil.isEmpty(proxyConfig.getTunnel().getLicenseKey())) {
log.error("not found license-key config.");
- Solon.stop();
return;
}
if (null == channel || !channel.isActive()) {
@@ -82,7 +79,7 @@ public class IAbProxyClientService {
log.error("client start error", e);
}
} else {
- channel.writeAndFlush(ProxyMessage.buildAuthMessage(proxyConfig.getTunnel().getLicenseKey(), ProxyUtil.getClientId()));
+ channel.writeAndFlush(ProxyMessage.buildAuthMessage(proxyConfig.getTunnel().getLicenseKey(), ProxyUtil.getClientId(proxyConfig)));
}
}
@@ -99,7 +96,7 @@ public class IAbProxyClientService {
channel = future.channel();
// 连接成功,向服务器发送客户端认证信息(licenseKey)
ProxyUtil.setCmdChannel(future.channel());
- future.channel().writeAndFlush(ProxyMessage.buildAuthMessage(proxyConfig.getTunnel().getLicenseKey(), ProxyUtil.getClientId()));
+ future.channel().writeAndFlush(ProxyMessage.buildAuthMessage(proxyConfig.getTunnel().getLicenseKey(), ProxyUtil.getClientId(proxyConfig)));
log.info("[CmdChannel] connect proxy server success. channelId:{}", future.channel().id().asLongText());
// reconnectServiceEnable = true;
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 59161321..41f1c7ff 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
@@ -7,12 +7,9 @@ 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.util.ProxyUtil;
import org.dromara.neutrinoproxy.core.Constants;
import org.dromara.neutrinoproxy.core.ProxyMessage;
-import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher;
-import org.noear.solon.Solon;
/**
* 处理与服务端之间的数据传输
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/UdpProxyChannelHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/UdpProxyChannelHandler.java
index 40dec1b6..1c28efbc 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/UdpProxyChannelHandler.java
+++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/core/UdpProxyChannelHandler.java
@@ -10,8 +10,6 @@ import org.dromara.neutrinoproxy.client.sdk.config.IBeanHandler;
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;
-import org.noear.solon.Solon;
/**
* 处理与服务端之间的数据传输
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 5ae9219e..f85ee936 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
@@ -1,5 +1,7 @@
package org.dromara.neutrinoproxy.client.sdk.handler;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig;
@@ -8,8 +10,6 @@ import org.dromara.neutrinoproxy.core.ExceptionEnum;
import org.dromara.neutrinoproxy.core.ProxyMessage;
import org.dromara.neutrinoproxy.core.ProxyMessageHandler;
import org.dromara.neutrinoproxy.core.dispatcher.Match;
-import org.noear.snack.ONode;
-import org.noear.solon.Solon;
/**
* 认证信息处理器
@@ -21,21 +21,24 @@ import org.noear.solon.Solon;
public class ProxyMessageAuthHandler implements ProxyMessageHandler {
private ProxyConfig proxyConfig;
- public ProxyMessageAuthHandler(ProxyConfig proxyConfig){
+ private Runnable stop;
+
+ public ProxyMessageAuthHandler(ProxyConfig proxyConfig,Runnable stop){
this.proxyConfig=proxyConfig;
+ this.stop=stop;
}
@Override
public void handle(ChannelHandlerContext context, ProxyMessage proxyMessage) {
String info = proxyMessage.getInfo();
- ONode load = ONode.load(info);
- Integer code = load.get("code").getInt();
+ JSONObject load = JSONUtil.parseObj(info);
+ Integer code = load.getInt("code");
log.info("Auth result:{}", info);
if (ExceptionEnum.AUTH_FAILED.getCode().equals(code)) {
// 客户端认证失败,直接停止服务
log.info("client auth failed , client stop.");
context.channel().close();
if (!proxyConfig.getTunnel().getReconnection().getUnlimited()) {
- Solon.stop();
+ stop.run();
}
} else if (ExceptionEnum.CONNECT_FAILED.getCode().equals(code) ||
ExceptionEnum.LICENSE_CANNOT_REPEAT_CONNECT.getCode().equals(code)
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageErrorHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageErrorHandler.java
index 66ce7fea..c8086bae 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageErrorHandler.java
+++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/ProxyMessageErrorHandler.java
@@ -1,10 +1,11 @@
package org.dromara.neutrinoproxy.client.sdk.handler;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import org.dromara.neutrinoproxy.core.*;
import org.dromara.neutrinoproxy.core.dispatcher.Match;
-import org.noear.snack.ONode;
/**
* 异常信息处理器
@@ -18,8 +19,8 @@ public class ProxyMessageErrorHandler implements ProxyMessageHandler {
@Override
public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) {
log.info("error: {}", proxyMessage.getInfo());
- ONode load = ONode.load(proxyMessage.getInfo());
- Integer code = load.get("code").getInt();
+ JSONObject load = JSONUtil.parseObj(proxyMessage.getInfo());
+ Integer code = load.getInt("code");
if (ExceptionEnum.AUTH_FAILED.getCode().equals(code)) {
System.exit(0);
}
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 e11ac05d..b3240c99 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
@@ -26,12 +26,16 @@ public abstract class ProxyMessageFactory extends IProxyConfiguration {
public abstract void beanInject(String beanName, Object t);
public abstract Object getBean(String beanName);
+ public abstract void stop();
+ public abstract boolean isAotRuntime();
+
public void start(ProxyConfig proxyConfig){
init(proxyConfig);
IAbProxyClientService clientService=new IAbProxyClientService();
clientService.setProxyConfig(proxyConfig);
clientService.setCmdTunnelBootstrap((Bootstrap) getBean("cmdTunnelBootstrap"));
clientService.setUdpServerBootstrap((Bootstrap) getBean("udpServerBootstrap"));
+ clientService.setIsAotRuntime(isAotRuntime());
clientService.init();
}
@@ -60,7 +64,7 @@ public abstract class ProxyMessageFactory extends IProxyConfiguration {
}
public void dispatcher(ProxyConfig proxyConfig, Bootstrap tcpProxyTunnelBootstrap, Bootstrap realServerBootstrap) {
List list = Lists.newArrayList(
- new ProxyMessageAuthHandler(proxyConfig),
+ new ProxyMessageAuthHandler(proxyConfig,()->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 81dc9651..03eff2eb 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
@@ -1,5 +1,6 @@
package org.dromara.neutrinoproxy.client.sdk.handler;
+import cn.hutool.json.JSONUtil;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
@@ -12,7 +13,6 @@ import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum;
import org.dromara.neutrinoproxy.core.ProxyMessage;
import org.dromara.neutrinoproxy.core.ProxyMessageHandler;
import org.dromara.neutrinoproxy.core.dispatcher.Match;
-import org.noear.snack.ONode;
/**
* @author: aoshiguchen
@@ -33,7 +33,8 @@ public class UdpProxyMessageConnectHandler implements ProxyMessageHandler {
@Override
public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) {
final Channel cmdChannel = ctx.channel();
- final ProxyMessage.UdpBaseInfo udpBaseInfo = ONode.deserialize(proxyMessage.getInfo(), ProxyMessage.UdpBaseInfo.class);
+ String info = proxyMessage.getInfo();
+ final ProxyMessage.UdpBaseInfo udpBaseInfo = JSONUtil.toBean(info,ProxyMessage.UdpBaseInfo.class);
log.info("[UDP connect]info:{}", proxyMessage.getInfo());
// 获取连接
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageTransferHandler.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageTransferHandler.java
index 2e97adfa..847284fc 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageTransferHandler.java
+++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/handler/UdpProxyMessageTransferHandler.java
@@ -1,5 +1,6 @@
package org.dromara.neutrinoproxy.client.sdk.handler;
+import cn.hutool.json.JSONUtil;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
@@ -12,7 +13,6 @@ import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum;
import org.dromara.neutrinoproxy.core.ProxyMessage;
import org.dromara.neutrinoproxy.core.ProxyMessageHandler;
import org.dromara.neutrinoproxy.core.dispatcher.Match;
-import org.noear.snack.ONode;
import java.net.InetSocketAddress;
@@ -26,7 +26,7 @@ public class UdpProxyMessageTransferHandler implements ProxyMessageHandler {
@Override
public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) {
- final ProxyMessage.UdpBaseInfo udpBaseInfo = ONode.deserialize(proxyMessage.getInfo(), ProxyMessage.UdpBaseInfo.class);
+ final ProxyMessage.UdpBaseInfo udpBaseInfo = JSONUtil.toBean(proxyMessage.getInfo(),ProxyMessage.UdpBaseInfo.class);
log.debug("[UDP transfer]info:{} data:{}", proxyMessage.getInfo(), new String(proxyMessage.getData()));
Channel channel = UdpServerUtil.takeChannel(udpBaseInfo, ctx.channel());
if (null == channel) {
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/ProxyUtil.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/ProxyUtil.java
index 3e28da24..386dfb17 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/ProxyUtil.java
+++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/ProxyUtil.java
@@ -21,21 +21,20 @@
*/
package org.dromara.neutrinoproxy.client.sdk.util;
+import io.netty.bootstrap.Bootstrap;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelOption;
import io.netty.handler.ssl.SslHandler;
+import io.netty.util.AttributeKey;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig;
import org.dromara.neutrinoproxy.client.sdk.core.ProxyChannelBorrowListener;
import org.dromara.neutrinoproxy.core.Constants;
-import io.netty.bootstrap.Bootstrap;
-import io.netty.buffer.Unpooled;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelOption;
-import io.netty.util.AttributeKey;
import org.dromara.neutrinoproxy.core.util.FileUtil;
-import org.noear.solon.Solon;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
@@ -180,11 +179,10 @@ public class ProxyUtil {
realServerChannels.clear();
}
- public static String getClientId() {
+ public static String getClientId(ProxyConfig proxyConfig) {
if (StringUtils.isNotBlank(clientId)) {
return clientId;
}
- ProxyConfig proxyConfig = Solon.context().getBean(ProxyConfig.class);
if (StringUtils.isNotBlank(proxyConfig.getTunnel().getClientId())) {
clientId = proxyConfig.getTunnel().getClientId();
return clientId;
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/UdpServerUtil.java b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/UdpServerUtil.java
index ba909d6d..a907d35e 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/UdpServerUtil.java
+++ b/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/util/UdpServerUtil.java
@@ -11,7 +11,7 @@ import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig;
import org.dromara.neutrinoproxy.client.sdk.constant.Constants;
import org.dromara.neutrinoproxy.client.sdk.core.CustomThreadFactory;
import org.dromara.neutrinoproxy.core.ProxyMessage;
-import org.noear.solon.core.runtime.NativeDetector;
+import java.util.concurrent.TimeUnit;
import java.util.*;
import java.util.concurrent.*;
@@ -46,9 +46,9 @@ public class UdpServerUtil {
* 2、维护一个UDP服务池,用于需要响应的UDP转发
* @param proxyConfig
*/
- public static void initCache(ProxyConfig proxyConfig, Bootstrap udpServerBootstrap) {
+ public static void initCache(ProxyConfig proxyConfig, Bootstrap udpServerBootstrap,Boolean isAotRuntime) {
// aot 阶段,不初始化UDP服务
- if (NativeDetector.isAotRuntime()) {
+ if (isAotRuntime) {
return;
}
if (null == proxyConfig.getClient().getUdp() || StringUtils.isEmpty(proxyConfig.getClient().getUdp().getPuppetPortRange())) {
diff --git a/neutrino-proxy-client/pom.xml b/neutrino-proxy-client/pom.xml
index a15e1195..1da7952c 100644
--- a/neutrino-proxy-client/pom.xml
+++ b/neutrino-proxy-client/pom.xml
@@ -19,6 +19,15 @@
neutrino-proxy-client-sdk
${revision}
+
+ org.noear
+ solon-lib
+
+
+ org.noear
+ solon.aot
+
+
diff --git a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/NeutrinoClientRuntimeNativeRegistrar.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/NeutrinoClientRuntimeNativeRegistrar.java
similarity index 93%
rename from neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/NeutrinoClientRuntimeNativeRegistrar.java
rename to neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/NeutrinoClientRuntimeNativeRegistrar.java
index 5b060964..19b825ae 100644
--- a/neutrino-proxy-client-sdk/src/main/java/org/dromara/neutrinoproxy/client/sdk/config/NeutrinoClientRuntimeNativeRegistrar.java
+++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/NeutrinoClientRuntimeNativeRegistrar.java
@@ -1,5 +1,6 @@
-package org.dromara.neutrinoproxy.client.sdk.config;
+package org.dromara.neutrinoproxy.client.config;
+import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig;
import org.noear.solon.annotation.Component;
import org.noear.solon.aot.RuntimeNativeMetadata;
import org.noear.solon.aot.RuntimeNativeRegistrar;
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 489bf99d..c0c37081 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
@@ -6,6 +6,7 @@ import org.dromara.neutrinoproxy.client.sdk.handler.ProxyMessageFactory;
import org.noear.solon.Solon;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.core.BeanWrap;
+import org.noear.solon.core.runtime.NativeDetector;
/**
* 代理配置
@@ -33,4 +34,14 @@ public class ProxyConfiguration extends ProxyMessageFactory {
public Object getBean(String beanName) {
return Solon.context().getBean(beanName);
}
+
+ @Override
+ public void stop() {
+ Solon.stop();
+ }
+
+ @Override
+ public boolean isAotRuntime() {
+ return NativeDetector.isAotRuntime();
+ }
}
diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/SolonProxyConfig.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/SolonProxyConfig.java
new file mode 100644
index 00000000..dd1c50af
--- /dev/null
+++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/SolonProxyConfig.java
@@ -0,0 +1,74 @@
+package org.dromara.neutrinoproxy.client.config;
+
+import lombok.Data;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.annotation.Inject;
+
+/**
+ *
+ * @author: aoshiguchen
+ * @date: 2022/6/16
+ */
+@Data
+@Component
+public class SolonProxyConfig {
+ @Inject("${neutrino.proxy.protocol}")
+ private Protocol protocol;
+ @Inject("${neutrino.proxy.tunnel}")
+ private Tunnel tunnel;
+ @Inject("${neutrino.proxy.client}")
+ private Client client;
+
+ @Data
+ public static class Protocol {
+ private Integer maxFrameLength;
+ private Integer lengthFieldOffset;
+ private Integer lengthFieldLength;
+ private Integer initialBytesToStrip;
+ private Integer lengthAdjustment;
+ private Integer readIdleTime;
+ private Integer writeIdleTime;
+ private Integer allIdleTimeSeconds;
+ }
+
+ @Data
+ public static class Tunnel {
+ private String keyStorePassword;
+ private String jksPath;
+ private String serverIp;
+ private Integer serverPort;
+ private Boolean sslEnable;
+ private Integer obtainLicenseInterval;
+ private String licenseKey;
+ private Integer threadCount;
+ private String clientId;
+ private Boolean transferLogEnable;
+ private Boolean heartbeatLogEnable;
+ private Reconnection reconnection;
+ }
+
+ @Data
+ public static class Client {
+// private Tcp tcp;
+ private Udp udp;
+ }
+
+ @Data
+ public static class Reconnection {
+ private Integer intervalSeconds;
+ private Boolean unlimited;
+ }
+
+ @Data
+ public static class Tcp {
+
+ }
+
+ @Data
+ public static class Udp {
+ private Integer bossThreadCount;
+ private Integer workThreadCount;
+ private String puppetPortRange;
+ private Boolean transferLogEnable;
+ }
+}
diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/core/ProxyClientService.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/core/ProxyClientService.java
index e1252d91..f595de8a 100644
--- a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/core/ProxyClientService.java
+++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/core/ProxyClientService.java
@@ -1,7 +1,9 @@
package org.dromara.neutrinoproxy.client.core;
+import cn.hutool.core.bean.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import org.dromara.neutrinoproxy.client.config.ProxyConfiguration;
+import org.dromara.neutrinoproxy.client.config.SolonProxyConfig;
import org.dromara.neutrinoproxy.client.sdk.config.ProxyConfig;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Init;
@@ -18,10 +20,11 @@ public class ProxyClientService{
@Inject
private ProxyConfiguration proxyConfiguration;
@Inject
- private ProxyConfig proxyConfig;
+ private SolonProxyConfig solonProxyConfig;
@Init
public void init() {
log.info("启动中....");
+ ProxyConfig proxyConfig = BeanUtil.toBean(solonProxyConfig, ProxyConfig.class);
proxyConfiguration.start(proxyConfig);
log.info("启动成功....");
}
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
index 35b0fd9c..92107bcf 100644
--- 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
@@ -1,13 +1,17 @@
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");
@@ -15,6 +19,8 @@ public class BeanHandler implements IBeanHandler {
@Override
public ProxyConfig getProxyConfig() {
- return Solon.context().getBean(ProxyConfig.class);
+ SolonProxyConfig solonProxyConfig = Solon.context().getBean(SolonProxyConfig.class);
+ ProxyConfig proxyConfig = BeanUtil.toBean(solonProxyConfig, ProxyConfig.class);
+ return proxyConfig;
}
}