- Add comprehensive database migrations (001-024) for schema evolution - Enhance API schema with expanded type definitions and resolvers - Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth - Implement new services: AI optimization, billing, blockchain, compliance, marketplace - Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage) - Update Crossplane provider with enhanced VM management capabilities - Add comprehensive test suite for API endpoints and services - Update frontend components with improved GraphQL subscriptions and real-time updates - Enhance security configurations and headers (CSP, CORS, etc.) - Update documentation and configuration files - Add new CI/CD workflows and validation scripts - Implement design system improvements and UI enhancements
111 lines
3.0 KiB
Bash
Executable File
111 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# TP-Link Omada Controller Setup Script
|
|
|
|
CONTROLLER="${OMADA_CONTROLLER:-}"
|
|
ADMIN_USER="${OMADA_ADMIN:-admin}"
|
|
ADMIN_PASSWORD="${OMADA_PASSWORD:-}"
|
|
SITE_NAME="${SITE_NAME:-}"
|
|
|
|
log() {
|
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" >&2
|
|
}
|
|
|
|
error() {
|
|
log "ERROR: $*"
|
|
exit 1
|
|
}
|
|
|
|
check_prerequisites() {
|
|
if [ -z "${CONTROLLER}" ]; then
|
|
error "OMADA_CONTROLLER environment variable is required"
|
|
fi
|
|
|
|
if [ -z "${ADMIN_PASSWORD}" ]; then
|
|
error "OMADA_PASSWORD environment variable is required"
|
|
fi
|
|
|
|
if ! command -v curl &> /dev/null; then
|
|
error "curl is required but not installed"
|
|
fi
|
|
}
|
|
|
|
test_controller_connectivity() {
|
|
log "Testing connectivity to Omada Controller at ${CONTROLLER}..."
|
|
|
|
if curl -k -s --connect-timeout 5 "https://${CONTROLLER}:8043" > /dev/null; then
|
|
log "Controller is reachable"
|
|
return 0
|
|
else
|
|
error "Cannot reach controller at ${CONTROLLER}:8043"
|
|
fi
|
|
}
|
|
|
|
verify_authentication() {
|
|
log "Verifying authentication..."
|
|
|
|
RESPONSE=$(curl -k -s -X POST "https://${CONTROLLER}:8043/api/v2/login" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"username\":\"${ADMIN_USER}\",\"password\":\"${ADMIN_PASSWORD}\"}")
|
|
|
|
if echo "${RESPONSE}" | grep -q "token"; then
|
|
log "Authentication successful"
|
|
return 0
|
|
else
|
|
error "Authentication failed. Please check credentials."
|
|
fi
|
|
}
|
|
|
|
create_site() {
|
|
if [ -z "${SITE_NAME}" ]; then
|
|
log "SITE_NAME not provided, skipping site creation"
|
|
return 0
|
|
fi
|
|
|
|
log "Creating site: ${SITE_NAME}..."
|
|
|
|
# Get authentication token
|
|
TOKEN_RESPONSE=$(curl -k -s -X POST "https://${CONTROLLER}:8043/api/v2/login" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"username\":\"${ADMIN_USER}\",\"password\":\"${ADMIN_PASSWORD}\"}")
|
|
|
|
TOKEN=$(echo "${TOKEN_RESPONSE}" | grep -o '"token":"[^"]*' | cut -d'"' -f4)
|
|
|
|
if [ -z "${TOKEN}" ]; then
|
|
error "Failed to get authentication token"
|
|
fi
|
|
|
|
# Create site
|
|
SITE_RESPONSE=$(curl -k -s -X POST "https://${CONTROLLER}:8043/api/v2/sites" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer ${TOKEN}" \
|
|
-d "{\"name\":\"${SITE_NAME}\",\"timezone\":\"UTC\"}")
|
|
|
|
if echo "${SITE_RESPONSE}" | grep -q "id"; then
|
|
SITE_ID=$(echo "${SITE_RESPONSE}" | grep -o '"id":"[^"]*' | cut -d'"' -f4)
|
|
log "Site created successfully with ID: ${SITE_ID}"
|
|
else
|
|
log "Warning: Site creation may have failed or site already exists"
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
log "Starting Omada Controller setup..."
|
|
|
|
check_prerequisites
|
|
test_controller_connectivity
|
|
verify_authentication
|
|
create_site
|
|
|
|
log "Omada Controller setup completed!"
|
|
log ""
|
|
log "Next steps:"
|
|
log "1. Configure access points: ./provision-ap.sh"
|
|
log "2. Create SSIDs: ./create-ssid.sh"
|
|
log "3. Set up network policies: ./create-policy.sh"
|
|
}
|
|
|
|
main "$@"
|
|
|