feat: update vps-panel backup and notification features
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import { getNotificationSettings, NotificationSettings } from './appDb'
|
||||
|
||||
export async function sendStatusAlert(
|
||||
siteName: string,
|
||||
siteUrl: string,
|
||||
oldStatus: string,
|
||||
newStatus: string,
|
||||
ms: number | null
|
||||
) {
|
||||
let settings: NotificationSettings | null
|
||||
try {
|
||||
settings = await getNotificationSettings()
|
||||
} catch {
|
||||
return
|
||||
}
|
||||
if (!settings || !settings.enabled) return
|
||||
|
||||
const isDown = newStatus !== 'up'
|
||||
const emoji = newStatus === 'up' ? '✅' : newStatus === 'degraded' ? '⚠️' : '🔴'
|
||||
const statusLabel = newStatus === 'up' ? 'Düzeldi (UP)' : newStatus === 'degraded' ? 'Yavaş (DEGRADED)' : 'Çöktü (DOWN)'
|
||||
const msText = ms ? ` — ${ms}ms` : ''
|
||||
|
||||
const text = `${emoji} *${siteName}*\nDurum: ${statusLabel}${msText}\nURL: ${siteUrl}`
|
||||
|
||||
if (settings.webhook_url) {
|
||||
fetch(settings.webhook_url, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
text,
|
||||
site: siteName,
|
||||
url: siteUrl,
|
||||
status: newStatus,
|
||||
previous_status: oldStatus,
|
||||
ms,
|
||||
timestamp: new Date().toISOString(),
|
||||
}),
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
if (settings.telegram_token && settings.telegram_chat_id) {
|
||||
fetch(`https://api.telegram.org/bot${settings.telegram_token}/sendMessage`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
chat_id: settings.telegram_chat_id,
|
||||
text: `🔔 *VPS Panel*\n\n${text}`,
|
||||
parse_mode: 'Markdown',
|
||||
}),
|
||||
}).catch(() => {})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user