refactor: NetTraffic record pid

fix: #399
This commit is contained in:
ChsBuffer
2020-10-11 00:51:41 +08:00
parent 45b6352553
commit a49e280e03
3 changed files with 27 additions and 14 deletions

View File

@@ -184,6 +184,8 @@ namespace Netch.Controllers
Task.Run(() => ModeController?.Stop()),
};
await Task.WhenAll(tasks);
ModeController = null;
ServerController = null;
}

View File

@@ -14,16 +14,16 @@ namespace Netch.Servers.Shadowsocks
public int? Socks5LocalPort { get; set; }
public string LocalAddress { get; set; }
private Mode _savedMode;
public bool DllFlag => Global.Settings.BootShadowsocksFromDLL && (_savedMode.Type == 0 || _savedMode.Type == 1 || _savedMode.Type == 2);
public bool Start(Server s, Mode mode)
{
bool DllFlag()
{
return Global.Settings.BootShadowsocksFromDLL && (mode.Type == 0 || mode.Type == 1 || mode.Type == 2);
}
_savedMode = mode;
var server = (Shadowsocks) s;
//从DLL启动Shaowsocks
if (DllFlag())
if (DllFlag)
{
State = State.Starting;
var client = Encoding.UTF8.GetBytes($"{LocalAddress ?? Global.Settings.LocalAddress}:{Socks5LocalPort ?? Global.Settings.Socks5LocalPort}");
@@ -79,6 +79,7 @@ namespace Netch.Servers.Shadowsocks
ShadowsocksDLL.Stop();
else
StopInstance();
_savedMode = null;
}

View File

@@ -7,6 +7,7 @@ using Microsoft.Diagnostics.Tracing.Parsers;
using Microsoft.Diagnostics.Tracing.Session;
using Netch.Controllers;
using Netch.Models;
using Netch.Servers.Shadowsocks;
namespace Netch.Utils
{
@@ -66,20 +67,29 @@ namespace Netch.Utils
{
instances.Add(((HTTPController) MainController.ModeController).pPrivoxyController.Instance);
}
else if (server.Type.Equals("SS") && Global.Settings.BootShadowsocksFromDLL &&
(mode.Type == 0 || mode.Type == 1 || mode.Type == 2))
{
instances.Add(Process.GetCurrentProcess());
}
else if (MainController.ServerController != null)
{
if (MainController.ServerController is Guard instanceController)
instances.Add(instanceController.Instance);
switch (MainController.ServerController)
{
case SSController ssController when ssController.DllFlag:
instances.Add(Process.GetCurrentProcess());
break;
case Guard instanceController:
instances.Add(instanceController.Instance);
break;
}
}
else if (MainController.ModeController != null)
{
if (MainController.ModeController is Guard instanceController)
instances.Add(instanceController.Instance);
switch (MainController.ModeController)
{
case NFController _:
instances.Add(Process.GetCurrentProcess());
break;
case Guard instanceController:
instances.Add(instanceController.Instance);
break;
}
}
var processList = instances.Select(instance => instance.Id).ToList();