VPN сервер предоставляет REST HTTP API для управления и мониторинга.
Базовый URL: http://<server_ip>:8080/api/v1
API сервер работает на отдельном порту (по умолчанию 8080) и предоставляет JSON endpoints для:
- Мониторинга состояния сервера
- Управления клиентскими соединениями
- Получения статистики и логов
- Просмотра конфигурации
GET /health
Проверка работоспособности API сервера.
Ответ:
{
"status": "healthy",
"service": "masque-vpn-server",
"time": "2025-12-21T00:59:38.7596593Z"
}GET /api/v1/status
Возвращает текущий статус VPN сервера.
Ответ:
{
"status": "running",
"active_connections": 0,
"listen_addr": "127.0.0.1:4433",
"network_cidr": "10.0.0.0/24",
"server_name": "masque-vpn-server",
"tun_device": "disabled"
}GET /api/v1/clients
Возвращает список всех подключенных клиентов.
Ответ:
{
"clients": [
{
"id": "client-uuid-123",
"assigned_ip": "10.0.0.2",
"connected_at": "2025-12-21T00:30:00Z",
"bytes_sent": 1024,
"bytes_received": 2048,
"status": "connected"
}
],
"total": 1
}GET /api/v1/clients/{id}
Возвращает детальную информацию о конкретном клиенте.
Ответ:
{
"id": "client-uuid-123",
"assigned_ip": "10.0.0.2",
"connected_at": "2025-12-21T00:30:00Z",
"bytes_sent": 1024,
"bytes_received": 2048,
"status": "connected"
}DELETE /api/v1/clients/{id}
Принудительно отключает клиента от VPN.
Ответ:
{
"message": "Client disconnected",
"client_id": "client-uuid-123"
}GET /api/v1/stats
Возвращает детальную статистику работы сервера.
Ответ:
{
"active_connections": 5,
"total_connections": 150,
"network_cidr": "10.0.0.0/24",
"tun_device": "tun0",
"uptime": 3600000000000,
"packets_forwarded": 10000,
"bytes_forwarded": 5242880
}GET /api/v1/logs
Возвращает логи соединений клиентов.
Ответ:
{
"logs": [
{
"id": 1,
"client_id": "client-uuid-123",
"event_type": "connect",
"timestamp": "2025-12-21T00:30:00Z",
"details": "Client connected successfully"
}
],
"total": 1
}GET /api/v1/config
Возвращает текущую конфигурацию сервера (без секретных данных).
Ответ:
{
"listen_addr": "127.0.0.1:4433",
"assign_cidr": "10.0.0.0/24",
"advertise_routes": ["0.0.0.0/0"],
"server_name": "masque-vpn-server",
"mtu": 1413,
"log_level": "debug",
"enable_ipv6": false,
"fec_enabled": false,
"metrics_enabled": true
}GET /metrics
Возвращает метрики в формате Prometheus для мониторинга.
Пример метрик:
# HELP masque_vpn_active_connections Current number of active connections
# TYPE masque_vpn_active_connections gauge
masque_vpn_active_connections 5
# HELP masque_vpn_bytes_sent_total Total bytes sent to clients
# TYPE masque_vpn_bytes_sent_total counter
masque_vpn_bytes_sent_total{client_id="client1"} 1024
Проверка состояния:
curl http://localhost:8080/healthПолучение статуса сервера:
curl http://localhost:8080/api/v1/statusСписок клиентов:
curl http://localhost:8080/api/v1/clientsОтключение клиента:
curl -X DELETE http://localhost:8080/api/v1/clients/client-uuid-123Получение метрик:
curl http://localhost:8080/metrics200 OK- Успешный запрос404 Not Found- Клиент не найден500 Internal Server Error- Внутренняя ошибка сервера
- API использует in-memory хранилище для логов (до 1000 записей)
- Все timestamps возвращаются в формате RFC3339 (UTC)
- Метрики bytes_sent/bytes_received пока возвращают 0 (заглушка для будущей реализации)
- API не требует аутентификации в текущей учебной версии