diff --git a/src/applications/diffusion/controller/DiffusionController.php b/src/applications/diffusion/controller/DiffusionController.php index 0d03487769..6e9ebb6293 100644 --- a/src/applications/diffusion/controller/DiffusionController.php +++ b/src/applications/diffusion/controller/DiffusionController.php @@ -8,6 +8,8 @@ abstract class DiffusionController extends PhabricatorController { $request = $this->getRequest(); $uri = $request->getRequestURI(); + $user_agent = idx($_SERVER, 'HTTP_USER_AGENT'); + // Check if this is a VCS request, e.g. from "git clone", "hg clone", or // "svn checkout". If it is, we jump off into repository serving code to // process the request. @@ -27,6 +29,8 @@ abstract class DiffusionController extends PhabricatorController { // // ...to get a human-readable error. $vcs = $request->getExists('__vcs__'); + } else if (strncmp($user_agent, "git/", 4) === 0) { + $vcs = PhabricatorRepositoryType::REPOSITORY_TYPE_GIT; } else if ($request->getExists('service')) { $service = $request->getStr('service'); // We get this initially for `info/refs`. @@ -541,6 +545,16 @@ abstract class DiffusionController extends PhabricatorController { return null; } + if (!strlen($username)) { + // No username. + return null; + } + + if (!strlen($password->openEnvelope())) { + // No password. + return null; + } + $user = id(new PhabricatorPeopleQuery()) ->setViewer(PhabricatorUser::getOmnipotentUser()) ->withUsernames(array($username))