diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index b3d9dfa700..8ab78c8790 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,10 @@ +2013-03-13 Kikuchi Koichiro + + * extensions/update_manager/lib/functions.ajax.php: Added proxy + and bsdtar support. + + Merged from: branch_4.0 + 2013-03-13 Kikuchi Koichiro * extensions/update_manager/lib/xmlrpc/xmlrpc.inc: Keep original diff --git a/pandora_console/extensions/update_manager/lib/functions.ajax.php b/pandora_console/extensions/update_manager/lib/functions.ajax.php index e902427a4d..a9fd1908d6 100644 --- a/pandora_console/extensions/update_manager/lib/functions.ajax.php +++ b/pandora_console/extensions/update_manager/lib/functions.ajax.php @@ -179,12 +179,23 @@ function update_pandora_download_package() { $package_url . " -O " . $dir . $package . " -o /tmp/" . $package . ".info.txt"; + if (!empty($settings->proxy)) { + $command .= ' -e http_proxy=' . $settings->proxy; + if (!empty($settings->proxy_port)) + $command .= ':' . $settings->proxy_port; + } + if (!empty($settings->proxy_user)) + $command .= ' --proxy_user="' . $settings->proxy_user . '"'; + if (!empty($settings->proxy_pass)) + $command .= ' --proxy_password="' . $settings->proxy_pass . '"'; + $return = array('correct' => 0); - exec($command); + exec($command, $output, $status); unlink('/tmp/' . $package . '.info.txt'); - $return['correct'] = 1; + if ($status == 0) + $return['correct'] = 1; } else { if (empty($package_url)) { @@ -208,6 +219,12 @@ function update_pandora_download_package() { curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); curl_setopt($c, CURLOPT_FILE, $file); + if (!empty($settings->proxy)) + curl_setopt($c, CURLOPT_PROXY, $settings->proxy); + if (!empty($settings->proxy_port)) + curl_setopt($c, CURLOPT_PROXYPORT, $settings->proxy_port); + if (!empty($settings->proxy_user) || !empty($settings->proxy_pass)) + curl_setopt($c, CURLOPT_PROXYUSERPWD, $settings->proxy_user . ':' . $settings->proxy_pass); curl_multi_add_handle($mch ,$c); $running = null; @@ -237,7 +254,8 @@ function update_pandora_download_package() { } while($running > 0); - $return = array('correct' => 1); + if (curl_errno($c) == 0) + $return = array('correct' => 1); } } @@ -355,6 +373,20 @@ function update_pandora_install_package() { unlink("/tmp/$package.info.txt"); + // check which tar is availble + exec('tar --version', $output, $status); + $tar_type = 'UNKNOWN'; + foreach ($output as $line) { + if (preg_match('/GNU/', $line)) { + $tar_type = 'GNU'; + break; + } else if (preg_match('/bsdtar/', $line)) { + $tar_type = 'BSD'; + break; + } + } + unset($output); + //Get total files //The grep command is because the fucking tar don't apply //strip-components in mode "t" @@ -368,6 +400,10 @@ function update_pandora_install_package() { ' --exclude="pandora_console/install.php" --exclude="pandora_console/include/config.php" ' . ' --strip-components=1 -C ' . $config['homedir'] . ' 1>/tmp/' . $package . '.files.info.txt'; + // bsdtar use stderr for verbose output + if ($tar_type === 'BSD') + $command .= ' 2>&1'; + print_debug_message_trace($command); //html_debug_print($command, true);