An open API service indexing awesome lists of open source software.

https://github.com/somehowchris/peek-reverse-proxy

Simple reverse proxy to peek into requests
https://github.com/somehowchris/peek-reverse-proxy

api http hyper peek reverse-proxy rust

Last synced: 6 months ago
JSON representation

Simple reverse proxy to peek into requests

Awesome Lists containing this project

README

          

# peek reverse proxy

Sometimes you do not have a network traffic interceptor, proxy such as burp or F12 debug tools to inspect requests. This simple reverse proxy is a simple solution to that.
> DISCLAIMER: do not use this as a production ready thing, was never designed for this

## Purpose

Sometimes there are is just that one environment where you can't have a debug mode.

If you've mocked an API just to look at the request sent fear no more. This client lets you host a http listener to peek into request details such as bodies, queries, headers and proxy the request to the destination at the same time.

## Usage

### Install

You can use this crate via several distributions:
- `cargo install` via crates.io
- `cargo install` from source
- `docker`, `podman` or any OCI container runtime
- `cargo binstall`
- binaries from gh releases

#### Cargo binstall

To install this crate via `cargo-binstall`:
```sh
cargo binstall peek-reverse-proxy
```

#### Cargo

To install this crate via `cargo`:
```sh
cargo install peek-reverse-proxy
```

#### From Source

```
git clone https://github.com/somehowchris/peek-reverse-proxy.git

cd peek-reverse-proxy

cargo install --path .
```

#### Docker/Containers

```sh
docker pull ghcr.io/somehowchris/peek-reverse-proxy:0.1.12
```

### Run it

#### Installed binary

Once installed, you can run it via:
```sh
peek-reverse-proxy
```

##### Configuration

Env variables allow you to configure things to your needs:
- `HOST_ADDRESS`: address on which to listen on i.e. `0.0.0.0:8080`
- `DESTINATION_URL`: destination url including host and scheme i.e. `https://www.google.com`
- (optional) `LOG_LEVEL`: level of logs to log __off__, __debug__, __normal__, __critical__, defaults to `normal`
- (optional) `PRINT_STYLE`: print style for logs, either __json__ (outputs everything in json style), __plain__ (outputs everything in standard log formats but has no json field formatting), __pretty__ (just as plain, but formats outputs of json fields with serde_jsons pretty option), defaults to `pretty`

For example:

```sh
export HOST_ADDRESS="0.0.0.0:8080"
export DESTINATION_URL="https://www.google.com"
export PRINT_STYLE="json"
export LOG_LEVEL="normal"

peek-reverse-proxy
```

#### Docker

```sh
docker run -e HOST_ADDRESS="0.0.0.0:8080" -e DESTINATION_URL="https://www.google.com" -p 8080:8080 ghcr.io/somehowchris/peek-reverse-proxy:0.1.12
```