Warning on S3 not compatible DNS bucket name

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 <sebastien.cat@inra.fr>
This commit is contained in:
S. Cat 2019-02-26 09:32:14 +01:00 committed by Sébastien Cat
parent 59c3d8d85f
commit 77473b0228
1 changed files with 11 additions and 4 deletions

View File

@ -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, [