Pairxдля разработчиков

Публикация и версии

Быстрый режим#

Сейчас приложение публикуется из самого Pairx: «+» в чате → «Приложение» → «Новое из кода». Один HTML-файл до 512 КиБ, название — из <title>, переключатель «Только для взрослых (18+)». После «Отправить» сервис:

  1. Читает манифест из <script type="application/pairx+json"> и проверяет пределы.
  2. Проверяет код — те же проверки делает pairx check (см. ниже).
  3. Создаёт приложение и его первую версию и отправляет карточку в чат.

Не больше 30 отправок в час от одного человека.

Что проверяет сервис#

КодЧто ищетЧто будет
webrtcWebRTC: RTCPeerConnection, RTCDataChannel, RTCIceCandidate.ручная проверка
ice-serverАдрес STUN/TURN в строке: "stun:…", 'turn:…'.ручная проверка
frame-realmОбращение к окну или документу фрейма: contentWindow, contentDocument, window.frames, window[0].ручная проверка
minerПризнаки майнера криптовалюты.ручная проверка
detached-clickНажатие ссылки из кода: созданная ссылка и click() в одном файле.ручная проверка
obfuscationПризнаки обфускации: eval или new Function вместе с раскодированием строк.ручная проверка
networkСеть: fetch, XMLHttpRequest, WebSocket, EventSource, sendBeacon — наружу запросы не выполнятся, свои файлы читаются.предупреждение
external-urlВнешний адрес в src, href или import — не загрузится.предупреждение
webglWebGL — на iPhone его нет.предупреждение
audioWebAudio (AudioContext) — на iPhone его нет.предупреждение
indexeddbIndexedDB — на iPhone его нет; используйте localStorage или хранилища Pairx.предупреждение
wasmФайл WebAssembly — на iPhone он не работает.предупреждение
  • Ошибка — сервис не примет приложение и скажет, что исправить: неверный манифест, превышен предел, неподдерживаемый тип файла.
  • Ручная проверка — версия принята, но сразу в чат не уходит: код посмотрит человек, обычно в течение суток. После проверки приложение появится в «Мои приложения» (из выбора приложения в чате) — оттуда его можно отправить. Это признаки обхода песочницы: даже если в вашем коде они случайны, без взгляда человека версия не выйдет.
  • Предупреждение — в песочнице это просто не заработает; приложение публикуется сразу.

Код открыт#

Любой, кто открыл приложение, может посмотреть его код: меню приложения → «Посмотреть код». Не кладите в код того, что не должны видеть другие, — ключи, личные данные, ответы к тесту.

Версии#

Каждая отправка — неизменяемая версия с номером. Экземпляры в чатах открывают текущую версию приложения.

Чтобы данные экземпляров пережили обновление, сервис сравнивает манифест новой версии с выпущенной:

  • хранилища можно только добавлять — убрать нельзя;
  • тип хранилища менять нельзя;
  • права записи writers можно только сузить (everyone → admins → author);
  • per_user_limit счётчика можно только уменьшить.

Для более широкого правила нужно новое хранилище. Новые разрешения в версии — повод снова спросить согласие у каждого.

Жалобы и блокировки#

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

Заблокированное приложение не открывается ни у кого: для всех оно выглядит как удалённое.

Вопросы о проверке и блокировке — на support@mail.pairx.org.