From f2483c50f52762db42eec3c785b0da1353b0b0c8 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 23 Mar 2016 23:41:59 +0100 Subject: Split --- main.go | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index e91f016..4a29e62 100644 --- a/main.go +++ b/main.go @@ -2,12 +2,9 @@ package main import ( "crypto/tls" - "errors" "flag" "log" "net/http" - "net/http/httputil" - "net/url" _ "net/http/pprof" ) @@ -21,52 +18,6 @@ var ( } ) -type Route map[string]Entry - -type Entry struct { - ServerName string - Upstream string - Cert []byte - Key []byte - cert *tls.Certificate -} - -func (r Route) SNI(h *tls.ClientHelloInfo) (*tls.Certificate, error) { - if e, ok := r[h.ServerName]; ok && e.cert != nil { - return e.cert, nil - } - return nil, errors.New("no cert for " + h.ServerName) -} - -func (r Route) Restore() error { - mux := http.NewServeMux() - for k, v := range route { - if v.Cert != nil && v.Key != nil { - cert, err := tls.X509KeyPair(v.Cert, v.Key) - if err != nil { - return err - } - v.cert = &cert - r[k] = v - } - up, err := url.Parse(v.Upstream) - if err != nil { - return err - } - mux.Handle(v.ServerName+"/", httputil.NewSingleHostReverseProxy(up)) - } - server.Handler = mux - return nil -} - -func (e Entry) String() string { - if e.cert != nil { - return e.ServerName + " -> " + e.Upstream + " with TLS" - } else { - return e.ServerName + " -> " + e.Upstream - } -} - func main() { flag.Parse() -- cgit v1.2.3