Jelajahi Sumber

升级freesql到最新版本
新增ip脱敏方法

zhontai 2 tahun lalu
induk
melakukan
ea69f8f3c8

+ 8 - 8
src/platform/ZhonTai.Admin/ZhonTai.Admin.csproj

@@ -16,9 +16,9 @@
 		<PackageReference Include="CSRedisCore" Version="3.8.670" />
 		<PackageReference Include="Caching.CSRedis" Version="3.8.670" />
 		<PackageReference Include="FluentValidation.AspNetCore" Version="11.2.2" />
-		<PackageReference Include="FreeSql" Version="3.2.684" />
+		<PackageReference Include="FreeSql" Version="3.2.685" />
 		<PackageReference Include="FreeSql.Cloud" Version="1.6.3" />
-		<PackageReference Include="FreeSql.Repository" Version="3.2.684" />
+		<PackageReference Include="FreeSql.Repository" Version="3.2.685" />
 		<PackageReference Include="FreeScheduler" Version="1.0.9" />
 		<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
 		<PackageReference Include="Mapster" Version="7.3.0" />
@@ -37,12 +37,12 @@
 	</ItemGroup>
 
 	<ItemGroup Condition="'$(Configuration)'=='Debug'">
-		<PackageReference Include="FreeSql.Provider.MySql" Version="3.2.684" />
-		<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.2.684" />
-		<PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.2.684" />
-		<PackageReference Include="FreeSql.Provider.Oracle" Version="3.2.684" />
-		<PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.684" />
-		<PackageReference Include="FreeSql.Provider.MySqlConnector" Version="3.2.684" />
+		<PackageReference Include="FreeSql.Provider.MySql" Version="3.2.685" />
+		<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.2.685" />
+		<PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.2.685" />
+		<PackageReference Include="FreeSql.Provider.Oracle" Version="3.2.685" />
+		<PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.685" />
+		<PackageReference Include="FreeSql.Provider.MySqlConnector" Version="3.2.685" />
 	</ItemGroup>
 
 	<ItemGroup>

+ 19 - 0
src/platform/ZhonTai.Common/Helpers/DataMaskHelper.cs

@@ -14,6 +14,9 @@ public partial class DataMaskHelper
     [GeneratedRegex("(?<=.{2})[^@]+(?=.{2}@)")]
     public static partial Regex EmailMaskRegex();
 
+    [GeneratedRegex("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})")]
+    public static partial Regex IPMaskRegex();
+
     /// <summary>
     /// 手机号脱敏
     /// </summary>
@@ -44,4 +47,20 @@ public partial class DataMaskHelper
 
         return EmailMaskRegex().Replace(input, mask);
     }
+
+    /// <summary>
+    /// IP脱敏
+    /// </summary>
+    /// <param name="input"></param>
+    /// <param name="mask"></param>
+    /// <returns></returns>
+    public static string IPMask(string input, string mask = "*")
+    {
+        if (input.IsNull())
+        {
+            return input;
+        }
+
+        return IPMaskRegex().Replace(input, $"$1.{mask}.{mask}.$4");
+    }
 }

+ 58 - 0
src/platform/ZhonTai.Common/ZhonTai.Common.xml

@@ -333,6 +333,24 @@
             </code>
             </remarks>
         </member>
+        <member name="M:ZhonTai.Common.Helpers.DataMaskHelper.IPMaskRegex">
+            <remarks>
+            Pattern explanation:<br/>
+            <code>
+            ○ 1st capture group.<br/>
+                ○ Match '0' through '9' atomically at least 1 and at most 3 times.<br/>
+            ○ Match '.'.<br/>
+            ○ 2nd capture group.<br/>
+                ○ Match '0' through '9' atomically at least 1 and at most 3 times.<br/>
+            ○ Match '.'.<br/>
+            ○ 3rd capture group.<br/>
+                ○ Match '0' through '9' atomically at least 1 and at most 3 times.<br/>
+            ○ Match '.'.<br/>
+            ○ 4th capture group.<br/>
+                ○ Match '0' through '9' atomically at least 1 and at most 3 times.<br/>
+            </code>
+            </remarks>
+        </member>
         <member name="M:ZhonTai.Common.Helpers.DataMaskHelper.PhoneMask(System.String,System.String)">
             <summary>
             手机号脱敏
