chore: 统一本地服务器与远程仓库源码
- 合并 main 与 master 历史并以服务器结构为基线 - 保留迁移、数据保留、AWS 账单与部署安全能力 - 建立 SDD 规格和 CI 验证闭环
This commit is contained in:
commit
fd60361d93
460 files changed
+37492
-23871
No files matched your search
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
|
||||
"ezops/model"
|
||||
"ezops/pkg/siteprobe"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
@@ -228,3 +229,39 @@ func (h *DomainHandler) UpdateDomain(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
// CheckDomainSSL 复用站点拨测 TLS 能力检测并回写域名证书到期日。 // Logan.Li
|
||||
func (h *DomainHandler) CheckDomainSSL(c *gin.Context) {
|
||||
var domain model.Domain
|
||||
if err := h.db.Take(&domain, c.Param("id")).Error; err != nil {
|
||||
c.JSON(http.StatusNotFound, model.Response{Code: 404, Message: "域名不存在"})
|
||||
return
|
||||
}
|
||||
outcome := siteprobe.Execute(c.Request.Context(), model.SiteTask{
|
||||
Name: "域名证书检测",
|
||||
URL: domain.Name,
|
||||
TaskType: model.SiteTaskTypeSSL,
|
||||
Timeout: 10,
|
||||
VerifySSL: false,
|
||||
})
|
||||
if outcome.Status != model.SiteResultSuccess || outcome.SSLCertExpiry == nil {
|
||||
message := outcome.ErrorMessage
|
||||
if message == "" {
|
||||
message = "未获取到证书"
|
||||
}
|
||||
c.JSON(http.StatusBadGateway, model.Response{Code: 502, Message: message})
|
||||
return
|
||||
}
|
||||
if err := h.db.Model(&domain).Updates(map[string]interface{}{
|
||||
"ssl_enabled": true,
|
||||
"ssl_expire_date": outcome.SSLCertExpiry,
|
||||
}).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, model.Response{Code: 500, Message: "保存证书信息失败"})
|
||||
return
|
||||
}
|
||||
domain.SSLEnabled = true
|
||||
domain.SSLExpireDate = outcome.SSLCertExpiry
|
||||
c.JSON(http.StatusOK, model.Response{Code: 200, Message: "证书检测完成", Data: gin.H{
|
||||
"domain": domain, "ssl_expire_date": outcome.SSLCertExpiry, "ssl_days_remaining": outcome.SSLDaysRemaining,
|
||||
"ssl_issuer": outcome.SSLCertIssuer, "ssl_subject": outcome.SSLCertSubject,
|
||||
}})
|
||||
}
|
||||
Reference in new issue
Block a user