unboundCLI

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 15, 2025 License: MIT Imports: 1 Imported by: 0

README ΒΆ

🌐 UnboundCLI

Go Version License Release SLSA 3

πŸš€ A powerful CLI tool for managing Unbound DNS on OPNSense routers with a beautiful interactive interface

UnboundCLI provides seamless DNS override management through the OPNSense API, featuring both command-line operations and an intuitive Text User Interface (TUI).

✨ Features

  • 🎨 Modern CLI interface with color output using Cobra and Viper
  • πŸ–₯️ Interactive TUI powered by Bubble Tea and Lipgloss
  • πŸ“ Complete CRUD operations for DNS overrides
  • πŸ” Secure configuration management
  • 🌍 Cross-platform support (macOS, Linux, Windows)
  • πŸ”„ Caddy integration for automatic DNS synchronization
  • πŸ›‘οΈ SLSA Level 3 security compliance

πŸ“¦ Installation

brew tap jeeftor/tap
brew install unboundcli
Manual Installation
  1. Download the latest binary from the Releases page
  2. Extract and move to your $PATH
Building from Source
# Clone the repository
git clone https://github.com/jeeftor/unboundCLI.git
cd unboundCLI

# Build the application
make build

# Install to your GOPATH/bin
make install

πŸš€ Quick Start

Initial Setup

Configure UnboundCLI with your OPNSense API credentials:

unboundCLI config

Follow the interactive prompts to enter:

  • πŸ”‘ API Key
  • πŸ” API Secret
  • 🌐 OPNSense URL
Launch the TUI

Experience the beautiful interactive interface:

unboundCLI tui

πŸ“– Usage

Usage:
  unboundCLI [command]

Available Commands:
  add         βž• Add a DNS override
  apply       βœ… Apply pending DNS changes
  caddy-sync  πŸ”„ Synchronize DNS entries with Caddy server
  completion  πŸ“ Generate shell autocompletion script
  config      βš™οΈ  Configure API connection settings
  delete      πŸ—‘οΈ  Delete a DNS override
  edit        ✏️  Edit a DNS override
  find        πŸ” Find DNS overrides by host, domain, or both
  help        ❓ Help about any command
  list        πŸ“‹ List DNS overrides
  tui         πŸ’» Launch the Text User Interface

Flags:
  --config string      config file (default: $HOME/.unboundCLI.yaml)
  -h, --help          help for unboundCLI
  --log-level string  set logging level (debug, info, warn, error) (default: "info")
  -v, --verbose       enable verbose output
  --version           version for unboundCLI

Use "unboundCLI [command] --help" for more information about a command.
Examples
# List all DNS overrides
unboundCLI list

# Add a new DNS override
unboundCLI add --host myserver --domain local.lan --ip 192.168.1.100

# Find specific overrides
unboundCLI find --host myserver

# Launch interactive mode
unboundCLI tui

πŸ› οΈ Development

Prerequisites
  • Go 1.18 or higher
  • Make
  • GoReleaser (optional, for releases)
Available Make Commands
make build          # πŸ”¨ Build the application
make test           # πŸ§ͺ Run tests
make check          # πŸ” Format code and run linters
make cross-build    # 🌍 Cross-compile for multiple platforms
make release-dry-run # πŸš€ Test GoReleaser configuration
make help           # πŸ“š Show all available commands

🚒 Release Process

This project uses GoReleaser with SLSA Level 3 provenance for secure, automated releases.

Creating a New Release
  1. Tag the commit:

    git tag -a v0.1.0 -m "Release v0.1.0"
    git push origin v0.1.0
    
  2. Automated build: GitHub Actions automatically builds and publishes the release with SLSA provenance

πŸ›‘οΈ Security & SLSA Provenance

This project follows SLSA Level 3 security practices, providing:

  • βœ… Source verification
  • πŸ”’ Build integrity guarantees
  • πŸ“‹ Provenance generation
  • πŸ›‘οΈ Tamper resistance

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❀️ by jeeftor

⭐ If you find this project helpful, please give it a star!

Documentation ΒΆ

The Go Gopher

There is no documentation for this package.

Directories ΒΆ

Path Synopsis
internal
api
cloudflare.go in internal/api package
cloudflare.go in internal/api package
tui
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL