package checker import ( "crypto/tls" "fmt" "math" "strings" "time" "gitnet.fr/deblan/expiration-check/logger" ) func FormatDomain(domain string) string { elements := strings.Split(domain, ":") if len(elements) == 1 { return fmt.Sprintf("%s:443", elements[0]) } return domain } func CheckCertificate(domain string) Domain { now := time.Now() conn, err := tls.Dial("tcp", FormatDomain(domain), nil) if err == nil { date := conn.ConnectionState().PeerCertificates[0].NotAfter daysLeft := date.Sub(now).Hours() / 24 d := Domain{ Name: domain, DaysLeft: math.Floor(daysLeft), Date: date.Format(time.DateTime), } logger.Get().Logf(`CheckCertificate: domain="%s" value="%+v"`, domain, d) return d } logger.Get().Logf("CheckCertificate: domain=%s err=%s", domain, err) return Domain{Name: domain, Failed: true} } func CheckCertificates(domains []string) []Domain { values := []Domain{} for _, domain := range domains { values = append(values, CheckCertificate(domain)) } return values }