diff --git a/README.md b/README.md index 9ed1df3..824b3ce 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ pass unimpeded. See `wireguard-windows/tunnel/firewall/blocker.go:156`. - **`gatunad`** — Rust server (`gatunad/`). Runs on the peer (Linux) that owns the real services. Announces upstreams and relays TCP between the tunnel and `127.0.0.1:`. -- **`gatuna-client`** — .NET 8 WinForms client (`win/gatuna-client/`). Runs on - the killswitched Windows box. Discovers the server, presents its upstreams as +- **`gatuna`** — .NET 8 WinForms client (`gatuna-win/`). Runs on the + killswitched Windows box. Discovers the server, presents its upstreams as local loopback listeners, and hauls bytes over the same L2 protocol. Includes a network test (PING/PONG) for measuring latency, jitter, and loss. @@ -65,9 +65,9 @@ sudo ./gatunad eth0 22 8800:site-a 8080:site-b Exposes upstreams `1→127.0.0.1:22`, `2→127.0.0.1:8800` (label `site-a`), `3→127.0.0.1:8080` (label `site-b`). -## `gatuna-client` usage +## `gatuna` usage -1. Launch `gatuna-client.exe` (UAC prompt expected — Npcap requires admin). +1. Launch `gatuna.exe` (UAC prompt expected — Npcap requires admin). 2. Select the network adapter connected to the same L2 segment as the server. 3. Click **Discover**. The server's hostname and MAC appear; the upstream list populates. @@ -105,13 +105,13 @@ The binary is at `gatunad/target/release/gatunad`. ### Build the client (Windows) ```powershell -cd win\gatuna-client +cd gatuna-win dotnet build -c Release ``` Or run directly: ```powershell -dotnet run --project win\gatuna-client -c Release +dotnet run --project gatuna-win -c Release ``` ### Npcap @@ -168,16 +168,15 @@ gatuna/ │ ├── frame.rs # wire protocol encode/decode │ ├── upstream.rs # cmdline parsing, hostname, upstream table │ └── session.rs # session store, socket→tunnel pump -└── win/ - └── gatuna-client/ # .NET 8 WinForms client - ├── gatuna-client.csproj - ├── app.manifest # requireAdministrator - ├── Program.cs # tray icon, entry point - ├── MainForm.cs # UI: adapter picker, discover, test, upstream list - ├── TunnelLink.cs # SharpPcap wrapper, raw Ethernet send/recv - ├── Frame.cs # wire protocol encode/decode (mirrors Rust frame.rs) - ├── SessionManager.cs # session lifecycle, listeners, OPEN serialization - └── PingTest.cs # PING/PONG network test with stats +└── gatuna-win/ # .NET 8 WinForms client + ├── gatuna.csproj + ├── app.manifest # requireAdministrator + ├── Program.cs # tray icon, entry point + ├── MainForm.cs # UI: adapter picker, discover, test, upstream list + ├── TunnelLink.cs # SharpPcap wrapper, raw Ethernet send/recv + ├── Frame.cs # wire protocol encode/decode (mirrors Rust frame.rs) + ├── SessionManager.cs # session lifecycle, listeners, OPEN serialization + └── PingTest.cs # PING/PONG network test with stats ``` ## License diff --git a/win/gatuna-client/Frame.cs b/gatuna-win/Frame.cs similarity index 99% rename from win/gatuna-client/Frame.cs rename to gatuna-win/Frame.cs index 34b662b..b89a361 100644 --- a/win/gatuna-client/Frame.cs +++ b/gatuna-win/Frame.cs @@ -1,4 +1,4 @@ -namespace gatuna_client; +namespace gatuna; using System.Text; diff --git a/win/gatuna-client/MainForm.cs b/gatuna-win/MainForm.cs similarity index 99% rename from win/gatuna-client/MainForm.cs rename to gatuna-win/MainForm.cs index 51fd8f2..595d574 100644 --- a/win/gatuna-client/MainForm.cs +++ b/gatuna-win/MainForm.cs @@ -1,6 +1,6 @@ using SharpPcap.LibPcap; -namespace gatuna_client; +namespace gatuna; public partial class MainForm : Form { diff --git a/win/gatuna-client/PingTest.cs b/gatuna-win/PingTest.cs similarity index 99% rename from win/gatuna-client/PingTest.cs rename to gatuna-win/PingTest.cs index 82300f7..3c4ea37 100644 --- a/win/gatuna-client/PingTest.cs +++ b/gatuna-win/PingTest.cs @@ -1,6 +1,6 @@ using System.Collections.Concurrent; -namespace gatuna_client; +namespace gatuna; sealed class PingTest { diff --git a/win/gatuna-client/Program.cs b/gatuna-win/Program.cs similarity index 97% rename from win/gatuna-client/Program.cs rename to gatuna-win/Program.cs index adbbc0d..59acfcf 100644 --- a/win/gatuna-client/Program.cs +++ b/gatuna-win/Program.cs @@ -1,4 +1,4 @@ -namespace gatuna_client; +namespace gatuna; static class Program { diff --git a/win/gatuna-client/SessionManager.cs b/gatuna-win/SessionManager.cs similarity index 99% rename from win/gatuna-client/SessionManager.cs rename to gatuna-win/SessionManager.cs index 7b59d3e..f667e59 100644 --- a/win/gatuna-client/SessionManager.cs +++ b/gatuna-win/SessionManager.cs @@ -3,7 +3,7 @@ using System.Net; using System.Net.Sockets; using System.Threading.Channels; -namespace gatuna_client; +namespace gatuna; sealed class SessionManager : IDisposable { diff --git a/win/gatuna-client/TunnelLink.cs b/gatuna-win/TunnelLink.cs similarity index 99% rename from win/gatuna-client/TunnelLink.cs rename to gatuna-win/TunnelLink.cs index 4880303..d4ea6c0 100644 --- a/win/gatuna-client/TunnelLink.cs +++ b/gatuna-win/TunnelLink.cs @@ -1,7 +1,7 @@ using SharpPcap; using SharpPcap.LibPcap; -namespace gatuna_client; +namespace gatuna; sealed class TunnelLink : IDisposable { diff --git a/win/gatuna-client/app.manifest b/gatuna-win/app.manifest similarity index 86% rename from win/gatuna-client/app.manifest rename to gatuna-win/app.manifest index cd4567a..ba80e1c 100644 --- a/win/gatuna-client/app.manifest +++ b/gatuna-win/app.manifest @@ -1,6 +1,6 @@ - + diff --git a/win/gatuna-client/gatuna-client.csproj b/gatuna-win/gatuna.csproj similarity index 84% rename from win/gatuna-client/gatuna-client.csproj rename to gatuna-win/gatuna.csproj index 4caada3..4229f06 100644 --- a/win/gatuna-client/gatuna-client.csproj +++ b/gatuna-win/gatuna.csproj @@ -3,7 +3,8 @@ WinExe net8.0-windows - gatuna_client + gatuna + gatuna enable true enable