#!/usr/bin/perl #平成15年3月18日(火) 極悪バージョンを設置。 #平成15年3月19日(水) ご芳名を拡大。 #平成15年3月25日(火) プロキシ表示を追加 $\ = "\n"; #入力を整理。なければショートカットして表示へいくす。 unless($ENV{QUERY_STRING} eq ""){ @arg1 = split /&/,$ENV{QUERY_STRING}; foreach(@arg1){ ($key,$val) = split /=/; $arg{$key} = $val; } } $val = ""; unless($ENV{CONTENT_LENGTH}== 0){ read(STDIN,$_,$ENV{CONTENT_LENGTH}) ; @argv = split /&/; foreach(@argv){ ($key,$val) = split /=/; $arg{$key} = $val; } unless($arg{text} eq ""){ # リロード対策。 $chk =""; open(CHK,"chk"); while(){ chop; $chk = $chk.$_ ; } close(CHK); $ref = $arg{name}.$arg{text}; chop $ref ; if( $chk eq $ref){ $arg{name} = ""; $arg{text} = ""; } else{ open(CHK,">chk"); print CHK $ref ; close(CHK); } }} #かたっぱしからSJISにする。 use Jcode; foreach(keys %arg){ $arg{$_} =~ s/%(..)/pack("C",hex($1))/eg ; $arg{$_} = $arg{$_}; $arg{$_} = jcode($arg{$_})->h2z->sjis; $arg{$_} =~ s///g; $arg{$_} =~ s/\+/ /g; $arg{$_} =~ s/\t//g; $arg{$_} =~ s/\r\n/\n/g; # Win→Unix $arg{$_} =~ s/\r/\n/g; # Mac→Unix $arg{$_} =~ s/&/&/g; $arg{$_} =~ s/"/"/g; $arg{$_} =~ s//>/g; } ########################################################### #最新ログナンバーを取得。上位15件を表示する準備。 ########################################################### #!/usr/bin/perl opendir DIR ,"."; @list = readdir DIR ; @list = grep {/^[0-9]+.log/} @list; @list = sort @list; $big = pop @list; $big =~ s/^(....).*/$1/; $big = $big-0; $page = $arg{page}+0; # # 前のページだの次のページだのページ機能のためのあれこれ # if($page < 0){ $page = 0; } $prevpage = $page + 15; if($big - $page < 1){ $page = $big - 1; $prevpage = $page ; } $nextpage = $page - 15; if($page < 1){ $nextpage = 0; } ########################################################## #メッセージを残す。#つきは過去の遺物とデバッグ用。 ########################################################## $\ = "\n"; #$mes = ""; $date = localtime; $_ = $arg{text}; if ( $_ ne ""){ $big++ ; $log = sprintf("%04d.log",$big); open( LOG ,">".$log); print LOG ' '; print LOG 'おなまえ
',$arg{name}; print LOG "IPアドレスとポート= $ENV{REMOTE_ADDR}:$ENV{REMOTE_PORT}"; if($arg{address} ne $ENV{REMOTE_ADDR}){ print LOG "IPアドレス(自称)= $arg{address}";} print LOG "ブラウザとかOSとか= $ENV{HTTP_USER_AGENT}"; if($arg{ua} ne $ENV{HTTP_USER_AGENT}){ print LOG "ブラウザとかOSとか(自称)= $arg{ua}";} print LOG "プロキシの送り先= $ENV{HTTP_X_FORWARDED_FOR}"; if($arg{proxy} ne $ENV{HTTP_X_FORWARDED_FOR}){ print LOG "プロキシの送り先(自称)= $arg{proxy}";} print LOG '--------'; print LOG 'メッセージ
',$_; print LOG '
日付',$date; close(LOG); } $\ = "\n"; # #出力する。 # print < evil#003 極悪けいじばん

evil#003 極悪けいじばん

極悪の基本に「かんじわる」というのがあり、これみよがしに閲覧者のIPアドレスだのユーザエージェントあるいはブラウザだのを誇示するのだそうである。CGIだけを使ってやる初歩的なものなら環境変数の REMOTE_PORT だの REMOTE_ADDR だのを出すだけなので簡単であるが、使用機器だの、プロキシの向こうの経路だのを出すとなると一旦javaとかなんとかでプログラムを送りこんで内部情報をひきださなければならない。こうなるちょっと面倒そうである。というわけで初歩的なやつでお茶にごしである。ちゃんとプロキシが効いているかどうかチェックするのにはかえって便利かもしれない。

そーすはいつものところね。こんなもの使いたいひとはめったにいないだろうけれど。


御芳名

IPアドレス=

ブラウザとかOSとか=

プロキシの送付先(出るやつのみ)

おことば

準備はいいですね


END # print "big=",$big; $big = $big - $page ; #print "big=",$big; #print "page=",$page; #print "nextpage=",$nextpage; #print "prevpage=",$prevpage; for( $i = $big ; $i > $big-15 ; $i--){ print "

"; print $i; $mes = ""; $log = sprintf("%04d.log",$i); open(LOG,$log); while(){ $mes = $mes.$_; } close(LOG); #print


; $_ = $mes; s/@/(1)/g; s/A/(2)/g; s/B/(3)/g; s/C/(4)/g; s/D/(5)/g; s/E/(6)/g; s/F/(7)/g; s/G/(8)/g; s/H/(9)/g; s/I/(10)/g; s/J/(11)/g; s/K/(12)/g; s/L/(13)/g; s/M/(14)/g; s/N/(15)/g; s/O/(16)/g; s/P/(17)/g; s/Q/(18)/g; s/R/(19)/g; s/S/(20)/g; s/\n/
/g; print $_; print "
"; } print <もっと古いメッセージを読む。
[前へ] [次へ]
END2