From 7cc42ae2493d883bddf399f2a99366fcec4da135 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Mon, 17 Mar 2025 11:05:04 +0800 Subject: [PATCH] Simply check the file hash value and delete the old pac file --- v2rayN/ServiceLib/Common/Utils.cs | 51 ++++++++++++++++++++++--- v2rayN/ServiceLib/Handler/PacHandler.cs | 7 ++++ 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/v2rayN/ServiceLib/Common/Utils.cs b/v2rayN/ServiceLib/Common/Utils.cs index dcfc04e4..8b75e2cd 100644 --- a/v2rayN/ServiceLib/Common/Utils.cs +++ b/v2rayN/ServiceLib/Common/Utils.cs @@ -225,15 +225,54 @@ namespace ServiceLib.Common public static string GetMd5(string str) { - var byteOld = Encoding.UTF8.GetBytes(str); - var byteNew = MD5.HashData(byteOld); - StringBuilder sb = new(32); - foreach (var b in byteNew) + if (string.IsNullOrEmpty(str)) { - sb.Append(b.ToString("x2")); + return string.Empty; } - return sb.ToString(); + try + { + var byteOld = Encoding.UTF8.GetBytes(str); + var byteNew = MD5.HashData(byteOld); + StringBuilder sb = new(32); + foreach (var b in byteNew) + { + sb.Append(b.ToString("x2")); + } + + return sb.ToString(); + } + catch (Exception ex) + { + Logging.SaveLog(_tag, ex); + return string.Empty; + } + } + + public static string GetFileHash(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + { + return string.Empty; + } + + if (!File.Exists(filePath)) + { + return string.Empty; + } + + try + { + using var md5 = MD5.Create(); + using var stream = File.OpenRead(filePath); + var hash = md5.ComputeHash(stream); + return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant(); + } + catch (Exception ex) + { + Logging.SaveLog(_tag, ex); + return string.Empty; + } } /// diff --git a/v2rayN/ServiceLib/Handler/PacHandler.cs b/v2rayN/ServiceLib/Handler/PacHandler.cs index f70173c5..5a9e31aa 100644 --- a/v2rayN/ServiceLib/Handler/PacHandler.cs +++ b/v2rayN/ServiceLib/Handler/PacHandler.cs @@ -33,6 +33,13 @@ namespace ServiceLib.Handler private static async Task InitText() { var path = Path.Combine(_configPath, "pac.txt"); + + // Delete the old pac file + if (File.Exists(path) && Utils.GetFileHash(path).Equals("b590c07280f058ef05d5394aa2f927fe")) + { + File.Delete(path); + } + if (!File.Exists(path)) { var pac = EmbedUtils.GetEmbedText(Global.PacFileName);