#port #daemon #tcp #cli

bin+lib port-plumber

Utility bind ports with initialization commands

5 unstable releases

0.3.1 Nov 11, 2023
0.3.0 Nov 11, 2023
0.2.4 Jun 2, 2023
0.2.1 May 17, 2023
0.1.0 Feb 18, 2023

#391 in Unix APIs

MIT license

32KB
800 lines

Port Plumber

Test Status Crate

Utility bind ports with initialization commands

Configuration

The following configuration file must be created:

$HOME/.config/portplumber/config.toml

# Bind 127.0.0.1:12345 to 127.0.0.1:80
[plumbing."127.0.0.1:12345"]
target = "127.0.0.1:80"


# Bind 127.0.0.1:23456 to 127.0.0.1:2048
# At first connection the setup command will be spawn and 500ms will be awaited before redirecting the connection to the target
[plumbing."127.0.0.1:23456"]
target = "127.0.0.1:2048"
resource.setup = { command = "http-server", args = ["-h", "127.0.0.1", "-p", "2048", "-v"] }
resource.warmup_millis = 500

Autostart

Systemd

On linux systems systemd can be used to automatically start this command on startup.

To achieve this, the following file needs to be created:

$HOME/.config/systemd/user/port-plumber.service

[Unit]
Description=Launch port-plumber

[Service]
Type=simple
ExecStart=%h/.cargo/bin/port-plumber
Environment=RUST_LOG=info
[Install]
WantedBy=default.target

And the following commands needs to be executed:

  • systemctl --user daemon-reload reload systemd user daemons
  • systemctl --user enable port-plumber enable port-plumber daemon

Dependencies

~13–27MB
~366K SLoC