diff options
-rw-r--r-- | Bugzilla/Util.pm | 28 | ||||
-rwxr-xr-x | reports.cgi | 8 |
2 files changed, 30 insertions, 6 deletions
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index c5cfc0444..24debb1d6 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -34,7 +34,7 @@ use base qw(Exporter); detaint_signed html_quote url_quote value_quote xml_quote css_class_quote - i_am_cgi get_netaddr + i_am_cgi get_netaddr correct_urlbase lsearch diff_arrays diff_strings trim wrap_comment find_wrap_point @@ -146,6 +146,22 @@ sub i_am_cgi { 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 { my ($list,$item) = (@_); my $count = 0; @@ -429,8 +445,9 @@ Bugzilla::Util - Generic utility functions for bugzilla $rv = url_decode($var); # Functions that tell you about your environment - my $is_cgi = i_am_cgi(); - $net_addr = get_netaddr($ip_addr); + my $is_cgi = i_am_cgi(); + my $net_addr = get_netaddr($ip_addr); + my $urlbase = correct_urlbase(); # Functions for searching $loc = lsearch(\@arr, $val); @@ -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 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 =head2 Searching diff --git a/reports.cgi b/reports.cgi index e0ef55daf..0f5842d0b 100755 --- a/reports.cgi +++ b/reports.cgi @@ -47,8 +47,9 @@ $@ && ThrowCodeError("gd_not_installed"); eval "use Chart::Lines"; $@ && ThrowCodeError("chart_lines_not_installed"); -local our $dir = bz_locations()->{'datadir'} . "/mining"; -local our $graph_dir = bz_locations()->{'libpath'} . "/graphs"; +local our $dir = bz_locations()->{'datadir'} . "/mining"; +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 # to viewing reports, as well. Time to check the login in that case. @@ -198,7 +199,8 @@ FIN my $type = chart_image_type(); my $data_file = daily_stats_filename($product); 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") { generate_chart("$dir/$data_file", "$graph_dir/$image_file", $type, |