ProFTPD - iconv() 文字コード変換パッチ

English?


概要

Linux のディストリビューションなどで採用されている ftp サーバプログラム,"ProFTPD" に文字コード変換機能をつけるパッチです。以下の変換がサポートされます。

  • ディレクトリリスティングの文字コード(ローカル → リモート)
  • ftp コマンドの文字コード(リモート → ローカル)

ローカル文字コード(サーバ内コード)が EUC-JP,リモート文字コード(クライアント側コード)が Shift JIS の環境で文字コード変換を行う専用版は こちら で既に公開していますが,iconv() を使用する汎用版が本パッチです。


ダウンロード

以下のファイルをダウンロードして,オリジナルの ProFTPD ソースに対してパッチを当ててください。


configure 方法

パッチ後に,文字コード変換モジュールを有効にする設定で configure します。

  • configure 実行時に --with-modules=mod_codeconv を指定すると,文字コード変換モジュールが有効になります。
  • おまけとして --with-modules=mod_codeconv:mod_df を指定すると,ディレクトリ移動時にディスクの空き容量を表示するモジュールも追加されます。複雑な mount をしている場合などには便利かもしれません。

(若干マニアックな)例:

./configure --prefix=/usr/local/v6 --enable-ipv6 --enable-sendfile --with-modules=mod_codeconv:mod_df

make して make install すれば,--prefix で指定したディレクトリ(デフォルトは /usr/local)の下の sbin/ に proftpd がインストールされます。設定ファイルやバイナリをそれぞれ別のディレクトリにインストールするには,configure オプションで個別にディレクトリを設定します。


設定

proftpd.conf に文字コードの設定を書き足します。

CharsetLocal ディレクティブにサーバ内部の文字コード,CharsetRemote ディレクティブにクライアント側の文字コードを指定します。例えば,サーバ側のファイルシステムが EUC-JP を使用していて,クライアント側に Shift JIS で見せる場合には以下のように指定します。

CharsetLocal           EUC-JP-MS
CharsetRemote          CP932

<VirtualHost> タグなどを使っている場合は,それぞれの有効範囲で個別に指定する必要があります(指定しなかった場合は文字コード変換が行われません)。

EUC-JP-MS は glibc 2.3.3 以降でサポートされている charset です。古い glibc を使用している場合などでは以下のように指定してください。

CharsetLocal           EUC-JP
CharsetRemote          SJIS

EUC-JP/SJIS を使用すると,いわゆる機種依存文字が扱えなくなります。iconv() が機種依存文字の使える charset をサポートしていない環境では EUC-JP/SJIS 専用版 の使用をお勧めします。


UTF-8 対応

iconv() がサポートしていれば UTF-8 も使用可能です。

サーバ側ファイルシステムが UTF-8 を使用していて,クライアント側に Shift JIS で見せる場合には

CharsetLocal           UTF-8
CharsetRemote          CP932

と指定すれば OK のはずです。

上記の設定は手元の環境では未確認ですが,CharsetLocal に EUC-JP,CharsetRemote に UTF-8 を指定して正常動作することは確認しています。


← 戻る


haruna@hpot.r-x.jp Copyright © 1999-2004 by T.Tsujikawa / All rights reserved.