From 0312681d4bcab72816374eb1dac8d684dc4505de Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Sat, 23 Feb 2019 12:53:52 -0700 Subject: [PATCH] looks fine to me --- server/server.go | 17 +++++++++++++- testdata/Bserver.crt | 30 +++++++++++++++++++++++ testdata/Bserver.key | 51 ++++++++++++++++++++++++++++++++++++++++ testdata/Bserver.pkcs12 | Bin 0 -> 4077 bytes 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 testdata/Bserver.crt create mode 100644 testdata/Bserver.key create mode 100644 testdata/Bserver.pkcs12 diff --git a/server/server.go b/server/server.go index 741aafa..fa3a079 100644 --- a/server/server.go +++ b/server/server.go @@ -1,6 +1,7 @@ package server import ( + "encoding/base64" "errors" "local/rproxy3/config" "local/rproxy3/storage" @@ -8,6 +9,7 @@ import ( "log" "net/http" "net/url" + "strings" ) const nsRouting = "routing" @@ -65,10 +67,11 @@ func (s *Server) doAuth(foo http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { rusr, rpwd, ok := config.GetAuth() if ok { + //usr, pwd := getProxyAuth(r) usr, pwd, ok := r.BasicAuth() if !ok || rusr != usr || rpwd != pwd { w.WriteHeader(http.StatusUnauthorized) - log.Printf("denying basic auth") + log.Printf("denying proxy basic auth") return } } @@ -83,3 +86,15 @@ func (s *Server) Pre(foo http.HandlerFunc) http.HandlerFunc { func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { s.Pre(s.Proxy)(w, r) } + +func getProxyAuth(r *http.Request) (string, string) { + proxyAuthHeader := r.Header.Get("Proxy-Authorization") + proxyAuthB64 := strings.TrimPrefix(proxyAuthHeader, "Basic ") + proxyAuthBytes, _ := base64.StdEncoding.DecodeString(proxyAuthB64) + proxyAuth := string(proxyAuthBytes) + if !strings.Contains(proxyAuth, ":") { + return "", "" + } + proxyAuthSplit := strings.Split(proxyAuth, ":") + return proxyAuthSplit[0], proxyAuthSplit[1] +} diff --git a/testdata/Bserver.crt b/testdata/Bserver.crt new file mode 100644 index 0000000..3fa0966 --- /dev/null +++ b/testdata/Bserver.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFJDCCAwygAwIBAgIJALfGZtUid7PTMA0GCSqGSIb3DQEBCwUAMD4xCzAJBgNV +BAYTAlVTMQswCQYDVQQIDAJVVDEOMAwGA1UECgwFYnJlZWwxEjAQBgNVBAMMCWxv +Y2FsaG9zdDAeFw0xOTAyMjMxODUzMzlaFw0yOTAyMjAxODUzMzlaMD4xCzAJBgNV +BAYTAlVTMQswCQYDVQQIDAJVVDEOMAwGA1UECgwFYnJlZWwxEjAQBgNVBAMMCWxv +Y2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL2RHgR4PBGv +h8A6dRQeWxhIgUbidlwYt9s8da0An5MekH9UpygsJFC7xUqiCzbMy1SgJXR74muz +syNUYC1borwNpFNvQZkiszl8KUhG/J0fYQEihJX8o9lrKMIolrByd++X0VHmoB7h +F21fB7MnwobANILTwkw6a5iXn7GF2iWB1LtwhwN+/6/usU8IHMmGr77k131O7PhL +ARx8aYrJnZ0fOGy1/ng0jHy+xs5bJ2J3ssT07EGxEdv+XIm0sRwZI+vUJXqW73kB +nhCkxMaAMjc6+TDrkCMlIG0FpNvJ4jCxdECbsBxfKrip3NI/SCMevhKbgloESxkE ++r1CYwTYLYO8Qf9CY4lb4FkbdainNH1mPv9suVzmn+1cUyY9p0HC4GdvQYo/4BUk +lXGIott9TVQniPWDTxo+/Y/AmJig8IjBZecF0CQbdB4jRkM2EdMxORA1sdWsK4rB +TtNBdVXPAgI14jvrbWytepoiB/5gzoBMZYGGiY1CHBHT2ZcZzaZpDW59zXvnUoet +LA1bTmVg39xVsE9RZFQcCvW7jhNstZYZEAYi64lWvPQi5d3JwQIv4eceLSh+j47i +98pJP9eGvQagXwsnEMC2WFNHZYM6ac5yMKS8yq/MrGfPoW/jHYaSiFCqXA5SFluj +CmvVDA53+c41xGjwEX9UvoGyPp0bvmkHAgMBAAGjJTAjMCEGA1UdEQQaMBiCCWxv +Y2FsaG9zdIILKi5sb2NhbGhvc3QwDQYJKoZIhvcNAQELBQADggIBAHK2o1UIO0LV +jKp/Ly2kG4G9P0z3FfT9TwcgQSoqoz/0y2WJS1GiAkEVKmECRQd5aH1GSMO02sZf +Yz1o/NjUCX5iU/6WGWqiSoPWLoX25xxpKivTDAJ1qZqnMEJra5i8NzE2rFlA9QV4 +XsvuQe7XbmdNilVuuTNj+f6v3eW6m5KbqRm3riRU+/BdRmLw09/dfUowftgMSNv2 +6mCb1F7kxU4esdk4eoAJqqExs1vwG9sDexbcaYecM5nN985T1x7WLhw9rshA2xzO +BIpQlNf5OTsJgXmW+VUa2ZnI5TiqVCeKfZcR/RiFTxPGjBudq19sUgM/oERpnP/R +rNXd5zbMezFTEJfYcrcTuIrxn6HxIEx06VhQTFsAEXHOTbBMEfsG599TMBTsHweM +cAo7E+kE1xveqkmLjkdS16afUQUBt+TiqZTBTJbOowktZrZ/ReYB4tXzCg4K+2Iq +jJIssLhyDf9mU91Ig1nYNPT25qZFiuc384bVW5Bdg3XgfIkl1XvB1Fixe90dqvEa +eiSQhz98h9Rukk/Wjf6alTJBMb3szzU1dYqYMhxZXY3FZCuh8D60LFXFi7nt8ATj +zjVynxm4zns3DGCaiBeOpVPKjgrmx+53sIr91+Q1KMEaPTCk656boNvjBYQWTf4p +Q/pKL3/q9WLX5pX5po0DMJOoG+GdZ42u +-----END CERTIFICATE----- diff --git a/testdata/Bserver.key b/testdata/Bserver.key new file mode 100644 index 0000000..edb5928 --- /dev/null +++ b/testdata/Bserver.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/testdata/Bserver.pkcs12 b/testdata/Bserver.pkcs12 new file mode 100644 index 0000000000000000000000000000000000000000..2c067edf091e0b34ed727ae1a6a63debcb2596ef GIT binary patch literal 4077 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