#!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" SERVER="$ROOT/rsync-studio-licensing" [[ -d "$SERVER" ]] || { echo 'Licensing Server directory is missing.' >&2; exit 1; } if command -v php >/dev/null 2>&1; then while IFS= read -r -d '' file; do php -l "$file" >/dev/null; done < <(find "$SERVER" -name '*.php' -type f -print0) echo 'OK: all Stage 4 PHP files pass php -l' else echo 'WARN: PHP is unavailable; skipped php -l checks.' fi bash -n "$SERVER/install-overlay.sh" ! grep -RniE --exclude='*.md' --exclude='*.example' '(PRIVATE[_ -]?KEY|PADDLE_WEBHOOK_SECRET|LEMON_SQUEEZY_WEBHOOK_SECRET)[[:space:]]*=[[:space:]]*[A-Za-z0-9+/=_-]{20,}' "$SERVER" >/dev/null || { echo 'Possible committed secret detected.' >&2; exit 1; } grep -q "sodium_crypto_sign_detached" "$SERVER/app/Services/Licensing/LicenseSigner.php" grep -q "hash_equals" "$SERVER/app/Services/Payments/PaddleWebhookVerifier.php" grep -q "hash_equals" "$SERVER/app/Services/Payments/LemonSqueezyWebhookVerifier.php" grep -q "lockForUpdate" "$SERVER/app/Http/Controllers/Api/LicenseActivationController.php" grep -q "license_delivery_outbox" "$SERVER/database/migrations/2026_09_08_200000_create_rsync_studio_licensing_tables.php" echo 'Stage 4 licensing-server static checks passed.'