Files
the_order/scripts/validation/validate-seal-files.sh
defiQUG 92cc41d26d Add Legal Office seal and complete Azure CDN deployment
- 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
2025-11-12 22:03:42 -08:00

198 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
# Validate Order of St John seal files
# Checks SVG structure, PNG quality, and file integrity
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}[VALIDATE]${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")/../.."
SVG_DIR="assets/credential-images/svg"
PNG_DIR="assets/credential-images/png"
CHECKS_PASSED=0
CHECKS_FAILED=0
CHECKS_WARNING=0
check() {
local name=$1
local command=$2
if eval "${command}" > /dev/null 2>&1; then
log_success "${name}"
((CHECKS_PASSED++))
return 0
else
log_error "${name}"
((CHECKS_FAILED++))
return 1
fi
}
check_warning() {
local name=$1
local command=$2
if eval "${command}" > /dev/null 2>&1; then
log_success "${name}"
((CHECKS_PASSED++))
return 0
else
log_warning "${name}"
((CHECKS_WARNING++))
return 1
fi
}
echo ""
log_info "=== Order of St John Seal Validation ==="
echo ""
# Check directories exist
log_info "1. Directory Structure"
check "SVG directory exists" "[ -d '${SVG_DIR}' ]"
check "PNG directory exists" "[ -d '${PNG_DIR}' ]"
# Check for required SVG files
log_info "2. Required SVG Files"
EXPECTED_SEALS=(
"digital-bank-seal.svg"
"iccc-seal.svg"
"iccc-provost-marshals-seal.svg"
"diplomatic-security-seal.svg"
)
for seal in "${EXPECTED_SEALS[@]}"; do
check "Required seal exists: ${seal}" "[ -f '${SVG_DIR}/${seal}' ]"
done
# Validate SVG structure
log_info "3. SVG File Structure"
for svg_file in "${SVG_DIR}"/*.svg; do
if [ -f "${svg_file}" ]; then
filename=$(basename "${svg_file}")
# Check for Maltese Cross
if grep -q "maltese-cross\|Maltese Cross\|maltese" "${svg_file}" -i; then
log_success "${filename}: Contains Maltese Cross reference"
((CHECKS_PASSED++))
else
log_warning "${filename}: Maltese Cross reference not found"
((CHECKS_WARNING++))
fi
# Check for OSJ reference
if grep -q "OSJ\|ORDER OF ST JOHN\|ORDO S. IOANNIS" "${svg_file}"; then
log_success "${filename}: Contains OSJ reference"
((CHECKS_PASSED++))
else
log_warning "${filename}: OSJ reference not found"
((CHECKS_WARNING++))
fi
# Check SVG is valid XML
if xmllint --noout "${svg_file}" 2>/dev/null; then
log_success "${filename}: Valid SVG/XML"
((CHECKS_PASSED++))
else
check_warning "${filename}: XML validation (xmllint not available)" "true"
fi
# Check viewBox exists
if grep -q 'viewBox="0 0' "${svg_file}"; then
log_success "${filename}: Has viewBox"
((CHECKS_PASSED++))
else
log_warning "${filename}: Missing viewBox"
((CHECKS_WARNING++))
fi
fi
done
# Validate PNG files
log_info "4. PNG File Validation"
PNG_COUNT=0
for png_file in "${PNG_DIR}"/*.png; do
if [ -f "${png_file}" ]; then
((PNG_COUNT++))
filename=$(basename "${png_file}")
# Check if valid PNG
if file "${png_file}" | grep -q "PNG"; then
log_success "${filename}: Valid PNG"
((CHECKS_PASSED++))
# Check file size (should be under 100KB for credentials)
size_kb=$(du -k "${png_file}" | cut -f1)
if [ "${size_kb}" -lt 100 ]; then
log_success "${filename}: Size OK (${size_kb}KB)"
((CHECKS_PASSED++))
else
log_warning "${filename}: Large size (${size_kb}KB, recommend <100KB)"
((CHECKS_WARNING++))
fi
else
log_error "${filename}: Invalid PNG"
((CHECKS_FAILED++))
fi
fi
done
if [ ${PNG_COUNT} -eq 0 ]; then
log_warning "No PNG files found (run prepare-all-credential-seals.sh first)"
((CHECKS_WARNING++))
fi
# Check manifest templates reference seals
log_info "5. Manifest Template References"
MANIFEST_DIR="manifests/entra"
if [ -d "${MANIFEST_DIR}" ]; then
for manifest in "${MANIFEST_DIR}"/*-manifest-template.json; do
if [ -f "${manifest}" ]; then
filename=$(basename "${manifest}")
if grep -q "cdn.theorder.org/images.*seal" "${manifest}"; then
log_success "${filename}: References seal image"
((CHECKS_PASSED++))
else
log_warning "${filename}: Seal image reference not found"
((CHECKS_WARNING++))
fi
fi
done
fi
# Summary
echo ""
log_info "=== Validation Summary ==="
log_success "Passed: ${CHECKS_PASSED}"
if [ ${CHECKS_FAILED} -gt 0 ]; then
log_error "Failed: ${CHECKS_FAILED}"
fi
if [ ${CHECKS_WARNING} -gt 0 ]; then
log_warning "Warnings: ${CHECKS_WARNING}"
fi
TOTAL=$((CHECKS_PASSED + CHECKS_FAILED + CHECKS_WARNING))
if [ ${TOTAL} -gt 0 ]; then
PERCENTAGE=$((CHECKS_PASSED * 100 / TOTAL))
echo ""
if [ ${CHECKS_FAILED} -eq 0 ]; then
log_success "All critical checks passed! (${PERCENTAGE}%)"
exit 0
else
log_error "Some checks failed (${PERCENTAGE}%)"
exit 1
fi
fi