summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-02-19 01:35:37 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-02-19 01:35:37 +0100
commit879b68f41be5f727e5d9438e34d01c8753ba9367 (patch)
tree80a2ea33d492fd077d73fee49cdc150b831dcf29
parentdc152722044f4be94fe344c46cdf2c1e0cdd1806 (diff)
Add key channel
-rw-r--r--check.go13
-rw-r--r--config.yml4
-rw-r--r--main.go17
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)
}