public function params(array $params = [], string $url = '') : array
{
$config = State::instance();
$defaults = ['curl' => [CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2]];
/**
* If we have pre-configured some global parameters, let's add them to
* our defaults before we check if we need Tor support.
*/
if (!empty($config->universal['guzzle'])) {
$defaults = \array_merge($defaults, $config->universal['guzzle']);
}
/**
* Support for Tor Hidden Services
*/
if (\Airship\isOnionUrl($url)) {
// A .onion domain should be a Tor Hidden Service
$defaults['curl'][CURLOPT_PROXY] = 'http://127.0.0.1:9050/';
$defaults['curl'][CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5;
if (!\preg_match('#^https://', $url)) {
// If it's a .onion site, HTTPS is not required.
// If HTTPS is specified, still enforce it.
unset($defaults['curl'][CURLOPT_SSLVERSION]);
}
} elseif (!empty($config->universal['tor-only'])) {
// We were configured to use Tor for everything.
$defaults['curl'][CURLOPT_PROXY] = 'http://127.0.0.1:9050/';
$defaults['curl'][CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5;
}
return \array_merge($defaults, ['form_params' => $params]);
}