about summary refs log tree commit homepage
path: root/lib/PublicInbox/Hval.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2017-06-23 20:23:07 +0000
committerEric Wong <e@80x24.org>2017-06-23 22:28:46 +0000
commit1a8eb0a43c68e64b77fdd3c4ebd977a1ab88e71b (patch)
treed60151d9613f6603b4cca5f62410eaac2a344dba /lib/PublicInbox/Hval.pm
parentbde2d8c8de65a4d6b06e8d7365f504f2d8db90a6 (diff)
downloadpublic-inbox-1a8eb0a43c68e64b77fdd3c4ebd977a1ab88e71b.tar.gz
We will also treat all known list addresses as non-obfuscated.

By setting publicinbox.noObfuscate in ~/.public-inbox/config,
this will allow users to disable address obfuscation on a
per-domain or per-address basis.
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 {
 # &#8228; &#183; and &#890; were also candidates:
 #   https://public-inbox.org/meta/20170615015250.GA6484@starla/
 # However, &#8226; was chosen to make copy+paste errors more obvious
-sub obfuscate_addrs ($) { $_[0] =~ s/(\S+@[^\.]+)\./$1&#8226;/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&#8226;!g;
+                        $addr
+                }
+                /sge;
+}
 
 1;