**Capture** is a reverse proxy that takes an incoming HTTP request and sends it to another server, proxying the response back to the client, while showing them in a dashboard. Forked from [ofabricio/capture](https://github.com/ofabricio/capture). [![status-badge](https://ci.gitnet.fr/api/badges/deblan/capture/status.svg)](https://ci.gitnet.fr/deblan/capture) ## Running ``` ./capture -url=https://example.com/ -port 9000 -dashboard 9001 -captures 16 ``` Via docker: ``` docker run -p 9000:9000 -p 9001:9001 deblan/capture -url=https://example.com/ -port 9000 -dashboard 9001 -captures 16 ``` #### Settings | param | description | | -------------- | ------------- | | `-url` | **Required.** Set the url you want to proxy | | `-port` | Set the proxy port. Default: *9000* | | `-dashboard` | Set the dashboard port. Default: *9001* | | `-captures` | Set how many captures to show in the dashboard. Default: *16* | | `-tls-skip-verify` | Skip TLS vertificaton. Default: *false* | | `-config` | Set the configuration file. Default: *.capture.ini* | You can create a file named `.capture.ini` and set the configuration inside: ``` url = https://example.com/ port = 9000 dashboard = 9001 captures = 16 tls_skip_verify = false ``` ## Using If you set your base url as `http://example.com/api`, now `http://localhost:9000` points to that address. Hence, calling `http://localhost:9000/users/1` is like calling `http://example.com/api/users/1` *Capture* saves all requests and responses so that you can see them in the dashboard. ## Dashboard To access the dashboard go to `http://127.0.0.1:9001/` ##### Preview ![dashboard](https://upload.deblan.org/u/2023-05/64746afd.png) ## Building Manually: ``` git clone --depth 1 https://gitnet.fr/deblan/capture.git cd capture go build ``` Via docker: ``` git clone --depth 1 https://gitnet.fr/deblan/capture.git cd capture docker run --rm -v $PWD:/src -w /src -e GOOS=darwin -e GOARCH=amd64 golang:alpine go build ``` Now you have an executable binary in your directory. **Note:** change `GOOS=darwin` to `linux` or `windows` to create an executable for your corresponding Operating System. ## Plugins Put [plugin](https://golang.org/pkg/plugin/) files in the current directory. They are loaded sorted by filename on startup. Plugins must export the following function: ```go func Handler(proxy http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { proxy(w, r) } } ```