mirror of
https://github.com/netchx/netch.git
synced 2026-05-07 22:44:03 +08:00
Create PcapController
This commit is contained in:
@@ -164,7 +164,7 @@ namespace Netch.Controllers
|
||||
switch (State)
|
||||
{
|
||||
case State.Started:
|
||||
OnKeywordStarted();
|
||||
Task.Run(OnKeywordStarted);
|
||||
return;
|
||||
case State.Stopped:
|
||||
Stop();
|
||||
|
||||
55
Netch/Controllers/PcapController.cs
Normal file
55
Netch/Controllers/PcapController.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Netch.Models;
|
||||
|
||||
namespace Netch.Controllers
|
||||
{
|
||||
public class PcapController : Guard, IModeController
|
||||
{
|
||||
public override string Name { get; } = "pcap2socks";
|
||||
|
||||
public override string MainFile { get; protected set; } = "pcap2socks.exe";
|
||||
|
||||
protected override IEnumerable<string> StartedKeywords { get; } = new[] {"└"};
|
||||
|
||||
private readonly OutboundAdapter _outbound = new();
|
||||
|
||||
protected override Encoding? InstanceOutputEncoding { get; } = Encoding.UTF8;
|
||||
|
||||
public void Start(in Mode mode)
|
||||
{
|
||||
StartInstanceAuto($@"-i \Device\NPF_{_outbound.NetworkInterface.Id} {mode.FullRule.FirstOrDefault() ?? "-P n"}");
|
||||
}
|
||||
|
||||
protected override void OnKeywordStarted()
|
||||
{
|
||||
Thread.Sleep(300);
|
||||
Utils.Utils.Open(LogPath);
|
||||
}
|
||||
|
||||
protected override void OnKeywordStopped()
|
||||
{
|
||||
if (File.ReadAllText(LogPath).Length == 0)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
Utils.Utils.Open("https://github.com/zhxie/pcap2socks#dependencies");
|
||||
});
|
||||
|
||||
throw new MessageException("Pleases install pcap2socks's dependency");
|
||||
}
|
||||
|
||||
Utils.Utils.Open(LogPath);
|
||||
}
|
||||
|
||||
public override void Stop()
|
||||
{
|
||||
StopInstance();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -165,6 +165,8 @@ namespace Netch.Utils
|
||||
return new HTTPController();
|
||||
case 4:
|
||||
return null;
|
||||
case 6:
|
||||
return new PcapController();
|
||||
default:
|
||||
Logging.Error("未知模式类型");
|
||||
throw new MessageException("未知模式类型");
|
||||
|
||||
2
binaries
2
binaries
Submodule binaries updated: 3b545ea849...f9e9be00ae
2
modes
2
modes
Submodule modes updated: 13886adee6...5f346056a0
Reference in New Issue
Block a user