Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jafarlihi/revp
Reverse HTTP proxy that works on Linux, Windows, and macOS. Made with C++ and Boost.
https://github.com/jafarlihi/revp
boost-asio http-proxy proxy reverse-proxy
Last synced: 3 months ago
JSON representation
Reverse HTTP proxy that works on Linux, Windows, and macOS. Made with C++ and Boost.
- Host: GitHub
- URL: https://github.com/jafarlihi/revp
- Owner: jafarlihi
- License: mit
- Created: 2020-05-21T18:36:39.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-06-24T18:34:56.000Z (over 4 years ago)
- Last Synced: 2024-04-12T19:38:48.730Z (7 months ago)
- Topics: boost-asio, http-proxy, proxy, reverse-proxy
- Language: C++
- Homepage:
- Size: 21.5 KB
- Stars: 85
- Watchers: 3
- Forks: 20
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-hacking-lists - jafarlihi/revp - Reverse HTTP proxy that works on Linux, Windows, and macOS. Made with C++ and Boost. (C++)
README
# revp
### Build
Run `make` and then use the resulting executable `revp.exe`.Note: revp also builds on Windows. Just create a new Visual Studio project and import the files.
### Instructions
Run `server` with `./revp.exe -s -l 5000 -p 6000`, where 5000 is where your `client` will connect and 6000 is where `proxy connections` will be serviced.Run `client` with `./revp.exe -c -a 192.168.1.1 -z 5000`, where 192.168.1.1 is your `server` address and 5000 is your chosen `server` port that listens for a `client`.
Open up a browser in your `server` instance and configure your HTTP proxy to port 6000, now you will be effectively browsing the Internet with `client`'s connection.
### Explanation
There are 3 components to revp: `server`, `client`, and `proxy connections`.`Server` listens for `client` and starts listening for `proxy connections` once `client` connects.
All `proxy connection` requests are routed to the `client` through the `server`.
`Proxy connections` are expected to make a first request of HTTP CONNECT and once connected they can exchange any data of any protocol with the destination address:port requested in the HTTP CONNECT. `Server` transparently routes all traffic from and to `client` and `client` routes all traffic from and to the remote destination.
What makes this a "reverse" proxy is the fact that the `client` initiates connection to the `server`, so there's no need to open ports or write firewall rules for the `client` whose network access you want to reach into -- you can basically run this on any network node whose firewall allows outbound traffic to your `server` port (essentially all firewall configurations found in the wild allow all outbound traffic).
### Options
```Options:
-h [ --help ] Help screen
-s [ --server ] Starts revp in server mode
-c [ --client ] Starts revp in client mode
-l [ --clientPort ] arg [Server mode] Port that listens for client
-p [ --proxyPort ] arg [Server mode] Port that listens for proxy connections
-a [ --serverAddress ] arg [Client mode] Address of server
-z [ --serverPort ] arg [Client mode] Port of server
```