Fix S3 storage parsing from environment variable
This commit is contained in:
parent
51cbb8e74e
commit
98c561554d
@ -5,8 +5,6 @@ import (
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/net/publicsuffix"
|
||||
)
|
||||
|
||||
// array of s3 storages
|
||||
@ -105,23 +103,9 @@ func (s *s3StorageListValue) Set(val string) error {
|
||||
password, _ := u.User.Password()
|
||||
t.SecretAccessKey = password
|
||||
|
||||
hostname := u.Hostname()
|
||||
port := u.Port()
|
||||
|
||||
domain, err := publicsuffix.EffectiveTLDPlusOne(hostname)
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid eTLD (%s): %w", hostname, err)
|
||||
}
|
||||
|
||||
t.Endpoint = domain
|
||||
if len(port) != 0 {
|
||||
t.Endpoint += ":" + port
|
||||
}
|
||||
|
||||
region := strings.TrimSuffix(hostname, domain)
|
||||
if len(region) != 0 {
|
||||
t.Region = strings.TrimSuffix(region, ".")
|
||||
}
|
||||
region, endpoint, _ := strings.Cut(u.Host, ".")
|
||||
t.Endpoint = endpoint
|
||||
t.Region = region
|
||||
|
||||
secret, ok := u.User.Password()
|
||||
if ok {
|
||||
|
||||
@ -12,7 +12,7 @@ func TestS3Value(t *testing.T) {
|
||||
v := NewS3StorageListValue(&filesystems, nil, " ")
|
||||
require.Equal(t, "(empty)", v.String())
|
||||
|
||||
v.Set("https://access_key_id1:secret_access_id1@region1.endpoint1.com/bucket1?name=aaa1&mount=/abc1&username=xxx1&password=yyy1 http://access_key_id2:secret_access_id2@region2.endpoint2.com/bucket2?name=aaa2&mount=/abc2&username=xxx2&password=yyy2")
|
||||
v.Set("https://access_key_id1:secret_access_id1@region1.subdomain.endpoint1.com/bucket1?name=aaa1&mount=/abc1&username=xxx1&password=yyy1 http://access_key_id2:secret_access_id2@region2.endpoint2.com/bucket2?name=aaa2&mount=/abc2&username=xxx2&password=yyy2")
|
||||
require.Equal(t, []S3Storage{
|
||||
{
|
||||
Name: "aaa1",
|
||||
@ -22,7 +22,7 @@ func TestS3Value(t *testing.T) {
|
||||
Username: "xxx1",
|
||||
Password: "yyy1",
|
||||
},
|
||||
Endpoint: "endpoint1.com",
|
||||
Endpoint: "subdomain.endpoint1.com",
|
||||
AccessKeyID: "access_key_id1",
|
||||
SecretAccessKey: "secret_access_id1",
|
||||
Bucket: "bucket1",
|
||||
@ -45,7 +45,7 @@ func TestS3Value(t *testing.T) {
|
||||
UseSSL: false,
|
||||
},
|
||||
}, filesystems)
|
||||
require.Equal(t, "https://access_key_id1:---@region1.endpoint1.com/bucket1?mount=%2Fabc1&name=aaa1&password=---&username=xxx1 http://access_key_id2:---@region2.endpoint2.com/bucket2?mount=%2Fabc2&name=aaa2&password=---&username=xxx2", v.String())
|
||||
require.Equal(t, "https://access_key_id1:---@region1.subdomain.endpoint1.com/bucket1?mount=%2Fabc1&name=aaa1&password=---&username=xxx1 http://access_key_id2:---@region2.endpoint2.com/bucket2?mount=%2Fabc2&name=aaa2&password=---&username=xxx2", v.String())
|
||||
require.NoError(t, v.Validate())
|
||||
|
||||
v.Set("https://access_key_id1:secret_access_id1@region1.endpoint1.com/bucket1?name=djk*;..&mount=/abc1&username=xxx1&password=yyy1")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user