Telegram работает у операторов, которые его блокируют
Все обращения к Telegram — кнопка «Найти Chat ID», пересылка SMS в чат, команды бота — теперь идут лестницей: сначала прямой путь, при молчании — через HTTP-порт clash. Прямой 443 к api.telegram.org у операторов РФ закрыт, а собственный трафик роутера идёт мимо clash: tproxy перехватывает только форвард из LAN. У пробы Telegram на панели и geo-запросов спидтеста этот обход давно был, а у телеграм-уведомлений — нет, поэтому на таких аплинках была мертва вся функция, и ошибка при этом советовала «проверить токен».
Порт прокси ищется тремя способами: из файла конфига (легаси-раскладка ssclash), из рантайма mihomo (в tproxy/tun-конфигах порта в файле нет вовсе), а если порт закрыт — mihomo открывает его на лету через своё API: та же штатная ручка, которой пользуются дашборды; порт слушает только 127.0.0.1, событие пишется в журнал.
Мёртвый прямой путь запоминается на 10 минут — пересыльный тик ходит каждые ~30 секунд и сжигал бы таймаут на каждом вызове. Если молчат и прямой путь, и туннель, страница говорит правду: «прямой путь закрыт оператором, запустите SSClash» — вместо совета про токен.
Утечки и гонки — полный аудит 40 тысяч строк
Каждый фикс проверен на живом роутере.
- Времянки с ключом-PID утекали при убийстве процесса — а убивают у нас штатно: сторож режет зависший опрос на 25-й секунде, rpcd на 30-й.
/tmp— это tmpfs, то есть текла память. В круге сторожа появился подметальщик: сироты старше 10 минут удаляются. - Гонка таймаута очереди AT-порта: фоновый flock мог успеть взять замок ровно в момент своего убийства — замок молча повисал до конца жизни процесса, а функция отвечала «не взял». В ветке отказа замок теперь снимается и дескриптор закрывается.
mmcli --enableв лестнице лечения запускался каждый круг без таймаута и гарда повтора — на заклинившем ModemManager копилось по висящему процессу каждые ~30 секунд.- Ряд приоритетов мог молча замереть навсегда: флаг-гард поллера не сбрасывался при самоснятии, и новый экземпляр блока больше не опрашивался.
- Ряд вкладок больше не перерисовывается, пока открыт редактор имени — поле ввода пропадало прямо под руками, когда дорезолвился оператор.
Скорость
- Сторож проверяет свежесть снимка сам, прежде чем запускать сборщик: ушли 4–6 пустых запусков за круг (каждый — полный парс скрипта).
- Снимок метрик собирается без подстановок команд: 98 форков на снимок заменены санацией внутри шелла, паритет со старым выводом сверен побайтово. Эмиттер: 134 → 86 мс. Попутно снято профилирование фаз: основное время сбора — это обмены с модемом, а не шелл.
Виджеты и карточки аплинков
- Переставленные карточки виджетов больше не разъезжаются обратно спустя тик: коммит обновлял конфиг, но не порядок в памяти страницы, и следующий тик собирал ряд по старому.
- Порядок с панели зеркалится в секции конфига — списки пингов и сервисов в настройках теперь стоят так же, как карточки на панели.
- У фона карточек появился режим иконок: та же картинка, что в шапке карточки (логотип оператора SIM, значки Wi-Fi и кабеля), в полтора роста карточки, с заходом за правый край. Цифры сажаются по фактическим метрикам шрифта прямо в браузере — касаются верха и низа и стоят по центру на любой теме.
Страница настроек
- Блок «Обновление приложения» стоит на той же плашке, что и остальные секции.
- Версии — две строки вместо трёх: «Текущая версия» и «Доступно обновление: N» с жирным номером и без «v» из имени тега; то же у базы APN. Текст стоит справа от значка-вопросика, а не под ним.