Releases: Adam-Sizzler/v2ray-stat
v26.2.22
Full Changelog: v26.2.15...v26.2.22
v26.2.15
Full Changelog: v26.1.27...v26.2.15
Новый UI: Масштабное обновление фронтенда. Добавлены новые скрипты (script.js), стили (styles.css) и библиотека иконок (svg.js) для интерфейса подписок.
-
Безопасность доступа: Внедрен AuthMiddleware. Теперь доступ к статическим активам API защищен проверкой сессионного токена. В случае отсутствия авторизации реализован редирект.
-
Защита от кэширования: Добавлены заголовки Cache-Control: no-store, чтобы гарантировать актуальность проверки сессии при каждом запросе.
Улучшение обработки данных
-
Гибкие единицы измерения: Функция FormatData теперь поддерживает динамический выбор единиц (bps, byte, MiB, GiB и т.д.) на основе конфигурации мониторинга.
-
Логирование: Добавлен LoggingMiddleware для детального отслеживания HTTP-запросов (метод, путь, время ответа, IP).
v26.1.27
Full Changelog: v26.1.26...v26.1.27
Основные изменения
-
Рефакторинг статистики: Полностью переработана логика агрегации почасового трафика (aggregateHourlyStats). Теперь используется система накопления разницы (diff) через mutex, что повышает точность данных.
-
Умные фильтры истории: В HistoryStatsHandler добавлен параметр date с поддержкой "умного" парсинга (год, месяц, день или диапазон через запятую).
-
Режим суммирования: Добавлен флаг sum=true, позволяющий получить агрегированные данные за период с расчетом средней скорости (Rate).
-
Улучшение таблиц: В FormatTable добавлена поддержка выравнивания чисел по правому краю и автоматическое форматирование колонок Total и Rate (bps/byte).
Чистка кода
-
Удален неиспользуемый файл backend/db/temp.go.
-
Оптимизирована структура БД: удалены лишние поля updated_at из таблиц статистики.
v26.1.26
Full Changelog: v26.1.23...v26.1.26
Новая функциональность
- Добавлена система сбора исторической статистики с почасовой агрегацией данных
- Новые API-эндпоинты для доступа к историческим данным:
/api/v1/history- JSON API с фильтрацией по периоду и типу данных/api/v1/history-text- текстовое представление в виде таблицы
- Поддержка группировки по пользователям/источникам и по времени
Изменения в структуре базы данных
- Добавлены таблицы для хранения исторических данных:
daily_user_stats- статистика по пользователямdaily_source_stats- статистика по источникам (inbounds)
- Созданы соответствующие индексы для оптимизации запросов
Улучшения конфигурации
- Все порты в конфигурационных файлах теперь используют тип
intвместоstring - Улучшена валидация конфигурационных параметров
- Обновлены регулярные выражения для парсинга логов
Изменения в логике работы с пользователями
- Обновление учетных данных существующих пользователей вместо возврата ошибки при добавлении
- Улучшен процесс синхронизации UUID пользователей между нодами
- Добавлена очистка старых записей при замене UUID
Мониторинг и агрегация
- Реализован фоновый процесс агрегации статистики каждые 10 минут
- Добавлены механизмы для корректного расчета дельты трафика
- Улучшено логирование процессов агрегации
Подписки и клиенты
- Расширен список поддерживаемых клиентов для определения типа подписки
- Добавлены новые user-agent для современных клиентов (Clash Meta, Sing-box и др.)
Исправления ошибок
- Исправлены race conditions при работе с глобальными переменными статистики
- Улучшена обработка ошибок в задачах (tasks)
- Исправлены проблемы с форматами времени и часовыми поясами
Технические улучшения
- Рефакторинг кода: вынесена логика агрегации в отдельные модули
- Улучшена производительность запросов к базе данных
- Добавлено более детальное логирование для отладки
API изменения
- Перемещены legacy endpoint'ы в
/api/v1/old/ - Новые task-based endpoint'ы теперь являются основными для операций с пользователями
- Улучшена структура ответов API
v26.1.23
Full Changelog: v26.1.22.1...v26.1.23
🔁 Управление сервисами
- Добавлен контекст с таймаутом при рестарте сервисов, чтобы операции не зависали бесконечно.
- Улучшена логика рестарта Docker-контейнеров (
singbox,xray) с корректной нормализацией имён. - После рестарта Docker-контейнера добавлена небольшая задержка для стабилизации состояния.
⚙️ Конфигурация Node
-
Упрощена и приведена в порядок
config.yml. -
Чётко разделены и переименованы флаги:
service_manager: systemd | dockerfeatures.haproxyfeatures.restart
-
Обновлено регулярное выражение для парсинга access-логов Xray/Sing-box.
-
Удалены устаревшие и дублирующиеся параметры.
👥 Управление пользователями
-
Добавлены ретраи при получении списка пользователей после рестарта core-сервиса (add / delete).
-
Корректная обработка ситуации, когда API core-сервиса ещё не поднялся.
-
HAProxy:
- Обновление CSV вынесено под единый флаг
haproxy - Рестарт HAProxy выполняется только при включённой опции
features.restart
- Обновление CSV вынесено под единый флаг
🌐 Subscription handler
-
Улучшено определение клиентов Sing-box:
- добавлена поддержка
sfa,sfi,sfm,sft,karing,rabbithole
- добавлена поддержка
-
Более корректная классификация User-Agent’ов.
🧹 Прочее
- Удалён случайно закоммиченный бинарный файл.
- Код приведён к более предсказуемому и безопасному поведению при ошибках.
v26.1.22.1
Full Changelog: v26.1.22...v26.1.22.1
🛠 Система версионирования (Build Info)
Теперь все компоненты системы (Backend, Node, Subscription) поддерживают расширенную информацию о сборке.
- Добавлен флаг
--versionдля бинарных файлов. - Вывод включает: версию, ревизию (git commit), теги сборки, статус CGO и версию Go.
🏗 Оптимизация жизненного цикла БД и ресурсов
- Исправление утечки контекстов: Логика синхронизации БД вынесена в отдельную функцию
performSyncCycle, что гарантирует корректную работуdefer syncCancel()и предотвращает накопление ресурсов в памяти. - Безопасное переподключение SQLite: Теперь при пересоздании файловой базы старое соединение закрывается принудительно, исключая утечки файловых дескрипторов.
- Graceful Shutdown: Исправлена работа с
WaitGroup— теперь приложение корректно ожидает завершения всех фоновых задач перед выходом.
🐛 Исправления логики (Bug Fixes)
- Статус Last Seen: Исправлена логика отображения статусов
online/neverв SQL-запросах. Порядок условийCASEприведен к корректному виду. - Мониторинг активности: Исправлено пороговое значение
lastSeenвtraffic_manager.go. Теперь статус активности пользователя (inactive) определяется корректно относительно временных меток. - Add User: Значение времени при добавлении пользователя инициализируется корректно (
0вместо текущего времени в определенных сценариях) для синхронизации состояний.
📦 Изменения в именовании артефактов
Бинарные файлы в релизах теперь имеют измененные названия:
v2ray-stat-backend➡️v2rs-backendv2ray-stat-node➡️v2rs-nodev2ray-stat-sub➡️v2rs-sub
🔧 Технические изменения
- Увеличены таймауты синхронизации БД до 15 секунд для повышения стабильности на медленных дисках.
- Добавлена поддержка тегов сборки (например,
journald) непосредственно в Docker-образы.
Как пользоваться новой проверкой версии:
./v2rs-backend --version
# Выведет:
# version: 26.1.22.1
# environment: go1.25 linux/amd64
# tags: journald
# revision: a1b2c3d4...
# cgo: enabledv26.1.22
Full Changelog: v26.1.21.2...v26.1.22
🚀 Release: Service Manager Refactoring & HAProxy CSV Integration
В данном обновлении мы значительно переработали логику управления сервисами и перешли на более надежный метод аутентификации в HAProxy через CSV-файлы.
🛠 Ключевые изменения:
1. Универсальный менеджер сервисов (ServiceManager)
Теперь поддерживается гибкое управление процессами в зависимости от среды окружения:
- Systemd: Стандартное управление через
systemctlдля классических инсталляций. - Docker: Прямое управление контейнерами через Docker API (используется пакет
github.com/docker/docker). - Гибкая конфигурация: В
config.ymlдобавлен параметрservice_manager, позволяющий выбрать способ перезапуска служб.
2. Интеграция HAProxy через CSV
Мы отказались от прямого редактирования Lua-скриптов в пользу стандартного механизма аутентификации HAProxy через CSV-таблицы:
- Новый модуль
haproxy/auth.go: Обеспечивает атомарную запись пользователей вusers.csvс использованием временных файлов (защита от повреждения конфига). - Миграция: Файл
auth_lua.goудален, логика перенесена в модуль обработки CSV. - Безопасность: Добавлено хеширование паролей (SHA-224) для протокола Trojan при записи в CSV.
3. Повышение отказоустойчивости (Graceful Error Handling)
- Non-blocking Restart: Ошибки при рестарте ядра (Xray/Singbox) или HAProxy теперь логируются, но не прерывают выполнение основной операции. Это позволяет обновить конфигурационные файлы даже если служба временно недоступна или запускается вручную.
- Таймауты: Для всех операций перезапуска добавлен контекст с таймаутом 15 секунд.
⚙️ Изменения в конфигурации (config.yml):
# Выбор менеджера: systemd или docker
service_manager: systemd
features:
haproxy_auth: true # Включает обновление users.csv
restart: true # Автоматический перезапуск после изменений
📝 Список изменений (Short Changelog):
- Refactor: Реализован интерфейс
ServiceManagerдля поддержки Docker и Systemd. - Feature: Добавлена поддержка динамического обновления
users.csvдля HAProxy. - Fix: Исправлено прерывание удаления пользователей при ошибках
systemctl(теперь выполнение продолжается). - Clean up: Удален устаревший функционал работы с Lua-файлами.
v26.1.21.2
Full Changelog: v26.1.20...v26.1.21.2
- Устранена ошибка, при которой не добавлялись ID пользователей в базу данных, из за чего не работала подписка при запросе к CC
- Устранена ошибка связанная с часовым поясом
- Добавлено логирование и переписана функция считывания логов, теперь сборки для docker образов не используют библиотеку "github.com/coreos/go-systemd/v22/sdjournal". Для этого использовать
-tags [journald|nojournald]
v26.1.20
Full Changelog: v26.1.19.2...v26.1.20
Native Journald Support & Flexible Log Parsing
-
Поддержка systemd-journald: Добавлена возможность читать логи напрямую из системного журнала. Это избавляет от необходимости настраивать запись в отдельные файлы и следить за их ротацией.
-
Гибкий маппинг полей (Log Mapping): Теперь вы можете сами определять, в каких группах регулярного выражения находятся IP, Domain и User. Это позволяет поддерживать Xray, Sing-box, HAProxy и любые другие сервисы без изменения кода.
-
Автоматическая ротация: Для файловых источников реализована функция runDailyCleanup, которая безопасно очищает файл лога раз в сутки, предотвращая переполнение диска.
Технические улучшения
-
Оптимизация Regex: Регулярные выражения теперь компилируются один раз при инициализации процессора, что значительно снижает нагрузку на CPU при обработке больших потоков логов.
-
Абстракция LogSource: Логика чтения вынесена в интерфейс LogSource, что позволило разделить реализацию для файлов и Journald.
-
Безопасный парсинг: Добавлены проверки на границы индексов групп в regex, что предотвращает панику приложения при неверных настройках конфигурации.
Изменения в конфигурации (config.yml)
Добавлены новые параметры в блок core:
core:
log_source: "journal" # Источник: "file" или "journal"
log_service_name: "xray" # Имя юнита для journald
access_log_map: # Маппинг групп регулярного выражения
ip: 1
domain: 2
user: 3v26.1.19.2
Full Changelog: v26.1.19.1...v26.1.19.2
- При добавлении новых пользователей в базу присмаивается значение равное 1 для колонки last_seen, что означает
никогда не был подключен