X-Git-Url: http://git.osdn.net/view?p=fswiki%2Fsandbox.git;a=blobdiff_plain;f=kgsoft%2F_ex_spam_filter_light%2Ftags%2F_ex_spam_filter_light_20171207%2Fplugin%2F_ex_spam_filter_light%2Fbbs.pm;fp=kgsoft%2F_ex_spam_filter_light%2Ftags%2F_ex_spam_filter_light_20171207%2Fplugin%2F_ex_spam_filter_light%2Fbbs.pm;h=62abf5d3ed9a43a0b20f1735694e36d63ef4eb62;hp=0000000000000000000000000000000000000000;hb=456ef3dabff9f791195efee32c6242f69a87b899;hpb=19fd0332a394d157dd03558915da35aaaaf532ff diff --git a/kgsoft/_ex_spam_filter_light/tags/_ex_spam_filter_light_20171207/plugin/_ex_spam_filter_light/bbs.pm b/kgsoft/_ex_spam_filter_light/tags/_ex_spam_filter_light_20171207/plugin/_ex_spam_filter_light/bbs.pm new file mode 100644 index 0000000..62abf5d --- /dev/null +++ b/kgsoft/_ex_spam_filter_light/tags/_ex_spam_filter_light_20171207/plugin/_ex_spam_filter_light/bbs.pm @@ -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 { + # fswiki_post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë + my $path = &Util::cookie_path($wiki); + my $cookie = $cgi->cookie(-name=>'fswiki_post_name',-value=>Util::url_encode($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/
/g; + $error_message .= "

\n"; + $error_message .= "

Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§
\n"; + $error_message .= "
¡ã·ï̾¡ä
\n"; + $error_message .= "
$subject
\n"; + $error_message .= "
¡ãËÜʸ¡ä
\n"; + $error_message .= "
$message
\n"; + $error_message .= "

\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 { + # fswiki_post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë + my $path = &Util::cookie_path($wiki); + my $cookie = $cgi->cookie(-name=>'fswiki_post_name',-value=>Util::url_encode($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/
/g; + $error_message .= "

\n"; + $error_message .= "

Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§
\n"; + $error_message .= "
¡ã·ï̾¡ä
\n"; + $error_message .= "
$subject
\n"; + $error_message .= "
¡ãËÜʸ¡ä
\n"; + $error_message .= "
$message
\n"; + $error_message .= "

\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;