#! /usr/local/bin/perl # #========================================================================================== # # 多機能(?)掲示板システム 『SSBoard』ver 1.2 : ログファイル変換スクリプト # # Copyright Shinobu Suzuki 1998. All rights reserved. #----------------------------------------------------------------------------------------- # HomePage : http://www.aikis.or.jp/~s-suzuki/cgilabo/ # E-mail : s-suzuki@aikis.or.jp #========================================================================================== # # 初期設定 # $version = '1.21'; # 本スクリプトのバージョン $bg_col = '#e0e0e0'; # 背景色 $title_col = '#000080'; # タイトルの色 $text_col = '#000000'; # テキストの色 $link_col = '#0000ff'; # リンクの色 $alink_col = '#ff0000'; # リンク中の色 $vlink_col = '#800080'; # 既リンクの色 #---------------------------------------------------------- # 変換するログファイルのデフォルト名 #---------------------------------------------------------- # $log_name = "ssboard.log"; #---------------------------------------------------------- # CERN HTTPDなどのサーバーの場合で、ファイル関係のエラーが # 出る場合、設置するディレクトリのフルパスを指定してみて下 # さい。なお、最後は / で終わること。 # $path = "/home/users/s-suzuki/public_html/bbs/"; #---------------------------------------------------------- # $path = ""; #---------------------------------------------------------- # 日本語コード変換ライブラリの指定 #---------------------------------------------------------- # require "$path"."jcode.pl"; #========================================================================================= # これより、処理の開始 #========================================================================================= &form; # フォームから入力されたデータを if ( $FORM{'filename'} eq "" ) { $FORM{'filename'} = "$log_name"; } $data_name = "$path"."$FORM{'filename'}"; if ( -e $data_name ) { &conv_data; } else { print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "SSBoard v$version\n"; print "\n\n"; print "\n\n"; print "SSBoard v$version:ログデータの変換
\n"; print "
エラー発生:$FORM{'filename'}が見つかりません。

\n\n"; print "\n"; print "\n"; exit; } #========================================================================================= # 処理はここまで #========================================================================================= sub conv_data { if( !open( DB, "$data_name" )) { print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "SSBoard v$version\n"; print "\n\n"; print "\n\n"; print "SSBoard v$version:ログデータの変換
\n"; print "
エラー発生:$FORM{'filename'}がオープンできません。

\n\n"; print "\n"; print "\n"; exit; } @lines = ; close(DB); foreach $line (@lines) { ($count,$date,$editpwd,$name,$email,$url,$value,$subject,$rhost) = split(/\,/,$line); if ( $rhost eq "" || $rhost eq "\n" ) { ($temp1, $host1) = split(//,$host1); push( @new, "$count,$date,$editpwd,$name,$email,$url,$temp1,$subject,$host2,\n" ); } else { push( @new, "$count,$date,$editpwd,$name,$email,$url,$value,$subject,$rhost\n" ); } } if( !open( DB, ">$data_name" )) { print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "SSBoard v$version\n"; print "\n\n"; print "\n\n"; print "SSBoard v$version:ログデータの変換
\n"; print "
エラー発生:$FORM{'filename'}がオープンできません。

\n\n"; print "\n"; print "\n"; exit; } else { print DB @new; close(DB); } print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "SSBoard v$version\n"; print "\n\n"; print "\n\n"; print "SSBoard v$version:ログデータの変換
\n"; print "
\n"; print "ログファイルの変換が終了しました。

\n\n"; print "\n"; print "\n"; exit; } #----------------------------------------------------------------- # フォーム投稿されたデータを解析し、配列にリストする #----------------------------------------------------------------- # sub form { if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } #-------------------------------------------------- # $bufferに格納されたFORM形式のデータを取り出す #-------------------------------------------------- @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; #-------------------------------------------------- # 記録するデータの半角カナを全角カナに変換する # これを利用するには、jcode.plのv2.0以降を使うこと #-------------------------------------------------- &jcode'h2z_sjis(*value); #-------------------------------------------------- # 記録するデータはsjisに統一する #-------------------------------------------------- &jcode'convert(*value,'sjis'); } }