diff --git a/compose/service/service.go b/compose/service/service.go index bed1bfdd7..9aae14622 100644 --- a/compose/service/service.go +++ b/compose/service/service.go @@ -13,6 +13,7 @@ import ( "github.com/cortezaproject/corteza-server/pkg/cli/options" "github.com/cortezaproject/corteza-server/pkg/permissions" "github.com/cortezaproject/corteza-server/pkg/store" + "github.com/cortezaproject/corteza-server/pkg/store/minio" "github.com/cortezaproject/corteza-server/pkg/store/plain" systemProto "github.com/cortezaproject/corteza-server/system/proto" ) @@ -78,11 +79,35 @@ func Init(ctx context.Context, log *zap.Logger, c Config) (err error) { DefaultLogger = log.Named("service") if DefaultStore == nil { - DefaultStore, err = plain.New(c.Storage.Path) - log.Info("initializing store", zap.String("path", c.Storage.Path), zap.Error(err)) - if err != nil { - return err + if c.Storage.MinioEndpoint != "" { + if c.Storage.MinioBucket == "" { + c.Storage.MinioBucket = "compose" + } + + DefaultStore, err = minio.New(c.Storage.MinioBucket, minio.Options{ + Endpoint: c.Storage.MinioEndpoint, + Secure: c.Storage.MinioSecure, + Strict: c.Storage.MinioStrict, + AccessKeyID: c.Storage.MinioAccessKey, + SecretAccessKey: c.Storage.MinioSecretKey, + + ServerSideEncryptKey: []byte(c.Storage.MinioSSECKey), + }) + + log.Info("initializing minio", + zap.String("bucket", c.Storage.MinioBucket), + zap.String("endpoint", c.Storage.MinioEndpoint), + zap.Error(err)) + } else { + DefaultStore, err = plain.New(c.Storage.Path) + log.Info("initializing store", + zap.String("path", c.Storage.Path), + zap.Error(err)) } + + if err != nil { + return err + } } // Permissions, access control diff --git a/messaging/service/service.go b/messaging/service/service.go index 119c9eac8..6d9bfa836 100644 --- a/messaging/service/service.go +++ b/messaging/service/service.go @@ -61,6 +61,8 @@ func Init(ctx context.Context, log *zap.Logger, c Config) (err error) { Strict: c.Storage.MinioStrict, AccessKeyID: c.Storage.MinioAccessKey, SecretAccessKey: c.Storage.MinioSecretKey, + + ServerSideEncryptKey: []byte(c.Storage.MinioSSECKey), }) log.Info("initializing minio", diff --git a/pkg/cli/options/storage.go b/pkg/cli/options/storage.go index 822a7dc31..e5a5e3683 100644 --- a/pkg/cli/options/storage.go +++ b/pkg/cli/options/storage.go @@ -8,6 +8,7 @@ type ( MinioSecure bool `env:"MINIO_SECURE"` MinioAccessKey string `env:"MINIO_ACCESS_KEY"` MinioSecretKey string `env:"MINIO_SECRET_KEY"` + MinioSSECKey string `env:"MINIO_SSEC_KEY"` MinioBucket string `env:"MINIO_BUCKET"` MinioStrict bool `env:"MINIO_STRICT"` } diff --git a/pkg/store/minio/store.go b/pkg/store/minio/store.go index 45d2bfd4b..b0dc164f7 100644 --- a/pkg/store/minio/store.go +++ b/pkg/store/minio/store.go @@ -75,6 +75,9 @@ func New(bucket string, opt Options) (s *store, err error) { if len(opt.ServerSideEncryptKey) > 0 { s.sse, err = encrypt.NewSSEC(opt.ServerSideEncryptKey) + if err != nil { + return nil, err + } } return