OSDN Git Service

(no commit message)
[fswiki/sandbox.git] / kgsoft / _ex_spam_filter_light / trunk / plugin / _ex_spam_filter_light / bbs.pm
diff --git a/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/bbs.pm b/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/bbs.pm
new file mode 100644 (file)
index 0000000..570d9e4
--- /dev/null
@@ -0,0 +1,207 @@
+##########################################################################################
+#
+# ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
+#¡Êbbs¥×¥é¥°¥¤¥ó¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¡Ë
+#
+##########################################################################################
+use strict;
+
+use plugin::bbs::BBSHandler;
+use plugin::bbs::BBS2Handler;
+
+# plugin::bbs::BBSHandler¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤­´¹¤¨
+package plugin::bbs::BBSHandler;
+
+sub do_action {
+       my $self = shift;
+       my $wiki = shift;
+       my $cgi  = $wiki->get_CGI;
+       
+       my $name    = $cgi->param("name");
+       my $subject = $cgi->param("subject");
+       my $message = $cgi->param("message");
+       my $count   = $cgi->param("count");
+       my $page    = $cgi->param("page");
+       my $option  = $cgi->param("option");
+       
+       if($name eq ""){
+               $name = "̵̾¤·¤µ¤ó";
+       } else {
+               # post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë
+               my $path   = &Util::cookie_path($wiki);
+               my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);
+               print "Set-Cookie: ",$cookie->as_string,"\n";
+       }
+       
+       if($subject eq ""){
+               $subject = "̵Âê";
+       }
+       
+       if($page eq "" || $count eq ""){
+               return $wiki->error("¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹");
+       } elsif($message eq ""){
+               return $wiki->error("ËÜʸ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");
+       }
+       
+#--------------------------------------------------------------------------------------------------
+  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_bbs.txt";
+      if(open(SPAM_LOG, ">>$file")){
+        print SPAM_LOG "-" x 70 . "\n";
+        print SPAM_LOG "$page:$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;
+    }
+  }
+#--------------------------------------------------------------------------------------------------
+
+       # ¥Õ¥©¡¼¥Þ¥Ã¥È¥×¥é¥°¥¤¥ó¤Ø¤ÎÂбþ
+       my $format = $wiki->get_edit_format();
+       $name    = $wiki->convert_to_fswiki($name   ,$format,1);
+       $subject = $wiki->convert_to_fswiki($subject,$format,1);
+       $message = $wiki->convert_to_fswiki($message,$format);
+       
+       my @lines = split(/\n/,$wiki->get_page($page));
+       my $flag       = 0;
+       my $form_count = 1;
+       my $content    = "";
+       
+       foreach(@lines){
+               $content = $content.$_."\n";
+               if(/^{{bbs\s*.*}}$/ && $flag==0){
+                       if($form_count==$count){
+                               $content .= "!!$subject - $name (".&Util::format_date(time()).")\n".
+                                           "$message\n";
+                               
+                               # no_comment¥ª¥×¥·¥ç¥ó
+                               if($option eq "no_comment"){
+                                       
+                               # reverse_comment¥ª¥×¥·¥ç¥ó
+                               } elsif($option eq "reverse_comment"){
+                                       $content .= "{{comment reverse}}\n";
+                               # ¥Ç¥Õ¥©¥ë¥È
+                               } else {
+                                       $content .= "{{comment}}\n";
+                               }
+                               $flag = 1;
+                               
+                       } else {
+                               $form_count++;
+                       }
+               }
+       }
+       if($flag==1){
+               $wiki->save_page($page,$content);
+       }
+       
+       # ¸µ¤Î¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë
+       $wiki->redirect($page);
+}
+
+
+# plugin::bbs::BBS2Handler¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤­´¹¤¨
+package plugin::bbs::BBS2Handler;
+
+sub do_action {
+       my $self = shift;
+       my $wiki = shift;
+       my $cgi  = $wiki->get_CGI;
+       
+       my $bbsname = $cgi->param("bbsname");
+       my $name    = $cgi->param("name");
+       my $subject = $cgi->param("subject");
+       my $message = $cgi->param("message");
+       my $page    = $cgi->param("page");
+       my $option  = $cgi->param("option");
+       
+       if($name    eq ""){
+               $name    = "̵̾¤·¤µ¤ó";
+       } else {
+               # post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë
+               my $path   = &Util::cookie_path($wiki);
+               my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);
+               print "Set-Cookie: ",$cookie->as_string,"\n";
+       }
+       
+       if($subject eq ""){
+               $subject = "̵Âê";
+       }
+       
+       if($bbsname eq ""){
+               return $wiki->error("¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹¡£");
+       }
+       if($message eq ""){
+               return $wiki->error("ËÜʸ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");
+       }
+       
+#--------------------------------------------------------------------------------------------------
+  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_bbs2.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;
+    }
+  }
+#--------------------------------------------------------------------------------------------------
+
+       # ¥Õ¥©¡¼¥Þ¥Ã¥È¥×¥é¥°¥¤¥ó¤Ø¤ÎÂбþ
+       my $format = $wiki->get_edit_format();
+       $name    = $wiki->convert_to_fswiki($name   ,$format,1);
+       $subject = $wiki->convert_to_fswiki($subject,$format,1);
+       $message = $wiki->convert_to_fswiki($message,$format);
+       
+       my $pagename = $self->get_page_name($wiki,$bbsname);
+       my $content = "!![[$subject|$pagename]] - $name (".&Util::format_date(time()).")\n".
+                     "$message\n";
+       
+       # no_comment¥ª¥×¥·¥ç¥ó
+       if($option eq "no_comment"){
+               
+       # reverse_comment¥ª¥×¥·¥ç¥ó
+       } elsif($option eq "reverse_comment"){
+               $content .= "{{comment reverse}}\n";
+       # ¥Ç¥Õ¥©¥ë¥È
+       } else {
+               $content .= "{{comment}}\n";
+       }
+       $wiki->save_page($pagename,$content);
+       
+       # ¸µ¤Î¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È
+       $wiki->redirect($pagename);
+}
+
+1;