Get bucketName from mux.Vars instead of heuristic code, resolves subdomain issues

master
Harshavardhana 10 years ago
parent 72395798c8
commit f3078d047c
  1. 26
      pkg/api/api_signature.go

@ -24,13 +24,13 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"net"
"net/http" "net/http"
"net/url" "net/url"
"sort" "sort"
"strings" "strings"
"time" "time"
"github.com/gorilla/mux"
"github.com/minio-io/minio/pkg/api/config" "github.com/minio-io/minio/pkg/api/config"
) )
@ -175,8 +175,8 @@ var subResList = []string{
// <HTTP-Request-URI, from the protocol name up to the query string> + // <HTTP-Request-URI, from the protocol name up to the query string> +
// [ sub-resource, if present. For example "?acl", "?location", "?logging", or "?torrent"]; // [ sub-resource, if present. For example "?acl", "?location", "?logging", or "?torrent"];
func writeCanonicalizedResource(buf *bytes.Buffer, req *http.Request) { func writeCanonicalizedResource(buf *bytes.Buffer, req *http.Request) {
// Grab bucket name from hostname vars := mux.Vars(req)
bucket := bucketFromHostname(req) bucket := vars["bucket"]
if bucket != "" { if bucket != "" {
buf.WriteByte('/') buf.WriteByte('/')
buf.WriteString(bucket) buf.WriteString(bucket)
@ -203,23 +203,3 @@ func writeCanonicalizedResource(buf *bytes.Buffer, req *http.Request) {
} }
} }
} }
// Convert subdomain http request into bucketname if possible
func bucketFromHostname(req *http.Request) string {
host, _, _ := net.SplitHostPort(req.Host)
// Verify incoming request if only IP with no bucket subdomain
if net.ParseIP(host) != nil {
return ""
}
if host == "" {
host = req.URL.Host
}
// Grab the bucket from the incoming hostname
host = strings.TrimSpace(host)
hostParts := strings.Split(host, ".")
if len(hostParts) > 2 {
return hostParts[0]
}
return ""
}

Loading…
Cancel
Save