Skip to main content

Interactive CLI for managing o2switch/cPanel domains, subdomains, and DNS records.

Project description

o2switch-cli

CLI interactif pour gerer domaines, sous-domaines cPanel et enregistrements DNS sur un hebergement o2switch/cPanel.

Version actuelle: 0.1.0

Installation

./install.sh

The installer:

  • Creates a local virtual environment
  • Installs the CLI and dependencies
  • Prompts for cPanel credentials (stored in ~/.config/o2switch-cli/.env)
  • Publishes o2switch-cli to ~/.local/bin
  • Installs bash completion

After install, reload your shell:

source ~/.bashrc && hash -r

Non-interactive install

./install.sh --cpanel-host saule.o2switch.net --cpanel-user myuser --cpanel-token mytoken

Development install

./install.sh --dev

Skip setup wizard

./install.sh --skip-setup
o2switch-cli config init  # configure later

Uninstall

./uninstall.sh
./uninstall.sh --purge-venv --purge-config --purge-state

Configuration

Credentials are stored globally in ~/.config/o2switch-cli/.env and loaded automatically.

# Show current config and where it's loaded from
o2switch-cli config show

# Show config file paths (active, global, local)
o2switch-cli config path

# Re-run setup wizard
o2switch-cli config init

# Test API access
o2switch-cli config test

Config file locations

  1. Local .env in current directory (takes precedence)
  2. Global ~/.config/o2switch-cli/.env (default)

Environment variables

You can also set credentials via environment variables:

export O2SWITCH_CLI_CPANEL_HOST=saule.o2switch.net
export O2SWITCH_CLI_CPANEL_USER=myuser
export O2SWITCH_CLI_CPANEL_TOKEN=mytoken

Getting a cPanel API token

  1. Log into cPanel
  2. Go to Security > Manage API Tokens
  3. Create a new token with appropriate permissions
  4. Copy the token (it's only shown once)

Usage

o2switch-cli              # Interactive mode (if TTY)
o2switch-cli --help       # Show all commands

DNS Records

# Point a hostname to an IP (create or update A record)
o2switch-cli dns upsert --host staging.example.com --ip 203.0.113.25

# With explicit zone and custom TTL
o2switch-cli dns upsert --zone example.com --host staging --ip 203.0.113.25 --ttl 600

# Search DNS records
o2switch-cli dns search example

# Delete an A record
o2switch-cli dns delete --host staging.example.com

# Verify DNS resolution
o2switch-cli dns verify --host staging.example.com --ip 203.0.113.25

# Dry run (show what would change without applying)
o2switch-cli dns upsert --host staging.example.com --ip 203.0.113.25 --dry-run

Domains

o2switch-cli domains list
o2switch-cli domains list --page 2 --page-size 10

Subdomains

o2switch-cli subdomains create --root example.com --label staging --ip 203.0.113.25
o2switch-cli subdomains list
o2switch-cli subdomains delete --fqdn staging.example.com

Output formats

o2switch-cli domains list --json
o2switch-cli config show --json

Interactive mode includes loading spinners, real-time search suggestions, and paginated navigation.

Versioning

o2switch-cli suit Semantic Versioning.

  • format: MAJOR.MINOR.PATCH
  • version actuelle: 0.1.0
  • tags de release: vMAJOR.MINOR.PATCH
  • changelog: CHANGELOG.md
  • politique detaillee: VERSIONING.md

Regles de bump:

  • MAJOR: rupture de compatibilite sur la CLI, la sortie JSON stable, les comportements de mutation, ou les variables/configs publiques
  • MINOR: nouvelles commandes, nouvelles options retro-compatibles, nouveaux workflows ou nouveaux champs JSON optionnels
  • PATCH: corrections retro-compatibles, docs, tests, durcissement interne sans rupture contractuelle

Tant que le projet reste en 0.x, un bump MINOR peut encore embarquer des changements cassants. Les correctifs PATCH doivent rester retro-compatibles.

Source de verite:

Avant une release, mettre a jour le changelog, verifier o2switch-cli --version, puis tagger le commit avec vX.Y.Z.

Development

.venv/bin/ruff check .
.venv/bin/ruff format .
.venv/bin/pytest

Specs

Le pack de specifications projet est dans docs/specs/README.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

o2switch_cli-0.1.2.tar.gz (45.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

o2switch_cli-0.1.2-py3-none-any.whl (45.0 kB view details)

Uploaded Python 3

File details

Details for the file o2switch_cli-0.1.2.tar.gz.

File metadata

  • Download URL: o2switch_cli-0.1.2.tar.gz
  • Upload date:
  • Size: 45.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for o2switch_cli-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e7accd8d13a1a6f257e3fb7c596595159afb3c5df1d46d0542c65d70ce7ab309
MD5 6196f18bdb8947eaac662d3e2ea23b6b
BLAKE2b-256 02d5c959d1fc54473f68d349f041d839dd37297bcba8f88878a8080886f15d5d

See more details on using hashes here.

File details

Details for the file o2switch_cli-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: o2switch_cli-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 45.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for o2switch_cli-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f5e1c687a51b2bc9d02fca4633f3da4fa9250c890054c19104269cada005355a
MD5 1adf8ebdfdb1052d1ff61c4ee86f572a
BLAKE2b-256 285f264509483c6f4dc1b8076a87ea9c682abb7cdbe65ea40d28906c2be753bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page