Доработка механизмов работы с логами для ядра Xray, исправление ошибки, когда при включенном отображении доменов при возобновлении пользовательской сессии, старт live-логов приводил к ошибке при рестарте ядра. Ядро не перезапускалось.
- restart_xray_core теперь делегирует задачу проверенному механизму control_xkeen_action (с приоритетом init.d, резервным CLI и повторной проверкой в рантайме) вместо связки SIGKILL + «голый» xkeen -start, который на некоторых роутерах молча игнорируется, из-за чего ядро оставалось остановленным. Выполнение сериализовано через блокировку; start_if_stopped теперь поднимает остановленное ядро при команде «включить логи».
- При включенном отображении доменов команда «Включить логи» сразу устанавливает loglevel=info за один перезапуск, вместо постепенного повышения с warning до info. Раньше два последовательных перезапуска конфликтовали, и xray оставался на старом уровне, из-за чего error.log оставался пустым, а домены не резолвились.
- rearmXrayDomainHintsForLive: при повышении уровня логирования до info/debug теперь создается свежий снимок error.log, благодаря чему закэшированные домены отображаются сразу, без необходимости вручную останавливать и запускать процесс.
- Ядро больше не перезапускается молча просто из-за повторного открытия вкладки (используется гейт _logsUserActivated); защита от параллельных операций (in-flight guard) предотвращает наложение команд включения.
- При включении теперь честно возвращается xray_restarted=false, если перезапуск не произошел, вместо ложного сообщения об успехе.
- Индикатор в шапке теперь имеет три состояния: выключен (переключатель «Online» выключен) / горит ровным зеленым («Online» включен, но сбор не идет) / мигает (логи собираются в реальном времени).