From f520aa1f4d18a65919c22240a4d0352022d6ca1b Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Tue, 30 May 2017 16:12:24 -0700 Subject: Support AWS Signature V2 for Mattermost for S3 storage. (#6462) Certain S3 compatible servers only use Legacy Signature (AWS Signature V2), current code only supports signature v4. This PR adds facility to click a button on the UI to enable legacy signature with S3 compatible servers. --- api/file_test.go | 10 +++++++++- api/user_test.go | 8 ++++---- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'api') diff --git a/api/file_test.go b/api/file_test.go index 59adc8a71..dfe561e50 100644 --- a/api/file_test.go +++ b/api/file_test.go @@ -820,13 +820,21 @@ func readTestFile(name string) ([]byte, error) { } } +func s3New(endpoint, accessKey, secretKey string, secure bool, signV2 bool) (*s3.Client, error) { + if signV2 { + return s3.NewV2(endpoint, accessKey, secretKey, secure) + } + return s3.NewV4(endpoint, accessKey, secretKey, secure) +} + func cleanupTestFile(info *model.FileInfo) error { if utils.Cfg.FileSettings.DriverName == model.IMAGE_DRIVER_S3 { endpoint := utils.Cfg.FileSettings.AmazonS3Endpoint accessKey := utils.Cfg.FileSettings.AmazonS3AccessKeyId secretKey := utils.Cfg.FileSettings.AmazonS3SecretAccessKey secure := *utils.Cfg.FileSettings.AmazonS3SSL - s3Clnt, err := s3.New(endpoint, accessKey, secretKey, secure) + signV2 := *utils.Cfg.FileSettings.AmazonS3SignV2 + s3Clnt, err := s3New(endpoint, accessKey, secretKey, secure, signV2) if err != nil { return err } diff --git a/api/user_test.go b/api/user_test.go index 484cf6495..49c031923 100644 --- a/api/user_test.go +++ b/api/user_test.go @@ -20,8 +20,6 @@ import ( "github.com/mattermost/platform/model" "github.com/mattermost/platform/store" "github.com/mattermost/platform/utils" - - s3 "github.com/minio/minio-go" ) func TestCreateUser(t *testing.T) { @@ -696,7 +694,8 @@ func TestUserCreateImage(t *testing.T) { accessKey := utils.Cfg.FileSettings.AmazonS3AccessKeyId secretKey := utils.Cfg.FileSettings.AmazonS3SecretAccessKey secure := *utils.Cfg.FileSettings.AmazonS3SSL - s3Clnt, err := s3.New(endpoint, accessKey, secretKey, secure) + signV2 := *utils.Cfg.FileSettings.AmazonS3SignV2 + s3Clnt, err := s3New(endpoint, accessKey, secretKey, secure, signV2) if err != nil { t.Fatal(err) } @@ -800,7 +799,8 @@ func TestUserUploadProfileImage(t *testing.T) { accessKey := utils.Cfg.FileSettings.AmazonS3AccessKeyId secretKey := utils.Cfg.FileSettings.AmazonS3SecretAccessKey secure := *utils.Cfg.FileSettings.AmazonS3SSL - s3Clnt, err := s3.New(endpoint, accessKey, secretKey, secure) + signV2 := *utils.Cfg.FileSettings.AmazonS3SignV2 + s3Clnt, err := s3New(endpoint, accessKey, secretKey, secure, signV2) if err != nil { t.Fatal(err) } -- cgit v1.2.3-1-g7c22