Прототип приложения bro

Прототип bro - это сайт расположенный на вашем ПК и предназначенный для создания локальных web-ресурсов, с возможностью централизованного обмена данными между web-ресурсами.
Установка
Вы можете установить прототип bro, скачав нужный файл .xiteex из каталога загрузки bro, в соответствии с вашей ОС и архитектурой или воспользоваться поставщиком приложений, детали ниже.
  • Для установки прототипа bro из файла .xiteex, на главном окне программы XITEEX нажмите кнопку НАСТРОЙКИ, далее Управление приложениями > Установка > Из файла.
  • Хеш

    Файл

    SHA256

    bro_linux_amd64.xiteex

    80e26eb08d2228ab18d5165bd24a804dd5977017f855b3b9a6bb0b9697bdabc8

    bro_windows_amd64.xiteex

    c46b5b222b43f48b17a513e367197511265ec256debcf56423d33e700ba3e109

    bro_darwin_arm64.xiteex

    e155d4d5260e5aa57acc180500788de4e511d0e92377b5a74b4a25ec94a1f322

  • Если у вас установлен поставщик приложений, то для установки bro на главном окне программы XITEEX нажмите кнопку НАСТРОЙКИ, далее Управление приложениями > Установка > По открытому ключу. Далее введите имя приложения bro и открытый ключ для поставщика приложений.
    Открытый ключ для поставщика приложений:
    https://disk.yandex.ru/d/8opmAqOkH3kLYA
Запуск сайта
Для запуска сайта необходимо запустить прототип bro и ввести параметры:
  • Локальный сервер
    Адрес локального сервера с указанием порта через двоеточие, по умолчанию это localhost:11222, где localhost - это ваш ПК, а 11222 - это порт вашего ПК. Вместо localhost можно указать конкретный IP, localhost - это псевдоним IP 127.0.0.1, что также указывает на ваш ПК. Если указать текущий IP вашего ПК в вашей локальной сети, то сайт bro будет доступен в вашей локальной сети по IP вашего ПК.
  • Каталог шаблона
    Шаблон bro представляет собой каталог с настроечными файлами и контентом и предназначен для управления размещением контента на сайте bro.
    Выберите необходимый вам каталог шаблона.
Шаблоны bro
Примеры шаблонов bro выложены отдельно, в виде архивов.
Перед использованием шаблона распакуйте архив шаблона на вашем ПК и
ознакомьтесь с информацией о работе шаблона из файла infocard.rtf в папке шаблона.
Примеры шаблонов bro
Масштабирование
bro
Ниже представлена информация
для
масштабирования bro.
Сайт bro
Каждый сайт bro имеет следующие основные компоненты:
  • Ресурс
    Это любой контент с конкретным типом (mime-type), который размещается на уникальном endpoint.
  • Контроллер
    Это внедряемый во вкладку браузера JavaScript или отдельная web-страница предназначенные для управления контентом локального или стороннего сайта/сервиса. В частном случае web-страница контроллера может быть представлена как Ресурс.
  • Сервис обмена
    Это локальный websocket сервис предназначенный для обмена текстовыми данными по ID Ресурса или Контроллера.
  • Сервис прокси
    Это локальный http-сервис предназначенный для отправки http-запросов на web-ресурсы из кода JavaScript Ресурсов и Контроллеров.
Настройка ресурсов и контроллеров
Настройка ресурсов и контроллеров осуществляется через файл sources.csv шаблона bro. Это таблица без заголовка в которой столбцы разделены запятой:
  • Endpoint ресурса
    Уникальный ID ресурса для обращения к нему по URL и для идентификации данных ресурса при передаче данных через сервис обмена. По умолчанию доступ к ресурсу происходит через сегмент безопасности (часть endpoint, случайно сгенерированный hex-код), например: localhost:11222/0123456789...abcdef/endpoint, если указать в начале endpoint ресурса символ подчеркивания, то ресурс будет доступен и по прямой ссылке:
    localhost:11222/_endpoint
  • Имя файла контента ресурса
    Файл содержит контент ресурса.
  • Тип контента ресурса
    Тип (mime-type) контента ресурса для правильной интерпретации контента браузером.
  • Имя файла JavaScript контроллера
    JavaScript контроллера внедряется во вкладку браузера и начинает работать перед выполнением других скриптов страницы при следующей загрузке страницы вкладки, при обновлении страницы или переходе на новый URL.
  • Имя файла содержащего URL страницы контроллера
    Web-страница контроллера размещается на уникальном endpoint или представляет собой URL содержащий данные непосредственно в себе.
  • Endpoint контроллера
    Уникальный ID контроллера для обращения к нему по URL и для идентификации данных контроллера при передаче данных через сервис обмена.
