- Add Legal Office of the Master seal (SVG design with Maltese Cross, scales of justice, legal scroll) - Create legal-office-manifest-template.json for Legal Office credentials - Update SEAL_MAPPING.md and DESIGN_GUIDE.md with Legal Office seal documentation - Complete Azure CDN infrastructure deployment: - Resource group, storage account, and container created - 17 PNG seal files uploaded to Azure Blob Storage - All manifest templates updated with Azure URLs - Configuration files generated (azure-cdn-config.env) - Add comprehensive Azure CDN setup scripts and documentation - Fix manifest URL generation to prevent double slashes - Verify all seals accessible via HTTPS
156 lines
4.4 KiB
Bash
Executable File
156 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Upload Order of St John credential seals to Azure Blob Storage
|
|
# Requires Azure CDN to be set up first
|
|
|
|
set -euo pipefail
|
|
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[UPLOAD]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
|
|
log_warning() { echo -e "${YELLOW}[!]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[✗]${NC} $1"; }
|
|
|
|
cd "$(dirname "$0")/../.."
|
|
|
|
# Load Azure configuration if available
|
|
if [ -f "azure-cdn-config.env" ]; then
|
|
source azure-cdn-config.env
|
|
log_info "Loaded Azure configuration from azure-cdn-config.env"
|
|
elif [ -f "infra/scripts/azure-cdn-config.env" ]; then
|
|
source infra/scripts/azure-cdn-config.env
|
|
log_info "Loaded Azure configuration from infra/scripts/azure-cdn-config.env"
|
|
fi
|
|
|
|
# Configuration (can be overridden by environment variables)
|
|
STORAGE_ACCOUNT="${AZURE_STORAGE_ACCOUNT:-}"
|
|
STORAGE_KEY="${AZURE_STORAGE_KEY:-}"
|
|
CONTAINER="${AZURE_STORAGE_CONTAINER:-images}"
|
|
PNG_DIR="assets/credential-images/png"
|
|
|
|
# Check prerequisites
|
|
if ! command -v az &> /dev/null; then
|
|
log_error "Azure CLI is not installed"
|
|
echo "Install from: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli"
|
|
exit 1
|
|
fi
|
|
|
|
if ! az account show &> /dev/null; then
|
|
log_error "Not logged in to Azure. Please log in:"
|
|
echo " az login"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if storage account is configured
|
|
if [ -z "${STORAGE_ACCOUNT}" ]; then
|
|
log_error "Azure storage account not configured"
|
|
echo "Run: ./infra/scripts/azure-cdn-setup.sh"
|
|
echo "Or set: AZURE_STORAGE_ACCOUNT=<account-name>"
|
|
exit 1
|
|
fi
|
|
|
|
# Get storage key if not provided
|
|
if [ -z "${STORAGE_KEY}" ]; then
|
|
RESOURCE_GROUP="${AZURE_RESOURCE_GROUP:-the-order-cdn-rg}"
|
|
log_info "Retrieving storage account key..."
|
|
STORAGE_KEY=$(az storage account keys list \
|
|
--resource-group "${RESOURCE_GROUP}" \
|
|
--account-name "${STORAGE_ACCOUNT}" \
|
|
--query "[0].value" -o tsv 2>/dev/null || echo "")
|
|
|
|
if [ -z "${STORAGE_KEY}" ]; then
|
|
log_error "Failed to retrieve storage account key"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Check PNG directory
|
|
if [ ! -d "${PNG_DIR}" ]; then
|
|
log_error "PNG directory not found: ${PNG_DIR}"
|
|
echo "Run: ./scripts/deploy/prepare-all-credential-seals.sh"
|
|
exit 1
|
|
fi
|
|
|
|
PNG_FILES=($(find "${PNG_DIR}" -name "*.png" -type f))
|
|
if [ ${#PNG_FILES[@]} -eq 0 ]; then
|
|
log_error "No PNG files found in ${PNG_DIR}"
|
|
echo "Run: ./scripts/deploy/prepare-all-credential-seals.sh"
|
|
exit 1
|
|
fi
|
|
|
|
log_info "Uploading ${#PNG_FILES[@]} PNG file(s) to Azure Blob Storage"
|
|
echo " Storage Account: ${STORAGE_ACCOUNT}"
|
|
echo " Container: ${CONTAINER}"
|
|
echo ""
|
|
|
|
# Upload each file
|
|
UPLOADED=0
|
|
FAILED=0
|
|
|
|
for png_file in "${PNG_FILES[@]}"; do
|
|
filename=$(basename "${png_file}")
|
|
log_info "Uploading: ${filename}"
|
|
|
|
if az storage blob upload \
|
|
--file "${png_file}" \
|
|
--container-name "${CONTAINER}" \
|
|
--name "${filename}" \
|
|
--account-name "${STORAGE_ACCOUNT}" \
|
|
--account-key "${STORAGE_KEY}" \
|
|
--content-type "image/png" \
|
|
--overwrite \
|
|
-o json &> /dev/null; then
|
|
log_success " Uploaded: ${filename}"
|
|
((UPLOADED++))
|
|
else
|
|
log_error " Failed: ${filename}"
|
|
((FAILED++))
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
log_info "=== Upload Summary ==="
|
|
log_success "Uploaded: ${UPLOADED}"
|
|
if [ ${FAILED} -gt 0 ]; then
|
|
log_error "Failed: ${FAILED}"
|
|
fi
|
|
|
|
# Generate URLs
|
|
echo ""
|
|
log_info "File URLs:"
|
|
BLOB_BASE_URL="https://${STORAGE_ACCOUNT}.blob.core.windows.net/${CONTAINER}"
|
|
for png_file in "${PNG_FILES[@]}"; do
|
|
filename=$(basename "${png_file}")
|
|
echo " ${BLOB_BASE_URL}/${filename}"
|
|
done
|
|
|
|
# CDN URL if available
|
|
if [ -n "${AZURE_CDN_ENDPOINT_URL:-}" ]; then
|
|
echo ""
|
|
log_info "CDN URLs (once propagated):"
|
|
CDN_BASE_URL="https://${AZURE_CDN_ENDPOINT_URL}/${CONTAINER}"
|
|
for png_file in "${PNG_FILES[@]}"; do
|
|
filename=$(basename "${png_file}")
|
|
echo " ${CDN_BASE_URL}/${filename}"
|
|
done
|
|
fi
|
|
|
|
echo ""
|
|
log_info "Next Steps:"
|
|
echo "1. Verify files are accessible:"
|
|
echo " curl -I ${BLOB_BASE_URL}/digital-bank-seal.png"
|
|
echo ""
|
|
echo "2. Update manifest templates:"
|
|
echo " CDN_BASE_URL=${BLOB_BASE_URL}/ ./scripts/deploy/update-manifest-seal-urls.sh"
|
|
echo ""
|
|
if [ ${UPLOADED} -eq ${#PNG_FILES[@]} ]; then
|
|
log_success "All files uploaded successfully!"
|
|
else
|
|
log_warning "Some files failed to upload. Check errors above."
|
|
fi
|
|
|