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;