WebDAV

WebDAVはPort80を利用してファイル共有することができるApacheモジュールである。 モジュールをここからDownload してくる。

Apacheのインストール

$ tar zxvf apache_1.3.29.tar.gz
$ cd apache_1.3.29
$ OPTIM="-O2" ./configure --prefix=/usr/local/apa \
che1329 --enable-module=most --enable-shared=max \
(またはSSLを動作させるときは
OPTIM="-O2" SSL_BASE=../openssl-0.9.7c ./configure \
--prefix=/usr/local/apache1329 --enable-module=most \
--enable-shared=max)

Configuring for Apache, Version 1.3.29
 + using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
 + enabling mod_so for DSO support
Creating Makefile in src
 + configured for Linux platform
 + setting C compiler to gcc
 + setting C pre-processor to gcc -E
 + using "tr [a-z] [A-Z]" to uppercase
 + checking for system header files
 + adding selected modules
    o rewrite_module uses ConfigStart/End
 + using -lndbm for DBM support
      enabling DBM support for mod_rewrite
    o dbm_auth_module uses ConfigStart/End
 + using builtin Expat
 + using -ldl for vendor DSO support
 + checking sizeof various data types
 + doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/regex
Creating Makefile in src/os/unix
Creating Makefile in src/ap
Creating Makefile in src/main
Creating Makefile in src/lib/expat-lite
Creating Makefile in src/modules/standard
Creating Makefile in src/modules/proxy

$ make
詳しいApacheのインストールはここを参考。
$ su
# make install 
# cd /usr/local
# ln -s apache1329 apache
# exit

WebDAVモジュールのインストール

$ tar zxvf mod_dav-1.0.3-1.3.6.tar.gz
$ cd mod_dav-1.0.3-1.3.6
$ ./configure --with-apxs=/usr/local/apache1329/bin/apxs
$ make
$ su
# make install
# cd /usr/local/apache1329/conf/

httpd.confで
LoadModule unique_id_module   libexec/mod_unique_id.so
LoadModule setenvif_module    libexec/mod_setenvif.so
LoadModule dav_module         libexec/libdav.so <--確認

AddModule mod_so.c
AddModule mod_setenvif.c
AddModule mod_dav.c  <--確認

Port 80 <--変更

User www <--変更
Group www <--変更

##Edit By JE2ISM ## <--追加
<Location /ism> <--追加(/ismというディレクトリを共有する)
    DAV On <--追加(/ismというディレクトリを共有する)
</Location> <--追加(/ismというディレクトリを共有する)

DAVLockDB /usr/local/apache/var/DAVLock <--追加(ロックデータベース
を格納する場所をDAVLockDBディレクティブで指定する。
/usr/local/apache/var/というディレクトリにロックデータベースファイルを
作成する。このディレクトリは、wwwユーザーがApacheが書き込める設定にする。

-------------- httpd.conf ここまで ------------------------

# mkdir -p /usr/local/apache/htdocs/ism
# chown -R www.www /usr/local/apache/htdocs/ism
# mkdir -p /usr/local/apache/var
# chown -R www.www /usr/local/apache/var

認証の設定

httpd.conf で

<Location /ism>
    DAV On
     <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>: <--(1)
         AuthType Basic
         AuthName "WebDAV Security"
         AuthUserFile /home/okada/htpwd/user.pwd
         Require valid-user
     </Limit>
</Location>

(1)をGET,POSTをはずすとブラウザではパスワードなしで閲覧できるようになる。

<Limit PUT DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>


Requireフィールドについて

 ここでは、「valid-user」としてパスワードファイルに登録したユーザ全てにアクセス許可を与えた。
 パスワードファイルに登録したユーザの中でも、特定のユーザだけにアクセス許可したい場合は、以下のとおり「Require user」に続けてユーザ名を記述すればよい。複数ユーザなら空白で区切って列記すればよい。

 Require user User1 User2

このときユーザを設定するときXpでは注意が必要
okadaとユーザを設定するときは

$ ./htpasswd /home/okada/htpwd/user.pwd 10.99.99.125\\okada
New password:
Re-type new password:
Adding password for user 10.99.99.125\okada

のように

(マシン名 Or IP)\\(ユーザ名)

とする。

日本語ファイル名

ここからmod_encoding.cをDownload.
日本語ファイル名を利用できるようにするには以下のような設定
が必要だがこのバージョンはその必要なくファイル名に日本語が使用できた。

$ /usr/local/apache/bin/apxs -c mod_encoding.c
gcc -O2 -DLINUX=22 -I/usr/include/db1 -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-l
ite -fpic -DSHARED_MODULE -I/usr/local/apache1329/include  -c mod_encoding.c
mod_encoding.c:275: warning: initialization from incompatible pointer type
gcc -shared -o mod_encoding.so mod_encoding.o
$ su
# /usr/local/apache/bin/apxs -i mod_encoding.so
cp mod_encoding.so /usr/local/apache1329/libexec/mod_encoding.so
chmod 755 /usr/local/apache1329/libexec/mod_encoding.so

参考ページ
HTTPメソッド定義

Windowsからのファイル共有

・マイネットワークからネットワークプレースを追加を選択
インターネットまたはネットワークのアドレスで

http://(接続先マシン名 or IPアドレス)/(ディレクトリ名)/
ex) http://10.99.99.125/ism/

or

・マイネットワークのアドレスに直接

\\(接続先マシン名 or IPアドレス)\(ディレクトリ名)
ex) \\10.99.99.125\ism

