Metadata-Version: 2.5
Name: wow-client
Version: 1.3.1
Summary: WoW VPN client: TLS tunnel to the server with a local TUN device
Project-URL: Documentation, https://github.com/zaf-x/WoW#readme
Project-URL: Issues, https://github.com/zaf-x/WoW/issues
Project-URL: Source, https://github.com/zaf-x/WoW
Author-email: zaf-x <baoshuwen2013@outlook.com>
License-Expression: MIT
License-File: LICENSE.txt
Keywords: client,tun,tunnel,vpn
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.10
Requires-Dist: rich
Requires-Dist: wow-common
Description-Content-Type: text/markdown

# wow-client

[![PyPI - Version](https://img.shields.io/pypi/v/wow-client.svg)](https://pypi.org/project/wow-client)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/wow-client.svg)](https://pypi.org/project/wow-client)

[English](README.md) | [中文](README.zh-CN.md)

The client for the [WoW VPN](https://github.com/zaf-x/WoW) project
(https://github.com/zaf-x/WoW). Connects to the server over TLS,
authenticates with a 128-bit token, sets up a local TUN device and
routes traffic through the tunnel. A live status panel shows transfer
rates and client↔server / client↔internet latency.

Requires Linux and root (TUN device + raw ICMP socket for the latency
probe).

## Usage

```bash
# connect directly (trust a custom CA with -c ca.pem)
sudo wow-client start -s vpn.example.com -p 9999 -t <32-hex-chars>

# save servers as named profiles, then pick one interactively
sudo wow-client save myserver -s vpn.example.com -p 9999 -t <32-hex-chars>
sudo wow-client launch
```

> If `sudo` reports `wow-client: command not found`, the binary lives
> outside sudo's PATH (e.g. a pipx or `--user` install in `~/.local/bin`) —
> run `sudo "$(which wow-client)" ...` instead.

## Options

| Subcommand | Flag | Description |
| --- | --- | --- |
| `start`, `save` | `-s`, `--host <host>` | VPN server hostname or address (required) |
| | `-p`, `--port <n>` | VPN server port (required) |
| | `-t`, `--token <hex>` | 128-bit authentication token, 32 hex chars (required) |
| | `-c`, `--ca-cert <file>` | PEM CA certificate to trust for verifying the server (default: system CA bundle) |
| | `--mtu <n>` | TUN device MTU (default: 1200 — fits the server's NAT egress path; raise only when the egress is known larger) |
| | `--no-panel` | Disable the live status panel (useful for debugging, keeps logs visible) |
| `save` | `name` | Profile name to save the server under (positional argument) |
| `launch` | — | Pick a saved profile interactively and connect |

## Profiles

Profiles are stored in `$XDG_CONFIG_HOME/wow-client/config.json`
(`~/.config/wow-client/config.json` by default), readable only by the
owner:

```json
{
  "profiles": {
    "myserver": {
      "host": "vpn.example.com",
      "port": 443,
      "token": "<32-hex-chars>",
      "ca_cert": null,
      "mtu": 1200
    }
  }
}
```

`ca_cert` may be a path to a PEM CA certificate, or `null` to use the
system default CA bundle. `mtu` is the TUN device MTU (default 1200).
The file can also be edited by hand.

## Install

```bash
pip install .
```

## License

`wow-client` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
