WWWOFFLE (World Wide Web Offline Explorer)

mobio は常時ネットワークに繋がれていないし、外出先などからウェブを見たくなったとき、PHS を使ってインターネットに接続している。

新しい情報を見たい場合にはインターネットに接続するのはしかたないけど、さっき見たばかりのページが接続を切ったとたん見えなくなるのはかなしいので、モバイル環境向けのプロキシサーバーを探してみると、WWWOFFLE(World Wide Web Offline Explorer) がよさそう。

オンラインモードの時にキャッシュに貯めたデータをオフラインモードで手軽に読むことができて、オフラインモードの時にアクセスされたキャッシュに無いページは次にオンラインモードになったときに自動的にキャッシュに取り込んでくれるみたい。

オートダイアルモードにしておくと、キャッシュのデータを使いつつキャッシュに無い場合には自動的にダイアルアップしたり、オフラインモードでは DNS にさえ問い合わせに行かないので、モバイルでなくても、"非"常時接続環境では Squid よりも便利かもしれない。※1

でも、いつでも必要なページは potato, wget, httpdown等を使って mobio にコピーを置いておきましょうね :p※2

WWWOFFLE インストール

お手軽に ports でインストールしてしまいます。

# cd /usr/ports/www/wwwoffle
# make
# make install

wwwoffle.conf の作成

サンプルをコピーしてコンフィグレーションファイルを作成・ 編集します。

デフォルトのままで実用に耐える設定になっているので、そのままでも十分動くのですが、一応一通り目を通して自分好みにしましょう。

私が書き換えたところは以下のとおり。

これは、環境や使い勝手に合わせていろいろ書き換えてみてください。

# cp /var/spool/wwwoffle/wwwoffle.conf.default /var/spool/wwwoffle/wwwoffle.conf
# vi /var/spool/wwwoffle/wwwoffle.conf
stylesheets = yes
enable-modify-html = yes
add-cache-info = yes
anchor-cached-begin     = <font color="#00B000">
anchor-cached-end       = </font>
anchor-requested-begin  = <font color="#B0B000">
anchor-requested-end    = </font>
anchor-not-cached-begin = <font color="#B00000">
anchor-not-cached-end   = </font>
anon-password = [my mail address]
max-size = 100

注意として、wwwoffle はウェブから設定やコントロールが行えるようになっていますので、外部からのアクセスは制限しておきましょう。私の自宅では Squid が動いていて、デスクトップから使うことはまずありえないので、一切他からのアクセスはできないようにしています。

起動とテスト

ここまでの設定が終わったら、一度起動してテストしてみます。

/usr/local/etc/rc.d/ に起動スクリプトが作られているので、簡単に起動できます。

# /usr/local/etc/rc.d/wwwoffled.sh
wwwoffled

動作テスト 1

ウェブブラウザ (netscape navigator等) から http://localhost:8080/ にアクセスしてみる。
wwwoffle のウェルカムページが表示されればOK。※3

動作テスト 2

ウェブブラウザのディスクキャッシュを使わないように設定※4し、プロキシ設定を
 HOST: 127.0.0.1
 PORT: 8080
に設定します。

インターネットに接続して、wwwoffle をオンラインモードにします。

# /usr/local/bin/wwwoffle -on

ウェブブラウザで適当にウェブサイトを閲覧してから、wwwoffle をオフラインモードにします。

# /usr/local/bin/wwwoffle -off

オンラインモードで閲覧したページがオフラインモードで表示されればOK。

wwwoffle のモード切替

ネットワークに接続するたびに、オンライン・オフラインモードを切り替えるのは面倒なので、自動的に切り替えるように設定してしまいましょう。

基本的には、iij-ppp を使うならば /etc/ppp/ppp.linkup, /etc/ppp/ppp.linkdown に設定し、Ethernet 経由の場合には /etc/pccard_ether, /etc/pccard_ether_remove に設定します。

PHS ダイアルアップ接続時の設定

PHS からのダイアルアップには iij-ppp を使っているので、/etc/ppp/ppp.linkup にダイアルアップ接続時の設定をします。

私は PHS を使っているので PHS と書いていますが、iij-ppp を使うならばモデムでも同じことです。

# vi /etc/ppp/ppp.linkup
home:
 shell /usr/local/bin/wwwoffle -on
 shell /usr/local/bin/wwwoffle -fetch

home: は各自の接続先ラベルで読み替えてください。

ここでは、オンラインモードにするついでに取得要求リストにあるデータを取得するようにしています。(-fetch)

PHS ダイアルアップ切断時の設定

次に /etc/ppp/ppp.linkdown でダイアルアップ切断時用の設定をします。

# vi /etc/ppp/ppp.linkup
home:
 shell /usr/local/bin/wwwoffle -off

