From 01b7b069718053f7e6553e02a79a78869393aec4 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Sun, 3 Nov 2019 07:55:38 -0700 Subject: [PATCH] Optional oauth via + flag --- conf.yaml | 2 +- config/new.go | 2 +- server/proxy.go | 2 +- server/server.go | 10 ++++++---- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/conf.yaml b/conf.yaml index 993a2cb..24f9210 100755 --- a/conf.yaml +++ b/conf.yaml @@ -7,5 +7,5 @@ crt: "" key: "" tcp: "" timeout: 1m -proxy: a,http://localhost:41912,,b,http://localhost:41912 +proxy: a,http://localhost:41912,,+b,http://localhost:41912 oauth: http://localhost:23456 diff --git a/config/new.go b/config/new.go index 2ce3749..4f0864f 100644 --- a/config/new.go +++ b/config/new.go @@ -45,7 +45,7 @@ func parseArgs() (*args.ArgSet, error) { as.Append(args.STRING, "key", "path to key for ssl", "") as.Append(args.STRING, "tcp", "address for tcp only tunnel", "") as.Append(args.DURATION, "timeout", "timeout for tunnel", time.Minute) - as.Append(args.STRING, "proxy", "double-comma separated from,scheme://to.tld:port,oauth,,", "") + as.Append(args.STRING, "proxy", "double-comma separated (+ if oauth)from,scheme://to.tld:port,oauth,,", "") as.Append(args.STRING, "oauth", "url for boauthz", "") err := as.Parse() diff --git a/server/proxy.go b/server/proxy.go index 2daa33a..c149c58 100755 --- a/server/proxy.go +++ b/server/proxy.go @@ -52,7 +52,7 @@ func (s *Server) lookup(host string) (*url.URL, error) { func (s *Server) lookupBOAuthZ(host string) (bool, error) { v := packable.NewString() err := s.db.Get(nsBOAuthZ, host, v) - return v.String() != "", err + return v.String() == "true", err } func mapKey(host string) string { diff --git a/server/server.go b/server/server.go index 863f326..d88be9a 100755 --- a/server/server.go +++ b/server/server.go @@ -53,12 +53,14 @@ type Server struct { } func (s *Server) Route(src string, dst config.Proxy) error { + hasOAuth := strings.HasPrefix(src, "+") + src = strings.TrimPrefix(src, "+") log.Printf("Adding route %q -> %v...\n", src, dst) u, err := url.Parse(dst.To) if err != nil { return err } - s.db.Set(nsBOAuthZ, src, packable.NewString(fmt.Sprint(dst.BOAuthZ))) + s.db.Set(nsBOAuthZ, src, packable.NewString(fmt.Sprint(hasOAuth))) return s.db.Set(nsRouting, src, packable.NewURL(u)) } @@ -114,14 +116,14 @@ func (s *Server) doAuth(foo http.HandlerFunc) http.HandlerFunc { return } } - ok, err := s.lookupBOAuthZ(mapKey(r.Host)) + key := mapKey(r.Host) + ok, err := s.lookupBOAuthZ(key) if err != nil { w.WriteHeader(http.StatusInternalServerError) return } if url, exists := config.GetBOAuthZ(); ok && exists { - name := mapKey(r.Host) - err := oauth2client.Authenticate(url, name, w, r) + err := oauth2client.Authenticate(url, key, w, r) if err != nil { return }