v131
Cosmo

Cosmo Panel

Управление VPN-клиентами
Cosmo
Cosmo Panel
VPN Management
cv7.online
WireGuard
163.5.153.53
:51820
0 пиров
v125
Дашборд
Уведомления
admin
Дашборд

Трафик за 24 часа

Загрузка...

Кластер серверов

Загрузка...

Недавняя активность

Скоро истекают

Состояние системы

API ключи

Ключи продавцов

API ключи для биллинга. Документация: Swagger /docs
SDK — Интеграция через API

Клиентские библиотеки

Готовые 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}Удалить
DNS-запросы

Последние запросы

ВремяКлиентIPДомен
Выберите клиента и нажмите Обновить

Топ доменов

#ДоменЗапросов
-
Аудит-лог

Действия администраторов

Webhooks

Колбэки

Инструкция: интеграция с сайтом продавца

Вебхуки связывают панель 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)  # подпись не совпала — отклонить

Типичный сценарий

  1. Клиент оплачивает подписку на сайте продавца (ЮKassa / Stripe)
  2. Сайт продавца вызывает POST /api/v1/keys → создаётся VPN-ключ
  3. Сайт показывает клиенту конфиг (QR + .conf) и статус подписки
  4. Панель Cosmo отслеживает трафик, срок действия
  5. При изменении трафика → вебхук peer.traffic_updated на сайт продавца
  6. При истечении → вебхук peer.expired → сайт блокирует доступ / просит оплатить
  7. Клиент продлевает на сайте → POST /api/v1/keys/{id}/extend → ключ снова активен
Администраторы

Пользователи панели

Безопасность

Смена пароля

Двухфакторная аутентификация

Отсканируйте QR-код в Google Authenticator или Authy, затем введите код:

Серверы

Кластер серверов

Загрузка...
Настройки

Параметры сервера

Обслуживание Cosmo

Автоопределение IP, установка правил, настройка iptables и маршрутизации.

Обфускация (XOR)

Настройки XOR-обфускации трафика. Используется для обхода DPI. Значения попадают в конфиг клиента и в команду запуска obfs-proxy.

Блокировка рекламы

DNS-сервер для блокировки рекламы. Домены и IP добавляются в blackhole-маршруты клиента.

Обход RU сайтов (сплит-туннелинг)

IP-диапазоны, исключаемые из VPN-туннеля. Трафик к этим IP пойдёт напрямую. Оставьте пустым для авто-списка RU подсетей.

Captive Portal

Страницы-заглушки для заблокированных клиентов (HTTP-трафик редиректится на указанные URL).

Telegram-бот

Email (SMTP)

Резервная копия

Справка

Инструкция по настройке

Подписки
Нет подписок
Создайте первую подписку для группового управления клиентами

Создать ключ

Все настройки наследуются от подписки

Детали

-
Статус
-
Скачано
-
Загружено
-
Остаток

Истекает: -  |  Адрес: -  |  Устройств: -

Последняя активность: -

Настройки наследуются от подписки

QR

Отсканируйте в приложении Cosmo

Одноразовые и защищённые ссылки для скачивания конфига. Можно отправить клиенту.

История изменений конфигурации. Можно откатить к предыдущей версии.

Добавить Webhook

Добавить администратора

Создать API ключ

Добавить сервер

Перенос клиента

Выберите целевой сервер для переноса клиента. Текущий конфиг будет заменён.

Создать подписку

Добавить трафик

Продлить

Перенести ключ