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); } }