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 0000000..2c067ed Binary files /dev/null and b/testdata/Bserver.pkcs12 differ