diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2016-04-13 00:54:57 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2016-04-13 00:54:57 +0200 |
commit | 4bd1de9fddf7b02e76184e8af3fe808037040285 (patch) | |
tree | 03f88a2991e506668a9fee189a94b6abd0d2ac41 | |
parent | 437d7e21a69a2a377f664d88e932a6f3d59270a3 (diff) | |
download | bugzilla-4bd1de9fddf7b02e76184e8af3fe808037040285.tar.gz bugzilla-4bd1de9fddf7b02e76184e8af3fe808037040285.tar.xz |
Bug 398546 - config.cgi using the RDF format can generate a pretty large file
r=dkl
-rw-r--r-- | .htaccess | 6 | ||||
-rwxr-xr-x | config.cgi | 3 | ||||
-rw-r--r-- | template/en/default/config.rdf.tmpl | 45 | ||||
-rw-r--r-- | template/en/default/filterexceptions.pl | 2 |
4 files changed, 35 insertions, 21 deletions
@@ -42,3 +42,9 @@ Options -Indexes RewriteOptions inherit RewriteRule ^rest/(.*)$ rest.cgi/$1 [NE] </IfModule> + +# config.cgi using the RDF format can generate a pretty large file (several MB). +# The XML format of bug reports can be quite large too. +<IfModule mod_deflate.c> + AddOutputFilterByType DEFLATE text/xml application/rdf+xml +</IfModule> diff --git a/config.cgi b/config.cgi index 8e423ca00..3e3943989 100755 --- a/config.cgi +++ b/config.cgi @@ -139,6 +139,9 @@ sub display_data { $template->process($format->{'template'}, $vars, \$output) || ThrowTemplateError($template->error()); + # Remove leading whitespaces, to save some bandwidth. + $output =~ s/^\s+(?=<)//gm if $format->{'ctype'} =~ /rdf/; + # Wide characters cause md5_base64() to die. my $digest_data = $output; utf8::encode($digest_data) if utf8::is_utf8($digest_data); diff --git a/template/en/default/config.rdf.tmpl b/template/en/default/config.rdf.tmpl index c1b5b0575..814b5a1d9 100644 --- a/template/en/default/config.rdf.tmpl +++ b/template/en/default/config.rdf.tmpl @@ -130,10 +130,11 @@ <bz:products> <Seq> [% FOREACH product = products %] + [% uri_product_name = product.name FILTER uri %] <li> - <bz:product rdf:about="[% escaped_urlbase %]product.cgi?name=[% product.name FILTER uri %]"> + <bz:product rdf:about="[% escaped_urlbase %]product.cgi?name=[% uri_product_name %]"> <bz:name>[% product.name FILTER html %]</bz:name> - <bz:allows_unconfirmed>[% product.allows_unconfirmed FILTER html %]</bz:allows_unconfirmed> + <bz:allows_unconfirmed>[% product.allows_unconfirmed FILTER none %]</bz:allows_unconfirmed> [% IF Param('useclassification') %] <bz:classification>[% class_names.${product.classification_id}.name FILTER html %]</bz:classification> [% END %] @@ -141,7 +142,7 @@ <Seq> [% FOREACH comp = product.components %] <li resource="[% escaped_urlbase %]component.cgi?name=[% comp.name FILTER uri - %]&product=[% product.name FILTER uri %]"/> + %]&product=[% uri_product_name %]"/> [% END %] </Seq> </bz:components> @@ -150,7 +151,7 @@ <Seq> [% FOREACH version = product.versions %] <li resource="[% escaped_urlbase %]version.cgi?name=[% version.name FILTER uri - %]&product=[% product.name FILTER uri %]"/> + %]&product=[% uri_product_name %]"/> [% END %] </Seq> </bz:versions> @@ -160,12 +161,11 @@ <Seq> [% FOREACH milestone = product.milestones %] <li resource="[% escaped_urlbase %]milestone.cgi?name=[% milestone.name FILTER uri - %]&product=[% product.name FILTER uri %]"/> + %]&product=[% uri_product_name %]"/> [% END %] </Seq> </bz:target_milestones> [% END %] - </bz:product> </li> [% END %] @@ -176,12 +176,13 @@ <bz:components> <Seq> [% FOREACH product = products %] + [% uri_product_name = product.name FILTER uri %] [% FOREACH comp = product.components %] <li> <bz:component rdf:about="[% escaped_urlbase %]component.cgi?name=[% comp.name FILTER uri - %]&product=[% product.name FILTER uri %]"> + %]&product=[% uri_product_name %]"> <bz:name>[% comp.name FILTER html %]</bz:name> - <bz:is_active>[% comp.is_active FILTER html %]</bz:is_active> + <bz:is_active>[% comp.is_active FILTER none %]</bz:is_active> [% IF show_flags %] <bz:flag_types> <Seq> @@ -189,7 +190,7 @@ [% FOREACH flag_type = flag_types %] [% NEXT UNLESS flag_type.is_active %] [% all_visible_flag_types.${flag_type.id} = flag_type %] - <li resource="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id FILTER uri + <li resource="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id %]&name=[% flag_type.name FILTER uri %]" /> [% END %] </Seq> @@ -205,12 +206,13 @@ <bz:versions> <Seq> [% FOREACH product = products %] + [% uri_product_name = product.name FILTER uri %] [% FOREACH version = product.versions %] <li> <bz:version rdf:about="[% escaped_urlbase %]version.cgi?name=[% version.name FILTER uri - %]&product=[% product.name FILTER uri %]"> + %]&product=[% uri_product_name %]"> <bz:name>[% version.name FILTER html %]</bz:name> - <bz:is_active>[% version.is_active FILTER html %]</bz:is_active> + <bz:is_active>[% version.is_active FILTER none %]</bz:is_active> </bz:version> </li> [% END %] @@ -222,12 +224,13 @@ <bz:target_milestones> <Seq> [% FOREACH product = products %] + [% uri_product_name = product.name FILTER uri %] [% FOREACH milestone = product.milestones %] <li> <bz:target_milestone rdf:about="[% escaped_urlbase %]milestone.cgi?name=[% milestone.name FILTER uri - %]&product=[% product.name FILTER uri %]"> + %]&product=[% uri_product_name %]"> <bz:name>[% milestone.name FILTER html %]</bz:name> - <bz:is_active>[% milestone.is_active FILTER html %]</bz:is_active> + <bz:is_active>[% milestone.is_active FILTER none %]</bz:is_active> </bz:target_milestone> </li> [% END %] @@ -241,15 +244,15 @@ <Seq> [% FOREACH flag_type = all_visible_flag_types.values.sort('name') %] <li> - <bz:flag_type rdf:about="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id FILTER uri + <bz:flag_type rdf:about="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id %]&name=[% flag_type.name FILTER uri %]"> - <bz:id>[% flag_type.id FILTER html %]</bz:id> + <bz:id>[% flag_type.id %]</bz:id> <bz:name>[% flag_type.name FILTER html %]</bz:name> <bz:description>[% flag_type.description FILTER html %]</bz:description> <bz:type>[% flag_type.target_type FILTER html %]</bz:type> - <bz:requestable>[% flag_type.is_requestable FILTER html %]</bz:requestable> - <bz:specifically_requestable>[% flag_type.is_requesteeble FILTER html %]</bz:specifically_requestable> - <bz:multiplicable>[% flag_type.is_multiplicable FILTER html %]</bz:multiplicable> + <bz:requestable>[% flag_type.is_requestable FILTER none %]</bz:requestable> + <bz:specifically_requestable>[% flag_type.is_requesteeble FILTER none %]</bz:specifically_requestable> + <bz:multiplicable>[% flag_type.is_multiplicable FILTER none %]</bz:multiplicable> [% IF user.in_group("editcomponents") %] <bz:grant_group>[% flag_type.grant_group.name FILTER html %]</bz:grant_group> <bz:request_group>[% flag_type.request_group.name FILTER html %]</bz:request_group> @@ -271,12 +274,12 @@ <bz:description>[% (field_descs.${item.name} OR item.description) FILTER html %]</bz:description> [%-# These values are meaningful for custom fields only. %] [% IF item.custom %] - <bz:type>[% item.type FILTER html %]</bz:type> + <bz:type>[% item.type FILTER none %]</bz:type> <bz:type_desc>[% field_types.${item.type} FILTER html %]</bz:type_desc> - <bz:enter_bug>[% item.enter_bug FILTER html %]</bz:enter_bug> + <bz:enter_bug>[% item.enter_bug FILTER none %]</bz:enter_bug> [% END %] [% IF item.is_active.defined %] - <bz:is_active>[% item.is_active FILTER html %]</bz:is_active> + <bz:is_active>[% item.is_active FILTER none %]</bz:is_active> [% END %] </bz:field> </li> diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl index f83efaa88..69978a722 100644 --- a/template/en/default/filterexceptions.pl +++ b/template/en/default/filterexceptions.pl @@ -448,6 +448,8 @@ 'config.rdf.tmpl' => [ 'escaped_urlbase', + 'uri_product_name', + 'flag_type.id' ], ); |