From b245497c4cc7e88ee42532cbd62710583e5d03cc Mon Sep 17 00:00:00 2001 From: naiba Date: Sun, 17 Jan 2021 15:43:34 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20improve:=20=E4=BC=98=E5=8C=96SSL?= =?UTF-8?q?=E8=AF=81=E4=B9=A6=E6=8F=90=E9=86=92=20close=20#67?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- cmd/agent/main.go | 10 +++++----- service/rpc/nezha.go | 31 +++++++++++++++---------------- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index e5cd5ed..f4f5ee2 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ URL 里面也可放置占位符,请求时会进行简单的字符串替换。 ## 变更日志 -最新:`dashboard 0.2.4` `agent 0.2.3`,只记录最后一次更新导致必须更新面板的说明。 +最新:`dashboard 0.2.5` `agent 0.2.4`,只记录最后一次更新导致必须更新面板的说明。 - `dashboard 0.2.0` `agent 0.2.0` **重大更新** diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 17f4a01..c3f17ad 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -77,6 +77,10 @@ func doSelfUpdate() { } } +func init() { + cert.TimeoutSeconds = 30 +} + func main() { // 来自于 GoReleaser 的版本号 dao.Version = version @@ -183,11 +187,7 @@ func doTask(task *pb.Task) { if strings.HasPrefix(task.GetData(), "https://") { c := cert.NewCert(task.GetData()[8:]) if c.Error != "" { - if strings.Contains(c.Error, "expired") { - result.Data = "SSL证书错误:证书已过期" - } else { - result.Data = "SSL证书错误:" + c.Error - } + result.Data = "SSL证书错误:" + c.Error } else { result.Data = c.Issuer + "|" + c.NotAfter result.Successful = true diff --git a/service/rpc/nezha.go b/service/rpc/nezha.go index f377217..a3ffa76 100644 --- a/service/rpc/nezha.go +++ b/service/rpc/nezha.go @@ -23,20 +23,19 @@ func (s *NezhaHandler) ReportTask(c context.Context, r *pb.TaskResult) (*pb.Rece } if r.GetType() == model.MonitorTypeHTTPGET { // SSL 证书报警 - var last model.MonitorHistory - if err := dao.DB.Where("monitor_id = ?", r.GetId()).Order("id DESC").First(&last).Error; err == nil { - var errMsg string - if strings.HasPrefix(r.GetData(), "SSL证书错误:") { - // 证书错误提醒 - errMsg = r.GetData() - } else { - var oldSSLCert = strings.Split(last.Data, "|") + var errMsg string + if strings.HasPrefix(r.GetData(), "SSL证书错误:") { + // 证书错误提醒 + errMsg = r.GetData() + } else { + var last model.MonitorHistory + if err := dao.DB.Where("monitor_id = ? AND data NOT LIKE ?", r.GetId(), "SSL证书错误:%").Order("id DESC").First(&last).Error; err == nil { var splits = strings.Split(r.GetData(), "|") // 证书变更提醒 - if last.Data != "" && oldSSLCert[0] != splits[0] { + if last.Data != "" && last.Data != r.GetData() { errMsg = fmt.Sprintf( - "SSL证书变更,旧:%s,新:%s。", - last.Data, splits[0]) + "SSL证书变更,旧:%s 过期,新:%s 过期。", + last.Data, r.GetData()) } expires, err := time.Parse("2006-01-02 15:04:05 -0700 MST", splits[1]) // 证书过期提醒 @@ -46,11 +45,11 @@ func (s *NezhaHandler) ReportTask(c context.Context, r *pb.TaskResult) (*pb.Rece expires.Format("2006-01-02 15:04:05")) } } - if errMsg != "" { - var monitor model.Monitor - dao.DB.First(&monitor, "id = ?", last.MonitorID) - alertmanager.SendNotification(fmt.Sprintf("服务监控:%s %s", monitor.Name, errMsg)) - } + } + if errMsg != "" { + var monitor model.Monitor + dao.DB.First(&monitor, "id = ?", r.GetId()) + alertmanager.SendNotification(fmt.Sprintf("服务监控:%s %s", monitor.Name, errMsg)) } } // 存入历史记录