Debian で日本語ファイル名の使える WebDAV サーバを用意する方法をまとめておきます。
ただし、この方法では サーバ上のファイル名のエンコーディングは UTF-8 しか使えない という制限があります。これは mod_dav の仕様です。 ほかのエンコーディングを使用するには、以下の作業に加えて mod_davにパッチを当てる必要があります(2.0 の場合は apache core) 。 これに関しては、ここでは扱いません。
オフィシャルパッケージはありません。
まず、/etc/apt/sources.list に以下を追加しします。
deb http://ftp.arege.jp/debian-arege woody libapache-mod-encoding deb-src http://ftp.arege.jp/debian-arege woody libapache-mod-encoding
追加したなら
apt-get update apt-get install libapache-mod-encoding
オフィシャルパッケージがあります。単に
apt-get install libapache-mod-encoding
でOK.
私のパッケージは、ライセンスの問題でリリースに間に合わないかもしれません。
武藤さんの作られたパッケージがあります。
/etc/apt/sources.list に以下を書き、
deb http://kmuto.jp/debian/experimental ./ deb-src http://kmuto.jp/debian/experimental ./
apt でインストールします。
apt-get update apt-get install libapache2-mod-encoding
以下のすべてが必要ですが、目的別に分けておきます。 自分の環境に合わせて書いてください。
<IfModule mod_dav.c>
DAVLockDB /var/lock/DAV/DAVLock
</IfModule>
これは基本的に mod_dav のインストール時に自動的に かかれると思いますが、なければ設定ファイルのルートに 追加してください(ほかにも書けますがとりあえず)。
iconv に何を使うかによって微妙に設定が異なります。 また、注意事項がいくつかあります。
woody なら必ずこれを使いましょう。
<IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS MSSJIS AddClientEncoding "cadaver/" EUC-JP AddClientEncoding "Microsoft .* DAV" MSSJIS AddClientEncoding "xdwin9x" SJIS </IfModule>
武藤さんバージョン apache2 用のパッケージの場合、 もしくは sarge/sid で自動認識なんて要らないと言う人向け。
<IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding CP932 SJIS EUC-JP-MS AddClientEncoding "cadaver/" EUC-JP-MS AddClientEncoding "Microsoft .* DAV" CP932 AddClientEncoding "xdwin9x" SJIS </IfModule>
WebDAV でのアクセスを有効にしたい場所に書いてください。
<IfModule mod_dav> Dav on </IfModule>
mod_encoding は apache がリクエストを受け取った直後、一番最初に 要求されたURLのエンコードを変換して、後の本来の処理に引き渡す モジュールです。 この変換には iconv が使われますが、ここを iconv_hook でラップ することが可能です。
mod_encoding を使うためには必須ではない。 でも、OS の iconv に問題があるなら使っておいた方がいい。 使ってもそれほど悪影響は起きない。 と言うわけで