summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSamuel <faust64@gmail.com>2021-03-13 12:05:27 +0100
committerMaxime Besson <maxime.besson@worteks.com>2021-04-09 10:15:57 +0200
commit03fe74b95e23df70d3cd4815a84b6fa22a06ee81 (patch)
tree101338455cc0087865950b4e0e591e1ab47bb094 /lib
parent32551b9ff7978395ec7777f11320056ab8413432 (diff)
downloadnextcloud-server-03fe74b95e23df70d3cd4815a84b6fa22a06ee81.tar.gz
nextcloud-server-03fe74b95e23df70d3cd4815a84b6fa22a06ee81.zip
fix(proxy): reaching s3 storage behind some http proxy
Signed-off-by: Maxime Besson <maxime.besson@worteks.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Files/ObjectStore/S3ConnectionTrait.php10
-rw-r--r--lib/private/Files/ObjectStore/S3ObjectTrait.php7
2 files changed, 15 insertions, 2 deletions
diff --git a/lib/private/Files/ObjectStore/S3ConnectionTrait.php b/lib/private/Files/ObjectStore/S3ConnectionTrait.php
index d88ef0ac8e7..6fd6b14aabe 100644
--- a/lib/private/Files/ObjectStore/S3ConnectionTrait.php
+++ b/lib/private/Files/ObjectStore/S3ConnectionTrait.php
@@ -57,6 +57,9 @@ trait S3ConnectionTrait {
/** @var int */
protected $timeout;
+ /** @var string */
+ protected $proxy;
+
/** @var int */
protected $uploadPartSize;
@@ -71,6 +74,7 @@ trait S3ConnectionTrait {
$this->test = isset($params['test']);
$this->bucket = $params['bucket'];
+ $this->proxy = isset($params['proxy']) ? $params['proxy'] : false;
$this->timeout = !isset($params['timeout']) ? 15 : $params['timeout'];
$this->uploadPartSize = !isset($params['uploadPartSize']) ? 524288000 : $params['uploadPartSize'];
$params['region'] = empty($params['region']) ? 'eu-west-1' : $params['region'];
@@ -86,6 +90,10 @@ trait S3ConnectionTrait {
return $this->bucket;
}
+ public function getProxy() {
+ return $this->proxy;
+ }
+
/**
* Returns the connection
*
@@ -123,7 +131,7 @@ trait S3ConnectionTrait {
'csm' => false,
];
if (isset($this->params['proxy'])) {
- $options['request.options'] = ['proxy' => $this->params['proxy']];
+ $options['http'] = [ 'proxy' => $this->params['proxy'] ];
}
if (isset($this->params['legacy_auth']) && $this->params['legacy_auth']) {
$options['signature_version'] = 'v2';
diff --git a/lib/private/Files/ObjectStore/S3ObjectTrait.php b/lib/private/Files/ObjectStore/S3ObjectTrait.php
index 4d6ac3608df..3f9d86f8e2b 100644
--- a/lib/private/Files/ObjectStore/S3ObjectTrait.php
+++ b/lib/private/Files/ObjectStore/S3ObjectTrait.php
@@ -51,7 +51,8 @@ trait S3ObjectTrait {
*/
public function readObject($urn) {
return SeekableHttpStream::open(function ($range) use ($urn) {
- $command = $this->getConnection()->getCommand('GetObject', [
+ $connection = $this->getConnection();
+ $command = $connection->getCommand('GetObject', [
'Bucket' => $this->bucket,
'Key' => $urn,
'Range' => 'bytes=' . $range,
@@ -70,6 +71,10 @@ trait S3ObjectTrait {
],
];
+ if ($connection->getProxy()) {
+ $opts['http']['proxy'] = $connection->getProxy();
+ }
+
$context = stream_context_create($opts);
return fopen($request->getUri(), 'r', false, $context);
});