From 879b68f41be5f727e5d9438e34d01c8753ba9367 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 19 Feb 2016 01:35:37 +0100 Subject: Add key channel --- check.go | 13 +++++++++++-- config.yml | 4 ++-- main.go | 17 +++++++++++------ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/check.go b/check.go index f66813e..be329e7 100644 --- a/check.go +++ b/check.go @@ -14,6 +14,16 @@ func init() { rand.Seed(time.Now().UnixNano()) } +func Keys() chan string { + keys := make(chan string) + go func() { + for { + keys <- Key() + } + }() + return keys +} + func Key() string { b := make([]byte, 16) for i := range b { @@ -22,8 +32,7 @@ func Key() string { return hex.EncodeToString(b[:]) } -func Check(uri string) error { - key := Key() +func Check(uri, key string) error { resp, err := http.Get(uri + "?key=" + key) if err != nil { return err diff --git a/config.yml b/config.yml index a1302b2..f26c500 100644 --- a/config.yml +++ b/config.yml @@ -30,5 +30,5 @@ check: - http://liveblog.zdf.de/livewatch/ - http://muellermeter.zdf.de/livewatch - https://tippcenter.zdf.de/livewatch/ -# - http://w1.webapp.wettendass.de/livewatch/celery/ -# - http://w1.webapp.wettendass.de/livewatch/default/ + - http://w1.webapp.wettendass.de/livewatch/celery/ + - http://w1.webapp.wettendass.de/livewatch/default/ diff --git a/main.go b/main.go index f45e290..f9674db 100644 --- a/main.go +++ b/main.go @@ -7,26 +7,31 @@ import ( "time" ) -var conf = flag.String("conf", "config.yml", "configuration file") +var ( + conf = flag.String("conf", "config.yml", "configuration file") + intr = flag.Duration("interval", time.Second*5, "check interval") +) -func Checker(uri string, errc chan<- error) { - t := time.NewTicker(time.Second * 5) +func Checker(uri string, intr time.Duration, errc chan<- error) { + t := time.NewTicker(intr) var n int defer t.Stop() + key := Keys() for range t.C { - log.Println("check", uri) - err := Check(uri) + err := Check(uri, <-key) if err != nil { n++ errc <- err } if n > 5 { + log.Println("give up", uri) return } } } func main() { + flag.Parse() c, err := LoadConfig(*conf) if err != nil { log.Fatal(err) @@ -36,7 +41,7 @@ func main() { for _, uri := range c.Check { wg.Add(1) go func(uri string) { - Checker(uri, errc) + Checker(uri, *intr, errc) wg.Done() }(uri) } -- cgit v1.2.3