]> granicus.if.org Git - cgit/commitdiff
Allow disabling of HTTP clone URLs
authorDan McGee <dpmcgee@gmail.com>
Wed, 12 Jan 2011 18:06:07 +0000 (12:06 -0600)
committerLars Hjemli <hjemli@gmail.com>
Sat, 19 Feb 2011 14:00:18 +0000 (15:00 +0100)
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>
cgit.c
cgit.h
cgitrc.5.txt

diff --git a/cgit.c b/cgit.c
index 412fbf0c32c4c0d2be3b0973ae5b5804c85059d6..65fad7a2ff1532663f44e325d20af1cf52dc9cdb 100644 (file)
--- a/cgit.c
+++ b/cgit.c
@@ -139,6 +139,8 @@ void config_cb(const char *name, const char *value)
                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 @@ static void prepare_context(struct cgit_context *ctx)
        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 @@ static void process_request(void *cbdata)
                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).
diff --git a/cgit.h b/cgit.h
index f5f68ac74c76d33110354645aeba464827dec736..c119712c0a9f4e5fc9b336208fc2f01c575ec5ad 100644 (file)
--- a/cgit.h
+++ b/cgit.h
@@ -187,6 +187,7 @@ struct cgit_config {
        int embedded;
        int enable_filter_overrides;
        int enable_gitweb_owner;
+       int enable_http_clone;
        int enable_index_links;
        int enable_log_filecount;
        int enable_log_linecount;
index 8e51ca5766945c68c23b1f988062b865cf46397a..b8c69b893ec5c1b5255274dd69ff1d972878f43f 100644 (file)
@@ -100,6 +100,11 @@ enable-gitweb-owner::
        for the git config value "gitweb.owner" to determine the owner.
        Default value: "1". See also: scan-path.
 
+enable-http-clone::
+       If set to "1", cgit will act as an dumb HTTP endpoint for git clones.
+       If you use an alternate way of serving git repositories, you may wish
+       to disable this. Default value: "1".
+
 enable-index-links::
        Flag which, when set to "1", will make cgit generate extra links for
        each repo in the repository index (specifically, to the "summary",