{"thread":{"id":"20436","subject":"[PATCH 1/3] gitweb: support to globally disable a snapshot format","startedAt":"2009-08-06T14:25:39Z","lastAt":"2009-08-06T14:25:39Z","messageCount":1,"participants":["Mark A Rada"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"119778","messageId":"3A789521-06A0-4762-8E13-FFCF737D041D@uwaterloo.ca","threadId":"20436","inReplyTo":null,"subject":"[PATCH 1/3] gitweb: support to globally disable a snapshot format","fromName":"Mark A Rada","fromEmail":"marada@uwaterloo.ca","sentAt":"2009-08-06T14:25:39Z","receivedAt":"2009-08-06T14:25:39Z","isPatch":true,"sender":{"key":"marada@uwaterloo.ca","avatar":"https://avatars.githubusercontent.com/u/38430?v=4"},"body":"Allow Gitweb administrators to set a 'disabled' key in the\n%known_snapshot_formats hash to disable a specific snapshot format.\n\nAll formats are enabled by default to maintain backwards compatibility.\n\nSigned-off-by: Mark Rada <marada@uwaterloo.ca>\n---\n  gitweb/gitweb.perl |    8 ++++++--\n  1 files changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl\nindex 37120a3..a0cdf31 100755\n--- a/gitweb/gitweb.perl\n+++ b/gitweb/gitweb.perl\n@@ -160,7 +160,8 @@ our %known_snapshot_formats = (\n  \t# \t'suffix' => filename suffix,\n  \t# \t'format' => --format for git-archive,\n  \t# \t'compressor' => [compressor command and arguments]\n-\t# \t                (array reference, optional)}\n+\t# \t                (array reference, optional)\n+\t# \t'disabled' => boolean (optional)}\n  \t#\n  \t'tgz' => {\n  \t\t'display' => 'tar.gz',\n@@ -494,7 +495,8 @@ sub filter_snapshot_fmts {\n  \t\texists $known_snapshot_format_aliases{$_} ?\n  \t\t       $known_snapshot_format_aliases{$_} : $_} @fmts;\n  \t@fmts = grep {\n-\t\texists $known_snapshot_formats{$_} } @fmts;\n+\t\texists $known_snapshot_formats{$_} &&\n+\t\t!$known_snapshot_formats{$_}{'disabled'}} @fmts;\n  }\n\n  our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || \"++GITWEB_CONFIG++\";\n@@ -5166,6 +5168,8 @@ sub git_snapshot {\n  \t\tdie_error(400, \"Unknown snapshot format\");\n  \t} elsif (!grep($_ eq $format, @snapshot_fmts)) {\n  \t\tdie_error(403, \"Unsupported snapshot format\");\n+\t} elsif ($known_snapshot_formats{$format}{'disabled'}) {\n+\t\tdie_error(403, \"Snapshot format not allowed\");\n  \t}\n\n  \tif (!defined $hash) {\n-- \n1.6.4\n"}]}