で接続できる。
なぜかXPからはファイル名の変更が出来ないMeならOKだった。

cadaverのインストール

LinuxコマンドラインのWebDAVクライアント。
ここからDownload.
しかし、日本語ファイル名が表示されない(UTF-8になる)ので、日本語パッチ のあるバージョンcadaver-0.20.5.tar.gzと日本語パッチcadaver-0.20.5.tar.gz をここからDownload.
$ tar zxvf cadaver-0.20.5.tar.gz
$ gzip -d cadaver-0.20.5-20021207.diff.gz
$ cd cadaver-0.20.5
$ patch -p1 < ../cadaver-0.20.5-20021207.diff
patching file Makefile.in
patching file libneon/Makefile.in
patching file po/Makefile
patching file po/cadaver.pot
patching file po/ja.po
patching file po/ja.po.original
patching file po/potfiles.sh
patching file src/cadaver.c
patching file src/cmdline.c
patching file src/codeconv.c
patching file src/codeconv.h
patching file src/commands.c
patching file src/edit.c
patching file src/ls.c
patching file src/options.c
patching file src/options.h

$ ./configure --with-ssl

(中略)
Configured to build cadaver 0.20.5:

  Install prefix:        /usr/local
  Compiler:              gcc
  Neon library:          included libneon (0.23.0)
  XML Parser:            libxml 1.8.16
  SSL library:           OpenSSL
  Internationalization:  Not built
  GNU readline support:  enabled

Now run 'make' to compile cadaver.

$ make
$ su
# make install

実行

$/usr/local/bin/cadaver http://localhost/ism
WebDAV Security をサーバ`localhost'上で行う為には認証が必要です:
ユーザ名:student
パスワード:******
dav:/ism/> ls
コレクションのリスト `/ism/': 成功しました。
コレクション:  TEST                                    0   1月  7 13:32
       あ.txt                                  8   1月  9 09:47
       3.txt                                  20   1月  8 13:53
       4.txt                                   4   1月  8 11:12
       tmp                                    29   1月  9 09:48
dav:/ism/> pwd
現在のコレクションは http://localhost/ism/ です。
dav:/ism/> get 3.txt
`/ism/3.txt' のローカルファイル名を入力して下さい: 3-3.txt
`/ism/3.txt' を `3-3.txt' にダウンロード中:
経過: [=============================>] 100.0% of 20 バイト 成功しました。
Segmentation fault
(なぜかgetコマンドでSegmentation faultが出た)
dav:/ism/> put 3-3.txt
3-3.txt を `/ism/3-3.txt' にアップロード中:
経過: [=============================>] 100.0% of 20 バイト 成功しました。
dav:/ism/> help
Commands:
 ls [パス]                      現在[又はその他の]コレクションの内容を一覧表示
 cd パス                        指定されたコレクションに変更
 pwd                            現在のコレクション名を表示
 put ローカル [リモート]        ローカルファイルをアップロード
 get リモート [ローカル]        リモートリソースをダウンロード
 mget リモート...               複数のリモートリソースをダウンロード
 mput ローカル...               複数のローカルファイルをアップロード
 edit リソース                  与えられたリソースを編集
 less リモート...               ページャを通してリモートリソースを表示
 mkcol リモート...              リモートのコレクションを作成
 cat リモート...                リモートリソースを表示
 delete リモート...             非コレクションリソースを削除
 rmcol リモート...              リモートコレクションとその全コンテンツを削除
 copy ソース... 目的地          ソースのリソースを目的地にコピー
 move ソース... 目的地          ソースのリソースを目的地に移動
 lock リソース                  与えられたリソースをロック
 unlock リソース                与えられたリソースのロックを解除
 discover リソース              リソースのロック情報を表示
 steal リソース                 リソースのロックトークンを強奪
 showlocks                      所有しているロックの一覧を表示
 propnames リソース             リソースで定義されているプロパティ名を表示
 chexec [+|-] リモート          リソースの実行可能プロパティの変更
 propget リソース [プロパティ名]        リソースのプロパティの取得
 propdel リソース プロパティ名  プロパティを削除
 propset リソース プロパティ名 値       プロパティを設定
 set [オプション] [値]          オプション又は表示オプションを設定
 open URL                       与えられたURLへの接続をオープン
 close                          現在の接続を閉鎖
 quit                           プログラムを終了
 unset [オプション] [値]        オプションからの値を非セットまたはクリア
 lcd [ディレクトリ]             ローカル作業ディレクトリを変更
 lls [オプション]               ローカルディレクトリリストを表示
 lpwd                           ローカル作業ディレクトリを表示
 logout                         認証されたセッションからログアウト
 help [コマンド]                ヘルプメッセージを表示
別名: rm=delete, mkdir=mkcol, mv=move, cp=copy, more=less, quit=exit=bye
注)それ以外でもmove,copyがエラーになった。

NKF

nkfをDownloadしてくる 2.0以上はUTFに対応している。
$ tar zxvf nkf204.tar.gz
$ cd nkf204
$ make
$ su
# cp nkf /usr/local/bin/
# cd /usr/bin/
# mv nkf nkf.old
# ln -s /usr/local/bin/nkf

バージョン確認
$ nkf -V
Network Kanji Filter Version 2.0 (4/0401/Shinji Kono)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW, 2002-2004 Kono,
 Furukawa

WebDAVで開放したディレクトの日本語ファイル名をlistするときは

$ ls -l | nkf -

                        DE JE2ISM       2004/01