From 9166fecd64db139ad5db37c326a4f7408c6844d2 Mon Sep 17 00:00:00 2001 From: samwaf Date: Thu, 3 Apr 2025 08:42:12 +0800 Subject: [PATCH] fix:ssl logic #242 --- service/waf_service/waf_sslconfig.go | 18 +++++++++++++++++- wafenginecore/sslorder.go | 4 ++-- waftask/task_ssl.go | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/service/waf_service/waf_sslconfig.go b/service/waf_service/waf_sslconfig.go index 57140c3..eabd166 100644 --- a/service/waf_service/waf_sslconfig.go +++ b/service/waf_service/waf_sslconfig.go @@ -84,7 +84,7 @@ func (receiver *WafSslConfigService) AddApi(req request.SslConfigAddReq) error { return nil } -func (receiver *WafSslConfigService) AddInner(config model.SslConfig) { +func (receiver *WafSslConfigService) CreateNewIdInner(config model.SslConfig) { //检测如果证书编号已经存在不需在进行添加了 err := global.GWAF_LOCAL_DB.First(&model.SslConfig{}, "serial_no = ?", config.SerialNo).Error if err == nil && !errors.Is(err, gorm.ErrRecordNotFound) { @@ -101,6 +101,22 @@ func (receiver *WafSslConfigService) AddInner(config model.SslConfig) { global.GWAF_LOCAL_DB.Create(config) zlog.Info(fmt.Sprintf("%s 原来证书已备份", config.Domains)) } +func (receiver *WafSslConfigService) CreateInner(config model.SslConfig) { + //检测如果证书编号已经存在不需在进行添加了 + err := global.GWAF_LOCAL_DB.First(&model.SslConfig{}, "serial_no = ?", config.SerialNo).Error + if err == nil && !errors.Is(err, gorm.ErrRecordNotFound) { + zlog.Info(fmt.Sprintf("%s 证书已经存在不进行再次备份", config.Domains)) + return + } + if config.CertPath == "" { + config.CertPath = filepath.Join(utils.GetCurrentDir(), "ssl", config.Id, "domain.crt") + } + if config.KeyPath == "" { + config.KeyPath = filepath.Join(utils.GetCurrentDir(), "ssl", config.Id, "domain.key") + } + global.GWAF_LOCAL_DB.Create(config) + zlog.Info(fmt.Sprintf("%s 原来证书已备份", config.Domains)) +} func (receiver *WafSslConfigService) CheckIsExistApi(serialNo string) error { return global.GWAF_LOCAL_DB.First(&model.SslConfig{}, "serial_no = ?", serialNo).Error diff --git a/wafenginecore/sslorder.go b/wafenginecore/sslorder.go index 9a16871..943fb82 100644 --- a/wafenginecore/sslorder.go +++ b/wafenginecore/sslorder.go @@ -115,7 +115,7 @@ func (waf *WafEngine) processSSL(updateSSLOrder model.SslOrder, bean model.SslOr if hostBean.BindSslId == "" || oldSslConfig.SerialNo == "" { zlog.Info(fmt.Sprintf("%s 当前主机未配置证书新增一个证书文件夹", bean.ApplyDomain)) //添加到证书夹内 - wafSslConfigService.AddInner(newSslConfig) + wafSslConfigService.CreateInner(newSslConfig) //1.更新主机信息 2.发送主机通知 err = wafHostService.UpdateSSLInfoAndBindId(string(updateSSLOrder.ResultCertificate), string(updateSSLOrder.ResultPrivateKey), bean.HostCode, newSslConfig.Id) if err == nil { @@ -135,7 +135,7 @@ func (waf *WafEngine) processSSL(updateSSLOrder model.SslOrder, bean model.SslOr //将原来的证书备份,新证书更新到现有证书里面 zlog.Info(fmt.Sprintf("%s 当前主机已绑定的证书和新证书相比后允许更新", bean.ApplyDomain)) //备份原来的配置 - wafSslConfigService.AddInner(oldSslConfig) + wafSslConfigService.CreateNewIdInner(oldSslConfig) newSslConfig.Id = oldSslConfig.Id //把最新的配置上去 wafSslConfigService.ModifyInner(newSslConfig) diff --git a/waftask/task_ssl.go b/waftask/task_ssl.go index aa051c0..cd6663a 100644 --- a/waftask/task_ssl.go +++ b/waftask/task_ssl.go @@ -47,7 +47,7 @@ func SSLReload() { zlog.Error(innerLogName, "ssl config:", err.Error()) continue } - wafSslConfigService.AddInner(backSslConfig) + wafSslConfigService.CreateNewIdInner(backSslConfig) err = wafSslConfigService.ModifyInner(updateSslConfig) if err != nil { zlog.Error(innerLogName, "ssl modify inner config:", err.Error())