説明
プログラム djvuserve は DjVu 文書を配信する HTTP サーバ上で動作する CGI です。 このプログラムはバンドルド形式のマルチページ文書を動的に インダイレクト形式へ変換します。
DjVuServe を使用する
プログラム djvuserve は WEB サーバの CGI プログラムとして登録する必要があります。 これを行うにはいくつかの方法があります。たとえば、 Apache WEB サーバでは ScriptAlias ディレクティブを使用して CGI プログラムのディレクトリを定義します。 ファイル httpd.conf が以下のような内容だとします:- ScriptAlias /cgi-bin/ "/var/www/cgi-bin"
この場合、 以下のような内容の小さなシェルスクリプト /var/www/cgi-bin/djvuserve を作成するだけで CGI を使用することが出来ます:
-
#!/bin/sh
exec /full/path/to/djvuserve
以下の URL が大きなバンドルド形式のマルチページ DjVu 文書 だとします:
- http://server/dir/doc.djvu
CGI プログラム djvuserve は以下の URL でこの文書をインダイレクト形式のマルチページ DjVu 文書 としてアクセスすることを可能にします:
- http://server/cgi-bin/djvuserve/dir/doc.djvu/index.djvu
インダイレクト形式のマルチページ DjVu 文書を使用することで、 ネットワーク上を不必要なページデータを転送することなく 効果的に巨大な文書を閲覧することが出来ます。 詳細は djvu(1) をご覧ください。
DjVuServe をハンドラとして使用する
Apache WEB サーバは全ての DjVu 文書用に djvuserve を自動的に実行させることが出来ます。 これには、以下のディレクティブを Apache の設定ファイル、 またはファイル .htaccess で使用します:
-
Action djvu-server /cgi-bin/djvuserve/
AddHandler djvu-server .djvu
すると Apache はプログラム djvuserve を全ての DjVu ファイルを配信するために実行します。 DjVu ファイルの URL を指定すると、バンドルド形式のマルチページ文書が インダイレクト形式の文書に動的に変換される点以外は 指定された DjVu ファイルを通常のように配信します。 DjVu ファイルが要求されるたびに djvuserve を実行するためサーバには一定の負荷がかかります。
技術詳細
プログラム djvuserve は、拡張した URL を使用して、バンドルド形式のマルチページ DjVu 文書の様々なコンポーネントに直接 アクセスする方法を提供します。 たとえば、1 ページ目のコンポーネントファイルが p0001.djvu という名前だとすると、以下の URL はこのページに直接アクセスすることが出来ます:
- http://server/cgi-bin/djvuserve/dir/doc.djvu/p0001.djvu
しかし、各ページへアクセスするには以下の URL のように、 nsdejavu(1) で使用出来る CGI スタイルの引数を使用するほうが良いでしょう。
- http://server/cgi-bin/djvuserve/dir/doc.djvu?djvuopts&page=12
特別なコンポーネントファイル名 index.djvu は対応するインダイレクト形式のマルチページ文書のインデックスへの要求 として処理されます。実際、 djvuserve を使用してバンドルド形式の文書にアクセスすると、 ブラウザは以下の URL をリダイレクトします:
- http://server/cgi-bin/djvuserve/dir/doc.djvu/index.djvu
そして、バンドルド形式のファイルがインダイレクト形式の文書の様々な コンポーネントファイルを直接保持しているかのように振舞います。
アクセスコントロール
プログラム djvuserve は多くの CGI プログラムのように、 WEB サーバに確立された様々なアクセス保護をバイパスします。 たとえば WEB サイトにパスワードで保護された DjVu ファイルがあったとします。 プログラム djvuserve はこのパスワード保護について知る由もありませんし、指定された有効な URL にある DjVu ファイルはそのまま配信してしまいます。
djvuserve のアクセスコントロールは、 WEB サーバはプログラム djvuserve を常にシェルスクリプト /var/www/cgi-bin/djvuserve を介して実行するということを理解していれば実装することが出来ます。
このスクリプトは環境変数 PATH_TRANSLATED に指定されているファイル名に基づいて実際のプログラム djvuserve の実行を決定します。
このように様々な DjVu ファイルに対してアクセスを設定する スクリプトファイルは複数配置することが出来ます。こうしたスクリプトは WEB サーバの通常の方法でパスワード保護することが出来ます。
既知の問題点
相対 URL で指定されたハイパーリンクは djvuserve では動作しません。 通常このような URL は DjVu 文書の URL に対する相対パスですが、 djvuserve は URL http://server/dir/doc.djvu を URL http://server/cgi-bin/djvuserve/dir/doc.djvu/index.djvu というパスへ変換するため、ハイパーリンクなどのコンポーネントは URL が変わってしまいます。
クレジット
このプログラムは Leon Bottou <[email protected]> が開発しました。 この man page は Nobchika Morimoto <[email protected]> が翻訳しました。