From 7ee391533b51f37e949e31a26c2ad93b935c3d03 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 29 Jan 2018 13:04:09 +0000 Subject: reply: follow obfuscation rules for HTML in sh args Namely, we do not want to obfuscate the mail address of the site itself. --- lib/PublicInbox/Hval.pm | 5 +++-- lib/PublicInbox/Reply.pm | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/PublicInbox/Hval.pm b/lib/PublicInbox/Hval.pm index 0e199025..d65ab321 100644 --- a/lib/PublicInbox/Hval.pm +++ b/lib/PublicInbox/Hval.pm @@ -91,8 +91,9 @@ sub prurl { # ․ · and ͺ were also candidates: # https://public-inbox.org/meta/20170615015250.GA6484@starla/ # However, • was chosen to make copy+paste errors more obvious -sub obfuscate_addrs ($$) { +sub obfuscate_addrs ($$;$) { my $ibx = $_[0]; + my $repl = $_[2] || '•'; my $re = $ibx->{-no_obfuscate_re}; # regex of domains my $addrs = $ibx->{-no_obfuscate}; # { adddress => 1 } $_[1] =~ s/(([\w\.\+=\-]+)\@([\w\-]+\.[\w\.\-]+))/ @@ -100,7 +101,7 @@ sub obfuscate_addrs ($$) { if ($addrs->{$addr} || ((defined $re && $domain =~ $re))) { $addr; } else { - $domain =~ s!([^\.]+)\.!$1•!; + $domain =~ s!([^\.]+)\.!$1$repl!; $user . '@' . $domain } /sge; diff --git a/lib/PublicInbox/Reply.pm b/lib/PublicInbox/Reply.pm index 07288aab..eee41173 100644 --- a/lib/PublicInbox/Reply.pm +++ b/lib/PublicInbox/Reply.pm @@ -4,7 +4,7 @@ package PublicInbox::Reply; use strict; use warnings; use URI::Escape qw/uri_escape_utf8/; -use PublicInbox::Hval qw/ascii_html/; +use PublicInbox::Hval qw/ascii_html obfuscate_addrs/; use PublicInbox::Address; use PublicInbox::MID qw/mid_clean mid_escape/; @@ -70,8 +70,9 @@ sub mailto_arg_link { delete $cc->{$to}; if ($obfs) { my $arg_to = $to; - $arg_to =~ s/\./\$(echo .)/; + obfuscate_addrs($ibx, $arg_to, '$(echo .)'); push @arg, "--to=$arg_to"; + # no $subj for $href below } else { push @arg, "--to=$to"; $to = uri_escape_utf8($to); @@ -82,8 +83,9 @@ sub mailto_arg_link { if (@cc) { if ($obfs) { push(@arg, map { - s/\./\$(echo .)/; - "--cc=$_"; + my $addr = $_; + obfuscate_addrs($ibx, $addr, '$(echo .)'); + "--cc=$addr"; } @cc); } else { $cc = '&Cc=' . uri_escape_utf8(join(',', @cc)); -- cgit v1.2.3-24-ge0c7