Трафик за 24 часа
Кластер серверов
Недавняя активность
Скоро истекают
Состояние системы
Список клиентов
Ключи продавцов
Клиентские библиотеки
Готовые SDK для интеграции Seller API в ваш сайт, биллинг или бота. Обработка ошибок, автоповторы, rate-limit — всё включено.
Python
pip install cosmo-panel
from cosmo_panel import CosmoClient client = CosmoClient(api_key="wgp_...", base_url="http://163.5.153.53:8000") key = client.create_key(name="Иван", days=30, traffic_gb=50) client.extend_key(key["id"], days=30) client.delete_key(key["id"])Файлы
JavaScript / Node.js
npm install cosmo-panel-client
const { CosmoClient } = require('cosmo-panel-client');
const client = new CosmoClient({ apiKey: 'wgp_...', baseUrl: 'http://163.5.153.53:8000' });
const key = await client.createKey({ name: 'Иван', days: 30, trafficGb: 50 });
await client.extendKey(key.id, { days: 30 });
await client.deleteKey(key.id);
Файлы
PHP
composer require cosmo-panel/sdk
$client = new CosmoPanel\Client('wgp_...', 'http://163.5.153.53:8000');
$key = $client->createKey(['name' => 'Иван', 'days' => 30, 'traffic_gb' => 50]);
$client->extendKey($key['id'], ['days' => 30]);
$client->deleteKey($key['id']);
Файлы
Обработка ошибок
Автоповторы при сетевых ошибках (до 3 раз). Экспоненциальный backoff при rate-limit (429). Кастомные исключения с русскими сообщениями. Таймаут запросов: 30 секунд.
Доступные эндпоинты
| Метод | Эндпоинт | Описание |
|---|---|---|
POST | /api/v1/keys | Создать ключ |
GET | /api/v1/keys | Список ключей |
GET | /api/v1/keys/{id} | Детали ключа |
GET | /api/v1/keys/{id}/config | Скачать конфиг |
POST | /api/v1/keys/{id}/extend | Продлить (days) |
POST | /api/v1/keys/{id}/traffic | Добавить трафик (gb) |
POST | /api/v1/keys/{id}/suspend | Приостановить |
POST | /api/v1/keys/{id}/activate | Активировать |
PATCH | /api/v1/keys/{id} | Изменить |
PATCH | /api/v1/keys/{id}/features | Функции |
DELETE | /api/v1/keys/{id} | Удалить |
Последние запросы
| Время | Клиент | IP | Домен |
|---|---|---|---|
| Выберите клиента и нажмите Обновить | |||
Топ доменов
| # | Домен | Запросов |
|---|---|---|
| - | ||
Действия администраторов
Колбэки
Инструкция: интеграция с сайтом продавца
Вебхуки связывают панель Cosmo с сайтом продавца: клиент оплатил → создался ключ → панель шлёт события на сайт → сайт показывает статус подписки.
Сайт → Панель
Продавец использует SDK или REST API для управления ключами:
POST /api/v1/keys— создать ключ при оплатеGET /api/v1/keys— список ключей продавцаPOST /api/v1/keys/{id}/extend— продлитьPOST /api/v1/keys/{id}/traffic— докупить трафик
Панель → Сайт
Панель отправляет HTTP POST на URL вебхука при событиях:
- peer.traffic_updated — изменился остаток трафика
- peer.expired — подписка истекла
- peer.deleted — ключ удалён
- peer.extended — ключ продлён
- peer.created — ключ создан
- peer.suspended — приостановлен
Формат вебхука (тело POST)
{
"event": "peer.traffic_updated",
"timestamp": "2026-06-14T12:00:00Z",
"data": {
"peer_id": "b7438b260314",
"peer_name": "Иван",
"traffic_limit_bytes": 107374182400,
"traffic_used_total": 53687091200,
"traffic_remaining": 53687091200,
"status": "active",
"expires_at": "2026-07-14T23:59:59Z"
}
}
Проверка подписи
Ваш сервер должен проверять заголовок X-Cosmo-Signature чтобы убедиться что запрос от Cosmo, а не подделка:
import hmac, hashlib
secret = "ваш_webhook_secret"
body = request.get_data(as_text=True)
sig = request.headers.get("X-Cosmo-Signature", "")
expected = "sha256=" + hmac.new(secret.encode(), body.encode(), hashlib.sha256).hexdigest()
if not hmac.compare_digest(sig, expected):
abort(403) # подпись не совпала — отклонить
Типичный сценарий
- Клиент оплачивает подписку на сайте продавца (ЮKassa / Stripe)
- Сайт продавца вызывает
POST /api/v1/keys→ создаётся VPN-ключ - Сайт показывает клиенту конфиг (QR + .conf) и статус подписки
- Панель Cosmo отслеживает трафик, срок действия
- При изменении трафика → вебхук peer.traffic_updated на сайт продавца
- При истечении → вебхук peer.expired → сайт блокирует доступ / просит оплатить
- Клиент продлевает на сайте →
POST /api/v1/keys/{id}/extend→ ключ снова активен
Пользователи панели
Смена пароля
Двухфакторная аутентификация
Кластер серверов
Параметры сервера
Обслуживание Cosmo
Автоопределение IP, установка правил, настройка iptables и маршрутизации.
Обфускация (XOR)
Настройки XOR-обфускации трафика. Используется для обхода DPI. Значения попадают в конфиг клиента и в команду запуска obfs-proxy.
Блокировка рекламы
DNS-сервер для блокировки рекламы. Домены и IP добавляются в blackhole-маршруты клиента.
Обход RU сайтов (сплит-туннелинг)
IP-диапазоны, исключаемые из VPN-туннеля. Трафик к этим IP пойдёт напрямую. Оставьте пустым для авто-списка RU подсетей.
Captive Portal
Страницы-заглушки для заблокированных клиентов (HTTP-трафик редиректится на указанные URL).