mirror of
https://github.com/TwiN/gatus.git
synced 2024-12-23 07:09:52 +01:00
chore(deps): Update TwiN/whois to v1.1.0
This commit is contained in:
parent
64f4dac705
commit
f1ce83c211
@ -66,6 +66,8 @@ var (
|
|||||||
// This is because the free whois service we are using should not be abused, especially considering the fact that
|
// This is because the free whois service we are using should not be abused, especially considering the fact that
|
||||||
// the data takes a while to be updated.
|
// the data takes a while to be updated.
|
||||||
ErrInvalidEndpointIntervalForDomainExpirationPlaceholder = errors.New("the minimum interval for an endpoint with a condition using the " + DomainExpirationPlaceholder + " placeholder is 300s (5m)")
|
ErrInvalidEndpointIntervalForDomainExpirationPlaceholder = errors.New("the minimum interval for an endpoint with a condition using the " + DomainExpirationPlaceholder + " placeholder is 300s (5m)")
|
||||||
|
|
||||||
|
whoisClient = whois.NewClient().WithReferralCache(true)
|
||||||
)
|
)
|
||||||
|
|
||||||
// Endpoint is the configuration of a monitored
|
// Endpoint is the configuration of a monitored
|
||||||
@ -255,11 +257,6 @@ func (endpoint *Endpoint) EvaluateHealth() *Result {
|
|||||||
if endpoint.needsToRetrieveIP() {
|
if endpoint.needsToRetrieveIP() {
|
||||||
endpoint.getIP(result)
|
endpoint.getIP(result)
|
||||||
}
|
}
|
||||||
// Retrieve domain expiration if necessary
|
|
||||||
if endpoint.needsToRetrieveDomainExpiration() && len(result.Hostname) > 0 {
|
|
||||||
endpoint.getDomainExpiration(result)
|
|
||||||
}
|
|
||||||
//
|
|
||||||
if len(result.Errors) == 0 {
|
if len(result.Errors) == 0 {
|
||||||
endpoint.call(result)
|
endpoint.call(result)
|
||||||
} else {
|
} else {
|
||||||
@ -272,6 +269,10 @@ func (endpoint *Endpoint) EvaluateHealth() *Result {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.Timestamp = time.Now()
|
result.Timestamp = time.Now()
|
||||||
|
// Retrieve domain expiration if necessary
|
||||||
|
if endpoint.needsToRetrieveDomainExpiration() && len(result.Hostname) > 0 {
|
||||||
|
endpoint.getDomainExpiration(result)
|
||||||
|
}
|
||||||
// No need to keep the body after the endpoint has been evaluated
|
// No need to keep the body after the endpoint has been evaluated
|
||||||
result.body = nil
|
result.body = nil
|
||||||
// Clean up parameters that we don't need to keep in the results
|
// Clean up parameters that we don't need to keep in the results
|
||||||
@ -299,7 +300,6 @@ func (endpoint *Endpoint) getIP(result *Result) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (endpoint *Endpoint) getDomainExpiration(result *Result) {
|
func (endpoint *Endpoint) getDomainExpiration(result *Result) {
|
||||||
whoisClient := whois.NewClient()
|
|
||||||
if whoisResponse, err := whoisClient.QueryAndParse(result.Hostname); err != nil {
|
if whoisResponse, err := whoisClient.QueryAndParse(result.Hostname); err != nil {
|
||||||
result.AddError("error querying and parsing hostname using whois client: " + err.Error())
|
result.AddError("error querying and parsing hostname using whois client: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
|
2
go.mod
2
go.mod
@ -6,7 +6,7 @@ require (
|
|||||||
github.com/TwiN/g8 v1.4.0
|
github.com/TwiN/g8 v1.4.0
|
||||||
github.com/TwiN/gocache/v2 v2.1.1
|
github.com/TwiN/gocache/v2 v2.1.1
|
||||||
github.com/TwiN/health v1.5.0
|
github.com/TwiN/health v1.5.0
|
||||||
github.com/TwiN/whois v1.0.0
|
github.com/TwiN/whois v1.1.0
|
||||||
github.com/coreos/go-oidc/v3 v3.1.0
|
github.com/coreos/go-oidc/v3 v3.1.0
|
||||||
github.com/go-ping/ping v0.0.0-20210911151512-381826476871
|
github.com/go-ping/ping v0.0.0-20210911151512-381826476871
|
||||||
github.com/google/uuid v1.3.0
|
github.com/google/uuid v1.3.0
|
||||||
|
7
go.sum
7
go.sum
@ -39,8 +39,8 @@ github.com/TwiN/gocache/v2 v2.1.1 h1:W/GLImqa+pZVIH9pcWEn1cBgy1KU66fUcBjOnPhjuno
|
|||||||
github.com/TwiN/gocache/v2 v2.1.1/go.mod h1:SnUuBsrwGQeNcDG6vhkOMJnqErZM0JGjgIkuKryokYA=
|
github.com/TwiN/gocache/v2 v2.1.1/go.mod h1:SnUuBsrwGQeNcDG6vhkOMJnqErZM0JGjgIkuKryokYA=
|
||||||
github.com/TwiN/health v1.5.0 h1:ETTtbQfUbiiIiVTSpAiNzesHQvm8qarV/8ctlZsVhwA=
|
github.com/TwiN/health v1.5.0 h1:ETTtbQfUbiiIiVTSpAiNzesHQvm8qarV/8ctlZsVhwA=
|
||||||
github.com/TwiN/health v1.5.0/go.mod h1:Z6TszwQPMvtSiVx1QMidVRgvVr4KZGfiwqcD7/Z+3iw=
|
github.com/TwiN/health v1.5.0/go.mod h1:Z6TszwQPMvtSiVx1QMidVRgvVr4KZGfiwqcD7/Z+3iw=
|
||||||
github.com/TwiN/whois v1.0.0 h1:I+aQzXLPmhWovkFUzlPV2DdfLZUWDLrkMDlM6QwCv+Q=
|
github.com/TwiN/whois v1.1.0 h1:lhyrC/9yIXntEnbJ+0IBy9Z5NBcreieYyamlvniwq88=
|
||||||
github.com/TwiN/whois v1.0.0/go.mod h1:9WbCzYlR+r5eq9vbgJVh7A4H2uR2ct4wKEB0/QITJ/c=
|
github.com/TwiN/whois v1.1.0/go.mod h1:9WbCzYlR+r5eq9vbgJVh7A4H2uR2ct4wKEB0/QITJ/c=
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||||
@ -238,7 +238,6 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
|||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
@ -284,7 +283,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
|
|||||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
||||||
golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
|
golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
|
||||||
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
|
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@ -386,7 +384,6 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
16
vendor/github.com/TwiN/whois/README.md
generated
vendored
16
vendor/github.com/TwiN/whois/README.md
generated
vendored
@ -63,3 +63,19 @@ Currently, the only fields parsed are:
|
|||||||
- `NameServers`: The nameservers currently tied to the domain
|
- `NameServers`: The nameservers currently tied to the domain
|
||||||
|
|
||||||
If you'd like one or more other fields to be parsed, please don't be shy and create an issue or a pull request.
|
If you'd like one or more other fields to be parsed, please don't be shy and create an issue or a pull request.
|
||||||
|
|
||||||
|
#### Caching referral WHOIS servers
|
||||||
|
The way that WHOIS scales is by having one "main" WHOIS server, namely `whois.iana.org:43`, refer to other WHOIS server
|
||||||
|
on a per-TLD basis.
|
||||||
|
|
||||||
|
In other word, let's say that you wanted to have the WHOIS information for `example.com`.
|
||||||
|
The first step would be to query `whois.iana.org:43` with `com`, which would return `whois.verisign-grs.com`.
|
||||||
|
Then, you would query `whois.verisign-grs.com:43` for the WHOIS information on `example.com`.
|
||||||
|
|
||||||
|
If you're querying a lot of servers, making two queries instead of one can be a little wasteful, hence `WithReferralCache(true)`:
|
||||||
|
```go
|
||||||
|
client := whois.NewClient().WithReferralCache(true)
|
||||||
|
```
|
||||||
|
The above will cache the referral WHOIS server for each TLD, so that you can directly query the appropriate WHOIS server
|
||||||
|
instead of first querying `whois.iana.org:43` for the referral.
|
||||||
|
|
||||||
|
42
vendor/github.com/TwiN/whois/whois.go
generated
vendored
42
vendor/github.com/TwiN/whois/whois.go
generated
vendored
@ -13,16 +13,49 @@ const (
|
|||||||
|
|
||||||
type Client struct {
|
type Client struct {
|
||||||
whoisServerAddress string
|
whoisServerAddress string
|
||||||
|
|
||||||
|
isCachingReferralWHOISServers bool
|
||||||
|
referralWHOISServersCache map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewClient() *Client {
|
func NewClient() *Client {
|
||||||
return &Client{
|
return &Client{
|
||||||
whoisServerAddress: ianaWHOISServerAddress,
|
whoisServerAddress: ianaWHOISServerAddress,
|
||||||
|
referralWHOISServersCache: make(map[string]string),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c Client) Query(domain string) (string, error) {
|
// WithReferralCache allows you to enable or disable the referral WHOIS server cache.
|
||||||
|
// While ianaWHOISServerAddress is the "entry point" for WHOIS queries, it sometimes has
|
||||||
|
// availability issues. One way to mitigate this is to cache the referral WHOIS server.
|
||||||
|
//
|
||||||
|
// This is disabled by default
|
||||||
|
func (c *Client) WithReferralCache(enabled bool) *Client {
|
||||||
|
c.isCachingReferralWHOISServers = enabled
|
||||||
|
if enabled {
|
||||||
|
// We'll set a couple of common ones right away to avoid unnecessary queries
|
||||||
|
c.referralWHOISServersCache = map[string]string{
|
||||||
|
"com": "whois.verisign-grs.com",
|
||||||
|
"black": "whois.nic.black",
|
||||||
|
"dev": "whois.nic.google",
|
||||||
|
"green": "whois.nic.green",
|
||||||
|
"io": "whois.nic.io",
|
||||||
|
"net": "whois.verisign-grs.com",
|
||||||
|
"org": "whois.publicinterestregistry.org",
|
||||||
|
"red": "whois.nic.red",
|
||||||
|
"sh": "whois.nic.sh",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Query(domain string) (string, error) {
|
||||||
parts := strings.Split(domain, ".")
|
parts := strings.Split(domain, ".")
|
||||||
|
if c.isCachingReferralWHOISServers {
|
||||||
|
if cachedWHOISServer, ok := c.referralWHOISServersCache[domain]; ok {
|
||||||
|
return c.query(cachedWHOISServer, domain)
|
||||||
|
}
|
||||||
|
}
|
||||||
output, err := c.query(c.whoisServerAddress, parts[len(parts)-1])
|
output, err := c.query(c.whoisServerAddress, parts[len(parts)-1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -32,6 +65,9 @@ func (c Client) Query(domain string) (string, error) {
|
|||||||
endIndex := strings.Index(output[startIndex:], "\n") + startIndex
|
endIndex := strings.Index(output[startIndex:], "\n") + startIndex
|
||||||
whois := strings.TrimSpace(output[startIndex:endIndex])
|
whois := strings.TrimSpace(output[startIndex:endIndex])
|
||||||
if referOutput, err := c.query(whois+":43", domain); err == nil {
|
if referOutput, err := c.query(whois+":43", domain); err == nil {
|
||||||
|
if c.isCachingReferralWHOISServers {
|
||||||
|
c.referralWHOISServersCache[domain] = whois + ":43"
|
||||||
|
}
|
||||||
return referOutput, nil
|
return referOutput, nil
|
||||||
}
|
}
|
||||||
return "", err
|
return "", err
|
||||||
@ -45,7 +81,7 @@ func (c Client) query(whoisServerAddress, domain string) (string, error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
defer connection.Close()
|
defer connection.Close()
|
||||||
connection.SetDeadline(time.Now().Add(5 * time.Second))
|
_ = connection.SetDeadline(time.Now().Add(5 * time.Second))
|
||||||
_, err = connection.Write([]byte(domain + "\r\n"))
|
_, err = connection.Write([]byte(domain + "\r\n"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -7,7 +7,7 @@ github.com/TwiN/gocache/v2
|
|||||||
# github.com/TwiN/health v1.5.0
|
# github.com/TwiN/health v1.5.0
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
github.com/TwiN/health
|
github.com/TwiN/health
|
||||||
# github.com/TwiN/whois v1.0.0
|
# github.com/TwiN/whois v1.1.0
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
github.com/TwiN/whois
|
github.com/TwiN/whois
|
||||||
# github.com/beorn7/perks v1.0.1
|
# github.com/beorn7/perks v1.0.1
|
||||||
|
Loading…
Reference in New Issue
Block a user