#!/usr/local/bin/perl # EasyBBS CGI for BEKKOAME CUBE. Ver.1.00 # Created by S.Z. # Since: 98.11.19 # Last modify: 98.11.26 # ----------------------環境設定部分----------------------- # あなたのCUBEのCGIサーバに合わせて変更して下さい。 $server = 'cgi1'; $login = 'c00000'; # メッセージボードのタイトル $title = 'Easy BBS for BEKKOAME'; # 画像データ配置URLの指定 $image_url = 'http://www.bekkoame.ne.jp/etc/bekkoame.4.gif'; # --------------------------------------------------------- # 最大メッセージ数 $articles = 10; $cgi_url = "http://$server.bekkoame.ne.jp/cgi-bin/user/$login/easybbs.cgi"; $data_file = "/$login/easybbs.dat"; $lock_file = "$data_file.lock"; require '/usr/libperl/jcode.pl'; require '/usr/libperl/cgi-lib.pl'; &ReadParse; $action = $in{'ACTION'}; if($action eq 'POST'){ &PostMessage; }elsif($action eq 'DELETE'){ &DeleteMessage; } &PrintMessages; exit; sub PrintMessages { &PrintHead; print "$num\n"; if(open(DATA,"$data_file")){ $dummy = ; while(){ ($number,$date,$name,$subject,$email,$url,$passwd,$ipaddr,$message)=split(/,/); $message =~ s/%2C/,/g; if($email ne ""){ $name = "$name"; } if($url ne ""){ $url = "$url"; } print < [ID:$number] $date Name: $name URL: $url DEL? Subject: $subject $message
END_MESSAGE } close(DATA); } &PrintTail; exit; } sub PostMessage { $date = localtime(); $name = $in{'NAME'}; $subject = $in{'SUBJECT'}; $email = $in{'EMAIL'}; $url = $in{'URL'}; $pass = $in{'PASSWD'}; $message = $in{'MESSAGE'}; $ipaddr = $ENV{'REMOTE_ADDR'}; if($name eq ""){ &Error("NAME項目は必須です"); } if($message eq ""){ &Error("メッセージが書かれていません"); } $name =~ s/,/%2C/g; &jcode'convert(*name,'sjis'); $subject =~ s/,/%2C/g; &jcode'convert(*subject, 'sjis'); $email =~ s/,/%2C/g; $url =~ s/,/%2C/g; $pass =~ s/,/%2C/g; $message =~ s/,/%2C/g; $message =~ s//>/g; $message =~ s/\r/
/g; $message =~ s/\n/
/g; &jcode'convert(*message,'sjis'); RETRY: if(open(LOCK,"$lock_file")){ close(LOCK); sleep(1); goto RETRY; } if(open(LOCK,">$lock_file")){ print LOCK "locked by $name"; close(LOCK); }else{ sleep(1); goto RETRY; } if(open(DATA, "$data_file")){ $count = ; chop($count); if($count == $articles){ $dummy = ; }else{ $count++; } if(open(TMP,">$data_file.tmp")){ print TMP "$count\n"; while(){ print TMP "$_"; } print TMP "$$,$date,$name,$subject,$email,$url,$pass,$ipaddr,$message\n"; close(TMP); } close(DATA); unlink("$data_file"); rename("$data_file.tmp", "$data_file"); }else{ $count = 1; if(open(TMP, ">$data_file")){ print TMP "$count\n"; print TMP "$$,$date,$name,$subject,$email,$url,$pass,$ipaddr,$message\n"; close(TMP); } } unlink("$lock_file"); &PrintPostOK; } sub DeleteMessage { $passwd = $in{'DELPASSWD'}; $num = $in{'NUMBER'}; RETRY2: if(open(LOCK,"$lock_file")){ close(LOCK); sleep(1); goto RETRY2; } if(open(LOCK,">$lock_file")){ print LOCK "locked by $name"; close(LOCK); }else{ sleep(1); goto RETRY2; } if(open(DATA, "$data_file")){ $count = ; chop($count); $count --; if(open(TMP, ">$data_file.tmp")){ print TMP "$count\n"; $flag = "NG"; while(){ ($seq,$date,$name,$subject,$email,$url,$pwd,$ipaddr,$message)=split(/,/); if(($seq ne $num)||($passwd ne $pwd)){ print TMP "$_"; }else{ $flag = "OK"; } } close(TMP); }else{ unlink("$lock_file"); &Error("テンポラリファイルが作成できません"); } close(DATA); if($flag eq "OK"){ unlink("$data_file"); rename("$data_file.tmp", "$data_file"); }else{ unlink("$data_file.tmp"); unlink("$lock_file"); &Error("削除できませんでした $flag"); } }else{ unlink("$lock_file"); &Error("投稿データがないので削除できませんでした"); } unlink("$lock_file"); &PrintPostOK; exit; } # 投稿が正常に完了した時に表示するHTMLです。END_POSTOK; ->END_POSTOK間を # 編集することができます。 # "$cgi_url"は CGIスクリプトのURL, "$image_url"は、背景画像のURLです。 sub PrintPostOK { print "Content-type: text/html\n\n"; print <投稿受け付け完了

投稿受け付け完了

ただいまの投稿は正常に受け付けられました。

掲示板に戻る


Easy BBS Rel.1.0/Copyright 1998 BEKKOAME//INTERNET, INC. END_POSTOK exit; } # 記事の削除が完了した時に表示するHTMLです。END_DELETEOK;<->END_DELETEOK間を # 編集することができます。 # "$cgi_url"は CGIスクリプトのURL, "$image_url"は、背景画像のURLです。 sub PrintDeleteOK { print "Content-type: text/html\n\n"; print <削除完了

削除完了

指定の記事は正常に削除されました。

掲示板に戻る


Easy BBS Rel.1.0/Copyright 1998 BEKKOAME//INTERNET, INC. END_DELETEOK exit; } # エラーが発生した時に表示されます。END_ERROR; <-->END_ERROR 間を # 編集して使用することができます。 # "$error"は、エラーの内容が入っています。 sub Error { local($error) = @_; print "Content-type: text/html\n\n"; print <エラー

エラー

エラーが発生しました。

「$error」

掲示板に戻る


Easy BBS Rel.1.0/Copyright 1998 BEKKOAME//INTERNET, INC. END_ERROR exit; } # 掲示板のページの上の部分を表示します。基本的に、
を変更しなければ # 自由にデザインし直すことができます。 sub PrintHead { print <EASY BBS for BEKKOAME

$title


END_HEAD } # 掲示板のページの下の部分を表示します。基本的に、,などの # 内容を変更しなければ、自由にデザインし直すことができます。 sub PrintTail { print <削除パスワード





名前 必須項目
題名
メール
URL
削除パスワード 削除する際に必要となる。省略すると自分では削除できない
Your messages


Easy BBS Rel.1.0/Copyright 1998 BEKKOAME//INTERNET, INC. END_TAIL }