mirror of
https://github.com/TwiN/gatus.git
synced 2024-11-24 17:04:42 +01:00
ux: Improve endpoint validation by checking type on start
This commit is contained in:
parent
5c6bf84106
commit
52d7cb6f04
@ -1125,7 +1125,7 @@ endpoints:
|
|||||||
conditions:
|
conditions:
|
||||||
- "[STATUS] == 200"
|
- "[STATUS] == 200"
|
||||||
`))
|
`))
|
||||||
if err != core.ErrEndpointWithNoName {
|
if err == nil {
|
||||||
t.Error("should've returned an error")
|
t.Error("should've returned an error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,13 +33,13 @@ const (
|
|||||||
// GatusUserAgent is the default user agent that Gatus uses to send requests.
|
// GatusUserAgent is the default user agent that Gatus uses to send requests.
|
||||||
GatusUserAgent = "Gatus/1.0"
|
GatusUserAgent = "Gatus/1.0"
|
||||||
|
|
||||||
// EndpointType enum for the endpoint type.
|
|
||||||
EndpointTypeDNS EndpointType = "DNS"
|
EndpointTypeDNS EndpointType = "DNS"
|
||||||
EndpointTypeTCP EndpointType = "TCP"
|
EndpointTypeTCP EndpointType = "TCP"
|
||||||
EndpointTypeICMP EndpointType = "ICMP"
|
EndpointTypeICMP EndpointType = "ICMP"
|
||||||
EndpointTypeSTARTTLS EndpointType = "STARTTLS"
|
EndpointTypeSTARTTLS EndpointType = "STARTTLS"
|
||||||
EndpointTypeTLS EndpointType = "TLS"
|
EndpointTypeTLS EndpointType = "TLS"
|
||||||
EndpointTypeHTTP EndpointType = "HTTP"
|
EndpointTypeHTTP EndpointType = "HTTP"
|
||||||
|
EndpointTypeUNKNOWN EndpointType = "UNKNOWN"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -54,6 +54,9 @@ var (
|
|||||||
|
|
||||||
// ErrEndpointWithInvalidNameOrGroup is the error with which Gatus will panic if an endpoint has an invalid character where it shouldn't
|
// ErrEndpointWithInvalidNameOrGroup is the error with which Gatus will panic if an endpoint has an invalid character where it shouldn't
|
||||||
ErrEndpointWithInvalidNameOrGroup = errors.New("endpoint name and group must not have \" or \\")
|
ErrEndpointWithInvalidNameOrGroup = errors.New("endpoint name and group must not have \" or \\")
|
||||||
|
|
||||||
|
// ErrUnknownEndpointType is the error with which Gatus will panic if an endpoint has an unknown type
|
||||||
|
ErrUnknownEndpointType = errors.New("unknown endpoint type")
|
||||||
)
|
)
|
||||||
|
|
||||||
// Endpoint is the configuration of a monitored
|
// Endpoint is the configuration of a monitored
|
||||||
@ -128,8 +131,10 @@ func (endpoint Endpoint) Type() EndpointType {
|
|||||||
return EndpointTypeSTARTTLS
|
return EndpointTypeSTARTTLS
|
||||||
case strings.HasPrefix(endpoint.URL, "tls://"):
|
case strings.HasPrefix(endpoint.URL, "tls://"):
|
||||||
return EndpointTypeTLS
|
return EndpointTypeTLS
|
||||||
default:
|
case strings.HasPrefix(endpoint.URL, "http://") || strings.HasPrefix(endpoint.URL, "https://"):
|
||||||
return EndpointTypeHTTP
|
return EndpointTypeHTTP
|
||||||
|
default:
|
||||||
|
return EndpointTypeUNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,6 +193,9 @@ func (endpoint *Endpoint) ValidateAndSetDefaults() error {
|
|||||||
if endpoint.DNS != nil {
|
if endpoint.DNS != nil {
|
||||||
return endpoint.DNS.validateAndSetDefault()
|
return endpoint.DNS.validateAndSetDefault()
|
||||||
}
|
}
|
||||||
|
if endpoint.Type() == EndpointTypeUNKNOWN {
|
||||||
|
return ErrUnknownEndpointType
|
||||||
|
}
|
||||||
// Make sure that the request can be created
|
// Make sure that the request can be created
|
||||||
_, err := http.NewRequest(endpoint.Method, endpoint.URL, bytes.NewBuffer([]byte(endpoint.Body)))
|
_, err := http.NewRequest(endpoint.Method, endpoint.URL, bytes.NewBuffer([]byte(endpoint.Body)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user