Z powodu niezgody z polityką Mozilli oraz dystrybucji, które nie rozpowszechniają wersji Firefox z odblokowanymi możliwościami instalacji niesygnowanych dodatków oraz korzystania z API WebExtensions Experiments, opracowano narzędzie, które przekształca standardowe wersje Firefox w wariant „Developer Edition”, umożliwiając korzystanie z dodatków bez podpisu cyfrowego.
Opracowanie narzędzia uproszczono, ponieważ potrzebna funkcjonalność w Firefoxie została wdrożona w kodzie ECMAScript i wchodzi w skład każdej wersji Firefox, ale jest uruchamiana w czasie wykonywania kodu w zależności od zainstalowanych wartości stałych. Stałe („MOZ_DEV_EDITION”, „MOZ_REQUIRE_SIGNING”) są definiowane w jednym pliku („modules/addons/AddonSettings.jsm”), który znajduje się w archiwum zip „/usr/lib/firefox/omni.ja”.
Proponowane narzędzie parsuje potrzebny plik za pomocą esprima-python, modyfikuje AST i serializuje za pomocą jscodegen.py. Praca z formatem zip jest obsługiwana przez libzip.py – połączenia do libzip. Zaleca się ręczne zainstalowanie wymienionych bibliotek z odpowiednich repozytoriów git.
Dodatkowo można wspomnieć o skrypcie unpin.py, który pozwala na usunięcie ograniczeń „{“, „==” i „~=” na wersje zależności w prefabrykowanym pakiecie w formacie wheel, używanym przez wielu programistów, co pozwala uniknąć automatycznego obniżania wersji podczas instalacji potrzebnego pakietu przez pip przy ustawieniach domyślnych.
Źródło: opennet.ru
