Модификация Firefox с помощью AutoConfig

Firefox for Enterprise Firefox for Enterprise Последнее обновление: 18 hours ago

Файлы AutoConfig можно использовать для установки и блокировки параметров, которые не покрываются групповыми политиками на Windows или policies.json для Mac и Linux. Этот метод может использоваться для автоматического изменения пользовательских настроек или для предотвращения изменения конечным пользователем определенных настроек путём их блокировки.

Настройка AutoConfig

Чтобы использовать автонастройку, вам необходимо создать два файла, один на верхнем уровне, а другой в подкаталоге. В Windows пути основаны на каталоге, в котором установлен Firefox. В macOS пути основаны на каталоге Contents/Resources Firefox.app.

В файле autoconfig.js должен использоваться конец строки Unix (LF), даже в системах Windows с Firefox 60 или более поздней версии.

Первый файл, который необходимо создать, называется autoconfig.js, и он должен располагаться в папке defaults/pref. Он должен содержать следующие две строки:

pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);


Первая строка определяет наименование AutoConfig-файла. Имя файла можно изменить, но расположения файла изменить нельзя.

Вторая строка указывает на то, что AutoConfig не должен быть скрыт. По умолчанию Firefox ожидает, что файл будет с побайтовым смещением 13 байтов для его обфускации.

Второй файл, который вы должны создать, называется 'firefox.cfg и он располагается на верхнем уровне каталога Firefox. Он всегда должен начинаться со строки-комментария, например:

// ВАЖНО: Начните свой код со второй строки


Хотя расширение файла автоконфигурации обычно .cfg, файл автоконфигурации является файлом JavaScript. Это позволяет записывать в файл дополнительный JavaScript для добавления другой логики в различных ситуациях.

Функции AutoConfig

Следующие фукнции доступны внутри AutoConfig-файла:

pref(prefName, value) – устанавливает параметру пользовательское значение. Эта фукнция явно устанавливает параметр как пользовательский параметр. Это означает, что если пользователь изменил значение, оно будет сбрасываться при каждом запуске браузера.

defaultPref(prefName, value) – устанавливает параметру значение по умолчанию. Это то значение, которое параметр имеет, когда пользователь не устанавливает никакое значение или пользователь сбрасывает настройки. Оно может быть навсегда изменено пользователем.

lockPref(prefName, value) – устанавливает параметру значение по умолчанию и блокирует его. Это наиболее часто используемая функция. Блокировка параметра не даёт пользователи его изменять и в большинстве случаев отключает настройки в графическом интерфейсе, что даёт пользователю очевидное понимание, что параметр был отключен.

unlockPref(prefName) – разблокирует параметр. В качестве примера, это может быть использовано в случае, когда настройки должны быть заблокированы для всех пользователей, но разблокированы для определенных пользователей.

getPref(prefName) – извлекает значение параметра. Если параметр не существует, выводится сообщение об ошибке. Эту функцию следует использовать только для тех параметров, которые существуют всегда.

clearPref(prefName) – удаляет пользовательское значение параметра, возвращая его к значению по умолчанию.

displayError(funcname, message) – отображает ошибку в определенном формате, что является удобным инструментом для отладки.

Netscape.cfg/AutoConfig failed. Please contact your system administrator. Error: [funcname] failed: [message]


getenv(name) – запрашивает переменные среды. Это может обеспечить доступ к таким вещам, как имена пользователей и другая системная информация.

Отключение элементов пользовательского интерфейса

В тех случаях, когда элементы пользовательского интерфейса не отключаются автоматически в настройках, существуют некоторые параметры “disable_button”, которые при блокировке отключают кнопки. Например, если добавить

lockPref("pref.privacy.disable_button.view_passwords",true);


в вашем файле AutoConfig, то будет отключена кнопка Просмотр паролей. Другие параметры, которые включают блокировку кнопок:

  • pref.general.disable_button.default_browser
  • pref.browser.homepage.disable_button.current_page
  • pref.browser.homepage.disable_button.bookmark_page
  • pref.browser.homepage.disable_button.restore_default
  • security.disable_button.openCertManager
  • security.disable_button.openDeviceManager
  • app.update.disable_button.showUpdateHistory
  • pref.privacy.disable_button.cookie_exceptions
  • pref.privacy.disable_button.view_cookies
  • pref.privacy.disable_button.view_passwords
  • pref.privacy.disable_button.view_passwords_exceptions
  • pref.downloads.disable_button.edit_actions.

Централизованное управление

Файлом AutoConfig можно управлять централизованно. Для этого необходимо указать расположение дополнительного файла AutoConfig в основном файле AutoConfig:

pref("autoadmin.global_config_url","http://yourdomain.com/autoconfigfile.js");


URL-адресом может быть любой протокол, поддерживаемый Firefox, включая протокол file:, указывающий на файл на сетевом диске. Формат удаленного файла AutoConfig такой же, как и у файла AutoConfig на клиенте, за исключением того, что первая строка не игнорируется.

Существуют и другие параметры, которые управляют различными аспектами AutoConfig. Параметр autoadmin.refresh_interval позволяет обновлять AutoConfig с заданным интервалом, указанным в минутах. Существуют также настройки, связанные с управлением автономным режимом, включая autoadmin.offline_failover и autoadmin.failover_to_cached.

Каждый раз при получении AutoConfig-файла с удалённого ресурса в папке профиля пользователя создаётся его резервная копия с именем failover.jsc. Если параметр autoadmin.failover_to_cached установлен в значение false, Firefox считывает закэшированный файл и отмечает браузер как работающий оффлайн и блокирует параметр, так что пользователь не может перейти в онлайн. Если этот параметр установлен в true, он просто использует закэшированный файл и продолжает. Параметр autoadmin.offline_failover контролирует, используется ли закэшированный файл, когда пользователь в оффлайне. Если он установлен в true, используется закэшированный файл.

Параметры, относящиеся к конкретному пользователю

Если в файл AutoConfig необходимо включить информацию, относящуюся к конкретному пользователю, следует установить следующий параметр:

pref("autoadmin.append_emailaddr", true);


При этом к запросу будут добавлены вопросительный знак (?) и адрес электронной почты.

Поскольку Firefox не использует адреса электронной почты, необходимо задать параметр mail.identity.useremail. Если он не задан, Firefox отобразит запрос на ввод адреса электронной почты. Поскольку файл автонастройки является файлом JavaScript, это предпочтение можно задать перед установкой autoadmin.global_config_url. Например:

var user = getenv("USER");
lockPref("mail.identity.useremail", user);
lockPref("autoadmin.global_config_url","https://yourdomain.com/autoconfigfile.js");

Помогла ли эта статья?

Пожалуйста, подождите...

Эти прекрасные люди помогли написать эту статью:

Illustration of hands

Станьте волонтёром

Растите и делитесь опытом с другими. Отвечайте на вопросы и улучшайте нашу базу знаний.

Подробнее