Mekanisme Panel
HTTP API, WebSocket relay, autentikasi, dan notifikasi.
Autentikasi
User (browser):
JWT Bearer token via POST /api/auth/login. Token disimpan di localStorage['rg_token'].
Setiap request API dan WebSocket menyertakan token ini.
Agent:
API Key dengan format prefix(8) + secret. Panel lookup by prefix → bandingkan hash bcrypt.
Tidak ada plain API key di DB.
HTTP API Endpoints
Agent Endpoints
| Method | Path | Fungsi |
|--------|------|--------|
| POST | /api/agent/register | Registrasi awal |
| POST | /api/agent/heartbeat | Kirim status setiap 60s |
| POST | /api/agent/events | Kirim batch events |
| GET | /api/agent/commands | Poll command pending |
| GET | /api/agent/version | Cek update tersedia |
| POST | /api/agent/sysinfo | Detail CPU/RAM/disk |
| POST | /api/agent/discovery | Inventori aplikasi |
| POST | /api/agent/integrity | Snapshot user & file hash |
Panel (Browser) Endpoints
/api/servers/* · /api/events · /api/alerts/* · /api/dashboard/* ·
/api/notifications/* · /api/defense/* · /api/settings/*
WebSocket
Browser
/ws/events— real-time event stream ke browser/ws/servers— status server real-time/ws/shell/{serverID}— terminal interaktif (JWT auth)
Agent
/ws/agent/terminal— persistent WS dari agent untuk relay PTY & command push (API Key auth)
Alert & Deduplication
Setiap event masuk diproses oleh MaybeCreateAlert(). Alert dibuat hanya untuk severity CRITICAL dan HIGH.
Dedup via dedup_key (composite: server_id + event_type + window 5 menit) —
event yang sama tidak membuat alert duplikat dalam window tersebut.
Saat alert baru berhasil dibuat, NotifyAlert() dipanggil sebagai goroutine —
mengirim notifikasi ke semua channel aktif (Telegram/Discord) yang memenuhi min_severity.
Command Push System
Panel bisa kirim perintah ke agent via dua jalur:
1. Instant (WS push) — latency <1 detik:
Panel kirim JSON ke /ws/agent/terminal → agent terima real-time lewat CommandCh.
2. Fallback (polling):
Agent poll GET /api/agent/commands setiap 60 detik sebagai backup jika WS terputus.
Command types: block_ip, kill_process, quarantine_file, run_script, update_agent, security_scan