« 「きみと僕の宇宙(ソラ)で」、ブログにて公開しました | メイン | CHEEBOWのしおり(2006-04-10) »

2006年4月10日

MT BanASCII 3.2 MT::I18N::encode_text対応版 再び

[あらすじ]
ヒビノアワ: MT BanASCII 3.2 MT::I18N::encode_text対応版でプラグインを変更して、しめしめこれで1バイト文字のコメントとトラックバックは拒否できるぞ、と、ほくそえむCHEEBOW。しかし、それはあまりにも浅はかであった! そのプラグインは1バイトはもとより、日本語のコメント・トラックバックすら飲み込んでしまう、コメント・トラックバックホイホイであったのだ!


と言うわけでですよ。
また、修正してみました。

--- mt-ban-ascii.pl.org 2006-04-07 17:27:23.085937500 +0900
+++ mt-ban-ascii.pl 2006-04-10 12:40:39.146657000 +0900
@@ -37,10 +37,10 @@
 
 sub handler {
     my($plugin, $obj) = @_;
-    require Encode;
+    require MT::I18N;
     my $charset = MT::ConfigMgr->instance->PublishCharset;
-    my $text = Encode::decode($charset, $obj->all_text);
-    if ($text =~ /^[\x00-\xff]+$/) {
+    my $text = MT::I18N::encode_text($obj->all_text, $charset, 'euc-jp');
+    if ($text =~ /^[\x00-\x7f]+$/) {
         if ($Method eq 'junk') {
             return (-1, "ASCII or Latin-1 comment");
         } elsif ($Method eq 'moderate') {

これだと、Latin-1 であるかどうかは判断できなくなっちゃうので、ログメッセージやプラグインの説明がおかしくなっちゃうんだけど……。
とりあえず、BanASCIIにはなるので、よいかなぁ、と。

ダウンロードはこちら。
mt-ban-ascii.pl


追記:
でも、ここまでやっちゃったら、そもそも、

--- mt-ban-ascii.pl.org 2006-04-07 17:27:23.085937500 +0900
+++ mt-ban-ascii.pl 2006-04-10 12:40:39.146657000 +0900
@@ -37,10 +37,9 @@
 
 sub handler {
     my($plugin, $obj) = @_;
-    require Encode;
     my $charset = MT::ConfigMgr->instance->PublishCharset;
-    my $text = Encode::decode($charset, $obj->all_text);
-    if ($text =~ /^[\x00-\xff]+$/) {
+    my $text = $obj->all_text;
+    if ($text =~ /^[\x00-\x7f]+$/) {
         if ($Method eq 'junk') {
             return (-1, "ASCII or Latin-1 comment");
         } elsif ($Method eq 'moderate') {

これで良かったりはしませんか!
全然「MT::I18N::encode_text対応」でもなんでもないじゃん……orz

投稿者 CHEEBOW : 2006年4月10日 19:03 このエントリーを含むはてなブックマーク

[ Movable Type ]
【お知らせ】音楽に関することはこちらのブログで書いています。くじら音楽部::BLOG