commit
e34c364d5e
3 changed files with 17 additions and 10 deletions
|
@ -511,7 +511,7 @@ address = ":8080"
|
||||||
# To enable digest auth on the webui
|
# To enable digest auth on the webui
|
||||||
# with 2 user/realm/pass: test:traefik:test and test2:traefik:test2
|
# with 2 user/realm/pass: test:traefik:test and test2:traefik:test2
|
||||||
# You can use htdigest to generate those ones
|
# You can use htdigest to generate those ones
|
||||||
# [web.auth.basic]
|
# [web.auth.digest]
|
||||||
# users = ["test:traefik:a2688e031edb4be6a3797f3882655c05 ", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"]
|
# users = ["test:traefik:a2688e031edb4be6a3797f3882655c05 ", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"]
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/containous/traefik/log"
|
"github.com/containous/traefik/log"
|
||||||
|
"github.com/containous/traefik/safe"
|
||||||
"github.com/parnurzeal/gorequest"
|
"github.com/parnurzeal/gorequest"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
@ -160,7 +161,7 @@ func (c *clientImpl) WatchAll(labelSelector string, stopCh <-chan bool) (chan in
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return watchCh, errCh, fmt.Errorf("failed to create watch: %v", err)
|
return watchCh, errCh, fmt.Errorf("failed to create watch: %v", err)
|
||||||
}
|
}
|
||||||
go func() {
|
safe.Go(func() {
|
||||||
defer close(watchCh)
|
defer close(watchCh)
|
||||||
defer close(errCh)
|
defer close(errCh)
|
||||||
defer close(stopIngresses)
|
defer close(stopIngresses)
|
||||||
|
@ -188,7 +189,7 @@ func (c *clientImpl) WatchAll(labelSelector string, stopCh <-chan bool) (chan in
|
||||||
watchCh <- event
|
watchCh <- event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
})
|
||||||
|
|
||||||
return watchCh, errCh, nil
|
return watchCh, errCh, nil
|
||||||
}
|
}
|
||||||
|
@ -268,11 +269,16 @@ func (c *clientImpl) watch(url string, labelSelector string, stopCh <-chan bool)
|
||||||
return watchCh, errCh, fmt.Errorf("failed to do watch request: GET %q: %v", url, err)
|
return watchCh, errCh, fmt.Errorf("failed to do watch request: GET %q: %v", url, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
safe.Go(func() {
|
||||||
|
EndCh := make(chan bool, 1)
|
||||||
defer close(watchCh)
|
defer close(watchCh)
|
||||||
defer close(errCh)
|
defer close(errCh)
|
||||||
go func() {
|
defer close(EndCh)
|
||||||
|
safe.Go(func() {
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
|
defer func() {
|
||||||
|
EndCh <- true
|
||||||
|
}()
|
||||||
for {
|
for {
|
||||||
var eventList interface{}
|
var eventList interface{}
|
||||||
if err := json.NewDecoder(res.Body).Decode(&eventList); err != nil {
|
if err := json.NewDecoder(res.Body).Decode(&eventList); err != nil {
|
||||||
|
@ -283,11 +289,12 @@ func (c *clientImpl) watch(url string, labelSelector string, stopCh <-chan bool)
|
||||||
}
|
}
|
||||||
watchCh <- eventList
|
watchCh <- eventList
|
||||||
}
|
}
|
||||||
}()
|
})
|
||||||
<-stopCh
|
<-stopCh
|
||||||
go func() {
|
safe.Go(func() {
|
||||||
cancel() // cancel watch request
|
cancel() // cancel watch request
|
||||||
}()
|
})
|
||||||
}()
|
<-EndCh
|
||||||
|
})
|
||||||
return watchCh, errCh, nil
|
return watchCh, errCh, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -294,7 +294,7 @@
|
||||||
# To enable digest auth on the webui
|
# To enable digest auth on the webui
|
||||||
# with 2 user/realm/pass: test:traefik:test and test2:traefik:test2
|
# with 2 user/realm/pass: test:traefik:test and test2:traefik:test2
|
||||||
# You can use htdigest to generate those ones
|
# You can use htdigest to generate those ones
|
||||||
# [web.auth.basic]
|
# [web.auth.digest]
|
||||||
# users = ["test:traefik:a2688e031edb4be6a3797f3882655c05 ", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"]
|
# users = ["test:traefik:a2688e031edb4be6a3797f3882655c05 ", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue