Files
solace-bg-dubai/scripts/audit-env.sh
defiQUG a03417be98
All checks were successful
CI / lint-and-test (push) Successful in 9m52s
chore: consolidate local WIP (repo cleanup 20260707)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 09:41:38 -07:00

143 lines
3.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Audit required and optional credentials across workspace dotenv files.
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
ok() { echo -e "${GREEN}${NC} $1"; }
warn() { echo -e "${YELLOW}⚠️${NC} $1"; }
fail() { echo -e "${RED}${NC} $1"; }
is_placeholder() {
local v="$1"
[[ -z "$v" ]] && return 0
[[ "$v" == *replace_me* ]] && return 0
[[ "$v" == *your_* ]] && return 0
[[ "$v" == *temp_* ]] && return 0
return 1
}
read_env() {
local file="$1"
local key="$2"
[[ -f "$file" ]] || { echo ""; return; }
grep -E "^${key}=" "$file" 2>/dev/null | head -1 | cut -d= -f2- | sed 's/^"//;s/"$//' || true
}
echo "=== Solace Treasury — Environment Audit ==="
echo ""
# Frontend
FE="$ROOT/frontend/.env.local"
echo "## Frontend ($FE)"
for key in NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID NEXT_PUBLIC_CHAIN138_RPC_URL NEXT_PUBLIC_TREASURY_WALLET_ADDRESS NEXT_PUBLIC_SUB_ACCOUNT_FACTORY_ADDRESS NEXT_PUBLIC_API_URL; do
val=$(read_env "$FE" "$key")
if is_placeholder "$val"; then
if [[ "$key" == "NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID" ]]; then
warn "$key optional (Injected/MetaMask work without it)"
else
fail "$key missing or placeholder"
fi
else
ok "$key set"
fi
done
# Backend
BE="$ROOT/backend/.env"
echo ""
echo "## Backend ($BE)"
for key in DATABASE_URL RPC_URL CHAIN_ID CONTRACT_ADDRESS FACTORY_ADDRESS; do
val=$(read_env "$BE" "$key")
if is_placeholder "$val"; then
fail "$key missing or placeholder"
else
ok "$key set"
fi
done
IDX="$ROOT/backend/.env.indexer"
echo ""
echo "## Indexer ($IDX)"
if [[ -f "$IDX" ]]; then
for key in CONTRACT_ADDRESS START_BLOCK RPC_URL; do
val=$(read_env "$IDX" "$key")
if is_placeholder "$val"; then
warn "$key missing in .env.indexer (falls back to backend/.env)"
else
ok "$key set"
fi
done
else
warn ".env.indexer not found"
fi
# Contracts
CE="$ROOT/contracts/.env"
echo ""
echo "## Contracts ($CE)"
for key in CHAIN138_RPC_URL PRIVATE_KEY; do
val=$(read_env "$CE" "$key")
if is_placeholder "$val"; then
fail "$key missing or placeholder"
else
ok "$key set"
fi
done
# Address alignment
DEPLOY="$ROOT/contracts/deployments/chain138.json"
if [[ -f "$DEPLOY" && -f "$BE" ]]; then
echo ""
echo "## Deployment alignment"
DEPLOY_TREASURY=$(jq -r '.contracts.TreasuryWallet' "$DEPLOY" | tr '[:upper:]' '[:lower:]')
ENV_TREASURY=$(read_env "$BE" CONTRACT_ADDRESS | tr '[:upper:]' '[:lower:]')
if [[ -n "$DEPLOY_TREASURY" && "$DEPLOY_TREASURY" == "$ENV_TREASURY" ]]; then
ok "CONTRACT_ADDRESS matches chain138.json"
else
warn "CONTRACT_ADDRESS drift — run ./scripts/sync-env-from-deployment.sh"
fi
fi
# Connectivity
echo ""
echo "## Connectivity"
RPC=$(read_env "$BE" RPC_URL)
RPC="${RPC:-http://192.168.11.211:8545}"
if curl -sf -m 3 -X POST "$RPC" -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' | grep -q '"0x8a"'; then
ok "Chain 138 RPC reachable ($RPC)"
else
fail "Chain 138 RPC unreachable ($RPC)"
fi
DB=$(read_env "$BE" DATABASE_URL)
if [[ -n "$DB" ]]; then
if command -v psql >/dev/null && psql "$DB" -c "SELECT 1;" >/dev/null 2>&1; then
ok "PostgreSQL reachable"
else
warn "PostgreSQL not reachable (use local Docker or Proxmox CT 3002)"
fi
fi
API=$(read_env "$FE" NEXT_PUBLIC_API_URL)
API="${API:-http://localhost:3001}"
if curl -sf -m 3 "$API/health" | grep -q '"status"'; then
ok "Backend API reachable ($API)"
else
warn "Backend API not reachable ($API) — run pnpm run dev"
fi
if [[ -f "$DEPLOY" ]]; then
ok "Chain138 deployment record present"
else
warn "No contracts/deployments/chain138.json — run deploy:chain138"
fi
echo ""
echo "Run ./scripts/sync-env-from-deployment.sh after deploy to propagate addresses."