all repos — cgit @ 4837fddc35bbd8d6f66a40486f75cdee3197172d

a hyperfast web frontend for git written in c

Merge branch 'dm/disable-clone'
Lars Hjemli hjemli@gmail.com
Sat, 14 May 2011 20:00:33 +0200
commit

4837fddc35bbd8d6f66a40486f75cdee3197172d

parent

568d8d3fd3f5a3b4207887215c8adcbac2bb9552

5 files changed, 40 insertions(+), 23 deletions(-)

jump to
M cgit.ccgit.c

@@ -147,6 +147,8 @@ else if (!strcmp(name, "enable-filter-overrides"))

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-commit-graph"))

@@ -312,6 +314,7 @@ ctx->cfg.css = "/cgit.css";

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;

@@ -439,7 +442,7 @@ if (get_sha1(ctx->qry.head, sha1)) {

tmp = xstrdup(ctx->qry.head); ctx->qry.head = ctx->repo->defbranch; ctx->page.status = 404; - ctx->page.statusmsg = "not found"; + ctx->page.statusmsg = "Not found"; cgit_print_http_headers(ctx); cgit_print_docstart(ctx); cgit_print_pageheader(ctx);

@@ -458,11 +461,18 @@

cmd = cgit_get_cmd(ctx); if (!cmd) { ctx->page.title = "cgit error"; + ctx->page.status = 404; + ctx->page.statusmsg = "Not found"; cgit_print_http_headers(ctx); cgit_print_docstart(ctx); cgit_print_pageheader(ctx); cgit_print_error("Invalid request"); cgit_print_docend(); + return; + } + + if (!ctx->cfg.enable_http_clone && cmd->is_clone) { + html_status(404, "Not found", 0); return; }
M cgit.hcgit.h

@@ -191,6 +191,7 @@ int cache_static_ttl;

int embedded; int enable_filter_overrides; int enable_gitweb_owner; + int enable_http_clone; int enable_index_links; int enable_commit_graph; int enable_log_filecount;
M cgitrc.5.txtcgitrc.5.txt

@@ -105,6 +105,11 @@ If set to "1" and scan-path is enabled, we first check each repository

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",
M cmd.ccmd.c

@@ -130,31 +130,31 @@ {

cgit_print_tree(ctx->qry.sha1, ctx->qry.path); } -#define def_cmd(name, want_repo, want_layout, want_vpath) \ - {#name, name##_fn, want_repo, want_layout, want_vpath} +#define def_cmd(name, want_repo, want_layout, want_vpath, is_clone) \ + {#name, name##_fn, want_repo, want_layout, want_vpath, is_clone} struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx) { static struct cgit_cmd cmds[] = { - def_cmd(HEAD, 1, 0, 0), - def_cmd(atom, 1, 0, 0), - def_cmd(about, 0, 1, 0), - def_cmd(blob, 1, 0, 0), - def_cmd(commit, 1, 1, 1), - def_cmd(diff, 1, 1, 1), - def_cmd(info, 1, 0, 0), - def_cmd(log, 1, 1, 1), - def_cmd(ls_cache, 0, 0, 0), - def_cmd(objects, 1, 0, 0), - def_cmd(patch, 1, 0, 1), - def_cmd(plain, 1, 0, 0), - def_cmd(refs, 1, 1, 0), - def_cmd(repolist, 0, 0, 0), - def_cmd(snapshot, 1, 0, 0), - def_cmd(stats, 1, 1, 1), - def_cmd(summary, 1, 1, 0), - def_cmd(tag, 1, 1, 0), - def_cmd(tree, 1, 1, 1), + def_cmd(HEAD, 1, 0, 0, 1), + def_cmd(atom, 1, 0, 0, 0), + def_cmd(about, 0, 1, 0, 0), + def_cmd(blob, 1, 0, 0, 0), + def_cmd(commit, 1, 1, 1, 0), + def_cmd(diff, 1, 1, 1, 0), + def_cmd(info, 1, 0, 0, 1), + def_cmd(log, 1, 1, 1, 0), + def_cmd(ls_cache, 0, 0, 0, 0), + def_cmd(objects, 1, 0, 0, 1), + def_cmd(patch, 1, 0, 1, 0), + def_cmd(plain, 1, 0, 0, 0), + def_cmd(refs, 1, 1, 0, 0), + def_cmd(repolist, 0, 0, 0, 0), + def_cmd(snapshot, 1, 0, 0, 0), + def_cmd(stats, 1, 1, 1, 0), + def_cmd(summary, 1, 1, 0, 0), + def_cmd(tag, 1, 1, 0, 0), + def_cmd(tree, 1, 1, 1, 0), }; int i;
M cmd.hcmd.h

@@ -8,7 +8,8 @@ const char *name;

cgit_cmd_fn fn; unsigned int want_repo:1, want_layout:1, - want_vpath:1; + want_vpath:1, + is_clone:1; }; extern struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx);