From 80ed8346be4b3a4efd42a71c75ecc754c8d9700f Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sat, 6 Jan 2024 10:41:07 +0800 Subject: [PATCH] Bug fix --- v2rayN/v2rayN/Handler/CoreConfigSingbox.cs | 9 ++++++--- v2rayN/v2rayN/Handler/StatisticsHandler.cs | 14 ++++++-------- v2rayN/v2rayN/Handler/StatisticsV2ray.cs | 19 +++++++++++++------ v2rayN/v2rayN/Mode/SingboxConfig.cs | 17 +++++++++++++---- v2rayN/v2rayN/Tool/Utils.cs | 4 ++-- 5 files changed, 40 insertions(+), 23 deletions(-) diff --git a/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs b/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs index bf8c3f75..a42fe30c 100644 --- a/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs +++ b/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs @@ -776,18 +776,21 @@ namespace v2rayN.Handler { singboxConfig.experimental = new Experimental4Sbox() { + //cache_file = new CacheFile4Sbox() + //{ + // enabled = true + //}, //v2ray_api = new V2ray_Api4Sbox() //{ - // listen = $"{Global.Loopback}:{Global.statePort}", + // listen = $"{Global.Loopback}:{Global.StatePort}", // stats = new Stats4Sbox() // { // enabled = true, // } - //} + //}, clash_api = new Clash_Api4Sbox() { external_controller = $"{Global.Loopback}:{Global.StatePort}", - store_selected = true } }; } diff --git a/v2rayN/v2rayN/Handler/StatisticsHandler.cs b/v2rayN/v2rayN/Handler/StatisticsHandler.cs index 7e3f9dc0..c32a7d74 100644 --- a/v2rayN/v2rayN/Handler/StatisticsHandler.cs +++ b/v2rayN/v2rayN/Handler/StatisticsHandler.cs @@ -143,14 +143,12 @@ namespace v2rayN.Handler { return defaultPort; } - for (int i = 0; i < 3; i++) - { - TcpListener l = new(IPAddress.Loopback, 0); - l.Start(); - int port = ((IPEndPoint)l.LocalEndpoint).Port; - l.Stop(); - return port; - } + + TcpListener l = new(IPAddress.Loopback, 0); + l.Start(); + int port = ((IPEndPoint)l.LocalEndpoint).Port; + l.Stop(); + return port; } catch { diff --git a/v2rayN/v2rayN/Handler/StatisticsV2ray.cs b/v2rayN/v2rayN/Handler/StatisticsV2ray.cs index d2af9f2b..210e988f 100644 --- a/v2rayN/v2rayN/Handler/StatisticsV2ray.cs +++ b/v2rayN/v2rayN/Handler/StatisticsV2ray.cs @@ -8,8 +8,8 @@ namespace v2rayN.Handler internal class StatisticsV2ray { private Mode.Config _config; - private GrpcChannel _channel; - private StatsService.StatsServiceClient _client; + private GrpcChannel? _channel; + private StatsService.StatsServiceClient? _client; private bool _exitFlag; private Action _updateFunc; @@ -26,10 +26,17 @@ namespace v2rayN.Handler private void GrpcInit() { - if (_channel == null) + if (_channel is null) { - _channel = GrpcChannel.ForAddress($"{Global.HttpProtocol}{Global.Loopback}:{Global.StatePort}"); - _client = new StatsService.StatsServiceClient(_channel); + try + { + _channel = GrpcChannel.ForAddress($"{Global.HttpProtocol}{Global.Loopback}:{Global.StatePort}"); + _client = new StatsService.StatsServiceClient(_channel); + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } } } @@ -44,7 +51,7 @@ namespace v2rayN.Handler { try { - if (_channel.State == ConnectivityState.Ready) + if (_channel?.State == ConnectivityState.Ready) { QueryStatsResponse? res = null; try diff --git a/v2rayN/v2rayN/Mode/SingboxConfig.cs b/v2rayN/v2rayN/Mode/SingboxConfig.cs index aa0b6b68..07832fb1 100644 --- a/v2rayN/v2rayN/Mode/SingboxConfig.cs +++ b/v2rayN/v2rayN/Mode/SingboxConfig.cs @@ -180,8 +180,9 @@ public class Experimental4Sbox { - public V2ray_Api4Sbox v2ray_api { get; set; } - public Clash_Api4Sbox clash_api { get; set; } + public CacheFile4Sbox? cache_file { get; set; } + public V2ray_Api4Sbox? v2ray_api { get; set; } + public Clash_Api4Sbox? clash_api { get; set; } } public class V2ray_Api4Sbox @@ -192,8 +193,8 @@ public class Clash_Api4Sbox { - public string external_controller { get; set; } - public bool store_selected { get; set; } + public string? external_controller { get; set; } + public bool? store_selected { get; set; } } public class Stats4Sbox @@ -210,4 +211,12 @@ public string inet4_range { get; set; } public string inet6_range { get; set; } } + + public class CacheFile4Sbox + { + public bool enabled { get; set; } + public string? path { get; set; } + public string? cache_id { get; set; } + public bool? store_fakeip { get; set; } + } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Tool/Utils.cs b/v2rayN/v2rayN/Tool/Utils.cs index 15e87396..d14fb433 100644 --- a/v2rayN/v2rayN/Tool/Utils.cs +++ b/v2rayN/v2rayN/Tool/Utils.cs @@ -880,13 +880,13 @@ namespace v2rayN if (blFull) { return string.Format("v2rayN - V{0} - {1}", - FileVersionInfo.GetVersionInfo(location).FileVersion.ToString(), + FileVersionInfo.GetVersionInfo(location).FileVersion?.ToString(), File.GetLastWriteTime(location).ToString("yyyy/MM/dd")); } else { return string.Format("v2rayN/{0}", - FileVersionInfo.GetVersionInfo(location).FileVersion.ToString()); + FileVersionInfo.GetVersionInfo(location).FileVersion?.ToString()); } } catch (Exception ex)