Home/Docs/Mekanisme Panel

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