@@ -349,6 +367,14 @@
             <param name="mask"></param>
             <returns></returns>
         </member>
+        <member name="M:ZhonTai.Common.Helpers.DataMaskHelper.IPMask(System.String,System.String)">
+            <summary>
+            IP脱敏
+            </summary>
+            <param name="input"></param>
+            <param name="mask"></param>
+            <returns></returns>
+        </member>
         <member name="T:ZhonTai.Common.Helpers.DesEncrypt">
             <summary>
             Des加解密
@@ -659,6 +685,38 @@
             <param name="inputSpan">The text being scanned by the regular expression.</param>
             <returns>true if the regular expression matches at the current position; otherwise, false.</returns>
         </member>
+        <member name="T:System.Text.RegularExpressions.Generated.IPMaskRegex_2">
+            <summary>Custom <see cref="T:System.Text.RegularExpressions.Regex"/>-derived type for the IPMaskRegex method.</summary>
+        </member>
+        <member name="F:System.Text.RegularExpressions.Generated.IPMaskRegex_2.Instance">
+            <summary>Cached, thread-safe singleton instance.</summary>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.IPMaskRegex_2.#ctor">
+            <summary>Initializes the instance.</summary>
+        </member>
+        <member name="T:System.Text.RegularExpressions.Generated.IPMaskRegex_2.RunnerFactory">
+            <summary>Provides a factory for creating <see cref="T:System.Text.RegularExpressions.RegexRunner"/> instances to be used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.IPMaskRegex_2.RunnerFactory.CreateInstance">
+            <summary>Creates an instance of a <see cref="T:System.Text.RegularExpressions.RegexRunner"/> used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
+        </member>
+        <member name="T:System.Text.RegularExpressions.Generated.IPMaskRegex_2.RunnerFactory.Runner">
+            <summary>Provides the runner that contains the custom logic implementing the specified regular expression.</summary>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.IPMaskRegex_2.RunnerFactory.Runner.Scan(System.ReadOnlySpan{System.Char})">
+            <summary>Scan the <paramref name="inputSpan"/> starting from base.runtextstart for the next match.</summary>
+            <param name="inputSpan">The text being scanned by the regular expression.</param>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.IPMaskRegex_2.RunnerFactory.Runner.TryFindNextPossibleStartingPosition(System.ReadOnlySpan{System.Char})">
+            <summary>Search <paramref name="inputSpan"/> starting from base.runtextpos for the next location a match could possibly start.</summary>
+            <param name="inputSpan">The text being scanned by the regular expression.</param>
+            <returns>true if a possible match was found; false if no more matches are possible.</returns>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.IPMaskRegex_2.RunnerFactory.Runner.TryMatchAtCurrentPosition(System.ReadOnlySpan{System.Char})">
+            <summary>Determine whether <paramref name="inputSpan"/> at base.runtextpos is a match for the regular expression.</summary>
+            <param name="inputSpan">The text being scanned by the regular expression.</param>
+            <returns>true if the regular expression matches at the current position; otherwise, false.</returns>
+        </member>
         <member name="T:System.Text.RegularExpressions.Generated.Utilities">
             <summary>Helper methods used by generated <see cref="T:System.Text.RegularExpressions.Regex"/>-derived implementations.</summary>
         </member>

+ 1 - 1
src/tests/ZhonTai.Tests/ZhonTai.Tests.csproj

@@ -8,7 +8,7 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.1" />
     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.1" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
     <PackageReference Include="xunit" Version="2.4.2" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
       <PrivateAssets>all</PrivateAssets>