From: Gerfried Fuchs Date: Wed, 6 Aug 2008 21:38:29 +0000 (-0300) Subject: Merge commit 'v2_1_1' into debian X-Git-Tag: debian/2.1.2-2~21^2~8 X-Git-Url: https://git.deb.at/w?p=pkg%2Fblosxom.git;a=commitdiff_plain;h=ab8f331c59c697bd897b0c1332d0dc91659ea833;hp=30d8b9daf331845428930ec621fee28976d85a40 Merge commit 'v2_1_1' into debian --- diff --git a/ChangeLog b/ChangeLog index 48be247..70ce5f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,36 @@ +v2.1.1 + * The "never trust a dot zero release" bugfix release for 2.1.0. + * Added CVS Id keyword to file header. + * Declaring $encode_xml_entities as a config option by moving it into + the config section -- no functionality change. + * Changing isPermalink back to "false" for the default RSS story + template because it won't be a working link in many situations. + This won't change the GUID, but don't let it be used as + anymore. That's what the tag is for anyway. Thanks to Lilo + von Hanffstengel for pointing this out. + * Rewrote the (at least with Apache 2.2's environment) no more working + manual base URL detection code. Made it simpler, easier to + understand and let it only apply, if the base URL was not set + manually. The concept since 2.0.2 was: Always ask for the whole URI + and then remove the PATH_INFO in some cases again. This caused some + havoc. New concept is: Strip PATH_INFO from base URL if CGI.pm + didn't manage to do it. In those rare cases where neither CGI.pm nor + Blosxom manages to correctly determine the base URL, you can easily + set $url in the config file to the correct value and no base URL + magic happens anymore (except the removing of a trailing slash if + present -- as before). Closes: #2032685 + * Added a lot of comments explaining the fixed problems and the + remaining seldom cases where manual configuration is necessary. + v2.1.0 * unescape url returned from CGI.pm to match PATH_INFO escaping * redo path_info handling with much stricter date tests * added support for multiple plugin directories using $plugin_path - * changed plugin loading to use @INC instead of hardcoded - $plugin_dir - * added support for external config file via BLOSXOM_CONFIG_DIR - and/or BLOSXOM_CONFIG_FILE environment variables - * added support for $plugin_list plugin config file + * changed plugin loading to use @INC instead of hardcoded + $plugin_dir + * added support for external config file via BLOSXOM_CONFIG_DIR + and/or BLOSXOM_CONFIG_FILE environment variables + * added support for $plugin_list plugin config file * fixed several RSS and XHTML escaping issues (Closes: #1717980) * made the default templates conforming to HTML 4.01 (Closes: #1609595) @@ -20,15 +44,15 @@ v2.1.0 * some code refactoring (including a .perltidyrc) v2.0.2 - * fixed path_info to have correct extension in static mode (bug - 1368882) - * fixed filtering bug in static mode (bug 1356997) - * changed DATA section template parsing to allow newlines for - greater readability, and to allow empty templates. - * work-around for bug in CGI::url() when using SSI + * fixed path_info to have correct extension in static mode (bug + 1368882) + * fixed filtering bug in static mode (bug 1356997) + * changed DATA section template parsing to allow newlines for + greater readability, and to allow empty templates. + * work-around for bug in CGI::url() when using SSI v2.0.1 - * Fixed XML escaping of RSS feeds - * Ignore editor backup files in the plugin directory - (i.e. "myplugin~") - * Set path_info variables correctly for all static pages. + * Fixed XML escaping of RSS feeds + * Ignore editor backup files in the plugin directory (i.e. + "myplugin~") + * Set path_info variables correctly for all static pages. diff --git a/blosxom.cgi b/blosxom.cgi index 6476df1..eae39bf 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -1,8 +1,8 @@ #!/usr/bin/perl # Blosxom -# Author: Rael Dornfest (2003), The Blosxom Development Team (2005-2008) -# Version: 2.1.0 +# Author: Rael Dornfest (2002-2003), The Blosxom Development Team (2005-2008) +# Version: 2.1.1 ($Id: blosxom.cgi,v 1.83 2008/07/30 22:27:02 xtaran Exp $) # Home/Docs/Licensing: http://blosxom.sourceforge.net/ # Development/Downloads: http://sourceforge.net/projects/blosxom @@ -76,6 +76,9 @@ $static_password = ""; # 0 = no, 1 = yes $static_entries = 0; +# Should I encode entities for xml content-types? (plugins can turn this off if they do it themselves) +$encode_xml_entities = 1; + # -------------------------------- use vars @@ -88,10 +91,7 @@ use File::stat; use Time::Local; use CGI qw/:standard :netscape/; -$version = "2.1.0"; - -# Should I encode entities for xml content-types? (plugins can turn this off if they do it themselves) -$encode_xml_entities = 1; +$version = "2.1.1"; # Load configuration from $ENV{BLOSXOM_CONFIG_DIR}/blosxom.conf, if it exists my $blosxom_config; @@ -142,20 +142,39 @@ my $fh = new FileHandle; ); @num2month = sort { $month2num{$a} <=> $month2num{$b} } keys %month2num; -# Use the stated preferred URL or figure it out automatically -$url ||= url( -path_info => 1 ); -# Unescape %XX hex codes (from URI::Escape::uri_unescape) -$url =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; -$url =~ s/^included:/http:/ if $ENV{SERVER_PROTOCOL} eq 'INCLUDED'; - -# NOTE: Since v3.12, it looks as if CGI.pm misbehaves for SSIs and -# always appends path_info to the url. To fix this, we always -# request an url with path_info, and always remove it from the end of the -# string. -my $pi_len = length $ENV{PATH_INFO}; -my $might_be_pi = substr( $url, -$pi_len ); -substr( $url, -length $ENV{PATH_INFO} ) = '' - if $might_be_pi eq $ENV{PATH_INFO}; +# Use the stated preferred URL or figure it out automatically. Set +# $url manually in the config section above if CGI.pm doesn't guess +# the base URL correctly, e.g. when called from a Server Side Includes +# document or so. +unless ($url) { + $url = url(); + + # Unescape %XX hex codes (from URI::Escape::uri_unescape) + $url =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; + + # Support being called from inside a SSI document + $url =~ s/^included:/http:/ if $ENV{SERVER_PROTOCOL} eq 'INCLUDED'; + + # Remove PATH_INFO if it is set but not removed by CGI.pm. This + # seems to happen when used with Apache's Alias directive or if + # called from inside a Server Side Include document. If that + # doesn't help either, set $url manually in the configuration. + $url =~ s/\Q$ENV{PATH_INFO}\E$// if defined $ENV{PATH_INFO}; + + # NOTE: + # + # There is one case where this code does more than necessary, too: + # If the URL requested is e.g. http://example.org/blog/blog and + # the base URL is correctly determined as http://example.org/blog + # by CGI.pm, then this code will incorrectly normalize the base + # URL down to http://example.org, because the same string as + # PATH_INFO is part of the base URL, too. But this is such a + # seldom case and can be fixed by setting $url in the config file, + # too. +} + +# The only modification done to a manually set base URL is to strip +# a trailing slash if present. $url =~ s!/$!!; @@ -795,7 +814,7 @@ rss story $title rss story $dw, $da $mo $yr $ti:00 $utc_offset rss story $url/$yr/$mo_num/$da#$fn rss story $path -rss story $url$path/$fn +rss story $url$path/$fn rss story $body rss story