AutoConfig 文件可以用来设置和锁定没有被 Windows 组策略 或 Mac 和 GNU/Linux 的 policies.json 文件 涉及的首选项。此方法可以自动更改用户首选项或通过锁定某些首选项来防止用户修改。
设置 AutoConfig
要使用 AutoConfig,你需要创建两个文件。一个在根目录,一个在子目录。对于 Windows,路径基于 Firefox 的安装目录。对于 macOS,路径基于 Firefox.app 的 Contents/Resources 目录。
需要创建的第一个文件称为 autoconfig.js, 它必须放在 defaults/pref
目录中。它应包含以下两行:
pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);
第一行指定 AutoConfig 文件的名称。您可以指定您喜欢的任何名称, 但不能更改文件的位置。
第二行表示 AutoConfig 不应该被混淆。默认情况下, Firefox 希望该文件被字节移动13字节, 以便对其进行混淆。
您需要创建的第二个文件称为 firefox.cfg, 它被放置在根目录。它应该始终以注释行开头:
// IMPORTANT: Start your code on the 2nd line
虽然 AutoConfig 文件的扩展通常是 .cfg
, 但 AutoConfig 文件本身就是一个 JavaScript 文件。这意味着您可以在文件中编写 JavaScript, 以便在不同的情况下具有不同的逻辑。
AutoConfig 的函数
AutoConfig 文件包含以下函数:
pref(prefName, value)——设置首选项的用户值。此函数将首选项显式设置为用户首选项。这意味着, 如果用户更改了该值, 则每次启动浏览器时都会重置它。
defaultPref(prefName, value)——设置首选项的默认值。这是用户未设置任何值时首选项的值。
lockPref(prefName, value) ——设置首选项的默认值并锁定它。这是人们最熟悉的功能, 当涉及到 AutoConfig 文件。锁定首选项可防止用户更改它, 在大多数情况下, 在首选项中禁用 UI, 这样用户就可以明显地禁用了首选项。
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
, 则使用缓存文件。
用户特定配置
如果要在 AutoConfg 中包含用户特定的信息, 可以设置另一个首选项:
pref("autoadmin.append_emailaddr", true);
这将追加一个问号(?)和一个电子邮件地址的请求。
因为 Firefox 不使用电子邮件地址, 所以您必须设置 mail.identity.useremail
。如果未设置, Firefox 会显示一个提示, 询问你的电子邮件地址。因为 AutoConfig 文件是 JS 文件, 所以首先设置此首选项. 才能设置 autoadmin.global_config_url
。例如:
var user = getenv("USER");
lockPref("mail.identity.useremail", user);
lockPref("autoadmin.global_config_url","https://yourdomain.com/autoconfigfile.js");