feat(site): allow to use cert selector to change cert when site is disabled

This commit is contained in:
Jacky 2025-02-03 16:21:23 +08:00
parent 0cd0761e33
commit 9401bcc242
No known key found for this signature in database
GPG key ID: 215C21B10DF38B4D
3 changed files with 26 additions and 12 deletions

View file

@ -8,6 +8,7 @@ const props = defineProps<{
configName: string configName: string
currentServerIndex: number currentServerIndex: number
certInfo?: CertificateInfo[] certInfo?: CertificateInfo[]
siteEnabled: boolean
}>() }>()
const enabled = defineModel<boolean>('enabled', { const enabled = defineModel<boolean>('enabled', {
@ -68,6 +69,7 @@ function handleCertChange(certs: Cert[]) {
<ChangeCert @change="handleCertChange" /> <ChangeCert @change="handleCertChange" />
<IssueCert <IssueCert
v-if="siteEnabled"
v-model:enabled="enabled" v-model:enabled="enabled"
:config-name="configName" :config-name="configName"
/> />

View file

@ -120,15 +120,15 @@ provide('ngx_directives', ngx_directives)
/> />
<div class="tab-content"> <div class="tab-content">
<template v-if="current_support_ssl && enabled">
<Cert <Cert
v-if="current_support_ssl" v-if="current_support_ssl"
v-model:enabled="autoCert" v-model:enabled="autoCert"
class="mb-4"
:site-enabled="enabled"
:config-name="ngx_config.name" :config-name="ngx_config.name"
:cert-info="certInfo?.[k]" :cert-info="certInfo?.[k]"
:current-server-index="current_server_index" :current-server-index="current_server_index"
/> />
</template>
<template v-if="v.comments"> <template v-if="v.comments">
<h3>{{ $gettext('Comments') }}</h3> <h3>{{ $gettext('Comments') }}</h3>

View file

@ -3,10 +3,11 @@ package cert
import ( import (
"crypto/x509" "crypto/x509"
"encoding/pem" "encoding/pem"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/0xJacky/Nginx-UI/internal/nginx"
"os" "os"
"time" "time"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/0xJacky/Nginx-UI/internal/nginx"
) )
type Info struct { type Info struct {
@ -39,8 +40,19 @@ func GetCertInfo(sslCertificatePath string) (info *Info, err error) {
return return
} }
// for wildcard certificate, the subject name is the first DNS name
subjectName := cert.Subject.CommonName
if subjectName == "" {
for _, name := range cert.DNSNames {
if name != "" {
subjectName = name
break
}
}
}
info = &Info{ info = &Info{
SubjectName: cert.Subject.CommonName, SubjectName: subjectName,
IssuerName: cert.Issuer.CommonName, IssuerName: cert.Issuer.CommonName,
NotAfter: cert.NotAfter, NotAfter: cert.NotAfter,
NotBefore: cert.NotBefore, NotBefore: cert.NotBefore,