aebb7206f488656a7619f9358eae125ced979245
PatchBay
Port forwarding and routing between Linux machines over SSH, managed from a node-based web UI. One machine is the target (exit gateway, runs the web UI); every other machine is a client that connects to it.
Installing
./install.sh --role target # on the gateway
./install.sh --role client # on every other machine
The script installs dependencies via APT or XBPS, builds, installs to /usr/local (override with PREFIX=), creates /etc/patchbay/patchbay.conf from examples/ and installs systemd, runit or OpenRC services (--init to choose, --no-deps to skip packages).
Dependencies: a C99 compiler, make, pkg-config, libssh2 (1.11+ recommended for AES-GCM), SQLite 3; on the target also OpenSSH server, Python 3 with Flask and cryptography.
Usage
- Target: set the sysop account and mail server in
/etc/patchbay/patchbay.conf, startpatchbayd,patchbay-sshdandpatchbay-web, openhttps://<target>:8443. - Client: set
TargetHostin the config, runpatchbayd --pubkeyand add the key under Settings -> Clients, startpatchbayd. - On the Patch page, wire a Client Source into a Public Sink (exposed on the target) or a Client Sink (exposed on another client), directly or through a Splitter.
Building and testing
make # build/patchbayd
make test # C unit tests + web tests
make test-c T=lines # single C test
make test-web T=tests.test_auth.AuthTest.test_login_2fa
make docker-test # end-to-end: target + 2 clients in Docker
Description
Languages
C
48.6%
Python
16.9%
JavaScript
13.2%
HTML
8%
Shell
7.4%
Other
5.9%