package main import ( "fmt" ) func healthCheck() { h := []Host{} Db.Find(&h) h = CheckPages(h) CacheHosts(cache_prefix+"database", h) for k, _ := range h { Db.Debug().Save(&h[k]) } } func CheckPages(h []Host) []Host { wentWrong := false for k, v := range h { if !h[k].Monitored { continue } if resp, _, err := HttpGet(v.Url); err != nil { h[k].Status = "Error" h[k].StatusCode = 0 h[k].Success = false h[k].Monitored = false h[k].Reason = fmt.Sprintf("%v", err) h[k].Class = "danger" } else { h[k].Status = resp.Status h[k].StatusCode = int64(resp.StatusCode) h[k].Success = true h[k].Reason = "" h[k].Class = "success" } } if wentWrong { u := []User{} Db.Find(&u) SendEmail(u, h) } return h } func CheckAllPages(h []Host) []Host { wentWrong := false for k, v := range h { if resp, _, err := HttpGet(v.Url); err != nil { h[k].Status = "Error" h[k].StatusCode = 0 h[k].Success = false h[k].Monitored = false h[k].Reason = fmt.Sprintf("%v", err) h[k].Class = "danger" wentWrong = true } else { h[k].Status = resp.Status h[k].StatusCode = int64(resp.StatusCode) if h[k].StatusCode < 400 { h[k].Success = true h[k].Class = "success" } else { h[k].Success = false h[k].Class = "danger" } h[k].Reason = "" } } if wentWrong { u := []User{} Db.Find(&u) SendEmail(u, h) } return h }