mdnconvはネームサーバの設定ファイル named.conf
や
ゾーンマスタファイルのためのコードセット (エンコーディング) 変換ツールです。
mdnconvは引数で指定されたファイル、あるいは標準入力からテキストを入力し、
mDNkit の設定ファイル (mdn.conf
) やオプションで指定された
エンコーディング変換および正規化を実行し、結果を標準出力に書き出します。
具体的な使い方に関しては利用者ガイドの
named.conf
、
ゾーンマスタファイルの作成の項をご覧ください。
なお、mdnconv は 環境変数 MDN_DISABLE の設定を明示的に無視するため、 MDN_DISABLE が設定されているかどうかにかかわらず、ドメイン名の変換処理を 行います。
mdnconv を起動する際の、コマンド行の形式は次の通りです。
% mdnconv [オプション...] [ファイル名...]
mdnconvのオプションには、mDNkitの設定ファイル (mdn.conf
)
のエントリと同じ設定機能を持っているものが多数あります。
設定ファイル内のエントリとオプションの両方を指定している場合、
その設定項目が複数回定義できるもの (例えば nameprep-map
エントリとそれに相当する -map
オプション) であれば、指
定は両方とも有効になります。正確には、設定ファイルの定義内容がまず設定
され、オプションで指定した内容が追加されます。
また、設定項目が一つしか定義できないもの (例えば idn-encoding
とそれに相当する-out
オプション) については、両方指定する
とオプションの方が優先されます。
mdnconv が認識するオプションは、次の通りです。 よく使われると思われるオプションに関しては、短縮形として1文字のオプション を用意してあります。
-in
<in-code>
-i
<in-code>
-reverse
オプションが指定されている場合には
mDNkit 設定ファイルの
idn-encoding
エントリの設定がデフォルトとなります。
-out
<out-code>
-o
<out-code>
idn-encoding
エントリに指定されたエンコーディングです。
ただし後述する-reverse
オプションが指定されている場合には
アプリケーションの
ローカルエンコーディング
がデフォルトとなります。
-conf
<path>
-c
<path>
mdn.conf
) のパス名を指定します。
オプション -conf
、-noconf
のいずれも指定しな
かった場合は、デフォルトの設定ファイルを読み込みます。
-noconf
-C
mdn.conf
) を読み込まないようにします。
-reverse
-r
-nameprep
<version>
-n
<version>
nameprep
エントリ
に相当します。
-nonameprep
-N
-nounassigncheck
の効果も合わせ持っています。
-map
<scheme>
nameprep-map
エントリに相当します。
このオプションは複数回指定することが可能です。
-normalize
<scheme>
nameprep-normalize
エントリに相当します。
このオプションは複数回指定することが可能です。
-prohibit
<set>
nameprep-prohibit
エントリに相当します。
このオプションは複数回指定することが可能です。
-unassigned
<set>
nameprep-unassigned
エントリに相当します。
このオプションは複数回指定することが可能ですが、-nonameprep
もしくは -nounassigncheck
が指定されたときは無視されます。
-nounassigncheck
-U
-delimiter
<codepoint>
.
') 以外にドメイン名の区切りと見なしたい
文字を指定します。
mDNkit の設定ファイルの
delimiter-map
エントリに相当します。
このオプションは複数回指定することが可能ですが、-reverse
オプションが指定されたとき、あるいは-delimitermap
が指定
されなかったときは無視されます。
-localmap
<map>
local-map
エントリで、トップレベルドメイン `.
' に対するマッピング
を指定することに相当します。
このオプションは複数回指定することが可能ですが、-reverse
オプションが指定されたとき、あるいは-nolocalmap
が指定
されたときは無視されます。
-nolocalmap
-L
-reverse
オプションが指定されたときは無視されます。
-delimitermap
-d
.
') 以外の文字を、ピリオドにマッピングし
ます。このオプションを指定しなければ、通常このマッピングは行いません。
-reverse
オプションが指定されたときは、無視されます。
-whole
-w
-alias
path
-a
path
encoding-alias-file
エントリに相当します。
-flush
-version
-v
mdnconv の順方向変換 (-reverse
オプション無指定時の動作)
では、入力データに対して一行ずつ次のような処理が行われます。
-whole
オプションをつけて mdnconv を実行し、かつ
出力エンコーディングが Punycode や RACE など ASCII 互換
エンコーディングの場合に、改行コードも Punycode や RACE で
エンコードされてしまい、改行がなくなってしまうのを避けるためです。
-whole
オプションが指定されていない場合は、次のような
特別な処理を行います。
これは、入力行中にスペース等の ACE には含まれない文字が入っていると、
変換できずにエラーになってしまうためです。
-whole
オプションが指定されていれば、行全体を
一つのドメイン名とみなして取り出します。指定されていなければ、次の条件に
該当する部分文字列を多言語ドメイン名とみなして、一つずつ取り出します。
.
') に変換します。
ただし、-delimitermap
が指定されている場合、この処理は
飛ばします。
-nolocalmap
が指定されている場合、この処理は
飛ばします。
-nonameprep
が指定されている場合、これらの正規化処理
は一切行わないようにします。また、-nounassigncheck
が指定
されている場合は、未割り当てコードポイントの検査だけを行わないようにします。
-out
で指定された出力
エンコーディングに変換します。
mdnconv の逆方向変換 (-reverse
オプション指定時の動作)
では、入力データに対して一行ずつ次のような処理が行われます。
-whole
オプションが指定されている場合は、行全体
を一つの多言語ドメイン名とみなして取り出します。
それ以外の場合は、行の中から正しい ASCII ドメイン名と解釈できる
部分文字列 (英数字とハイフン、ピリオドだけから構成される部分、ただし
先頭は英数字のみ、末尾はハイフン以外の文字) をすべて探し出します。
そして、見つかった個々の文字列に対して、入力 ACE エンコーディングから
UTF-8 への変換を試み、成功すればその文字列を多言語ドメイン名とみなして
取り出します。
このような処理を行うことにより、行の途中に ACE でエンコードされた
文字列が混ざっている場合にもかなり高い確率で正しく多言語ドメイン名を
取り出すことができます。
-nonameprep
が指定されている場合、これらの検査は
一切行わないようにします。-nounassigncheck
が指定されている
場合は、未割り当てコードポイントの検査だけを行わないようにします。
-out
で指定された
出力エンコーディングに変換します。