diff --git a/internal/web/actions/default/servers/server/settings/https/index.go b/internal/web/actions/default/servers/server/settings/https/index.go index 3c85d62b..458bc872 100644 --- a/internal/web/actions/default/servers/server/settings/https/index.go +++ b/internal/web/actions/default/servers/server/settings/https/index.go @@ -6,6 +6,7 @@ import ( "errors" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils" + "github.com/TeaOSLab/EdgeCommon/pkg/configutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" @@ -71,6 +72,7 @@ func (this *IndexAction) RunGet(params struct { this.Data["conflictingPorts"] = conflictingPorts var sslPolicy *sslconfigs.SSLPolicy + var allDNSNames []string if httpsConfig.SSLPolicyRef != nil && httpsConfig.SSLPolicyRef.SSLPolicyId > 0 { sslPolicyConfigResp, err := this.RPC().SSLPolicyRPC().FindEnabledSSLPolicyConfig(this.AdminContext(), &pb.FindEnabledSSLPolicyConfigRequest{ SslPolicyId: httpsConfig.SSLPolicyRef.SSLPolicyId, @@ -88,6 +90,14 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } + + for _, cert := range sslPolicy.Certs { + for _, dnsName := range cert.DNSNames { + if !lists.ContainsString(allDNSNames, dnsName) { + allDNSNames = append(allDNSNames, dnsName) + } + } + } } } @@ -110,6 +120,36 @@ func (this *IndexAction) RunGet(params struct { "supportsHTTP3": supportsHTTP3, } + // 检查域名是否都已经上传了证书 + serverNamesResp, err := this.RPC().ServerRPC().FindServerNames(this.AdminContext(), &pb.FindServerNamesRequest{ + ServerId: server.Id, + }) + if err != nil { + this.ErrorPage(err) + return + } + var allServerNames []string + if len(serverNamesResp.ServerNamesJSON) > 0 { + var serverNamesConfigs = []*serverconfigs.ServerNameConfig{} + err = json.Unmarshal(serverNamesResp.ServerNamesJSON, &serverNamesConfigs) + if err != nil { + this.ErrorPage(err) + return + } + allServerNames = serverconfigs.PlainServerNames(serverNamesConfigs) + } + + this.Data["missingCertServerNames"] = []string{} + if len(allServerNames) > 0 { + var missingServerNames []string + for _, serverName := range allServerNames { + if !configutils.MatchDomains(allDNSNames, serverName) { + missingServerNames = append(missingServerNames, serverName) + } + } + this.Data["missingCertServerNames"] = missingServerNames + } + this.Show() } diff --git a/web/public/js/components/server/ssl-config-box.js b/web/public/js/components/server/ssl-config-box.js index 55ea9909..ea77e075 100644 --- a/web/public/js/components/server/ssl-config-box.js +++ b/web/public/js/components/server/ssl-config-box.js @@ -415,7 +415,7 @@ Vue.component("ssl-config-box", {