bidirectiond

bidirectiond (abbreviated to bdd) is a reverse proxy framework (written in c) for linux. it uses sysconf(_SC_NPROCESSORS_ONLN) worker threads, each with its own see: man epoll(7) instance (when a connection is accepted, its a group of connections will be bound to the thread that it was accepted by). it relies on openssl as of right now, but i'd rather make it use a different tls library later on. it can be used to implement reverse proxies for arbitrary protocols (via a "service") over tls v1.3. do not (block in services || use them for heavy computation)!! bidirectiond uses a tight event loop; the longer a service spends processing one conversation, the longer it'll take for its thread to start processing its next conversation. every bidirectiond abstraction over libssl and sockets is non-blocking. you can find its source code on git.tcp.direct/aiden/bidirectiond.

it currently implements these features:

it currently offers these apis to services:

it will never implement these features:

download bidirectiond

git clone --recursive https://github.com/bridgeloop/bidirectiond.git

verify bidirectiond

curl https://aiden.cmp.bz/pubkey.txt | gpg --import && git verify-commit HEAD

compile bidirectiond

gcc -O2 -c -o output/gs.o services/gs/gs.c
python3 services/glue.py
python3 build.py -fuse-ld=ld -DNDEBUG
output/bidirectiond