tunneltop


Nametunneltop JSON
Version 0.4.5 PyPI version JSON
download
home_pagehttps://github.com/terminaldweller/tunneltop
SummaryA top-like tunnel manager
upload_time2024-09-04 23:52:58
maintainerNone
docs_urlNone
authorterminaldweller
requires_python<4.0,>=3.11
licenseGPL-3.0
keywords tunnel top ssh
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # tunneltop

A tunnel manager in the familiar top style written with ncurses and asyncio.

![Image](tunneltop.png)

## Install

```sh
pipx install tunneltop
```

## 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
[color]
header_fg = 4
header_bg = 0
active_fg = 23
active_bg = 0
disabled_fg = 8
disabled_bg = 0
timeout_fg = 63
timeout_bg = 0
unknown_fg = 38
unknown_bg = 0
down_fg = 208
down_bg = 0
box_fg = 22
box_bg = 0

[tunnel.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 -s -o /dev/null -s -w "%{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
auto_start = false

[tunnel.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 -s -o /dev/null -s -w "%{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
auto_start = true
```

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>

### auto_start

Whether to automatically start this tunnel on startup.</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>

`t` runs the test right now.</br>

`pgup` and `ctrl-b` move you up a page.<br/>

`pgdown` and `ctrl-f` move you down a page.<br/>

`ctrl-u` and `ctrl-d` move you up and down half a page respectively.<br/>

To quit send a `SIGINT` or a `SIGTERM`. I'm working on improving this of course.</br>

tunneltop will reload its config file upon receiving a `SIGHUP` and apply the changes immediately if there are any.</br>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/terminaldweller/tunneltop",
    "name": "tunneltop",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": "tunnel, top, ssh",
    "author": "terminaldweller",
    "author_email": "devi@terminaldweller.com",
    "download_url": "https://files.pythonhosted.org/packages/b3/d8/de713395b6e81fc21586a96b456ea024c4d293c2bc59ebe4f1430a021493/tunneltop-0.4.5.tar.gz",
    "platform": null,
    "description": "# tunneltop\n\nA tunnel manager in the familiar top style written with ncurses and asyncio.\n\n![Image](tunneltop.png)\n\n## Install\n\n```sh\npipx install tunneltop\n```\n\n## what it is\n\n- a simple tunnel manager written in python that uses the standard library only(standard library only in python 3.11)\n- it starts and manages the tunnels for you\n- lets the user interactively manage the tunnels as well\n- will reload the config file if it receives a `SIGHUP`\n- it is intentionally written as simple and tunnel-agnostic\n- may or may not work on windows(let me know if you test it on windows)\n\n## toml file\n\ntunneltop expects its config file to be at at `$HOME/.tunneltoprc`.\n\nYou can see an example config file below:</br>\n\n```toml\n[color]\nheader_fg = 4\nheader_bg = 0\nactive_fg = 23\nactive_bg = 0\ndisabled_fg = 8\ndisabled_bg = 0\ntimeout_fg = 63\ntimeout_bg = 0\nunknown_fg = 38\nunknown_bg = 0\ndown_fg = 208\ndown_bg = 0\nbox_fg = 22\nbox_bg = 0\n\n[tunnel.socks5ir]\naddress = \"127.0.0.1\"\nport = 9997\ncommand = \"autossh -M 0 -N -D 9997 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l debian -p 22 100.100.100.101\"\ntest_command = 'curl -s -o /dev/null -s -w \"%{http_code}\" -k -I -4 --socks5 socks5h://127.0.0.1:9997 https://icanhazip.com'\ntest_command_result = \"200\"\ntest_interval = 300\ntest_timeout = 10\nauto_start = false\n\n[tunnel.socks5_3]\naddress = \"127.0.0.1\"\nport = 9995\ncommand = \"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\"\ntest_command = 'curl -s -o /dev/null -s -w \"%{http_code}\" -k -I -4 --socks5 socks5h://127.0.0.1:9995 https://icanhazip.com'\ntest_command_result = \"200\"\ntest_interval = 300\ntest_timeout = 10\nauto_start = true\n```\n\nThe tunnel names must be unique.</br>\n\n### address\n\nDisplays the address at which the tunnel is available at. It is a display-only option.</br>\n\n### port\n\nDisplays the port at which the tunnel is available at. It is a display-only option.</br>\n\n### command\n\nThe command used to start the tunnel.</br>\n\n### test_command\n\nThe command used to test the state of the tunnel.</br>\n\n### test_command_result\n\nThe expected result of the test command.</br>\n\n### test_interval\n\nHow often should the `test_command` be run.</br>\n\n### test_timeout\n\nHow long before the test is considered to have timed out.</br>\n\n### auto_start\n\nWhether to automatically start this tunnel on startup.</br>\n\n## keybindings\n\n`j` and `k` move you up and down.</br>\n\n`g` and `G`move you to the first or last tunnel.</br>\n\n`s` toggles a tunnel from enabled to disabled or vice versa.</br>\n\n`r` restarts a tunnel.</br>\n\n`t` runs the test right now.</br>\n\n`pgup` and `ctrl-b` move you up a page.<br/>\n\n`pgdown` and `ctrl-f` move you down a page.<br/>\n\n`ctrl-u` and `ctrl-d` move you up and down half a page respectively.<br/>\n\nTo quit send a `SIGINT` or a `SIGTERM`. I'm working on improving this of course.</br>\n\ntunneltop will reload its config file upon receiving a `SIGHUP` and apply the changes immediately if there are any.</br>\n",
    "bugtrack_url": null,
    "license": "GPL-3.0",
    "summary": "A top-like tunnel manager",
    "version": "0.4.5",
    "project_urls": {
        "Homepage": "https://github.com/terminaldweller/tunneltop",
        "Repository": "https://github.com/terminaldweller/tunneltop"
    },
    "split_keywords": [
        "tunnel",
        " top",
        " ssh"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2baa105edc7ca6db215351de46fd96e8ac171955aaa9f473af20f9a501f08a44",
                "md5": "6db537ad4daec273447f1747a30fbe6a",
                "sha256": "ebd3344f6e2a510736bdb9c2462a8b7805a4ab42e61fbc31b8d0a33f51021348"
            },
            "downloads": -1,
            "filename": "tunneltop-0.4.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6db537ad4daec273447f1747a30fbe6a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 34668,
            "upload_time": "2024-09-04T23:52:57",
            "upload_time_iso_8601": "2024-09-04T23:52:57.061616Z",
            "url": "https://files.pythonhosted.org/packages/2b/aa/105edc7ca6db215351de46fd96e8ac171955aaa9f473af20f9a501f08a44/tunneltop-0.4.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b3d8de713395b6e81fc21586a96b456ea024c4d293c2bc59ebe4f1430a021493",
                "md5": "36af7a714f1a2a0e994df1642f5bf2b6",
                "sha256": "8b879370c98d15e026d5769d8767e8ebe31ed17e5109f3f45a3d207cb1bc0878"
            },
            "downloads": -1,
            "filename": "tunneltop-0.4.5.tar.gz",
            "has_sig": false,
            "md5_digest": "36af7a714f1a2a0e994df1642f5bf2b6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 22901,
            "upload_time": "2024-09-04T23:52:58",
            "upload_time_iso_8601": "2024-09-04T23:52:58.411999Z",
            "url": "https://files.pythonhosted.org/packages/b3/d8/de713395b6e81fc21586a96b456ea024c4d293c2bc59ebe4f1430a021493/tunneltop-0.4.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-04 23:52:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "terminaldweller",
    "github_project": "tunneltop",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "tunneltop"
}
        
Elapsed time: 0.93425s