Здесь и состояние канала, и кнопки, чтобы его починить: открыть, переподключить, проверить, закрыть, перезапустить демон на сервере и посмотреть его логи.
Возможности
- Список всех серверов. Показывается всё, что сохранено, включая серверы без туннеля — они видны как отключённые.
- Карточка на сервер. Цветная точка и подпись статуса, имя, адрес и порт, состояние обратного канала и демона, число переподключений и время последней проверки. Живые туннели всегда сверху, дальше по имени.
- Шапка с двумя числами: сколько туннелей сейчас живо и сколько серверов всего в списке.
- Всплывающие сообщения внизу экрана: итог действия или текст ошибки.
- Кнопка Open. Открывает туннель — видна, пока туннеля нет.
- Кнопка Reconnect. Полностью переподнимает туннель — видна, когда туннель уже есть.
- Кнопка Check now. Сквозная проверка обоих направлений с попыткой починить.
- Меню действий (три точки): перезапустить демон на сервере, открыть его логи, закрыть туннель.
- Копирование порта. Тап по строке с адресом кладёт локальный порт в буфер.
- Логи демона в отдельном окне с кнопкой Refresh.
- Кнопка обновления в шапке — перечитать список разом.
- Автообновление: пока экран на виду, список перечитывается каждые 5 секунд.
Технические данные
| Параметр | Значение |
|---|---|
| Интервал опроса | 5 секунд |
| Статусов у туннеля | 6, все перечислены в разделе ниже |
| Статусов без туннеля | 2: отключён и неизвестно |
| Строк лога демона | 200 |
| Высота окна логов | до 360 единиц, дальше прокрутка |
| Где берутся туннели | один запрос всех туннелей сразу |
| Где берутся серверы | локальная база приложения |
| Что проверяет Check now | оба направления, с лечением |
| На этом устройстве сейчас | туннелей нет, список пуст |
Как читать карточку
Цвет точки и подпись справа говорят о главном:
- Зелёный — канал живой. Это состояния «готов», «туннель поднят» и «кодекс запускается».
- Жёлтый — канал в процессе: подключается или переподключается.
- Красный — упал.
- Серый — туннеля нет, сервер просто отключён, либо статус неизвестен.
Всего у туннеля шесть состояний: три зелёных (готов, туннель поднят, кодекс запускается), два жёлтых (подключается, переподключается) и одно красное (упал). У сервера без туннеля — два серых: отключён и неизвестен.
Под точкой идёт строка деталей: адрес и порт сервера, затем состояние обратного канала и демона, число переподключений и когда была последняя проверка. Если туннеля нет, эта строка показывает только адрес.
Почему ошибка бывает серая
Самая частая путаница на этом экране — старая ошибка, которая выглядит как свежая. Поэтому текст ошибки бывает двух видов:
- Красный и без времени — сбой происходит прямо сейчас.
- Серый, с пометкой вида «последний сбой 12 мин назад» — сбой был, но туннель после него поднялся.
Если красной строки нет, а статус зелёный, туннель живой и тревожиться не о чем.
Почему после закрытия туннель не поднимается сам
У туннелей есть фоновая страховка: если канал не поднялся, она пробует его пересоздать. Но она не должна отменять ручное решение человека, поэтому при нажатии «закрыть» сначала ставится метка «пользователь закрыл» — и только потом уходит запрос. Метка снимается при следующем открытии.
Побочный эффект: если запрос на закрытие не прошёл из-за сети, метка снимается и страховка снова берёт туннель под присмотр. Сам канал при этом может остаться живым — тогда он продолжит работать, но закрытым не считается.
Метки живут только в памяти: после перезапуска приложения туннели сами не поднимутся, открывать их нужно вручную.
Если туннеля нет, но сервер есть
Это не поломка, а обычное состояние: сервер сохранён, канал не открывали. Чтобы поднять, нажмите Open. Если сервер вообще не добавлялся, экран покажет пустое состояние с подсказкой добавить сервер в разделе удалённых агентов.
Бывает и обратная ситуация: туннель жив, а записи сервера в приложении уже нет. Такая строка помечена словами «нет записи сервера» и остаётся в списке, чтобы живой канал не потерялся. Переподключение и проверка на ней работают, а вот кнопки Open и меню действий не покажутся: без записи сервера нечем ни открыть туннель заново, ни перезапустить демон.
Что агент умеет
Агент может открыть этот экран через мост командой app_navigate на экран tunnels и прочитать состояние командой app_ui_tree.
Агент также может сам обратиться к серверу за состоянием всех туннелей и за сквозной проверкой — это обычные запросы, доступные и человеку через любой HTTP-клиент. Кнопки на экране агент не нажимает: открытие, закрытие и перезапуск демона меняют живое соединение к чужому серверу, и такое решение должен принимать человек.
Ограничения
- Опрос каждые 5 секунд идёт, пока экран открыт. При слабой сети это заметно.
- После любого действия список перечитывается сам, ждать следующего опроса не нужно.
- Возраст ошибок и проверок обновляется только вместе с опросом, поэтому в первые пять секунд после действия подписи ещё показывают старое время.
- Кнопки на карточке блокируются на время действия, но остальные карточки остаются доступны.
- Логи демона тянутся по SSH к самому серверу: без доступа окно покажет ошибку или пустоту.
- Переподключение не требует пароля, если туннель уже есть: серверная часть берёт сохранённые данные из самого туннеля. Для первого открытия пароль нужен.
- Список серверов — общий с разделом удалённых агентов, но кнопок установки и сервисных действий здесь нет: только соединение.
- Все тексты на экране английские.