Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869#!/usr/bin/env php<?php
// This is a wrapper script for Git, Mercurial, and Subversion. It primarily// serves to inject "-o StrictHostKeyChecking=no" into the SSH arguments.
$root = dirname(dirname(dirname(__FILE__)));require_once $root.'/scripts/__init_script__.php';
// Contrary to the documentation, Git may pass a "-p" flag. If it does, respect// it and move it before the "--" argument.$args = new PhutilArgumentParser($argv);$args->parsePartial( array( array( 'name' => 'port', 'short' => 'p', 'param' => pht('port'), 'help' => pht('Port number to connect to.'), ), ));$unconsumed_argv = $args->getUnconsumedArgumentVector();
$pattern = array();$arguments = array();
$pattern[] = 'ssh';
$pattern[] = '-o';$pattern[] = 'StrictHostKeyChecking=no';
// This prevents "known host" failures, and covers for issues where HOME is set// to something unusual.$pattern[] = '-o';$pattern[] = 'UserKnownHostsFile=/dev/null';
$credential_phid = getenv('PHABRICATOR_CREDENTIAL');if ($credential_phid) { $viewer = PhabricatorUser::getOmnipotentUser(); $key = PassphraseSSHKey::loadFromPHID($credential_phid, $viewer);
$pattern[] = '-l %P'; $arguments[] = $key->getUsernameEnvelope(); $pattern[] = '-i %P'; $arguments[] = $key->getKeyfileEnvelope();}
$port = $args->getArg('port');if ($port) { $pattern[] = '-p %d'; $arguments[] = $port;}
$pattern[] = '--';
$passthru_args = $unconsumed_argv;foreach ($passthru_args as $passthru_arg) { $pattern[] = '%s'; $arguments[] = $passthru_arg;}
$pattern = implode(' ', $pattern);array_unshift($arguments, $pattern);
$err = newv('PhutilExecPassthru', $arguments) ->execute();
exit($err);