diff --git a/Makefile b/Makefile index 4529112..29bee2a 100644 --- a/Makefile +++ b/Makefile @@ -8,12 +8,13 @@ test: ${GO} test ./... build: sower sowerd - +.PHONY: sower sower: ${GO} build -ldflags "\ -X main.version=$(shell git describe --tags --always) \ -X main.date=$(shell date +%Y-%m-%d)" \ -o sower ./cmd/sower +.PHONY: sowerd sowerd: ${GO} build -ldflags "\ -X main.version=$(shell git describe --tags --always) \ diff --git a/router/ping.go b/router/ping.go index 45580b3..0c0153a 100644 --- a/router/ping.go +++ b/router/ping.go @@ -1,11 +1,11 @@ package router import ( - "net" "net/http" + "sync" "time" - "github.com/wweir/deferlog" + "github.com/rs/zerolog/log" ) var pingClient = http.Client{ @@ -30,11 +30,25 @@ type ping struct { } func (p *ping) Fulfill(key string) error { - // just like `curl -I http://domain.com:80` - _, err := pingClient.Head(net.JoinHostPort(key, "80")) - deferlog.Std.DebugWarn(err). - Str("domain", key). - Msg("detect if site is accessible") - p.isAccess = (err == nil) + wg := sync.WaitGroup{} + wg.Add(2) + var err80, err443 error + go func() { + _, err80 = pingClient.Head("http://" + key) + wg.Done() + }() + go func() { + _, err443 = pingClient.Head("https://" + key) + wg.Done() + }() + wg.Wait() + + if err80 != nil && err443 != nil { + log.Warn(). + Errs("errs", []error{err80, err443}). + Msg("Failed to ping") + } + + p.isAccess = (err80 == nil && err443 == nil) return nil }