#!/usr/bin/perl $\ = "\n"; #平成18年2月23日(木)版 # #入力を整理。なければショートカットして表示へいくす。 #each bbs rev allを統合する require './bbssub.pl'; $flag = &blacklist; if($flag == 1){ &i_love_you; exit; } 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); } $arg{name} =~ s/%(..)/pack("C",hex($1))/eg ; $arg{text} =~ s/%(..)/pack("C",hex($1))/eg ; $name = $arg{name}; $val = $arg{text}; # #SJIS,JIS,EUC -> SJIS use Jcode ; foreach("name","text"){ $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 if($arg{type} ne "ari"){ $arg{$_} =~ s/&/&/g; $arg{$_} =~ s/\"/"/g; $arg{$_} =~ s//>/g; } } } } ########################################################### ######最新ログナンバーを取得。上位15件を表示する準備。##### ########################################################### #!/usr/bin/perl opendir DIR ,"."; @dir = readdir DIR ; @list = grep {/^[0-9]+.log$/} @dir; @list = sort @list; $big = pop @list; $big =~ s/^(....).*/\1/; $big = $big-0; ################################################################## #typeがallだったら、いっぺんに全部みせる。jskyだったら1記事ずつ。# #その他は15記事ずつ。 ########################################## ################################################################## if($arg{type} eq "all"){ $turn=$big; }elsif($arg{type} eq "jsky"){ $turn = 1; }else{ $turn=15; } ############################################### #typeがjskyなら小さいフォームでメソッドはget、# #その他は大きいフォームでメソッドはputにする。# ############################################### if($arg{type} eq "jsky"){ $formsize ="rows=\"3\" cols=\"20\" "; $method = "get"; $hidden = ""; }else{ $formsize ="rows=\"10\" cols=\"76\""; $method = "post"; } ################################ #次のページと前のページの指定。# ################################ $page = $arg{page}; if($page < 0){ $page = 0; } $prevpage = $page + $turn; if($big - $page < $turn){ $page = $big - $turn; $prevpage = $page ; } $nextpage = $page - $turn; if($page < 1){ $nextpage = 0; } ########################################################## #メッセージを残す。#つきは過去の遺物とデバッグ用。######## ########################################################## $\ = "\n"; $date = localtime; $_ = $arg{text}; if ( $_ ne ""){ $big++ ; $log = sprintf("%04d.log",$big); open( LOG ,">".$log); # print LOG ' '; print LOG 'おなまえ
',$arg{name}; print LOG '--------'; print LOG 'メッセージ
',$_; print LOG '
日付',$date; close(LOG); open( LOG2 ,">>secret.log"); print LOG2 ' '; print LOG2 "name=$arg{name} IPadress_port=$ENV{REMOTE_ADDR}:$ENV{REMOTE_PORT} browser_and_os= $ENV{HTTP_USER_AGENT} proxy= $ENV{HTTP_X_FORWARDED_FOR} date=$date"; close(LOG2); $\ = "\n"; } ##################### #ああミーハー色替エ## ##################### $c = int(rand(5)); if($c == 0){ $color = "#ffffcc"; }elsif($c == 1){ $color = "#ffccff"; }elsif($c == 2){ $color = "#ccffff"; }elsif($c == 3){ $color = "#ffffff"; }elsif($c == 4){ $color = "#ffff66"; }else{ $color = "#ffcc33"; } ############# #タイトル決定。 ############# if($arg{type} eq "ari"){ $subtitle = "ありあり版"; } elsif($arg{type} eq "rev"){ $subtitle = "昇順版"; } elsif($arg{type} eq "all"){ $subtitle = "全部いっぺん版"; } elsif($arg{type} eq "jsky"){ $subtitle = "jsky版"; } else{ $subtitle = "ノーマル版"; } ############ #出力する。# ############ print < はげましのお声、ないしは罵詈雑言$subtitle

はげましのお声、ないしは罵詈雑言$subtitle

御芳名


おことば

準備はいいですね $hidden


END $big = $big - $page ; if($arg{type} eq "rev"){ $startnum = $big-$turn; print "昇順掲示板 from $startnum to $big"; for($i = $big-$turn ;$i <= $big ; $i++){ print "

"; print $i; print "

"; $mes = ""; $log = sprintf("%04d.log",$i); open(LOG,$log); while(){ $mes = $mes.$_; } close(LOG); $_ = $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 "
"; } }else{ for( $i = $big ; $i > $big-$turn ; $i--){ print "

"; print $i; print "

"; $mes = ""; $log = sprintf("%04d.log",$i); open(LOG,$log); while(){ $mes = $mes.$_; } close(LOG); $_ = $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 "
"; } } if($arg{type} ne "all"){ print <より古い $turn メッセージを読む。 PRE_NEXT } print <[Home] [目次] END2