Commit Diff
Commit:
f0fb0f0898465906e605ce59cd2b31d1730d6d8c
Date:
Tue Aug 30 11:40:44 2022
UTC
Message:
urlencode the mail/thread id
reminded by semarie@, thanks!
--- GotMArc.pm
+++ GotMArc.pm
@@ -9,7 +9,7 @@ our @EXPORT_OK = qw(san parse initpage endpage index_h
use Exporter;
our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(san parse initpage endpage index_header thread_header);
+our @EXPORT_OK = qw(san urlencode parse initpage endpage index_header thread_header);
sub san {
my $str = shift;
@@ -19,6 +19,16 @@ sub ssan {
return $str;
}
+sub urlencode {
+ my $str = shift;
+ unless (defined($str)) {
+ my ($pkg, $file, $line) = caller 1;
+ die "bad $pkg / $file:$line";
+ }
+ $str =~ s/([^-_~.A-Za-z0-9])/sprintf("%%%2X", ord($1))/ge;
+ return $str;
+}
+
sub ssan {
my $str = shift;
$str =~ s/\s+/ /g;
@@ -86,13 +96,16 @@ sub thread_header {
my ($fh, $tid, $mid, $e) = @_;
my @entries = @$e;
+ my $enctid = urlencode $tid if defined $tid;
+ my $encmid = urlencode $mid if defined $mid;
+
print $fh "<header class='mail-header'>\n";
print $fh "<p>";
print $fh $small_logo;
print $fh "<a href='/'>Index</a>";
- print $fh " | <a href='/thread/$tid.html#$mid'>Thread</a>"
- if defined $tid;
+ print $fh " | <a href='/thread/$enctid.html#$encmid'>Thread</a>"
+ if defined $enctid;
print $fh "</p>\n";
say $fh "<dl>";
@@ -103,8 +116,8 @@ sub thread_header {
}
say $fh "</dl>";
- say $fh "<p>Download raw <a href='/text/$mid.txt'>body</a>.</p>"
- if defined $mid;
+ say $fh "<p>Download raw <a href='/text/$encmid.txt'>body</a>.</p>"
+ if defined $encmid;
say $fh "</header>\n";
};
--- mexp
+++ mexp
@@ -15,7 +15,7 @@ use GotMArc qw(parse san initpage endpage thread_heade
use OpenBSD::Unveil;
use lib ".";
-use GotMArc qw(parse san initpage endpage thread_header);
+use GotMArc qw(parse san urlencode initpage endpage thread_header);
my $outdir = $ENV{'OUTDIR'};
die 'Set $OUTDIR' unless defined $outdir;
@@ -85,9 +85,12 @@ while (<>) {
}
say $fh "</ul>" if $part_seen;
+ my $encmid = urlencode $mid;
+ my $enctid = urlencode $tid;
+
print $fh "<nav>";
- print $fh "<a href='/text/$mid.txt'>Raw body</a>";
- print $fh "<a href='/thread/$tid.html#$mid'>Thread</a>";
+ print $fh "<a href='/text/$encmid.txt'>Raw body</a>";
+ print $fh "<a href='/thread/$enctid.html#$encmid'>Thread</a>";
print $fh "</nav>\n";
endpage $fh;
--- mkindex
+++ mkindex
@@ -15,7 +15,7 @@ use GotMArc qw(parse san initpage endpage index_header
use OpenBSD::Unveil;
use lib ".";
-use GotMArc qw(parse san initpage endpage index_header thread_header);
+use GotMArc qw(parse san urlencode initpage endpage index_header thread_header);
my $outdir = $ENV{'OUTDIR'};
die 'Set $OUTDIR' unless defined $outdir;
@@ -138,14 +138,16 @@ sub entry {
sub entry {
my ($fh, $type, $mid, $date, $from, $subj) = @_;
- print $fh "<li id='$mid' class='mail'>";
+ my $encmid = urlencode $mid;
+
+ print $fh "<li id='$encmid' class='mail'>";
print $fh "<p class='mail-meta'>";
print $fh "<time>$date</time> ";
print $fh "<span class='from'>$from</span>";
print $fh "<span class='colon'>:</span>";
print $fh "</p>";
print $fh "<p class='subject'>";
- print $fh "<a href='/$type/$mid.html'>$subj</a>";
+ print $fh "<a href='/$type/$encmid.html'>$subj</a>";
print $fh "</p>";
print $fh "</li>\n";
}
Omar Polo