From 192a00b1a9ca890c5ea85859e831dd36d1f597e9 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Sat, 20 Feb 2021 16:19:57 +0800 Subject: [PATCH] Fix StartedKeywords StoppedKeywords values --- Netch/Controllers/Guard.cs | 20 +++++++++++++------- Netch/Controllers/TUNTAPController.cs | 9 ++++----- Netch/Servers/Shadowsocks/SSController.cs | 7 +++++-- Netch/Servers/ShadowsocksR/SSRController.cs | 5 +++++ Netch/Servers/Trojan/TrojanController.cs | 9 +++------ Netch/Servers/V2ray/V2rayController.cs | 11 ++++++----- 6 files changed, 36 insertions(+), 25 deletions(-) diff --git a/Netch/Controllers/Guard.cs b/Netch/Controllers/Guard.cs index bae37183..5bd1e96d 100644 --- a/Netch/Controllers/Guard.cs +++ b/Netch/Controllers/Guard.cs @@ -18,20 +18,21 @@ namespace Netch.Controllers private readonly StringBuilder _logBuffer = new(); + /// + /// 日志文件(重定向输出文件) + /// + private string _logPath; + /// /// 成功启动关键词 /// - protected readonly List StartedKeywords = new(); + protected virtual IEnumerable StartedKeywords { get; } = null; /// /// 启动失败关键词 /// - protected readonly List StoppedKeywords = new(); + protected virtual IEnumerable StoppedKeywords { get; } = null; - /// - /// 日志文件(重定向输出文件) - /// - private string _logPath; public virtual string Name { get; } /// @@ -139,7 +140,12 @@ namespace Netch.Controllers Instance.BeginErrorReadLine(); SaveBufferTimer.Elapsed += SaveBufferTimerEvent; SaveBufferTimer.Enabled = true; - if (StartedKeywords.Count == 0) return; + if (!(StartedKeywords?.Any() ?? false)) + { + State = State.Started; + return; + } + // 等待启动 for (var i = 0; i < 1000; i++) { diff --git a/Netch/Controllers/TUNTAPController.cs b/Netch/Controllers/TUNTAPController.cs index 5bb5f9f1..cdbd297f 100644 --- a/Netch/Controllers/TUNTAPController.cs +++ b/Netch/Controllers/TUNTAPController.cs @@ -28,11 +28,10 @@ namespace Netch.Controllers /// public DNSController DNSController = new(); - public TUNTAPController() - { - StartedKeywords.Add("Running"); - StoppedKeywords.AddRange(new[] {"failed", "invalid vconfig file"}); - } + protected override IEnumerable StartedKeywords { get; } = new[] {"Running"}; + + protected override IEnumerable StoppedKeywords { get; } = new[] {"failed", "invalid vconfig file"}; + public override string MainFile { get; protected set; } = "tun2socks.exe"; public override string Name { get; } = "tun2socks"; diff --git a/Netch/Servers/Shadowsocks/SSController.cs b/Netch/Servers/Shadowsocks/SSController.cs index 47745570..63307201 100644 --- a/Netch/Servers/Shadowsocks/SSController.cs +++ b/Netch/Servers/Shadowsocks/SSController.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using System.Text; @@ -11,6 +12,10 @@ namespace Netch.Servers.Shadowsocks { public bool DllFlag; public override string MainFile { get; protected set; } = "Shadowsocks.exe"; + + protected override IEnumerable StartedKeywords { get; } = new[] {"listening at"}; + + protected override IEnumerable StoppedKeywords { get; } = new[] {"Invalid config path", "usage", "plugin service exit unexpectedly"}; public override string Name { get; } = "Shadowsocks"; public ushort? Socks5LocalPort { get; set; } @@ -64,9 +69,7 @@ namespace Netch.Servers.Shadowsocks argument.Append($" --plugin {server.Plugin}" + $" --plugin-opts \"{server.PluginOption}\""); if (mode.BypassChina) - { argument.Append($" --acl {Path.GetFullPath(File.Exists(Global.UserACL) ? Global.UserACL : Global.BuiltinACL)}"); - } #endregion diff --git a/Netch/Servers/ShadowsocksR/SSRController.cs b/Netch/Servers/ShadowsocksR/SSRController.cs index bd316a46..71f027cd 100644 --- a/Netch/Servers/ShadowsocksR/SSRController.cs +++ b/Netch/Servers/ShadowsocksR/SSRController.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.IO; using System.Text; using Netch.Controllers; @@ -9,6 +10,10 @@ namespace Netch.Servers.ShadowsocksR { public override string MainFile { get; protected set; } = "ShadowsocksR.exe"; + protected override IEnumerable StartedKeywords { get; } = new[] {"listening at"}; + + protected override IEnumerable StoppedKeywords { get; } = new[] {"Invalid config path", "usage"}; + public override string Name { get; } = "ShadowsocksR"; public ushort? Socks5LocalPort { get; set; } diff --git a/Netch/Servers/Trojan/TrojanController.cs b/Netch/Servers/Trojan/TrojanController.cs index 5a7b9564..3e574f71 100644 --- a/Netch/Servers/Trojan/TrojanController.cs +++ b/Netch/Servers/Trojan/TrojanController.cs @@ -9,14 +9,11 @@ namespace Netch.Servers.Trojan { public class TrojanController : Guard, IServerController { - public TrojanController() - { - StartedKeywords.Add("started"); - StoppedKeywords.Add("exiting"); - } - public override string MainFile { get; protected set; } = "Trojan.exe"; + protected override IEnumerable StartedKeywords { get; } = new[] {"started"}; + protected override IEnumerable StoppedKeywords { get; } = new[] {"exiting"}; public override string Name { get; } = "Trojan"; + public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } diff --git a/Netch/Servers/V2ray/V2rayController.cs b/Netch/Servers/V2ray/V2rayController.cs index 0725425d..e42f60b4 100644 --- a/Netch/Servers/V2ray/V2rayController.cs +++ b/Netch/Servers/V2ray/V2rayController.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.IO; using Netch.Controllers; using Netch.Models; @@ -7,14 +8,14 @@ namespace Netch.Servers.V2ray { public class V2rayController : Guard, IServerController { - public V2rayController() - { - StartedKeywords.Add("started"); - StoppedKeywords.AddRange(new[] {"config file not readable", "failed to"}); - } public override string MainFile { get; protected set; } = "xray.exe"; + protected override IEnumerable StartedKeywords { get; } = new[] {"started"}; + + protected override IEnumerable StoppedKeywords { get; } = new[] {"config file not readable", "failed to"}; + public override string Name { get; } = "Xray"; + public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } public virtual void Start(in Server s, in Mode mode)