summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2018-02-26 06:45:35 -0800
committerHarrison Healey <harrisonmhealey@gmail.com>2018-02-26 09:45:35 -0500
commitae1acbda49e7039cb96289031e4ae057933d5e64 (patch)
tree1cb6986e90240d3e096af15f813290f7f1b281f9 /utils
parentf0f4f68defef1e9360394ba740c57cff7124dc9c (diff)
downloadchat-ae1acbda49e7039cb96289031e4ae057933d5e64.tar.gz
chat-ae1acbda49e7039cb96289031e4ae057933d5e64.tar.bz2
chat-ae1acbda49e7039cb96289031e4ae057933d5e64.zip
MM-9698 Fixing Minio with server side encryption. (#8367)
* Fixig Minio with server side encryption. * Add png file backend test
Diffstat (limited to 'utils')
-rw-r--r--utils/file_backend_s3.go23
-rw-r--r--utils/file_backend_test.go23
2 files changed, 39 insertions, 7 deletions
diff --git a/utils/file_backend_s3.go b/utils/file_backend_s3.go
index 7ef150851..8e72272a1 100644
--- a/utils/file_backend_s3.go
+++ b/utils/file_backend_s3.go
@@ -138,17 +138,15 @@ func (b *S3FileBackend) WriteFile(f []byte, path string) *model.AppError {
return model.NewAppError("WriteFile", "api.file.write_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError)
}
- options := s3.PutObjectOptions{}
- if b.encrypt {
- options.UserMetadata["x-amz-server-side-encryption"] = "AES256"
- }
-
+ var contentType string
if ext := filepath.Ext(path); model.IsFileExtImage(ext) {
- options.ContentType = model.GetImageMimeType(ext)
+ contentType = model.GetImageMimeType(ext)
} else {
- options.ContentType = "binary/octet-stream"
+ contentType = "binary/octet-stream"
}
+ options := s3PutOptions(b.encrypt, contentType)
+
if _, err = s3Clnt.PutObject(b.bucket, path, bytes.NewReader(f), -1, options); err != nil {
return model.NewAppError("WriteFile", "api.file.write_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError)
}
@@ -230,6 +228,17 @@ func (b *S3FileBackend) RemoveDirectory(path string) *model.AppError {
return nil
}
+func s3PutOptions(encrypt bool, contentType string) s3.PutObjectOptions {
+ options := s3.PutObjectOptions{}
+ if encrypt {
+ options.UserMetadata = make(map[string]string)
+ options.UserMetadata["x-amz-server-side-encryption"] = "AES256"
+ }
+ options.ContentType = contentType
+
+ return options
+}
+
func s3CopyMetadata(encrypt bool) map[string]string {
metaData := make(map[string]string)
metaData["x-amz-server-side-encryption"] = "AES256"
diff --git a/utils/file_backend_test.go b/utils/file_backend_test.go
index 46f75574e..2b8e2a527 100644
--- a/utils/file_backend_test.go
+++ b/utils/file_backend_test.go
@@ -36,6 +36,14 @@ func TestLocalFileBackendTestSuite(t *testing.T) {
}
func TestS3FileBackendTestSuite(t *testing.T) {
+ runBackendTest(t, false)
+}
+
+func TestS3FileBackendTestSuiteWithEncryption(t *testing.T) {
+ runBackendTest(t, true)
+}
+
+func runBackendTest(t *testing.T, encrypt bool) {
s3Host := os.Getenv("CI_HOST")
if s3Host == "" {
s3Host = "dockerhost"
@@ -56,6 +64,7 @@ func TestS3FileBackendTestSuite(t *testing.T) {
AmazonS3Bucket: model.MINIO_BUCKET,
AmazonS3Endpoint: s3Endpoint,
AmazonS3SSL: model.NewBool(false),
+ AmazonS3SSE: model.NewBool(encrypt),
},
})
}
@@ -86,6 +95,20 @@ func (s *FileBackendTestSuite) TestReadWriteFile() {
s.EqualValues(readString, "test")
}
+func (s *FileBackendTestSuite) TestReadWriteFileImage() {
+ b := []byte("testimage")
+ path := "tests/" + model.NewId() + ".png"
+
+ s.Nil(s.backend.WriteFile(b, path))
+ defer s.backend.RemoveFile(path)
+
+ read, err := s.backend.ReadFile(path)
+ s.Nil(err)
+
+ readString := string(read)
+ s.EqualValues(readString, "testimage")
+}
+
func (s *FileBackendTestSuite) TestCopyFile() {
b := []byte("test")
path1 := "tests/" + model.NewId()