(Linux/CUI) lhttpzip

ソースコード
>> Download

言語: C
License: BSD-3
動作環境: Linux
概要
ZIP 内の HTML ファイルを、解凍することなく直接ブラウザで閲覧するためのローカル HTTP サーバです。
ZIP でまとめた HTML ファイルを閲覧したいけれど、解凍するのが面倒な時や、ちょっと内容を確認したい時などに。

ブラウザは任意のものを使ってください。
コマンドラインプログラムなので、端末上で実行して、ローカルサーバとして動作させます。

  • 一般的な ZIP ファイルのみ対応。
    (64bit ZIP や、暗号化、無圧縮/Deflate 以外の圧縮方法などには対応していません)
  • 日本語ファイル名などを含む場合でも表示できます。
    (UTF-8 以外の場合、-c オプションで文字エンコードを指定しないと文字化けします)
  • URL でファイルではなくディレクトリを指定した場合、そのディレクトリ下に index.html または index.htm がない場合はファイルのリストを表示します。
    (-I コマンドで常にファイルリストを表示できます)
仕組み
HTTP サーバとして起動したこのプログラムが、ブラウザとデータのやりとりをします。
ブラウザ側から要求されたファイルは、このプログラムが ZIP ファイル内から見つけて展開し、データをブラウザに渡します。
コンパイル
C コンパイラ、make、zlib の開発用ファイルが必要です。
コンパイラが GCC 以外の場合は、iconv も必要。

Debian/Ubuntu: gcc make zlib1g-dev

$ tar xf lhttpzip-1.0.0.tar.bz2
$ cd lhttpzip-1.0.0
$ ./configure
$ make
$ sudo make install

/usr/local/bin に、実行ファイル lhttpzip がコピーされます。
使い方
端末上で以下のコマンドを実行します。
閲覧したい ZIP ファイルのパスを引数として渡します。

$ lhttpzip <zip_filename>

正常にサーバとして起動した場合、プログラムはそのまま実行され続けます。
その状態で、ブラウザで以下の URL を開きます。

http://localhost:8080/
または
http://127.0.0.1:8080/

ZIP 内のルートディレクトリに index.html または index.htm があれば、そのファイルが表示されます。
ない場合はファイルのリストが表示されます。

プログラムがサーバとして実行されている間のみ、閲覧できます。
プログラムを終了させると、ブラウザ上で閲覧できません。

プログラムを終了させるには、実行している端末上で Ctrl+C を押すか、kill コマンドでプロセスを終了させます。
オプション
  • -p, --port <番号>
    サーバのポート番号を指定します。デフォルトで 8080。

  • -c, --charset <文字エンコード名>
    ZIP 内のファイル名の文字エンコードを指定します。
    指定しなかった場合は、変換せずに UTF-8 として扱われます。
    (ZIP 内で明示的に UTF-8 で格納されている場合はそのまま UTF-8 とします)

    他の OS で作成されて、日本語名などが含まれた ZIP ファイルの場合に指定してください。
    Windows (日本語) で作成された場合は "CP932" または "Shift-JIS"。

    なお、文字エンコードを指定しなかった場合でも、ファイルリストで文字化けはしますが、閲覧自体は行えます。
    (Shift-JIS などの場合、2バイト目に 0x5c が来る文字がある場合は正しく扱えません)

    iconv 関数を使って変換しているので、指定可能なエンコード名は 'iconv --list' コマンドで確認できます。

  • -I, --no-index
    URL でディレクトリが指定された場合 (ファイル名を省略した場合)、通常は index.html または index.htm のファイルを探してそれを表示します。
    このオプションを付けると、それらのファイルを探さずに常にファイルリストを表示します。

  • -n, --no-cache
    ブラウザ側でファイルをキャッシュさせないようにします。

  • -v, --verbose
    ブラウザとのやりとりの情報 (HTTP ヘッダ) を標準出力に表示します。