From 77473b0228d52ab7add4f0c469631cbb2a9171ba Mon Sep 17 00:00:00 2001 From: "S. Cat" <33800996+sparrowjack63@users.noreply.github.com> Date: Tue, 26 Feb 2019 09:32:14 +0100 Subject: [PATCH] Warning on S3 not compatible DNS bucket name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The new created bucket should respect the DNS compatibility, nevertheless, Nextcloud should accept to mount "old created" buckets that does not respect DNS compatibility (Backward compatibility, or compatibility with CEPH). Signed-off-by: Sébastien Cat --- .../Files/ObjectStore/S3ConnectionTrait.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/private/Files/ObjectStore/S3ConnectionTrait.php b/lib/private/Files/ObjectStore/S3ConnectionTrait.php index 02b6fff684..4bb98e1149 100644 --- a/lib/private/Files/ObjectStore/S3ConnectionTrait.php +++ b/lib/private/Files/ObjectStore/S3ConnectionTrait.php @@ -99,13 +99,20 @@ trait S3ConnectionTrait { } $this->connection = new S3Client($options); - if (!$this->connection->doesBucketExist($this->bucket)) { + if (!$this->connection->isBucketDnsCompatible($this->bucket)) { + $logger = \OC::$server->getLogger(); + $logger->warning('Bucket "' . $this->bucket . '" This bucket name is not dns compatible, it may contain invalid characters.', + ['app' => 'objectstore']); + } + + if (!$this->connection->doesBucketExist($this->bucket)) { $logger = \OC::$server->getLogger(); try { $logger->info('Bucket "' . $this->bucket . '" does not exist - creating it.', ['app' => 'objectstore']); - $this->connection->createBucket(array( - 'Bucket' => $this->bucket - )); + if (!$this->connection->isBucketDnsCompatible($this->bucket)) { + throw new \Exception("The bucket will not be created because the name is not dns compatible, please correct it: " . $this->bucket); + } + $this->connection->createBucket(array('Bucket' => $this->bucket)); $this->testTimeout(); } catch (S3Exception $e) { $logger->logException($e, [