Allow disabling of HTTP clone URLs

If advertising other URLs to your users, you may not want to make this
available through cgit (e.g. if you have the smart HTTP transport set up
elsewhere). Allow disabling the three magic commands that simulate the
git server, but default it to enabled.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
diff --git a/cgit.c b/cgit.c
index 412fbf0..65fad7a 100644
--- a/cgit.c
+++ b/cgit.c
@@ -139,6 +139,8 @@
 		ctx.cfg.enable_filter_overrides = atoi(value);
 	else if (!strcmp(name, "enable-gitweb-owner"))
 		ctx.cfg.enable_gitweb_owner = atoi(value);
+	else if (!strcmp(name, "enable-http-clone"))
+		ctx.cfg.enable_http_clone = atoi(value);
 	else if (!strcmp(name, "enable-index-links"))
 		ctx.cfg.enable_index_links = atoi(value);
 	else if (!strcmp(name, "enable-log-filecount"))
@@ -300,6 +302,7 @@
 	ctx->cfg.logo = "/cgit.png";
 	ctx->cfg.local_time = 0;
 	ctx->cfg.enable_gitweb_owner = 1;
+	ctx->cfg.enable_http_clone = 1;
 	ctx->cfg.enable_tree_linenumbers = 1;
 	ctx->cfg.max_repo_count = 50;
 	ctx->cfg.max_commit_count = 50;
@@ -453,6 +456,11 @@
 		return;
 	}
 
+	if (!ctx->cfg.enable_http_clone && cmd->is_clone) {
+		html_status(404, "Not found", 0);
+		return;
+	}
+
 	/* If cmd->want_vpath is set, assume ctx->qry.path contains a "virtual"
 	 * in-project path limit to be made available at ctx->qry.vpath.
 	 * Otherwise, no path limit is in effect (ctx->qry.vpath = NULL).