注意: このページは内容が古くなってます。mod_roaming などを使ったほうがてっとりばやいと思います
Netscape Communicator 4.5 日本語版が出たのというので、さっそくインストールしました。で、いろいろ試してたら「編集(E)」→「設定(E)...」に「ローミング」というカテゴリがあるのに目が止まりました。
カテゴリを選択してみます。どうやら bookmark とか cookies などの設定情報をサーバに保存しておき、他のマシンにインストールのクライアントからも利用できるようにする仕掛けのようです。プロトコルとしては LDAP また HTTP のようですな。
「複数のクライアントで bookmark が共有できるはないかっ!」っつーことで、どういうしかけで動いているのか、お手軽なHTTP を使った場合について調べてみました。
まず、Communicator の「編集(E)」→「設定(E)...」から「ローミングアクセス」のカテゴリを選択します。「ローミングアクセス」をクリックして現れる「このプロファイルに対してローミングアクセスを有効にする(E)」にチェックを入れます。次にその下の「ユーザ名(U)」にユーザ名を入れます。どういうユーザ名を使えばいいのかわからないので、適当に自分のノートPCのアカウント名を入れておきました (私のノートPCはLinuxが動いてます)。
「ローミングアクセス」の「サーバ情報」をクリック。「HTTPサーバ(H)」にチェックを入れ、「ベースURL(B)」に適当に「http://mynote.domain/~myname/profile/
」とでも入れておきます。「mynote.domain
」は私のノートPCのホスト名、「/~myname/profile/
」は今思い付いた適当なURLです (myname はアカウント名)。たぶん、このURL配下にデータが格納されるのでしょう。
「ファイル選択」はとりあえずデフォルトにしときます。
ひととおり設定したら、Communicator を終了。ノート上の Apache のログ を tail -f
で流し見状態にしておき (Debian デフォルトなので tail -f /var/log/apache/access.log
)、Commnicatro を起動。
といったことをあれこれ繰り返してみると、どうやら、PUT
とDELETE
といったメソッドを使ってるみたいです。そういや、Netscape Navigator Gold 以降の Netscape Navigator (Composer) や、Amayaの Publishing 機能とかで使ってたっけ。でも、PUT や DELETE はどうやってハンドルするのだ…
さっそく RFC とか、Apache 関連サイト、検索エンジンなどで調べてみます。Apache では PUT や DELETE は「Script」で設定すれば良さそうです。さらに具体的に参考になりそうなものをApache Weekの記事に見付けました。Perl で書かれたサンプルのハンドラもあります。
/etc/apache/srm.conf
に
Script PUT /cgi-bin/put
|
を追加。/cgi-bin/
に該当する/usr/lib/cgi-bin/
に、ApacheWeek のサンプルスクリプトを改造したput
とdelete
を置き、CGI として実行できるように設定します。
ローミングサーバの指定で記述した /~myname/profile/
という URL に該当するディレクトリ (ここでは/home/myname/public_html/profile/
) を作って、その中に
AuthName mynote.domain-myname-profile
|
と書いた .htaccess
を作成します (Apache の access.conf
で Override
指定により、この .htaccess
が有効になってることが必要)。このディレクトリ (/home/myname/public_html/profile/
) はとりあえず chmod 777
しておき、httpd から起動された put や delete がファイルを読み書きできるようにします。セキュリティ上はもう少し考えたほうがいいけど、とりあえずここでは無視します:-)
そして、Apache 付属のhtpasswd
コマンドでパスワードファイル(この場合は/usr/home/myname/etc/webpasswd
)にローミングユーザ名としてCommunicatorに設定した「myname
」のエントリを作成し、ユーザ認証するように準備。
さて、Communicator を起動してみます。パスワードを訊かれるのでhtpasswd
でセットしたものを入力し続行。この時のログを見てみると
mydesktop - - [16/Nov/1998:20:01:11 +0900] "PUT /~myname/profile/WRITETEST HTTP/1.0" 401 401
|
という記録が出てます。まず「WRITETEST
」を書いて消す、という動作で read-write 権限をチェックし、liprefs
などのファイル名で設定がストアされてないかチェックしています。ここでは初めてのアクセスなので全部「404 (NotFound)」に終ってます。
今度は Communicator を終了してみましょう。「ローミングアクセスサーバにアップロードする項目を…」というダイアログが出たあと何やら表示されます。この時のログは…
mydesktop - myname [16/Nov/1998:20:02:17 +0900] "PUT /~myname/profile/li11038.tmp HTTP/1.0" 204 0
|
「MOVE」って何?
たぶん、仮の名前を指定して「PUT」でアップロードし、「MOVE」で正しい名前(この例だと liprefs
)に変更しようとしたが、エラー (501 Method Not Implemented
) になったので、「DELETE」で取り消した、ということなのでしょうね。
MOVE は何? HTTP/1.1 の中を探しても見付からない…。そこであちこちで調べてみると、
MOVE OLD-URI HTTP/1.0 NEW-URI
|
といったリクエストを送っているようです (WEBDAV にも MOVE
はあるけど、ちょっと違うみたい)。
さて、どうしたものか。てっとりばやいので、Apache 本体にパッチをあててみました。→ Apache 1.3.3 用 MOVE メソッド拡張パッチ
Apache にパッチを当てて、コンパイルし、インストール (テストなので /usr/local/apache
を ServerRoot) します。
このパッチで MOVE を PUT と似たような手順で処理できると思います。具体的には、srm.conf
に
Script MOVE /cgi-bin/move
|
を追加し、/cgi-bin/move
として moveを置きます。
Communicator を起動し、bookmark や cookies などに変更を加え、Communicator を終了すると
mydesktop - myname [17/Nov/1998:03:14:42 +0900] "HEAD /~myname/profile/liprefs HTTP/1.0" 200 0
|
と記録されます。どうやらうまくいってるみたいです(^^)。
使ってるクライアントが Windows 環境 Only、とかならこれでも良さそうですが、UNIX 環境など、文字コードなどの設定が違うものだとうまくなさそうです。ブックマークの文字コードについて調べてみると、
となってます。ちなみに改行コードはどちらも「CR+CR+LF」というものを使っており、英語だけなら問題ありません。ブックマーク中のどのフォルダをユーザ設定ツールバーとして使うのかについてはブックマーク編集でフォルダを選択し、「ツールバーフォルダに設定」「ツールバーフォルダを解除」という設定を行って変更できますが、これは、prefs.js に情報が格納されます。
cookies については OS 間で共有できそうです。
各種設定 prefs.js (liprefs.js) はフォント名などの問題もあり、変換は面倒そうです。でも、そんなに変更するものでもないですから、手動で設定すれば実用上は問題ないでしょう。
そこで、ブックマークの変換を試みます。サーバが自動的に判断すれば良いのですが、PUT/MOVE/GET のハンドラに組み込む必要がありますので、とりあえず、それは後回し。サーバ上で手動で実行するスクリプトを作って試すことにします。
作ってみました。とりあえず UNIX → WIN です。
win-bookmark.head
を、スクリプト中で指定されたパスに置き、root 権限でスクリプトを実行すると、漢字コードの変換を行って、rename します。別途、jcode.pl が必要 (Debian なら libjcode-perl をインストール)。
UNIX 上の Communicator を終了させ、サーバに bookmark を保存。そして、このスクリプトを実行した後、Windows 上の Communicator を起動すると、bookmark がサーバからダウンロードされます。おー、UNIX 上のと同じ bookmark が使えてる! ブックマーク編集ウインドウで「ツールバーフォルダに設定」を実行すれば、ツールバーも同じに!
Netscape による情報「そういや、Netscape 社が提供している情報を見てないな」ということで、netscape.com からいくらか検索してみました。
とりあえずこんなところかな。最初から netscape.com を検索すれば良かったな…。LDAP な部分は Apache のには直接関係ないけど。 |
WIN → UNIX です。
これでOKだと思う。
Manually Implementing Roaming Accessをちゃんと見てみる。なんだ、MOVE がない HTTP サーバのための解決方法も書いてあるじゃない。Windows ならば、C:\Program Files\Netscape\Users\myname\prefs.js
に
user_pref("li.server.http.useSimplePut", true);
|
を追加してみる。さっそく動作確認。Apache のログを見ると、
mydesktop - myname [19/Nov/1998:21:44:44 +0900] "HEAD /~myname/profile/bookmarks HTTP/1.0" 200 0
|
話が簡単になったな、と。UNIX 系列なら、~/.netscape/preferences.js
だ。これで Apache にパッチ当てる必要がなくなった(^^)
bookmark 変換を Apache から自動的に実行させるよう、Script
で指定できるハンドラとして使えるようにする。
Apache を使わずに inetd から起動する小さなコマンドですませる方法を考える。
「フリーな」LDAPサーバも試みてみる。
最近はなにもやってないですが、他にも「Apache で roaming」というをいろいろ見付けました