first commit

This commit is contained in:
2025-09-26 16:18:18 -05:00
commit 060161522b

70
README.md Normal file
View File

@@ -0,0 +1,70 @@
# RNS-over-HTTP
This Reticulum Interface allows using HTTP POST requests as a bidirectional transport layer. It consists of two parts: a client and a server. The server must have a public IP address and be accessible via HTTP. The client only needs internet access. One server can serve any number of clients.
## Features
- Bidirectional communication
- User-Agent check for security (optional)
- Automatic retry on connection failures
- Configurable polling interval
- MTU support for large data transfers
- Runs over standard HTTP ports (typically 80/443)
## Setup
Install dependencies:
```bash
pip install requests
```
## Configuration
1. Download http_interface.py to ~/.reticulum/interfaces/
2. Add a PipeInterface to your `~/.reticulum/config` file on both the server and the client.
### Client Configuration
```ini
[[HTTP Interface]]
type = PipeInterface
enabled = True
command = python3 /path/to/your/http_interface.py client --url http://<server-host>:<port>
# Optional: delay before respawn in seconds
respawn_delay = 2
# Optional: adjust polling interval (default 0.1s)
# command = python3 /path/to/your/http_interface.py client --url http://<server-host>:<port> --poll-interval 0.5
name = HTTP Interface
```
### Server Configuration
```ini
[[HTTP Interface]]
type = PipeInterface
enabled = True
command = python3 /path/to/your/http_interface.py server --host 0.0.0.0 --port 8080
# Optional: delay before respawn in seconds
respawn_delay = 2
name = HTTP Interface
```
### Options
- `--mtu`: Maximum transmission unit (default: 4096 bytes)
- `--poll-interval`: Client polling interval in seconds (default: 0.1)
- `--verbose`: Enable verbose logging
- `--host`: Server listen host (default: 0.0.0.0)
- `--port`: Server listen port (default: 8080)
- `--disable-user-agent-check`: Disable User-Agent validation (server mode only)
## Security
By default, the server validates that incoming requests include the correct User-Agent header (`RNS-HTTP-Tunnel/1.0`) which can be changed but make sure the users that use your server have the correct User-Agent header in the interface. This helps prevent:
- Web crawlers and bots from accessing the tunnel
- Casual browsing attempts
- Unauthorized data collection
You can disable this check with `--disable-user-agent-check`