shifter-toolkit


Nameshifter-toolkit JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryCLI toolkit for managing network tunnels and services with a web UI
upload_time2025-10-12 14:50:00
maintainerNone
docs_urlNone
authorzZedix
requires_python>=3.9
licenseMIT License Copyright (c) 2016 ginuerzh Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords networking tunneling cli aiohttp automation
VCS
bugtrack_url
requirements click requests aiohttp aiohttp_jinja2 jinja2 aiohttp-session
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🚀 Shifter Toolkit

<div align="center">

![Version](https://img.shields.io/badge/version-0.1.1-blue.svg)
![Python](https://img.shields.io/badge/python-3.9%2B-blue.svg)
![License](https://img.shields.io/badge/license-MIT-green.svg)
![PyPI](https://img.shields.io/badge/pypi-shifter--toolkit-blue.svg)

**A production-ready toolkit for provisioning and operating secure network tunnels on Linux hosts**

[![Install](https://img.shields.io/badge/install-pip%20install%20shifter--toolkit-blue)](https://pypi.org/project/shifter-toolkit/)
[![GitHub](https://img.shields.io/badge/github-zZedix%2FShifter-black)](https://github.com/zZedix/Shifter)

</div>

---

Shifter Toolkit combines a **click-powered** command-line interface with an **AIOHTTP web dashboard** so administrators can manage GOST, HAProxy, Xray, and IPTables configurations from a single, auditable workflow.

## ✨ Key Features

| Feature | Description |
|---------|-------------|
| 🎯 **Unified Control Plane** | Install, inspect, and remove tunnelling services from one place |
| 🖥️ **First-class CLI** | Colorful status output and command groups per service |
| 🌐 **Web Dashboard** | AIOHTTP + Jinja2 powered dashboard with session-based messaging |
| 📦 **Packaged Templates** | Reproducible deployments without network fetches |
| 📚 **PyPI Ready** | Complete packaging with entry points and documentation |

## 📋 Requirements

- 🐧 **Linux host** with `systemd` and `iptables`
- 🐍 **Python 3.9+** (CPython recommended)
- 🔐 **Root/sudo privileges** for system services and firewall rules

## 🚀 Installation

### 📦 Stable Release (Recommended)
```bash
pip install shifter-toolkit
```

### 🔧 From Source
```bash
git clone https://github.com/zZedix/Shifter.git
cd Shifter
pip install --upgrade pip
pip install -e .
```

> 💡 **Tip**: The editable install keeps the CLI and web assets in sync while you iterate on the project.

## ⚡ Quick Start

```bash
<<<<<<< HEAD
# 📋 Review available commands
sudo shifter-toolkit --help

# 🌐 Launch the web dashboard (http://127.0.0.1:2063 by default)
sudo shifter-toolkit serve --host 0.0.0.0 --port 2063

# 🔍 Inspect the health of all managed services
=======
# Review available commands
sudo shifter-toolkit --help

# Launch the web dashboard (http://127.0.0.1:2063 by default)
sudo shifter-toolkit serve --host 0.0.0.0 --port 2063

# Inspect the health of all managed services
>>>>>>> c11714f26ecb9c71bff0eb8c025a8e62b227b09c
sudo shifter-toolkit status
```

> ⚠️ **Security Note**: Each sub-command validates that it is executed with root privileges before touching the system.

## 📚 Command Reference

<<<<<<< HEAD
| 🎯 Group | 💻 Example | 📝 Description |
|----------|------------|----------------|
| `serve` | `sudo shifter-toolkit serve --host 0.0.0.0 --port 2063` | Launch the AIOHTTP dashboard |
| `status` | `sudo shifter-toolkit status haproxy` | Show active/enabled state plus parsed configuration details |
| `gost` | `sudo shifter-toolkit gost install --domain example.com --port 8080` | Manage GOST tunnel deployment and forwarding rules |
| `haproxy` | `sudo shifter-toolkit haproxy add --relay-port 8081 --main-server-ip 1.2.3.4 --main-server-port 443` | Configure HAProxy frontends/backends |
| `xray` | `sudo shifter-toolkit xray add --address example.com --port 8443` | Maintain Xray Dokodemo-door inbounds |
| `iptables` | `sudo shifter-toolkit iptables install --main-server-ip 203.0.113.10 --ports 80,443` | Persist and inspect port-forwarding firewall rules |

> 💡 **Pro Tip**: Run `sudo shifter-toolkit <group> --help` for all arguments on a specific command family.
=======
| Group | Example | Description |
| --- | --- | --- |
| `serve` | `sudo shifter-toolkit serve --host 0.0.0.0 --port 2063` | Launch the AIOHTTP dashboard. |
| `status` | `sudo shifter-toolkit status haproxy` | Show active/enabled state plus parsed configuration details. |
| `gost` | `sudo shifter-toolkit gost install --domain example.com --port 8080` | Manage GOST tunnel deployment and forwarding rules. |
| `haproxy` | `sudo shifter-toolkit haproxy add --relay-port 8081 --main-server-ip 1.2.3.4 --main-server-port 443` | Configure HAProxy frontends/backends. |
| `xray` | `sudo shifter-toolkit xray add --address example.com --port 8443` | Maintain Xray Dokodemo-door inbounds. |
| `iptables` | `sudo shifter-toolkit iptables install --main-server-ip 203.0.113.10 --ports 80,443` | Persist and inspect port-forwarding firewall rules. |

Run `sudo shifter-toolkit <group> --help` for all arguments on a specific command family.
>>>>>>> c11714f26ecb9c71bff0eb8c025a8e62b227b09c

## 🌐 Web Dashboard

Shifter ships with a **lightweight dashboard** that mirrors the CLI capabilities.

- 📁 **Templates** live inside the package (`shifter/web/templates`) so deployments don't rely on external assets
- 🔐 **Sessions** are backed by encrypted cookies
- 🔑 **Security**: Set `AIOHTTP_SECRET_KEY` in the environment to supply a persistent key across restarts

## 📦 Packaged Templates

Installer commands render **configuration templates** that are bundled with the package:

- 🔧 `gost.service` for systemd
- ⚙️ `haproxy.cfg` with placeholder tokens  
- 📄 `config.json` base configuration for Xray

> 💡 **Developer Note**: Use `importlib.resources` helpers in `shifter.services.config` if you need custom automation that reuses these bundled files.

## 🛠️ Development

```bash
# 📦 Install runtime dependencies
pip install -r requirements.txt

# 🔧 Install the project in editable mode
pip install -e .

# 🚀 Optional: run the CLI locally
sudo python -m shifter status
```

> 🌟 **Recommendation**: Develop inside a virtual environment to isolate dependencies.

## 📖 Documentation

Extended guides are available under [`docs/`](docs/index.md), covering:

- 🚀 Deployment patterns
- 💻 CLI details  
- 🔄 Release workflows

---

## 📄 License

Shifter Toolkit is released under the [MIT License](LICENSE).

---

<div align="center">

**Made with ❤️ by [zZedix](https://github.com/zZedix)**

[![PyPI](https://img.shields.io/badge/pypi-shifter--toolkit-blue)](https://pypi.org/project/shifter-toolkit/)
[![GitHub](https://img.shields.io/badge/github-zZedix%2FShifter-black)](https://github.com/zZedix/Shifter)

</div>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "shifter-toolkit",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "networking, tunneling, cli, aiohttp, automation",
    "author": "zZedix",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/2f/fa/62e29a2cdf3e6f268d854c7f45327d792daa0ff923d20c5935c54fcb9e70/shifter_toolkit-0.1.1.tar.gz",
    "platform": null,
    "description": "# \ud83d\ude80 Shifter Toolkit\n\n<div align=\"center\">\n\n![Version](https://img.shields.io/badge/version-0.1.1-blue.svg)\n![Python](https://img.shields.io/badge/python-3.9%2B-blue.svg)\n![License](https://img.shields.io/badge/license-MIT-green.svg)\n![PyPI](https://img.shields.io/badge/pypi-shifter--toolkit-blue.svg)\n\n**A production-ready toolkit for provisioning and operating secure network tunnels on Linux hosts**\n\n[![Install](https://img.shields.io/badge/install-pip%20install%20shifter--toolkit-blue)](https://pypi.org/project/shifter-toolkit/)\n[![GitHub](https://img.shields.io/badge/github-zZedix%2FShifter-black)](https://github.com/zZedix/Shifter)\n\n</div>\n\n---\n\nShifter Toolkit combines a **click-powered** command-line interface with an **AIOHTTP web dashboard** so administrators can manage GOST, HAProxy, Xray, and IPTables configurations from a single, auditable workflow.\n\n## \u2728 Key Features\n\n| Feature | Description |\n|---------|-------------|\n| \ud83c\udfaf **Unified Control Plane** | Install, inspect, and remove tunnelling services from one place |\n| \ud83d\udda5\ufe0f **First-class CLI** | Colorful status output and command groups per service |\n| \ud83c\udf10 **Web Dashboard** | AIOHTTP + Jinja2 powered dashboard with session-based messaging |\n| \ud83d\udce6 **Packaged Templates** | Reproducible deployments without network fetches |\n| \ud83d\udcda **PyPI Ready** | Complete packaging with entry points and documentation |\n\n## \ud83d\udccb Requirements\n\n- \ud83d\udc27 **Linux host** with `systemd` and `iptables`\n- \ud83d\udc0d **Python 3.9+** (CPython recommended)\n- \ud83d\udd10 **Root/sudo privileges** for system services and firewall rules\n\n## \ud83d\ude80 Installation\n\n### \ud83d\udce6 Stable Release (Recommended)\n```bash\npip install shifter-toolkit\n```\n\n### \ud83d\udd27 From Source\n```bash\ngit clone https://github.com/zZedix/Shifter.git\ncd Shifter\npip install --upgrade pip\npip install -e .\n```\n\n> \ud83d\udca1 **Tip**: The editable install keeps the CLI and web assets in sync while you iterate on the project.\n\n## \u26a1 Quick Start\n\n```bash\n<<<<<<< HEAD\n# \ud83d\udccb Review available commands\nsudo shifter-toolkit --help\n\n# \ud83c\udf10 Launch the web dashboard (http://127.0.0.1:2063 by default)\nsudo shifter-toolkit serve --host 0.0.0.0 --port 2063\n\n# \ud83d\udd0d Inspect the health of all managed services\n=======\n# Review available commands\nsudo shifter-toolkit --help\n\n# Launch the web dashboard (http://127.0.0.1:2063 by default)\nsudo shifter-toolkit serve --host 0.0.0.0 --port 2063\n\n# Inspect the health of all managed services\n>>>>>>> c11714f26ecb9c71bff0eb8c025a8e62b227b09c\nsudo shifter-toolkit status\n```\n\n> \u26a0\ufe0f **Security Note**: Each sub-command validates that it is executed with root privileges before touching the system.\n\n## \ud83d\udcda Command Reference\n\n<<<<<<< HEAD\n| \ud83c\udfaf Group | \ud83d\udcbb Example | \ud83d\udcdd Description |\n|----------|------------|----------------|\n| `serve` | `sudo shifter-toolkit serve --host 0.0.0.0 --port 2063` | Launch the AIOHTTP dashboard |\n| `status` | `sudo shifter-toolkit status haproxy` | Show active/enabled state plus parsed configuration details |\n| `gost` | `sudo shifter-toolkit gost install --domain example.com --port 8080` | Manage GOST tunnel deployment and forwarding rules |\n| `haproxy` | `sudo shifter-toolkit haproxy add --relay-port 8081 --main-server-ip 1.2.3.4 --main-server-port 443` | Configure HAProxy frontends/backends |\n| `xray` | `sudo shifter-toolkit xray add --address example.com --port 8443` | Maintain Xray Dokodemo-door inbounds |\n| `iptables` | `sudo shifter-toolkit iptables install --main-server-ip 203.0.113.10 --ports 80,443` | Persist and inspect port-forwarding firewall rules |\n\n> \ud83d\udca1 **Pro Tip**: Run `sudo shifter-toolkit <group> --help` for all arguments on a specific command family.\n=======\n| Group | Example | Description |\n| --- | --- | --- |\n| `serve` | `sudo shifter-toolkit serve --host 0.0.0.0 --port 2063` | Launch the AIOHTTP dashboard. |\n| `status` | `sudo shifter-toolkit status haproxy` | Show active/enabled state plus parsed configuration details. |\n| `gost` | `sudo shifter-toolkit gost install --domain example.com --port 8080` | Manage GOST tunnel deployment and forwarding rules. |\n| `haproxy` | `sudo shifter-toolkit haproxy add --relay-port 8081 --main-server-ip 1.2.3.4 --main-server-port 443` | Configure HAProxy frontends/backends. |\n| `xray` | `sudo shifter-toolkit xray add --address example.com --port 8443` | Maintain Xray Dokodemo-door inbounds. |\n| `iptables` | `sudo shifter-toolkit iptables install --main-server-ip 203.0.113.10 --ports 80,443` | Persist and inspect port-forwarding firewall rules. |\n\nRun `sudo shifter-toolkit <group> --help` for all arguments on a specific command family.\n>>>>>>> c11714f26ecb9c71bff0eb8c025a8e62b227b09c\n\n## \ud83c\udf10 Web Dashboard\n\nShifter ships with a **lightweight dashboard** that mirrors the CLI capabilities.\n\n- \ud83d\udcc1 **Templates** live inside the package (`shifter/web/templates`) so deployments don't rely on external assets\n- \ud83d\udd10 **Sessions** are backed by encrypted cookies\n- \ud83d\udd11 **Security**: Set `AIOHTTP_SECRET_KEY` in the environment to supply a persistent key across restarts\n\n## \ud83d\udce6 Packaged Templates\n\nInstaller commands render **configuration templates** that are bundled with the package:\n\n- \ud83d\udd27 `gost.service` for systemd\n- \u2699\ufe0f `haproxy.cfg` with placeholder tokens  \n- \ud83d\udcc4 `config.json` base configuration for Xray\n\n> \ud83d\udca1 **Developer Note**: Use `importlib.resources` helpers in `shifter.services.config` if you need custom automation that reuses these bundled files.\n\n## \ud83d\udee0\ufe0f Development\n\n```bash\n# \ud83d\udce6 Install runtime dependencies\npip install -r requirements.txt\n\n# \ud83d\udd27 Install the project in editable mode\npip install -e .\n\n# \ud83d\ude80 Optional: run the CLI locally\nsudo python -m shifter status\n```\n\n> \ud83c\udf1f **Recommendation**: Develop inside a virtual environment to isolate dependencies.\n\n## \ud83d\udcd6 Documentation\n\nExtended guides are available under [`docs/`](docs/index.md), covering:\n\n- \ud83d\ude80 Deployment patterns\n- \ud83d\udcbb CLI details  \n- \ud83d\udd04 Release workflows\n\n---\n\n## \ud83d\udcc4 License\n\nShifter Toolkit is released under the [MIT License](LICENSE).\n\n---\n\n<div align=\"center\">\n\n**Made with \u2764\ufe0f by [zZedix](https://github.com/zZedix)**\n\n[![PyPI](https://img.shields.io/badge/pypi-shifter--toolkit-blue)](https://pypi.org/project/shifter-toolkit/)\n[![GitHub](https://img.shields.io/badge/github-zZedix%2FShifter-black)](https://github.com/zZedix/Shifter)\n\n</div>\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2016 ginuerzh\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "CLI toolkit for managing network tunnels and services with a web UI",
    "version": "0.1.1",
    "project_urls": {
        "Documentation": "https://github.com/zZedix/Shifter#readme",
        "Homepage": "https://github.com/zZedix/Shifter",
        "Issues": "https://github.com/zZedix/Shifter/issues",
        "Source": "https://github.com/zZedix/Shifter"
    },
    "split_keywords": [
        "networking",
        " tunneling",
        " cli",
        " aiohttp",
        " automation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5d99aea6dd1e847624f1d3ddbd9f3adaf616d81e92e307d9e9f8f2ec51ad438e",
                "md5": "1d17a89e3c56f47960d38ce2050e4bb7",
                "sha256": "f318b1686dde4afae228d211008b37bcdcfa2b57e31a45285f472036acb55436"
            },
            "downloads": -1,
            "filename": "shifter_toolkit-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1d17a89e3c56f47960d38ce2050e4bb7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 31231,
            "upload_time": "2025-10-12T14:49:59",
            "upload_time_iso_8601": "2025-10-12T14:49:59.109584Z",
            "url": "https://files.pythonhosted.org/packages/5d/99/aea6dd1e847624f1d3ddbd9f3adaf616d81e92e307d9e9f8f2ec51ad438e/shifter_toolkit-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2ffa62e29a2cdf3e6f268d854c7f45327d792daa0ff923d20c5935c54fcb9e70",
                "md5": "eec75a272d4a0eeb5b4bcada7f3c941a",
                "sha256": "c04e5a292a67a28a3db63cab98aa16371a40e30f0787813dfa17c45b04b6dcf5"
            },
            "downloads": -1,
            "filename": "shifter_toolkit-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "eec75a272d4a0eeb5b4bcada7f3c941a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 31453,
            "upload_time": "2025-10-12T14:50:00",
            "upload_time_iso_8601": "2025-10-12T14:50:00.927799Z",
            "url": "https://files.pythonhosted.org/packages/2f/fa/62e29a2cdf3e6f268d854c7f45327d792daa0ff923d20c5935c54fcb9e70/shifter_toolkit-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-12 14:50:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "zZedix",
    "github_project": "Shifter#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "click",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "aiohttp",
            "specs": []
        },
        {
            "name": "aiohttp_jinja2",
            "specs": []
        },
        {
            "name": "jinja2",
            "specs": []
        },
        {
            "name": "aiohttp-session",
            "specs": []
        }
    ],
    "lcname": "shifter-toolkit"
}
        
Elapsed time: 0.59543s