about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Hval.pm5
-rw-r--r--lib/PublicInbox/Reply.pm10
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));