Spec-Zone.ru › Web Extensions

Нативные манифесты

Нативные манифесты — это файлы JSON со специальным форматом, которые размещаются на компьютере пользователя каким-либо способом, не связанным с процессом установки расширения. Например, нативный манифест может быть предоставлен администратором устройства или установщиком нативного приложения.

Существует три типа нативных манифестов:

Нативные манифесты обмена сообщениями Включают функцию нативного обмена сообщениями, позволяющую расширению обмениваться сообщениями с нативным приложением, установленным на устройстве.
Нативные манифесты управляемого хранилища Определяют доступные для чтения данные, к которым расширение может получить доступ, используя API storage.managed.
Нативные манифесты PKCS #11 Позволяют расширению использовать API pkcs11 для перечисления модулей безопасности PKCS #11 и их установки в Firefox.

Для всех нативных манифестов необходимо позаботиться о том, чтобы браузер мог их найти. Раздел местоположения манифеста описывает эти правила.

Нативные манифесты обмена сообщениями

Нативный манифест обмена сообщениями содержит единственный объект JSON со следующими свойствами:

Имя Тип Описание
name Строка

Имя нативного приложения.

Оно должно совпадать с именем, переданным в runtime.connectNative() или runtime.sendNativeMessage() расширением.

В macOS и Linux оно также должно совпадать с именем файла нативного манифеста (без .json расширения).

В Windows оно должно совпадать с именем создаваемого вами ключа реестра, содержащего расположение нативного манифеста обмена сообщениями.

Имя должно соответствовать следующему регулярному выражению: "^\w+(\.\w+)*$". Это означает, что оно может содержать только символы (строчные или прописные) букв и цифр, подчеркивания и точки. Оно не может начинаться или заканчиваться точкой, а точка не может быть следом за другой точкой.

description Строка Описание нативного приложения.
path Строка

Путь к нативному приложению.

В Windows он может быть относительным к самому манифесту. В macOS и Linux он должен быть абсолютным.

type Строка

Описывает метод подключения расширения к приложению.

В настоящее время здесь может быть только одно значение — "stdio", которое указывает, что сообщения принимаются приложением через стандартный ввод (stdin) и отправляются через стандартный вывод (stdout).

allowed_extensions Массив строк

Массив значений ID дополнений. Каждое значение представляет расширение, которое разрешено обмениваться сообщениями с этим нативным приложением.

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

Например, вот манифест для нативного приложения ping_pong:

{
  "name": "ping_pong",
  "description": "Example host for native messaging",
  "path": "/path/to/native-messaging/app/ping_pong.py",
  "type": "stdio",
  "allowed_extensions": [ "ping_pong@example.org" ]
}

Это позволяет расширению с ID ping_pong@example.org подключиться, передав имя ping_pong в соответствующую функцию API runtime. Само приложение находится по адресу /path/to/native-messaging/app/ping_pong.py.

Нативные манифесты управляемого хранилища

Нативный манифест управляемого хранилища содержит единственный объект JSON со следующими свойствами:

Имя Тип Описание
name Строка

Идентификатор расширения, которое может получить доступ к этому хранилищу, указанный как ID, указанный вами в ключе browser_specific_settings расширения.

description Строка Описание, понятное для человека, игнорируется Firefox.
type Строка

Это должно быть "storage".

data Объект

Объект JSON, который может содержать любые допустимые значения JSON, включая строки, числа, булевы значения, массивы или объекты. Это данные в области хранилища browser.storage.managed.

Например:

{
  "name": "favourite-color-examples@mozilla.org",
  "description": "ignored",
  "type": "storage",
  "data":
  {
    "color": "management thinks it should be blue!"
  }
}

С этим манифестом JSON расширение favourite-color-examples@mozilla.org могло бы получить доступ к данным с помощью кода такого рода:

let storageItem = browser.storage.managed.get('color');
storageItem.then((res) => {
  console.log(`Managed color is: ${res.color}`);
});

Нативные манифесты PKCS #11

Нативный манифест PKCS #11 — это файл, содержащий объект JSON со следующими свойствами:

Имя Тип Описание
name Строка

Имя модуля PKCS #11.

Оно должно совпадать с именем, используемым в API pkcs11.

