move win/gatuna-client to gatuna-win, rename project to gatuna

- Directory: win/gatuna-client/ -> gatuna-win/
- Project file: gatuna-client.csproj -> gatuna.csproj
- Assembly name: gatuna-client -> gatuna
- Root namespace: gatuna_client -> gatuna
- All .cs files: namespace gatuna_client -> gatuna
- app.manifest: assemblyIdentity name -> gatuna
- README: updated all paths and references
This commit is contained in:
2026-08-13 08:43:11 +00:00
parent 5bbda4c4c4
commit 2f61f2bb1b
9 changed files with 24 additions and 24 deletions
+15 -16
View File
@@ -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 - **`gatunad`** — Rust server (`gatunad/`). Runs on the peer (Linux) that owns
the real services. Announces upstreams and relays TCP between the tunnel and the real services. Announces upstreams and relays TCP between the tunnel and
`127.0.0.1:<port>`. `127.0.0.1:<port>`.
- **`gatuna-client`** — .NET 8 WinForms client (`win/gatuna-client/`). Runs on - **`gatuna`** — .NET 8 WinForms client (`gatuna-win/`). Runs on the
the killswitched Windows box. Discovers the server, presents its upstreams as killswitched Windows box. Discovers the server, presents its upstreams as
local loopback listeners, and hauls bytes over the same L2 protocol. Includes local loopback listeners, and hauls bytes over the same L2 protocol. Includes
a network test (PING/PONG) for measuring latency, jitter, and loss. 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`), 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`). `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. 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 3. Click **Discover**. The server's hostname and MAC appear; the upstream list
populates. populates.
@@ -105,13 +105,13 @@ The binary is at `gatunad/target/release/gatunad`.
### Build the client (Windows) ### Build the client (Windows)
```powershell ```powershell
cd win\gatuna-client cd gatuna-win
dotnet build -c Release dotnet build -c Release
``` ```
Or run directly: Or run directly:
```powershell ```powershell
dotnet run --project win\gatuna-client -c Release dotnet run --project gatuna-win -c Release
``` ```
### Npcap ### Npcap
@@ -168,16 +168,15 @@ gatuna/
│ ├── frame.rs # wire protocol encode/decode │ ├── frame.rs # wire protocol encode/decode
│ ├── upstream.rs # cmdline parsing, hostname, upstream table │ ├── upstream.rs # cmdline parsing, hostname, upstream table
│ └── session.rs # session store, socket→tunnel pump │ └── session.rs # session store, socket→tunnel pump
└── win/ └── gatuna-win/ # .NET 8 WinForms client
── gatuna-client/ # .NET 8 WinForms client ── gatuna.csproj
├── gatuna-client.csproj ├── app.manifest # requireAdministrator
├── app.manifest # requireAdministrator ├── Program.cs # tray icon, entry point
├── Program.cs # tray icon, entry point ├── MainForm.cs # UI: adapter picker, discover, test, upstream list
├── MainForm.cs # UI: adapter picker, discover, test, upstream list ├── TunnelLink.cs # SharpPcap wrapper, raw Ethernet send/recv
├── TunnelLink.cs # SharpPcap wrapper, raw Ethernet send/recv ├── Frame.cs # wire protocol encode/decode (mirrors Rust frame.rs)
├── Frame.cs # wire protocol encode/decode (mirrors Rust frame.rs) ├── SessionManager.cs # session lifecycle, listeners, OPEN serialization
├── SessionManager.cs # session lifecycle, listeners, OPEN serialization └── PingTest.cs # PING/PONG network test with stats
└── PingTest.cs # PING/PONG network test with stats
``` ```
## License ## License
@@ -1,4 +1,4 @@
namespace gatuna_client; namespace gatuna;
using System.Text; using System.Text;
@@ -1,6 +1,6 @@
using SharpPcap.LibPcap; using SharpPcap.LibPcap;
namespace gatuna_client; namespace gatuna;
public partial class MainForm : Form public partial class MainForm : Form
{ {
@@ -1,6 +1,6 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
namespace gatuna_client; namespace gatuna;
sealed class PingTest sealed class PingTest
{ {
@@ -1,4 +1,4 @@
namespace gatuna_client; namespace gatuna;
static class Program static class Program
{ {
@@ -3,7 +3,7 @@ using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Threading.Channels; using System.Threading.Channels;
namespace gatuna_client; namespace gatuna;
sealed class SessionManager : IDisposable sealed class SessionManager : IDisposable
{ {
@@ -1,7 +1,7 @@
using SharpPcap; using SharpPcap;
using SharpPcap.LibPcap; using SharpPcap.LibPcap;
namespace gatuna_client; namespace gatuna;
sealed class TunnelLink : IDisposable sealed class TunnelLink : IDisposable
{ {
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="0.1.0.0" name="gatuna-client" /> <assemblyIdentity version="0.1.0.0" name="gatuna" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security> <security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
@@ -3,7 +3,8 @@
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework> <TargetFramework>net8.0-windows</TargetFramework>
<RootNamespace>gatuna_client</RootNamespace> <AssemblyName>gatuna</AssemblyName>
<RootNamespace>gatuna</RootNamespace>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>