mod_dav (WebDAV server for the Apache)

[ 戻る | トップページに戻る ]

概要

mod_dav とは、Apache に WebDAV 機能を組み込むためのモジュール。

URL

http://www.webdav.org/mod_dav/

インストール環境

Plamo Linux 2.2.1 (Kernel 2.2.19 + glibc 2.2)

必要なもの

Apache

バージョン

1.0.3-1.3.6

インストール手順

$ tar xvfz mod_dav-1.0.3-1.3.6.tar.gz
$ cd mod_dav-1.0.3-1.3.6
$ ./configure --with-apxs=/usr/local/apache/bin/apxs
$ make
$ su
# make install
# exit

/usr/local/apache/conf/httpd.conf に以下のエントリを追加。
DAVLockDB /var/lock/apache/DAVLock
<Location /DAV>
        DAV on
</Location>

最後に、必要なディレクトリを作成して、 apache を再起動すれば、おしまい。
$ su
# mkdir -p /DAV
# mkdir -p /var/lock/apache
# chown . /var/lock/apache
# exit

これで Windows の Web フォルダ経由などで参照できるようになる。 が、ここでひとつ問題。Windows から日本語ファイル名のファイルを作成すると、 その時には問題ないのだが、最新の情報に更新すると文字化けしてしまう。
これは Windows では送信時は Shift-JIS、受信時には UTF-8 を期待しているにも 関わらず、mod_dav は送られて来た文字コードそのままで DAV サーバに格納し、 それをそのまま返していることが原因らしい。
# 注) あくまでファイル名の話。中身は送られてきた文字コードのまま。

という訳で、mod_encoding を入れて対策する。
$ /usr/local/apache/bin/apxs -c mod_encoding.c 
gcc -DLINUX=22 -DNO_DBM_REWRITEMAP -DMOD_SSL=208105 -DUSE_HSREGEX -DEAPI -DUSE_EXPAT \
    -I../lib/expat-lite -fpic -DSHARED_MODULE -I/usr/local/apache/include  -c mod_encoding.c
mod_dav_encoding.c:49: `#include' expects "FILENAME" or <FILENAME>
mod_dav_encoding.c:50: `#include' expects "FILENAME" or <FILENAME>
mod_dav_encoding.c:51: `#include' expects "FILENAME" or <FILENAME>
mod_dav_encoding.c:52: `#include' expects "FILENAME" or <FILENAME>
mod_dav_encoding.c:53: `#include' expects "FILENAME" or <FILENAME>
mod_dav_encoding.c:54: `#include' expects "FILENAME" or <FILENAME>
mod_dav_encoding.c:56: `#include' expects "FILENAME" or <FILENAME>
apxs:Break: Command failed with rc=1

ふむ。ソースの中身を確認すると、Web で公開されていたため、< が \< に置き換えられるなどの実体参照が使われているため、テキスト (表示イメージ) で保管しないといけないらしい。
その辺り修正して、再トライ。
$ /usr/local/apache/bin/apxs -c mod_encoding.c 
$ su
# /usr/local/apache/bin/apxs -i mod_encoding.so 

あとは、/usr/local/apache/conf/httpd.conf に以下のエントリを追加して、 apache を再起動すると OK 。
LoadModule encoding_module libexec/mod_encoding.so

<IfModule mod_encoding.c>
 EncodingEngine on
 SetServerEncoding UTF-8

 AddClientEncoding SJIS   "Microsoft .* DAV"
 AddClientEncoding SJIS   "xdwin9x/"
 AddClientEncoding EUC-JP "cadaver/"
</IfModule>

[ 戻る | トップページに戻る ]