about summary refs log tree commit homepage
path: root/lib/PublicInbox/Hval.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Hval.pm')
-rw-r--r--lib/PublicInbox/Hval.pm15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/PublicInbox/Hval.pm b/lib/PublicInbox/Hval.pm
index 2379b918..80050886 100644
--- a/lib/PublicInbox/Hval.pm
+++ b/lib/PublicInbox/Hval.pm
@@ -91,6 +91,19 @@ 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 ($) { $_[0] =~ s/(\S+@[^\.]+)\./$1•/g }
+sub obfuscate_addrs ($$) {
+        my $ibx = $_[0];
+        my $re = $ibx->{-no_obfuscate_re}; # regex of domains
+        my $addrs = $ibx->{-no_obfuscate}; # { adddress => 1 }
+        $_[1] =~ s/([\w\.\+=\-]+\@([\w\-]+\.[\w\.\-]+))/
+                my ($addr, $domain) = ($1, $2);
+                if ($addrs->{$addr} || ((defined $re && $domain =~ $re))) {
+                        $addr;
+                } else {
+                        $addr =~ s!([^\.]+)\.!$1•!g;
+                        $addr
+                }
+                /sge;
+}
 
 1;