PATH:
home
/
thebhoeo
/
.trash
/
backwpup
/
inc
<?php declare(strict_types=1); use Aws\S3\S3Client; /** * Class BackWPup_S3_Destination. */ final class BackWPup_S3_Destination { /** * Destination options. * * @var array */ private $options; /** * BackWPup_S3_Destination constructor. * * @param array $options Destination options. */ private function __construct( array $options ) { $defaults = [ 'label' => __( 'Custom S3 destination', 'backwpup' ), 'endpoint' => '', 'region' => '', 'multipart' => true, 'only_path_style_bucket' => false, 'version' => 'latest', 'signature' => 'v4', ]; $this->options = array_merge( $defaults, $options ); } /** * Get list of S3 destinations. * * This list can be extended by using the `backwpup_s3_destination` filter. */ public static function options(): array { return wpm_apply_filters_typed( 'array', 'backwpup_s3_destination', [ 'us-east-2' => [ 'label' => __( 'Amazon S3: US East (Ohio)', 'backwpup' ), 'region' => 'us-east-2', 'multipart' => true, ], 'us-east-1' => [ 'label' => __( 'Amazon S3: US East (N. Virginia)', 'backwpup' ), 'region' => 'us-east-1', 'multipart' => true, ], 'us-west-1' => [ 'label' => __( 'Amazon S3: US West (N. California)', 'backwpup' ), 'region' => 'us-west-1', 'multipart' => true, ], 'us-west-2' => [ 'label' => __( 'Amazon S3: US West (Oregon)', 'backwpup' ), 'region' => 'us-west-2', 'multipart' => true, ], 'af-south-1' => [ 'label' => __( 'Amazon S3: Africa (Cape Town)', 'backwpup' ), 'region' => 'af-south-1', 'multipart' => true, ], 'ap-east-1' => [ 'label' => __( 'Amazon S3: Asia Pacific (Hong Kong)', 'backwpup' ), 'region' => 'ap-east-1', 'multipart' => true, ], 'ap-southeast-3' => [ 'label' => __( 'Amazon S3: Asia Pacific (Jakarta)', 'backwpup' ), 'region' => 'ap-southeast-3', 'multipart' => true, ], 'ap-south-1' => [ 'label' => __( 'Amazon S3: Asia Pacific (Mumbai)', 'backwpup' ), 'region' => 'ap-south-1', 'multipart' => true, ], 'ap-northeast-3' => [ 'label' => __( 'Amazon S3: Asia Pacific (Osaka)', 'backwpup' ), 'region' => 'ap-northeast-3', 'multipart' => true, ], 'ap-northeast-2' => [ 'label' => __( 'Amazon S3: Asia Pacific (Seoul)', 'backwpup' ), 'region' => 'ap-northeast-2', 'multipart' => true, ], 'ap-southeast-1' => [ 'label' => __( 'Amazon S3: Asia Pacific (Singapore)', 'backwpup' ), 'region' => 'ap-southeast-1', 'multipart' => true, ], 'ap-southeast-2' => [ 'label' => __( 'Amazon S3: Asia Pacific (Sydney)', 'backwpup' ), 'region' => 'ap-southeast-2', 'multipart' => true, ], 'ap-northeast-1' => [ 'label' => __( 'Amazon S3: Asia Pacific (Tokyo)', 'backwpup' ), 'region' => 'ap-northeast-1', 'multipart' => true, ], 'ca-central-1' => [ 'label' => __( 'Amazon S3: Canada (Central)', 'backwpup' ), 'region' => 'ca-central-1', 'multipart' => true, ], 'eu-central-1' => [ 'label' => __( 'Amazon S3: Europe (Frankfurt)', 'backwpup' ), 'region' => 'eu-central-1', 'multipart' => true, ], 'eu-west-1' => [ 'label' => __( 'Amazon S3: Europe (Ireland)', 'backwpup' ), 'region' => 'eu-west-1', 'multipart' => true, ], 'eu-west-2' => [ 'label' => __( 'Amazon S3: Europe (London)', 'backwpup' ), 'region' => 'eu-west-2', 'multipart' => true, ], 'eu-south-1' => [ 'label' => __( 'Amazon S3: Europe (Milan)', 'backwpup' ), 'region' => 'eu-south-1', 'multipart' => true, ], 'eu-west-3' => [ 'label' => __( 'Amazon S3: Europe (Paris)', 'backwpup' ), 'region' => 'eu-west-3', 'multipart' => true, ], 'eu-north-1' => [ 'label' => __( 'Amazon S3: Europe (Stockholm)', 'backwpup' ), 'region' => 'eu-north-1', 'multipart' => true, ], 'me-south-1' => [ 'label' => __( 'Amazon S3: Middle East (Bahrain)', 'backwpup' ), 'region' => 'me-south-1', 'multipart' => true, ], 'sa-east-1' => [ 'label' => __( 'Amazon S3: South America (São Paulo)', 'backwpup' ), 'region' => 'sa-east-1', 'multipart' => true, ], 'us-gov-east-1' => [ 'label' => __( 'Amazon S3: AWS GovCloud (US-East)', 'backwpup' ), 'region' => 'us-gov-east-1', 'multipart' => true, ], 'us-gov-west-1' => [ 'label' => __( 'Amazon S3: AWS GovCloud (US-West)', 'backwpup' ), 'region' => 'us-gov-west-1', 'multipart' => true, ], 'google-storage' => [ 'label' => __( 'Google Storage: EU (Multi-Regional)', 'backwpup' ), 'region' => 'EU', 'endpoint' => 'https://storage.googleapis.com', ], 'google-storage-us' => [ 'label' => __( 'Google Storage: USA (Multi-Regional)', 'backwpup' ), 'region' => 'US', 'endpoint' => 'https://storage.googleapis.com', ], 'google-storage-asia' => [ 'label' => __( 'Google Storage: Asia (Multi-Regional)', 'backwpup' ), 'region' => 'ASIA', 'endpoint' => 'https://storage.googleapis.com', ], 'dreamhost' => [ 'label' => __( 'Dream Host Cloud Storage', 'backwpup' ), 'endpoint' => 'https://objects-us-west-1.dream.io', ], 'digital-ocean-sfo2' => [ 'label' => __( 'DigitalOcean: SFO2', 'backwpup' ), 'endpoint' => 'https://sfo2.digitaloceanspaces.com', ], 'digital-ocean-nyc3' => [ 'label' => __( 'DigitalOcean: NYC3', 'backwpup' ), 'endpoint' => 'https://nyc3.digitaloceanspaces.com', ], 'digital-ocean-ams3' => [ 'label' => __( 'DigitalOcean: AMS3', 'backwpup' ), 'endpoint' => 'https://ams3.digitaloceanspaces.com', ], 'digital-ocean-sgp1' => [ 'label' => __( 'DigitalOcean: SGP1', 'backwpup' ), 'endpoint' => 'https://sgp1.digitaloceanspaces.com', ], 'digital-ocean-fra1' => [ 'label' => __( 'DigitalOcean: FRA1', 'backwpup' ), 'endpoint' => 'https://fra1.digitaloceanspaces.com', ], 'scaleway-ams' => [ 'label' => __( 'Scaleway: AMS', 'backwpup' ), 'region' => 'nl-ams', 'endpoint' => 'https://s3.nl-ams.scw.cloud', ], 'scaleway-par' => [ 'label' => __( 'Scaleway: PAR', 'backwpup' ), 'region' => 'fr-par', 'endpoint' => 'https://s3.fr-par.scw.cloud', ], 'custom' => [ 'label' => __( 'Custom', 'backwpup' ), 'region' => null, 'endpoint' => null, ], ] ); } /** * Get the AWS destination of the passed id or base url. * * @param string $id_or_url Destination id or endpoint. * * @return self */ public static function from_option( string $id_or_url ): self { $destinations = self::options(); return new self( $destinations[ $id_or_url ] ); } /** * Get the AWS destination class from options array. * * @param array $options_arr S3 options. * * @return self */ public static function from_option_array( array $options_arr ): self { return new self( $options_arr ); } /** * Get the AWS destination class from job ID. * * @param int $job_id The job ID to get options from. * * @return self */ public static function from_job_id( int $job_id ): self { $options = [ 'label' => __( 'Custom S3 destination', 'backwpup' ), 'endpoint' => BackWPup_Option::get( $job_id, 's3base_url' ), 'region' => BackWPup_Option::get( $job_id, 's3base_region' ), 'multipart' => ! empty( BackWPup_Option::get( $job_id, 's3base_multipart' ) ), 'only_path_style_bucket' => ! empty( BackWPup_Option::get( $job_id, 's3base_pathstylebucket' ) ), 'version' => BackWPup_Option::get( $job_id, 's3base_version' ), 'signature' => BackWPup_Option::get( $job_id, 's3base_signature' ), ]; return self::from_option_array( $options ); } /** * Get the Amazon S3 Client. * * @param string $access_key Access key. * @param string $secret_key Secret key. */ public function client( $access_key, $secret_key ): S3Client { $s3_options = [ 'signature' => $this->signature(), 'credentials' => [ 'key' => $access_key, 'secret' => BackWPup_Encryption::decrypt( $secret_key ), ], 'region' => $this->region(), 'http' => [ 'verify' => BackWPup::get_plugin_data( 'cacert' ), ], 'version' => $this->version(), 'use_path_style_endpoint' => $this->only_path_style_bucket(), ]; if ( $this->endpoint() ) { $s3_options['endpoint'] = $this->endpoint(); if ( ! $this->region() ) { $s3_options['bucket_endpoint'] = true; } } $s3_options = wpm_apply_filters_typed( 'array', 'backwpup_s3_client_options', $s3_options ); return new S3Client( $s3_options ); } /** * The label of the destination. */ public function label(): string { return $this->options['label']; } /** * The region of the destination. */ public function region(): string { return $this->options['region']; } /** * The base url of the option. If empty than it should be a original AWS. */ public function endpoint(): string { return $this->options['endpoint']; } /** * The s3 version for the api like '2006-03-01'. */ public function version(): string { return $this->options['version']; } /** * The signature for the api like 'v4'. */ public function signature(): string { return $this->options['signature']; } /** * Destination supports multipart uploads. */ public function supports_multipart(): bool { return (bool) $this->options['multipart']; } /** * Destination support only path style buckets. */ public function only_path_style_bucket(): bool { return (bool) $this->options['only_path_style_bucket']; } }
[-] class-system-tests-runner.php
[edit]
[-] class-jobtype-dbdump.php
[edit]
[-] class-destination-rsc.php
[edit]
[-] class-encryption.php
[edit]
[-] class-destination-downloader-factory.php
[edit]
[-] class-destination-downloader-interface.php
[edit]
[-] class-destination-ftp-type-ftp.php
[edit]
[-] class-path-fixer.php
[edit]
[-] class-message-box.php
[edit]
[-] class-destination-dropbox-api.php
[edit]
[-] class-option.php
[edit]
[-] class-destination-dropbox-api-request-exception.php
[edit]
[-] class-page-about.php
[edit]
[-] class-migrate.php
[edit]
[-] class-system-requirements.php
[edit]
[-] class-adminbar.php
[edit]
[-] class-msazure-destination-configuration.php
[edit]
[-] class-job.php
[edit]
[-] class-destination-ftp-type-exception.php
[edit]
[-] class-destination-sugarsync-api.php
[edit]
[-] class-download-file-interface.php
[edit]
[-] class-encryption-fallback.php
[edit]
[-] BackWPup.php
[edit]
[-] class-page-backwpup.php
[edit]
[-] class-destination-downloader-data.php
[edit]
[-] class-mysqldump-exception.php
[edit]
[-] class-s3-destination.php
[edit]
[-] class-destination-ftp.php
[edit]
[-] class-cron.php
[edit]
[+]
Notice
[-] class-destination-downloader.php
[edit]
[-] class-destinations.php
[edit]
[-] class-destination-ftp-downloader.php
[edit]
[-] class-destination-dropbox-downloader.php
[edit]
[-] class-download-handler.php
[edit]
[-] class-destination-dropbox.php
[edit]
[-] class-system-tests.php
[edit]
[-] class-destination-folder-downloader.php
[edit]
[-] class-destination-ftp-type.php
[edit]
[-] class-thirdparties.php
[edit]
[-] class-jobtype-wpplugin.php
[edit]
[-] class-directory.php
[edit]
[-] class-recursive-directory.php
[edit]
[-] class-destination-msazure-downloader.php
[edit]
[-] class-destination-connect-interface.php
[edit]
[-] class-install.php
[edit]
[-] class-admin.php
[edit]
[-] class-jobtype-file.php
[edit]
[-] functions.php
[edit]
[+]
Utils
[+]
ThirdParty
[-] class-destination-s3-downloader.php
[edit]
[-] class-destination-rsc-downloader.php
[edit]
[-] class-destination-sugarsync-downloader.php
[edit]
[-] class-destination-email.php
[edit]
[+]
..
[-] class-mysqldump.php
[edit]
[-] class-page-firstbackup.php
[edit]
[-] class-jobtype-wpexp.php
[edit]
[-] class-jobtype-dbcheck.php
[edit]
[-] class-file.php
[edit]
[-] class-sanitize-path.php
[edit]
[+]
Settings
[-] class-destination-s3.php
[edit]
[-] class-page-logs.php
[edit]
[-] class-factory-exception.php
[edit]
[-] class-page-restore.php
[edit]
[+]
dependencies
[-] class-create-archive-exception.php
[edit]
[-] class-page-editjob.php
[edit]
[-] class-page-backups.php
[edit]
[-] class-destination-dropbox-api-exception.php
[edit]
[-] class-create-archive.php
[edit]
[-] class-encryption-openssl.php
[edit]
[-] class-destination-onedrive-config-trait.php
[edit]
[-] class-destination-download-exception.php
[edit]
[-] class-download-file.php
[edit]
[-] class-page-settings.php
[edit]
[-] class-destination-msazure.php
[edit]
[-] class-page-onboarding.php
[edit]
[-] class-destination-folder.php
[edit]
[-] class-jobtypes.php
[edit]
[-] class-destination-connect-exception.php
[edit]
[-] class-destination-sugarsync.php
[edit]
[-] class-page-jobs.php
[edit]
[-] class-destination-sugarsync-api-exception.php
[edit]
[-] class-encryption-mcrypt.php
[edit]