From 5b2ccbe5c39842fe269ea2b9f95c8623de25f0a8 Mon Sep 17 00:00:00 2001 From: suxiang <2585546823@qq.com> Date: Wed, 18 Sep 2024 13:53:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E7=9A=84=20SSL=20=E4=B8=8A=E4=B8=8B=E6=96=87=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../proxy/enhance/SslContextManager.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/enhance/SslContextManager.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/enhance/SslContextManager.java index 2b0c68c8..4edea6c4 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/enhance/SslContextManager.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/enhance/SslContextManager.java @@ -1,5 +1,6 @@ package org.dromara.neutrinoproxy.server.proxy.enhance; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.SslContext; @@ -11,7 +12,8 @@ import org.dromara.neutrinoproxy.server.dal.DomainMapper; import org.dromara.neutrinoproxy.server.dal.entity.DomainNameDO; import org.dromara.neutrinoproxy.server.util.ProxyUtil; import org.noear.solon.annotation.Component; -import org.noear.solon.annotation.Init; +import org.noear.solon.core.event.AppLoadEndEvent; +import org.noear.solon.core.event.EventListener; import javax.net.ssl.KeyManagerFactory; import java.io.ByteArrayInputStream; @@ -28,17 +30,14 @@ import java.util.concurrent.ConcurrentHashMap; @Slf4j @Component @Data -public class SslContextManager { +public class SslContextManager implements EventListener { @Db private DomainMapper domainMapper; - // 维护域名到 SslContext 的映射 - private final ConcurrentHashMap domainSslContexts = new ConcurrentHashMap<>(); - // 初始化时加载所有域名的 SSL 上下文 - @Init - public void sslContextManagerInit() { + @Override + public void onEvent(AppLoadEndEvent appLoadEndEvent) throws Throwable { try { initializeSslContexts(); } catch (Exception e) { @@ -47,6 +46,9 @@ public class SslContextManager { } } + // 维护域名到 SslContext 的映射 + private final ConcurrentHashMap domainSslContexts = new ConcurrentHashMap<>(); + // 初始化所有域名的 SSL 上下文 private void initializeSslContexts() throws Exception { List domainNameDOS = domainMapper.selectList(Wrappers.lambdaQuery() @@ -99,6 +101,9 @@ public class SslContextManager { public SslContext getSslContextByFullDomain(String fullDomain) { String domain = ProxyUtil.getDomainNameByFullDomain(fullDomain); + if (StrUtil.isBlank(domain)) { + return null; + } return domainSslContexts.get(domain); } }