mirror of
https://github.com/TwiN/gatus.git
synced 2024-11-22 16:03:44 +01:00
Add support for comparing duration before certificate expiration
This commit is contained in:
parent
d50721c8f0
commit
7d97e83875
@ -35,6 +35,11 @@ const (
|
|||||||
// Values that could replace the placeholder: true, false
|
// Values that could replace the placeholder: true, false
|
||||||
ConnectedPlaceHolder = "[CONNECTED]"
|
ConnectedPlaceHolder = "[CONNECTED]"
|
||||||
|
|
||||||
|
// CertificateExpirationPlaceholder is a placeholder for the duration before certificate expiration, in milliseconds.
|
||||||
|
//
|
||||||
|
// Values that could replace the placeholder: 4461677039 (~52 days)
|
||||||
|
CertificateExpirationPlaceholder = "[CERTIFICATE_EXPIRATION]"
|
||||||
|
|
||||||
// LengthFunctionPrefix is the prefix for the length function
|
// LengthFunctionPrefix is the prefix for the length function
|
||||||
LengthFunctionPrefix = "len("
|
LengthFunctionPrefix = "len("
|
||||||
|
|
||||||
@ -142,6 +147,8 @@ func sanitizeAndResolve(list []string, result *Result) []string {
|
|||||||
element = body
|
element = body
|
||||||
case ConnectedPlaceHolder:
|
case ConnectedPlaceHolder:
|
||||||
element = strconv.FormatBool(result.Connected)
|
element = strconv.FormatBool(result.Connected)
|
||||||
|
case CertificateExpirationPlaceholder:
|
||||||
|
element = strconv.FormatInt(int64(result.CertificateExpiration.Milliseconds()), 10)
|
||||||
default:
|
default:
|
||||||
// if contains the BodyPlaceHolder, then evaluate json path
|
// if contains the BodyPlaceHolder, then evaluate json path
|
||||||
if strings.Contains(element, BodyPlaceHolder) {
|
if strings.Contains(element, BodyPlaceHolder) {
|
||||||
|
@ -169,6 +169,10 @@ func (service *Service) call(result *Result) {
|
|||||||
result.Errors = append(result.Errors, err.Error())
|
result.Errors = append(result.Errors, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if response.TLS != nil {
|
||||||
|
certificate := response.TLS.PeerCertificates[0]
|
||||||
|
result.CertificateExpiration = certificate.NotAfter.Sub(time.Now())
|
||||||
|
}
|
||||||
result.HTTPStatus = response.StatusCode
|
result.HTTPStatus = response.StatusCode
|
||||||
result.Connected = response.StatusCode > 0
|
result.Connected = response.StatusCode > 0
|
||||||
result.Body, err = ioutil.ReadAll(response.Body)
|
result.Body, err = ioutil.ReadAll(response.Body)
|
||||||
|
@ -45,6 +45,9 @@ type Result struct {
|
|||||||
|
|
||||||
// Timestamp when the request was sent
|
// Timestamp when the request was sent
|
||||||
Timestamp time.Time `json:"timestamp"`
|
Timestamp time.Time `json:"timestamp"`
|
||||||
|
|
||||||
|
// CertificateExpiration is the duration before the certificate expires
|
||||||
|
CertificateExpiration time.Duration `json:"certificate-expiration,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConditionResult result of a Condition
|
// ConditionResult result of a Condition
|
||||||
|
Loading…
Reference in New Issue
Block a user