Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/mautic.corals.io/vendor/knplabs/gaufrette/src/Gaufrette/Adapter/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mautic.corals.io/vendor/knplabs/gaufrette/src/Gaufrette/Adapter/AclAwareAmazonS3.php
<?php

namespace Gaufrette\Adapter;

use AmazonS3 as AmazonClient;
use Gaufrette\Adapter;

@trigger_error('The ' . __NAMESPACE__ . '\AclAwareAmazonS3 adapter is deprecated since version 0.4 and will be removed in 1.0. Use the AwsS3 adapter instead.', E_USER_DEPRECATED);

/**
 * Makes the AmazonS3 adapter ACL aware. Uses the AWS SDK for PHP v1.x.
 *
 * See the AwsS3 adapter for using the AWS SDK for PHP v2.x. There is
 * no distinction in the AwsS3 adapter between an ACL aware adapter
 * and regular adapter.
 *
 * @author Johannes M. Schmitt <[email protected]>
 *
 * @deprecated The AclAwareAmazonS3 adapter is deprecated since version 0.4 and will be removed in 1.0. Use the AwsS3 adapter instead.
 */
class AclAwareAmazonS3 implements Adapter, MetadataSupporter
{
    protected $delegate;
    protected $s3;
    protected $bucketName;
    protected $aclConstant = AmazonClient::ACL_PRIVATE;
    protected $users = [];

    public function __construct(Adapter $delegate, AmazonClient $s3, $bucketName)
    {
        $this->delegate = $delegate;
        $this->s3 = $s3;
        $this->bucketName = $bucketName;
    }

    public function setAclConstant($constant)
    {
        if (!defined($constant = 'AmazonS3::ACL_' . strtoupper($constant))) {
            throw new \InvalidArgumentException(sprintf('The ACL constant "%s" does not exist on AmazonS3.', $constant));
        }

        $this->aclConstant = constant($constant);
    }

    public function setUsers(array $users)
    {
        $this->users = [];

        foreach ($users as $user) {
            if (!isset($user['permission'])) {
                throw new \InvalidArgumentException(sprintf('setUsers() expects an array where each item contains a "permission" key, but got %s.', json_encode($user)));
            }

            if (!defined($constant = 'AmazonS3::GRANT_' . strtoupper($user['permission']))) {
                throw new \InvalidArgumentException('The permission must be the suffix for one of the AmazonS3::GRANT_ constants.');
            }
            $user['permission'] = constant($constant);

            if (isset($user['group'])) {
                if (!defined($constant = 'AmazonS3::USERS_' . strtoupper($user['group']))) {
                    throw new \InvalidArgumentException('The group must be the suffix for one of the AmazonS3::USERS_ constants.');
                }
                $user['id'] = constant($constant);
                unset($user['group']);
            } elseif (!isset($user['id'])) {
                throw new \InvalidArgumentException(sprintf('Either "group", or "id" must be set for each user, but got %s.', json_encode($user)));
            }

            $this->users[] = $user;
        }
    }

    /**
     * {@inheritdoc}
     */
    public function read($key)
    {
        return $this->delegate->read($key);
    }

    /**
     * {@inheritdoc}
     */
    public function rename($key, $new)
    {
        $rs = $this->delegate->rename($key, $new);

        try {
            $this->updateAcl($new);

            return $rs;
        } catch (\Exception $ex) {
            $this->delete($new);

            return false;
        }
    }

    /**
     * {@inheritdoc}
     */
    public function write($key, $content)
    {
        $rs = $this->delegate->write($key, $content);

        try {
            $this->updateAcl($key);

            return $rs;
        } catch (\Exception $ex) {
            $this->delete($key);

            return false;
        }
    }

    /**
     * {@inheritdoc}
     */
    public function exists($key)
    {
        return $this->delegate->exists($key);
    }

    /**
     * {@inheritdoc}
     */
    public function mtime($key)
    {
        return $this->delegate->mtime($key);
    }

    /**
     * {@inheritdoc}
     */
    public function keys()
    {
        return $this->delegate->keys();
    }

    /**
     * {@inheritdoc}
     */
    public function delete($key)
    {
        return $this->delegate->delete($key);
    }

    /**
     * {@inheritdoc}
     */
    public function setMetadata($key, $metadata)
    {
        if ($this->delegate instanceof MetadataSupporter) {
            $this->delegate->setMetadata($key, $metadata);
        }
    }

    /**
     * {@inheritdoc}
     */
    public function getMetadata($key)
    {
        if ($this->delegate instanceof MetadataSupporter) {
            return $this->delegate->getMetadata($key);
        }

        return [];
    }

    /**
     * {@inheritdoc}
     */
    public function isDirectory($key)
    {
        return $this->delegate->isDirectory($key);
    }

    protected function getAcl()
    {
        if (empty($this->users)) {
            return $this->aclConstant;
        }

        return $this->users;
    }

    private function updateAcl($key)
    {
        $response = $this->s3->set_object_acl($this->bucketName, $key, $this->getAcl());
        if (200 != $response->status) {
            throw new \RuntimeException('S3-ACL change failed: ' . print_r($response, true));
        }
    }
}

Spamworldpro Mini