X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=public%2Fmirror.php;h=753a11411b128660820f91a062a546649a62d829;hb=2dae538f996498a55b779e26a4c63b6e87bbe055;hp=4203c9e1a24674b5286cc5ce434b7f25a2c729dd;hpb=95639b48d4564ed35c5a20997d89e6852cf27cc9;p=m6w6%2Freplicator diff --git a/public/mirror.php b/public/mirror.php index 4203c9e..753a114 100644 --- a/public/mirror.php +++ b/public/mirror.php @@ -41,29 +41,28 @@ switch ($evt) { $response->setResponseStatus("PONG"); break; case "push": - if (($json = json_decode($request->getBody()))) { - if (in_array($json->repository->owner->name, $owners, true)) { - $repo = $json->repository->full_name; - $path = $mirror . "/" . $repo; - if (is_dir($path) && chdir($path)) { - passthru("git fetch -p 2>&1", $rv); - if ($rv == 0) { - $response->setResponseCode(200); - } - } elseif (mkdir($path, 0755, true) && chdir($path)) { - passthru("git clone --mirror " . escapeshellarg($repo) . " . 2>&1", $rv); - if ($rv == 0) { - $response->setResponseCode(200); - } - } - } else { - $response->setResponseCode(403); - $response->getBody()->append("Invalid owner"); - } - } else { + if (!($json = json_decode($request->getBody()))) { $response->setResponseCode(415); $response->setContentType($request->getHeader("Content-Type")); $response->getBody()->append($request->getBody()); + } elseif (!in_array($json->repository->owner->name, $owners, true)) { + $response->setResponseCode(403); + $response->getBody()->append("Invalid owner"); + } else { + $repo = $json->repository->full_name; + $path = $mirror . "/" . $repo; + if (is_dir($path) && chdir($path)) { + passthru("git fetch -vp 2>&1", $rv); + if ($rv == 0) { + $response->setResponseCode(200); + } + } elseif (mkdir($path, 0755, true) && chdir($path)) { + $source = escapeshellarg($json->repository->clone_url); + passthru("git clone --mirror $source . 2>&1", $rv); + if ($rv == 0) { + $response->setResponseCode(200); + } + } } break; }