#!/usr/local/bin/perl # # WebBOARD v10シリーズで webboard.idx を再生(できるであろう)CGI # # 指定番号を指定してリストさせても、丁度その番号からリストされない(ずれている?)場合や、 # webboard.idxが壊れてしまった場合に、メッセージからそのデータを探して、webboard.idxを # 再生するCGIです。 # # [手順] # 1. このセットのCGIが設置されている場所のサブディレクトリに /msg/ 等の作業ディレクトリが存在する構成で設置していることを確認。 # 2. このセットのCGIが設置されている場所にこのCGI(cr.cgi)を設置し、モードを755にする。 # 3. 同じ場所に webboard.bak という空のファイルを設置し、モードを666にする。 # 4. cr.cgiを実行すると、webboard.bakに記録される。 # 5. 現在のwebboard.idxをwebboard.idx.bakとして回避し、webboard.bakをwebboard.idxに名前変更する。 # 6. 掲示板を起動し、指定番号リストやその他の動作を確認する。 # 7. 万が一不審な場合は、回避しておいたwebboard.idxに戻す。 # 8. これを実行しただけでは、現システムに影響はありませんが、作業に不安のある方は実行を控えてください。 # 9. このCGIはシェル上で実行してもOK。(その方が理想)最後に ok. の表示が出ない場合は途中で止まったかもしれない。 # 0. 実行後はこのCGIをサーバ上から削除すること。 print "Content-type: text/html\n\n"; open(IN,"./number.dat"); $number = ; close(IN); chop($number) if $number =~ /\n/; open(OUT,"> ./webboard.bak"); print OUT "webboard v10 's index\n"; foreach $file (1000 .. $number) { if (-e "./msg/$file\.msg") { $target = "./msg/$file\.msg"; } else { $target = "./msg/$file\.bak"; } open(IN,$target); @lines = ; close(IN); $lines[0] =~ s/ //g; $lines[0] =~ s///g; $lines[0] =~ s/<\/b>//g; $lines[0] =~ s/<\/font>//g; $lines[0] =~ s///g; $lines[0] =~ s/
//g; $lines[0] =~ s///g; $lines[0] =~ s/$file//g; $lines[0] =~ s/\n//g; foreach $line (@lines) { if ($line =~ /投稿日:(.*)年(.*)月(.*)日 (.*)時(.*)分(.*)秒
/) { $date = "$1/$2/$3/$4/$5/$6"; } if ($line =~ /投稿者:(.*)
/) { $name = $1; } if ($line =~ /.*:(.*)<\/a>
/) { $email = $1; } if ($line =~ /.*:(.*)<\/i>
/) { $keyword = $1; } } print OUT "$date\,$name\,$email\,$file\,$keyword\,$lines[0]\,\n"; print "$file
\n"; } close(OUT); print "1000\-$number ok.\n"; exit;