main
INWX DNS TUI Client
A modern, interactive Terminal User Interface (TUI) client built with Python and Textual to manage INWX domains and DNS records directly from your terminal.
Features
- Interactive Terminal UI: Full mouse support and intuitive keyboard navigation.
- Automatic Domain Discovery: Automatically retrieves and lists all configured domains in a dedicated sidebar upon login.
- Complete DNS Record Management:
- View DNS records (A, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR, etc.).
- Quick inline editing via mouse double-click or
Enter. - Add new records using a dropdown preset or custom type input.
- Delete records with confirmation.
- Conditional 2FA / TOTP Support:
- Only prompts for a 2FA code if two-factor authentication is active on the account.
- Supports automatic 2FA unlocking via a TOTP secret stored in
.env.
- Responsive Non-blocking UI: API calls run on background worker threads to keep the interface smooth and responsive.
File Structure
inwx_tui/
├── .env # INWX API credentials and configuration (ignored by git)
├── inwx_api.py # INWX JSON-RPC API logic, session handling, and 2FA
├── tui_modals.py # Modal dialog screens (Login, 2FA prompt, Record Edit/Add)
├── tui_app.py # Main Textual TUI layout, styles, and event handling
├── main.py # Application entrypoint
└── README.md # Project documentation
Requirements
Python 3.10+
Linux / macOS / WSL (Windows Terminal)
pip install textual python-dotenv requests pyotp
Configuration
You can provide your credentials in a .env file in the project root to bypass manual login:
# INWX Account Credentials
INWX_USER=your_username
INWX_PASS=your_password
# Optional: TOTP Secret Key (Base32) for automatic 2FA unlock
# If left empty, an interactive 6-digit TAN modal will appear when required.
INWX_2FA_SECRET=
Usage
python3 main.py
Or, by granting execution permission:
chmod +x main.py
./main.py
Languages
Python
100%