aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-23 20:54:28 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-03-23 20:54:28 +0100
commit0be7e9096cb6f7930b958e909bf715c30454650f (patch)
treedd7ba836879114a5e899be38938896d5c5b611a8
parent8094a1d9a9e6279dbd59ce3492f01acff1b3d8b6 (diff)
Replace all routes at once
-rw-r--r--main.go20
1 files changed, 7 insertions, 13 deletions
diff --git a/main.go b/main.go
index 784d1d7..71098a8 100644
--- a/main.go
+++ b/main.go
@@ -39,7 +39,7 @@ func (r Route) SNI(h *tls.ClientHelloInfo) (*tls.Certificate, error) {
}
func (r Route) Restore() error {
- server.Handler = http.NewServeMux()
+ mux := http.NewServeMux()
for k, v := range route {
if v.Cert != nil && v.Key != nil {
cert, err := tls.X509KeyPair(v.Cert, v.Key)
@@ -49,19 +49,13 @@ func (r Route) Restore() error {
v.cert = &cert
r[k] = v
}
- v.NewHandle()
- }
- return nil
-}
-
-func (e Entry) NewHandle() error {
- log.Println("New handle", e)
- up, err := url.Parse(e.Upstream)
- if err != nil {
- return err
+ up, err := url.Parse(v.Upstream)
+ if err != nil {
+ return err
+ }
+ mux.Handle(v.ServerName+"/", httputil.NewSingleHostReverseProxy(up))
}
- mux := server.Handler.(*http.ServeMux)
- mux.Handle(e.ServerName+"/", httputil.NewSingleHostReverseProxy(up))
+ server.Handler = mux
return nil
}