AutoConfig ファイルを使用すると、Windows のグループポリシー や Mac と Linux の policies.json でカバーされていない設定をセットしたりロックしたりできます。このメソッドは、ユーザー設定を自動的に変更したり、特定の設定をロックしてエンドユーザーによる変更を防いだりするために使用できます。
AutoConfig のセットアップ
AutoConfig を使用するには、トップレベルに 1 つ、サブディレクトリーに 1 つ、合計 2 つのファイルを作成する必要があります。Windows では、パスは Firefox がインストールされているディレクトリーに基づきます。macOS では、パスは Firefox.app の Contents/Resources ディレクトリーに基づきます。
最初に作成するファイルは autoconfig.js という名前で、defaults/pref ディレクトリーに配置する必要があります。このファイルには次の 2 行が含まれている必要があります:
pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);
最初の行は、AutoConfig ファイルの名前を指定します。ファイル名はカスタマイズできますが、ファイルの場所は変更できません。
2 行目は、AutoConfig を難読化しないことを示します。既定では、Firefox はファイルを難読化するために 13 バイトシフトされることを想定しています。
2 番目に作成するファイルは firefox.cfg と呼ばれ、Firefox ディレクトリーのトップレベルに配置されます。必ず次のようなコメント行で始めてください:
// IMPORTANT: Start your code on the 2nd line
AutoConfig ファイルの拡張子は通常 .cfg ですが、AutoConfig ファイル自体は JavaScript ファイルです。これにより、ファイル内に JavaScript を追加で記述して、異なる状況で異なるロジックを追加できます。
AutoConfig の機能
AutoConfig ファイル内では、次の関数を使用できます:
pref(prefName, value) – プリファレンスのユーザー値を設定します。この関数は、プリファレンスをユーザープリファレンスとして明示的に設定します。つまり、ユーザーが値を変更した場合、ブラウザーが起動するたびに値がリセットされます。
defaultPref(prefName, value) – プリファレンスの既定値を設定します。これは、ユーザーが値を設定していない場合や、ユーザーがプリファレンスをリセットした場合にプリファレンスが持つ値です。ユーザーはこれを恒久的に変更できます。
lockPref(prefName, value) – プリファレンスの既定値を設定してロックします。これは最も一般的に使用される機能です。プリファレンスをロックすると、ユーザーがプリファレンスを変更できなくなります。また、ほとんどの場合プリファレンスの 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) – 環境変数を照会します。これにより、ユーザー名やその他のシステム情報などにアクセスできます。
UI 要素の無効化
設定で UI 要素が自動的に無効化されない場合、ロックされるとボタンを無効化する “disable_button” 設定がいくつかあります。例えば、AutoConfig ファイルに
lockPref("pref.privacy.disable_button.view_passwords",true);
を含めると、 ボタンが無効になります。ボタンをロックするその他の設定は次のとおりです:
- 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","https://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 設定を行う必要があります。設定していないと、メールアドレスの入力を求めるプロンプトが表示されます。AutoConfig ファイルは JavaScript ファイルなので、autoadmin.global_config_url を設定する前にこの設定を行うことができます。例:
var user = getenv("USER");
lockPref("mail.identity.useremail", user);
lockPref("autoadmin.global_config_url","https://yourdomain.com/autoconfigfile.js");