diff --git a/scripts/ssh/ssh-exec.php b/scripts/ssh/ssh-exec.php --- a/scripts/ssh/ssh-exec.php +++ b/scripts/ssh/ssh-exec.php @@ -19,6 +19,7 @@ EOSYNOPSIS ); +$args->parseStandardArguments(); $args->parse( array( array( diff --git a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php --- a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php +++ b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php @@ -126,6 +126,14 @@ 'When constructing clone URIs to show to users, Diffusion by '. 'default will not display a port assuming the default for your '. 'VCS. Explicitly declare when running on a non-standard port.')), + $this->newOption('diffusion.ssh-host', 'string', null) + ->setSummary(pht('Host for SSH connections to repositories.')) + ->setDescription( + pht( + 'If you accept Phabricator SSH traffic on a different host '. + 'from web traffic (for example, if you use different SSH and '. + 'web load balancers), you can set the SSH hostname here. This '. + 'is an advanced option.')), ); } diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php --- a/src/applications/repository/storage/PhabricatorRepository.php +++ b/src/applications/repository/storage/PhabricatorRepository.php @@ -1006,6 +1006,11 @@ $uri->setUser($ssh_user); } + $ssh_host = PhabricatorEnv::getEnvConfig('diffusion.ssh-host'); + if (strlen($ssh_host)) { + $uri->setDomain($ssh_host); + } + $uri->setPort(PhabricatorEnv::getEnvConfig('diffusion.ssh-port')); return $uri;