- Rust 100%
| billing_core | ||
| tg_gateway | ||
| vpn_provisioner | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| compose.yaml | ||
| README.md | ||
Цель
Проект представляет собой централизованный сервис (Master-узел) для автоматизации биллинга, управления жизненным циклом пользователей и контроля распределенных VPN-серверов (Worker-узлов) на базе протокола Xray.
Основная задача системы — полное исключение ручного администрирования подписок и обеспечение приема платежей без публичной компрометации личных банковских реквизитов администратора. Система берет на себя изоляцию инфраструктуры: конечный пользователь взаимодействует исключительно с Telegram-ботом, платежный шлюз асинхронно подтверждает транзакции, а оркестратор по REST API синхронизирует статусы доступов на конечных узлах.
Архитектура
Архитектура построена по паттерну Master-Worker с событийно-ориентированной (Event-Driven) моделью обработки платежей и выдачи доступов.
Система состоит из трех изолированных контуров:
- Master Node (Оркестратор): Единая точка входа и Source of Truth.
- Обрабатывает клиентские команды интерфейса (Telegram).
- Локализует генерацию платежных ссылок по спецификации шлюза.
- Принимает и криптографически валидирует (по
sha1_hash) входящие HTTP-вебхуки от платежной системы. - Управляет транзакциями в реляционной базе данных.
- Формирует итоговые URI-строки (формата
vless://) для клиентов.
- Worker Nodes (VPN-серверы): Изолированные серверы (гео-распределенные ноды). Не содержат бизнес-логики и базы пользователей. Обрабатывают исключительно зашифрованный сетевой трафик (Xray-core) и принимают команды на мутацию состояния конфигурации через API-шлюз (3x-ui).
- Векторы взаимодействия (Контракты данных):
- B2C (Telegram API): Асинхронный опрос (Long Polling) или Webhook для команд
/pay,/status. - B2B (YooMoney QuickPay): Однонаправленный HTTP POST (p2p-incoming) от шлюза к оркестратору.
- M2W (3x-ui REST API): Stateful-взаимодействие (Cookie-based Session). Вызов эндпоинтов
/xui/API/inbounds/addClientиupdateClientдля провижининга UUID.
- B2C (Telegram API): Асинхронный опрос (Long Polling) или Webhook для команд
Стек
Инфраструктура и кодовая база опираются на следующие технологии:
- Backend Orchestrator: Rust. Выбран для обеспечения предсказуемого потребления памяти и строгой типизации контрактов.
- Сетевое взаимодействие:
reqwest(HTTP-клиент для Xray API),axum(сервер для приема Webhooks). - Telegram Interface:
teloxide.
- Сетевое взаимодействие:
- Database (Source of Truth): PostgreSQL. Реляционное хранение таблиц
users,payments,nodesс обеспечением ACID для финансовых транзакций. ORM / Query Builder:sqlxилиdiesel. - VPN Core: Xray-core. Реализация протоколов VLESS, XTLS-Reality, Vision.
- Worker API Gateway: 3x-ui (используется исключительно как REST-интерфейс доступа к конфигурации Xray; локальная БД SQLite на узлах игнорируется).
- Payment Processing: ЮMoney API (генерация форм QuickPay + HTTP-уведомления).