mirror of
https://github.com/2dust/v2rayN.git
synced 2026-10-27 07:34:59 +03:00
Code clean (#9482)
This commit is contained in:
@@ -3,16 +3,10 @@ namespace ServiceLib.Services.CoreConfig;
|
||||
/// <summary>
|
||||
/// Core configuration file processing class
|
||||
/// </summary>
|
||||
public class CoreConfigClashService
|
||||
public class CoreConfigClashService(Config config)
|
||||
{
|
||||
private Config _config;
|
||||
private static readonly string _tag = "CoreConfigClashService";
|
||||
|
||||
public CoreConfigClashService(Config config)
|
||||
{
|
||||
_config = config;
|
||||
}
|
||||
|
||||
public async Task<RetResult> GenerateClientCustomConfig(ProfileItem node, string? fileName)
|
||||
{
|
||||
var ret = new RetResult();
|
||||
@@ -56,7 +50,7 @@ public class CoreConfigClashService
|
||||
var tagYamlStr1 = "!<str>";
|
||||
var tagYamlStr2 = "__strn__";
|
||||
var tagYamlStr3 = "!!str";
|
||||
var txtFile = File.ReadAllText(addressFileName);
|
||||
var txtFile = await File.ReadAllTextAsync(addressFileName);
|
||||
txtFile = txtFile.Replace(tagYamlStr1, tagYamlStr2);
|
||||
|
||||
//YAML anchors
|
||||
@@ -75,13 +69,13 @@ public class CoreConfigClashService
|
||||
//mixed-port
|
||||
fileContent["mixed-port"] = AppManager.Instance.GetLocalPort(EInboundProtocol.socks);
|
||||
//log-level
|
||||
fileContent["log-level"] = GetLogLevel(_config.CoreBasicItem.Loglevel);
|
||||
fileContent["log-level"] = GetLogLevel(config.CoreBasicItem.Loglevel);
|
||||
|
||||
//external-controller
|
||||
fileContent["external-controller"] = $"{Global.Loopback}:{AppManager.Instance.StatePort2}";
|
||||
fileContent.Remove("secret");
|
||||
//allow-lan
|
||||
if (_config.Inbound.First().AllowLANConn)
|
||||
if (config.Inbound.First().AllowLANConn)
|
||||
{
|
||||
fileContent["allow-lan"] = "true";
|
||||
fileContent["bind-address"] = "*";
|
||||
@@ -92,23 +86,23 @@ public class CoreConfigClashService
|
||||
}
|
||||
|
||||
//ipv6
|
||||
fileContent["ipv6"] = _config.ClashUIItem.EnableIPv6;
|
||||
fileContent["ipv6"] = config.ClashUIItem.EnableIPv6;
|
||||
|
||||
//mode
|
||||
if (!fileContent.ContainsKey("mode"))
|
||||
{
|
||||
fileContent["mode"] = ERuleMode.Rule.ToString().ToLower();
|
||||
fileContent["mode"] = nameof(ERuleMode.Rule).ToLower();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_config.ClashUIItem.RuleMode != ERuleMode.Unchanged)
|
||||
if (config.ClashUIItem.RuleMode != ERuleMode.Unchanged)
|
||||
{
|
||||
fileContent["mode"] = _config.ClashUIItem.RuleMode.ToString().ToLower();
|
||||
fileContent["mode"] = config.ClashUIItem.RuleMode.ToString().ToLower();
|
||||
}
|
||||
}
|
||||
|
||||
//enable tun mode
|
||||
if (_config.TunModeItem.EnableTun)
|
||||
if (config.TunModeItem.EnableTun)
|
||||
{
|
||||
var tun = EmbedUtils.GetEmbedText(Global.ClashTunYaml);
|
||||
if (tun.IsNotEmpty())
|
||||
@@ -156,7 +150,7 @@ public class CoreConfigClashService
|
||||
|
||||
private async Task MixinContent(Dictionary<string, object> fileContent, ProfileItem node)
|
||||
{
|
||||
if (!_config.ClashUIItem.EnableMixinContent)
|
||||
if (!config.ClashUIItem.EnableMixinContent)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -177,7 +171,7 @@ public class CoreConfigClashService
|
||||
}
|
||||
foreach (var item in mixinContent)
|
||||
{
|
||||
if (!_config.TunModeItem.EnableTun && item.Key == "tun")
|
||||
if (!config.TunModeItem.EnableTun && item.Key == "tun")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -220,9 +214,8 @@ public class CoreConfigClashService
|
||||
return;
|
||||
}
|
||||
|
||||
if (!blRemoved && !fileContent.ContainsKey(key))
|
||||
if (!blRemoved && fileContent.TryAdd(key, value))
|
||||
{
|
||||
fileContent.Add(key, value);
|
||||
return;
|
||||
}
|
||||
var lstOri = (List<object>)fileContent[key];
|
||||
@@ -244,7 +237,7 @@ public class CoreConfigClashService
|
||||
}
|
||||
else
|
||||
{
|
||||
lstValue.ForEach(item => lstOri.Add(item));
|
||||
lstValue.ForEach(lstOri.Add);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ public partial class CoreConfigSingboxService(CoreConfigContext context)
|
||||
{
|
||||
listen = Global.Loopback,
|
||||
listen_port = port,
|
||||
type = EInboundProtocol.mixed.ToString(),
|
||||
type = nameof(EInboundProtocol.mixed),
|
||||
};
|
||||
inbound.tag = inbound.type + inbound.listen_port.ToString();
|
||||
_coreConfig.inbounds.Add(inbound);
|
||||
@@ -229,7 +229,7 @@ public partial class CoreConfigSingboxService(CoreConfigContext context)
|
||||
tag = $"{EInboundProtocol.mixed}{port}",
|
||||
listen = Global.Loopback,
|
||||
listen_port = port,
|
||||
type = EInboundProtocol.mixed.ToString(),
|
||||
type = nameof(EInboundProtocol.mixed),
|
||||
});
|
||||
ApplyOutboundBindInterface();
|
||||
ApplyOutboundSendThrough();
|
||||
|
||||
@@ -23,7 +23,7 @@ public partial class CoreConfigSingboxService
|
||||
}
|
||||
|
||||
// Process outbounds
|
||||
var customOutboundsNode = fullConfigTemplateNode["outbounds"] is JsonArray outbounds ? outbounds : [];
|
||||
var customOutboundsNode = fullConfigTemplateNode["outbounds"] as JsonArray ?? [];
|
||||
foreach (var outbound in _coreConfig.outbounds)
|
||||
{
|
||||
if (outbound.type.ToLower() is "direct" or "block")
|
||||
@@ -42,9 +42,9 @@ public partial class CoreConfigSingboxService
|
||||
fullConfigTemplateNode["outbounds"] = customOutboundsNode;
|
||||
|
||||
// Process endpoints
|
||||
if (_coreConfig.endpoints != null && _coreConfig.endpoints.Count > 0)
|
||||
if (_coreConfig.endpoints is { Count: > 0 })
|
||||
{
|
||||
var customEndpointsNode = fullConfigTemplateNode["endpoints"] is JsonArray endpoints ? endpoints : [];
|
||||
var customEndpointsNode = fullConfigTemplateNode["endpoints"] as JsonArray ?? [];
|
||||
foreach (var endpoint in _coreConfig.endpoints)
|
||||
{
|
||||
if (endpoint.detour.IsNullOrEmpty() && !fullConfigTemplate.ProxyDetour.IsNullOrEmpty())
|
||||
|
||||
@@ -26,7 +26,7 @@ public partial class CoreConfigSingboxService
|
||||
{
|
||||
var rules = JsonUtils.Deserialize<List<RulesItem>>(routing.RuleSet) ?? [];
|
||||
|
||||
if (rules?.LastOrDefault() is { } lastRule && lastRule.OutboundTag == Global.DirectTag)
|
||||
if (rules?.LastOrDefault() is { OutboundTag: Global.DirectTag } lastRule)
|
||||
{
|
||||
var noDomain = lastRule.Domain == null || lastRule.Domain.Count == 0;
|
||||
var noProcess = lastRule.Process == null || lastRule.Process.Count == 0;
|
||||
@@ -82,7 +82,7 @@ public partial class CoreConfigSingboxService
|
||||
if (simpleDnsItem.UseSystemHosts == true)
|
||||
{
|
||||
var systemHosts = Utils.GetSystemHosts();
|
||||
if (systemHosts != null && systemHosts.Count > 0)
|
||||
if (systemHosts is { Count: > 0 })
|
||||
{
|
||||
foreach (var host in systemHosts)
|
||||
{
|
||||
@@ -182,13 +182,13 @@ public partial class CoreConfigSingboxService
|
||||
{
|
||||
server = Global.SingboxRemoteDNSTag,
|
||||
strategy = Utils.DomainStrategy4Sbox(simpleDnsItem.Strategy4Proxy),
|
||||
clash_mode = ERuleMode.Global.ToString()
|
||||
clash_mode = nameof(ERuleMode.Global)
|
||||
},
|
||||
new Rule4Sbox
|
||||
{
|
||||
server = Global.SingboxDirectDNSTag,
|
||||
strategy = Utils.DomainStrategy4Sbox(simpleDnsItem.Strategy4Freedom),
|
||||
clash_mode = ERuleMode.Direct.ToString()
|
||||
clash_mode = nameof(ERuleMode.Direct)
|
||||
}
|
||||
});
|
||||
|
||||
@@ -454,12 +454,12 @@ public partial class CoreConfigSingboxService
|
||||
dns4Sbox.rules.Insert(0, new()
|
||||
{
|
||||
server = tag,
|
||||
clash_mode = ERuleMode.Direct.ToString()
|
||||
clash_mode = nameof(ERuleMode.Direct)
|
||||
});
|
||||
dns4Sbox.rules.Insert(0, new()
|
||||
{
|
||||
server = dns4Sbox.servers.Where(t => t.detour == Global.ProxyTag).Select(t => t.tag).FirstOrDefault() ?? "remote",
|
||||
clash_mode = ERuleMode.Global.ToString()
|
||||
clash_mode = nameof(ERuleMode.Global)
|
||||
});
|
||||
|
||||
var finalDnsAddress = string.IsNullOrEmpty(dnsItem?.DomainDNSAddress) ? Global.DomainPureIPDNSAddress.FirstOrDefault() : dnsItem?.DomainDNSAddress;
|
||||
|
||||
@@ -15,8 +15,8 @@ public partial class CoreConfigSingboxService
|
||||
{
|
||||
var inbound = new Inbound4Sbox()
|
||||
{
|
||||
type = EInboundProtocol.mixed.ToString(),
|
||||
tag = EInboundProtocol.socks.ToString(),
|
||||
type = nameof(EInboundProtocol.mixed),
|
||||
tag = nameof(EInboundProtocol.socks),
|
||||
listen = Global.Loopback,
|
||||
};
|
||||
_coreConfig.inbounds.Add(inbound);
|
||||
@@ -87,7 +87,7 @@ public partial class CoreConfigSingboxService
|
||||
var inbound = JsonUtils.DeepCopy(inItem);
|
||||
inbound.tag = protocol.ToString();
|
||||
inbound.listen_port = inItem.listen_port + (int)protocol;
|
||||
inbound.type = EInboundProtocol.mixed.ToString();
|
||||
inbound.type = nameof(EInboundProtocol.mixed);
|
||||
return inbound;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -730,8 +730,8 @@ public partial class CoreConfigSingboxService
|
||||
{
|
||||
return;
|
||||
}
|
||||
var outbounds = servers.Where(s => s is Outbound4Sbox).Cast<Outbound4Sbox>().ToList();
|
||||
var endpoints = servers.Where(s => s is Endpoints4Sbox).Cast<Endpoints4Sbox>().ToList();
|
||||
var outbounds = servers.OfType<Outbound4Sbox>().ToList();
|
||||
var endpoints = servers.OfType<Endpoints4Sbox>().ToList();
|
||||
singboxConfig.endpoints ??= [];
|
||||
if (prepend)
|
||||
{
|
||||
|
||||
@@ -193,12 +193,12 @@ public partial class CoreConfigSingboxService
|
||||
_coreConfig.route.rules.Add(new()
|
||||
{
|
||||
outbound = Global.DirectTag,
|
||||
clash_mode = ERuleMode.Direct.ToString()
|
||||
clash_mode = nameof(ERuleMode.Direct)
|
||||
});
|
||||
_coreConfig.route.rules.Add(new()
|
||||
{
|
||||
outbound = Global.ProxyTag,
|
||||
clash_mode = ERuleMode.Global.ToString()
|
||||
clash_mode = nameof(ERuleMode.Global)
|
||||
});
|
||||
|
||||
var domainStrategy = _config.RoutingBasicItem.DomainStrategy4Singbox.NullIfEmpty();
|
||||
|
||||
@@ -18,15 +18,15 @@ public partial class CoreConfigSingboxService
|
||||
//convert route geosite & geoip to ruleset
|
||||
foreach (var rule in _coreConfig.route.rules.Where(t => t.geosite?.Count > 0).ToList() ?? [])
|
||||
{
|
||||
rule.rule_set ??= new List<string>();
|
||||
rule.rule_set.AddRange(rule?.geosite?.Select(t => $"{geosite}-{t}").ToList());
|
||||
rule.rule_set ??= [];
|
||||
rule.rule_set.AddRange(rule?.geosite?.Select(t => $"{geosite}-{t}").ToList() ?? []);
|
||||
rule.geosite = null;
|
||||
AddRuleSets(ruleSets, rule.rule_set);
|
||||
}
|
||||
foreach (var rule in _coreConfig.route.rules.Where(t => t.geoip?.Count > 0).ToList() ?? [])
|
||||
{
|
||||
rule.rule_set ??= new List<string>();
|
||||
rule.rule_set.AddRange(rule?.geoip?.Select(t => $"{geoip}-{t}").ToList());
|
||||
rule.rule_set ??= [];
|
||||
rule.rule_set.AddRange(rule?.geoip?.Select(t => $"{geoip}-{t}").ToList() ?? []);
|
||||
rule.geoip = null;
|
||||
AddRuleSets(ruleSets, rule.rule_set);
|
||||
}
|
||||
@@ -34,14 +34,14 @@ public partial class CoreConfigSingboxService
|
||||
//convert dns geosite & geoip to ruleset
|
||||
foreach (var rule in _coreConfig.dns?.rules.Where(t => t.geosite?.Count > 0).ToList() ?? [])
|
||||
{
|
||||
rule.rule_set ??= new List<string>();
|
||||
rule.rule_set.AddRange(rule?.geosite?.Select(t => $"{geosite}-{t}").ToList());
|
||||
rule.rule_set ??= [];
|
||||
rule.rule_set.AddRange(rule?.geosite?.Select(t => $"{geosite}-{t}").ToList() ?? []);
|
||||
rule.geosite = null;
|
||||
}
|
||||
foreach (var rule in _coreConfig.dns?.rules.Where(t => t.geoip?.Count > 0).ToList() ?? [])
|
||||
{
|
||||
rule.rule_set ??= new List<string>();
|
||||
rule.rule_set.AddRange(rule?.geoip?.Select(t => $"{geoip}-{t}").ToList());
|
||||
rule.rule_set ??= [];
|
||||
rule.rule_set.AddRange(rule?.geoip?.Select(t => $"{geoip}-{t}").ToList() ?? []);
|
||||
rule.geoip = null;
|
||||
}
|
||||
foreach (var dnsRule in _coreConfig.dns?.rules.Where(t => t.rule_set?.Count > 0).ToList() ?? [])
|
||||
|
||||
@@ -165,7 +165,7 @@ public partial class CoreConfigV2rayService(CoreConfigContext context)
|
||||
{
|
||||
listen = Global.Loopback,
|
||||
port = port,
|
||||
protocol = EInboundProtocol.mixed.ToString(),
|
||||
protocol = nameof(EInboundProtocol.mixed),
|
||||
settings = new Inboundsettings4Ray()
|
||||
{
|
||||
udp = true,
|
||||
@@ -270,7 +270,7 @@ public partial class CoreConfigV2rayService(CoreConfigContext context)
|
||||
tag = $"{EInboundProtocol.socks}{port}",
|
||||
listen = Global.Loopback,
|
||||
port = port,
|
||||
protocol = EInboundProtocol.mixed.ToString(),
|
||||
protocol = nameof(EInboundProtocol.mixed),
|
||||
settings = new Inboundsettings4Ray()
|
||||
{
|
||||
udp = true,
|
||||
|
||||
@@ -56,7 +56,7 @@ public partial class CoreConfigV2rayService
|
||||
}
|
||||
else
|
||||
{
|
||||
_coreConfig.burstObservatory.subjectSelector ??= new();
|
||||
_coreConfig.burstObservatory.subjectSelector ??= [];
|
||||
_coreConfig.burstObservatory.subjectSelector.Add(baseTagName);
|
||||
}
|
||||
}
|
||||
@@ -75,7 +75,7 @@ public partial class CoreConfigV2rayService
|
||||
}
|
||||
else
|
||||
{
|
||||
_coreConfig.observatory.subjectSelector ??= new();
|
||||
_coreConfig.observatory.subjectSelector ??= [];
|
||||
_coreConfig.observatory.subjectSelector.Add(baseTagName);
|
||||
}
|
||||
}
|
||||
@@ -106,7 +106,7 @@ public partial class CoreConfigV2rayService
|
||||
tag = balancerTag,
|
||||
fallbackTag = multipleLoad == EMultipleLoad.Fallback ? Global.DirectTag : null,
|
||||
};
|
||||
_coreConfig.routing.balancers ??= new();
|
||||
_coreConfig.routing.balancers ??= [];
|
||||
_coreConfig.routing.balancers.Add(balancer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,10 +46,7 @@ public partial class CoreConfigV2rayService
|
||||
}
|
||||
|
||||
// Ensure routing node exists
|
||||
if (fullConfigTemplateNode["routing"] == null)
|
||||
{
|
||||
fullConfigTemplateNode["routing"] = new JsonObject();
|
||||
}
|
||||
fullConfigTemplateNode["routing"] ??= new JsonObject();
|
||||
|
||||
// Handle balancers - append instead of override
|
||||
if (fullConfigTemplateNode["routing"]["balancers"] is JsonArray customBalancersNode)
|
||||
|
||||
@@ -34,7 +34,7 @@ public partial class CoreConfigV2rayService
|
||||
return;
|
||||
}
|
||||
var simpleDnsItem = context.SimpleDnsItem;
|
||||
var dnsItem = _coreConfig.dns is Dns4Ray dns4Ray ? dns4Ray : new Dns4Ray();
|
||||
var dnsItem = _coreConfig.dns as Dns4Ray ?? new Dns4Ray();
|
||||
|
||||
var strategy4Freedom = simpleDnsItem?.Strategy4Freedom ?? Global.AsIs;
|
||||
//Outbound Freedom domainStrategy
|
||||
@@ -246,7 +246,7 @@ public partial class CoreConfigV2rayService
|
||||
|
||||
var useDirectDns = false;
|
||||
|
||||
if (rules?.LastOrDefault() is { } lastRule && lastRule.OutboundTag == Global.DirectTag)
|
||||
if (rules?.LastOrDefault() is { OutboundTag: Global.DirectTag } lastRule)
|
||||
{
|
||||
var noDomain = lastRule.Domain == null || lastRule.Domain.Count == 0;
|
||||
var noProcess = lastRule.Process == null || lastRule.Process.Count == 0;
|
||||
@@ -384,9 +384,11 @@ public partial class CoreConfigV2rayService
|
||||
var outbound = _coreConfig.outbounds.FirstOrDefault(t => t is { protocol: "freedom", tag: Global.DirectTag });
|
||||
if (outbound != null)
|
||||
{
|
||||
outbound.settings = new();
|
||||
outbound.settings.domainStrategy = domainStrategy4Freedom;
|
||||
outbound.settings.userLevel = 0;
|
||||
outbound.settings = new()
|
||||
{
|
||||
domainStrategy = domainStrategy4Freedom,
|
||||
userLevel = 0,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ public partial class CoreConfigV2rayService
|
||||
}
|
||||
inbound.tag = protocol.ToString();
|
||||
inbound.port = inItem.LocalPort + (int)protocol;
|
||||
inbound.protocol = EInboundProtocol.mixed.ToString();
|
||||
inbound.protocol = nameof(EInboundProtocol.mixed);
|
||||
inbound.settings.udp = inItem.UdpEnabled;
|
||||
inbound.sniffing.enabled = inItem.SniffingEnabled;
|
||||
inbound.sniffing.destOverride = inItem.DestOverride;
|
||||
|
||||
@@ -243,9 +243,9 @@ public partial class CoreConfigV2rayService
|
||||
version = 2,
|
||||
address = _node.Address,
|
||||
port = _node.Port,
|
||||
vnext = null,
|
||||
servers = null,
|
||||
};
|
||||
outbound.settings.vnext = null;
|
||||
outbound.settings.servers = null;
|
||||
break;
|
||||
}
|
||||
case EConfigType.WireGuard:
|
||||
@@ -450,14 +450,13 @@ public partial class CoreConfigV2rayService
|
||||
KcpSettings4Ray kcpSettings = new()
|
||||
{
|
||||
mtu = kcpMtu,
|
||||
tti = _config.KcpItem.Tti
|
||||
tti = _config.KcpItem.Tti,
|
||||
uplinkCapacity = _config.KcpItem.UplinkCapacity,
|
||||
downlinkCapacity = _config.KcpItem.DownlinkCapacity,
|
||||
cwndMultiplier = _config.KcpItem.CwndMultiplier,
|
||||
maxSendingWindow = _config.KcpItem.MaxSendingWindow,
|
||||
};
|
||||
|
||||
kcpSettings.uplinkCapacity = _config.KcpItem.UplinkCapacity;
|
||||
kcpSettings.downlinkCapacity = _config.KcpItem.DownlinkCapacity;
|
||||
|
||||
kcpSettings.cwndMultiplier = _config.KcpItem.CwndMultiplier;
|
||||
kcpSettings.maxSendingWindow = _config.KcpItem.MaxSendingWindow;
|
||||
var kcpFinalmask = new Finalmask4Ray();
|
||||
if (Global.KcpHeaderMaskMap.TryGetValue(headerType, out var header))
|
||||
{
|
||||
@@ -531,7 +530,7 @@ public partial class CoreConfigV2rayService
|
||||
break;
|
||||
//xhttp
|
||||
case nameof(ETransport.xhttp):
|
||||
streamSettings.network = ETransport.xhttp.ToString();
|
||||
streamSettings.network = nameof(ETransport.xhttp);
|
||||
XhttpSettings4Ray xhttpSettings = new();
|
||||
|
||||
if (path.IsNotEmpty())
|
||||
|
||||
@@ -6,7 +6,7 @@ public partial class CoreConfigV2rayService
|
||||
{
|
||||
if (_config.GuiItem.EnableStatistics || _config.GuiItem.DisplayRealTimeSpeed)
|
||||
{
|
||||
var tag = EInboundProtocol.api.ToString();
|
||||
const string tag = nameof(EInboundProtocol.api);
|
||||
Metrics4Ray apiObj = new();
|
||||
Policy4Ray policyObj = new();
|
||||
SystemPolicy4Ray policySystemSetting = new();
|
||||
|
||||
@@ -7,7 +7,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
private static readonly string _tag = "SpeedtestService";
|
||||
private readonly Config? _config = config;
|
||||
private readonly Func<SpeedTestResult, Task>? _updateFunc = updateFunc;
|
||||
private static readonly ConcurrentBag<string> _lstExitLoop = new();
|
||||
private static readonly ConcurrentBag<string> _lstExitLoop = [];
|
||||
private readonly int _speedTestPageSize = config.SpeedTestItem.SpeedTestPageSize ?? Global.SpeedTestPageSize;
|
||||
private readonly TimeSpan _delayInterval = TimeSpan.FromSeconds(config.SpeedTestItem.SpeedTestDelayInterval ?? 1);
|
||||
|
||||
@@ -33,7 +33,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
|
||||
private static bool ShouldStopTest(string exitLoopKey)
|
||||
{
|
||||
return !_lstExitLoop.Any(p => p == exitLoopKey);
|
||||
return _lstExitLoop.All(p => p != exitLoopKey);
|
||||
}
|
||||
|
||||
private async Task RunAsync(ESpeedActionType actionType, List<ProfileItem> selecteds)
|
||||
@@ -173,7 +173,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
}
|
||||
var lstTest = GetTestBatchItem(lstSelected, pageSize);
|
||||
|
||||
List<ServerTestItem> lstFailed = new();
|
||||
List<ServerTestItem> lstFailed = [];
|
||||
foreach (var lst in lstTest)
|
||||
{
|
||||
var ret = await RunRealPingAsync(lst, exitLoopKey);
|
||||
@@ -219,7 +219,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
}
|
||||
await Task.Delay(1000);
|
||||
|
||||
List<Task> tasks = new();
|
||||
List<Task> tasks = [];
|
||||
foreach (var it in selecteds)
|
||||
{
|
||||
if (!it.AllowTest)
|
||||
@@ -262,7 +262,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
}
|
||||
var lstTest = GetTestBatchItem(lstSelected, pageSize);
|
||||
|
||||
List<ServerTestItem> lstFailed = new();
|
||||
List<ServerTestItem> lstFailed = [];
|
||||
foreach (var lst in lstTest)
|
||||
{
|
||||
var ret = await RunUdpTestAsync(lst, exitLoopKey);
|
||||
@@ -300,7 +300,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
}
|
||||
await Task.Delay(1000);
|
||||
|
||||
List<Task> tasks = new();
|
||||
List<Task> tasks = [];
|
||||
foreach (var it in selecteds)
|
||||
{
|
||||
if (!it.AllowTest)
|
||||
@@ -338,7 +338,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
{
|
||||
using var concurrencySemaphore = new SemaphoreSlim(concurrencyCount);
|
||||
var downloadHandle = new DownloadService();
|
||||
List<Task> tasks = new();
|
||||
List<Task> tasks = [];
|
||||
foreach (var it in selecteds)
|
||||
{
|
||||
if (ShouldStopTest(exitLoopKey))
|
||||
@@ -489,7 +489,7 @@ public class SpeedtestService(Config config, Func<SpeedTestResult, Task> updateF
|
||||
|
||||
private List<List<ServerTestItem>> GetTestBatchItem(List<ServerTestItem> lstSelected, int pageSize)
|
||||
{
|
||||
List<List<ServerTestItem>> lstTest = new();
|
||||
List<List<ServerTestItem>> lstTest = [];
|
||||
var lst1 = lstSelected.Where(t => t.CoreType == ECoreType.Xray).ToList();
|
||||
var lst2 = lstSelected.Where(t => t.CoreType == ECoreType.sing_box).ToList();
|
||||
|
||||
|
||||
@@ -31,8 +31,7 @@ public sealed class WindowsJobService : IDisposable
|
||||
if (!SetInformationJobObject(handle, JobObjectInfoType.ExtendedLimitInformation, extendedInfoPtr,
|
||||
(uint)length))
|
||||
{
|
||||
throw new Exception(string.Format("Unable to set information. Error: {0}",
|
||||
Marshal.GetLastWin32Error()));
|
||||
throw new Exception($"Unable to set information. Error: {Marshal.GetLastWin32Error()}");
|
||||
}
|
||||
}
|
||||
finally
|
||||
|
||||
Reference in New Issue
Block a user