Metadata-Version: 2.4
Name: py-simple-nat-tunnel
Version: 0.7.0
Summary: A small Python TCP reverse tunnel compatible with common frp/rathole config subsets.
Author: GGN_2015
License: MIT
Project-URL: Homepage, https://github.com/GGN-2015/py-frp
Project-URL: Repository, https://github.com/GGN-2015/py-frp
Project-URL: Issues, https://github.com/GGN-2015/py-frp/issues
Keywords: frp,rathole,reverse-proxy,tunnel,nat-traversal
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Framework :: AsyncIO
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
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: Topic :: Internet :: Proxy Servers
Classifier: Topic :: System :: Networking
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography==3.2.1; python_version < "3.7"
Requires-Dist: cryptography>=43.0.0; python_version >= "3.7"
Requires-Dist: packaging<22,>=21.3; python_version < "3.7"
Requires-Dist: packaging>=24.0; python_version >= "3.7"
Requires-Dist: py-admin-launch>=0.2.0
Requires-Dist: dataclasses>=0.8; python_version < "3.7"
Requires-Dist: importlib-metadata<5,>=4.8.3; python_version < "3.8"
Requires-Dist: tomli<2,>=1.2.3; python_version < "3.7"
Requires-Dist: tomli>=2.0.1; python_version >= "3.7" and python_version < "3.11"
Dynamic: license-file

# py-frp

A small Python TCP reverse tunnel for exposing a service behind NAT through a
public server. Python 3.6 and every later Python 3 release are supported.
Legacy Python releases and their compatible dependency lines may no longer be
maintained upstream; use a current Python release for security-sensitive
deployments.

## Quick Start

Install py-frp on both the public server and the private client:

```bash
pip install py-simple-nat-tunnel
```

Start the public server with the example configuration:

```bash
py-frp server -c examples/frps.toml
```

Start the private client and confirm that the TLS fingerprint matches the one
printed by the server:

```bash
py-frp client -c examples/frpc.toml
```

The example exposes the client's `127.0.0.1:22` as port `6000` on the public
server. Connect to it with:

```bash
ssh -p 6000 user@your-server
```

Replace `127.0.0.1`, the ports, and `change-me` in the example files before
using them outside a local test.

For every command, option, and supported configuration format, see the
[CLI manual](https://github.com/GGN-2015/py-frp/blob/main/docs/cli.md). The
[configless deployment tutorial](https://github.com/GGN-2015/py-frp/blob/main/docs/tutorial.md)
covers production setup and automatic update restart. For the tunnel lifecycle,
protocol, allocation, and security design, see the
[algorithm manual](https://github.com/GGN-2015/py-frp/blob/main/docs/algorithm.md).
