summaryrefslogtreecommitdiffstats
path: root/src/main.lib/Extensions/StringExtensions.cs
diff options
context:
space:
mode:
authorWouter Tinus <wouter.tinus@gmail.com>2020-04-22 20:03:51 +0200
committerWouter Tinus <wouter.tinus@gmail.com>2020-04-22 20:03:51 +0200
commitd68723f79ba1da231c05dfe3e533f501f353c8cc (patch)
treee7ee757c2aef6504c7afa48272ae5d785857d756 /src/main.lib/Extensions/StringExtensions.cs
parent0f98d4581cd1d269d435658c1125e7d4bcc94bd3 (diff)
parent06ef5360b246132c14554229020427ff3c5d0ac8 (diff)
downloadletsencrypt-win-simple-d68723f79ba1da231c05dfe3e533f501f353c8cc.zip
letsencrypt-win-simple-d68723f79ba1da231c05dfe3e533f501f353c8cc.tar.gz
letsencrypt-win-simple-d68723f79ba1da231c05dfe3e533f501f353c8cc.tar.bz2
merge with latest
Diffstat (limited to 'src/main.lib/Extensions/StringExtensions.cs')
-rw-r--r--src/main.lib/Extensions/StringExtensions.cs36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/main.lib/Extensions/StringExtensions.cs b/src/main.lib/Extensions/StringExtensions.cs
index 9740b3b..b9b9a84 100644
--- a/src/main.lib/Extensions/StringExtensions.cs
+++ b/src/main.lib/Extensions/StringExtensions.cs
@@ -112,10 +112,44 @@ namespace PKISharp.WACS.Extensions
}
}
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="pattern"></param>
+ /// <returns></returns>
public static string PatternToRegex(this string pattern)
{
+ pattern = pattern.Replace("\\\\", SlashEscape);
+ pattern = pattern.Replace("\\,", CommaEscape);
+ pattern = pattern.Replace("\\*", StarEscape);
+ pattern = pattern.Replace("\\?", QuestionEscape);
var parts = pattern.ParseCsv();
- return $"^({string.Join('|', parts.Select(x => Regex.Escape(x).Replace(@"\*", ".*").Replace(@"\?", ".")))})$";
+ return $"^({string.Join('|', parts.Select(x => Regex.Escape(x).PatternToRegexPart()))})$";
+ }
+
+ private const string SlashEscape = "~slash~";
+ private const string CommaEscape = "~comma~";
+ private const string StarEscape = "~star~";
+ private const string QuestionEscape = "~question~";
+
+ public static string EscapePattern(this string pattern)
+ {
+ return pattern.
+ Replace("\\", "\\\\").
+ Replace(",", "\\,").
+ Replace("*", "\\*").
+ Replace("?", "\\?");
+ }
+
+ private static string PatternToRegexPart(this string pattern)
+ {
+ return pattern.
+ Replace("\\*", ".*").
+ Replace("\\?", ".").
+ Replace(SlashEscape, "\\\\").
+ Replace(CommaEscape, ",").
+ Replace(StarEscape, "\\*").
+ Replace(QuestionEscape, "\\?");
}