diff --git a/conf/dokuwiki.php b/conf/dokuwiki.php index f2a843f96d2b15d4e4cb6fec3d89156ad864ac01..2405494e09b3fd5ebd77cf73bafa82b37b729cf5 100644 --- a/conf/dokuwiki.php +++ b/conf/dokuwiki.php @@ -142,11 +142,12 @@ $conf['target']['media'] = ''; $conf['target']['windows'] = ''; //Proxy setup - if your Server needs a proxy to access the web set these -$conf['proxy']['host'] = ''; -$conf['proxy']['port'] = ''; -$conf['proxy']['user'] = ''; -$conf['proxy']['pass'] = ''; -$conf['proxy']['ssl'] = 0; +$conf['proxy']['host'] = ''; +$conf['proxy']['port'] = ''; +$conf['proxy']['user'] = ''; +$conf['proxy']['pass'] = ''; +$conf['proxy']['ssl'] = 0; +$conf['proxy']['except'] = ''; /* Safemode Hack */ diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php index c88d1c45d023c4d3b5e2b6d4a5881196ca60c979..ebe349573b202ee15ab260d267ac466acc035a7b 100644 --- a/inc/HTTPClient.php +++ b/inc/HTTPClient.php @@ -29,11 +29,12 @@ class DokuHTTPClient extends HTTPClient { $this->HTTPClient(); // set some values from the config - $this->proxy_host = $conf['proxy']['host']; - $this->proxy_port = $conf['proxy']['port']; - $this->proxy_user = $conf['proxy']['user']; - $this->proxy_pass = conf_decodeString($conf['proxy']['pass']); - $this->proxy_ssl = $conf['proxy']['ssl']; + $this->proxy_host = $conf['proxy']['host']; + $this->proxy_port = $conf['proxy']['port']; + $this->proxy_user = $conf['proxy']['user']; + $this->proxy_pass = conf_decodeString($conf['proxy']['pass']); + $this->proxy_ssl = $conf['proxy']['ssl']; + $this->proxy_except = $conf['proxy']['except']; } @@ -105,6 +106,7 @@ class HTTPClient { var $proxy_user; var $proxy_pass; var $proxy_ssl; //boolean set to true if your proxy needs SSL + var $proxy_except; // regexp of URLs to exclude from proxy // what we use as boundary on multipart/form-data posts var $boundary = '---DokuWikiHTTPClient--4523452351'; @@ -202,7 +204,7 @@ class HTTPClient { if(isset($uri['pass'])) $this->pass = $uri['pass']; // proxy setup - if($this->proxy_host){ + if($this->proxy_host && (!$this->proxy_except || !preg_match('/'.$this->proxy_except.'/i',$url)) ){ $request_url = $url; $server = $this->proxy_host; $port = $this->proxy_port; diff --git a/lib/plugins/config/lang/en/lang.php b/lib/plugins/config/lang/en/lang.php index dd13464fe652d74d4f1d2b135f6cd92bc393d9c8..66e5b00e07485975225a3e2b4ec9191692c649c9 100644 --- a/lib/plugins/config/lang/en/lang.php +++ b/lib/plugins/config/lang/en/lang.php @@ -157,11 +157,12 @@ $lang['target____media'] = 'Target window for media links'; $lang['target____windows'] = 'Target window for windows links'; /* Proxy Options */ -$lang['proxy____host'] = 'Proxy servername'; -$lang['proxy____port'] = 'Proxy port'; -$lang['proxy____user'] = 'Proxy user name'; -$lang['proxy____pass'] = 'Proxy password'; -$lang['proxy____ssl'] = 'Use ssl to connect to Proxy'; +$lang['proxy____host'] = 'Proxy servername'; +$lang['proxy____port'] = 'Proxy port'; +$lang['proxy____user'] = 'Proxy user name'; +$lang['proxy____pass'] = 'Proxy password'; +$lang['proxy____ssl'] = 'Use SLL to connect to proxy'; +$lang['proxy____except'] = 'Regular expression to match URLs for which the proxy should be skipped for.'; /* Safemode Hack */ $lang['safemodehack'] = 'Enable safemode hack'; diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php index 316b4d1c546d38791946848e286aa5caed93cf8e..edba652620f406dbde5d3eb6eb7d665197f32034 100644 --- a/lib/plugins/config/settings/config.metadata.php +++ b/lib/plugins/config/settings/config.metadata.php @@ -197,6 +197,7 @@ $meta['proxy____port'] = array('numericopt'); $meta['proxy____user'] = array('string'); $meta['proxy____pass'] = array('password','_code' => 'base64'); $meta['proxy____ssl'] = array('onoff'); +$meta['proxy____except'] = array('string'); $meta['safemodehack'] = array('onoff'); $meta['ftp____host'] = array('string','_pattern' => '#^(|[a-z0-9\-\.+]+)$#i'); $meta['ftp____port'] = array('numericopt');