diff options
author | Wouter Tinus <wouter.tinus@gmail.com> | 2020-04-22 20:03:51 +0200 |
---|---|---|
committer | Wouter Tinus <wouter.tinus@gmail.com> | 2020-04-22 20:03:51 +0200 |
commit | d68723f79ba1da231c05dfe3e533f501f353c8cc (patch) | |
tree | e7ee757c2aef6504c7afa48272ae5d785857d756 /src/main.lib/Extensions/StringExtensions.cs | |
parent | 0f98d4581cd1d269d435658c1125e7d4bcc94bd3 (diff) | |
parent | 06ef5360b246132c14554229020427ff3c5d0ac8 (diff) | |
download | letsencrypt-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.cs | 36 |
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, "\\?"); } |