38 lines
746 B
Go
38 lines
746 B
Go
package checker
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"math"
|
|
"time"
|
|
|
|
"gitnet.fr/deblan/expiration-check/pkg/formatter"
|
|
"gitnet.fr/deblan/expiration-check/pkg/model"
|
|
)
|
|
|
|
func CheckCertificate(domain string) *model.Result {
|
|
conn, err := tls.Dial("tcp", formatter.ToDomainAndHttpPort(domain), nil)
|
|
|
|
if err == nil {
|
|
date := conn.ConnectionState().PeerCertificates[0].NotAfter
|
|
|
|
result := model.NewResult(
|
|
domain,
|
|
math.Floor(date.Sub(time.Now()).Hours()/24),
|
|
date.Format(time.DateTime),
|
|
)
|
|
|
|
return result
|
|
}
|
|
|
|
return model.NewResultFailed(domain)
|
|
}
|
|
|
|
func CheckCertificates(domains []string) []*model.Result {
|
|
var values []*model.Result
|
|
|
|
for _, domain := range domains {
|
|
values = append(values, CheckCertificate(domain))
|
|
}
|
|
|
|
return values
|
|
}
|