From patchwork Sun Jul 12 18:33:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Girstmair X-Patchwork-Id: 11658411 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 215611392 for ; Sun, 12 Jul 2020 19:11:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 088602067D for ; Sun, 12 Jul 2020 19:11:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729287AbgGLTL1 (ORCPT ); Sun, 12 Jul 2020 15:11:27 -0400 Received: from smtprelay07.ispgateway.de ([134.119.228.97]:17633 "EHLO smtprelay07.ispgateway.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729122AbgGLTL1 (ORCPT ); Sun, 12 Jul 2020 15:11:27 -0400 X-Greylist: delayed 522 seconds by postgrey-1.27 at vger.kernel.org; Sun, 12 Jul 2020 15:11:25 EDT Received: from [178.112.81.104] (helo=localhost.localdomain) by smtprelay07.ispgateway.de with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.3) (envelope-from ) id 1juhFJ-0007kK-5Z; Sun, 12 Jul 2020 21:02:41 +0200 From: Tobias Girstmair To: git@vger.kernel.org Cc: Tobias Girstmair Subject: [PATCH v3] gitweb: Replace tag with full URLs (when using PATH_INFO) Date: Sun, 12 Jul 2020 20:33:30 +0200 Message-Id: <20200712183329.3358-1-tobi@isticktoit.net> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200711203947.23520-1-tobi@isticktoit.net> References: <20200711203947.23520-1-tobi@isticktoit.net> MIME-Version: 1.0 X-Df-Sender: dC5naXJzdG1haXJAaXN0aWNrdG9pdC5uZXQ= Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org using a base tag has the side-effect of not just changing the few URLs of gitweb's static resources, but all other relative links (e.g. those in a README.html), too. Signed-off-by: Tobias Girstmair --- Apologies; missed a typo. tobias gitweb/gitweb.perl | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 0959a78..f426060 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -1616,6 +1616,19 @@ sub esc_url { return $str; } +# the stylesheet, favicon etc urls won't work correctly with path_info +# unless we set the appropriate base URL. not using a tag to not +# also change relative URLs inserted by the user. +sub esc_url_base { + my $url = shift; + my $prefix = $ENV{'PATH_INFO'}? esc_url($base_url)."/" : ""; + if ($url !~ m{^(https?:)?//?}) { + return $prefix . esc_url($url); + } else { + return esc_url($url); + } +} + # quote unsafe characters in HTML attributes sub esc_attr { @@ -2232,7 +2245,7 @@ sub git_get_avatar { return $pre_white . "" . $post_white; } else { @@ -4099,17 +4112,17 @@ sub print_header_links { # print out each stylesheet that exist, providing backwards capability # for those people who defined $stylesheet in a config file if (defined $stylesheet) { - print ''."\n"; + print ''."\n"; } else { foreach my $stylesheet (@stylesheets) { next unless $stylesheet; - print ''."\n"; + print ''."\n"; } } print_feed_meta() if ($status eq '200 OK'); if (defined $favicon) { - print qq(\n); + print qq(\n); } } @@ -4212,11 +4225,6 @@ sub git_header_html { $title EOF - # the stylesheet, favicon etc urls won't work correctly with path_info - # unless we set the appropriate base URL - if ($ENV{'PATH_INFO'}) { - print "\n"; - } print_header_links($status); if (defined $site_html_head_string) { @@ -4234,7 +4242,7 @@ sub git_header_html { if (defined $logo) { print $cgi->a({-href => esc_url($logo_url), -title => $logo_label}, - $cgi->img({-src => esc_url($logo), + $cgi->img({-src => esc_url_base($logo), -width => 72, -height => 27, -alt => "git", -class => "logo"})); @@ -4299,7 +4307,7 @@ sub git_footer_html { insert_file($site_footer); } - print qq!\n!; + print qq!\n!; if (defined $action && $action eq 'blame_incremental') { print qq!