diff options
author | terminaldweller <thabogre@gmail.com> | 2023-01-30 14:23:10 +0000 |
---|---|---|
committer | terminaldweller <thabogre@gmail.com> | 2023-01-30 14:23:10 +0000 |
commit | 6ab99d0526d48eb747bf9850a093c4d8262719e7 (patch) | |
tree | 41a48921e1bd32adf1c14f59cd818788473f436c | |
parent | some cleaning up and moving files around (diff) | |
download | tunneltop-6ab99d0526d48eb747bf9850a093c4d8262719e7.tar.gz tunneltop-6ab99d0526d48eb747bf9850a093c4d8262719e7.zip |
filled out the readme, added a screenshot
-rw-r--r-- | README.md | 71 | ||||
-rw-r--r-- | tunneltop.png | bin | 0 -> 64012 bytes |
2 files changed, 70 insertions, 1 deletions
@@ -1,2 +1,71 @@ # tunneltop -a tunnel manager in the familiar top style +A tunnel manager in the familiar top style with ncurses and asyncio. + +![Image](tunneltop.png) + +## what it is +* a simple tunnel manager written in python that uses the standard library only(standard library only in python 3.11) +* it starts and manages the tunnels for you +* lets the user interactively manage the tunnels as well +* will reload the config file if it receives a `SIGHUP` +* it is intentionally written as simple and tunnel-agnostic +* may or may not work on windows(let me know if you test it on windows) + +## toml file + +tunneltop expects its config file to be at at `$HOME/.tunneltoprc`. + +You can see an example config file below:</br> +```toml +[socks5ir] +address = "127.0.0.1" +port = 9997 +command = "autossh -M 0 -N -D 9997 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l debian -p 22 100.100.100.101" +test_command = 'curl "%{http_code}" -k -I -4 --socks5 socks5h://127.0.0.1:9997 https://icanhazip.com' +test_command_result = "200" +test_interval = 300 +test_timeout = 10 + +[socks5_3] +address = "127.0.0.1" +port = 9995 +command = "autossh -M 0 -N -D 0.0.0.0:9995 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o VerifyHostKeyDNS=no -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l debian -p 2022 100.100.100.100" +test_command = 'curl "%{http_code}" -k -I -4 --socks5 socks5h://127.0.0.1:9995 https://icanhazip.com' +test_command_result = "200" +test_interval = 300 +test_timeout = 10 +``` + +The tunnel names must be unique.</br> + +### address +Displays the address at which the tunnel is available at. It is a display-only option.</br> + +### port +Displays the port at which the tunnel is available at. It is a display-only option.</br> + +### command +The command used to start the tunnel.</br> + +### test_command +The command used to test the state of the tunnel.</br> + +### test_command_result +The expected result of the test command.</br> + +### test_interval +How often should the `test_command` be run.</br> + +### test_timeout +How long before the test is considered to have timed out.</br> + +## keybindings +`j` and `k` move you up and down.</br> + +`g` and `G`move you to the first or last tunnel.</br> + +`s` toggles a tunnel from enabled to disabled or vice versa.</br> + +`r` restarts a tunnel.</br> + +tunneltop will reload its config file upon receiving a `SIGHUP` and apply the changes immediately if there are any.</br> diff --git a/tunneltop.png b/tunneltop.png Binary files differnew file mode 100644 index 0000000..2c3d616 --- /dev/null +++ b/tunneltop.png |