From 2110dfd30cc2fb2361bb676ec2dc36ff3b68cd53 Mon Sep 17 00:00:00 2001 From: Artur Angiel Date: Fri, 29 Oct 2021 02:27:44 +0200 Subject: [PATCH] Support path-based S3 storage. Closes #1495 (#1496) * Support path-based S3 storage. Closes #1495 Revert "Remove forcing old path-style URLs with s3. Closes #497" This reverts commit b2953028cf6d9040dba2c41268fb3db62260b65a. * #1495 Path-style S3 compatibile URLs implemented https://github.com/owncast/owncast/issues/1495 It gives ability to use S3 compatibile providers that doesn't support virtual-host-style URLs (i.e. Oracle Cloud Object Storage) Co-authored-by: Artur Angiel --- core/storageproviders/s3Storage.go | 9 ++++++--- models/s3Storage.go | 1 + openapi.yaml | 2 ++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/storageproviders/s3Storage.go b/core/storageproviders/s3Storage.go index ec8413046..251ee2e21 100644 --- a/core/storageproviders/s3Storage.go +++ b/core/storageproviders/s3Storage.go @@ -34,6 +34,7 @@ type S3Storage struct { s3AccessKey string s3Secret string s3ACL string + s3ForcePathStyle bool // If we try to upload a playlist but it is not yet on disk // then keep a reference to it here. @@ -67,6 +68,7 @@ func (s *S3Storage) Setup() error { s.s3AccessKey = s3Config.AccessKey s.s3Secret = s3Config.Secret s.s3ACL = s3Config.ACL + s.s3ForcePathStyle = s3Config.ForcePathStyle s.sess = s.connectAWS() @@ -184,9 +186,10 @@ func (s *S3Storage) connectAWS() *session.Session { sess, err := session.NewSession( &aws.Config{ - Region: aws.String(s.s3Region), - Credentials: creds, - Endpoint: aws.String(s.s3Endpoint), + Region: aws.String(s.s3Region), + Credentials: creds, + Endpoint: aws.String(s.s3Endpoint), + S3ForcePathStyle: aws.Bool(s.s3ForcePathStyle), }, ) diff --git a/models/s3Storage.go b/models/s3Storage.go index f768f1ed0..40da02caf 100644 --- a/models/s3Storage.go +++ b/models/s3Storage.go @@ -10,4 +10,5 @@ type S3 struct { Bucket string `json:"bucket,omitempty"` Region string `json:"region,omitempty"` ACL string `json:"acl,omitempty"` + ForcePathStyle bool `json:"forcePathStyle"` } diff --git a/openapi.yaml b/openapi.yaml index ca9779107..1bc448636 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -160,6 +160,8 @@ components: type: string acl: type: string + forcePathStyle: + type: boolean required: - enabled StreamQuality: