-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: change nanoproxy from webproxy to socks5 proxy
- Loading branch information
1 parent
982e440
commit a389e04
Showing
29 changed files
with
1,376 additions
and
818 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +0,0 @@ | ||
ADDR= | ||
PROTO= | ||
PEM= | ||
KEY= | ||
TIMEOUT= | ||
AUTH= | ||
TZ= | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
FROM busybox:1.36.1-glibc | ||
|
||
WORKDIR /root | ||
COPY nanoproxy /usr/local/bin/nanoproxy | ||
COPY nanoproxy /usr/bin/nanoproxy | ||
EXPOSE 1080 | ||
|
||
ENTRYPOINT ["nanoproxy"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,8 +3,12 @@ | |
![coverage](https://raw.githubusercontent.com/ryanbekhen/nanoproxy/badges/.badges/master/coverage.svg) | ||
[![Go Report Card](https://goreportcard.com/badge/github.com/ryanbekhen/nanoproxy?cache=v1)](https://goreportcard.com/report/github.com/vladopajic/go-test-coverage) | ||
|
||
NanoProxy is a lightweight HTTP proxy server designed to provide basic proxying functionality. | ||
It supports handling HTTP requests and tunneling for HTTPS. NanoProxy is written in Go and built on top of Fiber. | ||
Note: This code includes modifications from the original go-socks5 project (https://github.com/armon/go-socks5) | ||
Modifications have been made as part of maintenance for NanoProxy. | ||
This version is licensed under the MIT license. | ||
|
||
NanoProxy is a lightweight SOCKS5 proxy server written in Go. It is designed to be simple, minimalistic, and easy to | ||
use. | ||
|
||
> ⚠️ **Notice:** NanoProxy is currently in pre-production stage. While it provides essential proxying capabilities, | ||
> please be aware that it is still under active development. Full backward compatibility is not guaranteed until | ||
|
@@ -13,10 +17,10 @@ It supports handling HTTP requests and tunneling for HTTPS. NanoProxy is written | |
## Data Flow Through Proxy | ||
|
||
NanoProxy acts as an intermediary between user requests and the destination server. When a user makes a request, | ||
NanoProxy forwards the request to the destination server. The destination server processes the request and responds | ||
back to NanoProxy, which then sends the response back to the user. This allows NanoProxy to intercept and manage | ||
network traffic effectively. | ||
NanoProxy acts as a proxy server that forwards network traffic between the user and the destination server. | ||
When a user makes a request, the request is sent to the proxy server. The proxy server then forwards the request to | ||
the destination server. The destination server processes the request and responds back to the proxy server, which then | ||
sends the response back to the user. This allows the proxy server to intercept and manage network traffic effectively. | ||
|
||
Here's how the data flows through the proxy: | ||
|
||
|
@@ -30,25 +34,23 @@ Here's how the data flows through the proxy: | |
`-----------------' | ||
``` | ||
|
||
This clear separation of responsibilities helps optimize network communication and enables various | ||
proxy-related functionalities. | ||
This clear separation of responsibilities helps optimize network communication and enables various proxy-related | ||
functionalities. | ||
|
||
## Features | ||
|
||
- **Simple and minimalistic HTTP proxy server.** NanoProxy is designed with simplicity in mind, making it easy to set | ||
up and use for various purposes. | ||
- **Handles both HTTP requests and tunneling (CONNECT) for HTTPS.** NanoProxy supports both HTTP requests and tunneling, | ||
allowing you to proxy regular HTTP requests as well as secure HTTPS connections. | ||
- **Lightweight and easy to configure.** With a small footprint and straightforward configuration options, NanoProxy is | ||
a lightweight solution that can be quickly configured to suit your needs. | ||
NanoProxy provides the following features: | ||
|
||
- **SOCKS5 proxy server.** NanoProxy is a SOCKS5 proxy server that can be used to proxy network traffic for various | ||
applications. | ||
|
||
## Installation | ||
|
||
You can easily install NanoProxy using your package manager by adding the official NanoProxy repository. | ||
|
||
### Debian and Ubuntu | ||
|
||
Add the NanoProxy repository to your sources list: | ||
Add the NanoProxy repository to your source list: | ||
|
||
```shell | ||
echo "deb [trusted=yes] https://repo.ryanbekhen.dev/apt/ /" | sudo tee /etc/apt/sources.list.d/ryanbekhen.list | ||
|
@@ -83,7 +85,7 @@ sudo yum install nanoproxy | |
|
||
## Usage | ||
|
||
After installing NanoProxy using the provided packages (.deb or .rpm) or accessed it through the repository, | ||
After installing NanoProxy using the provided packages (.deb or .rpm) or accessing it through the repository, | ||
you can manage NanoProxy as a service using the system's service management tool (systemd). To enable NanoProxy to start | ||
automatically on system boot, run the following command: | ||
|
||
|
@@ -104,35 +106,35 @@ sudo systemctl start nanoproxy | |
You can also run NanoProxy using Docker. To do so, you can use the following command: | ||
|
||
```shell | ||
docker run -p 8080:8080 ghcr.io/ryanbekhen/nanoproxy:latest | ||
docker run -p 1080:1080 ghcr.io/ryanbekhen/nanoproxy:latest | ||
``` | ||
|
||
## Configuration | ||
|
||
You can modify the behavior of NanoProxy by adjusting the command line flags when running the proxy. The available flags are: | ||
|
||
- `-addr`: Proxy listen address (default: :8080). | ||
- `-pem`: Path to the PEM file for TLS (HTTPS) support. | ||
- `-key`: Path to the private key file for TLS. | ||
- `-proto`: Proxy protocol `http` or `https`. If set to `https`, the `-pem` and `-key` flags must be set. | ||
- `-timeout`: Timeout duration for tunneling connections (default: 15 seconds). | ||
- `-auth`: Basic authentication credentials in the form of `username:password`. | ||
- `-debug`: Enable debug mode. | ||
|
||
You can set the configuration using environment variables. Create a file | ||
at `/etc/nanoproxy/nanoproxy.env` and add the desired values: | ||
You can also set the configuration using environment variables. Create a file at `/etc/nanoproxy/nanoproxy` and add the | ||
desired values: | ||
|
||
```text | ||
ADDR=:8080 | ||
PROTO=http | ||
PEM=server.pem | ||
KEY=server.key | ||
TIMEOUT=15s | ||
AUTH=user:pass | ||
NETWORK=tcp | ||
TZ=Asia/Jakarta | ||
``` | ||
|
||
Modify these flags or environment variables according to your requirements. | ||
The following table lists the available configuration options: | ||
|
||
| Name | Description | Default Value | | ||
|------|-------------|---------------| | ||
| ADDR | The address to listen on. | `:1080` | | ||
| NETWORK | The network to listen on. | `tcp` | | ||
| TZ | The timezone to use. | `Local` | | ||
|
||
## Logging | ||
|
||
NanoProxy logs all requests and responses to the standard output. You can use the `journalctl` command to view the logs: | ||
|
||
```shell | ||
journalctl -u nanoproxy | ||
``` | ||
|
||
## Testing | ||
|
||
|
@@ -155,8 +157,8 @@ Contributions are welcome! Feel free to open issues and submit pull requests. | |
|
||
## Security | ||
|
||
If you discover any security related issues, please email [email protected] instead of using the issue tracker. | ||
If you discover any security-related issues, please email [email protected] instead of using the issue tracker. | ||
|
||
## License | ||
|
||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. | ||
This project is licensed under the MIT License—see the [LICENSE](LICENSE) file for details. |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,27 @@ | ||
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= | ||
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= | ||
github.com/caarlos0/env/v10 v10.0.0 h1:yIHUBZGsyqCnpTkbjk8asUlx6RFhhEs+h7TOBdgdzXA= | ||
github.com/caarlos0/env/v10 v10.0.0/go.mod h1:ZfulV76NvVPw3tm591U4SwL3Xx9ldzBP9aGxzeN7G18= | ||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= | ||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= | ||
github.com/gofiber/contrib/fiberzerolog v0.2.2 h1:tvHBW5k+udW02LU1eNneh65znGwhsKcv8XWf22U7dlc= | ||
github.com/gofiber/contrib/fiberzerolog v0.2.2/go.mod h1:CSpu4UUPGWAA/jIIuHXIhJt3W1cRxprxupXndAYuvpU= | ||
github.com/gofiber/fiber/v2 v2.49.2 h1:ONEN3/Vc+dUCxxDgZZwpqvhISgHqb+bu+isBiEyKEQs= | ||
github.com/gofiber/fiber/v2 v2.49.2/go.mod h1:gNsKnyrmfEWFpJxQAV0qvW6l70K1dZGno12oLtukcts= | ||
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= | ||
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||
github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= | ||
github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= | ||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= | ||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= | ||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= | ||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= | ||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= | ||
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= | ||
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | ||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= | ||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | ||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | ||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= | ||
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= | ||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= | ||
github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= | ||
github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w= | ||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= | ||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= | ||
github.com/valyala/fasthttp v1.50.0 h1:H7fweIlBm0rXLs2q0XbalvJ6r0CUPFWK3/bB4N13e9M= | ||
github.com/valyala/fasthttp v1.50.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= | ||
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= | ||
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= | ||
github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= | ||
github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= | ||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= | ||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= | ||
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= |
Oops, something went wrong.