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>
This commit is contained in:
Dan McGee 2011-01-12 12:06:07 -06:00 committed by Lars Hjemli
parent 35d33014fb
commit 42231328d3
3 changed files with 14 additions and 0 deletions

8
cgit.c
View File

@ -139,6 +139,8 @@ void config_cb(const char *name, const char *value)
ctx.cfg.enable_filter_overrides = atoi(value); ctx.cfg.enable_filter_overrides = atoi(value);
else if (!strcmp(name, "enable-gitweb-owner")) else if (!strcmp(name, "enable-gitweb-owner"))
ctx.cfg.enable_gitweb_owner = atoi(value); 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")) else if (!strcmp(name, "enable-index-links"))
ctx.cfg.enable_index_links = atoi(value); ctx.cfg.enable_index_links = atoi(value);
else if (!strcmp(name, "enable-log-filecount")) 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.logo = "/cgit.png";
ctx->cfg.local_time = 0; ctx->cfg.local_time = 0;
ctx->cfg.enable_gitweb_owner = 1; ctx->cfg.enable_gitweb_owner = 1;
ctx->cfg.enable_http_clone = 1;
ctx->cfg.enable_tree_linenumbers = 1; ctx->cfg.enable_tree_linenumbers = 1;
ctx->cfg.max_repo_count = 50; ctx->cfg.max_repo_count = 50;
ctx->cfg.max_commit_count = 50; ctx->cfg.max_commit_count = 50;
@ -453,6 +456,11 @@ static void process_request(void *cbdata)
return; 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" /* 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. * in-project path limit to be made available at ctx->qry.vpath.
* Otherwise, no path limit is in effect (ctx->qry.vpath = NULL). * Otherwise, no path limit is in effect (ctx->qry.vpath = NULL).

1
cgit.h
View File

@ -187,6 +187,7 @@ struct cgit_config {
int embedded; int embedded;
int enable_filter_overrides; int enable_filter_overrides;
int enable_gitweb_owner; int enable_gitweb_owner;
int enable_http_clone;
int enable_index_links; int enable_index_links;
int enable_log_filecount; int enable_log_filecount;
int enable_log_linecount; int enable_log_linecount;

View File

@ -100,6 +100,11 @@ enable-gitweb-owner::
for the git config value "gitweb.owner" to determine the owner. for the git config value "gitweb.owner" to determine the owner.
Default value: "1". See also: scan-path. 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:: enable-index-links::
Flag which, when set to "1", will make cgit generate extra links for Flag which, when set to "1", will make cgit generate extra links for
each repo in the repository index (specifically, to the "summary", each repo in the repository index (specifically, to the "summary",