From abe1b709c99c7c3b9bb55bdb67530a38bdba2ca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sat, 10 Jan 2026 18:51:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/data/setting.go | 10 ++-------- internal/service/cli.go | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/internal/data/setting.go b/internal/data/setting.go index 4893cd58..d23df387 100644 --- a/internal/data/setting.go +++ b/internal/data/setting.go @@ -238,14 +238,8 @@ func (r *settingRepo) GetPanel() (*request.SettingPanel, error) { return nil, err } - crt, err := io.Read(filepath.Join(app.Root, "panel/storage/cert.pem")) - if err != nil { - return nil, err - } - key, err := io.Read(filepath.Join(app.Root, "panel/storage/cert.key")) - if err != nil { - return nil, err - } + crt, _ := io.Read(filepath.Join(app.Root, "panel/storage/cert.pem")) + key, _ := io.Read(filepath.Join(app.Root, "panel/storage/cert.key")) return &request.SettingPanel{ Name: name, diff --git a/internal/service/cli.go b/internal/service/cli.go index be20dc98..f468bf2c 100644 --- a/internal/service/cli.go +++ b/internal/service/cli.go @@ -362,10 +362,8 @@ func (s *CliService) HTTPSGenerate(ctx context.Context, cmd *cli.Command) error names = append(names, rv6) } - crt, key, err := cert.GenerateSelfSigned(names) - if err != nil { - return err - } + var crt, key []byte + var err error if s.conf.HTTP.ACME { ip, err := s.settingRepo.Get(biz.SettingKeyPublicIPs) @@ -378,7 +376,7 @@ func (s *CliService) HTTPSGenerate(ctx context.Context, cmd *cli.Command) error } var user biz.User - if err := s.db.First(&user).Error; err != nil { + if err = s.db.First(&user).Error; err != nil { return errors.New(s.t.Get("Failed to get a panel user: %v", err)) } account, err := s.certAccountRepo.GetDefault(user.ID) @@ -386,10 +384,18 @@ func (s *CliService) HTTPSGenerate(ctx context.Context, cmd *cli.Command) error return errors.New(s.t.Get("Failed to get ACME account: %v", err)) } crt, key, err = s.certRepo.ObtainPanel(account, ips) - if err != nil { - return errors.New(s.t.Get("Failed to obtain ACME certificate: %v", err)) + if err == nil { + fmt.Println(s.t.Get("Successfully obtained SSL certificate via ACME")) + } else { + fmt.Println(s.t.Get("Failed to obtain ACME certificate, using self-signed certificate")) + } + } + + if crt == nil || key == nil { + crt, key, err = cert.GenerateSelfSigned(names) + if err != nil { + return err } - fmt.Println(s.t.Get("Successfully obtained ACME certificate")) } if err = io.Write(filepath.Join(app.Root, "panel/storage/cert.pem"), string(crt), 0600); err != nil {