# vim: tw=72 ts=2 sw=2 et:
= blazer-ja-proxy README
blazer-ja-proxyは、Palmに添付されているものように、一部の文字コードにし
か対応していないWWWブラウザで、日本語のサイトを閲覧するためのプロクシサー
バーです。

((<URL:http://palm-ja-proxy.sourceforge.jp/>))に最新の情報があります。

== 動作に必要な環境
プロクシサーバーを動作させるマシンには、1.8.4以上のRuby、お使いのPalmか
ら到達可能なネットワーク環境、目的のWWWを閲覧可能なネットワーク環境が必
要です。

== インストール方法

サーバーの動作には、プログラムファイル bin/blazer-ja-proxy と設定ファイ
ルです。設定ファイルについては次項を読んでください。

インストールするには、コマンドラインで以下のようにタイプしてください。
UNIX系のOSではおそらくroot権限が必要になります。
  # ruby setup.rb

インストール先を変更したりすることもできます。その場合は 
  $ ruby setup.rb --help
を実行してみてください。

== 設定方法
-cオプションが指定されていない場合、プロクシサーバーは下記の順序で設定フ
ァイルを探します。
(1) /etc/blazer-ja-proxy.conf
(2) ~/.blazer-ja-proxy.conf
(3) ./blazer-ja-proxy.conf
設定ファイルがみつからなかった場合はデフォルトの設定を使います。

-cオプションが指定されている場合には、オプションで指定された設定ファイル
を使います。設定ファイルが読めなかった場合にはエラー終了します。

設定ファイルは、
* 各行に一項目を
* 項目名と値を : で区切って
書きます。項目名の後に何も書かなかった場合には、その設定は nil (値無し)
という意味になります。

設定ファイルで設定できるのは下記の項目です。

: bind address
  このサーバが待ち受けるIPアドレスまたはホスト名です。設定されていない場
  合は自ホスト名が使われます。
: bind port
  このサーバが待ち受けるポート番号です。設定されていない場合は8080番にな
  ります。
: proxy user
  このプロクシを使うことができるユーザー名とパスワードです。ユーザー名と
  パスワードを「:」で区切って一行に一組ずつ書いてください。何行でも指定
  できます。複数行の指定があった場合には、指定されたどのユーザーもサーバ
  を使うことができます。パスワードは、例えばRubyを使って下記のように
  cryptしてください。「パスワードの文字列」は使うパスワードに置き換えて
  ください。パスワードが空白の場合にはそのユーザーはパスワード無しでサー
  バを使えますが、お薦めしません。

 salt = [rand(64),rand(64)].pack("C*").tr("\x00-\x3f","A-Za-z0-9./")
 puts "パスワードの文字列".crypt(salt)

: gzip
  このプロクシからクライアントまで送るデータをgzipするか設定します。:の
  後に空白以外の文字を書いた場合、gzipします。また、設定されていない場合
  にもgzipします。
: devel log
  開発用のログファイルのパスを設定します。サーバーが起動されるたびに上書
  きされます。通信内容が記録されますので取り扱いには注意が必要です。デバ
  グなどに活用してください。nilあるいは設定されていないなら開発用のログ
  は生成されません。
: server log
  サーバーのログファイルのパス。システムのデーモンとして動かす場合には絶
  対パスで指定するべきでしょう。nilならサーバーのログは生成されません。
: server log depth
  サーバーのログファイルにどの程度の情報を書き出すか指定します。fatal、
  error、warn、info、あるいは、debugから選んでください。
: browser charset
  プロクシを通した結果の文字コードを指定します。euc、sjis、jis、utf8、あ
  るいは、utf16から選んでください。
: proxy via

== 使い方
上記の設定が済んだら、サーバーにするマシンで、
  blazer-ja-proxy
などとタイプしてサーバーを起動させてください。いまのところ、デーモンとし
ての動作はサポートしていません。(近い将来にサポートするつもりです。)
  blazer-ja-proxy > proxy.log 2>&1 &
などとしてログをとりながらバックグラウンドで動作させることをお勧めします。

BlazerなどのWWWブラウザでプロクシを設定して、WWWサイトを閲覧してください。
プロクシにホスト名を設定してうまくいかない場合には、IPアドレスを試してみ
てください。

検索サイトなどで検索語句が文字化けしてしまう場合は、検索語句の入力のため
のURLから閲覧しなおしてください。過去に訪れたサイトの文字コードを覚えて
いて、検索語句の文字コードをそれに合わせて変換していますので、二度目から
はうまく検索できるはずです。

Blazerではhttpsのサイトの閲覧にもproxyを使うようです。Blazerとプロクシサ
ーバの間の通信内容は第三者に知れてしまいますので、httpsのサイトを閲覧す
る際にはプロクシの設定をはずしてください。また、blazer-ja-proxy が作成す
るログファイルに第三者に知られてはいけない情報が書き込まれてしまう可能性
があります。第三者に見られないように注意してください。

=== コマンドラインオプション

: (({-v}))
  サーバの状況を、標準エラー出力あるいはsyslogに、より詳しく報告します。
: (({-c <パス>}))
  設定ファイルのパスを指定します。指定した以外のパスからは読みこみません。
: (({-d}))
  デバグモードで起動する。カレントディレクトリにファイルを作り、変換前後
  のHTTPヘッダや内容の一部を記録します。
  この機能はまだ実装されていません。
: (({-b}))
  デーモンとして起動する。バックグラウンドにプロキシサーバを起動して、コ
  マンド自体は終了します。標準エラー出力の内容はsyslogを使って記録されま
  す。
  この機能はまだ実装されていません。

== 動作の確認されている機能
作者は下記のようなことができることを確認しているハズです。

* PalmTX (PalmOS 5.4、Blazer 4.3)にCJKOS 4.621とPOBox 1.7.2を入れて
  * Shift-JIS、EUC-JP、UTF-8、ISO-2022-JPの日本語のページを閲覧する。例えば、
    * http://news.google.co.jp/ を日本語で閲覧する
    * http://www.yahoo.co.jp/ を閲覧する
    * http://www.st.ryukoku.ac.jp/~kjm/security/memo/ を閲覧する
  * Shift-JIS、EUC-JP、UTF-8の日本語に文字列を送る。例えば、
    * http://www.google.co.jp/ で日本語の語句を検索する
    * http://mail.google.com/ から日本語のメールを送る
      - textareaではPOBoxが起動しますが、input boxでは起動しません。まず
      はWなどを沢山タイプして編集窓を表示させるとPOBoxが使えます。

== TODO
=== 0.4.0
* コマンドラインオプション -b と -d の実装
* syslogへの記録の設定

=== 0.5.0
* deflateの処理 - http://wwwa.accuweather.com/index-forecast.asp を読むと
  * inflateしようとして351行付近でZlib::DataError: incorrect header check
    となるか、あるいは、
  * resucueするとデバイスが再起動される

=== 0.6.0
* 画像データの圧縮

=== 0.7.0
* 変換結果のキャッシュ
  * キャッシュの有効性は年齢で決めればいいか？
  * クライアントのシグネチャでキャッシュを分ける必要はあるか？
    QUERY_STRINGのないGETリクエストだけをキャッシュすることにするか？
    cookieの内容に依っても分けるべきか？
  * RFCを見るべきか？
    * if modified sinceは応答速度を下げるのであまりやりたくない

=== 1.0.0
* POP/SMTPのプロクシ

=== あとでやる
* MIMEのパート毎にエンコーディングの変換とヘッダの更新をするコードをまと
  める。現在はHTTPリクエストとmultipart内部の処理でコードが分かれてしま
  っている。

= ライセンス
Copyright (C) 2006 zunda <zunda at freeshell.org>, unless otherwise
stated.

This program, except for setup.rb, is free software; you can
redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; version 2
of the License.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the gpl.txt
for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA  02111-1307 USA


Code in Webrick::HTTPRequest#unparsed_uri= copied from
webrick/httprequest.rb,v 1.64 came with ruby 1.8.3 (2005-09-21):
Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou, and
Copyright (c) 2002 Internet Programming with Ruby writers.


setup.rb Copyright (C) 2000-2005 Minero Aoki

setup.rb is free software. You can distribute/modify this program under
the terms of the GNU LGPL, Lesser General Public License version 2.1.

