X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FExtMsg.pm;h=e15ababcde05e50ec515590c14a7537463045988;hb=2c69f7bc34a2b12dc7f55e2bb24fa28565f24f03;hp=59bbae595e3b1b214a507ac58a9da6213875c31f;hpb=47b59a589e5ba9ef44a618acebe8ba5564825ab7;p=public-inbox.git
diff --git a/lib/PublicInbox/ExtMsg.pm b/lib/PublicInbox/ExtMsg.pm
index 59bbae59..e15ababc 100644
--- a/lib/PublicInbox/ExtMsg.pm
+++ b/lib/PublicInbox/ExtMsg.pm
@@ -16,15 +16,18 @@ use PublicInbox::MID qw/mid2path/;
our @EXT_URL = (
'http://mid.gmane.org/%s',
'https://lists.debian.org/msgid-search/%s',
- 'http://mid.mail-archive.com/%s',
- 'http://marc.info/?i=%s',
+ # leading "//" denotes protocol-relative (http:// or https://)
+ '//mid.mail-archive.com/%s',
+ '//marc.info/?i=%s',
);
sub ext_msg {
my ($ctx) = @_;
my $pi_config = $ctx->{pi_config};
- my $listname = $ctx->{listname};
+ my $inbox = $ctx->{inbox};
my $mid = $ctx->{mid};
+ my $cgi = $ctx->{cgi};
+ my $env = $cgi->{env};
eval { require PublicInbox::Search };
my $have_xap = $@ ? 0 : 1;
@@ -32,16 +35,17 @@ sub ext_msg {
foreach my $k (keys %$pi_config) {
$k =~ /\Apublicinbox\.([A-Z0-9a-z-]+)\.url\z/ or next;
- my $list = $1;
- next if $list eq $listname;
+ my $name = $1;
+ next if $name eq $inbox;
- my $git_dir = $pi_config->{"publicinbox.$list.mainrepo"};
+ my $git_dir = $pi_config->{"publicinbox.$name.mainrepo"};
defined $git_dir or next;
- my $url = $pi_config->{"publicinbox.$list.url"};
+ my $url = $pi_config->{"publicinbox.$name.url"};
defined $url or next;
$url =~ s!/+\z!!;
+ $url = PublicInbox::Hval::prurl($env, $url);
# try to find the URL with Xapian to avoid forking
if ($have_xap) {
@@ -84,13 +88,12 @@ sub ext_msg {
eval { require PublicInbox::Msgmap };
my $have_mm = $@ ? 0 : 1;
+ my $base_url = $cgi->base->as_string;
if ($have_mm) {
my $tmp_mid = $mid;
+ my $url;
again:
- my $cgi = $ctx->{cgi};
- my $url = ref($cgi) eq 'CGI' ? $cgi->url(-base) . '/'
- : $cgi->base->as_string;
- $url .= $listname;
+ $url = $base_url . $inbox;
unshift @pfx, { git_dir => $ctx->{git_dir}, url => $url };
foreach my $pfx (@pfx) {
my $git_dir = delete $pfx->{git_dir} or next;
@@ -124,7 +127,7 @@ again:
foreach my $pfx (@partial) {
my $u = $pfx->{url};
foreach my $m (@{$pfx->{res}}) {
- my $p = PublicInbox::Hval->new($m);
+ my $p = PublicInbox::Hval->new_msgid($m);
my $r = $p->as_href;
my $t = $p->as_html;
$s .= qq{$u/$t/\n};
@@ -136,7 +139,8 @@ again:
if (@EXT_URL && index($mid, '@') >= 0) {
$code = 300;
$s .= "\nPerhaps try an external site:\n\n";
- foreach my $u (@EXT_URL) {
+ foreach my $url (@EXT_URL) {
+ my $u = PublicInbox::Hval::prurl($env, $url);
my $r = sprintf($u, $href);
my $t = sprintf($u, $html);
$s .= qq{$t\n};
@@ -144,7 +148,7 @@ again:
}
$s .= '