VPN connection log: who connected and when
WireGuard has no connect events, only the last handshake and byte counters. awg-ctrl now checks them every 30 s and writes conn_log in users.db: connect at the first handshake, disconnect at the last activity (the last tick the counters moved), with the session length and traffic, plus peer_seen, the last time each peer was online. Open sessions are restored from the database, so a restart adds no duplicates; a down interface is not a disconnect; a peer removed mid-session is closed. Events keep the name, owner and VPN IP as of that moment and live 90 days. Client public IPs are not recorded. GET /api/connlog serves the events and the per-peer last-seen list. The panel fetches it from the selected server at /ui/connlog and fills in master key labels and device names for sen:// peers. A new "Подключения" tab shows the event feed with search and paging, and "who was online when", including those who never connected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013bNGYiDst62wH3ZGTRPFLJ
This commit is contained in:
@@ -314,6 +314,22 @@ base64url-декодировать, отбросить первые 4 байта
|
||||
| `DELETE /ui/devices/:id` | Отвязать устройство |
|
||||
| `POST /ui/devices/:id/rekey`, `/psk` | Смена ключа / PSK у устройства |
|
||||
|
||||
## Журнал подключений
|
||||
|
||||
Вкладка «Подключения» показывает по выбранному серверу:
|
||||
|
||||
- **События** — кто подключился к VPN и отключился, когда, сколько длилась сессия и сколько
|
||||
скачал и отдал. Поиск — по имени пользователя, мастер-ключу, устройству или внутреннему IP.
|
||||
- **Кто когда был** — все пользователи и устройства sen:// сервера: онлайн сейчас, когда были на
|
||||
связи последний раз и кто не подключался ни разу с начала журнала.
|
||||
|
||||
Журнал ведёт awg-ctrl каждого сервера (`conn_log` в `users.db`, 90 дней). У WireGuard нет событий
|
||||
подключения, поэтому раз в 30 с он сверяет время handshake и счётчики трафика: «подключился» —
|
||||
время первого handshake, «отключился» — последняя активность (точность около 30 с). Перезапуск
|
||||
awg-ctrl сессии не рвёт, падение интерфейса отключением не считается. Внешний IP клиентов не
|
||||
записывается. Тот же журнал по API: `GET /api/connlog?limit=&before=&q=`. Серверы на прежней
|
||||
версии журнала не ведут — вкладка попросит их обновить.
|
||||
|
||||
## Управление
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user