#!/usr/bin/env bash # commands/apache.command.sh # # Manages the Apache web server. # # Usage: # dx apache validate — validate vhost configuration # dx apache reload — graceful reload (picks up vhost changes) # dx apache restart — full restart # dx apache vhosts — list all loaded virtual hosts # dx apache modules — list all loaded Apache modules # dx apache version — show Apache version # dx apache logs — tail error or access logs # ============================================ # Lifecycle # ============================================ function cmd::apache::on_load() { load_module apache flag::register --debug } # ============================================ # Public entrypoint # ============================================ function cmd::apache::run() { local subcmd="${1:-help}" shift || true case "$subcmd" in validate) cmd::apache::validate ;; reload) cmd::apache::reload ;; restart) cmd::apache::restart ;; vhosts) cmd::apache::vhosts ;; modules) cmd::apache::modules ;; version) cmd::apache::version ;; logs) cmd::apache::logs "$@" ;; help) cmd::apache::help ;; *) log::error "Unknown subcommand: '${subcmd}'" cmd::apache::help return 1 ;; esac } # ============================================ # Help # ============================================ function cmd::apache::help() { cat < Manages the Apache web server. Subcommands: validate Validate vhost configuration reload Graceful reload (picks up config changes) restart Full restart vhosts List all loaded virtual hosts modules List all loaded Apache modules version Show Apache version logs [type] Tail logs (error | access, default: error) Examples: dx apache validate dx apache reload dx apache vhosts dx apache logs access EOF } # ============================================ # Subcommands # ============================================ function cmd::apache::validate() { log::info "Validating Apache configuration..." if apache::validate_config; then log::success "Configuration is valid" else log::error "Configuration has errors" return 1 fi } function cmd::apache::reload() { log::info "Reloading Apache..." apache::reload log::success "Apache reloaded" } function cmd::apache::restart() { log::info "Restarting Apache..." apache::restart log::success "Apache restarted" } function cmd::apache::vhosts() { log::info "Loaded virtual hosts:" apache::list_vhosts } function cmd::apache::modules() { log::info "Loaded Apache modules:" apache::list_modules } function cmd::apache::version() { apache::version } function cmd::apache::logs() { local type="${1:-error}" case "$type" in error) apache::logs::error ;; access) apache::logs::access ;; *) log::error "Unknown log type: '${type}' (must be 'error' or 'access')" return 1 ;; esac }