ba0f3 / proxyproto.nim

a lightweight library that helps aged programs deal with proxy-protocol

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PROXYPROTO

proxyproto is a lightweight library that helps aged programs deal with proxy-protocol. It supports both IPv4 and IPv6.

Works on Linux and macOS

Why?

There are many aged programs that dont support proxy-protocol (esp. closed source programs). When they are running behind a load-balancer or reserve proxy, it's hard to preserve source IP address.

How PROXYPROTO works?

proxyproto intercep the accept() proc, and waits for new imcoming connection and listens for proxy-protocol header from upstream proxy (ie HAProxy, NGINX..)

Once header read, proxyproto replace source ip w/ ip provided by upstream proxy.

Installation

git clone --depth=1 https://github.com/ba0f3/proxyproto.nim.git proxyproto
cd proxyproto
nim c -d:release src/proxyproto

Usage

Use directly inside a nim program that accept incoming connections

import proxyproto

For existing programs, use LD_PRELOAD

$LD_PRELOAD=./src/libproxyproto.so nc -vkl -p 4444
[PROXY] initializing
[PROXY] hook accept OK
listening on [any] 4444 ...

Donate

Buy me some beer https://paypal.me/ba0f3

About

a lightweight library that helps aged programs deal with proxy-protocol

License:MIT License


Languages

Language:Nim 100.0%