Файлы AutoConfig можно использовать для установки и блокировки параметров, которые не покрываются политиками Firefox.
Чтобы использовать AutoConfig, необходимо в папки Firefox расположить два файла. На Windows они должны попасть в ту же папку, где установлен Firefox. На macOS они должны попасть в папку Contents/Resources в Firefox.app.
Первый файл, который необходимо создать, называется autoconfig.js, и он располагается в папке defaults/pref. Он должен содержать следующие две строки:
pref("general.config.filename", "firefox.cfg"); pref("general.config.obscure_value", 0);
Первая строка определяет наименование AutoConfig-файла. Вы можете указать любое имя, какое пожелаете, но расположения файла изменить нельзя.
Вторая строка показывает, что вы не хотите, чтобы AutoConfig был нечитаемым. По умолчанию Firefox ожидает, что файл будет с побайтовым смещением 13 байтов в качестве его обфускации.
Второй файл, который вы должны создать, называется firefox.cfg и он располагается на верхнем уровне.
Он всегда должен начинаться со строки-комментария:
// ВАЖНО: Начните свой код со второй строки
Несмотря на то, что расширение файла AutoConfig обычно cfg, сам по себе файл AutoConfig является JavaScript-файл. Это означает, что вы можете писать на JavaScript внутри файла, чтобы применять различную логику в разных ситуациях.
Следующие фукнции доступны внутри AutoConfig-файла:
pref(prefName, value) – устанавливает параметру пользовательское значение. Эта фукнция явно устанавливает параметр как пользовательский параметр. Это означает, что если пользователь изменил значение, оно будет сбрасываться при каждом запуске браузера.
defaultPref(prefName, value) – устанавливает параметру значение по умолчанию. Это то значение, которое параметр имеет, когда пользователь не устанавливает никакое значение.
lockPref(prefName, value) – устанавливает параметру значение по умолчанию и блокирует его. Это функция, которая наиболее знакома людям, когда речь идёт о AutoConfig-файлах. Блокировка параметра не даёт пользователи его изменять и в большинстве случаев отключает настройки в графическом интерфейсе, что даёт пользователю очевидное понимание, что параметр был отключен. В случаях, когда вы не видите, что что-то отключилось в настройках, сущетвуют некоторые параметры “disable_button”, которые, когда заблокированы, отключают кнопки. Например, если вы заблокируете параметр
pref.privacy.disable_button.view_passwords
это отключит кнопку “Просмотреть пароли”. Другие параметры, которые блокируют кнопки:
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.
unlockPref(prefName) – разблокирует параметр. В качестве примера могут быть случае, когда вы блокируете параметр для всех, а затем разблокируете его для конкретного пользователя.
getPref(prefName) – возвращает значение параметра. Если параметр не существует, выводит ошибку. Вы должны использовать эту функцию только для параметров, о которых знаете, что они существуют.
clearPref(prefName) – удаляет пользовательское значение параметра, сбрасывая его в значение по умолчанию.
displayError(funcname, message) – отображает ошибку в специальном формате.
Netscape.cfg/AutoConfig failed. Please contact your system administrator. Error: [funcname] failed: [message]
Это удобно для отладки.
getenv(name) – позволяет вам обращаться к переменным окружения. Это может позволить вам делать такие вещи как получать имена пользователей и другую системную информацию.
Если вы хотите управлять своим AutoConfig-файлом централизованно, то можете указать расположение второго AutoConfig-файла в первом AutoConfig-файле:
pref("autoadmin.global_config_url","http://yourdomain.com/autoconfigfile.js");
В качестве адреса можно использовать любой протокол, поддерживаемый Firefox. Это включает в себя указание файла: протокол для указания на файл на сетевом диске. Формат удалённого AutoConfig-файла такой же, как и для AutoConfig-файла на клиенте, за исключением того, что первая строка не игнорируется.
Если вы желаете в своей конфигурации вставить информацию, относящуюся к пользователю, то можете указать другой параметр:
pref("autoadmin.append_emailaddr", true);
Это добавит к запросу знак вопроса (?) и адрес электронной почты.
Вы можете спросить, откуда возьмётся адрес электронной почты. Так как Firefox не использует адреса электронной почты, вам необходимо его указать. Если вы этого не сделаете, Firefox будет отображать подсказку, спрашивая у вас адрес электронной почты. Этот параметр называется mail.identity.useremail и является строковым параметром. Так как AutoConfig-файл является JS-файлом, вы можете установить этот параметр перед определением autoadmin.global_config_url. Вы можете сделать примерно так:
var user = getenv("USER"); lockPref("mail.identity.useremail", user); lockPref("autoadmin.global_config_url","http://yourdomain.com/autoconfigfile.js");
Существует несколько других параметров, которые контролируют аспекты 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, используется закэшированный файл.