From 7f73b75d3ff5b3af9a9719adfaa777358b191c03 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 4 Apr 2016 01:44:47 +0200 Subject: Remove parsed parts from Route entry --- route.go | 6 ++---- server.go | 34 +++++++++++++++------------------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/route.go b/route.go index c6794cb..7e54650 100644 --- a/route.go +++ b/route.go @@ -16,16 +16,14 @@ type Routes map[string]Route type Route struct { Host, Upstream string Cert, Key []byte - serverName *url.URL - upstream *url.URL certificate *tls.Certificate } func (r Route) String() string { if r.certificate != nil { - return fmt.Sprintf("%v → %v with TLS", r.serverName, r.upstream) + return fmt.Sprintf("%v → %v with TLS", r.Host, r.Upstream) } - return fmt.Sprintf("%v → %v", r.serverName, r.upstream) + return fmt.Sprintf("%v → %v", r.Host, r.Upstream) } // GetCertificate returns certificate for SNI negotiation diff --git a/server.go b/server.go index 88f712d..694751c 100644 --- a/server.go +++ b/server.go @@ -50,22 +50,17 @@ func (s *Server) UpdateMux() error { wwwMux := http.NewServeMux() tlsMux := http.NewServeMux() for host, r := range s.Routes { - var err error - if r.serverName == nil { - r.serverName, err = url.Parse(r.Host) - if err != nil { - return err - } - s.Routes[host] = r + serverName, err := url.Parse(r.Host) + if err != nil { + return err } - if r.upstream == nil { - r.upstream, err = url.Parse(r.Upstream) - if err != nil { - return err - } - s.Routes[host] = r + + upstream, err := url.Parse(r.Upstream) + if err != nil { + return err } - if r.certificate == nil && r.serverName.Scheme == "https" { + + if r.certificate == nil && serverName.Scheme == "https" { cert, err := tls.X509KeyPair(r.Cert, r.Key) if err != nil { return err @@ -73,17 +68,18 @@ func (s *Server) UpdateMux() error { r.certificate = &cert s.Routes[host] = r } - switch r.serverName.Scheme { + + switch serverName.Scheme { case "http", "": - wwwMux.Handle(host, NewReverseProxy(r.upstream)) + wwwMux.Handle(host, NewReverseProxy(upstream)) case "https": wwwMux.Handle(host, NewRedirect("https://"+host)) - tlsMux.Handle(host, NewReverseProxy(r.upstream)) + tlsMux.Handle(host, NewReverseProxy(upstream)) case "ws": - wwwMux.Handle(host, NewWebSocketProxy(r.upstream)) + wwwMux.Handle(host, NewWebSocketProxy(upstream)) case "wss": wwwMux.Handle(host, NewRedirect("wss://"+host)) - tlsMux.Handle(host, NewWebSocketProxy(r.upstream)) + tlsMux.Handle(host, NewWebSocketProxy(upstream)) } } s.wwwServer.Handler = wwwMux -- cgit v1.2.3