- PVSM.RU - https://www.pvsm.ru -
В свете последних событий связанных с релизом Mozilla Firefox 48, который навёл шухеру среди части пользователей, в связи с обязательным наличием подписи у расширений, люди столкнувшиеся с этой проблемой встали перед выбором, либо:
Как вы уже догадались, здесь пойдёт речь о последнем способе. Если мы не планируем распространять расширения через официальный каталог, то подпись мы можем получить без ручных проверок, т.е. легко и просто.
Для этого нам понадобятся:
Будем рассматривать процесс подписания на примере расширения «Random Agent Spoofer». Данное расширение содержит список юзер-агентов, которые довольно быстро устаревают, а обновляется дополнение не часто. В свою очередь, в официальном репозитории файлы с нужными нам данными обновляются регулярно и возникает закономерное желание пустить их в дело.
Итак, учётную запись зарегистрировали, программное окружение установлено, можно приступать.
Берём подопытное расширение и распаковываем его в отдельную папку, в нашем случае используем слепок репозитория, расположенного по адресу https://github.com/dillbyrne/random-agent-spoofer [4].
Получим следующую структуру каталогов:
test
lib
doc
data
.gitignore
LICENSE
package.json
README.md
Если используется готовое собранное расширение, то в корне папки где оно распаковано, необходимо удалить файлы «bootstrap.js» и
«install.rdf», они создаются программой сборки, а при модификации уже подписанных дополнений ещё и папку «META-INF». Т.к. мы имеем дело с ещё не собранным дополнением, то это не требуется. Следующим шагом будет редактирование файла «package.json», расположенного опять же в корне каталога распакованного расширения. В нашем случае его начало выглядит так:
{
"name": "random-agent-spoofer",
"title": "Random Agent Spoofer",
"id": "jid1-AVgCeF1zoVzMjA@jetpack",
"description": "Allows the use of various browser profiles (including useragent ,platform, oscpu, accept headers and other options), which it can randomly switch between after a chosen period of time has expired",
"author": "dbyrne",
...
}
Если в нём содержится параметр «id» его надо либо изменить, либо удалить. В противном случае, мы получим ошибку при попытке подписи о том, что не являемся его владельцем.
Далее командуем следующее «заклинание» для сборки расширения в архив:
jpm xpi --addon-dir <путь к папке куда распаковали>
или просто:
jpm xpi
, если текущий каталог это и есть корень распакованного расширения.
На выходе должен появиться файл собранного расширения .xpi, который и будем подписывать.
А теперь приготовим свой api-ключ, ради получения которого и регистрировались на addons.mozilla.org [3]. Его можно увидеть по адресу addons.mozilla.org/ru/developers/addon/api/key [5] в таком виде:
Издатель JWT: <private data>
Секрет JWT: <private data>
где <private data> — ваш персональный ключ. И в заключение, собственно, сам акт подписания осуществляем скомандовав:
jpm sign --api-key <api-key data> --api-secret <api-secret data> --xpi <путь к расширению полученному на предыдущем шаге>
Если всё пройдёт без ошибок и автоматическая проверка будет пройдена, то в текущем каталоге мы получим подписанное расширение, в котором и нуждались.
Полезные ссылки:
Документация по jpm: developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm [6]
Signing Api: olympia.readthedocs.io/en/latest/topics/api/signing.html [7]
Всем спасибо за внимание, удачи!
Автор: QuickWind
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/firefox-2/169804
Ссылки в тексте:
[1] https://geektimes.ru/post/279132/#comment_9480372: https://geektimes.ru/post/279132/#comment_9480372
[2] https://geektimes.ru/post/279132/#comment_9480382: https://geektimes.ru/post/279132/#comment_9480382
[3] addons.mozilla.org: https://addons.mozilla.org
[4] https://github.com/dillbyrne/random-agent-spoofer: https://github.com/dillbyrne/random-agent-spoofer
[5] addons.mozilla.org/ru/developers/addon/api/key: https://addons.mozilla.org/ru/developers/addon/api/key/
[6] developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm: https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm
[7] olympia.readthedocs.io/en/latest/topics/api/signing.html: https://olympia.readthedocs.io/en/latest/topics/api/signing.html
[8] Источник: https://geektimes.ru/post/279294/
Нажмите здесь для печати.