2007年05月30日

Vine Linux 3.2 の Webdav に mod_encoding

先日インストールした Webdav なのですが、私が試験したWindowsXP SP2と同じバージョンなのに、認証ではじかれたり、日本語フォルダ名などでエラーになったりと、環境によってはまだまだ問題が多いことがわかりました。

しかたがない、もう少し改善の努力をしましょう、ということで、まずはmod_encodingを入れてみることにしました。これによって、WindowsXPのおかしな認証動作も改善されるかもしれないし。

WebDAV Resources JPを最初に見てみたのですが、パッチがたくさんあって、どれを使うのか調べるだけで時間がかかりそう... もう少し検索してみると、全てのパッチをまとめてくれている方がいらっしゃるのですね。

WebDAV - PukiWiki

初めは、Fedora 6用という最新(?)のmod_encoding-20061118.tar.gzを試してみたのですが、makeで失敗しました。Vine 3.2はカーネルが2.4ですからね。

mod_encoding-20040430a.tar.gzをダウンロードし、
$ tar zxvf mod_encoding-20040430a.tar.gz 
$ cd mod_encoding-20040430
$ cd lib
$ ./configure
$ make
$ su
# make install
# /sbin/ldconfig -v

これで、iconv_hookのコンパイルとインストールが終了です。次に、mod_encoding本体です。
$ cd ..
$ ./configure --with-apxs=/usr/bin/apxs --with-iconv-hook=/usr/local/include
$ make
$ gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
$ su
# cp mod_encoding.so /usr/lib/apache2/modules

最後に、apacheの設定変更ですね。こんな設定にしてみました。
# vi /etc/apache2/conf/apache2.conf

<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DavLockDB /var/lock/dav/DavLock
</IfModule>

Alias /webdav "/var/www/webdav"
<Location /webdav>
Options All
AllowOverride All
DAV on
AuthType Digest
AuthName "DAV"
AuthDigestFile /etc/dav/dav-auth
Require valid-user
</Location>

<IfModule mod_encoding.c>
# モジュールを有効化
EncodingEngine On
# サーバ側のファイル名エンコーディング
SetServerEncoding UTF-8
# デフォルトのエンコード(自動判定)
DefaultClientEncoding JA-AUTO-SJIS-MS
# 各種エージェントごとのエンコーディング
AddClientEncoding UTF-8 "Microsoft-WebDAV-MiniRedir/"
AddClientEncoding SJIS "Microsoft .* DAV 1\.1$"
AddClientEncoding UTF-8 "Microsoft .* DAV$"
AddClientEncoding SJIS "xdwin9x/"
AddClientEncoding EUC-JP "cadaver/"
# WindowsXPからのアクセス時にユーザ名に付加されたホスト名を消去する
NormalizeUsername On
</IfModule>

最後にapacheをリスタートして終了。
# service apache2 restart

サーバー側のエンコードをVine Linux 3.2に合わせてEUC-JPにしてみたのですが、動作は変化ありませんでした。何か足りないんでしょうね。

Mac OS Xからアップした日本語ファイル名がWindowsから見ると「デ」→「テ・」のように化ける件は、「OS Xは、UnicodeのNormalization (正規化) として、かなの濁点半濁点つきの文字等は合成文字として、基底文字と結合文字 (濁点半濁点) に分離して保持する方式 (Normalization Form D) を使っています」ということが理由のようです。なるほど、知りませんでした。

参考:Mac OS XでWebDAVサーバ

同じUTF-8なのに違ってしまうとは、何なんでしょうね。

それに対応するMac OS X用のmod_encodingパッチもあるようですが、今のバージョンに対応しているものは見つかりませんでした。きっと誰か作っているんだろうと思うんだけどなぁ。
posted by 急いでジャンプ at 13:56| Comment(1) | TrackBack(1) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
トラックバックさせていただきました。
Vine4.2だとmod_encoding-20061118.tar.gzでインストール可能でした。
WebDAV - PukiWiki へはこのページからたどって行ったと思います。
有益な情報をありがとうございました。
Posted by ひろちゃん at 2008年03月25日 00:42
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック

VineLinux4.2でWebDAVを使用する。
Excerpt: 前回、VirtualBoxでVineLinux4.2を仮想化できたため、日ごろ試
Weblog: ひろちゃん帝国 ココログ村
Tracked: 2008-03-23 19:39