Merge branch 'dm/disable-clone'

Tá an tiomantas seo le fáil i:
Lars Hjemli 2011-05-14 20:00:33 +02:00
tuismitheoir 568d8d3fd3 aae067197f
tiomantas 4837fddc35
D'athraigh 5 comhad le 40 breiseanna agus 23 scriosta

12
cgit.c
Féach ar an gComhad

@ -147,6 +147,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-commit-graph"))
@ -312,6 +314,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;
@ -439,7 +442,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
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,6 +461,8 @@ static void process_request(void *cbdata)
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);
@ -466,6 +471,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).

1
cgit.h
Féach ar an gComhad

@ -191,6 +191,7 @@ struct cgit_config {
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;

Féach ar an gComhad

@ -105,6 +105,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",

42
cmd.c
Féach ar an gComhad

@ -130,31 +130,31 @@ static void tree_fn(struct cgit_context *ctx)
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;

3
cmd.h
Féach ar an gComhad

@ -8,7 +8,8 @@ struct cgit_cmd {
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);