В macOS и Linux оно также должно совпадать с именем файла манифеста (без расширения).

В Windows оно должно совпадать с именем создаваемого вами ключа реестра, который содержит расположение манифеста.

Имя должно соответствовать следующему регулярному выражению: "^\w+(\.\w+)*$". Это означает, что оно может содержать только строчные буквы, цифры, символы подчеркивания и точки. Оно не может начинаться или заканчиваться точкой, а точка не может быть следом за другой точкой.

description Строка

Описание модуля.

Используется для задания дружественного имени модуля в пользовательском интерфейсе браузера (например, в диалоговом окне «Устройства безопасности» в Firefox).

path Строка

Путь к модулю.

В Windows он может быть относительным к самому манифесту. В macOS и Linux он должен быть абсолютным.

type Строка Это должно быть "pkcs11".
allowed_extensions Массив строк

Массив значений ID дополнений. Каждое значение представляет расширение, которое разрешено взаимодействовать с модулем.

Примечание: Это означает, что вам, вероятно, потребуется включить ключ browser_specific_settings в файл manifest.json своего расширения, чтобы можно было указать явный ID во время разработки.

Например:

{
  "name": "my_module",
  "description": "My test module",
  "type": "pkcs11",
  "path": "/path/to/libpkcs11testmodule.dylib",
  "allowed_extensions": ["my-extension@mozilla.org"]
}

С этим манифестом JSON, сохранённым как my_module.json, расширение my-extension@mozilla.org могло бы установить модуль безопасности по адресу /path/to/libpkcs11testmodule.dylib с помощью кода такого рода:

browser.pkcs11.installModule("my_module");

Расположение манифеста

В Linux и macOS манифест необходимо хранить в определенном месте. В Windows необходимо создать ключ реестра, указывающий на расположение манифеста.

Подробные правила одинаковы для всех типов манифестов, за исключением того, что предпоследний компонент пути идентифицирует тип манифеста. Примеры ниже показывают форму для каждого из трёх типов. Во всех примерах <name> — значение свойства name в манифесте.

Windows

Для глобальной видимости создайте ключ реестра со следующим именем:

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\<name>
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\ManagedStorage\<name>
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\<name>

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

Предупреждение: Начиная с Firefox 64, сначала проверяется представление реестра 32-разрядных приложений (Wow6432Node), затем — «родное» представление реестра. Используйте то, которое соответствует вашему приложению.

Для Firefox 63 и более ранних версий: Этот ключ не должен создаваться в Wow6432Node, даже если приложение 32-разрядное. Предыдущие версии браузера всегда искали ключ в «родном» представлении реестра, а не в 32-разрядной эмуляции. Чтобы убедиться, что ключ создаётся в «родном» представлении, вы можете передать флаги KEY_WOW64_64KEY или KEY_WOW64_32KEY в RegCreateKeyEx. См. Доступ к альтернативному представлению реестра.

Для видимости только для текущего пользователя создайте ключ реестра со следующим именем:

HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\<name>
HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\<name>
HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\<name>

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

macOS

Для глобальной видимости сохраните манифест в:

/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json
/Library/Application Support/Mozilla/ManagedStorage/<name>.json
/Library/Application Support/Mozilla/PKCS11Modules/<name>.json

Для видимости только для текущего пользователя сохраните манифест в:

~/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json
~/Library/Application Support/Mozilla/ManagedStorage/<name>.json
~/Library/Application Support/Mozilla/PKCS11Modules/<name>.json

Linux

Для глобальной видимости сохраните манифест в:

/usr/lib/mozilla/native-messaging-hosts/<name>.json
/usr/lib/mozilla/managed-storage/<name>.json
/usr/lib/mozilla/pkcs11-modules/<name>.json

или:

    /usr/lib64/mozilla/native-messaging-hosts/<name>.json
    /usr/lib64/mozilla/managed-storage/<name>.json
    /usr/lib64/mozilla/pkcs11-modules/<name>.json

Для видимости только для текущего пользователя сохраните манифест в:

~/.mozilla/native-messaging-hosts/<name>.json
~/.mozilla/managed-storage/<name>.json
~/.mozilla/pkcs11-modules/<name>.json

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API