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:
@@ -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>
|
||||||
Reference in New Issue
Block a user