diff --git a/AssemblyVersion.cs b/AssemblyVersion.cs
index 4e3654b..cdf8b87 100644
--- a/AssemblyVersion.cs
+++ b/AssemblyVersion.cs
@@ -16,5 +16,5 @@ using System.Reflection;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("3.0.1.414")]
-[assembly: AssemblyFileVersion("3.0.1.414")]
+[assembly: AssemblyVersion("3.0.1.415")]
+[assembly: AssemblyFileVersion("3.0.1.415")]
diff --git a/Core/Formatter.cs b/Core/Formatter.cs
index ec0abf6..e0fa366 100644
--- a/Core/Formatter.cs
+++ b/Core/Formatter.cs
@@ -1649,14 +1649,14 @@ namespace ScrewTurn.Wiki {
if(!isImage) sb.Append(@" class=""emaillink""");
if(blank) sb.Append(@" target=""_blank""");
sb.Append(@" href=""mailto:");
- sb.Append(targetUrl.Replace("&", "%26")); // Trick to let ampersands work in email addresses
+ sb.Append(Tools.ObfuscateText(targetUrl.Replace("&", "%26"))); // Trick to let ampersands work in email addresses
sb.Append(@""" title=""");
if(!isImage && title.Length > 0) sb.Append(nstripped);
else if(isImage && imageTitle.Length > 0) sb.Append(imageTitleStripped);
- else sb.Append(targetUrl);
+ else sb.Append(Tools.ObfuscateText(targetUrl));
sb.Append(@""">");
if(title.Length > 0) sb.Append(title);
- else sb.Append(targetUrl);
+ else sb.Append(Tools.ObfuscateText(targetUrl));
sb.Append("");
}
else if(((targetUrl.IndexOf(".") != -1 && !targetUrl.ToLowerInvariant().EndsWith(".aspx")) || targetUrl.EndsWith("/")) &&
diff --git a/Core/Tools.cs b/Core/Tools.cs
index 0e2ccfe..ea98c04 100644
--- a/Core/Tools.cs
+++ b/Core/Tools.cs
@@ -554,6 +554,21 @@ namespace ScrewTurn.Wiki {
return hash;
}
+ ///
+ /// Obfuscates text, replacing each character with its HTML escaped sequence, for example a becomes a.
+ ///
+ /// The input text.
+ /// The output obfuscated text.
+ public static string ObfuscateText(string input) {
+ StringBuilder buffer = new StringBuilder(input.Length * 4);
+
+ foreach(char c in input) {
+ buffer.Append("" + ((int)c).ToString("D2") + ";");
+ }
+
+ return buffer.ToString();
+ }
+
}
///