Index: TWiki.pm
===================================================================
RCS file: /cvsroot/twiki/twiki/lib/TWiki.pm,v
retrieving revision 1.122
diff -C2 -r1.122 TWiki.pm
*** TWiki.pm 25 Mar 2002 23:30:28 -0000 1.122
--- TWiki.pm 27 Mar 2002 15:45:46 -0000
***************
*** 1997,2000 ****
--- 1997,2022 ----
# =========================
+ sub mailtoLinkFull
+ {
+ my( $theAccount, $theSubDomain, $theTopDomain, $theLinkText ) = @_;
+
+ my $addr = "$theAccount\@$theSubDomain$TWiki::noSpamPadding\.$theTopDomain";
+ return "$theLinkText";
+ }
+
+ # =========================
+ sub mailtoLinkSimple
+ {
+ # Does not do any anti-spam padding, because address will not include '@'
+ my( $theMailtoString, $theLinkText ) = @_;
+
+ # Defensive coding
+ if ($theMailtoString =~ s/@//g ) {
+ writeDebug("mailtoLinkSimple called with an '\@' in string - internal TWiki error");
+ }
+ return "$theLinkText";
+ }
+
+ # =========================
sub isWikiName
{
***************
*** 2157,2160 ****
--- 2179,2192 ----
# Mailto
+ # RD 27 Mar 02: Mailto improvements - FIXME: check security...
+ # Explicit [[mailto:... ]] link without an '@' - hence no
+ # anti-spam padding needed
+ # '[[mailto:string display text]]' link (no '@' in 'string'):
+ s/\[\[mailto\:([^\s\@]+)\s+(.+?)\]\]/&mailtoLinkSimple( $1, $2 )/geo;
+ # RD 27 Mar 02: explicit [[mailto:... ]] link including '@',
+ # with anti-spam padding, so match name@subdom.dom
+ # '[[mailto:string display text]]' link
+ s/\[\[mailto\:([a-zA-Z0-9\-\_\.\+]+)\@([a-zA-Z0-9\-\_\.]+)\.(.+?)\s+(.*?)\]\]/&mailtoLinkFull( $1, $2, $3, $4 )/geo;
+ # Normal mailto ('mailto:' part optional)
s/([\s\(])(?:mailto\:)*([a-zA-Z0-9\-\_\.\+]+)\@([a-zA-Z0-9\-\_\.]+)\.([a-zA-Z0-9\-\_]+)(?=[\s\.\,\;\:\!\?\)])/$1 . &mailtoLink( $2, $3, $4 )/geo;