Где найти исходный код расширения Mozilla NoScript?

Я читал в wiki, что NoScript является открытым исходным кодом http://en.wikipedia.org/wiki/NoScript, но на официальном сайте http://noscript.net/, я не могу найти никаких источников. Поэтому мой вопрос: где найти источники? Или, что-то я не понял, и исходный код недоступен?

Ответ 1

Расширение содержит исходный код - вам просто нужно разархивировать его. Смотрите ответ Giorgio здесь.

Весь исходный код общедоступен в каждом XPI.

У вас есть это на жестком диске прямо сейчас, если вы пользователь NoScript, иначе вы можете скачать его здесь.

Вы можете исследовать и/или изменять его, распаковывая XPI и JAR внутри, и "строя" его обратно, перетаскивая оба.

Это было так навсегда, начиная с самой первой версии.

Ответ 2

Формат Firefox XPI не мешает вам просто извлекать содержимое плагина для изучения исходного кода.

Пока я не могу найти канонический публичный репозиторий, похоже, что кто-то систематически загружал и извлекал все доступные XPI и создал из них репозиторий GitHub.

https://github.com/avian2/noscript

Если вы хотите сделать это сами, файлы XPI - это просто стандартные ZIP файлы, поэтому, если вы хотите извлечь их самостоятельно, вы можете просто указать на него программу извлечения.

Вот пример выполнения этой команды из командной строки:

mkdir noscript_source
cd noscript_source
curl -LO https://addons.mozilla.org/firefox/downloads/file/219550/noscript_security_suite-2.6.6.8-fx+fn+sm.xpi
unzip noscript_security_suite-2.6.6.8-fx+fn+sm.xpi

Это дает структуру каталогов, которая выглядит так:

.
├── GPL.txt
├── META-INF
│   ├── manifest.mf
│   ├── zigbert.rsa
│   └── zigbert.sf
├── NoScript_License.txt
├── chrome
│   └── noscript.jar
├── chrome.manifest
├── components
│   └── noscriptService.js
├── defaults
│   └── preferences
│       └── noscript.js
├── install.rdf
├── mozilla.cfg
└── noscript_security_suite-2.6.6.8-fx+fn+sm.xpi

Затем основной код находится внутри chrome/noscript.jar. Вы можете извлечь это, чтобы получить на JavaScript, который составляет основную часть плагина:

cd chrome/
unzip noscript.jar

Что даст основное дерево исходных текстов:

.
├── content
│   └── noscript
│       ├── ABE.g
│       ├── ABE.js
│       ├── ABELexer.js
│       ├── ABEParser.js
│       ├── ASPIdiocy.js
│       ├── ChannelReplacement.js
│       ├── ClearClickHandler.js
│       ├── ClearClickHandlerLegacy.js
│       ├── Cookie.js
│       ├── DNS.js
│       ├── DOM.js
│       ├── ExternalFilters.js
│       ├── FlashIdiocy.js
│       ├── HTTPS.js
│       ├── Lang.js
│       ├── NoScript_License.txt
│       ├── PlacesPrefs.js
│       ├── Plugins.js
│       ├── Policy.js
│       ├── Profiler.js
│       ├── Removal.js
│       ├── RequestWatchdog.js
│       ├── STS.js
│       ├── ScriptSurrogate.js
│       ├── Strings.js
│       ├── URIValidator.js
│       ├── about.xul
│       ├── antlr.js
│       ├── clearClick.js
│       ├── clearClick.xul
│       ├── frameOptErr.xhtml
│       ├── iaUI.js
│       ├── noscript.js
│       ├── noscript.xbl
│       ├── noscriptBM.js
│       ├── noscriptBMOverlay.xul
│       ├── noscriptOptions.js
│       ├── noscriptOptions.xul
│       ├── noscriptOverlay.js
│       ├── noscriptOverlay.xul
│       ├── options-mobile.xul
│       └── overlay-mobile.xul
├── locale
└── skin