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

This commit is contained in:
Harshavardhana 2015-04-30 21:11:26 -07:00
parent 72395798c8
commit f3078d047c

View file

@ -24,13 +24,13 @@ import (
"errors"
"fmt"
"io"
"net"
"net/http"
"net/url"
"sort"
"strings"
"time"
"github.com/gorilla/mux"
"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> +
// [ sub-resource, if present. For example "?acl", "?location", "?logging", or "?torrent"];
func writeCanonicalizedResource(buf *bytes.Buffer, req *http.Request) {
// Grab bucket name from hostname
bucket := bucketFromHostname(req)
vars := mux.Vars(req)
bucket := vars["bucket"]
if bucket != "" {
buf.WriteByte('/')
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 ""
}