これでPHS からのダイアルアップ接続が確立したときに自動的にオンラインモードになり、切断するとオフラインモードに変更されるようになりました。

ネットワークカード挿入時の設定

自宅や会社からは Ehernet を使ってルータ経由でインターネットに接続しているので、ネットワークカードが差し込まれたときにも wwwoffle のモードを変更しなければいけません。

FreeBSD 3.4-RELEASE & PAO では /etc/pccard.conf から呼び出される /etc/pccard_ether がネットワークカード挿入時の初期設定をしています。今回の場合はこのファイルを編集して、ファイル末尾にモード切替用のコマンドを埋め込んでしまいましょう。(もっといい方法あるのかなぁ)

# vi /etc/pccard_ether
    fi
    if [ -x /usr/local/bin/wwwoffle ]; then
        /usr.local/bin/wwwoffle -on
        /usr.local/bin/wwwoffle -fetch
    fi
fi

ネットワークカード取出時の設定

同じように、ネットワークカードを外したときにもモードを切り替えるようにしておきましょう。

取出し時のスクリプトは /etc/pccard_ether_remove です。

# vi /etc/pccard_ether_remove
    fi
    if [ -x /usr/local/bin/wwwoffle ]; then
        /usr.local/bin/wwwoffle -off
    fi
fi

設定ページの日本語化

http://localhost:8080/ から参照できる WWWOFFLE の設定ウェブページは本来英語です。これを、総てではありませんが Toshihiko ARAI さんが日本語化してくださっています。感謝しつつ使わせていただきましょう。

日本語翻訳された html ファイルは 末尾参考文献にもある WWWOFFLE を FreeBSD にインストール で公開されています。

オリジナルの退避

まずは、今あるオリジナルを退避させておきます。

# mv /var/spool/wwwoffle/html/Welcome.html /var/spool/wwwoffle/html/Welcome.html.orig
# mv /var/spool/wwwoffle/html/messages /var/spool/wwwoffle/html/messages.orig

インストール

取得方法はウェブブラウザからでも何でもかまいません、ここでは fetch コマンドを使って取得します。

Welcome.html と messages.tar.gz を展開したものを、/var/spool/wwwoffle/html/ に置くだけです。

# cd /var/spool/wwwoffle/html/
# fetch http://www.linkclub.or.jp/%7Eclover/wwwoffle/Welcome.html
# fetch http://www.linkclub.or.jp/%7Eclover/wwwoffle/messages.tar.gz
# tar zxvf messages.tar.gz

これで設定ページが日本語化されました。

使い方

キャッシュ

ウェブブラウザのプロキシ設定をしておけば、オンラインモードで閲覧したページはキャッシュに保存され、オフラインモードでキャッシュに溜まっているページを閲覧することが出来ます。

キャッシュに貯めておきたいページは、一時的なものなら 設定ページの /refresh-options/。常に最新のものをキャッシュしておきたい場合には /monitor-options/ のページで登録しておけば、次回の取得時に自動的に取得してくれます。

今すぐ取得したい場合には、設定ページの /control/ から fetch のボタンを押すとすぐに取得が始まります。

簡易ウェブサーバ

WWWOFFLE は簡易ウェブサーバーにもなっていて、ローカルの html ドキュメントを読むのに便利です。たとえば FreeBSD Handbook の場合ならば

# ln -s /usr/share/doc/ja/books/handbook /var/spool/wwwoffle/html/local/handbook

としておくと、http://localhost:8080/local/handbook/ で読めるようになります。

まー、ファイル直接指定でもいいんですが、場所を全部覚えてられないので…。

参考文献

  1. /usr/local/share/doc/wwwoffle/*
  2. The WWWOFFLE Homepage
  3. WWWOFFLE を FreeBSD にインストール

注釈

※1 オフラインモード
とはいっても、フレッツ ISDN を使っているなら Squid の方が便利です。
使ってないからよく知らないけど、Windows にある「オフライン Web 参照」とかいう機能と同等になるのかな。
でも、Windows 向けにも移植されてるみたいだから、Microsoft の奴よりも高機能 (もしくは軽い) ってことだとおもう。
※2 ウェブのローカルコピー
モニターリストに登録しておけば、WWWOFFLE だけで最新のページが常にキャッシュされるように出来ます。
ついでに、wwwoffle は簡易ウェブサーバにもなっていて、/var/spool/wwwoffle/html/local/ 以下に html ファイルを置いておくと、http://localhost:8080/local/ から参照できる。
CGI とかは使えないけど、ローカルコピー置いておくにはちょうどいいかも。
※3 ウェルカムページ
ここから、各種設定ページや wwwoffle のコントロールを行えるページに行けたりします。
※4 ウェブブラウザのディスクキャッシュ
メモリーキャッシュはあってもいいとしても、ローカルでプロキシサーバが動いてるんだから、ディスクキャッシュはいらないよね?