Initial commit

This commit is contained in:
mstfyldz
2026-05-27 16:47:37 +03:00
commit 3ee41864f4
40 changed files with 9041 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
import { Site } from './config'
import { insertPingLog } from './appDb'
export async function pingSite(site: Site): Promise<{
status: 'up' | 'down' | 'degraded'
ms: number
code: number | null
error: string | null
}> {
const start = Date.now()
const controller = new AbortController()
const timer = setTimeout(() => controller.abort(), 10000)
try {
const res = await fetch(site.url, {
signal: controller.signal,
headers: { 'User-Agent': 'VPSPanel/1.0' },
})
clearTimeout(timer)
const ms = Date.now() - start
const status = res.ok ? (ms > 3000 ? 'degraded' : 'up') : 'down'
return { status, ms, code: res.status, error: null }
} catch (e: unknown) {
clearTimeout(timer)
const ms = Date.now() - start
const isTimeout = e instanceof Error && e.name === 'AbortError'
return { status: 'down', ms, code: null, error: isTimeout ? 'Timeout' : (e instanceof Error ? e.message : 'Hata') }
}
}
export async function pingAndLog(site: Site) {
const result = await pingSite(site)
await insertPingLog({ site_id: site.id, ...result })
return result
}