2007-09-06 見積もり見積もり
見積もりまくり。
なかなかにめんどくさい作業です。
◆ [情報][ネタ] ToHeart2 AnotherDays 予約解禁は9月14日
あぁ、予約しようかなぁ……でも予約なしでも買えそうだしなぁ……(笑)
◆ [情報][CGI][(;´Д`)] SCRIPT_NAMEが壊れてる時がある
えぇ、なんというか、これにぶちあたりましたさ。
PATH_INFO部分に、スラッシュが複数連続ある時に、余計な文字がくっついてきて、普通はSCRIPT_NAMEは例えば/test.cgiとかなのに、/test.cgi/http:/とかが渡されてくるという妙ちくりんなバグ。どっかで文字のカウントを間違っているとしか思えない。
セキュリティホールにならなきゃ良いけど……(SCRIPT_NAMEに頼った動作をしているCGIは危険かも)
某所用にリダイレクタ(別のURLに飛ばすCGI。主にリファー消しに使っている)作っていた時に気づきました。
あと、PATH_INFOでは、%xxを勝手に元のバイナリ列に戻してくれるとか、//を/に変換するとかやっていたおかげで、wikipediaへのリンクがおかしくなってました。うーむ。
結局、
・PATH_INFOを使わず、REQUEST_URIからジャンプ先を取得
その際に
・SCRIPT_NAMEを使ってPATH_INFO相当を作らずに、SCRIPT_FILENAMEとDOCUMENT_ROOTから生成
という荒技でやりました。なんだかなぁ。
こんな感じのソースになってます。
# 1.
# $ENV{"PATH_INFO"}だと%xxが変換されて渡されるため、
# 文字コードが一致しない環境の場合化けるからREQUEST_URIから取得
# 2.
# $cgi_uri = $ENV{"SCRIPT_NAME"};で良いはずだが、
# ナゼか$cgi_uri/http: となる環境があるためSCRIPT_FILENAMEとDOCUMENT_ROOTから生成
$cgi_uri = substr($ENV{"SCRIPT_FILENAME"},length($ENV{"DOCUMENT_ROOT"}));
if (substr($ENV{"REQUEST_URI"},0,length($cgi_uri)+1) eq $cgi_uri . "/"){
$url = substr($ENV{"REQUEST_URI"},length($cgi_uri)+1);
# PATH_INFOではなくREQUEST_URIから取得するようにしたため不要
# if ($ENV{"QUERY_STRING"} ne ""){
# $url .= "?" . $ENV{"QUERY_STRING"};
# }
}else{
$url = "";
}
これで、http://(略)/redirect.cgi/http://www.google.co.jp/ とかいうリクエストに対して、$urlが正しくセットできるようになりました。ふぅ。
◆ [情報] 谷口ウイルスというのがあるそうで
wawawa~
つか
* Winny などにおける不正流通ゲーム (「うみねこのなく頃に」「東方風神録」「涼宮ハルヒの超乱闘」など) に添付されているらしい
* ruby で書かれているらしい
* バグっているらしい
* ひっかかった挙句、商用サポートに泣きつく人がいるらしい
バグについては、なにしろオープンソースなので、そのうち直ってしまうかも。
さすが谷口……(笑)
◆ [情報] ソフマップ秋葉原本館がオープン 他ソフマップ店舗もリニューアル
今度アキバに行った時に寄ってみる。
Last Update: 2007-09-07 02:15:02