From 42c6731c9f6cc6873b035aef20e76b8e2d0ba8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Mudr=C3=A1k?= Date: Fri, 30 Nov 2012 16:11:52 +0100 Subject: [PATCH] MDL-36950 Make mdeploy.php accept proxy related settings --- mdeploy.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/mdeploy.php b/mdeploy.php index fa53d04e9f8..8381a9099ec 100644 --- a/mdeploy.php +++ b/mdeploy.php @@ -171,6 +171,9 @@ class input_manager extends singleton_pattern { $supportedoptions = array( array('', 'passfile', input_manager::TYPE_FILE, 'File name of the passphrase file (HTTP access only)'), array('', 'password', input_manager::TYPE_RAW, 'Session passphrase (HTTP access only)'), + array('', 'proxy', input_manager::TYPE_RAW, 'HTTP proxy host and port (e.g. \'our.proxy.edu:8888\')'), + array('', 'proxytype', input_manager::TYPE_RAW, 'Proxy type (HTTP or SOCKS5)'), + array('', 'proxyuserpwd', input_manager::TYPE_RAW, 'Proxy username and password (e.g. \'username:password\')'), array('', 'returnurl', input_manager::TYPE_URL, 'Return URL (HTTP access only)'), array('d', 'dataroot', input_manager::TYPE_PATH, 'Full path to the dataroot (moodledata) directory'), array('h', 'help', input_manager::TYPE_FLAG, 'Prints usage information'), @@ -979,6 +982,27 @@ class worker extends singleton_pattern { curl_setopt($ch, CURLOPT_CAINFO, $cacertfile); } + $proxy = $this->input->get_option('proxy', false); + if (!empty($proxy)) { + curl_setopt($ch, CURLOPT_PROXY, $proxy); + + $proxytype = $this->input->get_option('proxytype', false); + if (strtoupper($proxytype) === 'SOCKS5') { + $this->log('Using SOCKS5 proxy'); + curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); + } else if (!empty($proxytype)) { + $this->log('Using HTTP proxy'); + curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); + curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false); + } + + $proxyuserpwd = $this->input->get_option('proxyuserpwd', false); + if (!empty($proxyuserpwd)) { + curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuserpwd); + curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC | CURLAUTH_NTLM); + } + } + $targetfile = fopen($target, 'w'); if (!$targetfile) {