"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:
		
							
								
								
									
										3
									
								
								cgit.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								cgit.c
									
									
									
									
									
								
							@@ -165,6 +165,8 @@ void config_cb(const char *name, const char *value)
 | 
			
		||||
		ctx.cfg.max_msg_len = atoi(value);
 | 
			
		||||
	else if (!strcmp(name, "max-repodesc-length"))
 | 
			
		||||
		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"))
 | 
			
		||||
		ctx.cfg.max_repo_count = atoi(value);
 | 
			
		||||
	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_msg_len = 80;
 | 
			
		||||
	ctx->cfg.max_repodesc_len = 80;
 | 
			
		||||
	ctx->cfg.max_blob_size = 0;
 | 
			
		||||
	ctx->cfg.max_stats = 0;
 | 
			
		||||
	ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s";
 | 
			
		||||
	ctx->cfg.renamelimit = -1;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								cgit.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								cgit.h
									
									
									
									
									
								
							@@ -185,6 +185,7 @@ struct cgit_config {
 | 
			
		||||
	int max_lock_attempts;
 | 
			
		||||
	int max_msg_len;
 | 
			
		||||
	int max_repodesc_len;
 | 
			
		||||
	int max_blob_size;
 | 
			
		||||
	int max_stats;
 | 
			
		||||
	int nocache;
 | 
			
		||||
	int noplainemail;
 | 
			
		||||
 
 | 
			
		||||
@@ -177,6 +177,10 @@ max-repodesc-length::
 | 
			
		||||
	Specifies the maximum number of repo description characters to display
 | 
			
		||||
	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::
 | 
			
		||||
	Set the default maximum statistics period. Valid values are "week",
 | 
			
		||||
	"month", "quarter" and "year". If unspecified, statistics are
 | 
			
		||||
 
 | 
			
		||||
@@ -107,6 +107,12 @@ static void print_object(const unsigned char *sha1, char *path, const char *base
 | 
			
		||||
		        curr_rev, path);
 | 
			
		||||
	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))
 | 
			
		||||
		print_binary_buffer(buf, size);
 | 
			
		||||
	else
 | 
			
		||||
 
 | 
			
		||||
		Referens i nytt ärende
	
	Block a user