From 1c6056b6fcc22e4335683f6e0f28b7d73b2013e9 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 28 Mar 2016 19:49:29 +0200 Subject: Cleanup --- route.go | 50 -------------------------------------------------- server.go | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 50 deletions(-) diff --git a/route.go b/route.go index 8f77120..7596023 100644 --- a/route.go +++ b/route.go @@ -3,10 +3,6 @@ package goxy import ( "crypto/tls" "errors" - "net/http" - "net/http/httputil" - "net/url" - "strings" ) // Route defines a set of routes including correspondent TLS certificates @@ -36,49 +32,3 @@ func (e Entry) String() string { } return ret } - -func NewReverseProxy(target *url.URL) *httputil.ReverseProxy { - director := func(req *http.Request) { - //log.Println("director", req) - req.URL.Scheme = target.Scheme - req.URL.Host = target.Host - } - return &httputil.ReverseProxy{Director: director} -} - -// Restore and update routes from in-memory state -func (s *Server) Restore() error { - mux := http.NewServeMux() - for k, v := range s.Route { - if v.Cert != nil && v.Key != nil { - cert, err := tls.X509KeyPair(v.Cert, v.Key) - if err != nil { - return err - } - v.cert = &cert - s.Route[k] = v - } - up, err := url.Parse(v.Upstream) - if err != nil { - return err - } - if !strings.Contains(v.ServerName, "/") { - v.ServerName += "/" - } - //mux.Handle(v.ServerName, httputil.NewSingleHostReverseProxy(up)) - switch up.Scheme { - case "ws": - //log.Println("ws", v.ServerName, up) - mux.Handle(v.ServerName, NewWebSocketProxy(up)) - default: - //log.Println("http", v.ServerName, up) - mux.Handle(v.ServerName, NewReverseProxy(up)) - } - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - //log.Printf("%+v\n", r) - http.Error(w, "gone", http.StatusGone) - }) - } - s.Server.Handler = mux - return nil -} diff --git a/server.go b/server.go index 0f0bdad..437df4d 100644 --- a/server.go +++ b/server.go @@ -5,7 +5,10 @@ import ( "encoding/gob" "log" "net/http" + "net/http/httputil" + "net/url" "os" + "strings" ) type Server struct { @@ -54,6 +57,36 @@ func (s *Server) Load() error { return nil } +// Restore and update routes from in-memory state +func (s *Server) Restore() error { + mux := http.NewServeMux() + for k, v := range s.Route { + if v.Cert != nil && v.Key != nil { + cert, err := tls.X509KeyPair(v.Cert, v.Key) + if err != nil { + return err + } + v.cert = &cert + s.Route[k] = v + } + up, err := url.Parse(v.Upstream) + if err != nil { + return err + } + if !strings.Contains(v.ServerName, "/") { + v.ServerName += "/" + } + switch up.Scheme { + case "ws": + mux.Handle(v.ServerName, httputil.NewSingleHostReverseProxy(up)) + default: + mux.Handle(v.ServerName, NewReverseProxy(up)) + } + } + s.Server.Handler = mux + return nil +} + func (s *Server) Start() <-chan error { errc := make(chan error, 3) go func() { errc <- s.ListenAndServe() }() -- cgit v1.2.3