2007年7月12日木曜日

[TX] CJKOS+NetFront用Delegate

例のNetFrontがかなり使い勝手がいい!普通にshift_jis,euc-jp,utf-8の表示ができる。

ただ、残念なのは、携帯電話向けのページなどで半角カタカナが多いこと・・・表示文字数を増やすためとはいえ、インターネットに半角カナを流すとは何事じゃ!とはいえ、今半角カナが表示できない環境は殆んどなから仕方ないか・・・

と言うことで、文字コードはそのままで、半角カナを全角カナにするだけのプロキシをDelegateで立ててみた!

まぁ、セットアップ方法などは、手前味噌ですが・・・ここら辺を・・・

で、delegateの起動スクリプトはこんな感じ・・・


if [ -f /usr/sbin/delegated ]
then
/usr/sbin/delegated -P18080 -r -S \
SERVER=http \
CHARCODE=guess \
OWNER=delegate/delegate \
DGROOT=/var/spool/delegate \
CACHE="do" \
EXPIRE=2d \
CRON="5 5 * * * -expire 3" \
FTOCL=/var/spool/delegate/netfront.cfi \
HTTPCONF=acc-encoding: -thrugzip \
HTTPCONF=gen-encoding:gzip \
RELIABLE="-A/パスワード" \
STLS="mitm" \
RELAY=vhost,proxy \
AUTH=viagen:- \
> /var/spool/delegate/start.msg 2>&1
fi


キモは


RELIABLE="-A/パスワード" \


ここです。制限かけないとオープンになるし、といって、IPアドレスで制限かけると使える所が限られる。

そこで、"-A/"を使う。これユーザエージェントで制限をかけるもので、NetFrontの場合UAを好きな文字列に偽装できる。なので、個々にパスワード的な文字列を埋め込めば、制限がかかるし、場所によって接続できないこともない。

で、/var/spool/delegate/netfront.cfiの中身だが、


#!cfi

Content-Type: SHIFT
++
Content-Type: Shift
++
Content-Type: shift
Body-Filter: /usr/bin/nkf -Sxe | /usr/bin/nkf -s
--
Content-Type: euc
++
Content-Type: EUC
++
Content-Type: Euc
Body-Filter: /usr/bin/nkf -Ee
--
Content-Type: utf
++
Content-Type: UTF
++
Content-Type: Utf
Body-Filter: /usr/bin/nkf -Ww
--
Content-Type: iso-2022-jp
++
Content-Type: ISO-2022-JP
Body-Filter: /usr/bin/nkf -Jj
--
Content-Type: text/html
Output/Content-Type: text/html; charset=Shift_JIS
Body-Filter: /usr/bin/nkf -s
--
Content-Type: application/xhtml+xml
Output/Content-Type: application/xhtml+xml; charset=Shift_JIS
Body-Filter: /usr/bin/nkf -s


こんな感じ。用はContent-Typeの文字コードをみて、それに合わせて、nkfで変換かけてる。nkfは変換時に半角カナ→全角カナ変換をデフォルトでやってくれる。
最後の2つは保険みたいなもの。万一文字コード指定が無かったら、全部Shift_JISで出力。これで化けたらしようがない。一応、今のところ。これで一度も化けてない。

禁断ROM+CJKOSを使ってる人なんて殆んどいないし、その中でこのブログ見てくれてる人なんて数人いるかいないかだろうから、テスト的に使ってみたい人がいたら、コメントいただけたらメールでパスワード教えますよ。

0 件のコメント:

コメントを投稿