Commit bea873a6 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 344527: Old Charts are broken using mod_perl

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=justdave
parent 788586bb
...@@ -34,7 +34,7 @@ use base qw(Exporter); ...@@ -34,7 +34,7 @@ use base qw(Exporter);
detaint_signed detaint_signed
html_quote url_quote value_quote xml_quote html_quote url_quote value_quote xml_quote
css_class_quote css_class_quote
i_am_cgi get_netaddr i_am_cgi get_netaddr correct_urlbase
lsearch lsearch
diff_arrays diff_strings diff_arrays diff_strings
trim wrap_comment find_wrap_point trim wrap_comment find_wrap_point
...@@ -146,6 +146,22 @@ sub i_am_cgi { ...@@ -146,6 +146,22 @@ sub i_am_cgi {
return exists $ENV{'SERVER_SOFTWARE'} ? 1 : 0; return exists $ENV{'SERVER_SOFTWARE'} ? 1 : 0;
} }
sub correct_urlbase {
my $ssl = Bugzilla->params->{'ssl'};
return Bugzilla->params->{'urlbase'} if $ssl eq 'never';
my $sslbase = Bugzilla->params->{'sslbase'};
if ($sslbase) {
return $sslbase if $ssl eq 'always';
# Authenticated Sessions
return $sslbase if Bugzilla->user->id;
}
# Set to "authenticated sessions" but nobody's logged in, or
# sslbase isn't set.
return Bugzilla->params->{'urlbase'};
}
sub lsearch { sub lsearch {
my ($list,$item) = (@_); my ($list,$item) = (@_);
my $count = 0; my $count = 0;
...@@ -429,8 +445,9 @@ Bugzilla::Util - Generic utility functions for bugzilla ...@@ -429,8 +445,9 @@ Bugzilla::Util - Generic utility functions for bugzilla
$rv = url_decode($var); $rv = url_decode($var);
# Functions that tell you about your environment # Functions that tell you about your environment
my $is_cgi = i_am_cgi(); my $is_cgi = i_am_cgi();
$net_addr = get_netaddr($ip_addr); my $net_addr = get_netaddr($ip_addr);
my $urlbase = correct_urlbase();
# Functions for searching # Functions for searching
$loc = lsearch(\@arr, $val); $loc = lsearch(\@arr, $val);
...@@ -565,6 +582,11 @@ C<Bugzilla->params->{'loginnetmask'}> as the netmask. This can be used ...@@ -565,6 +582,11 @@ C<Bugzilla->params->{'loginnetmask'}> as the netmask. This can be used
to obtain data in order to restrict weak authentication methods (such as to obtain data in order to restrict weak authentication methods (such as
cookies) to only some addresses. cookies) to only some addresses.
=item C<correct_urlbase()>
Returns either the C<sslbase> or C<urlbase> parameter, depending on the
current setting for the C<ssl> parameter.
=back =back
=head2 Searching =head2 Searching
......
...@@ -47,8 +47,9 @@ $@ && ThrowCodeError("gd_not_installed"); ...@@ -47,8 +47,9 @@ $@ && ThrowCodeError("gd_not_installed");
eval "use Chart::Lines"; eval "use Chart::Lines";
$@ && ThrowCodeError("chart_lines_not_installed"); $@ && ThrowCodeError("chart_lines_not_installed");
local our $dir = bz_locations()->{'datadir'} . "/mining"; local our $dir = bz_locations()->{'datadir'} . "/mining";
local our $graph_dir = bz_locations()->{'libpath'} . "/graphs"; local our $graph_url = 'graphs';
local our $graph_dir = bz_locations()->{'libpath'} . '/' .$graph_url;
# If we're using bug groups for products, we should apply those restrictions # If we're using bug groups for products, we should apply those restrictions
# to viewing reports, as well. Time to check the login in that case. # to viewing reports, as well. Time to check the login in that case.
...@@ -198,7 +199,8 @@ FIN ...@@ -198,7 +199,8 @@ FIN
my $type = chart_image_type(); my $type = chart_image_type();
my $data_file = daily_stats_filename($product); my $data_file = daily_stats_filename($product);
my $image_file = chart_image_name($data_file, $type, $datasets); my $image_file = chart_image_name($data_file, $type, $datasets);
my $url_image = "$graph_dir/" . url_quote($image_file); my $url_image = correct_urlbase() . "$graph_url/"
. url_quote($image_file);
if (! -e "$graph_dir/$image_file") { if (! -e "$graph_dir/$image_file") {
generate_chart("$dir/$data_file", "$graph_dir/$image_file", $type, generate_chart("$dir/$data_file", "$graph_dir/$image_file", $type,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment