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)