"max-blob-size" config var to limit generated HTML size

Sometimes it is not feasible to generate the HTML pretty-print for large
files, especially if a source-filter is involved or binary data is to be
displayed. The "max-blob-size" config var allows to disable HTML output
for blobs bigger than X KBytes. Plain downloads are not affected.

Signed-off-by: Georg Lukas <georg@op-co.de>
This commit is contained in:
Georg Lukas 2009-11-28 03:44:33 +01:00
parent 545b5a5dca
commit ef07ccc72d
4 changed files with 14 additions and 0 deletions

3
cgit.c
View File

@ -165,6 +165,8 @@ void config_cb(const char *name, const char *value)
ctx.cfg.max_msg_len = atoi(value); ctx.cfg.max_msg_len = atoi(value);
else if (!strcmp(name, "max-repodesc-length")) else if (!strcmp(name, "max-repodesc-length"))
ctx.cfg.max_repodesc_len = atoi(value); ctx.cfg.max_repodesc_len = atoi(value);
else if (!strcmp(name, "max-blob-size"))
ctx.cfg.max_blob_size = atoi(value);
else if (!strcmp(name, "max-repo-count")) else if (!strcmp(name, "max-repo-count"))
ctx.cfg.max_repo_count = atoi(value); ctx.cfg.max_repo_count = atoi(value);
else if (!strcmp(name, "max-commit-count")) else if (!strcmp(name, "max-commit-count"))
@ -270,6 +272,7 @@ static void prepare_context(struct cgit_context *ctx)
ctx->cfg.max_lock_attempts = 5; ctx->cfg.max_lock_attempts = 5;
ctx->cfg.max_msg_len = 80; ctx->cfg.max_msg_len = 80;
ctx->cfg.max_repodesc_len = 80; ctx->cfg.max_repodesc_len = 80;
ctx->cfg.max_blob_size = 0;
ctx->cfg.max_stats = 0; ctx->cfg.max_stats = 0;
ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s";
ctx->cfg.renamelimit = -1; ctx->cfg.renamelimit = -1;

1
cgit.h
View File

@ -185,6 +185,7 @@ struct cgit_config {
int max_lock_attempts; int max_lock_attempts;
int max_msg_len; int max_msg_len;
int max_repodesc_len; int max_repodesc_len;
int max_blob_size;
int max_stats; int max_stats;
int nocache; int nocache;
int noplainemail; int noplainemail;

View File

@ -177,6 +177,10 @@ max-repodesc-length::
Specifies the maximum number of repo description characters to display Specifies the maximum number of repo description characters to display
on the repository index page. Default value: "80". on the repository index page. Default value: "80".
max-blob-size::
Specifies the maximum size of a blob to display HTML for in KBytes.
Default value: "0" (limit disabled).
max-stats:: max-stats::
Set the default maximum statistics period. Valid values are "week", Set the default maximum statistics period. Valid values are "week",
"month", "quarter" and "year". If unspecified, statistics are "month", "quarter" and "year". If unspecified, statistics are

View File

@ -107,6 +107,12 @@ static void print_object(const unsigned char *sha1, char *path, const char *base
curr_rev, path); curr_rev, path);
htmlf(")<br/>blob: %s\n", sha1_to_hex(sha1)); htmlf(")<br/>blob: %s\n", sha1_to_hex(sha1));
if (ctx.cfg.max_blob_size && size / 1024 > ctx.cfg.max_blob_size) {
htmlf("<div class='error'>blob size (%dKB) exceeds display size limit (%dKB).</div>",
size / 1024, ctx.cfg.max_blob_size);
return;
}
if (buffer_is_binary(buf, size)) if (buffer_is_binary(buf, size))
print_binary_buffer(buf, size); print_binary_buffer(buf, size);
else else