aboutsummaryrefslogtreecommitdiff
path: root/files/ja/archive/misc_top_level
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/archive/misc_top_level
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/ja/archive/misc_top_level')
-rw-r--r--files/ja/archive/misc_top_level/cert_override.txt/index.html35
-rw-r--r--files/ja/archive/misc_top_level/index.html8
-rw-r--r--files/ja/archive/misc_top_level/mcd,_mission_control_desktop_aka_autoconfig/index.html995
-rw-r--r--files/ja/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html22
-rw-r--r--files/ja/archive/misc_top_level/source_code_directories_overview/index.html129
-rw-r--r--files/ja/archive/misc_top_level/using_content_preferences/index.html107
-rw-r--r--files/ja/archive/misc_top_level/using_xml_data_islands_in_mozilla/index.html84
7 files changed, 1380 insertions, 0 deletions
diff --git a/files/ja/archive/misc_top_level/cert_override.txt/index.html b/files/ja/archive/misc_top_level/cert_override.txt/index.html
new file mode 100644
index 0000000000..1605109292
--- /dev/null
+++ b/files/ja/archive/misc_top_level/cert_override.txt/index.html
@@ -0,0 +1,35 @@
+---
+title: Cert override.txt
+slug: Archive/Misc_top_level/Cert_override.txt
+translation_of: Archive/Misc_top_level/Cert_override.txt
+---
+<p><code>cert_override.txt</code> はユーザプロファイルに作成されるテキストファイルで、ユーザによって指定された例外証明書を保存しています。このファイルは Firefox、Thunderbird、XUL ベースのアプリケーションが利用します。</p>
+<p>XULRunner 1.9 には簡単に例外を追加する方法が無いので、そのページを Firefox で開いて、証明書を受け入れ、<code><code>cert_override.txt</code></code> を XULRunner アプリケーションのプロファイルにコピーします。</p>
+<p>文法は<a class="external" href="http://boblord.livejournal.com/18402.html" title="http://boblord.livejournal.com/18402.html">このウェブサイト</a>に記載されています。</p>
+<h3 id="Example">Example</h3>
+<p>これは SHA1-256 ハッシュアルゴリズムの例です。鍵とウェブサイトはダミーです:</p>
+<pre># PSM Certificate Override Settings file
+# This is a generated file! Do not edit.
+some.website.com:443 OID.2.16.840.1.101.3.4.2.1 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:FF:EE:DD:CC:BB:AA:99:88:77:66:55:44:33:22:11:00 U AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAA==
+</pre>
+<h3 id="Fields">Fields</h3>
+<p>フィールドはタブで区切られます。各行はラインフィードで終了します(UNIX フォーマット)。</p>
+<ol>
+ <li>ドメイン名:ポート : port 443 for HTTPS (SSL)</li>
+ <li>ハッシュアルゴリズムの OID
+ <ul>
+ <li>SHA1-256: OID.2.16.840.1.101.3.4.2.1 (most used)</li>
+ <li>SHA-384: OID.2.16.840.1.101.3.4.2.2</li>
+ <li>SHA-512: OID.2.16.840.1.101.3.4.2.3</li>
+ </ul>
+ </li>
+ <li>前記ハッシュアルゴリズムを用いた証明書のフィンガープリント</li>
+ <li>オーバーライドのタイプを示す1個またはそれ以上の文字:
+ <ul>
+ <li>M : ホスト名の不一致を許可する</li>
+ <li>U : 認証されていない証明書を許可する(自己署名証明書や不明または不正な発行者の証明書)</li>
+ <li>T : 有効期限切れやまだ有効になっていない証明書など、有効期限に関するエラーを許可する</li>
+ </ul>
+ </li>
+ <li>base64 でエンコードされた証明書のシリアル番号とその発行者の名前をあらわす文字列</li>
+</ol>
diff --git a/files/ja/archive/misc_top_level/index.html b/files/ja/archive/misc_top_level/index.html
new file mode 100644
index 0000000000..95bf3b61ab
--- /dev/null
+++ b/files/ja/archive/misc_top_level/index.html
@@ -0,0 +1,8 @@
+---
+title: Misc top level
+slug: Archive/Misc_top_level
+translation_of: Archive/Misc_top_level
+---
+<p>In progress. These pages were moved from the top level of MDN in a spate of furious reorganization.</p>
+
+<p></p>
diff --git a/files/ja/archive/misc_top_level/mcd,_mission_control_desktop_aka_autoconfig/index.html b/files/ja/archive/misc_top_level/mcd,_mission_control_desktop_aka_autoconfig/index.html
new file mode 100644
index 0000000000..b66ef9a71d
--- /dev/null
+++ b/files/ja/archive/misc_top_level/mcd,_mission_control_desktop_aka_autoconfig/index.html
@@ -0,0 +1,995 @@
+---
+title: 'MCD, Mission Control Desktop AKA AutoConfig'
+slug: 'Archive/Misc_top_level/MCD,_Mission_Control_Desktop_AKA_AutoConfig'
+tags:
+ - Administration
+ - Configuration management
+ - enterprise
+translation_of: 'Archive/Misc_top_level/MCD,_Mission_Control_Desktop_AKA_AutoConfig'
+---
+<p>この文書では、Mozilla Suite 1.x.x、Firefox、Thunderbirdで利用可能な、集中管理による AutoConfig (自動設定) の具体例を解説します。</p>
+<p><span style="color: darkgreen; background: #ef9;">【訳注: 以下の内容は、読みやすさと資料性を高めるために、英語の原文に比べて大幅に構成や内容が変更されています。日本語版のみに追記された詳細な情報も含まれており、英語の原文の忠実な翻訳ではないことに注意してください。】</span></p>
+<h3 id=".E7.8A.B6.E6.B3.81" name=".E7.8A.B6.E6.B3.81">状況</h3>
+<p>この文書の最初のバージョンが書かれた当時、<a class="external" href="http://www.int-evry.fr/">INT-Evry</a> では、研究室やセルフサービスのパソコン室で共有のコンピュータを利用している、約 2000 人のユーザ (主に学生) を管理していました。共有のコンピュータということで、1 日中何人ものユーザが 1 台のコンピュータを利用しています。これらのコンピュータは Windows XP と Linux ディストリビューションのひとつである Fedora Core 4/5 のデュアルブートになっています。ユーザは全員、Windows サーバの個人アカウントと、Linux 認証のための LDAP アカウントを持っています。</p>
+<h3 id=".E7.9B.AE.E7.9A.84" name=".E7.9B.AE.E7.9A.84">目的</h3>
+<p>私たちの目的は、コンピュータにその都度ログインする特定のユーザに対して、起動時に自動設定されたメールクライアントや Web ブラウザ、ニュースリーダーを提供することでした。Mozilla 製品を導入したことで、Windows と Unix (私たちの場合は Linux) どちらを起動しても同じプログラムを利用できるようになりました。</p>
+<p>INT-Evry では、ユーザ固有の設定ファイル (<code>~/.mozilla/default/randomdir/prefs.js</code>) で設定を行う代わりに、各ユーザの初期設定を集中管理しています。集中管理のための設定ファイル(以下、AutoConfigファイル)を使えば、環境変数 (<code>USER</code>、<code>HOME</code> など) や LDAP クエリ (メールアドレスやコモンネームなどの参照に利用) を元にして、設定項目のロック (<code>lockPref</code>) や初期化 (<code>defaultPref</code>) を行うことが可能です。</p>
+<h3 id="AutoConfig.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB" name="AutoConfig.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">AutoConfigファイル</h3>
+<p>Mozilla製品の集中管理機能は JavaScript ファイルを通じて利用します。</p>
+<h4 id=".E8.A8.AD.E5.AE.9A.E3.81.AE.E5.AE.9A.E7.BE.A9.E6.96.B9.E6.B3.95" name=".E8.A8.AD.E5.AE.9A.E3.81.AE.E5.AE.9A.E7.BE.A9.E6.96.B9.E6.B3.95">設定の定義方法</h4>
+<p>この集中管理設定ファイルは、私たちが必要なことを可能にする JavaScript API を利用しています。<code>MOZILLA_HOME/default/autoconfig/prefcalls.js</code> で定義されている以下の関数が利用可能です。詳細は <code><a href="https://dxr.mozilla.org/mozilla-central/source/extensions/pref/autoconfig/src/prefcalls.js" rel="custom">prefcalls.js</a></code> ファイルをご覧ください。</p>
+<pre>function getPrefBranch()
+function pref(prefName, value)
+function defaultPref(prefName, value)
+function lockPref(prefName, value)
+function unlockPref(prefName)
+function getPref(prefName)
+function clearPref(prefName)
+function getLDAPAttributes(host, base, filter, attribs)
+function getLDAPValue(str, key)
+function displayError(funcname, message)
+function getenv(name)
+</pre>
+<p>具体的な利用例は<a href="#thunderbird.cfg">後述</a>します。</p>
+<h4 id="AutoConfig.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E8.A8.AD.E7.BD.AE" name="AutoConfig.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E8.A8.AD.E7.BD.AE">AutoConfigファイルの設置</h4>
+<p>AutoConfigファイルは、アプリケーションディレクトリ(<code>MOZILLA_HOME</code>)のみに置く方法と、アプリケーションディレクトリと任意の置き場所(リモートのサーバ上を含む)の両方に置く方法の、二通りの方法で設置できます。リモートのサーバ上にだけ設置することはできません。</p>
+<p> </p>
+<h5 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.88.E3.83.AA.E3.81.AB.E7.BD.AE.E3.81.8F_AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.88.E3.83.AA.E3.81.AB.E7.BD.AE.E3.81.8F_AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">アプリケーションディレクトリに置く AutoConfig ファイル</h5>
+<p>AutoConfig ファイルは、任意の名前の JavaScript ファイルです。読み出しと実行権限を付けた上で <code>MOZILLA_HOME</code> ディレクトリに置きます。</p>
+<p>ただし、ファイルを置いただけでは内容は読み込まれません。このファイルを AutoConfig ファイルとして認識させるには、設定項目 <code>general.config.filename</code> で AutoConfig ファイルの名前を指定する必要があります。<code>MOZILLA_HOME/default/pref/all.js</code> または <code>MOZILLA_HOME/greprefs/all.js</code> などの既存の設定ファイルの末尾に、<code>pref("general.config.filename", "mozilla.cfg");</code> のように追記するか、<code>all.js</code> などと同じ位置に新しい設定ファイルを作成してその中に記述してください。</p>
+<p>設定項目 <code>general.config.filename</code> によって示された名前のファイルが <code>MOZILLA_HOME</code> ディレクトリに無い場合や、ファイルの読み出しに失敗した場合、Mozilla アプリケーションはエラーメッセージを表示して強制終了します。</p>
+<p>また、設定項目 <code>general.config.vendor</code> によってベンダ名が示されていた場合は、 <code>general.config.filename</code> で示されたファイルのファイル名部分(拡張子 .cfg を除いた部分)とが一致しない場合にも、同様のエラーメッセージが表示され Mozilla アプリケーションが強制終了します。この設定項目はセキュリティを高めるために利用できます。</p>
+<pre class="eval">// これはOK
+pref("general.config.filename", "mozilla.cfg");
+pref("general.config.vendor", "mozilla");
+
+// これはNG
+pref("general.config.filename", "mozilla.cfg");
+pref("general.config.vendor", "mycompany");
+</pre>
+<p><em>このファイルの1行目は読み込み時に必ず無視される事に注意して下さい。</em>1行目にディレクティブを記述しても、読み込み時には無視されます。1行目は必ずコメント行として、ディレクティブは2行目以降に記述して下さい。</p>
+<pre class="eval">// 1行目:この行は評価されない
+pref("mail.startup.enabledMailCheckOnce", false); // 2行目:この行以降は評価される
+</pre>
+<h6 id="AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.89" name="AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.89">AutoConfig ファイルのエンコード</h6>
+<p>古い Netscape 4.x では、難読化などのために、AutoConfig ファイル (<code>netscape.cfg</code>) の内容は必ずエンコード(バイトシフト・ロータリーは 7)する必要がありました。Firefox や Thunderbird などの現在の Mozilla アプリケーションでは、標準のバイトシフトは 13 ですが、バイトシフトは設定項目 <code>general.config.obscure_value</code> によって任意の値に変更することができます。<code>pref("general.config.obscure_value", 0);</code> を <code>all.js</code> などに記述することで、エンコードされていない AutoConfig ファイルを利用することもできます。ただしその場合、AutoConfig ファイルの 1 行目はコメントアウトにする必要があります。</p>
+<p>ファイルのエンコードには、<a class="external" href="http://www.alain.knaff.lu/howto/MozillaCustomization/moz-byteshift.pl" rel="freelink">http://www.alain.knaff.lu/howto/Mozi...z-byteshift.pl</a> にある <code>moz-byteshift.pl</code> という Perl スクリプトが利用可能です。<code>moz-byteshift.pl</code> の利用方法は以下の通りです。</p>
+<pre>$ more moz-byteshift.pl
+#!/usr/bin/perl
+
+# Mozilla の netscape.cfg ファイル用のバイトシフトプログラム
+
+# 古い Netscape 4.x ではバイトシフト 7 を使用
+# To decode: moz-byteshift.pl -s -7 &lt;netscape.cfg &gt;netscape.cfg.txt
+# To encode: moz-byteshift.pl -s 7 &lt;netscape.cfg.txt &gt;netscape.cfg
+
+# Mozilla ではバイトシフト 13 を使用
+# To decode: moz-byteshift.pl -s -13 &lt;netscape.cfg &gt;netscape.cfg.txt
+# To encode: moz-byteshift.pl -s 13 &lt;netscape.cfg.txt &gt;netscape.cfg
+
+$ ./moz-byteshift.pl -s 13 &lt; mci-mozilla-web-tux.js &gt; mci-mozilla-web-tux.cfg
+</pre>
+<p>エンコード/デコードを行うユーティリティをJavaScriptで実装する場合は以下のようになります。</p>
+<pre>var encoded = script
+ .split('')
+ .map(function(aChar) {
+ return String.fromCharCode(
+ aChar.charCodeAt(0) + 13
+ );
+ })
+ .join('');
+var decoded = encoded
+ .split('')
+ .map(function(aChar) {
+ return String.fromCharCode(
+ aChar.charCodeAt(0) - 13
+ );
+ })
+ .join('');</pre>
+<p><br>
+ Netscape 4.x 用であれば、Client Customization Kit (CCK) に付属しているコンバート機能でも同様にエンコードできます (CCK では自動インストールのカスタマイズなども可能です)。詳しくは <a class="external" href="http://web.archive.org/web/20040821150212/http://developer.netscape.com/docs/manuals/deploymt/config.htm">http://developer.netscape.com/docs/manuals/deploymt/config.htm</a> をご覧ください。</p>
+<h5 id=".E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.81.AE.E3.82.B5.E3.83.BC.E3.83.90.E4.B8.8A.E3.81.AB.E7.BD.AE.E3.81.8F_AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB" name=".E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.81.AE.E3.82.B5.E3.83.BC.E3.83.90.E4.B8.8A.E3.81.AB.E7.BD.AE.E3.81.8F_AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">リモートのサーバ上に置く AutoConfig ファイル</h5>
+<p>AutoConfig ファイルによる設定を更新するためには、すべてのクライアントにインストールされた AutoConfig ファイルを一つ一つ更新する必要があります。しかし頻繁に変更される可能性がある設定情報をこの方法で提供するのは現実的ではありません。そこで、Mozilla アプリケーションでは、もう一つ追加の AutoConfig ファイルをリモートに設置することができます。これによって、サーバ上にある一つのファイルを更新するだけで、すべてのクライアントに変更を適用することができます。</p>
+<p>リモートのサーバ上に置いた AutoConfig ファイルの位置は、設定項目 <code>autoadmin.global_config_url</code> で指定します。<code>all.js</code> などに <code>pref("autoadmin.global_config_url", "<a class="external" href="http://server/auto-config-file.jsc" rel="freelink">http://server/auto-config-file.jsc</a>");</code> のように追記するか、<code>MOZILLA_HOME</code> ディレクトリに置いた AutoConfig ファイルの中で<code>lockPref("autoadmin.global_config_url", "<a class="external" href="http://server/auto-config-file.jsc" rel="freelink">http://server/auto-config-file.jsc</a>");</code> のように記述してください。File URLを使って、HTTPサーバではなくファイルサーバの共有フォルダなどに置かれたファイルを参照することもできます。</p>
+<p>リモートに設置した AutoConfig ファイルは、<code>MOZILLA_HOME</code> ディレクトリに置いた AutoConfig ファイルが利用されている状況でのみ読み込まれることに注意してください。<code>autoadmin.global_config_url</code> の値自体は AutoConfig ファイルで設定しても通常の .js ファイルで設定してもどちらでも構いませんが、ローカルの AutoConfig ファイルが利用されていない状況では、<code>autoadmin.global_config_url</code> で指定されたリモートの AutoConfig ファイルを読み込む処理自体がスキップされます。</p>
+<p>ローカルに設置する AutoConfig ファイルとは異なり、リモートに設置する AutoConfig ファイルはエンコードは常に不要です。ファイルの拡張子としては .jsc が利用されることが多いようです。静的ファイルを設置する以外に、CGI スクリプトなどによって動的に生成させることもできます。その場合、送信するファイルの Content-Type は application/x-javascript-config などとなります。AutoConfig ファイルを自動的に生成する CGI スクリプトの例は、<a href="#CGI_.E3.81.AB.E3.82.88.E3.82.8B_Web_.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE_JavaScript_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.94.9F.E6.88.90">この文書の後半の参考資料</a>をご覧下さい。</p>
+<h3 id="Thunderbird.E3.81.A7.E3.81.AE.E5.88.A9.E7.94.A8.E4.BE.8B" name="Thunderbird.E3.81.A7.E3.81.AE.E5.88.A9.E7.94.A8.E4.BE.8B">Thunderbirdでの利用例</h3>
+<h4 id="Thunderbird_.E3.81.A7.E3.81.AE_AutoConfig_.E3.81.A8_LDAP_.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="Thunderbird_.E3.81.A7.E3.81.AE_AutoConfig_.E3.81.A8_LDAP_.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">Thunderbird での AutoConfig と LDAP 呼び出しのサポート</h4>
+<p>Thunderbird 1.5 以降(2.0以降も含めて)の標準のビルドでは、AutoConfig と LDAP 呼び出しが共に利用可能です(参考:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">バグ 295329</a>)。標準の <code>configure</code> スクリプトに、<code>MOZ_LDAP_XPCOM=1</code> と <code>MOZ_EXTENSIONS_DEFAULT="wallet spellcheck xmlextras pref webservices universalcharset auth"</code> が含まれていない古い Thunderbird 1.0.x でこれらの機能を利用するには、<a href="#.E5.8F.A4.E3.81.84_Thunderbird_1.0.x_.E3.81.B8.E3.81.AE_AutoConfig_.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E8.BF.BD.E5.8A.A0">再コンパイル</a>する必要があります。</p>
+<h4 id="AutoCongig_.E3.81.AE.E8.A8.AD.E5.AE.9A" name="AutoCongig_.E3.81.AE.E8.A8.AD.E5.AE.9A">AutoCongig の設定</h4>
+<p>これが、Thunderbird の起動時に AutoConfig を利用させる 2 つのディレクティブです。</p>
+<pre>[root@b008-02 /usr/lib/thunderbird-1.5]
+$tail -2 greprefs/all.js
+pref("general.config.obscure_value", 0); // MCD の .cfg ファイル用
+pref('general.config.filename', 'thunderbird.cfg'); // MCD の .cfg ファイル用
+</pre>
+<p>最初の 1 行は、ただファイルをエンコードしないことを宣言するものです (通常は 13 または 7 です)。2 行目は、読み込むファイルの名前です。この例では <code>/usr/lib/thunderbird-1.5/thunderbird.cfg</code> になります。</p>
+<h4 id="AutoConfig_.E3.81.A7.E4.BD.BF.E7.94.A8.E3.81.99.E3.82.8B.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.86.E3.82.A3.E3.83.96" name="AutoConfig_.E3.81.A7.E4.BD.BF.E7.94.A8.E3.81.99.E3.82.8B.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.86.E3.82.A3.E3.83.96">AutoConfig で使用するディレクティブ</h4>
+<p>ここでは、各ユーザ共通のメール設定を行います。ユーザのログイン名からアカウントを作成し、LDAP リクエストからメールアドレスを取得、それから IMAP と SMTP サーバを設定します。これにより、マルチユーザのワークステーション上でも、各ユーザは自分用に自動設定された Thunderbird を利用できるようになります。</p>
+<h5 id="thunderbird.cfg" name="thunderbird.cfg">thunderbird.cfg</h5>
+<p>以下が完全なファイルです。最初に環境変数からユーザのログイン名を取得し、それから LDAP アドレス帳の設定、メールアカウントの作成、IMAP と SMTP サーバの設定を行っています。</p>
+<pre>[root@b008-02 /usr/lib/thunderbird-1.5]
+$ cat thunderbird.cfg
+// このスクリプトの1行目は評価されないので、必ずコメント行にします
+
+// すべての行を try/catch 文に含めます
+try {
+
+// 1) 環境変数
+if(getenv("USER") != "") {
+ // *NIX 用の設定
+ var env_user = getenv("USER");
+ var env_home = getenv("HOME");
+} else {
+ // Windows 用の設定
+ // Windows 環境では、&lt;code&gt;USER&lt;/code&gt; や &lt;code&gt;HOME&lt;/code&gt; といった
+ // 環境変数は、&lt;code&gt;USERNAME&lt;/code&gt; や &lt;code&gt;HOMEPATH&lt;/code&gt; になります。
+ var env_user = getenv("USERNAME");
+ var env_home = getenv("HOMEPATH");
+}
+var env_mozdebug= getenv("MOZILLA_DEBUG");
+// var env_user = prompt("indiquez votre login", toto);
+
+// 2) 一般的な設定をロック
+// LDAP アドレス帳
+lockPref("ldap_2.prefs_migrated", true);
+lockPref("ldap_2.servers.LDAPINT.auth.savePassword", true);
+lockPref("ldap_2.servers.LDAPINT.description", "LDAP INT");
+lockPref("ldap_2.servers.LDAPINT.filename", "abook-1.mab");
+lockPref("ldap_2.servers.LDAPINT.uri", "ldap://ldap1.int-evry.Fr:389/ou=people,dc=int-evry,dc=fr??sub");
+lockPref("ldap_2.servers.history.filename", "history.mab");
+lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);
+lockPref("ldap_2.servers.pab.filename", "abook.mab");
+lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);
+
+// アカウント
+lockPref("mail.account.account1.server", "server1");
+lockPref("mail.account.account2.identities", "id1");
+lockPref("mail.account.account2.server", "server2");
+lockPref("mail.accountmanager.accounts", "account1,account2");
+lockPref("mail.accountmanager.defaultaccount", "account2");
+lockPref("mail.accountmanager.localfoldersserver", "server1");
+lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.LDAPINT");
+lockPref("mail.identity.id1.draft_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Drafts");
+lockPref("mail.identity.id1.drafts_folder_picker_mode", "0");
+lockPref("mail.identity.id1.fcc_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Sent");
+lockPref("mail.identity.id1.fcc_folder_picker_mode", "0");
+lockPref("mail.identity.id1.organization", "INT Evry France");
+lockPref("mail.identity.id1.overrideGlobal_Pref", true);
+lockPref("mail.identity.id1.reply_to", "");
+
+// IMAP
+lockPref("mail.server.server2.hostname", "imap-int.int-evry.fr");
+lockPref("mail.server.server2.isSecure", true);
+lockPref("mail.server.server2.login_at_startup", true);
+lockPref("mail.server.server2.max_cached_connections", 5);
+// lockPref("mail.server.server2.name", "jehan.procaccia@int-evry.fr");
+lockPref("mail.server.server2.type", "imap");
+lockPref("mail.server.server2.userName", env_user);
+
+// SMTP
+lockPref("mail.identity.id1.smtpServer", "smtp1");
+lockPref("mail.identity.id1.stationery_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Templates");
+lockPref("mail.identity.id1.tmpl_folder_picker_mode", "0");
+lockPref("mail.identity.id1.valid", true);
+
+// SMTP 一般設定
+lockPref("mail.smtp.defaultserver", "smtp1");
+lockPref("mail.smtpserver.smtp1.auth_method", 0);
+lockPref("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");
+lockPref("mail.smtpserver.smtp1.port", 25);
+lockPref("mail.smtpserver.smtp1.try_ssl", 0);
+lockPref("mail.smtpserver.smtp1.username", "");
+lockPref("mail.smtpservers", "smtp1");
+lockPref("mail.startup.enabledMailCheckOnce", true);
+lockPref("mailnews.quotingPrefs.version", 1);
+lockPref("mailnews.ui.threadpane.version", 5);
+
+/* 3) ここで定義しておく (下の 4 以降では機能しないため) processLDAPValues() は、
+ 後で直下の getLDAPAttributes() によって呼び出されます。
+ $MOZILLA_HOME/defaults/autoconfig/prefcalls.js で定義されている
+ getLDAPAttributes() コードを参照すれば、「ユーザ定義」された
+ processLDAPValues() への内部呼び出しを確認できます
+*/
+function processLDAPValues(values) {
+ if(values) {
+ // LDAP クエリから返ってきた値でグローバル変数をセットします
+ ldap_values = values;
+ var uid = getLDAPValue(values, "uid");
+ var cn = getLDAPValue(values, "cn");
+ var mail = getLDAPValue(values, "mail");
+ var URL = getLDAPValue(values, "labeledURI");
+
+// これらの LDAP 変数は、この processLDAPValues 関数内部でしか使用できません。
+// そのため、ここで必要な設定項目を記述しておきます
+lockPref("mail.identity.id1.useremail", mail);
+lockPref("mail.server.server2.name", mail);
+lockPref("mail.identity.id1.fullName", cn);
+// ポップアップによるエラーメッセージを使ったデバッグが使えなくなってしまいました
+var env_mozdebug= getenv("MOZILLA_DEBUG");
+if (env_mozdebug) {displayError("エラーはありませんでした。これはデバッグ用です。cn は " + cn + "、mail は " + mail); }
+ }
+ }
+// 4) LDAP サーバを呼び出し、LDAP 属性 (mail と cn) を取得します。
+// これは最終的に上記 3 の processLDAPValues() を呼び出します
+ getLDAPAttributes("ldap2.int-evry.fr","ou=people,dc=int-evry,dc=fr","uid=" + env_user,"uid,cn,mail,labeledURI");
+
+// try 文を閉じて catch 文を呼び出します
+} catch(e) {
+ displayError("lockedPref", e);
+}
+</pre>
+<h5 id="AutoConfig_.E3.81.AE.E3.83.86.E3.82.B9.E3.83.88" name="AutoConfig_.E3.81.AE.E3.83.86.E3.82.B9.E3.83.88">AutoConfig のテスト</h5>
+<h6 id=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0" name=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0">デバッグ</h6>
+<p>AutoConfig が問題なく機能することを確認するため、環境変数を設定し、<code>thunderbird.cfg</code> ファイルの読み込みを監視しました。</p>
+<pre>$ export NSPR_LOG_MODULES=MCD:5
+$ export NSPR_LOG_FILE=/tmp/thunderbird-log.txt
+</pre>
+<p>Thunderbird が起動すると、次のような出力が見られるはずです。</p>
+<pre> $ cat /tmp/thunderbird-log.txt
+-1209403040[808a788]: general.config.filename = thunderbird.cfg
+-1209403040[808a788]: evaluating .cfg file thunderbird.cfg with obscureValue 0
+</pre>
+<h6 id=".E5.88.9D.E6.9C.9F.E5.8C.96" name=".E5.88.9D.E6.9C.9F.E5.8C.96">初期化</h6>
+<p>次に、必ず新しい Thunderbird のアカウントで起動します。すでにアカウントが存在していて、メールと設定を残したい場合は、この行は飛ばしてください。</p>
+<pre>$ rm -rf ~/.thunderbird
+</pre>
+<h6 id=".E8.B5.B7.E5.8B.95" name=".E8.B5.B7.E5.8B.95">起動</h6>
+<pre>$ thunderbird
+</pre>
+<p>インストールされているメールクライアントに応じて、Netscape や Mozilla からプロファイルをインポートするかどうか Thunderbird が聞いてきた場合は、何もインポートせず、AutoConfig だけを実行させてください。</p>
+<p>これでうまくいくはずです。複数ユーザの AutoConfig を動作確認するには、異なる <code>USER</code> 変数 (<code>USER=procacci</code>、<code>USER=test</code> など、LDAP ディレクトリに存在するユーザの誰か) を設定してプロセスを再起動します。</p>
+<p> </p>
+<h3 id="Firefox_.E3.81.A7.E3.81.AE.E5.88.A9.E7.94.A8.E4.BE.8B" name="Firefox_.E3.81.A7.E3.81.AE.E5.88.A9.E7.94.A8.E4.BE.8B">Firefox での利用例</h3>
+<p>原理は上で説明した Thunderbird と同じです。バイナリディストリビューションには AutoConfig (pref 拡張) が含まれていますが、残念ながら LDAP 呼び出しのサポートが含まれていません (参考: <code>MOZ_LDAP_XPCOM=1</code>)。私たちの場合、環境変数では通常利用できない、コモンネームとメールアドレスの取得によるメールアカウントの設定を行うため、Thunderbird では必要でしたが、Firefox では必須ではありませんでした。ただし、標準のホームページをユーザの LDAP 属性 <code>labeledURI</code> に設定するなど、Firefox の追加設定のために LDAP の値を取得できると便利かもしれません。</p>
+<h4 id="AutoConfig_.E3.81.A8_LDAP_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="AutoConfig_.E3.81.A8_LDAP_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">AutoConfig と LDAP のサポート</h4>
+<h5 id="Firefox_.E3.81.B8.E3.81.AE_LDAP_.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.AE.E8.BF.BD.E5.8A.A0" name="Firefox_.E3.81.B8.E3.81.AE_LDAP_.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.AE.E8.BF.BD.E5.8A.A0">Firefox への LDAP サポートの追加</h5>
+<p>Firefox 1.0.x から 3.0 までのすべての Firefox の標準ビルドには、 LDAP のサポート (<code>MOZ_LDAP_XPCOM=1</code>) は含まれていません。LDAP のサポートを含めるには再コンパイルする必要があります。<code>mozconfig</code> ファイルを編集し、<code>--disable-ldap</code> を削除します。Firefox がどのようなオプションでコンパイルされているかは <code>about:buildconfig</code> を見ると確認できます (Thunderbird で同じことをする方法は分かりません。どのようにコンパイルされているのでしょうか)。詳しくは <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">バグ 295329</a> をご覧ください。</p>
+<p>また、Firefox 1.0.x では pref 拡張自体も有効にして再コンパイルする必要があります。<code>mozconfig</code> ファイルを編集し、pref 拡張 (<code>--enable-extensions=pref</code>) を追加してください。この作業は Firefox 1.5 以降では不要です。</p>
+<pre>about:buildconfig
+
+Build platform
+target
+i686-pc-linux-gnu
+
+Build tools
+Compiler Version Compiler flags
+gcc gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.fc3) -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -Wno-long-long -pedantic -pthread -pipe
+c++ gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.fc3) -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic -fshort-wchar -pthread -pipe -I/usr/X11R6/include
+
+Configure arguments
+--disable-mailnews --enable-extensions=cookie,xml-rpc,xmlextras,pref,transformiix,universalchardet,webservices,inspector,gnomevfs,negotiateauth --enable-crypto --disable-composer --enable-single-profile --disable-profilesharing --with-system-jpeg --with-system-zlib --with-system-png --with-pthreads --disable-tests --disable-jsd --disable-installer '--enable-optimize=-Os -g -pipe -m32 -march=i386 -mtune=pentium4' --enable-xft --enable-xinerama --enable-default-toolkit=gtk2 --enable-official-branding --disable-xprint --disable-strip --enable-pango
+</pre>
+<h4 id="all.js" name="all.js">all.js</h4>
+<pre>[root@b008-02 /usr/lib/firefox-1.5.0.2]
+$tail -4 greprefs/all.js
+// AutoConfig jehan
+pref('general.config.obscure_value', 0);
+pref('general.config.filename', 'firefox.cfg');
+</pre>
+<h4 id="firefox.cfg" name="firefox.cfg">firefox.cfg</h4>
+<p>このファイルでは、ブラウザのホームページを、ユーザの LDAP エントリーで定義された <code>labeledURI</code> に設定しています。これにより、AutoConfig と LDAP が両方機能することを確認できます。</p>
+<pre>[root@b008-02 /usr/lib/firefox-1.5.0.2]
+$cat firefox.cfg
+// すべての行を try/catch 文に含めます
+try {
+
+// プライバシーとセキュリティ
+defaultPref("signon.rememberSignons", false);
+
+// 1) 環境変数
+if(getenv("USER") != "") {
+ // *NIX 用の設定
+ var env_user = getenv("USER");
+ var env_home = getenv("HOME");
+} else {
+ // Windows 用の設定
+ var env_user = getenv("USERNAME");
+ var env_home = getenv("HOMEPATH");
+}
+var env_mozdebug = getenv("MOZILLA_DEBUG");
+
+/* 2) ここで定義しておく (下の 3 以降では機能しないため) processLDAPValues() は、
+ 後で直下の getLDAPAttributes() によって呼び出されます。
+ $MOZILLA_HOME/defaults/autoconfig/prefcalls.js で定義されている
+ getLDAPAttributes() コードを参照すれば、「ユーザ定義」された
+ processLDAPValues() への内部呼び出しを確認できます。
+*/
+function processLDAPValues(values) {
+ if(values) {
+ // LDAP クエリから返ってきた値でグローバル変数をセットします
+ ldap_values = values;
+ var uid = getLDAPValue(values, "uid");
+ var cn = getLDAPValue(values, "cn");
+ var mail = getLDAPValue(values, "mail");
+ var URL = getLDAPValue(values, "labeledURI");
+// ポップアップによるエラーメッセージを使ったデバッグが使えなくなってしまいました
+var env_mozdebug= getenv("MOZILLA_DEBUG");
+if (env_mozdebug) {displayError("エラーはありませんでした。これはデバッグ用です。cn は " + cn + "、mail は " + mail + "、labeledURI は " + URL); }
+lockPref("browser.startup.homepage", URL);
+ }
+ }
+
+//lockPref("browser.startup.homepage", "http://www.renater.fr/");
+// 3) LDAP サーバを呼び出し、LDAP 属性 (mail と cn) を取得します。
+// これは最終的に上記 2 の processLDAPValues() を呼び出します
+ getLDAPAttributes("ldap2.int-evry.fr","ou=people,dc=int-evry,dc=fr","uid=" + env_user,"uid,cn,mail,labeledURI");
+
+// try 文を閉じて catch 文を呼び出します
+} catch(e) {displayError("lockedPref", e);}
+</pre>
+<h4 id=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0_2" name=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0_2">デバッグ</h4>
+<p>ユーザ名と <code>MOZILLA_DEBUG</code> 変数を設定した場合 (<code>$export MOZILLA_DEBUG=1; export USER=procacci</code>)、<code>displayError()</code> によってこのようなポップアップウィンドウが表示されます。</p>
+<p><img alt="Image:mozilla-autoconfig-en001.png"></p>
+<p>これは「警告」というタイトルのウィンドウですが、ただのデバッグツールであって、他にポップアップで情報を表示する方法は確認できていません。詳しくは <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=206294" title="Autoconfig via a URL appears to be missing. (autoadmin.global_config_url)">バグ 206294</a> のコメントをご覧ください。</p>
+<pre> ------- Comment #14 From Daniel Wang 2003-11-06 09:06 PDT [reply] -------
+
+Jehan Procaccia, you need to change 5.8 to reflect what I said in comment 21.
+
+Preference files and config files are special JavaScript files with limited scopes. They
+can only call the get/set pref/env methods and have no access to other objects
+(need to investigate what exactly are allowed). alert() is a method of the
+Window object.
+</pre>
+<p>また、ニュースグループ mozilla.dev.tech.js-engine にも同様の投稿がありました。</p>
+<pre>Date: Wed, 17 May 2006 19:06:28 +0200
+From: jehan procaccia &lt;jehan.procaccia@int-evry.fr&gt;
+
+Newsgroups: mozilla.dev.tech.js-engine
+Subject: scope of js file functions in Frefox/Thunderbird AutoConfig context
+</pre>
+<p> </p>
+<h3 id="AutoConfig_.E3.81.AE.E5.88.A9.E7.94.A8.E4.B8.8A.E3.81.AE.E6.B3.A8.E6.84.8F" name="AutoConfig_.E3.81.AE.E5.88.A9.E7.94.A8.E4.B8.8A.E3.81.AE.E6.B3.A8.E6.84.8F">AutoConfig の利用上の注意</h3>
+<h4 id=".E8.A8.AD.E5.AE.9A.E3.81.AE.E5.A4.89.E6.9B.B4.E3.83.BB.E5.89.8A.E9.99.A4" name=".E8.A8.AD.E5.AE.9A.E3.81.AE.E5.A4.89.E6.9B.B4.E3.83.BB.E5.89.8A.E9.99.A4">設定の変更・削除</h4>
+<p><code>pref()</code>、<code>lockPref()</code> の各ディレクティブによって設定された値はユーザプロファイル内の prefs.js にも保存されます(これは user.js を使用した場合の挙動によく似ています)。よって、これらのディレクティブによって値を設定している箇所を AutoConfig ファイルから削除しただけでは、古い設定値が依然として残ったなままとなることに注意してください。</p>
+<p>設定項目 <code>autoadmin.global_config_url</code> によってリモートの AutoConfig ファイルを利用していた場合、<code>autoadmin.global_config_url</code> の示していたURLが prefs.js に保存されます。そのため、 <code>autoadmin.global_config_url</code> を設定している箇所をローカルの AutoConfig ファイルから削除しても、ユーザープロファイル内に残った設定値によって、リモートの AutoConfig ファイルが参照され続けてしまうことになります。</p>
+<p>古い設定や不要になった設定を無効化し、上記のようなトラブルが起こってしまうことを防ぐには、 <code>lockPref("autoadmin.global_config_url", "")</code> などのように値を上書きするか、<code>clearPref("autoadmin.global_config_url")</code> のように<code>clearPref()</code>ディレクティブを使用して明示的に値を削除する必要があります。</p>
+<p>プロファイル内のprefs.jsにはデフォルト設定からの変更点のみが保存されるため、原則として、<code>defaultPref()</code>を使用して設定された値はプロファイル内のprefs.jsには保存されません。ただし、<code>lockPref()</code>ディレクティブを使用してデフォルト値と同じ値でロックをかけた場合、その値はプロファイル内のprefs.jsに保存される場合があります。</p>
+<h4 id="AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.82.AD.E3.83.A3.E3.83.83.E3.82.B7.E3.83.A5" name="AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.82.AD.E3.83.A3.E3.83.83.E3.82.B7.E3.83.A5">AutoConfig ファイルのキャッシュ</h4>
+<p>設定項目 <code>autoadmin.global_config_url</code> によって指定されたリモートの AutoConfig ファイルの内容は、ユーザープロファイル内に failover.jsc としてキャッシュされます。</p>
+<p>このキャッシュファイルは、サーバの障害やリモートの AutoConfig のエラーなどによって AutoConfig ファイルの読み込みに失敗した際に利用されます。設定項目 <code>autoadmin.offline_failover</code> を明示的に true に設定している場合、オフライン時にもこのキャッシュファイルが使用されます。</p>
+<p>キャッシュファイルの利用を禁止するには、設定項目 <code>autoadmin.failover_to_cached</code> の値として false を設定して下さい。キャッシュファイルの利用が禁止されている場合、リモートの AutoConfig ファイルの読み込みに失敗した際は、Mozilla アプリケーションは強制的にオフラインモードとなります。</p>
+<h4 id=".E8.A8.AD.E5.AE.9A.E3.81.AE.E8.AA.AD.E3.81.BF.E8.BE.BC.E3.81.BE.E3.82.8C.E3.82.8B.E9.A0.86.E7.95.AA.E3.81.A8.E5.84.AA.E5.85.88.E9.A0.86.E4.BD.8D" name=".E8.A8.AD.E5.AE.9A.E3.81.AE.E8.AA.AD.E3.81.BF.E8.BE.BC.E3.81.BE.E3.82.8C.E3.82.8B.E9.A0.86.E7.95.AA.E3.81.A8.E5.84.AA.E5.85.88.E9.A0.86.E4.BD.8D">設定の読み込まれる順番と優先順位</h4>
+<p>AutoConfig ファイルを利用している環境で、おのおのの方法によって設定された設定値は、ユーザプロファイル内に設定が全く保存されていない新規プロファイルで起動した場合は以下の優先順位で反映されます。</p>
+<ol>
+ <li><code>MOZILLA_HOME/defaults/pref/*.js</code> での初期設定値:最も優先順位が低い</li>
+ <li>各アドオンの <code>defaults/preferences/*.js</code> での初期設定値</li>
+ <li>ローカルの AutoConfig ファイル(<code>MOZILLA_HOME/*.cfg</code>)において、<code>defaultPref()</code>ディレクティブで設定された値</li>
+ <li>リモートの AutoConfig ファイルにおいて、<code>defaultPref()</code>ディレクティブで設定された値</li>
+ <li>ユーザプロファイル内のprefs.jsに保存された設定値</li>
+ <li>user.jsで設定された値</li>
+ <li>ローカルの AutoConfig ファイルにおいて、<code>pref()</code>ディレクティブで設定された値</li>
+ <li>リモートの AutoConfig ファイルにおいて、<code>pref()</code>ディレクティブで設定された値</li>
+ <li>ローカルの AutoConfig ファイルにおいて、<code>lockPref()</code>ディレクティブで設定された値</li>
+ <li>リモートの AutoConfig ファイルにおいて、<code>lockPref()</code>ディレクティブで設定された値:最も優先順位が高い</li>
+</ol>
+<h4 id="AutoConfig_.E3.81.AB.E3.82.88.E3.82.8B.E8.A8.AD.E5.AE.9A.E3.81.8C.E6.84.8F.E5.9B.B3.E9.80.9A.E3.82.8A.E3.81.AB.E5.83.8D.E3.81.8B.E3.81.AA.E3.81.84.E3.82.B1.E3.83.BC.E3.82.B9" name="AutoConfig_.E3.81.AB.E3.82.88.E3.82.8B.E8.A8.AD.E5.AE.9A.E3.81.8C.E6.84.8F.E5.9B.B3.E9.80.9A.E3.82.8A.E3.81.AB.E5.83.8D.E3.81.8B.E3.81.AA.E3.81.84.E3.82.B1.E3.83.BC.E3.82.B9">AutoConfig による設定が意図通りに働かないケース</h4>
+<p>設定が読み込まれる順番次第で、ユーザの設定が失われる場合があります。</p>
+<p>例えばローカルの AutoConfig に <code>defaultPref("dom.disable_open_during_load", false);</code> という記述がある場合、これは、通常はtrueが初期値となっている <code>dom.disable_open_during_load</code> の初期値をfalseに設定し、ユーザが任意にtrueに変更できるようにする、という風な結果を想定したものと考えられます。</p>
+<p>しかし実際には、ユーザが設定値をtrueに変更した場合、次回の Firefox 起動時には以下のような現象が起こります。</p>
+<ol>
+ <li>firefox.js によって <code>dom.disable_open_during_load</code> の初期値がtrueと定義される</li>
+ <li>ユーザが変更した結果 prefs.js に保存されていた値 true が読み込まれる。これは初期値に等しいため、消去される。</li>
+ <li>AutoConfig によって <code>dom.disable_open_during_load</code> の初期値がfalseと定義し直される</li>
+</ol>
+<p>つまりこの場合、ユーザが何度設定を変更してもFirefoxを起動し直す度に設定が失われてしまうという結果になります。</p>
+<p>AutoConfig は、このようなややこしい問題が起こらない場面に限定して利用するのが望ましいと言えるでしょう。ユーザが設定を変更できる状態で、設定の初期値だけを変更するといった用途には、アドオンの defaults\preferences\フォルダ内に置かれたJavaScriptファイルを使用するのが最も確実且つ安全と考えられます。</p>
+<h4 id=".E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.81.AE_AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.BD.AE.E3.81.8D.E5.A0.B4.E6.89.80.E3.81.A8.E3.81.97.E3.81.A6.E6.8C.87.E5.AE.9A.E3.81.A7.E3.81.8D.E3.82.8B_URI" name=".E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.81.AE_AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.BD.AE.E3.81.8D.E5.A0.B4.E6.89.80.E3.81.A8.E3.81.97.E3.81.A6.E6.8C.87.E5.AE.9A.E3.81.A7.E3.81.8D.E3.82.8B_URI">リモートの AutoConfig ファイルの置き場所として指定できる URI</h4>
+<p>設定項目 <code>autoadmin.global_config_url</code> の値として、<a href="#.E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.81.AE.E3.82.B5.E3.83.BC.E3.83.90.E4.B8.8A.E3.81.AB.E7.BD.AE.E3.81.8F_AutoConfig_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">前述の例</a>では一般的な http: のURIを示しましたが、これ以外にも Mozilla アプリケーション自身が対応している形式の URI ( file:, ftp:, gopher: など)であればいずれも指定可能です。</p>
+<h4 id=".E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.81.AE_AutoConfig_.E3.81.A8.E3.83.97.E3.83.AD.E3.82.AD.E3.82.B7" name=".E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.81.AE_AutoConfig_.E3.81.A8.E3.83.97.E3.83.AD.E3.82.AD.E3.82.B7">リモートの AutoConfig とプロキシ</h4>
+<p>HTTPなどでアクセスするリモートの AutoConfig ファイルでプロキシの設定を行う場合、プロキシの設定がローカルに保存される点と、 AutoConfig ファイルへのアクセス自体にもプロキシが利用される点に注意して下さい。</p>
+<p>存在しないプロキシサーバを参照するよう設定してしまった場合や、前回 AutoConfig で設定されたプロキシサーバが利用できなくなってしまった場合、Mozilla アプリケーションは AutoConfig ファイル自体を取得できなくなってしまいます。</p>
+<p>このような問題を避けるには、 AutoConfig ファイルをファイル共有サーバに置いて File URL でアクセスする、などの方法が考えられます。</p>
+<h3 id=".E9.96.A2.E9.80.A3.E6.83.85.E5.A0.B1" name=".E9.96.A2.E9.80.A3.E6.83.85.E5.A0.B1">関連情報</h3>
+<h4 id="AutoConfig_.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E9.96.A2.E9.80.A3.E8.B3.87.E6.96.99" name="AutoConfig_.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E9.96.A2.E9.80.A3.E8.B3.87.E6.96.99">AutoConfig に関する関連資料</h4>
+<p><a class="external" href="http://mit.edu/~firefox/www/maintainers/autoconfig.html" rel="freelink">http://mit.edu/~firefox/www/maintain...utoconfig.html</a></p>
+<p><a class="external" href="http://www.alain.knaff.lu/howto/MozillaCustomization/index.html" rel="freelink">http://www.alain.knaff.lu/howto/Mozi...ion/index.html</a><br>
+ <a class="external" href="http://thegoldenear.org/toolbox/windows/docs/mozilla-pre-config.html" rel="freelink">http://thegoldenear.org/toolbox/wind...re-config.html</a><br>
+ <a class="external" href="http://ilias.ca/blog/2005/03/locking-mozilla-firefox-settings/" rel="freelink">http://ilias.ca/blog/2005/03/locking...efox-settings/</a></p>
+<p>Windows でのコンパイル方法:<br>
+ <a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=276014" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=276014</a></p>
+<p><a class="external" href="http://www.mozilla.org/community/developer-forums.html" rel="freelink">http://www.mozilla.org/community/dev...er-forums.html</a><br>
+ <a class="external" href="http://forums.mozillazine.org/viewtopic.php?p=2090731&amp;highlight=autoconfig#2090731" rel="freelink">http://forums.mozillazine.org/viewto...config#2090731</a><br>
+ <a class="external" href="http://forums.mozillazine.org/viewtopic.php?p=1354355&amp;highlight=autoconfig#1354355" rel="freelink">http://forums.mozillazine.org/viewto...config#1354355</a><br>
+ <a class="external" href="http://forums.mozillazine.org/viewtopic.php?p=32783&amp;highlight=autoconfig#32783" rel="freelink">http://forums.mozillazine.org/viewto...toconfig#32783</a></p>
+<h4 id=".E9.96.A2.E9.80.A3.E3.83.90.E3.82.B0" name=".E9.96.A2.E9.80.A3.E3.83.90.E3.82.B0">関連バグ</h4>
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">バグ 295329</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=222973" title="[Deploy]Need doc on AutoConfig and Config files">バグ 222973</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=225288" title="FIXED: thunderbird does not recognize mission control preferences">バグ 225288</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=178685" title="Complete preference ref manual (for hidden prefs)">バグ 178685</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=272970" title="autoconfig defaultpref doesn't work">バグ 272970</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=206294" title="Autoconfig via a URL appears to be missing. (autoadmin.global_config_url)">バグ 206294</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=302096" title="FIXED: Thunderbird does not have AutoConfig LDAP support enabled">バグ 302096</a></p>
+<p> </p>
+<p> </p>
+<h3 id=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99" name=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99">参考資料</h3>
+<h4 id=".E5.8F.A4.E3.81.84_Thunderbird_1.0.x_.E3.81.B8.E3.81.AE_AutoConfig_.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E8.BF.BD.E5.8A.A0" name=".E5.8F.A4.E3.81.84_Thunderbird_1.0.x_.E3.81.B8.E3.81.AE_AutoConfig_.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E8.BF.BD.E5.8A.A0">古い Thunderbird 1.0.x への AutoConfig オプションの追加</h4>
+<p>Thunderbird 1.0.x のバイナリディストリビューションには、標準では AutoConfig が含まれていません。おそらく、大半の個人ユーザが必要としない機能のために、バイナリの読み込み時間が長くなってしまうのを防ぐための措置だと思います。しかし、法人で導入する際には必須の機能です。そこで私たちは、AutoConfig サポートを付けて Thunderbird を再コンパイルしました。<code>mozconfig</code> ファイルに <code>--enable-extensions=pref</code> を追加するだけのことです。</p>
+<p>手元の Fedora Core 3 で、Thunderbird のソースパッケージ <code>thunderbird-1.0.2-1.3.3.src.rpm</code> を取得してインストール (<code>rpm -i</code>) し、<code>/usr/src/redhat/SOURCES/thunderbird-mozconfig</code> に以下の行を追加しました。</p>
+<pre>ac_add_options --enable-extensions=pref
+</pre>
+<p>それから、コンパイルとインストールを実行しました。</p>
+<pre>$ rpmbuild -ba /usr/src/redhat/SPECS/thunderbird.spec
+$ rpm -Uvh /usr/src/redhat/RPMS/i386/thunderbird-1.0.2-1.3.3.i386.rpm
+</pre>
+<p>インストール後、次のようにして AutoConfig が復活していることを確認しました。</p>
+<pre>$ rpm -ql thunderbird | grep autoconfig
+/usr/lib/thunderbird-1.0.2/chrome/en-US/locale/autoconfig
+/usr/lib/thunderbird-1.0.2/components/autoconfig.xpt
+/usr/lib/thunderbird-1.0.2/components/libautoconfig.so
+/usr/lib/thunderbird-1.0.2/defaults/autoconfig
+/usr/lib/thunderbird-1.0.2/defaults/autoconfig/platform.js
+/usr/lib/thunderbird-1.0.2/defaults/autoconfig/prefcalls.js
+</pre>
+<p> </p>
+<h5 id=".E5.A0.B1.E5.91.8A.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E9.96.A2.E9.80.A3.E3.83.90.E3.82.B0" name=".E5.A0.B1.E5.91.8A.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E9.96.A2.E9.80.A3.E3.83.90.E3.82.B0">報告されている関連バグ</h5>
+<p>参考として、古い 1.0.x リリースに存在する問題を挙げておきます。</p>
+<h5 id=".E4.B8.8D.E8.A6.81.E3.81.AA.E7.A9.BA.E7.99.BD.E3.81.AE.E5.86.8D.E7.99.BA" name=".E4.B8.8D.E8.A6.81.E3.81.AA.E7.A9.BA.E7.99.BD.E3.81.AE.E5.86.8D.E7.99.BA">不要な空白の再発</h5>
+<p>残念なことに、Thunderbird 1.0.2 で「空白バグ」が再発してしまいました。詳細は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=229271" title='FIXED: unwanted "white space" in function getLDAPValue from autoconfig/prefcalls.js'>バグ 229271</a> をご参照ください。Mozilla のナイトリービルドでは 2004 年末に修正されていますが (<code>mozilla/extensions/pref/autoconfig/src/nsLDAPSyncQuery.cpp 1.7.2.1</code>)、少なくとも Thunderbird 1.0.2 には問題が存在します。このため、このバグで提案した回避策 (<code>start_pos += 1;</code>) を適用しました。</p>
+<p> </p>
+<p> </p>
+<h4 id="CGI_.E3.81.AB.E3.82.88.E3.82.8B_Web_.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE_JavaScript_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.94.9F.E6.88.90" name="CGI_.E3.81.AB.E3.82.88.E3.82.8B_Web_.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE_JavaScript_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.94.9F.E6.88.90">CGI による Web ベースの JavaScript 設定ファイルの生成</h4>
+<pre>[root@corbeau /var/www/cgi-bin]
+$ cat mci-mozilla-glob-prefs-tux.cgi
+#!/usr/bin/perl -w
+
+print("Content-type: application/x-javascript-config\n\n");
+$page = &lt;&lt;"EOP";
+
+try {
+ var env_user = getenv("USER");
+ var env_home = getenv("HOME");
+ var env_mozdebug= getenv("MOZILLA_DEBUG");
+ function processLDAPValues(values) {
+ var uid = getLDAPValue(values, "uid");
+ var cn = getLDAPValue(values, "cn");
+ var mail = getLDAPValue(values, "mail");
+ lockPref("mail.server.server1.name", mail);
+ lockPref("mail.identity.id1.fullName", cn);
+ lockPref("mail.identity.id1.useremail", mail);
+
+ if (env_mozdebug) {
+ displayError("デバッグ mozilla.cfg v2.8", "mail: " + mail + " uid: " + uid + " cn: " + cn + " user: " + env_user);
+ }
+}
+// ブラウザ
+lockPref("browser.startup.homepage", "http://www.int-evry.fr/mci/user/");
+lockPref("browser.startup.homepage_override", true);
+lockPref("general.config.vendor", "mci-mozilla-web-tux");
+lockPref("startup.homepage_override_url", "http://www.int-evry.fr/mci/user/");
+lockPref("browser.cache.disk.capacity", 0);
+lockPref("network.cookie.cookieBehavior", 0);
+lockPref("network.proxy.autoconfig_url", "http://www.int-evry.fr/local/config.proxy");
+lockPref("network.proxy.type", 2);
+
+// アカウント
+lockPref("mail.account.account1.identities", "id1");
+lockPref("mail.account.account1.server", "server1");
+lockPref("mail.account.account2.server", "server2");
+lockPref("mail.account.account3.server", "server3");
+lockPref("mail.accountmanager.accounts", "account1,account2,account3");
+lockPref("mail.accountmanager.defaultaccount", "account1");
+
+// IMAP
+lockPref("mail.server.server1.hostname", "imap-int.int-evry.fr");
+lockPref("mail.server.server1.type", "imap");
+lockPref("mail.server.server1.login_at_startup", true);
+lockPref("mail.identity.id1.draft_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Drafts");
+lockPref("mail.identity.id1.drafts_folder_picker_mode", "0");
+lockPref("mail.identity.id1.fcc_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Sent");
+lockPref("mail.identity.id1.fcc_folder_picker_mode", "0");
+lockPref("mail.identity.id1.stationery_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Templates");
+lockPref("mail.identity.id1.tmpl_folder_picker_mode", "0");
+lockPref("mail.identity.id1.valid", true);
+lockPref("mail.identity.id1.overrideGlobal_Pref", true);
+lockPref("mail.server.server1.download_on_biff", true);
+lockPref("mail.server.server1.login_at_startup", true);
+lockPref("mail.server.server1.userName", env_user);
+lockPref("mail.server.server1.delete_model", 0);
+
+// SMTP
+lockPref("mail.identity.id1.smtpServer", "smtp1");
+defaultPref("mail.smtpserver.smtp1.auth_method", 0);
+lockPref("mail.smtpservers", "smtp1");
+lockPref("mail.smtpservers", "smtp1");
+lockPref("mail.smtp.defaultserver", "smtp1");
+lockPref("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");
+lockPref("mail.identity.id1.organization", "INT Evry France");
+lockPref("mail.startup.enabledMailCheckOnce", true);
+lockPref("mail.ui.folderpane.version", 3);
+lockPref("mailnews.ui.threadpane.version", 2);
+
+// LDAP 設定
+lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.ldapint");
+lockPref("ldap_2.prefs_migrated", true);
+lockPref("ldap_2.servers.history.filename", "history.mab");
+lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);
+lockPref("ldap_2.servers.ldapint.auth.savePassword", true);
+lockPref("ldap_2.servers.ldapint.description", "ldap-int");
+lockPref("ldap_2.servers.ldapint.filename", "abook-1.mab");
+lockPref("ldap_2.servers.ldapint.position", 3);
+lockPref("ldap_2.servers.ldapint.uri", "ldap://ldap1.int-evry.fr:389/ou=people,dc=int-evry,dc=fr??sub");
+lockPref("ldap_2.servers.pab.filename", "abook.mab");
+lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);
+
+// News 設定
+lockPref("mail.server.server3.hostname", "news.int-evry.fr");
+lockPref("mail.server.server3.max_cached_connections", 2);
+lockPref("mail.server.server3.name", "news.int-evry.fr");
+lockPref("mail.server.server3.type", "nntp");
+lockPref("mail.server.server3.userName", env_user);
+
+// LDAP サーバを呼び出してユーザ属性を取得
+getLDAPAttributes("ldap2.int-evry.fr", "ou=people,dc=int-evry,dc=fr", "uid=" +env_user, "uid,cn,mail");
+
+} catch(e) {
+ displayError("lockedPref", e);
+}
+
+EOP
+print $page;
+</pre>
+<h4 id="Windows_.E7.89.B9.E6.9C.89.E3.81.AE.E6.B3.A8.E6.84.8F.E7.82.B9" name="Windows_.E7.89.B9.E6.9C.89.E3.81.AE.E6.B3.A8.E6.84.8F.E7.82.B9">Windows 特有の注意点</h4>
+<p>Web ベースの CGI ファイルを使用しない場合、Windows では注意が必要です。エンコード前の AutoConfig ファイルの 1 行目は <code>//BEGIN CE prefs</code> としなければなりません。そうしないと「設定ファイルを正常に読み込めませんでした」というメッセージが表示され、Mozilla が起動しません。</p>
+<p>また、Windows 環境では、<code>USER</code> や <code>HOME</code> といった環境変数は、<code>USERNAME</code> や <code>HOMEPATH</code> になります。AutoConfig ファイル内で環境変数を参照する場合は注意してください。</p>
+<p><code>if... else</code> 形式のテストで、例えば <code>USER</code> と <code>USERNAME</code> のように、Linux と Windows どちらの環境変数を使うべきか判別することができます。</p>
+<pre>// 1) 環境変数
+if(getenv("USER") != "") {
+ // *NIX 用の設定
+ var env_user = getenv("USER");
+ var env_home = getenv("HOME");
+ } else {
+ // Windows 用の設定
+ var env_user = getenv("USERNAME");
+ var env_home = getenv("HOMEPATH");
+ }
+ var env_mozdebug= getenv("MOZILLA_DEBUG");
+</pre>
+<p> </p>
+<h4 id=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0_-_Bugzilla" name=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0_-_Bugzilla">デバッグ - Bugzilla</h4>
+<h5 id=".E3.83.A9.E3.83.B3.E3.82.BF.E3.82.A4.E3.83.A0.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8" name=".E3.83.A9.E3.83.B3.E3.82.BF.E3.82.A4.E3.83.A0.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8">ランタイムメッセージ</h5>
+<p>Unix のシェル (<code>export MOZILLA_DEBUG=1</code>) または Windows の <code>command.com</code> 環境変数 (<code>set MOZILLA_DEBUG=1</code>) で <code>MOZILLA_DEBUG</code> を定義した場合は、デバッグメッセージの出力を有効にする <code>var env_mozdebug=getenv("MOZILLA_DEBUG")</code> の存在に注目してください。</p>
+<h4 id=".E4.B8.8D.E8.A6.81.E3.81.AA.E7.A9.BA.E7.99.BD.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E3.83.90.E3.82.B0" name=".E4.B8.8D.E8.A6.81.E3.81.AA.E7.A9.BA.E7.99.BD.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E3.83.90.E3.82.B0">不要な空白に関するバグ</h4>
+<p>著者は、おそらく Mozilla 1.8 で修正されるであろう問題を発見しました。バグ報告と回避策は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=229271" title='FIXED: unwanted "white space" in function getLDAPValue from autoconfig/prefcalls.js'>バグ 229271</a> をご覧ください。簡単に言えば、<code>autoconfig/preffcalls.js</code> の <code>getLDAPValue()</code> 関数に以下の行を追加してください。</p>
+<pre> start_pos += search_key.length;
+//start
+ start_pos +=1;
+//end
+</pre>
+<h4 id=".E8.B3.87.E6.96.99" name=".E8.B3.87.E6.96.99">資料</h4>
+<p>文書が用意されていない問題についても <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=178685" title="Complete preference ref manual (for hidden prefs)">バグ 178685</a> に報告しました。最終的には、<a class="external" href="http://web.archive.org/web/20050415163430/http://wangrepublic.org/daniel/mozilla/prefs/">http://wangrepublic.org/daniel/mozilla/prefs/</a> にあるような素晴らしい資料が完成する予定です。</p>
+<h4 id=".E3.83.9B.E3.83.BC.E3.83.A0.E3.83.9A.E3.83.BC.E3.82.B8.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_defeultPref" name=".E3.83.9B.E3.83.BC.E3.83.A0.E3.83.9A.E3.83.BC.E3.82.B8.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_defeultPref">ホームページのための defeultPref</h4>
+<p><code>defaultPref</code> 関数でホームページを設定することができません。このため、標準設定が利用され、ユーザが変更できてしまいます。この問題に関するバグも開かれています。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=272970" title="autoconfig defaultpref doesn't work">バグ 272970</a> をご覧ください。</p>
+<h4 id="greprefs_.E3.81.AE.E9.81.A9.E5.88.87.E3.81.AA.E6.A8.A9.E9.99.90" name="greprefs_.E3.81.AE.E9.81.A9.E5.88.87.E3.81.AA.E6.A8.A9.E9.99.90">greprefs の適切な権限</h4>
+<p>Linux では、<code>MOZILLA_HOME/greprefs</code> ディレクトリに対して標準ではユーザのアクセス権がなく、AutoConfig が正しく機能しないことにも注意してください。この問題に関するバグは <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=270623" title="greprefs subdirectory; modes too much restrictive">バグ 270623</a> です。回避策は <code>chmod 755 greprefs</code> とすることです。</p>
+<h4 id=".E3.83.A1.E3.83.BC.E3.83.AB.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80" name=".E3.83.A1.E3.83.BC.E3.83.AB.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80">メールフォルダ</h4>
+<p>著者は、このソリューションを実装する際、メールフォルダについて面倒なことに遭遇しました。当初は、ログインしているユーザのホームディレクトリにあるローカルのメールフォルダを使用しようと考えていました。このフォルダは、Unix では <code>$HOME/nsmail/...</code> になり、Windows では同じ Unix パスの Samba マウントになります (例えば <code>U:\nsmail</code> というパスで、<code>U:</code> は Samba マウント <code>\\samba-server\%USERNAME</code> ということです)。しかし、ファイルシステムの書き込みやメールの形式が Windows と Unix で異なり、システム間で読み出しや書き込みを行うと、フォルダがすぐに読み出し不可能になったり、場合によっては破損してしまうといった問題が起こりました。</p>
+<p>このようなことから、最終的には IMAP を採用し、IMAP フォルダを使用することにしました。また、ワシントン大学の IMAP サーバから Cyrus サーバに移行することで、容量制限や共有フォルダ、アクセス制御リスト (ACL)、メールのみのアカウント (<code>/etc/passwd</code> のエントリーが不要)、優れたパフォーマンスなど、いくつかの興味深い機能を引き継ぐことができました。</p>
+<h4 id=".E4.BF.A1.E9.A0.BC.E6.80.A7" name=".E4.BF.A1.E9.A0.BC.E6.80.A7">信頼性</h4>
+<h5 id=".E3.83.95.E3.82.A7.E3.82.A4.E3.83.AB.E3.82.AA.E3.83.BC.E3.83.90.E3.83.BC.E3.81.A8.E5.94.AF.E4.B8.80.E6.80.A7" name=".E3.83.95.E3.82.A7.E3.82.A4.E3.83.AB.E3.82.AA.E3.83.BC.E3.83.90.E3.83.BC.E3.81.A8.E5.94.AF.E4.B8.80.E6.80.A7">フェイルオーバーと唯一性</h5>
+<p>Roberto Aguilar 氏による貢献のおかげで、Mozilla の AutoConfig JavaScript に、ある LDAP サーバがダウンしていた場合に別のミラーサーバを検索する方法が実装されました。</p>
+<p>また、<code>if... else</code> 形式による巧妙な環境変数テストを行うことで、両方のシステム (Linux と Windows) で同じ JavaScript を用いることが可能になりました。</p>
+<h5 id="LDAP_.E3.82.B5.E3.83.BC.E3.83.90.E3.81.AE.E3.83.95.E3.82.A7.E3.82.A4.E3.83.AB.E3.82.AA.E3.83.BC.E3.83.90.E3.83.BC" name="LDAP_.E3.82.B5.E3.83.BC.E3.83.90.E3.81.AE.E3.83.95.E3.82.A7.E3.82.A4.E3.83.AB.E3.82.AA.E3.83.BC.E3.83.90.E3.83.BC">LDAP サーバのフェイルオーバー</h5>
+<p>利用可能な LDAP サーバの配列を作成しておくことで、サーバのフェイルオーバーを実現できます。シャッフル関数によって、動作している LDAP サーバをひとつランダムに選択することができます。</p>
+<p>シャッフル関数は <a class="external" href="http://www.mickweb.com/javascript/arrays/pureshuffle.html" rel="freelink">http://www.mickweb.com/javascript/ar...reshuffle.html</a> にあるものを利用しました。</p>
+<p>変更したコードを公開する際は、シャッフル変数の直前に以下の注釈を追加してください。</p>
+<pre> /**
+ * 配列のシャッフル方法の定義
+ * Mickweb Script Factory のコードを利用しました。
+ * http://www.mickweb.com/javascript/arrays/pureshuffle.html
+ */
+</pre>
+<p>LDAP サーバのフェイルオーバーの実装は以下の通りです。</p>
+<pre>// 2) フェイルオーバー用に複数の LDAP サーバを定義
+ var ldap_values;
+ var ldap_servers = new Array('ldap2.int-evry.fr',
+ 'ldap1.int-evry.fr',
+ 'openldap.int-evry.fr'
+ );
+ // サーバ配列からランダムに選択を行うシャッフル関数
+ // 配列のシャッフル方法の定義
+ Array.prototype.shuffle = function(times) {
+ var i,j,t,l=this.length;
+ while(times--) {
+ with(Math) {
+ i = floor(random()*l);
+ j = floor(random()*l);
+ }
+ t = this[i];
+ this[i] = this[j];
+ this[j] = t;
+ }
+ return this;
+ }
+ // LDAP サーバをシャッフルし、毎回同じサーバが選択されないようにする
+ ldap_servers.shuffle(10);
+....
+// 4) LDAP サーバを呼び出し、LDAP 属性 (mail と cn) を取得します。これは最終的に上記 3 の processLDAPValues() を呼び出します
+// LDAP ミラーサーバ一覧を参照
+for(i = 0; i &lt; ldap_servers.length; i ++) {
+// uid に $USER または $USERNAME をセットし、LDAP サーバから mail と cn 属性を検索
+ getLDAPAttributes(ldap_servers[i],
+ "ou=people,dc=int-evry,dc=fr",
+ "uid=" + env_user,
+ "uid,cn,mail");
+ // 稼働している LDAP サーバに当たったらループを抜ける
+ if(ldap_values) {
+ running_ldap_server = ldap_servers[i];
+ // $MOZILLA_DEBUG=1 が定義されている場合は、稼働しているサーバをポップアップで表示
+ if (env_mozdebug) {
+ displayError("getLDAPAttributes: デバッグ 2 running_ldap_server: " + running_ldap_server);
+ }
+ break;
+ }
+ }
+</pre>
+<p> </p>
+<h4 id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.81.AE.E4.BE.8B" name=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.81.AE.E4.BE.8B">スクリプトの例</h4>
+<p>以下は、ここまでで説明されている内容を反映したスクリプトの実例です。</p>
+<pre>// Mozilla AutoConfig, Jehan Procaccia &amp; Roberto Aguilar
+
+// すべての行を try/catch 文に含めます
+try {
+/*
+1) 環境変数を定義
+2) LDAP ミラーサーバをリストしてランダム化
+3) processLDAPValues() を定義
+4) getLDAPAttributes() で LDAP サーバを呼び出して LDAP 属性 (mail と cn) を取得
+5) ユーザ設定を定義
+*/
+
+// 1) 環境変数
+if(getenv("USER") != "") {
+ // *NIX 用の設定
+ var env_user = getenv("USER");
+ var env_home = getenv("HOME");
+ } else {
+ // Windows 用の設定
+ var env_user = getenv("USERNAME");
+ var env_home = getenv("HOMEPATH");
+ }
+ var env_mozdebug= getenv("MOZILLA_DEBUG");
+
+// 2) フェイルオーバー用に複数の LDAP サーバを定義
+ var ldap_values;
+ var ldap_servers = new Array('ldap2.int-evry.fr',
+ 'ldap1.int-evry.fr',
+ 'openldap.int-evry.fr'
+ );
+ // サーバ配列からランダムに選択を行うシャッフル関数
+/**
+ * 配列のシャッフル方法の定義
+ * Mickweb Script Factory のコードを利用しました。
+ * http://www.mickweb.com/javascript/arrays/pureshuffle.html
+ */
+ // 配列のシャッフル方法の定義
+ Array.prototype.shuffle = function(times) {
+ var i,j,t,l=this.length;
+ while(times--) {
+ with(Math) {
+ i = floor(random()*l);
+ j = floor(random()*l);
+ }
+ t = this[i];
+ this[i] = this[j];
+ this[j] = t;
+ }
+ return this;
+ }
+ // LDAP サーバをシャッフルし、毎回同じサーバが選択されないようにする
+ ldap_servers.shuffle(10);
+
+/* 3) ここで定義しておく (下の 4 以降では機能しないため) processLDAPValues() は、後で直下の getLDAPAttributes() によって呼び出されます。$MOZILLA_HOME/defaults/autoconfig/prefcalls.js で定義されている getLDAPAttributes() コードを参照すれば、「ユーザ定義」された processLDAPValues() への内部呼び出しを確認できます。
+*/
+function processLDAPValues(values) {
+ if(values) {
+ // LDAP クエリから返ってきた値でグローバル変数をセットします
+ ldap_values = values;
+ var uid = getLDAPValue(values, "uid");
+ var cn = getLDAPValue(values, "cn");
+ var mail = getLDAPValue(values, "mail");
+ // LDAP 変数 (mail と cn) に依存した設定項目を、設定可能なうちにロック
+ lockPref("mail.server.server1.name", mail);
+ lockPref("mail.identity.id1.fullName", cn);
+ lockPref("mail.identity.id1.useremail", mail);
+ defaultPref("network.ftp.anonymous_password", mail);
+
+ // $MOZILLA_DEBUG=1 が定義されている場合は、デバッグメッセージをポップアップで表示
+ if (env_mozdebug) {
+ displayError("エラーはありませんでした。MCI (jehan.procaccia@int-evry.fr)" + "\nこのメッセージはdisplayError() で表示しています。\nデバッグ 1 mozilla.cfg v3.2、成功、S2IA 再び", "\nmail:" + mail + "\nuid:" +uid + "\ncn:" +cn + "\nuser:" + env_user);
+ }
+ }
+ }
+
+// 4) LDAP サーバを呼び出し、LDAP 属性 (mail と cn) を取得します。これは最終的に上記 3 の processLDAPValues() を呼び出します
+// LDAP ミラーサーバ一覧を参照
+for(i = 0; i &lt; ldap_servers.length; i ++) {
+// uid に $USER または $USERNAME をセットし、LDAP サーバから mail と cn 属性を検索
+ getLDAPAttributes(ldap_servers[i],
+ "ou=people,dc=int-evry,dc=fr",
+ "uid=" + env_user,
+ "uid,cn,mail");
+ // 稼働している LDAP サーバに当たったらループを抜ける
+ if(ldap_values) {
+ running_ldap_server = ldap_servers[i];
+ // $MOZILLA_DEBUG=1 が定義されている場合は、稼働しているサーバをポップアップで表示
+ if (env_mozdebug) {
+ displayError("getLDAPAttributes: デバッグ 2 running_ldap_server: " + running_ldap_server);
+ }
+ break;
+ }
+ }
+
+// 5) ユーザ設定を定義
+
+// ブラウザ
+lockPref("browser.startup.homepage", "http://www.int-evry.fr/s2ia/portail/");
+//unlockPref("browser.startup.homepage");
+lockPref("browser.startup.homepage_override", true);
+lockPref("startup.homepage_override_url", "http://www.int-evry.fr/s2ia/portail/");
+//unlockPref("startup.homepage_override_url");
+lockPref("browser.cache.disk.capacity", 100);
+lockPref("network.cookie.cookieBehavior", 0);
+
+// ネットワーク設定
+lockPref("network.proxy.autoconfig_url", "http://www.int-evry.fr/local/config.proxy");
+lockPref("network.proxy.type", 2);
+
+// プライバシーとセキュリティ
+defaultPref("signon.rememberSignons", false);
+
+// アカウント
+lockPref("mail.account.account1.identities", "id1");
+lockPref("mail.account.account1.server", "server1");
+lockPref("mail.account.account2.server", "server2");
+lockPref("mail.account.account3.server", "server3");
+lockPref("mail.accountmanager.accounts", "account1,account2,account3");
+lockPref("mail.accountmanager.defaultaccount", "account1");
+
+// IMAP
+lockPref("mail.server.server1.hostname", "imap-int.int-evry.fr");
+lockPref("mail.server.server1.type", "imap");
+lockPref("mail.server.server1.login_at_startup", true);
+lockPref("mail.identity.id1.draft_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Drafts");
+lockPref("mail.identity.id1.drafts_folder_picker_mode", "0");
+lockPref("mail.identity.id1.fcc_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Sent");
+lockPref("mail.identity.id1.fcc_folder_picker_mode", "0");
+lockPref("mail.identity.id1.stationery_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Templates");
+lockPref("mail.identity.id1.tmpl_folder_picker_mode", "0");
+lockPref("mail.identity.id1.valid", true);
+lockPref("mail.identity.id1.overrideGlobal_Pref", true);
+lockPref("mail.server.server1.download_on_biff", true);
+lockPref("mail.server.server1.login_at_startup", true);
+lockPref("mail.server.server1.userName", env_user);
+lockPref("mail.server.server1.delete_model", 0);
+
+// SMTP
+defaultPref("mail.identity.id1.smtpServer", "smtp1");
+defaultPref("mail.smtpserver.smtp1.auth_method", 0);
+defaultPref("mail.smtpservers", "smtp1");
+defaultPref("mail.smtpservers", "smtp1");
+defaultPref("mail.smtp.defaultserver", "smtp1");
+defaultPref("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");
+lockPref("mail.identity.id1.organization", "INT Evry France");
+lockPref("mail.startup.enabledMailCheckOnce", true);
+lockPref("mail.ui.folderpane.version", 3);
+lockPref("mailnews.ui.threadpane.version", 2);
+
+// LDAP 設定
+lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.ldapint");
+lockPref("ldap_2.prefs_migrated", true);
+lockPref("ldap_2.servers.history.filename", "history.mab");
+lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);
+lockPref("ldap_2.servers.ldapint.auth.savePassword", true);
+lockPref("ldap_2.servers.ldapint.description", "ldap-int");
+lockPref("ldap_2.servers.ldapint.filename", "abook-1.mab");
+lockPref("ldap_2.servers.ldapint.position", 3);
+lockPref("ldap_2.servers.ldapint.uri", "ldap://ldap1.int-evry.fr:389/ou=people,dc=int-evry,dc=fr??sub");
+lockPref("ldap_2.servers.pab.filename", "abook.mab");
+lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);
+
+// News 設定
+lockPref("mail.server.server3.hostname", "news.int-evry.fr");
+lockPref("mail.server.server3.max_cached_connections", 2);
+lockPref("mail.server.server3.name", "news.int-evry.fr");
+lockPref("mail.server.server3.type", "nntp");
+lockPref("mail.server.server3.userName", env_user);
+
+// try 文を閉じて catch 文を呼び出します
+} catch(e) {
+ displayError("lockedPref", e);
+}
+</pre>
+<h4 id=".E5.8F.82.E8.80.83:_.E5.8F.A4.E3.81.84.E7.A2.BA.E5.AE.9F.E3.81.AA.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88" name=".E5.8F.82.E8.80.83:_.E5.8F.A4.E3.81.84.E7.A2.BA.E5.AE.9F.E3.81.AA.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88">参考: 古い確実なスクリプト</h4>
+<p>以下の内容は、少なくとも Netscape 4.x では動作確認済みです。</p>
+<p>下にある元のファイル (Netscape 4.x の章を参照) では、JavaScript 形式の設定ファイルを取得する Web サーバと、<code>mail</code> や <code>cn</code> 属性を取得する LDAP サーバをそれぞれハードコーディングしていました。しかし、サーバがダウンした場合に備えて、ミラーサーバからも取得できるようにしておいた方がより安全です。Web サーバ名については、LDAP クエリを使って、利用可能なサーバの一覧を取得するようにしました。これにより、<code>netscape.cfg</code> ファイルに変更を加えるたびにエンコードし直す必要がなくなりました。コンピュータを OS ごと複製する際、一度だけ <code>netscape.cfg</code> ファイルを設定しておけば、LDAP や Web サーバの JavaScript 設定ファイル (集中管理設定) にはいつでも変更を加えることができます。</p>
+<h5 id="netscape.cfg_.E3.81.AE.E6.8B.A1.E5.BC.B5" name="netscape.cfg_.E3.81.AE.E6.8B.A1.E5.BC.B5">netscape.cfg の拡張</h5>
+<p>参照を行う、利用可能な Web サーバの一覧は、<code>netscape.cfg</code> で定義します。また、JavaScript 設定ファイルの名前もここで定義します。こうすることで、必要に応じて変更を加えたコンピュータを複製した場合も、<code>netscape.cfg</code> を編集せずに済みます。</p>
+<h5 id="LDAP_Web_.E3.82.B5.E3.83.BC.E3.83.90.E4.B8.80.E8.A6.A7.E3.81.AE.E3.82.B5.E3.83.96.E3.83.84.E3.83.AA.E3.83.BC" name="LDAP_Web_.E3.82.B5.E3.83.BC.E3.83.90.E4.B8.80.E8.A6.A7.E3.81.AE.E3.82.B5.E3.83.96.E3.83.84.E3.83.AA.E3.83.BC">LDAP Web サーバ一覧のサブツリー</h5>
+<pre>$ ldapsearch -x * -b "ou=browser,ou=information,dc=int-evry, dc=fr" cn -LLL
+dn: ou=browser,ou=information,dc=int-evry,dc=fr
+
+dn: sn=http_server,ou=browser,ou=information,dc=int-evry, dc=fr
+cn: web1.int-evry.fr
+cn: web2.int-evry.fr
+
+dn: sn=http_unix_file, ou=browser,ou=information,dc=int-evry, dc=fr
+cn: /browser/config_file_unix.jsc
+
+dn: sn=http_win_file, ou=browser,ou=information,dc=int-evry, dc=fr
+cn: /browser/config_file_win.jsc
+</pre>
+<h5 id="netscape.cfg" name="netscape.cfg">netscape.cfg</h5>
+<p>ここでは、LDAP クエリを単純にテストすることで、利用可能な LDAP サーバを選択しています。設定を行う LDAP クエリに対して応答があるか確認するだけです。(再度断っておきますが、著者は JavaScript に詳しくありません。もっと良い方法で LDAP サーバが稼働しているかどうかを確認できるかもしれません。Web サーバの確認については、このコードを自由に利用して構いませんので、著者に教えてください)</p>
+<pre>if (getLDAPAttributes("ldap1.int-evry.fr", \
+ "ou=browser,ou=information,dc=int-evry,dc=fr", \
+ "sn=http_server", "cn") )
+ var running_ldap_server = "ldap1.int-evry.fr";
+ else if (getLDAPAttributes("ldap2.int-evry.fr", \
+ "ou=browser,ou=information,dc=int-evry,dc=fr", \
+ "sn=http_server", "cn") )
+ var running_ldap_server = "ldap2.int-evry.fr";
+ else if (getLDAPAttributes("ldap0.int-evry.fr", \
+ "ou=browser,ou=information,dc=int-evry,dc=fr", \
+ "sn=http_server", "cn") )
+ var running_ldap_server = "ldap0.int-evry.fr";
+ else alert("No LDAP server available!");
+</pre>
+<p>Unix 用の <code>netscape.cfg</code> ファイルの完全な例です。</p>
+<pre>with (PrefConfig) { // 必ず PrefConfig モジュール内部に記述します
+
+// 後で使用するいくつかの変数を作成します
+var env_user = getenv("USER"); // Windows ユーザ名
+var env_home = getenv("HOME"); // ユーザのホームディレクトリ
+var env_mozilla_home = getenv("MOZILLA_HOME");
+var env_mozdebug = getenv("MOZILLA_DEBUG");
+
+// LDAP サーバが稼働しているかを確認 (より良い方法が必要)
+
+if (getLDAPAttributes("ldap1.int-evry.fr", \
+ "ou=browser,ou=information,dc=int-evry,dc=fr", \
+ "sn=http_server", "cn") )
+ var running_ldap_server = "ldap1.int-evry.fr";
+ else if (getLDAPAttributes("ldap2.int-evry.fr", \
+ "ou=browser,ou=information,dc=int-evry,dc=fr", \
+ "sn=http_server", "cn") )
+ var running_ldap_server = "ldap2.int-evry.fr";
+ else if (getLDAPAttributes("ldap0.int-evry.fr", \
+ "ou=browser,ou=information,dc=int-evry,dc=fr", \
+ "sn=http_server", "cn") )
+ var running_ldap_server = "ldap0.int-evry.fr";
+ else alert("No LDAP server available!");
+
+if (running_ldap_server){
+var ldap_http_server_values = getLDAPAttributes(running_ldap_server, \
+"ou=browser,ou=information,dc=int-evry,dc=fr", "sn=http_server", "cn");
+var ldap_http_server = getLDAPValue(ldap_http_server_values, "cn");
+var ldap_http_unix_uri_values = getLDAPAttributes(running_ldap_server, \
+"ou=browser,ou=information,dc=int-evry,dc=fr", "sn=http_unix_file", "cn");
+var ldap_http_unix_uri = getLDAPValue(ldap_http_unix_uri_values, "cn");
+var values = getLDAPAttributes(running_ldap_server, \
+"ou=people,dc=int-evry,dc=fr", "uid="+env_user, "cn,mail");
+var ldap_email = getLDAPValue(values, "mail");
+var ldap_gecos = getLDAPValue(values, "cn");
+env_user=env_user.toLowerCase();
+}
+else
+ alert("No LDAP server available, AutoConfig impossible!");
+
+// $MOZILLA_DEBUG=1 が定義されている場合は、デバッグメッセージをポップアップで表示
+if (env_mozdebug) {
+ alert("MOZILLA_DEBUG\nrunning LDAP server: " + running_ldap_server);
+ alert("MOZILLA_DEBUG\nExecuting " + ldap_http_server + \
+ ldap_http_unix_uri);
+ alert("MOZILLA_DEBUG\nfetching http://" + ldap_http_server \
+ + ldap_http_unix_uri + "");
+}
+
+// HTTP サーバから設定ファイルを取得
+// HTTP サーバが稼働しているか確認する方法が必要
+
+config(
+"autoadmin.global_config_url", "http://" + ldap_http_server + \
+ldap_http_unix_uri + ""
+);
+
+// ファイルを使用しているため、アクセスできない場合は、何か問題があります
+config(
+"autoadmin.failover_to_cached", false
+);
+
+// CGI による URL リクエストに ?useremail=email-addr を付加しない
+config(
+"autoadmin.append_emailaddr", false
+);
+
+} // with (PrefConfig)
+</pre>
+<p>Windows 版の <code>netscape.cfg</code> ファイルでは、LDAP クエリの <code>"sn=http_unix_file"</code> を <code>"sn=http_win_file"</code> に置き換えます。</p>
+<p> </p>
+<h4 id="LockPref_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB" name="LockPref_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">LockPref 設定ファイル</h4>
+<p>このファイル (サーバ上では <code><span class="nowiki">http://www/browser/config-file-system.jsc</span></code> にあるとします) では、設定項目の設定やロックを行います。著者の環境では共有のコンピュータを使用しているため、ユーザごとに設定をカスタマイズする必要があります。ログイン名は環境変数から取得します。Unix では <code>USER</code>、Windows では <code>USERNAME</code> になります。このように、Windows と Unix では環境変数とパスが異なるため、別々の設定ファイルを用意しています。同じファイルで両方のシステムを管理する方法があるはずですが、残念ながら著者は JavaScript に詳しくないのです。</p>
+<p>以下は Unix 用の設定ファイル (<code>config_file_unix.jsc</code>) での <code>lockPref</code> の記述例です。IMAP サーバ名、法人名、キャッシュの場所やサイズなど、いくつかの設定をロックし (<code>lockPref</code>)、ホームページなど他の設定は単に初期設定としています (<code>defaultPref</code>)。また、<code>prefcalls.js</code> で定義されている LDAP 関数を使用してログインユーザ (<code>USER</code> または <code>USERNAME</code>) のメールアドレスとコモンネーム、つまり LDAP 上の各自の <code>mail</code> と <code>cn</code> を取得しています。</p>
+<pre>[root@lugdunum /var/www/html/browser]
+$ more config_file_unix.jsc
+// 利用できる関数:
+// lockPref(name, value) はユーザによる変更を許可しない
+// (別名 lock_pref())
+// defaultPref(name, value) ユーザが変更しない限り、この値を使用
+// (別名 default_pref())
+// unlockPref(name) 前にロックした設定を解除
+// config(name, value) 通常はメニューに使用
+// value = getPref(name) 現在の設定を取得
+// getLDAPAttributes(host, base, filter, attributes)
+// getLDAPValue(values, attribute)
+// .mime.type, .begin_mime_def, .end_mime_def..
+// .plat
+// alert(message);
+// var = prompt(message);
+// var = getPlatform() 戻り値は Win32 など
+// getPlatform().contains("UNIX")...
+// var = getenv(envvar)
+// var = putenv(envvar)
+//
+// 利用できないオブジェクトや関数は、navigator.* で定義されていないため
+// (これは本当に良くないと思います)
+//=========================================================================
+// 設定を定義
+//=========================================================================
+with (PrefConfig) {
+var values = getLDAPAttributes("ldap2.int-evry.fr", \
+"ou=people,dc=int-evry,dc=fr", "uid=" + env_user, "cn,mail");
+var ldap_email = getLDAPValue(values, "mail");
+var ldap_gecos = getLDAPValue(values, "cn");
+//var toto = prompt("email");
+//alert("ldap_mail = " + ldap_email + "toto=" + toto);
+if (env_mozdebug) {
+ alert("env_user:" + env_user + "\nenv_home:" + env_home + \
+"\nldap_email:" + ldap_email + "\nldap_gecos:" + ldap_gecos + "\n");
+}
+//-----------------------------------------------------------------------
+// [ 一般的なブラウザ設定 ]
+//-----------------------------------------------------------------------
+config("autoadmin.refresh_interval", 1440); // 24 時間ごとに自動更新
+defaultPref("browser.startup.page",1);
+//0=blank page, 1=homepage, 2=last visited
+defaultPref("browser.startup.homepage", "http://www/mci/mode-d-emploi.shtml");
+lockPref("browser.cache.directory", "/tmp");
+lockPref("browser.cache.memory_cache_size", 0);
+
+lockPref("mail.server_type",1); // POP=0 IMAP=1
+lockPref("network.hosts.imap_servers", "pop-int");
+lockPref("mail.imap.server.pop-int.using_subscription",true);
+lockPref("mail.imap.server.pop-int.userName", env_user);
+lockPref("mail.identity.useremail", ldap_email);
+lockPref("mail.identity.username", ldap_gecos);
+lockPref("mail.check_new_mail", false);
+lockPref("mail.directory", env_home+"/nsmail");
+lockPref("mail.identity.defaultdomain", "int-evry.fr");
+lockPref("mail.identity.organization", "INT Evry Essonne ");
+
+// LDAP
+lockPref("ldap_2.autoComplete.useDirectory", true);
+lockPref("ldap_2.servers.LDAPINT.autoComplete.enabled", true);
+lockPref("ldap_2.servers.LDAPINT.csid", "UTF-8");
+lockPref("ldap_2.servers.LDAPINT.description", "LDAP INT");
+lockPref("ldap_2.servers.LDAPINT.filename", "LDAPINT.na2");
+lockPref("ldap_2.servers.LDAPINT.position", 2);
+lockPref("ldap_2.servers.LDAPINT.searchBase", "ou=people,dc=int-evry,dc=fr");
+lockPref("ldap_2.servers.LDAPINT.serverName", "ldap1.int-evry.fr");
+
+// News
+lockPref("news.directory", "/tmp");
+// プロキシ
+lockPref("network.proxy.autoconfig_url", \
+"http://www.int-evry.fr/local/config.proxy");
+
+} // with (PrefConfig)
+</pre>
+<p> </p>
+<p> </p>
+<p> </p>
+<p><br>
+ この文書の最初のバージョンは <a class="external" href="http://pauillac.inria.fr/~maranget/hevea/">HEVEA</a> を用いて LaTeX から翻訳されました。</p>
+<p>"author" : " Jehan Procaccia MCI INT-EVRY- jehan.procaccia AT int-evry.fr"</p>
+<p>"creation date" : " 02 September 2006"</p>
diff --git a/files/ja/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html b/files/ja/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html
new file mode 100644
index 0000000000..3900c3c16d
--- /dev/null
+++ b/files/ja/archive/misc_top_level/same-origin_policy_for_file_colon__uris/index.html
@@ -0,0 +1,22 @@
+---
+title: 'file: URI の同一オリジンポリシー'
+slug: 'Archive/Misc_top_level/Same-origin_policy_for_file:_URIs'
+tags:
+ - Same-origin policy
+ - Security
+ - XMLHttpRequest
+translation_of: 'Archive/Misc_top_level/Same-origin_policy_for_file:_URIs'
+---
+<p>Gecko 1.8 以前では、2つの <code>file: URI</code> は同一オリジンとみなされます。つまり、ローカルディスク上のHTMLファイルはローカルディスク上の別ファイルを読み込めます。</p>
+
+<p>Gecko 1.9 からは、ファイルは特定のファイルのみ読み込みが許可されます。具体的には、読み込み元ファイルの親ディレクトリが、読み込み対象ファイルの祖先ディレクトリと同じ場合のみ、読み込みができます。ただし、ディレクトリはこの方法では読み込めません。</p>
+
+<p>例えば別のファイル <code>bar.html</code> にアクセスするファイル <code>foo.html</code> があり、それをファイル <code>index.html</code> から操作した場合、読み込みが成功するのは <code>bar.html</code> が <code>index.html</code> と同じディレクトリ内にあるか、<code>bar.html</code> のあるディレクトリが <code>index.html</code> と同じディレクトリ内に含まれる場合のみです。</p>
+
+<p>このポリシーは <code><a class="internal" href="/ja/DOM/XMLHttpRequest" title="En/XMLHttpRequest">XMLHttpRequest</a>、</code>XSLT、XBL を含む、同一オリジンチェックが行われるときすべてに影響します。</p>
+
+<p>クロスウィンドウDOMアクセスの場合、各ファイルは別のオリジンとして扱われますが、例外が1つあります。ファイルが別のファイルから読み込まれたときにこの同一オリジンポリシーに従って読み込める場合は、それらは同じオリジンとみなされる、ということです。この読み込みは、サブフレーム、リンク、ロケーションセット、<a class="internal" href="/ja/DOM/window.open" title="En/DOM/Window.open"><code>window.open()</code></a> の呼び出しなどを通して発生します。</p>
+
+<p>例えばファイル <code>/home/user/foo.html</code> がフレームセットで、フレームの1つが <code>/home/user/subdir/bar.html</code> のとき、このフレームとフレームセットは同じオリジンとみなされます。一方、ファイル <code>/home/user/subdir/foo.html</code> がフレームセットで、フレームが <code>/home/user/bar.html</code> のとき、このフレームとフレームセットは異なるオリジンとみなされます。</p>
+
+<p>新しい <code>security.fileuri.strict_origin_policy</code> 設定の標準は <code>true</code> で、ユーザーが <code>file:</code> URI の際に厳密な同一オリジンポリシーの適用を求めない場合は <code>false</code> にすることもできます。</p>
diff --git a/files/ja/archive/misc_top_level/source_code_directories_overview/index.html b/files/ja/archive/misc_top_level/source_code_directories_overview/index.html
new file mode 100644
index 0000000000..455f46fcc3
--- /dev/null
+++ b/files/ja/archive/misc_top_level/source_code_directories_overview/index.html
@@ -0,0 +1,129 @@
+---
+title: Source code directories overview
+slug: Archive/Misc_top_level/Source_code_directories_overview
+tags:
+ - Developing Mozilla
+translation_of: Archive/Misc_top_level/Source_code_directories_overview
+---
+<p>
+</p><p>この文書は、開発者のための Mozilla ソースコードツリーのディレクトリ構造のガイドである。ソースコード全体を鳥瞰し、 Mozilla を理解しやすくすることを目的とする。これは、新しく Mozilla の開発に加わる人が Mozilla のコードを学ぶスタートラインにするといい文書である。
+</p><p>この文書には SeaMonkey、Firefox、Toolkit に関する情報が含まれている。
+</p><p>これは Mozilla ソースツリーの変更に合わせて毎月更新される (べき) 生の文書である。
+</p><p>See also similar information in <a href="ja/Mozilla_Source_Code_Directory_Structure">Mozilla Source Code Directory Structure</a>.
+</p>
+<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB:_.E5.85.B1.E9.80.9A.E3.82.B5.E3.83.96.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.88.E3.83.AA" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB:_.E5.85.B1.E9.80.9A.E3.82.B5.E3.83.96.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.88.E3.83.AA"> はじめに: 共通サブディレクトリ </h3>
+<p>Mozilla ソースツリー全体を通して1つの一貫した名前つけ規約が用いられている。最上位ではプロダクトの名前である (例えば、<a class="external" href="http://lxr.mozilla.org/seamonkey/source/">seamonkey</a>)。次のレベルはモジュールの名前 (例えば、seamonkey の中の <a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/">editor</a> ディレクトリ)。3 番めのレベルでは共通の名前つけ規約をそのまま流用しているところが多い。多くの第 3 レベルには、<a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/base/">base</a>、<a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/public/">public</a> そして <a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/idl/">idl</a> ディレクトリがある。要求されているものではないが、これらの共通の名前は共通の目的に利用される。もしファイルがサブモジュールにグループ分けできる場合は、それぞれ独自の名前のディレクトリに入れられる。 (例えば seamonkey の中の editor ディレクトリにある <a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/txmgr/">txmgr</a>)。この 3 番めのレベルのディレクトリの下に 4 番目のレベルのベースとして public や idl などのディレクトリがある。この規約は再帰的であり、サブモジュールや、サブサブモジュール等にも適用される。
+</p>
+<ul><li> base そのモジュールの基本的なコアの機能が含まれている。Base にはサブモジュールに分類できないソースコードが全部含まれている。
+</li><li> build には特定のモジュールをビルドするための特別なメイクファイルが含まれている。
+</li><li> doc にはそのモジュールに関するドキュメントが含まれている。
+</li><li> idl には XPIDL (Cross Platform Interface Definition Language) インタフェースファイルが含まれている。インタフェースは Javascript と C の双方からできるだけ変更なしに機能が使えるようにするために利用される。XPIDL ファイルには独自の仕様の小さい言語と処理ツールが用意されている。
+</li><li> public には dist/include ディレクトリへエクスポートされるソースコードが含まれている。これらは一般には public であることが必要というわけではない。中には特定のモジュール内部でしか使わないものもある。さらに多くのコードが XPIDL で書かれたりコンバートされるにしたがって public ディレクトリの重要度は減少していく。
+</li><li> src にはソースコードの大部分が含まれている。
+</li><li> tests にはそのモジュールの動作確認に使用する C のスタブ/ドライバや HTML、XUL が含まれている。
+</li><li> tools には特定のソースコードを自動的に生成するためのスクリプトやそのモジュールのビルド用のツールが含まれている。
+</li></ul>
+<p>他にもプラットフォームに依存したサブディレクトリが含まれている場合がある。このディレクトリには特定のプラットフォーム用のソースコードが含まれている。
+</p>
+<ul><li> windows には Windows95/98、さらに Windows NT 4.0 用のソースコードが含まれている。
+</li><li> mac には Mac OS 用: PowerPC 用と 68000 用の両バージョンのソースコードが含まれている。
+</li><li> gtk には <a class="external" href="http://www.gtk.org/">GTK</a> (別名 GIMP ツールキット) 用のソースコードが含まれている。これは Unix の X ウィンドウ上で動作する。
+</li><li> motif には Unix 用 X ウィンドウで動作するツールキット、Motif 用のソースコードが含まれている。
+</li><li> os2 には OS/2 Warp 用のソースコードが含まれている。
+</li><li> rhapsody には Mac OS X サーバ (これは NextStep がベースになっており、NextStep は Unix 上の X ウィンドウがベースとなっている) 用のソースコードが含まれており Yellow Box (Cocoa) を使っている。
+</li><li> beos には <a class="external" href="http://www.be.com/">BeOS</a> 用のソースコードが含まれている。
+</li><li> qt には <a class="external" href="http://www.troll.no/products/qt.html">QT ツールキット</a> という Unix 上の X ウィンドウ、Windows95/98、Windows NT 4.0 上で動く C クラスライブラリ用のソースコードが含まれている。
+</li><li> photon には <a class="external" href="http://www.qnx.com/products/photon/">Photon</a> といういくつかのリアルタイム OS で動く QNX ソフトウェアシステム社のマイクロカーネルウィンドウシステム用のソースコードが含まれている。
+</li></ul>
+<h3 id="SeaMonkey" name="SeaMonkey"> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/">SeaMonkey</a> </h3>
+<p>SeaMonkey は Mozilla ブラウザスイートの開発コード名である。
+</p>
+<ul><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/accessible/">accessible</a> contains code to support Microsoft Active Accessibility and Sun's ATK accessibility API for Linux.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/">browser</a> contains the code for Firefox. This will be covered below.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/build/">build</a> には Mozilla ビルドチームが Mozilla コードのビルドと管理のために使用するスクリプト (通常は Perl) とプログラムが含まれている。このプログラムは makefile の動作と dist ディレクトリの生成の調整を行う。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/calendar/">calendar</a> contains the code for the various Mozilla calendar apps and extensions.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/caps/">caps</a> にはセキュリティ設定と認証をベースとする実行権限に関する C のインタフェースとコードが含まれている (例えばベリサイン)。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/chrome/">chrome</a> contains the toolkit chrome registry.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/config/">config</a> には Mozilla 開発者がコードベースの操作や makefile 中の特定の処理のために利用するスクリプトとプログラムが含まれている。これらのプログラムはビルドレベルではなく、コードレベルの処理に利用される (ビルドレベルのものは build ディレクトリに格納される)。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/content/">content</a> was split off from layout and contains objects as they are exposed to the DOM.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/db/">db</a> には mdb/Mork データベースのための C のソースコードが含まれている。これは低レベルで汎用のクロスプラットフォームファイルライブラリである。これはメールボックスのデータやニュースデータ、グローバルヒストリデータを格納するのに利用する。これには XPCOM のサポートは含まれていない。このコードは Mozilla Classic のコードベースがオリジナルである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/dbm/">dbm</a> にはハッシュテーブルの管理と読み書きを行うための C コードが含まれている。これは URL 編集ボックスの自動補完機能 (Mozilla Classic の netscape.hst に格納されていた) や、キャッシュしたページのインデックス (Mozilla Classic では fat.db に格納されていた) に利用される。このコードのオリジナルはカリフォルニア大学バークレー校のものである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/directory/">directory</a> contains the LDAP SDK.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/docshell/">docshell</a> には単独のウェブページを読み込み表示するための C インタフェースやコードが含まれる (例えばスクロール)。[#seamonkey-embedding 埋め込み] コードはこのコードを「進む」とか「戻る」や履歴などの高レベルブラウザ機能でラッピングする。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/dom/">dom</a> には JavaScript の DOM (ドキュメントオブジェクトモデル) オブジェクトの実装と C インタフェースとコードが含まれている。これはビルトインオブジェクトと JavaScript スクリプトによるユーザ定義オブジェクトの両方を生成、削除、操作する C 部分構造を形成する。例えば、JavaScript がユーザ定義の属性をドキュメントに追加すると (例えば、document.goofy = 1)、そのコードは「goofy」というノードを生成し、それを「document」ノードに追加して、他の JavaScript コマンドから操作できるようにする。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/">editor</a> には組み込みエディタコンポーネントの C インタフェース、C コード、XUL ファイルが含まれている。このコンポーネントではプレーンテキストと HTML が編集可能である。これは HTML エディタ(例えば Mozilla Classic の Composer) や、プレーンテキストメールや HTML メールの編集、プロダクト全体でのテキストフィールドやテキストエリアに利用される。このエディタは「編集機能つきのブラウザウィンドウ」として設計されたもので テキスト編集や redo/undo 管理のための特別なクラスが追加されている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/embedding/">embedding</a> には汎用の高レベルブラウザ機能 (例えば進む、戻る、履歴) のための C インタフェースとコードが含まれている。特定のプラットフォームや方法 (例えば ActiveX) によるこれらのインタフェースはウェブシェルコードによって隠蔽されている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/extensions/">extensions</a> にはブラウジング関係の様々なアドインに関する C インタフェース、C コード、XUL や JavaScript コードが含まれている。ここには Cookie、IRC、ウォレット、DOM インスペクタ、P3P、スキーマ検証、スペルチェッカー、transformiix、typeaheadfind、JavaScript デバッガ、XForms などが含まれている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/gc/">gc</a> には Boehm ガーベージコレクタの C コードが含まれている。これは最終製品には利用されない: これは開発中にメモリリークを見つけたり、メモリの利用状況を追いかけるのに利用される。このコードは Hans-J. Boehm 氏によって書かれたコードが元になっており National Science Foundation、DARPA、Xerox そして SGI によりサポートされている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/gfx/">gfx</a> にはプラットフォーム非依存の描画,画像表示用 C インタフェースとコードが含まれている。四角形や線、画像などを描画するのに利用される。本質的にはプラットフォーム非依存のデバイス (描画) コンテキストのインタフェースを集めたものである。これはウィジェットや特定の描画ルーチンは扱わない。描画に関するプリミティブなオペレーションのみを提供するものである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/intl/">intl</a> にはローカライズをサポートするための C インタフェースとコードが含まれている。その中には様々な文字集合やロケールフォーマット (例えば、異なる文化での日付、時刻のフォーマット) や他のローカライズに関するものを含んでいる。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/ipc/">ipc</a> contains
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/jpeg/">jpeg</a> には JPEG イメージを読み書きするための C コードが含まれている。このコードは独立した JPEG グループによる JPEG 仕様のリファレンス実装からのものである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/js/">js</a> には Javascript スクリプトコードを字句解析して構文解析、解釈、さらに実行するための C コードが含まれている。このコードは Mozilla Classic にあったものである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/l10n/">l10n</a> contains code for building localizations.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/layout/">layout</a> にはレイアウトエンジンの C インタフェースとコードが含まれている。レイアウトエンジンはコンテントの全断片間で「ウィンドウの領域」をどのように分配するかに関する決定を行う。各コンテントのサイズ調整やアライメントについては CSS1 と CSS2 (カスケーディングスタイルシート)、アライメントスタイル、そしてコンテンツそのものに従う。コンテントのレンダリングそのものを実際に行うのではなく、様々なコンテント要素に異なるウィンドウ片を割り当てるだけである。これはコンテントの「逆流」として知られているこのコードは「NGLayout」もしくは「Gecko」という名でも知られている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/lib/">lib</a> には Mac でプログラミングしている開発者がリファレンスに使用する C コードが含まれている。これは実際に使用されてはいない。これは Apple から提供されているファイル処理コードのサンプルと同じように、Mac 用アプリケーションに Mozilla ブラウザをどのように埋め込むかを示している。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/mailnews/">mailnews</a> にはメール/ニュースコンポーネント (要するに Mozilla Classic での Messenger)に関する C インタフェースとコードが含まれている。これにはメール管理やニュースグループのメッセージの閲覧、他のメールフォーマットのインポートや新規メッセージの編集のためのコードを全て含んでいる。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/modules/">modules</a> には Mozilla にビルトインされているブラウジングに関する様々な異なる機能に関する C コードを含んでいる。これにはいろんな画像フォーマット (例えば PNG や GIF) を処理するコードを含んでおり、このコードは Java バーチャルマシン (OJI、すなわち Open Java Interface) 経由でもアクセスでき、プラグインやいろんな圧縮フォーマット (例えば JAR、ZIP、ZLIB) の読み込みもサポートする。このコードはいろんな異なる企業や個人を含めて Mozilla のオリジナルである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/netwerk/">netwerk</a> には (http、ftp、gopher、castanetなどの様々なプロトコルを使った) 高レベルアクセスと同様、(ソケットやファイルキャッシュ、メモリキャッシュを使って) ネットワークへの低レベルアクセスのための C インタフェースとコードが含まれている。このコードの開発が進むにつれて古いコードと置き換えられる。このコードは「netlib」や「Necko」の名前で知られている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/nsprpub/">nsprpub</a> にはクロスプラットフォームの「C」ランタイムライブラリに関する C コードが含まれている。「C」ランタイムライブラリにはメモリの割り当て開放や、時刻や日付の取得、ファイルの読み書き、スレッドのハンドリングや文字列のハンドリングや全てのプラットフォームをまたぐ文字列比較など基本的な非グラフィカルな C 関数が含まれている。このコードは「nspr」あるいは「Netscape Portable Runtime」という名で知られている。このコードは Mozilla Classic からのものである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/other-licenses/">other-licenses</a> contains code that does not fall under the MPL, including branding, libical and stubs for 7zip.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/parser/">parser</a> contains the HTML parser and the XML parser (expat.).
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/plugin/">plugin</a> contains code for the MRJ plugin on Mac.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/profile/">profile</a> には新規のユーザプロファイル作成、既存のユーザプロファイル管理、Mozilla Classic からのプロファイルの移行、大手 ISP (例えば Earthlink、Concentric Networks) 用のデフォルトプロファイルのための C インタフェース、C コード、XUL、JavaScript が含まれている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/rdf/">rdf</a> には様々なデータにアクセスしたり RDF でそれらの関連を張ったりするための C インタフェースとコードが含まれている。 RDF は「リソース記述フレームワーク (Resource Description Framework)」のことであり、オープンスタンダードである。このコードはローカルのファイルシステムやデータベース、インターネット、あるいは他のデータソースへ URL のような文法を使ってデータの読み書きを行う。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/security/">security</a> contains the security modules including NSS and PSM.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/storage/">storage</a> contains an implementation of sqLite3.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/suite/">suite</a> will contain files specific to the Mozilla suite.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/sun-java/">sun-java</a> には Mozilla を Sun の JVM (Java バーチャルマシン) と会話ができるようにするための C コードが含まれている。ここにはバーチャルマシンそのもののコードは含まれていない。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/themes/">themes</a> contains the default themes for Mozilla, modern and classic.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/">toolkit</a> contains the code for the toolkit used for Firefox, Thunderbird and other standalone applications. This will be covered below.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/tools/">tools</a> には Linux のみの Leaky ツールの C コードが含まれている。Leaky はメモリリークや XPCOM のリファレンスカウンタに関する問題を見つけてくれるものである。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/uriloader/">uriloader</a> にはコンテンツに応じた正しいビューワを起動するための C インタフェースとコードが含まれている。例えば、このコードがあるコンテンツがメールメッセージであると判断すると、適切なリスナー (おそらく Netscape Messenger) を探してメールメッセージを渡して表示させる。これは汎用的なもので内部コンポーネント (Messenger のような) やプラグイン、あるいはヘルパーアプリに渡すことができる。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/view/">view</a> には異なる型のビュー (例えばスクロールビュー) に関する C インタフェースとコードが含まれている。ビューにはコンテントは含まれるが、タイトルバーやボーダー、他の飾り付けは含んでいない (これらはフレームに含まれている)。このコードは含まれている個々のコンテントの操作を提供する。例えば、スクロールビューにはスクロールバーポジションがあって、スクロールバーの移動でどこを描画するのかをコンテントに知らせる。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/webshell/">webshell</a> には C インタフェース、C コード、Linux 用シェルスクリプトと Mozilla を他の様々な異なるプラットフォームのプログラムに様々な方法 (プラグインとして、ActiveX コンポーネントとして、XPCOM クラスとして) で埋め込むためのその他のファイルを含んでいる。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/widget/">widget</a> にはスクロールバー、ラジオボタン、リストボックスのようなプラットフォーム非依存のコントロール (ウィジェット) に関する C インタフェースとコードが含まれている。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/xpcom/">xpcom</a> には XPCOM (クロスプラットフォームコンポーネントオブジェクトモデルという意味である) コンポーネント部品を実装した低レベル C インタフェース、C コード、C コード、少しのアセンブラコード、コマンドラインツールが含まれている。 XPCOM は Mozilla がインタフェースをエクスポートし、JavaScript、Microsoft の COM、標準の Mozilla C コードから自動的にアクセスできるようにするための機構である。低レベルの XPCOM クラスやインタフェースは Microsoft の COM によく似ており互換性がある (だが、XPCOM はクロスプラットフォームである)。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/xpfe/">xpfe</a> には「クロスプラットフォームフロントエンド」を実装するための C インタフェース、C コード、XUL が含まれている。本質的に、これは Mozilla プログラムの開始とタスクを実行するための他のコンポーネントの管理を行う。このコードにはわずかながらプラットフォームに依存するコードがある。プラットフォーム非依存なインタフェースをプラットフォーム特有の機能に提供する他のコンポーネントの部分である。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/xpinstall/">xpinstall</a> には Mozilla Classic からのスマートアップデート機能を実装するための C インタフェースとコードが含まれている。XPInstall はプラットフォームに依存しない方法による、ファイルのダウンロード、解凍、インストールを行う。
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/xulrunner/">xulrunner</a> contains code for XUL Runner.
+</li></ul>
+<h3 id="Firefox" name="Firefox"> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/">Firefox</a> </h3>
+<p>Firefox is contained in the browser directory
+</p>
+<ul><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/app/">app</a> contains contains code to build the firefox executable.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/base/">base</a> contains the XUL and branding code.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/components/">components</a> contains Firefox specific components like history, bookmarks, preferences, migration, sidebar..
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/config/">config</a><span>contains build scripts for Firefox.</span>
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/extensions/">extensions</a> contains code for making certain extensions work.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/installer/">installer</a> contains the Firefox installer code.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/locales/">locales</a> contains the files that are translated for Firefox.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/browser/themes/">themes</a> contains Firefox themes.
+</li></ul>
+<h3 id="Toolkit" name="Toolkit"> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/">Toolkit</a> </h3>
+<p>Toolkit is used by the standalone products.
+</p>
+<ul><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/components/">components</a> contains the alerts, autocomplete, command line interface, console, cookies, download manager, filepicker, history, password manager, typeaheadfind, view source, etc.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/content/">content</a> contains XUL specific to the toolkit.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/library/">library</a> contains libXUL work.
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/locales/">locales</a><span>contains files that are translated.</span>
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/mozapps/">mozapps</a><span>contains shared application stuff.</span>
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/obsolete/">obsolete</a><span>contains obsolete stuff.</span>
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/profile/">profile</a><span>contains the profile manager</span>
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/themes/">themes</a><span>contains themes as they relate to toolkit things.</span>
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/xre/">xre</a><span>is the XUL runtime engine. This directory contains the code for initializing the toolkit.</span>
+</li></ul>
+<hr>
+<p><br>
+</p>
+<div class="originaldocinfo">
+<h2 id=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1"> 原文書の情報 </h2>
+<ul><li> 著者: <a class="link-mailto" href="mailto:dhoward@mountbromo.com">Daniel Howard</a>
+</li><li> 貢献者: <a class="link-mailto" href="mailto:heikki@citec.fi">Heikki Toivonen</a> (11-Nov-1999), <a class="link-mailto" href="mailto:mozillazine@mozillazine-fr.org">Hervé Renault</a> (for the <a class="external" href="http://mozillazine-fr.org/tech/source_directories_overview-fr.html">French</a> translation) (16-Nov-1999)
+</li><li> 最終更新日: Michael Kaply 2-June-2005
+</li><li> 著作権: Portions of this content are © 1998-2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.
+</li><li> 以前の履歴: <a class="external" href="http://bonsai-www.mozilla.org/cvslog.cgi?file=mozilla-org/html/docs/source-directories-overview.html&amp;rev=&amp;root=/www/">Document History</a>.
+</li></ul>
+</div>
+<div class="noinclude">
+</div>
diff --git a/files/ja/archive/misc_top_level/using_content_preferences/index.html b/files/ja/archive/misc_top_level/using_content_preferences/index.html
new file mode 100644
index 0000000000..a9b558d980
--- /dev/null
+++ b/files/ja/archive/misc_top_level/using_content_preferences/index.html
@@ -0,0 +1,107 @@
+---
+title: Using content preferences
+slug: Archive/Misc_top_level/Using_content_preferences
+tags:
+ - Firefox 3
+translation_of: Archive/Misc_top_level/Using_content_preferences
+---
+<div></div>
+
+<p>Firefox 3 は、コンテンツの設定を保存する事ができます。この機能はサイトごとの設定をコンピューターに保存するため chrome 権限が与えられたコードでしか利用できません。言い換えるなら、拡張機能とブラウザ自体(Web サイトを除く)からのみ利用できると言う事です。この機能を使用することで特定の Web サイトをカスタマイズする(例えば文字が小さく読み難いサイトで、文字を大きくする)拡張機能を作成する事ができます。</p>
+
+<p>コンテンツ設定サービスは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService" title="">nsIContentPrefService</a></code> によってインプリメントされています。この機能を使用して特定の Web サイトに設定したりブラウザの既定設定を割り当てる事ができます。もし特定の Web サイトから設定を取得できない場合はブラウザの既定設定が使用されます。</p>
+
+<h2 id="Example:_Setting_and_retrieving_preferences" name="Example:_Setting_and_retrieving_preferences">例: 設定の保存と読み込み</h2>
+
+<p>このサンプルは設定を保存した後、保存された設定を読み込んでいます。</p>
+
+<pre class="brush:js;">var ioSvc = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+var prefService = Components.classes["@mozilla.org/content-pref/service;1"]
+ .getService(Components.interfaces.nsIContentPrefService);
+
+// Create a URI object referencing the site to save a preference for
+var uri = ioSvc.newURI("http://developer.mozilla.org/", null, null);
+
+// Set the value of the "devmo.somesetting" preference to "foo".
+
+prefService.setPref(uri, "devmo.somesetting", "foo");
+
+...
+
+// Retrieve the value of the "devmo.somesetting" preference.
+
+var value = prefService.getPref(uri, "devmo.somesetting");</pre>
+
+<h2 id="Built-in_site-specific_preferences" name="Built-in_site-specific_preferences">Built-in site-specific preferences</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Preference Name</td>
+ <td class="header">Menu Equivalent</td>
+ <td class="header">Values</td>
+ <td class="header">Notes</td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>browser.content.full-zoom</code><br>
+ </p>
+ </td>
+ <td>View / Zoom</td>
+ <td><em>Example:</em> "1.10000002384186"<br>
+ (Rounding variant of "1.1")</td>
+ <td>Related about:config preferences:
+ <ul>
+ <li><code>browser.zoom.full</code><br>
+ Boolean, set by the menu item<br>
+ View / Zoom / Zoom Text Only.<br>
+ Despite the confusion in names, this preference is not site-specific.</li>
+ <li><code>browser.zoom.siteSpecific</code></li>
+ <li><code>toolkit.zoomManager.zoomValues</code></li>
+ <li>
+ <p><code>zoom.maxPercent and </code><code>zoom.minPercent</code></p>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>browser.download.lastDir</code><br>
+ </p>
+ </td>
+ <td> </td>
+ <td>Path of a filesystem directory</td>
+ <td>Related about:config preferences:
+ <ul>
+ <li><code>browser.download.lastDir</code><br>
+ The last directory for any site</li>
+ </ul>
+
+ <p>Use <a href="/en-US/docs/JavaScript_code_modules/DownloadLastDir.jsm" title="JavaScript/Code_modules/DownloadLastDir.jsm">DownloadLastDir.jsm</a> for access to these preferences.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>browser.upload.lastDir</code><br>
+ </td>
+ <td> </td>
+ <td>Path of a filesystem directory</td>
+ <td>This preference is stored and retrieved automatically by file upload controls.</td>
+ </tr>
+ </tbody>
+</table>
+
+<div id="private-browsing"><div class="headingWithIndicator">
+ <h2 id="Private_browsing">Private browsing</h2>
+ <span class="indicatorInHeadline minVer geckoMinVerMethod">Gecko 9.0 が必要(Firefox 9.0 / Thunderbird 9.0 / SeaMonkey 2.6)</span>
+</div></div>
+
+<p>Prior to Gecko 9.0 (Firefox 9.0 / Thunderbird 9.0 / SeaMonkey 2.6), the content preference service always stores preferences on disk. Because of this, in private browsing mode, use of the content preference service needed to be avoided while in private browsing mode; instead, information needed to be stored in memory or preferences had to be avoided. Starting in Gecko 9.0, when in private browsing mode, the content preference service stores preferences in memory instead of on disk, and automatically forgets them when leaving private browsing mode.</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService" title="">nsIContentPrefService</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefObserver" title="">nsIContentPrefObserver</a></code></li>
+ <li><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object/toSource" title="JavaScript/Reference/Global_Objects/Object/toSource">toSource()</a> (potentially useful for serializing objects for later use with <a href="/en-US/docs/JavaScript/Reference/Functions/eval" title="JavaScript/Reference/Functions/eval">eval()</a>)</li>
+</ul>
diff --git a/files/ja/archive/misc_top_level/using_xml_data_islands_in_mozilla/index.html b/files/ja/archive/misc_top_level/using_xml_data_islands_in_mozilla/index.html
new file mode 100644
index 0000000000..14f59a9520
--- /dev/null
+++ b/files/ja/archive/misc_top_level/using_xml_data_islands_in_mozilla/index.html
@@ -0,0 +1,84 @@
+---
+title: MozillaでのXML データアイランドの利用
+slug: Archive/Misc_top_level/Using_XML_Data_Islands_in_Mozilla
+translation_of: Archive/Misc_top_level/Using_XML_Data_Islands_in_Mozilla
+---
+<p>Internet Explorer(IE)は,「XMLデータアイランド」と呼ばれる<code>&lt;xml&gt;</code>タグを用いてHTMLドキュメントに直接XMLデータを埋め込む仕組みを提供しています.この仕組みはマルチベンダーのウェブ標準に準拠しておらず,Firefoxや他の非IEブラウザではサポートされません.しかし,HTML5は「データブロック」と呼ばれる,より一般的な仕組みを提供しており,XMLを含む,ほぼすべてのテキストデータを埋め込むことが可能です.</p>
+<p>JavaScriptでは,<code>src</code>属性が省かれ,かつ<code>type</code>属性が実行可能スクリプト型を指定しない場合に限り<a href="/ja/docs/Web/HTML/Element/script" title="HTML &lt;script> 要素は実行可能なスクリプトを埋め込み、または外部参照するコードを指定する際に用いられます。"><code>&lt;script&gt;</code></a>エレメントの内容をデータブロックとして扱うことができます.  この場合 埋め込みたいXMLコンテントが"&lt;/script&gt;"にマッチする(大文字・小文字無視で)終了タグを持たないことを確かめておく必要があります.</p>
+<p>例として, 簡単な発注書はこのように埋め込むことができます:</p>
+<pre class="brush: xml">&lt;script id="purchase-order" type="application/xml"&gt;
+&lt;purchaseOrder xmlns="http://example.mozilla.org/PurchaseOrderML"&gt;
+ &lt;lineItem&gt;
+ &lt;name&gt;Line Item 1&lt;/name&gt;
+ &lt;price&gt;1.25&lt;/price&gt;
+ &lt;/lineItem&gt;
+ &lt;lineItem&gt;
+ &lt;name&gt;Line Item 2&lt;/name&gt;
+ &lt;price&gt;2.48&lt;/price&gt;
+ &lt;/lineItem&gt;
+&lt;/purchaseOrder&gt;
+&lt;/script&gt;
+</pre>
+<p>埋め込んだXMLソーステキストはこのように取出せます:</p>
+<pre>var orderSource = document.getElementById("purchase-order").textContent;
+</pre>
+<p>XMLソーステキストは<a href="/en/DOM/DOMParser" title="en/DOMParser">DOMParser</a> APIを用いてDOM treeにパース出来ます:</p>
+<pre>var parser = new DOMParser();
+var doc = parser.parseFromString(orderSource, "application/xml");</pre>
+<p>ここで示した HTML5のデータブロック方式は,Firefox, Opera,WebKitベースのChromeとSafariおよびIE9で機能します.それに対し,IEのXMLデータアイランド方式はIEでしか使えません.</p>
+<p>完全なデモです (アタッチメントとしても利用可能):</p>
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;XML Data Block Demo&lt;/title&gt;
+&lt;script id="purchase-order" type="application/xml"&gt;
+&lt;purchaseOrder xmlns="http://example.mozilla.org/PurchaseOrderML"&gt;
+ &lt;lineItem&gt;
+ &lt;name&gt;Line Item 1&lt;/name&gt;
+ &lt;price&gt;1.25&lt;/price&gt;
+ &lt;/lineItem&gt;
+ &lt;lineItem&gt;
+ &lt;name&gt;Line Item 2&lt;/name&gt;
+ &lt;price&gt;2.48&lt;/price&gt;
+ &lt;/lineItem&gt;
+&lt;/purchaseOrder&gt;
+&lt;/script&gt;
+&lt;script&gt;
+function runDemo() {
+ var orderSource = document.getElementById("purchase-order").textContent;
+ var parser = new DOMParser();
+ var doc = parser.parseFromString(orderSource, "application/xml");
+ var lineItems = doc.getElementsByTagNameNS("http://example.mozilla.org/PurchaseOrderML", "lineItem");
+ var firstPrice = lineItems[0].getElementsByTagNameNS("http://example.mozilla.org/PurchaseOrderML", "price")[0].textContent;
+ document.body.textContent = "The purchase order contains " + lineItems.length + " line items. The price of the first line item is " + firstPrice + ".";
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload="runDemo()";&gt;
+Demo did not run
+&lt;/body&gt;
+&lt;/html&gt;
+</pre>
+<p>XMLソーステキストは<a href="/en/DOM/DOMParser" title="en/DOMParser">DOMParser</a> APIを用いてDOM treeにパース出来ます:</p>
+<pre>var parser = new DOMParser();
+var doc = parser.parseFromString(orderSource, "application/xml");</pre>
+<p>&lt;script&gt;タグ以外の方法として<a href="/ja/docs/Web/HTML/Element/object" title="埋め込みオブジェクト要素 (The Embedded Object element) () は、「画像」、「ネストされたブラウジング・コンテキスト」、または「プラグインによって処理されリソースとして扱うことが可能なもの」の何らかの外部リソースを表します。"><code>&lt;object&gt;</code></a>タグを用いる例です.このデモでは<code>purchase_order.xml</code>という名前の外部ドキュメントを生成しておかなければなりません:</p>
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;XML Data Block Demo&lt;/title&gt;
+&lt;script&gt;
+function runDemo() {
+ var doc = document.getElementById("purchase-order").contentDocument;
+ var lineItems = doc.getElementsByTagNameNS("http://example.mozilla.org/PurchaseOrderML", "lineItem");
+ var firstPrice = lineItems[0].getElementsByTagNameNS("http://example.mozilla.org/PurchaseOrderML", "price")[0].textContent;
+ document.getElementById("output-box").textContent = "The purchase order contains " + lineItems.length + " line items. The price of the first line item is " + firstPrice + ".";
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload="runDemo()";&gt;
+&lt;object id="purchase-order" data="purchase_order.xml" type="text/xml" style="display: none;"&gt;&lt;/object&gt;
+&lt;div id="output-box"&gt;Demo did not run&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre>