#!/bin/bash # Script to check all libraries and modules are loading correctly echo "==========================================" echo "Library and Module Loading Check" echo "==========================================" echo "" # Colors GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Check counter PASSED=0 FAILED=0 WARNINGS=0 check_url() { local url=$1 local name=$2 local required=${3:-true} echo -n "Checking $name... " http_code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$url" 2>&1) if [ "$http_code" = "200" ] || [ "$http_code" = "301" ] || [ "$http_code" = "302" ]; then echo -e "${GREEN}✓ OK${NC} (HTTP $http_code)" ((PASSED++)) return 0 elif [ "$http_code" = "000" ]; then echo -e "${RED}✗ FAILED${NC} (Connection timeout/refused)" ((FAILED++)) return 1 else if [ "$required" = "true" ]; then echo -e "${RED}✗ FAILED${NC} (HTTP $http_code)" ((FAILED++)) return 1 else echo -e "${YELLOW}⚠ WARNING${NC} (HTTP $http_code - may be expected)" ((WARNINGS++)) return 2 fi fi } echo "=== External CDN Libraries ===" check_url "https://cdn.jsdelivr.net/npm/ethers@5.7.2/dist/ethers.umd.min.js" "Ethers.js (Primary CDN - jsdelivr)" check_url "https://unpkg.com/ethers@5.7.2/dist/ethers.umd.min.js" "Ethers.js (Fallback CDN - unpkg)" check_url "https://cdnjs.cloudflare.com/ajax/libs/ethers/5.7.2/ethers.umd.min.js" "Ethers.js (Fallback CDN - cdnjs)" check_url "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" "Font Awesome CSS" echo "" echo "=== API Endpoints ===" check_url "https://explorer.d-bis.org/api/v2/stats" "Blockscout API - Stats" check_url "https://explorer.d-bis.org/api/v2/blocks?page=1&page_size=1" "Blockscout API - Blocks" check_url "https://explorer.d-bis.org/api/v2/transactions?page=1&page_size=1" "Blockscout API - Transactions" # RPC endpoint check - use JSON-RPC call to VMID 2500 echo -n "Checking RPC Endpoint (VMID 2500 - JSON-RPC)... " RPC_URL_CHECK="http://192.168.11.250:8545" rpc_response=$(curl -s -X POST "$RPC_URL_CHECK" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' \ -w "\nHTTP_CODE:%{http_code}" \ --max-time 10 2>&1) http_code=$(echo "$rpc_response" | grep "HTTP_CODE" | cut -d: -f2) rpc_body=$(echo "$rpc_response" | grep -v "HTTP_CODE") if echo "$rpc_body" | grep -q '"result"'; then chain_id=$(echo "$rpc_body" | grep -o '"result":"[^"]*"' | cut -d'"' -f4) echo -e "${GREEN}✓ OK${NC} (Chain ID: $chain_id)" ((PASSED++)) elif echo "$rpc_body" | grep -q '"error"'; then error_msg=$(echo "$rpc_body" | grep -o '"message":"[^"]*"' | cut -d'"' -f4 || echo "Unknown error") echo -e "${YELLOW}⚠ WARNING${NC} (RPC error: $error_msg)" ((WARNINGS++)) elif [ "$http_code" = "000" ] || [ -z "$http_code" ]; then echo -e "${RED}✗ FAILED${NC} (Connection refused - RPC may not be accessible from this host)" ((FAILED++)) else echo -e "${YELLOW}⚠ WARNING${NC} (HTTP $http_code - RPC endpoint may not be accessible)" ((WARNINGS++)) fi echo "" echo "=== Local API Endpoints (if backend is running) ===" check_url "http://localhost:8080/health" "Local API Health Check" false check_url "http://localhost:8080/api/v2/stats" "Local API Stats" false echo "" echo "=== File Checks ===" FRONTEND_FILE="/home/intlc/projects/proxmox/explorer-monorepo/frontend/public/index.html" if [ -f "$FRONTEND_FILE" ]; then echo -n "Frontend file exists... " echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) # Check for required constants echo -n "Checking for API constants... " if grep -q "const API_BASE = '/api';" "$FRONTEND_FILE" && \ grep -q "const RPC_URL = 'http://192.168.11.250:8545';" "$FRONTEND_FILE" && \ grep -q "const RPC_WS_URL = 'ws://192.168.11.250:8546';" "$FRONTEND_FILE" && \ grep -q "const CHAIN_ID = 138;" "$FRONTEND_FILE" && \ grep -q "const BLOCKSCOUT_API = 'https://explorer.d-bis.org/api';" "$FRONTEND_FILE"; then echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) else echo -e "${RED}✗ FAILED${NC} (Missing or incorrect constants)" ((FAILED++)) fi # Check for ethers loading mechanism echo -n "Checking ethers loading mechanism... " if grep -q "checkEthers" "$FRONTEND_FILE" && \ grep -q "window.ethersReady" "$FRONTEND_FILE"; then echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) else echo -e "${RED}✗ FAILED${NC} (Missing ethers loading mechanism)" ((FAILED++)) fi # Check for CSP meta tag echo -n "Checking CSP configuration... " if grep -q "Content-Security-Policy" "$FRONTEND_FILE"; then echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) else echo -e "${YELLOW}⚠ WARNING${NC} (CSP not configured)" ((WARNINGS++)) fi # Check for form label associations echo -n "Checking form label associations... " input_count=$(grep -c "