> ## Documentation Index
> Fetch the complete documentation index at: https://omniflow-vpn.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Каталог подключения

> Платформы и клиентские приложения, которые рекомендует установка: редактируются из панели, читаются ботом и браузером из одних и тех же строк

`/admin/settings/connect` — место, где установка решает, что предлагать
устанавливать своим клиентам: какие платформы показывать, какое приложение
рекомендовать первым на каждой, где его взять и что говорят шаги настройки.

Раньше это была таблица, вкомпилированная в бинарник Go. Свойство, ради которого
это делалось, — единственное, что нельзя потерять: Telegram-бот и веб-кабинет
читают одни и те же рекомендации, поэтому никого нельзя попросить установить одно
приложение в чате и другое в браузере. Теперь это свойство держится на том, что
обе поверхности читают один запрос, а не на том, что обе слинкованы с одной
константой, — и добавление приложения больше не требует релиза.

> [!NOTE]
>
> Обновление ничего не меняет. Миграция засевает ровно те пять платформ и
> одиннадцать записей, которые были вкомпилированы, в том же порядке
> рекомендации и с теми названиями, которые использовал собственный каталог
> сообщений бота. Установка, которая никогда не откроет этот экран, рекомендует
> сегодня то же, что рекомендовала вчера.

## Платформы

Платформа — то, из чего клиент выбирает первым делом. У каждой есть ключ,
название на английском и русском, порядок и переключатель.

Названия хранятся, а не разрешаются из каталога сообщений, потому что оператор,
добавляющий платформу, никак не может добавить ключ перевода в скомпилированный
каталог. Отсутствующее русское название сохраняется как английское, а не
оставляется отрисовываться пробелом.

**Выключение платформы убирает её с обеих поверхностей**, в том числе по ссылке,
называющей её напрямую, — поэтому устаревшая закладка откатывается к первой
предлагаемой платформе, а не добирается до отозванных рекомендаций. На
собственном экране оператора она остаётся: включить её обратно — то, ради чего
эту страницу открывают.

Удаление платформы удаляет все описанные под ней приложения. Именно поэтому
удаление подтверждается, а переключатель рядом — нет.

## Приложения

Каждая запись называет приложение, схему, импортирующую в него подписку, и
необязательно адрес загрузки и инструкции по настройке.

| Поле | Правило |
| - | - |
| Приложение | Название на кнопке и в шагах. Уникально в пределах платформы. |
| Схема импорта | Должна выглядеть как `happ://add/`. См. ниже. |
| Адрес загрузки | Только `https://` или пусто. |
| Инструкции | Необязательны, по языкам. Заменяют общие шаги. |
| Порядок | Меньшее — раньше. **Первая** запись — та, которую называют шаги настройки. |

Deep-ссылка — это схема с приписанным URL подписки и ничем больше:
`happ://add/https://panel.example.com/sub/…`. Никакого редиректа между ними нет.

Инструкции **заменяют** общие три шага, а не добавляются к ним. Тот, кто описал
собственную настройку, знает что-то, чего не знает общий текст, а показ обоих
оставил бы клиента выбирать между двумя рассказами об одном и том же.

## Схема импорта — граница безопасности

Это значение склеивается со ссылкой подписки и попадает в `href` якоря в
веб-кабинете клиента — на тот же источник, где живёт сессионный cookie. Это
единственное поле на этом экране, ошибка в котором не косметическая.

Схема должна совпадать с шаблоном «имя схемы, `://`, консервативный алфавит
пути» и никогда не может называть `javascript`, `data`, `vbscript` или `file`.
`javascript:` в `href` исполняется; остальные три — соседи, с которыми он ходит.

Оба правила применяются дважды: в Go, чтобы оператор получил сообщение с именем
поля, и как ограничение таблицы, чтобы скрипт, пишущий напрямую в базу, тоже
получил отказ. Адрес загрузки принимается только по https по смежной причине —
это ссылка, которую вручают человеку, собирающемуся установить программу на
собственное устройство.

## Что видит клиент

**В браузере.** Ряд кнопок платформ с названиями оператора, шаги настройки или
инструкции оператора, по кнопке на приложение, вторая кнопка поменьше там, где
есть адрес загрузки, затем QR-код и копируемая ссылка.

**В боте.** Те же платформы инлайн-кнопками, те же шаги или инструкции, по одной
кнопке копирования на приложение — инлайн-кнопки Telegram принимают только
`http`, `https` и `tg`, поэтому схема импорта путешествует копируемым текстом, —
и обычная кнопка-ссылка для адреса загрузки, который является https и потому ею
быть может.

**Когда не настроено ничего.** Обе поверхности сообщают об этом и всё равно
предлагают ссылку подписки: скопировать её в любой совместимый клиент — то, что
обязано работать.

## Права и журнал

Чтение требует `settings.read`, любое изменение — `settings.write`. Сохранения и
удаления попадают в журнал как `connect.platform.saved`,
`connect.platform.deleted`, `connect.client.saved` и `connect.client.deleted` в
категории `configuration`.

## Смежные страницы

> **[Подключение устройства](https://omniflow-vpn.mintlify.site/ru/customer/connection.md)**
>
> Что клиент делает с этими рекомендациями и как путешествует ссылка.

> **[Настройки установки](https://omniflow-vpn.mintlify.site/ru/operations/installation-settings.md)**
>
> Остальные области настроек и то, как сохраняется раздел.

> **[White-label оформление](https://omniflow-vpn.mintlify.site/ru/operations/branding.md)**
>
> Вторая половина того, что делает установку выглядящей и читающейся как своя.

> **[Панель администратора](https://omniflow-vpn.mintlify.site/ru/operations/admin-panel.md)**
>
> Роли, права и журнал аудита за этим экраном.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.