first commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* Akeeba Engine
|
||||
*
|
||||
* @package akeebaengine
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace Akeeba\Engine\Postproc;
|
||||
|
||||
use Akeeba\Engine\Platform;
|
||||
|
||||
trait ProxyAware
|
||||
{
|
||||
/**
|
||||
* Apply the platform proxy configuration to the cURL resource.
|
||||
*
|
||||
* @param resource $ch The cURL resource, returned by curl_init();
|
||||
*/
|
||||
protected function applyProxySettingsToCurl($ch)
|
||||
{
|
||||
if (defined('AKEEBA_NO_PROXY_AWARE'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$proxySettings = Platform::getInstance()->getProxySettings();
|
||||
|
||||
if (!$proxySettings['enabled'])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
curl_setopt($ch, CURLOPT_PROXY, $proxySettings['host'] . ':' . $proxySettings['port']);
|
||||
|
||||
if (empty($proxySettings['user']))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxySettings['user'] . ':' . $proxySettings['pass']);
|
||||
}
|
||||
|
||||
protected function getProxyStreamContext()
|
||||
{
|
||||
if (defined('AKEEBA_NO_PROXY_AWARE'))
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
$ret = [];
|
||||
$proxySettings = Platform::getInstance()->getProxySettings();
|
||||
|
||||
if (!$proxySettings['enabled'])
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$ret['http'] = [
|
||||
'proxy' => $proxySettings['host'] . ':' . $proxySettings['port'],
|
||||
'request_fulluri' => true,
|
||||
];
|
||||
$ret['ftp'] = [
|
||||
'proxy' => $proxySettings['host'] . ':' . $proxySettings['port'],
|
||||
// So, request_fulluri isn't documented for the FTP transport but seems to be required...?!
|
||||
'request_fulluri' => true,
|
||||
];
|
||||
|
||||
if (empty($proxySettings['user']))
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$ret['http']['header'] = ['Proxy-Authorization: Basic ' . base64_encode($proxySettings['user'] . ':' . $proxySettings['pass'])];
|
||||
$ret['ftp']['header'] = ['Proxy-Authorization: Basic ' . base64_encode($proxySettings['user'] . ':' . $proxySettings['pass'])];
|
||||
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user