- Rust 100%
| src | Improve readme | |
| .gitignore | wip: parsing works, getting proxy method and info works | |
| Cargo.lock | ft: reload config on SIGUSR1 | |
| Cargo.toml | ft: reload config on SIGUSR1 | |
| readme.md | Improve readme | |
snoyproxy
An HTTP proxy inspired by Tinyproxy, implemented largely as an excuse to experiment with Rust's async features.
HTTP proxying is an easy to use TCP proxying mechanism, well supported out of the box in Firefox, Chromium, wget, anything built on libcurl, ffmpeg, weechat etc.
It is not a 1:1 replacement for Tinyproxy. But for the most common use-case of a transparent proxy, it is a drop-in replacement and will respect your existing tinyproxy config.
Quickstart
Refer to the original quickstart docs for Tinyproxy.
Example config:
listen 10.200.200.1
port 8090
connectport 80
connectport 443
basicauth "user name" "pa ss wo rd"
Supported config options:
- Port
- Listen
- Timeout
- Allow/Deny (note: hostnames will not be supported)
- BasicAuth
- ConnectPort
Supported CLI options:
-c /path/to/config- By default,
/etc/snoyproxy.confand/etc/tinyproxy/tinyproxy.confare tried in order.
- By default,
-hfor help and-vto print version.
Supported signals:
SIGUSR1(for reloading the config file)
Unsupported
The following features originally present in Tinyproxy are not implemented in this project.
- Forwarding to other proxies.
- Features specific to plaintext-HTTP (reverse proxying, url filtering).
- Switching to another user/group after binding the socket.
- Consider running directly as the user you intend to run as.
- To bind on ports below 1024, consider lowering
net.ipv4.ip_unprivileged_port_startsysctl.
- Running as a daemon.
- Consider using a service manager like runit or openrc.
- Logging is currently quite basic and minimal, but might be improved as needed.
Author
Awal Garg https://awalgarg.me
License
This software is hereby released in the public domain.