Code clean

This commit is contained in:
2dust
2025-01-30 17:10:05 +08:00
parent 253219dd16
commit 45264005a4
103 changed files with 639 additions and 498 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
using Downloader;
using System.Net;
using Downloader;
namespace ServiceLib.Common
{
@@ -181,4 +181,4 @@ namespace ServiceLib.Common
downloadOpt = null;
}
}
}
}
+11 -6
View File
@@ -38,13 +38,15 @@ namespace ServiceLib.Common
public async Task<string?> GetAsync(string url)
{
if (Utils.IsNullOrEmpty(url)) return null;
if (Utils.IsNullOrEmpty(url))
return null;
return await httpClient.GetStringAsync(url);
}
public async Task<string?> GetAsync(HttpClient client, string url, CancellationToken token = default)
{
if (Utils.IsNullOrEmpty(url)) return null;
if (Utils.IsNullOrEmpty(url))
return null;
return await client.GetStringAsync(url, token);
}
@@ -75,11 +77,13 @@ namespace ServiceLib.Common
{
ArgumentNullException.ThrowIfNull(url);
ArgumentNullException.ThrowIfNull(fileName);
if (File.Exists(fileName)) File.Delete(fileName);
if (File.Exists(fileName))
File.Delete(fileName);
using var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
if (!response.IsSuccessStatusCode) throw new Exception(response.StatusCode.ToString());
if (!response.IsSuccessStatusCode)
throw new Exception(response.StatusCode.ToString());
var total = response.Content.Headers.ContentLength ?? -1L;
var canReportProgress = total != -1 && progress != null;
@@ -97,7 +101,8 @@ namespace ServiceLib.Common
var read = await stream.ReadAsync(buffer, token);
totalRead += read;
if (read == 0) break;
if (read == 0)
break;
await file.WriteAsync(buffer.AsMemory(0, read), token);
if (canReportProgress)
@@ -183,4 +188,4 @@ namespace ServiceLib.Common
} while (isMoreToRead);
}
}
}
}
+4 -3
View File
@@ -1,4 +1,4 @@
using System.Diagnostics;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ServiceLib.Common
@@ -75,7 +75,8 @@ namespace ServiceLib.Common
private void Dispose(bool disposing)
{
if (disposed) return;
if (disposed)
return;
disposed = true;
if (disposing)
@@ -173,4 +174,4 @@ namespace ServiceLib.Common
}
#endregion Helper classes
}
}
+6 -4
View File
@@ -1,4 +1,4 @@
using NLog;
using NLog;
using NLog.Config;
using NLog.Targets;
@@ -27,14 +27,16 @@ namespace ServiceLib.Common
public static void SaveLog(string strContent)
{
if (!LogManager.IsLoggingEnabled()) return;
if (!LogManager.IsLoggingEnabled())
return;
LogManager.GetLogger("Log1").Info(strContent);
}
public static void SaveLog(string strTitle, Exception ex)
{
if (!LogManager.IsLoggingEnabled()) return;
if (!LogManager.IsLoggingEnabled())
return;
var logger = LogManager.GetLogger("Log2");
logger.Debug($"{strTitle},{ex.Message}");
@@ -45,4 +47,4 @@ namespace ServiceLib.Common
}
}
}
}
}
+19 -8
View File
@@ -19,8 +19,10 @@ public static class ProcUtils
}
try
{
if (fileName.Contains(' ')) fileName = fileName.AppendQuotes();
if (arguments.Contains(' ')) arguments = arguments.AppendQuotes();
if (fileName.Contains(' '))
fileName = fileName.AppendQuotes();
if (arguments.Contains(' '))
arguments = arguments.AppendQuotes();
Process process = new()
{
@@ -83,10 +85,18 @@ public static class ProcUtils
GetProcessKeyInfo(proc, review, out var procId, out var fileName, out var processName);
try { proc?.Kill(true); } catch (Exception ex) { Logging.SaveLog(_tag, ex); }
try { proc?.Kill(); } catch (Exception ex) { Logging.SaveLog(_tag, ex); }
try { proc?.Close(); } catch (Exception ex) { Logging.SaveLog(_tag, ex); }
try { proc?.Dispose(); } catch (Exception ex) { Logging.SaveLog(_tag, ex); }
try
{ proc?.Kill(true); }
catch (Exception ex) { Logging.SaveLog(_tag, ex); }
try
{ proc?.Kill(); }
catch (Exception ex) { Logging.SaveLog(_tag, ex); }
try
{ proc?.Close(); }
catch (Exception ex) { Logging.SaveLog(_tag, ex); }
try
{ proc?.Dispose(); }
catch (Exception ex) { Logging.SaveLog(_tag, ex); }
await Task.Delay(300);
await ProcessKillByKeyInfo(review, procId, fileName, processName);
@@ -97,7 +107,8 @@ public static class ProcUtils
procId = null;
fileName = null;
processName = null;
if (!review) return;
if (!review)
return;
try
{
procId = proc?.Id;
@@ -136,4 +147,4 @@ public static class ProcUtils
}
}
}
}
}
+2 -2
View File
@@ -1,5 +1,5 @@
using SQLite;
using System.Collections;
using SQLite;
namespace ServiceLib.Common
{
@@ -88,4 +88,4 @@ namespace ServiceLib.Common
});
}
}
}
}
+6 -4
View File
@@ -1,4 +1,4 @@
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;
namespace ServiceLib.Common
{
@@ -21,7 +21,8 @@ namespace ServiceLib.Common
public static bool BeginWithAny(this string s, IEnumerable<char> chars)
{
if (s.IsNullOrEmpty()) return false;
if (s.IsNullOrEmpty())
return false;
return chars.Contains(s.First());
}
@@ -34,7 +35,8 @@ namespace ServiceLib.Common
{
while (reader.ReadLine() is { } line)
{
if (line.IsWhiteSpace()) continue;
if (line.IsWhiteSpace())
continue;
yield return line;
}
}
@@ -69,4 +71,4 @@ namespace ServiceLib.Common
return string.IsNullOrEmpty(value) ? string.Empty : $"\"{value}\"";
}
}
}
}
+21 -12
View File
@@ -1,5 +1,3 @@
using CliWrap;
using CliWrap.Buffered;
using System.Collections.Specialized;
using System.Diagnostics;
using System.Net;
@@ -10,6 +8,8 @@ using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Security.Principal;
using System.Text;
using CliWrap;
using CliWrap.Buffered;
namespace ServiceLib.Common
{
@@ -176,7 +176,8 @@ namespace ServiceLib.Common
{
try
{
if (plainText.IsNullOrEmpty()) return "";
if (plainText.IsNullOrEmpty())
return "";
plainText = plainText.Trim()
.Replace(Environment.NewLine, "")
.Replace("\n", "")
@@ -372,7 +373,8 @@ namespace ServiceLib.Common
public static bool IsBase64String(string? plainText)
{
if (plainText.IsNullOrEmpty()) return false;
if (plainText.IsNullOrEmpty())
return false;
var buffer = new Span<byte>(new byte[plainText.Length]);
return Convert.TryFromBase64String(plainText, buffer, out var _);
}
@@ -462,9 +464,12 @@ namespace ServiceLib.Common
if (IPAddress.TryParse(ip, out var address))
{
var ipBytes = address.GetAddressBytes();
if (ipBytes[0] == 10) return true;
if (ipBytes[0] == 172 && ipBytes[1] >= 16 && ipBytes[1] <= 31) return true;
if (ipBytes[0] == 192 && ipBytes[1] == 168) return true;
if (ipBytes[0] == 10)
return true;
if (ipBytes[0] == 172 && ipBytes[1] >= 16 && ipBytes[1] <= 31)
return true;
if (ipBytes[0] == 192 && ipBytes[1] == 168)
return true;
}
return false;
@@ -604,9 +609,11 @@ namespace ServiceLib.Common
foreach (var host in hostsList)
{
if (host.StartsWith("#")) continue;
if (host.StartsWith("#"))
continue;
var hostItem = host.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
if (hostItem.Length != 2) continue;
if (hostItem.Length != 2)
continue;
systemHosts.Add(hostItem.Last(), hostItem.First());
}
}
@@ -875,8 +882,10 @@ namespace ServiceLib.Common
public static async Task<string?> SetLinuxChmod(string? fileName)
{
if (fileName.IsNullOrEmpty()) return null;
if (fileName.Contains(' ')) fileName = fileName.AppendQuotes();
if (fileName.IsNullOrEmpty())
return null;
if (fileName.Contains(' '))
fileName = fileName.AppendQuotes();
//File.SetUnixFileMode(fileName, UnixFileMode.UserRead | UnixFileMode.UserWrite | UnixFileMode.UserExecute);
var arg = new List<string>() { "-c", $"chmod +x {fileName}" };
return await GetCliWrapOutput("/bin/bash", arg);
@@ -904,4 +913,4 @@ namespace ServiceLib.Common
#endregion Platform
}
}
}
+15 -17
View File
@@ -1,4 +1,3 @@
using System.Diagnostics;
using System.Security.Cryptography;
using System.Text;
using Microsoft.Win32;
@@ -56,21 +55,20 @@ namespace ServiceLib.Common
public static async Task RemoveTunDevice()
{
try
{
var sum = MD5.HashData(Encoding.UTF8.GetBytes("wintunsingbox_tun"));
var guid = new Guid(sum);
var pnpUtilPath = @"C:\Windows\System32\pnputil.exe";
var arg = $$""" /remove-device "SWD\Wintun\{{{guid}}}" """;
try
{
var sum = MD5.HashData(Encoding.UTF8.GetBytes("wintunsingbox_tun"));
var guid = new Guid(sum);
var pnpUtilPath = @"C:\Windows\System32\pnputil.exe";
var arg = $$""" /remove-device "SWD\Wintun\{{{guid}}}" """;
// Try to remove the device
await Utils.GetCliWrapOutput(pnpUtilPath, arg);
}
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
}
}
}
// Try to remove the device
await Utils.GetCliWrapOutput(pnpUtilPath, arg);
}
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
}
}
}
}
+35 -36
View File
@@ -1,4 +1,3 @@
using System.Diagnostics;
using System.Security.Principal;
using System.Text.RegularExpressions;
@@ -30,12 +29,12 @@ namespace ServiceLib.Handler
}
else if (Utils.IsOSX())
{
await ClearTaskOSX();
await ClearTaskOSX();
if (config.GuiItem.AutoRun)
{
await SetTaskOSX();
}
if (config.GuiItem.AutoRun)
{
await SetTaskOSX();
}
}
return true;
@@ -172,46 +171,46 @@ namespace ServiceLib.Handler
private static async Task ClearTaskOSX()
{
try
{
var launchAgentPath = GetLaunchAgentPathMacOS();
if (File.Exists(launchAgentPath))
{
var args = new[] { "-c", $"launchctl unload -w \"{launchAgentPath}\"" };
await Utils.GetCliWrapOutput("/bin/bash", args);
try
{
var launchAgentPath = GetLaunchAgentPathMacOS();
if (File.Exists(launchAgentPath))
{
var args = new[] { "-c", $"launchctl unload -w \"{launchAgentPath}\"" };
await Utils.GetCliWrapOutput("/bin/bash", args);
File.Delete(launchAgentPath);
}
}
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
}
File.Delete(launchAgentPath);
}
}
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
}
}
private static async Task SetTaskOSX()
{
try
{
var plistContent = GenerateLaunchAgentPlist();
var launchAgentPath = GetLaunchAgentPathMacOS();
await File.WriteAllTextAsync(launchAgentPath, plistContent);
try
{
var plistContent = GenerateLaunchAgentPlist();
var launchAgentPath = GetLaunchAgentPathMacOS();
await File.WriteAllTextAsync(launchAgentPath, plistContent);
var args = new[] { "-c", $"launchctl load -w \"{launchAgentPath}\"" };
await Utils.GetCliWrapOutput("/bin/bash", args);
}
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
}
var args = new[] { "-c", $"launchctl load -w \"{launchAgentPath}\"" };
await Utils.GetCliWrapOutput("/bin/bash", args);
}
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
}
}
private static string GetLaunchAgentPathMacOS()
{
var homePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
var launchAgentPath = Path.Combine(homePath, "Library", "LaunchAgents", $"{Global.AppName}-LaunchAgent.plist");
Directory.CreateDirectory(Path.GetDirectoryName(launchAgentPath));
return launchAgentPath;
var homePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
var launchAgentPath = Path.Combine(homePath, "Library", "LaunchAgents", $"{Global.AppName}-LaunchAgent.plist");
Directory.CreateDirectory(Path.GetDirectoryName(launchAgentPath));
return launchAgentPath;
}
private static string GenerateLaunchAgentPlist()
+5 -3
View File
@@ -873,7 +873,8 @@ namespace ServiceLib.Handler
List<ProfileItem> lstKeep = new();
List<ProfileItem> lstRemove = new();
if (!config.GuiItem.KeepOlderDedupl) lstProfile.Reverse();
if (!config.GuiItem.KeepOlderDedupl)
lstProfile.Reverse();
foreach (ProfileItem item in lstProfile)
{
@@ -1363,7 +1364,8 @@ namespace ServiceLib.Handler
};
var uri = Utils.TryUri(url);
if (uri == null) return -1;
if (uri == null)
return -1;
//Do not allow http protocol
if (url.StartsWith(Global.HttpProtocol) && !Utils.IsPrivateNetwork(uri.IdnHost))
{
@@ -1885,4 +1887,4 @@ namespace ServiceLib.Handler
#endregion Regional Presets
}
}
}
+12 -9
View File
@@ -84,13 +84,13 @@ namespace ServiceLib.Handler
await CoreStop();
await Task.Delay(100);
if (Utils.IsWindows() && _config.TunModeItem.EnableTun)
{
await Task.Delay(100);
await WindowsUtils.RemoveTunDevice();
}
if (Utils.IsWindows() && _config.TunModeItem.EnableTun)
{
await Task.Delay(100);
await WindowsUtils.RemoveTunDevice();
}
await CoreStart(node);
await CoreStart(node);
await CoreStartPreService(node);
if (_process != null)
{
@@ -246,12 +246,14 @@ namespace ServiceLib.Handler
{
proc.OutputDataReceived += (sender, e) =>
{
if (Utils.IsNullOrEmpty(e.Data)) return;
if (Utils.IsNullOrEmpty(e.Data))
return;
UpdateFunc(false, e.Data + Environment.NewLine);
};
proc.ErrorDataReceived += (sender, e) =>
{
if (Utils.IsNullOrEmpty(e.Data)) return;
if (Utils.IsNullOrEmpty(e.Data))
return;
UpdateFunc(false, e.Data + Environment.NewLine);
};
}
@@ -265,7 +267,8 @@ namespace ServiceLib.Handler
await Task.Delay(10);
await proc.StandardInput.WriteLineAsync(pwd);
}
if (isNeedSudo) _linuxSudoPid = proc.Id;
if (isNeedSudo)
_linuxSudoPid = proc.Id;
if (displayLog)
{
+4 -3
View File
@@ -1,4 +1,4 @@
using System.Collections.Specialized;
using System.Collections.Specialized;
namespace ServiceLib.Handler.Fmt
{
@@ -214,7 +214,8 @@ namespace ServiceLib.Handler.Fmt
{
foreach (var item in s)
{
if (str.Contains(item, StringComparison.OrdinalIgnoreCase)) return true;
if (str.Contains(item, StringComparison.OrdinalIgnoreCase))
return true;
}
return false;
}
@@ -236,4 +237,4 @@ namespace ServiceLib.Handler.Fmt
return $"{Global.ProtocolShares[eConfigType]}{url}{query}{remark}";
}
}
}
}
@@ -1,4 +1,4 @@
namespace ServiceLib.Handler.Fmt
namespace ServiceLib.Handler.Fmt
{
public class Hysteria2Fmt : BaseFmt
{
@@ -11,7 +11,8 @@
};
var url = Utils.TryUri(str);
if (url == null) return null;
if (url == null)
return null;
item.Address = url.IdnHost;
item.Port = url.Port;
@@ -28,7 +29,8 @@
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
string url = string.Empty;
string remark = string.Empty;
@@ -91,4 +93,4 @@
return null;
}
}
}
}
@@ -1,4 +1,4 @@
using System.Text.RegularExpressions;
using System.Text.RegularExpressions;
namespace ServiceLib.Handler.Fmt
{
@@ -26,7 +26,8 @@ namespace ServiceLib.Handler.Fmt
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
string url = string.Empty;
string remark = string.Empty;
@@ -82,7 +83,8 @@ namespace ServiceLib.Handler.Fmt
private static ProfileItem? ResolveSip002(string result)
{
var parsedUrl = Utils.TryUri(result);
if (parsedUrl == null) return null;
if (parsedUrl == null)
return null;
ProfileItem item = new()
{
@@ -169,4 +171,4 @@ namespace ServiceLib.Handler.Fmt
return null;
}
}
}
}
+6 -4
View File
@@ -1,4 +1,4 @@
namespace ServiceLib.Handler.Fmt
namespace ServiceLib.Handler.Fmt
{
public class SocksFmt : BaseFmt
{
@@ -23,7 +23,8 @@
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
var url = string.Empty;
var remark = string.Empty;
@@ -86,7 +87,8 @@
private static ProfileItem? ResolveSocksNew(string result)
{
var parsedUrl = Utils.TryUri(result);
if (parsedUrl == null) return null;
if (parsedUrl == null)
return null;
ProfileItem item = new()
{
@@ -108,4 +110,4 @@
return item;
}
}
}
}
+6 -4
View File
@@ -1,4 +1,4 @@
namespace ServiceLib.Handler.Fmt
namespace ServiceLib.Handler.Fmt
{
public class TrojanFmt : BaseFmt
{
@@ -12,7 +12,8 @@
};
var url = Utils.TryUri(str);
if (url == null) return null;
if (url == null)
return null;
item.Address = url.IdnHost;
item.Port = url.Port;
@@ -27,7 +28,8 @@
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
string url = string.Empty;
string remark = string.Empty;
@@ -41,4 +43,4 @@
return ToUri(EConfigType.Trojan, item.Address, item.Port, item.Id, dicQuery, remark);
}
}
}
}
+6 -4
View File
@@ -1,4 +1,4 @@
namespace ServiceLib.Handler.Fmt
namespace ServiceLib.Handler.Fmt
{
public class TuicFmt : BaseFmt
{
@@ -12,7 +12,8 @@
};
var url = Utils.TryUri(str);
if (url == null) return null;
if (url == null)
return null;
item.Address = url.IdnHost;
item.Port = url.Port;
@@ -34,7 +35,8 @@
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
string url = string.Empty;
string remark = string.Empty;
@@ -56,4 +58,4 @@
return ToUri(EConfigType.TUIC, item.Address, item.Port, $"{item.Id}:{item.Security}", dicQuery, remark);
}
}
}
}
+6 -4
View File
@@ -1,4 +1,4 @@
namespace ServiceLib.Handler.Fmt
namespace ServiceLib.Handler.Fmt
{
public class VLESSFmt : BaseFmt
{
@@ -13,7 +13,8 @@
};
var url = Utils.TryUri(str);
if (url == null) return null;
if (url == null)
return null;
item.Address = url.IdnHost;
item.Port = url.Port;
@@ -30,7 +31,8 @@
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
string url = string.Empty;
string remark = string.Empty;
@@ -52,4 +54,4 @@
return ToUri(EConfigType.VLESS, item.Address, item.Port, item.Id, dicQuery, remark);
}
}
}
}
+6 -4
View File
@@ -1,4 +1,4 @@
namespace ServiceLib.Handler.Fmt
namespace ServiceLib.Handler.Fmt
{
public class VmessFmt : BaseFmt
{
@@ -19,7 +19,8 @@
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
string url = string.Empty;
VmessQRCode vmessQRCode = new()
@@ -106,7 +107,8 @@
};
var url = Utils.TryUri(str);
if (url == null) return null;
if (url == null)
return null;
item.Address = url.IdnHost;
item.Port = url.Port;
@@ -119,4 +121,4 @@
return item;
}
}
}
}
@@ -1,4 +1,4 @@
namespace ServiceLib.Handler.Fmt
namespace ServiceLib.Handler.Fmt
{
public class WireguardFmt : BaseFmt
{
@@ -12,7 +12,8 @@
};
var url = Utils.TryUri(str);
if (url == null) return null;
if (url == null)
return null;
item.Address = url.IdnHost;
item.Port = url.Port;
@@ -31,7 +32,8 @@
public static string? ToUri(ProfileItem? item)
{
if (item == null) return null;
if (item == null)
return null;
string url = string.Empty;
string remark = string.Empty;
@@ -60,4 +62,4 @@
return ToUri(EConfigType.WireGuard, item.Address, item.Port, item.Id, dicQuery, remark);
}
}
}
}
+4 -3
View File
@@ -1,4 +1,4 @@
using System.Net.Sockets;
using System.Net.Sockets;
using System.Text;
namespace ServiceLib.Handler
@@ -89,7 +89,8 @@ namespace ServiceLib.Handler
public static void Stop()
{
if (_tcpListener == null) return;
if (_tcpListener == null)
return;
try
{
_isRunning = false;
@@ -102,4 +103,4 @@ namespace ServiceLib.Handler
}
}
}
}
}
@@ -176,7 +176,8 @@ namespace ServiceLib.Handler.SysProxy
}
// FREE the data ASAP
if (list.szConnection != nint.Zero) Marshal.FreeHGlobal(list.szConnection); // release mem 3
if (list.szConnection != nint.Zero)
Marshal.FreeHGlobal(list.szConnection); // release mem 3
if (optionCount > 1)
{
Marshal.FreeHGlobal(options[1].m_Value.m_StringPtr); // release mem 1
@@ -356,4 +357,4 @@ namespace ServiceLib.Handler.SysProxy
);
}
}
}
}
+4 -3
View File
@@ -1,4 +1,4 @@
using System.Net;
using System.Net;
using WebDav;
namespace ServiceLib.Handler
@@ -61,7 +61,8 @@ namespace ServiceLib.Handler
private async Task<bool> TryCreateDir()
{
if (_client is null) return false;
if (_client is null)
return false;
try
{
var result2 = await _client.Mkcol(_webDir);
@@ -176,4 +177,4 @@ namespace ServiceLib.Handler
public string GetLastError() => _lastDescription ?? string.Empty;
}
}
}
@@ -1048,7 +1048,8 @@ namespace ServiceLib.Services.CoreConfig
var countDomain = 0;
foreach (var it in item.Domain)
{
if (ParseV2Domain(it, rule1)) countDomain++;
if (ParseV2Domain(it, rule1))
countDomain++;
}
if (countDomain > 0)
{
@@ -1062,7 +1063,8 @@ namespace ServiceLib.Services.CoreConfig
var countIp = 0;
foreach (var it in item.Ip)
{
if (ParseV2Address(it, rule2)) countIp++;
if (ParseV2Address(it, rule2))
countIp++;
}
if (countIp > 0)
{
@@ -1148,12 +1150,14 @@ namespace ServiceLib.Services.CoreConfig
}
else if (address.StartsWith("geoip:"))
{
if (rule.geoip is null) { rule.geoip = new(); }
if (rule.geoip is null)
{ rule.geoip = new(); }
rule.geoip?.Add(address.Substring(6));
}
else
{
if (rule.ip_cidr is null) { rule.ip_cidr = new(); }
if (rule.ip_cidr is null)
{ rule.ip_cidr = new(); }
rule.ip_cidr?.Add(address);
}
return true;
@@ -1271,7 +1275,8 @@ namespace ServiceLib.Services.CoreConfig
{
static void AddRuleSets(List<string> ruleSets, List<string>? rule_set)
{
if (rule_set != null) ruleSets.AddRange(rule_set);
if (rule_set != null)
ruleSets.AddRange(rule_set);
}
var geosite = "geosite";
var geoip = "geoip";
@@ -1339,7 +1344,8 @@ namespace ServiceLib.Services.CoreConfig
singboxConfig.route.rule_set = [];
foreach (var item in new HashSet<string>(ruleSets))
{
if (Utils.IsNullOrEmpty(item)) { continue; }
if (Utils.IsNullOrEmpty(item))
{ continue; }
var customRuleset = customRulesets.FirstOrDefault(t => t.tag != null && t.tag.Equals(item));
if (customRuleset is null)
{
@@ -1378,4 +1384,4 @@ namespace ServiceLib.Services.CoreConfig
#endregion private gen function
}
}
}
@@ -1,7 +1,7 @@
using ReactiveUI;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using ReactiveUI;
namespace ServiceLib.Services
{
@@ -119,7 +119,8 @@ namespace ServiceLib.Services
private void ExitLoop(string x)
{
if (_exitLoop) return;
if (_exitLoop)
return;
_exitLoop = true;
UpdateFunc("", ResUI.SpeedtestingStop);
}
@@ -261,7 +262,8 @@ namespace ServiceLib.Services
UpdateFunc(it.IndexId, "", ResUI.Speedtesting);
var item = await AppHandler.Instance.GetProfileItem(it.IndexId);
if (item is null) continue;
if (item is null)
continue;
var webProxy = new WebProxy($"socks5://{Global.Loopback}:{it.Port}");
@@ -323,7 +325,8 @@ namespace ServiceLib.Services
UpdateFunc(it.IndexId, "", ResUI.Speedtesting);
var item = await AppHandler.Instance.GetProfileItem(it.IndexId);
if (item is null) continue;
if (item is null)
continue;
var webProxy = new WebProxy($"socks5://{Global.Loopback}:{it.Port}");
_ = downloadHandle.DownloadDataAsync(url, webProxy, timeout, (success, msg) =>
@@ -405,4 +408,4 @@ namespace ServiceLib.Services
_updateFunc?.Invoke(new() { IndexId = indexId, Delay = delay, Speed = speed });
}
}
}
}
@@ -1,4 +1,4 @@
using System.Net.WebSockets;
using System.Net.WebSockets;
using System.Text;
namespace ServiceLib.Services.Statistics
@@ -109,7 +109,8 @@ namespace ServiceLib.Services.Statistics
private void ParseOutput(string source, out ulong up, out ulong down)
{
up = 0; down = 0;
up = 0;
down = 0;
try
{
var trafficItem = JsonUtils.Deserialize<TrafficItem>(source);
@@ -124,4 +125,4 @@ namespace ServiceLib.Services.Statistics
}
}
}
}
}
@@ -1,4 +1,4 @@
namespace ServiceLib.Services.Statistics
namespace ServiceLib.Services.Statistics
{
public class StatisticsXrayService
{
@@ -63,7 +63,8 @@
foreach (string key in source.stats.outbound.Keys)
{
var value = source.stats.outbound[key];
if (value == null) continue;
if (value == null)
continue;
var state = JsonUtils.Deserialize<V2rayMetricsVarsLink>(value.ToString());
if (key.StartsWith(Global.ProxyTag))
@@ -102,4 +103,4 @@
return null;
}
}
}
}
@@ -1,6 +1,6 @@
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
namespace ServiceLib.ViewModels
{
@@ -113,4 +113,4 @@ namespace ServiceLib.ViewModels
await Task.CompletedTask;
}
}
}
}
@@ -1,6 +1,6 @@
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
namespace ServiceLib.ViewModels
{
@@ -94,4 +94,4 @@ namespace ServiceLib.ViewModels
}
}
}
}
}
@@ -1,7 +1,7 @@
using ReactiveUI;
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Splat;
using System.Reactive;
namespace ServiceLib.ViewModels
{
@@ -179,4 +179,4 @@ namespace ServiceLib.ViewModels
return await Task.FromResult(ret);
}
}
}
}
@@ -1,10 +1,10 @@
using DynamicData;
using System.Reactive;
using System.Runtime.InteropServices;
using DynamicData;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Splat;
using System.Reactive;
using System.Runtime.InteropServices;
namespace ServiceLib.ViewModels
{
@@ -83,7 +83,8 @@ namespace ServiceLib.ViewModels
for (var k = _checkUpdateModel.Count - 1; k >= 0; k--)
{
var item = _checkUpdateModel[k];
if (item.IsSelected != true) continue;
if (item.IsSelected != true)
continue;
UpdateView(item.CoreType, "...");
if (item.CoreType == _geo)
@@ -297,10 +298,11 @@ namespace ServiceLib.ViewModels
public void UpdateViewResult(CheckUpdateModel model)
{
var found = _checkUpdateModel.FirstOrDefault(t => t.CoreType == model.CoreType);
if (found == null) return;
if (found == null)
return;
var itemCopy = JsonUtils.DeepCopy(found);
itemCopy.Remarks = model.Remarks;
_checkUpdateModel.Replace(found, itemCopy);
}
}
}
}
@@ -1,9 +1,9 @@
using System.Reactive;
using System.Reactive.Linq;
using DynamicData;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
using System.Reactive.Linq;
namespace ServiceLib.ViewModels
{
@@ -115,7 +115,8 @@ namespace ServiceLib.ViewModels
lstModel.Add(model);
}
if (lstModel.Count <= 0) { return; }
if (lstModel.Count <= 0)
{ return; }
_connectionItems.AddRange(lstModel);
}
@@ -140,4 +141,4 @@ namespace ServiceLib.ViewModels
await GetClashConnections();
}
}
}
}
@@ -1,9 +1,9 @@
using System.Reactive;
using System.Reactive.Linq;
using DynamicData;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
using System.Reactive.Linq;
using static ServiceLib.Models.ClashProviders;
using static ServiceLib.Models.ClashProxies;
@@ -463,4 +463,4 @@ namespace ServiceLib.ViewModels
#endregion task
}
}
}
@@ -1,6 +1,6 @@
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
namespace ServiceLib.ViewModels
{
@@ -114,4 +114,4 @@ namespace ServiceLib.ViewModels
_updateView?.Invoke(EViewAction.CloseWindow, null);
}
}
}
}
@@ -1,7 +1,7 @@
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Splat;
using System.Reactive;
namespace ServiceLib.ViewModels
{
@@ -570,7 +570,8 @@ namespace ServiceLib.ViewModels
{
Locator.Current.GetService<ClashProxiesViewModel>()?.ProxiesReload();
}
else { TabMainSelectedIndex = 0; }
else
{ TabMainSelectedIndex = 0; }
}
private async Task LoadCore()
@@ -611,4 +612,4 @@ namespace ServiceLib.ViewModels
#endregion Presets
}
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Collections.Concurrent;
using System.Text.RegularExpressions;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
namespace ServiceLib.ViewModels
{
@@ -119,4 +119,4 @@ namespace ServiceLib.ViewModels
_lastMsgFilterNotAvailable = false;
}
}
}
}
@@ -1,6 +1,6 @@
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
namespace ServiceLib.ViewModels
{
@@ -415,4 +415,4 @@ namespace ServiceLib.ViewModels
await Task.CompletedTask;
}
}
}
}
@@ -1,11 +1,11 @@
using System.Reactive;
using System.Reactive.Linq;
using System.Text;
using DynamicData;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Splat;
using System.Reactive;
using System.Reactive.Linq;
using System.Text;
namespace ServiceLib.ViewModels
{
@@ -841,4 +841,4 @@ namespace ServiceLib.ViewModels
#endregion Subscription
}
}
}
@@ -1,6 +1,6 @@
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
namespace ServiceLib.ViewModels
{
@@ -90,4 +90,4 @@ namespace ServiceLib.ViewModels
await _updateView?.Invoke(EViewAction.CloseWindow, null);
}
}
}
}
@@ -1,9 +1,9 @@
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
using System.Text.Json;
using System.Text.Json.Serialization;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
namespace ServiceLib.ViewModels
{
@@ -338,4 +338,4 @@ namespace ServiceLib.ViewModels
#endregion Import rules
}
}
}
@@ -1,7 +1,7 @@
using DynamicData.Binding;
using System.Reactive;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
namespace ServiceLib.ViewModels
{
@@ -202,4 +202,4 @@ namespace ServiceLib.ViewModels
}
}
}
}
}
@@ -1,9 +1,9 @@
using DynamicData.Binding;
using System.Reactive;
using System.Text;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Splat;
using System.Reactive;
using System.Text;
namespace ServiceLib.ViewModels
{
@@ -225,19 +225,22 @@ namespace ServiceLib.ViewModels
private async Task AddServerViaClipboard()
{
var service = Locator.Current.GetService<MainWindowViewModel>();
if (service != null) await service.AddServerViaClipboardAsync(null);
if (service != null)
await service.AddServerViaClipboardAsync(null);
}
private async Task AddServerViaScan()
{
var service = Locator.Current.GetService<MainWindowViewModel>();
if (service != null) await service.AddServerViaScanAsync();
if (service != null)
await service.AddServerViaScanAsync();
}
private async Task UpdateSubscriptionProcess(bool blProxy)
{
var service = Locator.Current.GetService<MainWindowViewModel>();
if (service != null) await service.UpdateSubscriptionProcess("", blProxy);
if (service != null)
await service.UpdateSubscriptionProcess("", blProxy);
}
public async Task RefreshServersBiz()
@@ -496,4 +499,4 @@ namespace ServiceLib.ViewModels
#endregion UI
}
}
}
@@ -1,6 +1,6 @@
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
namespace ServiceLib.ViewModels
{
@@ -61,4 +61,4 @@ namespace ServiceLib.ViewModels
}
}
}
}
}
@@ -1,8 +1,8 @@
using DynamicData;
using System.Reactive;
using DynamicData;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System.Reactive;
namespace ServiceLib.ViewModels
{
@@ -102,4 +102,4 @@ namespace ServiceLib.ViewModels
IsModified = true;
}
}
}
}