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

https://github.com/mdouchement/ergo

Ergo is an HTTP/HTTPS proxy with authentication support. Works at TCP level.
https://github.com/mdouchement/ergo

authentication http https proxy

Last synced: 11 months ago
JSON representation

Ergo is an HTTP/HTTPS proxy with authentication support. Works at TCP level.

Awesome Lists containing this project

README

          

# Ergo

Ergo is an HTTP/HTTPS proxy that supports `Proxy-Authorization` authentication.

Features:
- HTTP/HTTPS
- Authentication
- Deny list using [urlfilter](https://github.com/AdguardTeam/urlfilter) package
- Cache domain name resolution results

## How does it work

### HTTP

1. Accept TCP connection
2. Catch the request header
3. Open the TCP tunnel to the remote
4. Forward through TCP pipeline the whole request to the remote

### HTTPS

1. Accept TCP connection
2. Catch CONNECT request
3. Open the TCP tunnel to the remote provided by the CONNECT request. So it supports HTTP2 multiplexed flow
4. Respond `200 OK` to the client to inform the tunnel is opened
5. Forward through TCP pipeline all the raw data

## tls-forwarder

Useful when Ergo is behind a router like Traefik with TLS enabled and your client doesn't support TLS proxy endpoint.

Workflow:
1. Forwarder opens a TCP connection to Ergo through the router
2. Perform TLS handshake with the router TLS
3. Forward through TCP pipeline all the raw data to be proxified

## License

**MIT**

## Contributing

All PRs are welcome.

1. Fork it
2. Create your feature branch (git checkout -b my-new-feature)
3. Commit your changes (git commit -am 'Add some feature')
5. Push to the branch (git push origin my-new-feature)
6. Create new Pull Request