TunnelProxy
HTTP Server + PTY Shell Forwarder - A lightweight all-in-one tool for file serving, remote shell, and file upload.
Features
| Feature | Port | Description |
|---|---|---|
| Static File Server | 8080 | Browse and download files with directory listing |
| PTY Shell Forwarder | 27417 |
Interactive shell via nc connection |
| File Upload | 8080/upload | Upload via web page or curl command |
Installation
Option 1: Install from Hex
def deps do
[
{:tunnel_proxy, "~> 0.1.0"}
]
endOption 2: Build from Source
git clone https://github.com/TurinFohlen/tunnel_proxy.git
cd tunnel_proxy
mix deps.get
mix compileQuick Start
Start the Server
mix run --no-halt -e "TunnelProxy.Server.start(8080)"Expected output:
HTTP Server: 0.0.0.0:8080
PTY Forwarder: 0.0.0.0:27417
Doc Root: /path/to/current/www
Upload Dir: /path/to/current/uploadsConnect to Shell
nc 127.0.0.1 27417Type commands and get output:
$ pwd
/path/to/current
$ ls -la
...file list...
$ exitAccess Files
curl http://127.0.0.1:8080/Open in browser: http://127.0.0.1:8080/
Upload Files
Via curl:
curl -X POST http://127.0.0.1:8080/upload --data-binary @file.txtVia browser: Visit http://127.0.0.1:8080/upload, select file, click upload.
Configuration
Create config/config.exs or set environment variables:
config :tunnel_proxy,
http_port: 8080, # HTTP server port
pty_port: 27417, # Shell forwarder port
doc_root: "./www", # Static files directory
upload_dir: "./uploads" # Upload destinationEnvironment variables:
Variable Default Description SHELL /bin/sh Shell to use for PTY forwarder UPLOAD_MAGIC MY_MAGIC_2025_FILE_HEAD Magic word for upload validation
Use Cases
Termux / Android
cd /sdcard/Download/tunnel_proxy
mix run --no-halt -e "TunnelProxy.Server.start(8080)"With frp (Intranet Penetration)
# frpc.toml
[[proxies]]
name = "tunnel-http"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8080
[[proxies]]
name = "tunnel-shell"
type = "tcp"
localIP = "127.0.0.1"
localPort = 27417
remotePort = 27417Then access from anywhere:
nc your-frp-server.com 27417
curl http://your-frp-server.com:8080/Requirements
· Elixir 1.12+ · Erlang/OTP 24+
License
MIT License - see LICENSE file for details.
Author
TurinFohlen - GitHub
Contributing
Issues and pull requests are welcome.
Installation
If available in Hex, the package can be installed
by adding tunnel_proxy to your list of dependencies in mix.exs:
def deps do
[
{:tunnel_proxy, "~> 0.1.0"}
]
endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/tunnel_proxy.