From 51156c13f9d5c7aeff82c188809c5255d16825ce Mon Sep 17 00:00:00 2001 From: Hannes Giesenow Date: Mon, 11 Apr 2016 17:30:36 +0200 Subject: [PATCH] Issue #289 Support for ssh proxy --- Mage/Config.php | 9 +++++++++ Mage/Console.php | 2 +- Mage/Task/AbstractTask.php | 1 + Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php | 1 + Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php | 1 + 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Mage/Config.php b/Mage/Config.php index 3f70f6c..e70ce0b 100644 --- a/Mage/Config.php +++ b/Mage/Config.php @@ -388,6 +388,15 @@ class Config return $this->deployment('identity-file') ? ('-i ' . $this->deployment('identity-file') . ' ') : ''; } + /** + * Get additional ssh proxy + * + * @return string + */ + public function getSshProxy() + { + return $this->deployment('ssh-proxy') ? $this->deployment('ssh-proxy') : ''; + } /** * Get the ConnectTimeout option * diff --git a/Mage/Console.php b/Mage/Console.php index daccf00..a259bb1 100644 --- a/Mage/Console.php +++ b/Mage/Console.php @@ -208,7 +208,7 @@ class Console $return = 1; $log = array(); - exec(escapeshellcmd($command . ' 2>&1'), $log, $return); + exec($command . ' 2>&1', $log, $return); $log = implode(PHP_EOL, $log); if (!$return) { diff --git a/Mage/Task/AbstractTask.php b/Mage/Task/AbstractTask.php index ec1d4e0..c60a461 100644 --- a/Mage/Task/AbstractTask.php +++ b/Mage/Task/AbstractTask.php @@ -198,6 +198,7 @@ abstract class AbstractTask $localCommand = 'ssh ' . $this->getConfig()->getHostIdentityFileOption() . $needs_tty . ' -p ' . $this->getConfig()->getHostPort() . ' ' . '-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ' + . ($this->getConfig()->getSshProxy() ? sprintf('-o ProxyCommand="ssh -W %%h:%%p %s" ', $this->getConfig()->getSshProxy()) : '') . $this->getConfig()->getConnectTimeoutOption() . ($this->getConfig()->deployment('user') != '' ? $this->getConfig()->deployment('user') . '@' : '') . $this->getConfig()->getHostName(); diff --git a/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php b/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php index 16804b0..e0732d5 100644 --- a/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php +++ b/Mage/Task/BuiltIn/Deployment/Strategy/RsyncTask.php @@ -97,6 +97,7 @@ class RsyncTask extends BaseStrategyTaskAbstract implements IsReleaseAware $command = 'rsync -avz ' . $strategyFlags . ' ' . '--rsh="ssh ' . $this->getConfig()->getHostIdentityFileOption() . '-p' . $this->getConfig()->getHostPort() . '" ' + . ($this->getConfig()->getSshProxy() ? sprintf('-e \'ssh -A %s ssh\' ', $this->getConfig()->getSshProxy()) : '') . $this->excludes($excludes) . ' ' . $this->excludesListFile($excludesListFilePath) . ' ' . $this->getConfig()->deployment('from') . ' ' diff --git a/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php b/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php index 1f741a2..f842ada 100644 --- a/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php +++ b/Mage/Task/BuiltIn/Deployment/Strategy/TarGzTask.php @@ -96,6 +96,7 @@ class TarGzTask extends BaseStrategyTaskAbstract implements IsReleaseAware $command = 'scp ' . $strategyFlags . ' ' . $this->getConfig()->getHostIdentityFileOption() . $this->getConfig()->getConnectTimeoutOption() . '-P ' . $this->getConfig()->getHostPort() . " -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no " + . ($this->getConfig()->getSshProxy() ? sprintf('-o ProxyCommand="ssh -W %%h:%%p %s" ', $this->getConfig()->getSshProxy()) : '') . ' ' . $localTarGz . '.tar.gz ' . $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ':' . $deployToDirectory;