Шаблоны подстановки
Для передачи параметров и некоторых настроек в текст ресурса или контроллера используются шаблоны подстановки вида {{name}}.
Важно: Шаблоны подстановки в одном тексте можно использовать только один раз, повторные указания одного и того же шаблона подстановки будут проигнорированы при замене!
Можно использовать следующие шаблоны подстановки:
  • {{url}}
    Возвращает текущее значение параметра Локальный сервер + сегмент безопасности (часть endpoint, случайно сгенерированный hex-код), например: localhost:11222/0123456789...abcdef
  • {{_url}}
    Возвращает текущее значение параметра Локальный сервер, например: localhost:11222
  • {{content_id}}
    ID ресурса указанный в соответствующей ресурсу/контроллеру строке файла sources.csv шаблона bro.
  • {{control_id}}
    ID контроллера указанный в соответствующей ресурсу/контроллеру строке файла sources.csv шаблона bro.
  • {{lang}}
    Возвращает текущий язык интерфейса XITEEX.
  • {{runapp}}
    Возвращает имя функции JavaScript выполняющей запуск прототипов приложений xiteex. Замена шаблона {{runapp}} выполняется только если имя файла ресурса или контроллера начинается с символа подчеркивания "_". Запуск функции из JavaScript происходит только в соответствующей вкладке контроллера и может быть выполнен следующим образом:
    window['{{runapp}}'](JSON.stringify(['app','bin',argNName','argNValue'...]));
    , где app - приложение, bin - имя исполнимого файла приложения (без расширения), argNName - имя аргумента N приложения (при необходимости), argNValue - значение аргумента N приложения (при необходимости).
Переводы текстов контента
Переводы текстов контента сайта bro размещаются в файле tr.csv шаблона bro. Это таблица в которой первая строка (заголовок) содержит столбцы с указанием языка и столбцы данных разделены запятой, где первый столбец — это оригинальный текст на английском (en), а второй и последующие столбцы — это текст перевода с английского на язык указанный в заголовке столбца таблицы.
Для получения перевода в виде коллекции Map в код JavaScript используется шаблон:
{{GetMapTr "mapName"}}
Сервис обмена bro
После запуска bro вы можете получать доступ к сервису обмена bro по протоколу websocket и использовать для этого endpoint {{url}}/w/s. Сервис обмена сохраняет и возвращает текстовые данные (UTF-8) только по ID ресурсов и контроллеров. Сервис обмена понимает три команды: #show#, #hide# и #drop#. Для сохранения текстовых данных ID и текст данных разделены двоеточием ":". Настройка структуры текстовых данных свободная и сервис обмена никак на это не влияет. По умолчанию все данные помечены как отображаемые.
  • #show#ID[:text]
    Размещает (при наличии двоеточия) и помечает текстовые данные как отображаемые по ID. Возвращает (размещенные) данные в формате ID[:text].
    Примеры:
    "#show#testID" - помечает текстовые данные для ID "testID" как отображаемые;
    "#show#testID:text" - размещает текст "text" под ID "testID" и помечает текстовые данные для ID "testID" как отображаемые.
  • #hide#ID[:text]
    Размещает (при наличии двоеточия) и помечает текстовые данные как скрываемые по ID. Возвращает "0".
    Примеры:
    "#hide#testID" - помечает текстовые данные для ID "testID" как скрываемые;
    "#hide#testID:text" - размещает текст "text" под ID "testID" и помечает текстовые данные для ID "testID" как скрываемые.
  • #drop#ID
    Возвращает текстовые данные по ID независимо от отображения. Данные возвращаются в формате ID[:text].
    Пример:
    "#drop#testID" - возвращает текст для ID "testID".
  • ID[:text]
    ID без команды размещает (при наличии двоеточия) и возвращает данные для существующего ID если они показаны. Не влияет на отображение данных для ID. Данные возвращаются в формате ID[:text]. Возвращает "0" если данные скрыты.
    Примеры:
    "testID" - возвращает текст для ID "testID";
    "testID:text" - сохраняет текст "text" под ID "testID".
Сервис прокси
После запуска bro вы можете получать доступ к сервису прокси по протоколу http и использовать для этого endpoint {{url}}/pro/x/y. Сервис прокси позволяет делать http-запросы к web-ресурсам прямо из кода JavaScript ресурсов и контроллеров.
Важно! URL web-ресурсов должны быть внесены в файл whitelist.txt шаблона bro, если файл отсутствует или пуст, то запуска прокси не будет.
Сервис прокси имеет следующую структуру взаимодействия:
  • Запрос POST
    • Заголовок:
    'Content-Type': 'application/json'

    • Тело запроса (JSON):
    {url: '', method: '', headers: { }, body: ''}
  • Запрос OPTIONS CORS
    Выполняется браузером.
  • Ответ на запрос POST (статус 200)
    • Заголовок:
    'Access-Control-Allow-Origin': '*'
    'Access-Control-Allow-Methods': 'POST, OPTIONS'
    'Content-Type': 'application/json'

    • Тело ответа (JSON):
    {status: <int>, headers: { }, body: ''}
  • Ответ на запрос OPTIONS CORS (статус 204)
    • Заголовок:
    'Access-Control-Allow-Origin': '*'
    'Access-Control-Allow-Methods': 'POST, OPTIONS'

    • Тело ответа:
    (пусто)
  • Ошибка прокси (статус не 200/204)
    • Заголовок:
    'Access-Control-Allow-Origin': '*'
    'Access-Control-Allow-Methods': 'POST, OPTIONS'
    'Content-Type': 'application/json'

    • Тело ответа (JSON):
    {error: ''}