vanillaforums/Garden — pull request #1786 by mpeltier (2014-02-16 20:06:37+00:00)
Title: Add HTTP proxy support

Hi,
Several features of Vanilla do not work if the server is behind an HTTP proxy server. Could you please review this patch which adds the support of an HTTP proxy (with or without cURL). It mainly adds functions in library/core/functions.general.php (is it the right place?) and the following configuration variables:

$Configuration['Proxy']['Hostname'] = NULL;
$configuration['Proxy']['Port'] = '3128';
$Configuration['Proxy']['Login'] = NULL;
$Configuration['Proxy']['Password'] = NULL;

Other third party plugins not contained in Vanilla core could then use these methods (eg: SocialLogin).

I have made the following tests using Squid.

Facebook Social Connect = login with facebook whereas a local account exists with the same email
Twitter Social Connect = login with twitter whereas a local account exists with the same email
Google Sign = login with google whereas a local account exists with the same email
OpenID plugin = login with google url whereas a local account exists with the same email

Without proxy and with php-curl extension:
- Statistics in dashboard: ok
- News feeds in dashboard: ok
- Recaptcha: ok
- Facebook Social Connect: ok
- Twitter Social Connect: ok
- Google Sign In plugin: ok
- OpenID plugin: ok

Without proxy and without php-curl extension:
- Statistics in dashboard: ko (curl is required in library/core/class.proxyrequest.php)
- News feeds in dashboard: ok
- Recaptcha: ok
- Facebook Social Connect: ko (curl is required in plugins/Facebook/class.facebook.plugin.php)
- Twitter Social Connect: ko (curl is required in plugins/Twitter/class.twitter.plugin.php)
- Google Sign In plugin: ok
- OpenID plugin: ok

With proxy and with php-curl extension:
- Statistics in dashboard: ok
- News feeds in dashboard: ok
- Recaptcha: ok
- Facebook Social Connect: ok
- Twitter Social Connect: ok
- Google Sign In plugin: ok
- OpenID plugin: ok

With proxy and without php-curl extension:
- Statistics in dashboard: ko (curl is required in library/core/class.proxyrequest.php)
- News feeds in dashboard: ok
- Recaptcha: ok
- Facebook Social Connect: ko (curl is required in plugins/Facebook/class.facebook.plugin.php)
- Twitter Social Connect: ko (curl is required in plugins/Twitter/class.twitter.plugin.php)
- Google Sign In plugin: ok
- OpenID plugin: ok

With proxy which requires authentication and with php-curl extension:
- Statistics in dashboard: ok
- News feeds in dashboard: ok
- Recaptcha: ok
- Facebook Social Connect: ok
- Twitter Social Connect: ok
- Google Sign In plugin: ok
- OpenID plugin: ok

With proxy which requires authentication and without php-curl extension:
- Statistics in dashboard: ko (curl is required in library/core/class.proxyrequest.php)
- News feeds in dashboard: ok
- Recaptcha: ok
- Facebook Social Connect: ko (curl is required in plugins/Facebook/class.facebook.plugin.php)
- Twitter Social Connect: ko (curl is required in plugins/Twitter/class.twitter.plugin.php)
- Google Sign In plugin: ok
- OpenID plugin: ok

Thanks,
Mathieu