diff --git a/config.ts b/config.ts index 942d87e..6c545d9 100644 --- a/config.ts +++ b/config.ts @@ -10,6 +10,10 @@ interface Config { MAX_FILE_SIZE: number; MAX_REPO_SIZE: number; AUTH_CALLBACK: string; + /** + * Allow to download repository and files + */ + ENABLE_DOWNLOAD: boolean; ANONYMIZATION_MASK: string; PORT: number; HOSTNAME: string; @@ -32,6 +36,7 @@ const config: Config = { DEFAULT_QUOTA: 2 * 1024 * 1024 * 1024 * 8, MAX_FILE_SIZE: 10 * 1024 * 1024, // in b MAX_REPO_SIZE: 8 * 1024, // in kb + ENABLE_DOWNLOAD: false, AUTH_CALLBACK: "http://localhost:5000/github/auth", ANONYMIZATION_MASK: "XXXX", PORT: 5000, diff --git a/src/routes/repository-public.ts b/src/routes/repository-public.ts index adba5c5..1384a44 100644 --- a/src/routes/repository-public.ts +++ b/src/routes/repository-public.ts @@ -1,4 +1,5 @@ import * as express from "express"; +import config from "../../config"; import * as db from "../database/database"; import { getRepo, getUser, handleError } from "./route-utils"; @@ -19,6 +20,8 @@ router.get("/:repoId/", async (req: express.Request, res: express.Response) => { router.get( "/:repoId/zip", async (req: express.Request, res: express.Response) => { + if (!config.ENABLE_DOWNLOAD) + return res.status(403).send({ error: "download_not_enabled" }); const repo = await getRepo(req, res); if (!repo) return;