--- /dev/null
+##########################################################################################
+#
+# ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
+#¡Êbbsx¥×¥é¥°¥¤¥ó¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¡Ë
+#
+##########################################################################################
+use strict;
+
+use plugin::bbsx::BBSXHandler;
+
+# plugin::bbsx::BBSXHandler¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤´¹¤¨
+package plugin::bbsx::BBSXHandler;
+
+sub do_action {\r
+ my $self = shift;\r
+ my $wiki = shift;\r
+ my $cgi = $wiki->get_CGI;\r
+\r
+ my $bbsname = $cgi->param("bbsname");\r
+ my $name = $cgi->param("name");\r
+ my $subject = $cgi->param("subject");\r
+ my $message = $cgi->param("message");\r
+ my $password = $cgi->param("password");\r
+ my $page = $cgi->param("page");\r
+ my $option = $cgi->param("option");\r
+ my $filename = $cgi->param("file");\r
+ my $uploadable = $cgi->param("uploadable");\r
+\r
+ if($name eq ""){\r
+ $name = "̵̾¤·¤µ¤ó";\r
+ } else {\r
+ # post_name¤È¤¤¤¦¥¡¼¤Ç¥¯¥Ã¥¡¼¤ò¥»¥Ã¥È¤¹¤ë\r
+ my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M');\r
+ print "Set-Cookie: ",$cookie->as_string,"\n";\r
+ }\r
+\r
+ if($subject eq ""){\r
+ $subject = "̵Âê";\r
+ }\r
+\r
+ if($bbsname eq ""){\r
+ return $wiki->error("¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹¡£");\r
+ }\r
+\r
+ if($uploadable eq 'yes'){\r
+ if($message eq "" and $filename eq ""){\r
+ return $wiki->error("ËÜʸ¤«ÅºÉÕ¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£");\r
+ }\r
+ } else {\r
+ if($message eq ""){\r
+ return $wiki->error("ËÜʸ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");\r
+ }\r
+ }\r
+\r
+ if($password eq ""){\r
+ return $wiki->error("ºï½ü¥¡¼¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");\r
+ }\r
+\r
+ my $pagename = $self->get_page_name($wiki,$bbsname);\r
+\r
+ my $refpart='';\r
+\r
+ if($filename ne ""){\r
+ $filename =~ s/\\/\//g;\r
+ $filename = substr($filename,rindex($filename,"/")+1);\r
+ &Jcode::convert(\$filename,'euc');\r
+\r
+ my $hundle = $cgi->upload("file");\r
+ my $filecont;\r
+ while(<$hundle>){ $filecont = $filecont.$_; }\r
+ my $uploadfileNP = &Util::url_encode($pagename).".".&Util::url_encode($filename);\r
+ my $uploadfile = $wiki->config('attach_dir')."/".$uploadfileNP;\r
+ open(DATA,">$uploadfile") or die $!;\r
+ binmode(DATA);\r
+ print DATA $filecont;\r
+ close(DATA);\r
+ # ¥í¥°¤ÎµÏ¿\r
+ &plugin::attach::AttachHandler::write_log($wiki,"UPLOAD",$pagename,$filename);\r
+\r
+ # źÉÕ¥Õ¥¡¥¤¥ë¤Îɽ¼¨·Á¼°È½Äê\r
+\r
+ my ($is_image,$infostring,$width,$height) = $self->getfileinfo($wiki,$uploadfile);\r
+ if($is_image){\r
+ $refpart = "{{bbsxfile $filename,show=1,page=$pagename,width=$width,height=$height,border=0}}\n";\r
+ } else {\r
+ my ($size) = (stat($uploadfile))[7];\r
+ $refpart = "{{bbsxfile $filename,show=0,page=$pagename,size=$size}}\n";\r
+ }\r
+ if($plugin::bbsx::BBSXHandler::WRITEINFO){\r
+ $refpart .= "$infostring\n";\r
+ }\r
+\r
+ }\r
+\r
+ my $addr = $ENV{'REMOTE_ADDR'};\r
+ my $content = "!![[$subject|$pagename]] - $name (".&Util::format_date(time()).")\n";\r
+\r
+ if($refpart ne ""){\r
+ $content .= "$refpart";\r
+ }\r
+ if($message ne ""){\r
+ $content .= "\n$message\n";\r
+ }\r
+
+#--------------------------------------------------------------------------------------------------
+ if($message){
+ unless(&plugin::_ex_spam_filter_light::Install::judgment_text($message)){
+ my $time = Util::format_date(time());
+ my $file = $wiki->config('log_dir')."/spam_bbsx.txt";
+ if(open(SPAM_LOG, ">>$file")){
+ print SPAM_LOG "-" x 70 . "\n";
+ print SPAM_LOG "$bbsname:$subject - $name ($time)\n";
+ print SPAM_LOG "-" x 70 . "\n";
+ print SPAM_LOG "$message\n";
+ close(SPAM_LOG);
+ }
+ my $error_message = $wiki->error("Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¤Ï¥¹¥Ñ¥à¥á¥Ã¥»¡¼¥¸¤ÈȽÄꤵ¤ì¤Þ¤·¤¿¡£\n");
+ $subject = Util::escapeHTML($subject);
+ $message = Util::escapeHTML($message);
+ $message =~ s/\n/<br>/g;
+ $error_message .= "<p>\n";
+ $error_message .= "<div>Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§</div>\n";
+ $error_message .= "<div>¡ã·ï̾¡ä</div>\n";
+ $error_message .= "<div>$subject</div>\n";
+ $error_message .= "<div>¡ãËÜʸ¡ä</div>\n";
+ $error_message .= "<div>$message</div>\n";
+ $error_message .= "</p>\n";
+ return $error_message;
+ }
+ }
+#--------------------------------------------------------------------------------------------------
+\r
+ $content .= "//IP=$addr\n";\r
+ # ¥Ñ¥¹¥ï¡¼¥ÉµÏ¿\r
+ $content .= "{{bbsxpassword $pagename," . crypt($password, 'aa') . "}}\n";\r
+\r
+ # no_comment¥ª¥×¥·¥ç¥ó\r
+ if($option eq "no_comment"){\r
+\r
+ # reverse_comment¥ª¥×¥·¥ç¥ó\r
+ } elsif($option eq "reverse_comment"){\r
+ $content .= "{{bbsxcomment reverse}}\n";\r
+ # ¥Ç¥Õ¥©¥ë¥È\r
+ } else {\r
+ $content .= "{{bbsxcomment}}\n";\r
+ }\r
+ $wiki->save_page($pagename,$content);\r
+\r
+ # ¸µ¤Î¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È\r
+ $wiki->redirect($bbsname);\r
+}\r
+
+use plugin::bbsx::BBSXCommentHandler;
+
+# plugin::bbsx::BBSXCommentHandler¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤´¹¤¨
+package plugin::bbsx::BBSXCommentHandler;
+
+sub do_action {\r
+ my $self = shift;\r
+ my $wiki = shift;\r
+ my $cgi = $wiki->get_CGI;\r
+\r
+ my $name = $cgi->param("name");\r
+ my $message = $cgi->param("message");\r
+ my $count = $cgi->param("count");\r
+ my $page = $cgi->param("page");\r
+ my $option = $cgi->param("option");\r
+\r
+ if($name eq ""){\r
+ $name = "̵̾¤·¤µ¤ó";\r
+ } else {\r
+ # post_name¤È¤¤¤¦¥¡¼¤Ç¥¯¥Ã¥¡¼¤ò¥»¥Ã¥È¤¹¤ë\r
+ my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M');\r
+ print "Set-Cookie: ",$cookie->as_string,"\n";\r
+ }\r
+
+#--------------------------------------------------------------------------------------------------
+ if($message){
+ unless(&plugin::_ex_spam_filter_light::Install::judgment_text($message)){
+ my $time = Util::format_date(time());
+ my $file = $wiki->config('log_dir')."/spam_bbsx_comment.txt";
+ if(open(SPAM_LOG, ">>$file")){
+ print SPAM_LOG "$page:$message - $name($time)\n";
+ close(SPAM_LOG);
+ }
+ my $error_message = $wiki->error("Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¤Ï¥¹¥Ñ¥à¥á¥Ã¥»¡¼¥¸¤ÈȽÄꤵ¤ì¤Þ¤·¤¿¡£\n");
+ $error_message .= "<p>\n";
+ $error_message .= "<div>Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§</div>\n";
+ $error_message .= "<div>" . Util::escapeHTML("$message") . "</div>\n";
+ $error_message .= "</p>\n";
+ return $error_message;
+ }
+ }
+#--------------------------------------------------------------------------------------------------
+
+ if($page ne "" && $message ne "" && $count ne ""){\r
+\r
+ my @lines = split(/\n/,$wiki->get_page($page));\r
+ my $flag = 0;\r
+ my $form_count = 1;\r
+ my $content = "";\r
+\r
+ my $addr = $ENV{'REMOTE_ADDR'};\r
+\r
+ # ¿·Ãå½ç¤Î¾ì¹ç\r
+ if($option eq "reverse"){\r
+ foreach(@lines){\r
+ if(/^{{bbsxpassword\s*.*}}$/){\r
+ # ¥Ñ¥¹¥ï¡¼¥É¹Ô¤òºï½ü\r
+ next;\r
+ }\r
+ $content = $content.$_."\n";\r
+ if(/^{{bbsxcomment\s*.*}}$/ && $flag==0){\r
+ if($form_count==$count){\r
+ $content = $content."*$message - $name (".Util::format_date(time()).")\n";\r
+ $flag = 1;\r
+ $content = $content."//IP=$addr\n";\r
+ } else {\r
+ $form_count++;\r
+ }\r
+ }\r
+\r
+ }\r
+ # Åê¹Æ½ç¤Î¾ì¹ç\r
+ } else {\r
+ foreach(@lines){\r
+ if(/^{{bbsxpassword\s*.*}}$/){\r
+ # ¥Ñ¥¹¥ï¡¼¥É¹Ô¤òºï½ü\r
+ next;\r
+ }\r
+ if(/^{{bbsxcomment\s*.*}}$/ && $flag==0){\r
+ if($form_count==$count){\r
+ $content = $content."*$message - $name (".Util::format_date(time()).")\n";\r
+ $flag = 1;\r
+ $content = $content."//IP=$addr\n";\r
+ } else {\r
+ $form_count++;\r
+ }\r
+ }\r
+ $content = $content.$_."\n";\r
+ }\r
+ }\r
+ if($flag==1){\r
+ $wiki->save_page($page,$content);\r
+ }\r
+ }\r
+\r
+ my $bbsname = &plugin::bbsx::BBSXCommon::get_bbsname($wiki,$page);\r
+ # ¸µ¤Î¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È\r
+ $wiki->redirect($bbsname);\r
+}
+
+1;