mirror of
https://github.com/minio/minio.git
synced 2025-01-26 06:03:17 -05:00
Merge pull request #37 from fkautz/pr_out_simplifying_bucket_name_convention_and_making_convention_public
This commit is contained in:
commit
db32cb3e75
@ -64,7 +64,7 @@ func (storage *Storage) StoreObject(bucket string, key string, data io.Reader) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (storage *Storage) StoreBucket(bucketName string) error {
|
func (storage *Storage) StoreBucket(bucketName string) error {
|
||||||
if !isValidBucket(bucketName) {
|
if !mstorage.IsValidBucket(bucketName) {
|
||||||
return mstorage.BucketNameInvalid{Bucket: bucketName}
|
return mstorage.BucketNameInvalid{Bucket: bucketName}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,42 +115,6 @@ func start(ctrlChannel <-chan string, errorChannel chan<- error) {
|
|||||||
close(errorChannel)
|
close(errorChannel)
|
||||||
}
|
}
|
||||||
|
|
||||||
func isValidBucket(bucket string) bool {
|
|
||||||
l := len(bucket)
|
|
||||||
if l < 3 || l > 63 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
valid := false
|
|
||||||
prev := byte('.')
|
|
||||||
for i := 0; i < len(bucket); i++ {
|
|
||||||
c := bucket[i]
|
|
||||||
switch {
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
case 'a' <= c && c <= 'z':
|
|
||||||
valid = true
|
|
||||||
case '0' <= c && c <= '9':
|
|
||||||
// Is allowed, but bucketname can't be just numbers.
|
|
||||||
// Therefore, don't set valid to true
|
|
||||||
case c == '-':
|
|
||||||
if prev == '.' {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
case c == '.':
|
|
||||||
if prev == '.' || prev == '-' {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prev = c
|
|
||||||
}
|
|
||||||
|
|
||||||
if prev == '-' || prev == '.' {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return valid
|
|
||||||
}
|
|
||||||
|
|
||||||
func (storage *Storage) GetObjectMetadata(bucket, key string) mstorage.ObjectMetadata {
|
func (storage *Storage) GetObjectMetadata(bucket, key string) mstorage.ObjectMetadata {
|
||||||
objectKey := bucket + ":" + key
|
objectKey := bucket + ":" + key
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ package storage
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
"regexp"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Storage interface {
|
type Storage interface {
|
||||||
@ -43,3 +44,17 @@ type ObjectMetadata struct {
|
|||||||
Size int
|
Size int
|
||||||
ETag string
|
ETag string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsValidBucket(bucket string) bool {
|
||||||
|
if len(bucket) < 3 || len(bucket) > 63 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if bucket[0] == '.' || bucket[len(bucket)-1] == '.' {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if match, _ := regexp.MatchString("\\.\\.", bucket); match == true {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
match, _ := regexp.MatchString("^[a-zA-Z][a-zA-Z0-9\\.\\-]+[a-zA-Z0-9]$", bucket)
|
||||||
|
return match
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user