From 060161522bc755771ba6e6214a45d0f8ca7ac76a Mon Sep 17 00:00:00 2001 From: Ivan Date: Fri, 26 Sep 2025 16:18:18 -0500 Subject: [PATCH] first commit --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..adbcbfd --- /dev/null +++ b/README.md @@ -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://: + # 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://: --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`