github jatixs/tgbotvpscp 1.24.1

3 hours ago

English Version | Русская Версия

[1.24.1] - 2026-07-05

🛡️ Безопасность и SAST:

  • WebUI (XSS Защита): Устранены множественные SAST-предупреждения и потенциальные XSS уязвимости. Все вызовы innerHTML с пользовательскими данными переведены на использование защищенного DOMPurify.sanitize(..., { RETURN_DOM_FRAGMENT: true }).
  • Уникальные Идентификаторы: Использование небезопасного Math.random() заменено на криптографически стойкий генератор window.crypto.getRandomValues() для предотвращения предсказуемости ID модальных окон.
  • Core / Subprocess: Усилена безопасность выполнения shell-команд в модуле fail2ban и агенте ноды (node.py). Потенциально небезопасные вызовы create_subprocess_shell и subprocess.run переведены на использование create_subprocess_exec и статических списков аргументов для предотвращения внедрения вредоносного кода (Shell Injection).

🚀 Добавлено / Улучшено:

  • Система Биллинга (Billing): Внедрена комплексная система отслеживания платежей. Для каждой ноды и мастер-сервера теперь можно задать стоимость аренды, выбрать валюту (€ / $ / ₽) и установить дату следующего платежа прямо из Telegram бота.
  • Автоматические Напоминания (Billing): Фоновая задача автоматически определяет хостинг-провайдера ноды (через ip-api) и отправляет администратору предупреждение за 3 дня до окончания оплаченного периода.
  • WebUI (Аренда и Модальные окна): В карточках нод и шапке веб-панели добавлены информативные бейджи с оставшимся количеством дней до оплаты. В модальном окне выведены подробности: провайдер, стоимость и точная дата платежа.
  • БД (Автоматические Миграции): Внедрен механизм автоматических миграций через aerich, гарантирующий корректное обновление схемы базы данных без потери данных.
  • Выбор Метода Пинга: В настройках WebUI добавлен переключатель метода измерения задержки: ICMP или HTTP (HEAD-запрос), что решает проблему блокировки ICMP-пакетов строгими файрволами.
  • Локализация и Чистота Языка: Проведена масштабная чистка интерфейса. В русской локализации удалено более 35 англицизмов («CPU/RAM/Disk» → «ЦП/ОЗУ/Диск», «Рестарт/Стоп» → «Перезапуск/Остановка», «Оффлайн» → «Не в сети» и т.д.). Для английской локализации переписаны всплывающие уведомления (тосты) на более естественный язык (например, «Lite version enabled» вместо «Light Version: ON»).
  • Дизайн и Эстетика: Убраны избыточные зелёные подложки и обводки у активных элементов и бейджей в модальных окнах нод. Дизайн стал более минималистичным, строгим и современным.

🔧 Исправлено:

  • WebUI (Прокрутка страницы): Исправлен неприятный баг в дашборде, из-за которого при закрытии окна деталей ноды на десктопных устройствах страница прокручивалась в самый верх. Теперь позиция скролла корректно сохраняется и восстанавливается на всех типах устройств.
  • WebUI (Монитор Нод — SSE): Устранена проблема с каналом событий (SSE), обеспечивающим предварительную отрисовку сервисов — теперь данные отображаются моментально.
  • WebUI (Защита DOMPurify): Обработчики кликов на кнопках биллинга переработаны во избежание их случайного удаления строгим анти-XSS фильтром DOMPurify.
  • Core / Middlewares: Исправлена ошибка AttributeError: 'int' object has no attribute 'tzinfo' в CallbackTTLMiddleware при обработке устаревших callback-запросов.
  • WebUI (Адаптивность): Раскладка страницы настроек переработана и теперь корректно масштабируется на узких мобильных экранах без обрезки контента.
  • Ноды / Агент: Удалены неиспользуемые глобальные переменные в node.py, устраняющие предупреждения линтера при импорте.

Full Changelog: 1.23.4...1.24.1

Don't miss a new tgbotvpscp release

NewReleases is sending notifications on new releases.