#!/usr/bin/env npx tsx /** * Site Availability Checker Script * Run via cron every 5-15 minutes to check if sites are online * * Usage: * npx tsx api/scripts/check-sites.ts * * Cron example (every 10 minutes): * */10 * * * * cd /path/to/DashDescomplicar && npx tsx api/scripts/check-sites.ts >> /var/log/check-sites.log 2>&1 * * @author Descomplicar® | @link descomplicar.pt | @copyright 2026 */ import 'dotenv/config' import { checkAllSitesAvailability } from '../services/monitoring.js' async function main() { const startTime = Date.now() console.log(`[${new Date().toISOString()}] Starting site availability check...`) try { const result = await checkAllSitesAvailability() console.log(`[${new Date().toISOString()}] Check completed:`) console.log(` - Sites checked: ${result.checked}`) console.log(` - Up: ${result.up}`) console.log(` - Down: ${result.down}`) // Log any down sites const downSites = result.results.filter(r => !r.available) if (downSites.length > 0) { console.log(` - Down sites:`) for (const site of downSites) { console.log(` - ${site.name}: ${site.error || 'No response'}`) } } const elapsed = Date.now() - startTime console.log(`[${new Date().toISOString()}] Done in ${elapsed}ms`) // Exit with code 1 if any sites are down (useful for alerting) process.exit(downSites.length > 0 ? 1 : 0) } catch (error) { console.error(`[${new Date().toISOString()}] Error:`, error) process.exit(2) } } main()