1
0
Fork 0
mirror of https://github.com/Luzifer/promcertcheck.git synced 2024-11-09 16:30:04 +00:00

Improve handling of errors for invalid certs

Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
Knut Ahlers 2017-11-05 17:00:16 +01:00
parent 2f67c05f2e
commit 58fa678eaf
Signed by: luzifer
GPG key ID: DC2729FDD34BE99E
2 changed files with 13 additions and 12 deletions

10
cert.go
View file

@ -45,13 +45,13 @@ func checkCertificate(probeURL *url.URL) (probeResult, *x509.Certificate) {
req.Header.Set("User-Agent", fmt.Sprintf("Mozilla/5.0 (compatible; PromCertcheck/%s; +https://github.com/Luzifer/promcertcheck)", version)) req.Header.Set("User-Agent", fmt.Sprintf("Mozilla/5.0 (compatible; PromCertcheck/%s; +https://github.com/Luzifer/promcertcheck)", version))
resp, err := http.DefaultClient.Do(req) resp, err := http.DefaultClient.Do(req)
switch err.(type) { switch {
case nil, redirectFoundError: case err == nil:
case strings.Contains(err.Error(), redirectFoundError.Error()):
checkLogger.WithError(err).Warn("A redirect was found")
default: default:
checkLogger.WithError(err).Error("HTTP request failed") checkLogger.WithError(err).Error("HTTP request failed")
if !strings.Contains(err.Error(), "Found a redirect.") { return generalFailure, nil
return generalFailure, nil
}
} }
resp.Body.Close() resp.Body.Close()

15
main.go
View file

@ -1,7 +1,9 @@
package main // import "github.com/Luzifer/promcertcheck" package main // import "github.com/Luzifer/promcertcheck"
import ( import (
"crypto/tls"
"crypto/x509" "crypto/x509"
"errors"
"fmt" "fmt"
"net/http" "net/http"
"net/url" "net/url"
@ -24,6 +26,8 @@ var (
}{} }{}
version = "dev" version = "dev"
probeMonitors = map[string]*probeMonitor{} probeMonitors = map[string]*probeMonitor{}
redirectFoundError = errors.New("Found a redirect")
) )
type probeMonitor struct { type probeMonitor struct {
@ -33,12 +37,6 @@ type probeMonitor struct {
Certificate *x509.Certificate Certificate *x509.Certificate
} }
type redirectFoundError struct{}
func (r redirectFoundError) Error() string {
return "Found a redirect."
}
func init() { func init() {
if err := rconfig.Parse(&config); err != nil { if err := rconfig.Parse(&config); err != nil {
log.Fatalf("Unable to parse CLI parameters: %s", err) log.Fatalf("Unable to parse CLI parameters: %s", err)
@ -53,7 +51,10 @@ func init() {
func main() { func main() {
http.DefaultClient.CheckRedirect = func(req *http.Request, via []*http.Request) error { http.DefaultClient.CheckRedirect = func(req *http.Request, via []*http.Request) error {
return redirectFoundError{} return redirectFoundError
}
http.DefaultClient.Transport = &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
} }
registerProbes() registerProbes()