Version Description
2014/12/22
OFF bsb.spamlookup.net bsb.spamlookup.net, bsb.empty.us, list.dsbl.org, all.rbl.jp URL
7 3
wordpress.orgID
Download this release
Release Info
Developer | tsato |
Plugin | Throws SPAM Away |
Version | 2.6.5 |
Comparing to | |
See all releases |
Code changes from version 2.6.4 to 2.6.5
- css/tsa_data_styles.css +141 -0
- css/tsa_styles.css +40 -0
- hostbyip.php +76 -0
- images/asc.gif +0 -0
- images/bg.gif +0 -0
- images/desc.gif +0 -0
- images/style.css +15 -0
- readme.txt +44 -4
- throws_spam_away.class.php +168 -62
- throws_spam_away.php +20 -7
- uninstall.php +55 -0
css/tsa_data_styles.css
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@CHARSET "UTF-8";
|
2 |
+
/** Throws SPAM Away */
|
3 |
+
/** 変更ボタン */
|
4 |
+
p.submit .button-primary {
|
5 |
+
width: 200px;
|
6 |
+
height: 30px;
|
7 |
+
margin: 20px auto 50px 20px;
|
8 |
+
}
|
9 |
+
/** ------ lightbox風 ----- */
|
10 |
+
#kotak-dialog {
|
11 |
+
position:absolute;
|
12 |
+
top:20%;
|
13 |
+
left:50%;
|
14 |
+
margin:0px 0px 0px -200px;
|
15 |
+
width:400px;
|
16 |
+
height:auto;
|
17 |
+
background-color:#fff;
|
18 |
+
-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.4);
|
19 |
+
-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.4);
|
20 |
+
box-shadow:0px 1px 2px rgba(0,0,0,0.4);
|
21 |
+
z-index:1000;
|
22 |
+
display:none;
|
23 |
+
}
|
24 |
+
|
25 |
+
#kotak-dialog *:focus {
|
26 |
+
outline:none;
|
27 |
+
}
|
28 |
+
|
29 |
+
#kotak-dialog h3.title {
|
30 |
+
background-color:#3B5998;
|
31 |
+
padding:10px 15px;
|
32 |
+
color:#fff;
|
33 |
+
font:normal 16px Arial,Sans-Serif;
|
34 |
+
margin:0px 0px 0px 0px;
|
35 |
+
position:relative;
|
36 |
+
}
|
37 |
+
|
38 |
+
#kotak-dialog h3.title a {
|
39 |
+
position:absolute;
|
40 |
+
top:10px;
|
41 |
+
right:15px;
|
42 |
+
color:#fff;
|
43 |
+
text-decoration:none;
|
44 |
+
cursor:pointer;
|
45 |
+
}
|
46 |
+
|
47 |
+
#kotak-dialog .isi-dialog {
|
48 |
+
margin:15px;
|
49 |
+
font:normal 12px Arial,Sans-Serif;
|
50 |
+
}
|
51 |
+
|
52 |
+
#kotak-dialog .button-wrapper {
|
53 |
+
padding:10px 15px 0px;
|
54 |
+
border-top:1px solid #ddd;
|
55 |
+
margin-top:15px;
|
56 |
+
}
|
57 |
+
|
58 |
+
#kotak-dialog .button-wrapper button {
|
59 |
+
background-color:#FF0C39;
|
60 |
+
border:none;
|
61 |
+
font:bold 12px Arial,Sans-Serif;
|
62 |
+
color:#fff;
|
63 |
+
padding:5px 10px;
|
64 |
+
-webkit-border-radius:3px;
|
65 |
+
-moz-border-radius:3px;
|
66 |
+
border-radius:3px;
|
67 |
+
cursor:pointer;
|
68 |
+
}
|
69 |
+
|
70 |
+
#kotak-dialog .button-wrapper button:hover {
|
71 |
+
background-color:#aaa;
|
72 |
+
}
|
73 |
+
|
74 |
+
#dialog-overlay {
|
75 |
+
position:fixed !important;
|
76 |
+
position:absolute;
|
77 |
+
z-index:999;
|
78 |
+
top:0px;
|
79 |
+
right:0px;
|
80 |
+
bottom:0px;
|
81 |
+
left:0px;
|
82 |
+
background-color:#000;
|
83 |
+
display:none;
|
84 |
+
}
|
85 |
+
|
86 |
+
|
87 |
+
/* Iframe */
|
88 |
+
#iframeContainer iframe {
|
89 |
+
width:100%;
|
90 |
+
height:300px;
|
91 |
+
border:none;
|
92 |
+
background-color:#ccc;
|
93 |
+
overflow:auto;
|
94 |
+
}
|
95 |
+
|
96 |
+
/** スクロール対象テーブルCSS */
|
97 |
+
#spam_list {
|
98 |
+
background-color: #ffffff;
|
99 |
+
border-collapse:;
|
100 |
+
font-size: 1em !important;
|
101 |
+
}
|
102 |
+
/** 全体container */
|
103 |
+
#spam_list_container {
|
104 |
+
position: relative;
|
105 |
+
padding-top: 26px;
|
106 |
+
width: 928px; /* 列幅合計+セル間の幅(2px)の合計+20px */
|
107 |
+
border: 1px solid #3377b6;
|
108 |
+
background-color: #ffffff;
|
109 |
+
}
|
110 |
+
/** tbody スクロール対象 */
|
111 |
+
#spam_list_div {
|
112 |
+
overflow: auto;
|
113 |
+
height: 600px;
|
114 |
+
}
|
115 |
+
|
116 |
+
#spam_list thead tr {
|
117 |
+
position: absolute;
|
118 |
+
top: 0;
|
119 |
+
left: 0;
|
120 |
+
background-color: #ffffff;
|
121 |
+
}
|
122 |
+
#spam_list thead tr th {
|
123 |
+
background-color: #3377b6;
|
124 |
+
color: #fff;
|
125 |
+
padding: 3px 0px;
|
126 |
+
}
|
127 |
+
#spam_list tbody tr td {
|
128 |
+
background-color: #efefef;
|
129 |
+
color: black;
|
130 |
+
padding: 3px 6px;
|
131 |
+
}
|
132 |
+
#spam_list tbody tr.odd td {
|
133 |
+
background-color:#F0F0F6;
|
134 |
+
}
|
135 |
+
|
136 |
+
.cols0 { width: 200px; }
|
137 |
+
.cols1 { width: 50px; }
|
138 |
+
.cols2 { width: 130px; }
|
139 |
+
.cols3 { width: 300px; }
|
140 |
+
.cols4 { width: 220px; }
|
141 |
+
|
css/tsa_styles.css
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@CHARSET "UTF-8";
|
2 |
+
/**
|
3 |
+
Throws SPAM Away
|
4 |
+
Option page
|
5 |
+
*/
|
6 |
+
|
7 |
+
h2 {
|
8 |
+
padding: 10px !important;
|
9 |
+
}
|
10 |
+
|
11 |
+
.wrap h3 {
|
12 |
+
background: #fff;
|
13 |
+
border-left: 3px solid orange ;
|
14 |
+
margin: 0 0 15px 15px;
|
15 |
+
padding: 5px 10px;
|
16 |
+
}
|
17 |
+
|
18 |
+
.wrap p {
|
19 |
+
margin: 0 0 15px 15px;
|
20 |
+
padding: 5px 10px;
|
21 |
+
}
|
22 |
+
|
23 |
+
.wrap table.form-table {
|
24 |
+
margin: 0 0 15px 15px;
|
25 |
+
padding: 5px 10px;
|
26 |
+
border-collapse: separate;
|
27 |
+
border-spacing: 5px;
|
28 |
+
}
|
29 |
+
|
30 |
+
.wrap table.form-table tbody tr th {
|
31 |
+
background: #fff;
|
32 |
+
width: 250px;
|
33 |
+
margin: 0 0 15px 15px;
|
34 |
+
padding: 5px 10px;
|
35 |
+
border: solid 1px #ddd;
|
36 |
+
border-radius: 3px;
|
37 |
+
box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.1 );
|
38 |
+
overflow: hidden;
|
39 |
+
}
|
40 |
+
|
hostbyip.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* <p>ThrowsSpamAway</p> hostbyipページ
|
4 |
+
* WordPress's Plugin
|
5 |
+
* @author Takeshi Satoh@GTI Inc. 2013
|
6 |
+
* @version 2.6.3 2014/06/06
|
7 |
+
*/
|
8 |
+
require_once 'throws_spam_away.class.php';
|
9 |
+
require_once dirname( __FILE__ ).'/../../../wp-load.php';
|
10 |
+
/**
|
11 |
+
* ホスト検索
|
12 |
+
*/
|
13 |
+
$spam_ip = htmlspecialchars($_GET['ip']);
|
14 |
+
$newThrowsSpamAway = new ThrowsSpamAway(TRUE);
|
15 |
+
$last_spam_comment_result = $newThrowsSpamAway->get_last_spam_comment($spam_ip);
|
16 |
+
// 最終投稿日
|
17 |
+
$last_comment_date = $last_spam_comment_result->post_date;
|
18 |
+
$last_comment_post = get_permalink($last_spam_comment_result->post_id);
|
19 |
+
$last_comment_post_title = get_the_title(get_post($last_spam_comment_result->post_id));
|
20 |
+
$is_spam_champuru = ( $newThrowsSpamAway->reject_spam_ip( $spam_ip ) ? FALSE : TRUE );
|
21 |
+
$spam_author = $last_spam_comment_result->spam_author;
|
22 |
+
$spam_comment = esc_attr($last_spam_comment_result->spam_comment);
|
23 |
+
?><!DOCTYPE html>
|
24 |
+
<!--[if IE 8]>
|
25 |
+
<html xmlns="http://www.w3.org/1999/xhtml" class="ie8 wp-toolbar" lang="ja" prefix="og: http://ogp.me/ns#" >
|
26 |
+
<![endif]-->
|
27 |
+
<!--[if !(IE 8) ]><!-->
|
28 |
+
<html xmlns="http://www.w3.org/1999/xhtml" class="wp-toolbar" lang="ja" >
|
29 |
+
<!--<![endif]-->
|
30 |
+
<head>
|
31 |
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
32 |
+
<title>Throws SPAM Away | Hostbyip[<?php echo htmlspecialchars($_GET['ip']); ?>]</title>
|
33 |
+
<script type="text/javascript">
|
34 |
+
window.onblur=function(){
|
35 |
+
window.close();
|
36 |
+
}
|
37 |
+
</script>
|
38 |
+
</head>
|
39 |
+
<body>
|
40 |
+
<div style="textalign: center;">
|
41 |
+
<h2 style="background:#333; color:#fff;"><?php echo $spam_ip; ?></h2>
|
42 |
+
<?php
|
43 |
+
$spam_host = gethostbyaddr(htmlspecialchars($spam_ip));
|
44 |
+
if ($spam_host != $spam_ip) {
|
45 |
+
?>
|
46 |
+
<h3 style="background: #666;color: #fff;">特定のホスト情報が見つかりました。</h3>
|
47 |
+
↓↓↓<br />
|
48 |
+
|
49 |
+
<h4><?php echo $spam_host; ?></h4>
|
50 |
+
Whois: <a href="http://whois.arin.net/rest/ip/<?php echo $spam_ip; ?>" target="_blank"><?php echo $spam_ip; ?></a>
|
51 |
+
<?php
|
52 |
+
} else {
|
53 |
+
?>
|
54 |
+
<h3 style="background: #666;color: #fff;">このIPアドレスから特定のホスト情報は見つかりませんでした。</h3>
|
55 |
+
<?php
|
56 |
+
}
|
57 |
+
?>
|
58 |
+
<?php if ( $last_spam_comment_result != NULL ) { ?>
|
59 |
+
<div style="background: #999;color: #fff;margin:3px 0 0 0;">このIPからの最終投稿日時</div><?php echo $last_comment_date; ?><br />
|
60 |
+
<div style="background: #999;color: #fff;margin:3px 0 0 0;">このIPからスパム投稿対象となったページ</div><a href="<?php echo $last_comment_post; ?>" target="_blank"><?php echo $last_comment_post_title; ?></a><br />
|
61 |
+
<?php } ?>
|
62 |
+
<h4>スパムフィルター:<?php echo ($is_spam_champuru ? "スパムブラックリスト存在IPアドレス" : "未検出" ); ?></h4>
|
63 |
+
|
64 |
+
<div style="background: #999;color: #fff;margin:3px 0 0 0;">最新コメント内容</div>
|
65 |
+
<div ><?php if ( $spam_author != NULL && $spam_comment != NULL ) {
|
66 |
+
?>
|
67 |
+
IP: <?php esc_attr_e( $spam_ip ); ?><br />
|
68 |
+
名前:<?php echo esc_attr( $spam_author ); ?><br />
|
69 |
+
内容:<?php esc_attr_e( $spam_comment ); ?><?php
|
70 |
+
} ?>
|
71 |
+
</div>
|
72 |
+
|
73 |
+
<div style="text-align:right;"><a href="javascript:void(0);" onclick="window.close();">閉じる</a></div>
|
74 |
+
</div>
|
75 |
+
</body>
|
76 |
+
</html>
|
images/asc.gif
ADDED
Binary file
|
images/bg.gif
ADDED
Binary file
|
images/desc.gif
ADDED
Binary file
|
images/style.css
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
table.tablesorter thead tr .header {
|
2 |
+
background-image: url(bg.gif);
|
3 |
+
background-repeat: no-repeat;
|
4 |
+
background-position: center right;
|
5 |
+
cursor: pointer;
|
6 |
+
}
|
7 |
+
table.tablesorter thead tr .headerSortUp {
|
8 |
+
background-image: url(asc.gif);
|
9 |
+
}
|
10 |
+
table.tablesorter thead tr .headerSortDown {
|
11 |
+
background-image: url(desc.gif);
|
12 |
+
}
|
13 |
+
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
|
14 |
+
background-color: #8dbdd8;
|
15 |
+
}
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Plugin Name ===
|
2 |
-
Contributors:
|
3 |
Donate link: http://gti.jp/tsa
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
-
Tested up to:
|
7 |
-
Stable tag: 2.6.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -56,7 +56,16 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
56 |
[192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否(または優先通過)対象とします。
|
57 |
|
58 |
・スパムフィルタによる判定
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
設定にてON/OFF出来ます。
|
61 |
|
62 |
|
@@ -72,6 +81,18 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
72 |
※コメント投稿時のスパムコメント対応の煩わしさが原因で作ったものですのでスパム判定されたコメントを保持しておりません。
|
73 |
|
74 |
-- これまでの変更点について
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
・バージョン2.6.4
|
76 |
2014/06/23
|
77 |
タイトルの文字列をそのまま流用し「日本語」を使うことでフィルタを回避しようとする方法を排除するため
|
@@ -214,6 +235,8 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
214 |
FTPなどで /wp-content/plugins/ ディレクトリにアップロードし
|
215 |
「プラグイン」メニューより「Throws SPAM Away」を「有効化」してご利用ください。
|
216 |
|
|
|
|
|
217 |
e.g.
|
218 |
|
219 |
1. Upload `throws-spam-away` to the `/wp-content/plugins/` directory
|
@@ -225,6 +248,23 @@ e.g.
|
|
225 |
== Screenshots ==
|
226 |
|
227 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
= 2.6.4 =
|
229 |
・バージョン2.6.4
|
230 |
2014/06/23
|
1 |
=== Plugin Name ===
|
2 |
+
Contributors: TAMAN
|
3 |
Donate link: http://gti.jp/tsa
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
+
Tested up to: 4.1
|
7 |
+
Stable tag: 2.6.5
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
56 |
[192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否(または優先通過)対象とします。
|
57 |
|
58 |
・スパムフィルタによる判定
|
59 |
+
このプラグインにて「スパムフィルタ」として利用させて頂いておりました「スパムちゃんぷるー(ベータ)」http://spam-champuru.livedoor.com/dnsbl/
|
60 |
+
ですが、「2013年5月31日を持ちましてサービスを終了させていただくことになりました。」というアナウンスを受けながらも
|
61 |
+
(参考URL:http://blog.livedoor.jp/edge_labs/archives/1791613.html )現在まで利用させて頂いてまいりました。
|
62 |
+
ですが、2014年の締めくくりとしてこのままXデーを迎えるわけにもいかないという判断でこのスパムフィルタを組み合わせられるように構築しなおしました。
|
63 |
+
選択肢は「bsb.spamlookup.net, bsb.empty.us, list.dsbl.org, all.rbl.jp」から自由に選択出来、プラスご自由に記入出来るように入力欄を設けました。
|
64 |
+
これらの「選択肢」「自由記入欄」はリストとしてミックスされフィルタとして利用することになります。
|
65 |
+
※そのため、数が多いとその分、待ち時間・トラフィックが大きくなることはご注意ください。
|
66 |
+
※利用できる間は「dnsbl.spam-champuru.livedoor.com」も設定することは可能です。
|
67 |
+
最後に「すぱむちゃんぷるー」を利用させていただきまして大変ありがとうございました。
|
68 |
+
|
69 |
設定にてON/OFF出来ます。
|
70 |
|
71 |
|
81 |
※コメント投稿時のスパムコメント対応の煩わしさが原因で作ったものですのでスパム判定されたコメントを保持しておりません。
|
82 |
|
83 |
-- これまでの変更点について
|
84 |
+
・バージョン2.6.5
|
85 |
+
2014/12/22
|
86 |
+
スパムフィルタを自身で設定できるように変更しました。
|
87 |
+
選択肢「bsb.spamlookup.net, bsb.empty.us, list.dsbl.org, all.rbl.jp」
|
88 |
+
及び自由記入欄にてカンマ区切りでサービスのURLを入力できます。
|
89 |
+
※記述に誤りがありますと通信が返ってこないためコメント出来ない可能性がありますのでご注意ください。
|
90 |
+
|
91 |
+
スパムデータベースの最小保存期間を 7日から 3日に変更しました。
|
92 |
+
|
93 |
+
プラグイン作成者のwordpress.orgネームが間違えていた(IDにしていた)ためプラグインページにプロフィールリンクが
|
94 |
+
表示されていない大変寂しい結果になっておりました。今バージョンより修正いたします。
|
95 |
+
|
96 |
・バージョン2.6.4
|
97 |
2014/06/23
|
98 |
タイトルの文字列をそのまま流用し「日本語」を使うことでフィルタを回避しようとする方法を排除するため
|
235 |
FTPなどで /wp-content/plugins/ ディレクトリにアップロードし
|
236 |
「プラグイン」メニューより「Throws SPAM Away」を「有効化」してご利用ください。
|
237 |
|
238 |
+
アップデートの際は、一度設定画面にアクセスし「変更を保存」ボタンを押していただけますと確実です。
|
239 |
+
|
240 |
e.g.
|
241 |
|
242 |
1. Upload `throws-spam-away` to the `/wp-content/plugins/` directory
|
248 |
== Screenshots ==
|
249 |
|
250 |
== Changelog ==
|
251 |
+
= 2.6.5 =
|
252 |
+
2014/12/22
|
253 |
+
スパムフィルタを自身で設定できるように変更しました。
|
254 |
+
初期設定は「スパムフィルタ:OFF」に変更しました。
|
255 |
+
また、使用する際の初期有効値は「bsb.spamlookup.net」のみです。
|
256 |
+
選択肢「bsb.spamlookup.net, bsb.empty.us, list.dsbl.org, all.rbl.jp」
|
257 |
+
及び自由記入欄にてカンマ区切りでサービスのURLを入力できます。
|
258 |
+
※記述に誤りがありますと通信が返ってこないためコメント出来ない可能性がありますのでご注意ください。
|
259 |
+
※スパムフィルタが変更できることによって現在まで「スパムブラックリスト」でエラーとなっていた投稿に対し
|
260 |
+
その時点では有効だったフィルタが閲覧時に入れ替えがあると「スパムフィルター:未検出」となる場合があります。
|
261 |
+
ご了承ください。
|
262 |
+
|
263 |
+
スパムデータベースの最小保存期間を 7日から 3日に変更しました。
|
264 |
+
|
265 |
+
プラグイン作成者のwordpress.orgネームが間違えていた(IDにしていた)ためプラグインページにプロフィールリンクが
|
266 |
+
表示されていない大変寂しい結果になっておりました。今バージョンより修正いたします。
|
267 |
+
|
268 |
= 2.6.4 =
|
269 |
・バージョン2.6.4
|
270 |
2014/06/23
|
throws_spam_away.class.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* <p>ThrowsSpamAway</p> Class
|
5 |
* WordPress's Plugin
|
6 |
* @author Takeshi Satoh@GTI Inc. 2014
|
7 |
-
* @version 2.6.
|
8 |
*/
|
9 |
class ThrowsSpamAway {
|
10 |
|
@@ -13,6 +13,21 @@ class ThrowsSpamAway {
|
|
13 |
var $table_name = NULL;
|
14 |
|
15 |
public function __construct() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
global $default_spam_data_save;
|
17 |
global $wpdb;
|
18 |
// 接頭辞(wp_)を付けてテーブル名を設定
|
@@ -122,7 +137,6 @@ class ThrowsSpamAway {
|
|
122 |
if ( strlen( trim( $caution_msg ) ) > 0 ) {
|
123 |
echo '<p id="throwsSpamAway">'.$caution_msg.'</p>'; // div から p タグへ変更
|
124 |
}
|
125 |
-
return TRUE;
|
126 |
}
|
127 |
|
128 |
function comment_form_dummy_param_field() {
|
@@ -135,7 +149,6 @@ class ThrowsSpamAway {
|
|
135 |
echo '<p class="tsa_param_field_tsa_2">post date<span class="required">*</span><input type="text" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" size="30" value="'.date( 'Y-m-d H:i:s' ).'" />
|
136 |
</p>';
|
137 |
}
|
138 |
-
return TRUE;
|
139 |
}
|
140 |
|
141 |
function comment_post( $id ) {
|
@@ -191,24 +204,24 @@ class ThrowsSpamAway {
|
|
191 |
}
|
192 |
$error_msg = '';
|
193 |
switch ( $error_type ) {
|
194 |
-
case
|
195 |
$error_msg = get_option( 'tsa_must_key_error_message', $default_must_key_error_msg );
|
196 |
break;
|
197 |
-
case
|
198 |
$error_msg = get_option( 'tsa_ng_key_error_message', $default_ng_key_error_msg );
|
199 |
break;
|
200 |
-
case
|
201 |
$error_msg = get_option( 'tsa_block_ip_address_error_message', $default_block_ip_address_error_msg );
|
202 |
break;
|
203 |
-
case
|
204 |
$error_msg = get_option( 'tsa_block_ip_address_error_message', $default_block_ip_address_error_msg );
|
205 |
-
case
|
206 |
$error_msg = get_option( 'tsa_url_count_over_error_message', $default_url_count_over_error_msg );
|
207 |
break;
|
208 |
-
case
|
209 |
$error_msg = get_option( 'tsa_spam_limit_over_interval_error_message', $default_spam_limit_over_interval_error_msg );
|
210 |
break;
|
211 |
-
case
|
212 |
default :
|
213 |
$error_msg = get_option( 'tsa_error_message', $default_error_msg );
|
214 |
}
|
@@ -258,7 +271,7 @@ class ThrowsSpamAway {
|
|
258 |
foreach ( $results as $item ) {
|
259 |
if ( trim( $item->comment_author_IP ) == trim( $target_ip ) ) {
|
260 |
// ブロックしたいIP
|
261 |
-
$error_type =
|
262 |
return FALSE;
|
263 |
}
|
264 |
}
|
@@ -274,12 +287,12 @@ class ThrowsSpamAway {
|
|
274 |
if ( strpos( $ip, '/' ) != FALSE ) {
|
275 |
if ( $this->in_cidr( $target_ip, $ip ) ) {
|
276 |
// ブロックしたいIP
|
277 |
-
$error_type =
|
278 |
return FALSE;
|
279 |
}
|
280 |
} elseif ( trim( $ip ) == trim( $target_ip ) ) {
|
281 |
// ブロックしたいIP
|
282 |
-
$error_type =
|
283 |
return FALSE;
|
284 |
} else {
|
285 |
// セーフIP
|
@@ -289,45 +302,101 @@ class ThrowsSpamAway {
|
|
289 |
return TRUE;
|
290 |
}
|
291 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
/**
|
293 |
-
*
|
294 |
*/
|
295 |
function reject_spam_ip( $ip ) {
|
296 |
-
|
|
|
|
|
|
|
|
|
|
|
297 |
global $error_type;
|
298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
$spam_def_ip = '127.0.0.2';
|
300 |
-
$host = $spam_champuru_host;
|
301 |
$pattern = '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/';
|
302 |
$check_IP = trim( preg_match( $pattern, $ip ) ? $ip : $_SERVER['REMOTE_ADDR'] );
|
303 |
-
$spam =
|
304 |
if ( preg_match( $pattern, $check_IP ) ) {
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
$
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
break;
|
320 |
-
}
|
321 |
-
}
|
322 |
}
|
323 |
-
unset( $response );
|
324 |
-
unset( $resolver );
|
325 |
-
} elseif ( function_exists( 'checkdnsrr' ) ) {
|
326 |
-
$spam = ( checkdnsrr( $host, 'A' ) === true );
|
327 |
}
|
328 |
}
|
329 |
if ( $spam ) {
|
330 |
-
$error_type =
|
331 |
return FALSE;
|
332 |
}
|
333 |
return TRUE;
|
@@ -414,7 +483,7 @@ class ThrowsSpamAway {
|
|
414 |
$tsa_spam_limit_count = intval( get_option( 'tsa_spam_limit_count', $default_spam_limit_count ) );
|
415 |
if ( $spam_count > $tsa_spam_limit_count ) {
|
416 |
// アウト!
|
417 |
-
$error_type =
|
418 |
return FALSE;
|
419 |
}
|
420 |
}
|
@@ -422,13 +491,13 @@ class ThrowsSpamAway {
|
|
422 |
$tsa_dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $default_dummy_param_field_flg );
|
423 |
if ( $tsa_dummy_param_field_flg == '1') {
|
424 |
if ( ! empty( $_POST['tsa_param_field_tsa_3'] ) ) { // このフィールドにリクエストパラメータが入る場合はスパム判定
|
425 |
-
$error_type =
|
426 |
return FALSE;
|
427 |
}
|
428 |
}
|
429 |
// シングルバイトだけならエラー
|
430 |
if ( $tsa_on_flg != '2' && strlen( bin2hex( $comment ) ) / 2 == mb_strlen( $comment ) ) {
|
431 |
-
$error_type =
|
432 |
return FALSE;
|
433 |
} else {
|
434 |
// 日本語文字列必須含有数
|
@@ -488,7 +557,7 @@ class ThrowsSpamAway {
|
|
488 |
|
489 |
$flg = ( $tsa_japanese_string_min_count < $count_flg );
|
490 |
if ($flg == FALSE) {
|
491 |
-
$error_type =
|
492 |
return FALSE;
|
493 |
}
|
494 |
}
|
@@ -497,7 +566,7 @@ class ThrowsSpamAway {
|
|
497 |
$keyword_list = mb_split( ',', $tsa_ng_keywords );
|
498 |
foreach ( $keyword_list as $key ) {
|
499 |
if ( preg_match('/'.trim( $key ).'/u', $author.$comment) ) {
|
500 |
-
$error_type =
|
501 |
return FALSE;
|
502 |
}
|
503 |
}
|
@@ -519,7 +588,7 @@ class ThrowsSpamAway {
|
|
519 |
if ( $tsa_url_count_check != '2' ) {
|
520 |
if ( substr_count( strtolower( $author.$comment ), 'http') > $tsa_ok_url_count) {
|
521 |
// URL文字列(httpの数)が多いエラー
|
522 |
-
$error_type =
|
523 |
return FALSE;
|
524 |
}
|
525 |
}
|
@@ -582,6 +651,9 @@ class ThrowsSpamAway {
|
|
582 |
global $default_ok_url_count;
|
583 |
global $default_spam_champuru_flg;
|
584 |
|
|
|
|
|
|
|
585 |
global $default_spam_limit_flg;
|
586 |
global $default_spam_limit_minutes;
|
587 |
global $default_spam_limit_count;
|
@@ -592,6 +664,10 @@ class ThrowsSpamAway {
|
|
592 |
global $default_spam_display_day_count;
|
593 |
global $default_spam_keep_day_count;
|
594 |
|
|
|
|
|
|
|
|
|
595 |
// 設定完了の場合はメッセージ表示
|
596 |
$_saved = FALSE;
|
597 |
if ( esc_attr( $_GET['settings-updated'] ) == 'true' ) {
|
@@ -722,8 +798,12 @@ function addIpAddresses(newAddressStr) {
|
|
722 |
</td>
|
723 |
</tr>
|
724 |
<tr valign="top">
|
725 |
-
<th scope="row"
|
726 |
-
|
|
|
|
|
|
|
|
|
727 |
value="<?php echo get_option( 'tsa_japanese_string_min_count', $default_japanese_string_min_count ); ?>" /><br />
|
728 |
(初期設定:<?php echo $default_japanese_string_min_count; ?>)
|
729 |
</td>
|
@@ -873,17 +953,42 @@ function addIpAddresses(newAddressStr) {
|
|
873 |
<h3 id="ip_opt">投稿IPアドレスによる制御設定</h3>
|
874 |
<table class="form-table">
|
875 |
<tr valign="top">
|
876 |
-
<th scope="row">SPAMブラックリスト利用</th>
|
877 |
<td><?php
|
878 |
$chk = '';
|
879 |
if ( get_option( 'tsa_spam_champuru_flg', $default_spam_champuru_flg) == '1' ) {
|
880 |
$chk = ' checked="checked"';
|
881 |
}
|
882 |
?>
|
883 |
-
<label><input type="checkbox" name="tsa_spam_champuru_flg" value='1' <?php esc_attr_e( $chk ); ?>
|
884 |
(初期設定:<?php echo ( $default_spam_champuru_flg == '2' ? "しない" : "する" ); ?>)
|
885 |
</td>
|
886 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
887 |
<tr valign="top">
|
888 |
<th scope="row">WordPressのコメントで「スパム」にしたIPからの投稿にも採用する</th>
|
889 |
<td><?php
|
@@ -980,7 +1085,7 @@ function addIpAddresses(newAddressStr) {
|
|
980 |
<td>
|
981 |
<input
|
982 |
type="text" name="tsa_spam_keep_day_count" size="3"
|
983 |
-
value="<?php echo get_option( 'tsa_spam_keep_day_count', $default_spam_keep_day_count); ?>"
|
984 |
<?php
|
985 |
$chk = '';
|
986 |
if ( get_option( 'tsa_spam_data_delete_flg', $default_spam_data_delete_flg) == '1' ) {
|
@@ -1023,7 +1128,7 @@ function addIpAddresses(newAddressStr) {
|
|
1023 |
|
1024 |
<input type="hidden" name="action" value="update" /> <input
|
1025 |
type="hidden" name="page_options"
|
1026 |
-
value="tsa_on_flg,tsa_japanese_string_min_count,tsa_back_second,tsa_caution_message,tsa_caution_msg_point,tsa_error_message,tsa_ng_keywords,tsa_ng_key_error_message,tsa_must_keywords,tsa_must_key_error_message,tsa_tb_on_flg,tsa_tb_url_flg,tsa_block_ip_addresses,tsa_ip_block_from_spam_chk_flg,tsa_block_ip_address_error_message,tsa_url_count_on_flg,tsa_ok_url_count,tsa_url_count_over_error_message,tsa_spam_data_save,tsa_spam_limit_flg,tsa_spam_limit_minutes,tsa_spam_limit_count,tsa_spam_limit_over_interval,tsa_spam_limit_over_interval_error_message,tsa_spam_champuru_flg,tsa_spam_keep_day_count,tsa_spam_data_delete_flg,tsa_white_ip_addresses,tsa_dummy_param_field_flg,tsa_memo" />
|
1027 |
<p class="submit" id="tsa_submit_button">
|
1028 |
<input type="submit" class="button-primary"
|
1029 |
value="<?php _e('Save Changes') ?>" />
|
@@ -1069,7 +1174,7 @@ function addIpAddresses(newAddressStr) {
|
|
1069 |
} else {
|
1070 |
if ( get_option( 'tsa_spam_data_save', $default_spam_data_save ) == '1' ) {
|
1071 |
$spam_contents = array();
|
1072 |
-
$spam_contents['error_type'] =
|
1073 |
$spam_contents['author'] = mb_strcut( strip_tags( $author ), 0, 255 );
|
1074 |
$spam_contents['comment'] = mb_strcut( strip_tags( $comment ), 0, 255 );
|
1075 |
|
@@ -1108,6 +1213,7 @@ function addIpAddresses(newAddressStr) {
|
|
1108 |
*/
|
1109 |
function spams_list() {
|
1110 |
global $wpdb;
|
|
|
1111 |
$_saved = FALSE;
|
1112 |
|
1113 |
// ブラックIPリスト
|
@@ -1336,31 +1442,31 @@ function addIpAddresses(newAddressStr) {
|
|
1336 |
// エラー変換
|
1337 |
$spam_error_type_str = $spam_error_type;
|
1338 |
switch ( $spam_error_type ) {
|
1339 |
-
case
|
1340 |
$spam_error_type_str = '日本語以外';
|
1341 |
break;
|
1342 |
-
case
|
1343 |
$spam_error_type_str = '必須キーワード無し';
|
1344 |
break;
|
1345 |
-
case
|
1346 |
$spam_error_type_str = 'NGキーワード混入';
|
1347 |
break;
|
1348 |
-
case
|
1349 |
$spam_error_type_str = 'ブロック対象IPアドレス';
|
1350 |
break;
|
1351 |
-
case
|
1352 |
-
$spam_error_type_str = '
|
1353 |
break;
|
1354 |
-
case
|
1355 |
$spam_error_type_str = 'トラックバックスパム';
|
1356 |
break;
|
1357 |
-
case
|
1358 |
$spam_error_type_str = 'URL文字列混入数オーバー';
|
1359 |
break;
|
1360 |
-
case
|
1361 |
$spam_error_type_str = '一定時間スパム判定エラー';
|
1362 |
break;
|
1363 |
-
case
|
1364 |
$spam_error_type_str = 'ダミー項目エラー';
|
1365 |
break;
|
1366 |
}
|
4 |
* <p>ThrowsSpamAway</p> Class
|
5 |
* WordPress's Plugin
|
6 |
* @author Takeshi Satoh@GTI Inc. 2014
|
7 |
+
* @version 2.6.5
|
8 |
*/
|
9 |
class ThrowsSpamAway {
|
10 |
|
13 |
var $table_name = NULL;
|
14 |
|
15 |
public function __construct() {
|
16 |
+
|
17 |
+
// エラー記号
|
18 |
+
if ( !defined('MUST_WORD') ) {
|
19 |
+
define( 'MUST_WORD' ,'must_word' );
|
20 |
+
define( 'NG_WORD', 'ng_word' );
|
21 |
+
define( 'BLOCK_IP', 'block_ip' );
|
22 |
+
define( 'SPAM_BLACKLIST', 'spam_champuru' );
|
23 |
+
define( 'URL_COUNT_OVER', 'url_count_over' );
|
24 |
+
define( 'SPAM_LIMIT_OVER', 'spam_limit_over' );
|
25 |
+
define( 'DUMMY_FIELD', 'dummy_param_field' );
|
26 |
+
|
27 |
+
define( 'SPAM_TRACKBACK', 'spam_trackback' );
|
28 |
+
define( 'NOT_JAPANESE', 'not_japanese');
|
29 |
+
}
|
30 |
+
|
31 |
global $default_spam_data_save;
|
32 |
global $wpdb;
|
33 |
// 接頭辞(wp_)を付けてテーブル名を設定
|
137 |
if ( strlen( trim( $caution_msg ) ) > 0 ) {
|
138 |
echo '<p id="throwsSpamAway">'.$caution_msg.'</p>'; // div から p タグへ変更
|
139 |
}
|
|
|
140 |
}
|
141 |
|
142 |
function comment_form_dummy_param_field() {
|
149 |
echo '<p class="tsa_param_field_tsa_2">post date<span class="required">*</span><input type="text" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" size="30" value="'.date( 'Y-m-d H:i:s' ).'" />
|
150 |
</p>';
|
151 |
}
|
|
|
152 |
}
|
153 |
|
154 |
function comment_post( $id ) {
|
204 |
}
|
205 |
$error_msg = '';
|
206 |
switch ( $error_type ) {
|
207 |
+
case MUST_WORD :
|
208 |
$error_msg = get_option( 'tsa_must_key_error_message', $default_must_key_error_msg );
|
209 |
break;
|
210 |
+
case NG_WORD :
|
211 |
$error_msg = get_option( 'tsa_ng_key_error_message', $default_ng_key_error_msg );
|
212 |
break;
|
213 |
+
case BLOCK_IP :
|
214 |
$error_msg = get_option( 'tsa_block_ip_address_error_message', $default_block_ip_address_error_msg );
|
215 |
break;
|
216 |
+
case SPAM_BLACKLIST :
|
217 |
$error_msg = get_option( 'tsa_block_ip_address_error_message', $default_block_ip_address_error_msg );
|
218 |
+
case URL_COUNT_OVER :
|
219 |
$error_msg = get_option( 'tsa_url_count_over_error_message', $default_url_count_over_error_msg );
|
220 |
break;
|
221 |
+
case SPAM_LIMIT_OVER :
|
222 |
$error_msg = get_option( 'tsa_spam_limit_over_interval_error_message', $default_spam_limit_over_interval_error_msg );
|
223 |
break;
|
224 |
+
case DUMMY_FIELD : // ダミーフィールドの場合は通常メッセージ
|
225 |
default :
|
226 |
$error_msg = get_option( 'tsa_error_message', $default_error_msg );
|
227 |
}
|
271 |
foreach ( $results as $item ) {
|
272 |
if ( trim( $item->comment_author_IP ) == trim( $target_ip ) ) {
|
273 |
// ブロックしたいIP
|
274 |
+
$error_type = BLOCK_IP;
|
275 |
return FALSE;
|
276 |
}
|
277 |
}
|
287 |
if ( strpos( $ip, '/' ) != FALSE ) {
|
288 |
if ( $this->in_cidr( $target_ip, $ip ) ) {
|
289 |
// ブロックしたいIP
|
290 |
+
$error_type = BLOCK_IP;
|
291 |
return FALSE;
|
292 |
}
|
293 |
} elseif ( trim( $ip ) == trim( $target_ip ) ) {
|
294 |
// ブロックしたいIP
|
295 |
+
$error_type = BLOCK_IP;
|
296 |
return FALSE;
|
297 |
} else {
|
298 |
// セーフIP
|
302 |
return TRUE;
|
303 |
}
|
304 |
|
305 |
+
// /**
|
306 |
+
// * スパムちゃんぷるー利用ブロック
|
307 |
+
// */
|
308 |
+
// function reject_spam_ip( $ip ) {
|
309 |
+
// global $spam_champuru_host;
|
310 |
+
// global $error_type;
|
311 |
+
|
312 |
+
// $spam_def_ip = '127.0.0.2';
|
313 |
+
// $host = $spam_champuru_host;
|
314 |
+
// $pattern = '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/';
|
315 |
+
// $check_IP = trim( preg_match( $pattern, $ip ) ? $ip : $_SERVER['REMOTE_ADDR'] );
|
316 |
+
// $spam = false;
|
317 |
+
// if ( preg_match( $pattern, $check_IP ) ) {
|
318 |
+
// $host = implode( '.',array_reverse( split( '\.',$check_IP ) ) ) . '.' . $host;
|
319 |
+
// if ( function_exists( 'dns_get_record' ) ) {
|
320 |
+
// $check_recs = dns_get_record( $host, DNS_A );
|
321 |
+
// if ( isset( $check_recs[0]['ip'] ) ) $spam = ( $check_recs[0]['ip'] === $spam_def_ip );
|
322 |
+
// unset( $check_recs );
|
323 |
+
// } elseif ( function_exists( 'gethostbyname' ) ) {
|
324 |
+
// $checked = ( gethostbyname( $host ) === $spam_def_ip );
|
325 |
+
// } elseif ( class_exists( 'Net_DNS_Resolver' ) ) {
|
326 |
+
// $resolver = new Net_DNS_Resolver();
|
327 |
+
// $response = $resolver->query( $host, 'A' );
|
328 |
+
// if ( $response ) {
|
329 |
+
// foreach ( $response->answer as $rr ) {
|
330 |
+
// if ( $rr->type === 'A' ) {
|
331 |
+
// $spam = ( $rr->address === $spam_def_ip );
|
332 |
+
// break;
|
333 |
+
// }
|
334 |
+
// }
|
335 |
+
// }
|
336 |
+
// unset( $response );
|
337 |
+
// unset( $resolver );
|
338 |
+
// } elseif ( function_exists( 'checkdnsrr' ) ) {
|
339 |
+
// $spam = ( checkdnsrr( $host, 'A' ) === true );
|
340 |
+
// }
|
341 |
+
// }
|
342 |
+
// if ( $spam ) {
|
343 |
+
// $error_type = SPAM_BLACKLIST;
|
344 |
+
// return FALSE;
|
345 |
+
// }
|
346 |
+
// return TRUE;
|
347 |
+
// }
|
348 |
+
|
349 |
/**
|
350 |
+
* スパムちゃんぷるー代替スパムブラックリスト利用ブロック
|
351 |
*/
|
352 |
function reject_spam_ip( $ip ) {
|
353 |
+
|
354 |
+
// スパムブラックリスト [tsa_spam_champuru_hosts] 配列型
|
355 |
+
global $default_spam_champuru_hosts;
|
356 |
+
// スパムブラックリスト by テキスト [tsa_spam_chmapuru_by_text] 文字列型(カンマ区切り)
|
357 |
+
global $default_spam_champuru_by_text;
|
358 |
+
|
359 |
global $error_type;
|
360 |
|
361 |
+
|
362 |
+
$spam_blacklist_hosts = get_option( 'tsa_spam_champuru_hosts', $default_spam_champuru_hosts );
|
363 |
+
$spam_blacklist_by_text = get_option( 'tsa_spam_champuru_by_text', $default_spam_champuru_by_text);
|
364 |
+
|
365 |
+
$spam_blacklist_by_text_lists = explode( ',', $spam_blacklist_by_text );
|
366 |
+
if ( count( $spam_blacklist_by_text_lists ) > 0 ) {
|
367 |
+
foreach ( $spam_blacklist_by_text_lists as $item ) {
|
368 |
+
$item = trim( $item );
|
369 |
+
}
|
370 |
+
}
|
371 |
+
|
372 |
+
global $default_spam_champuru_by_text;
|
373 |
+
|
374 |
+
$check_list = array_merge($spam_blacklist_hosts, $spam_blacklist_by_text_lists);
|
375 |
+
|
376 |
$spam_def_ip = '127.0.0.2';
|
|
|
377 |
$pattern = '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/';
|
378 |
$check_IP = trim( preg_match( $pattern, $ip ) ? $ip : $_SERVER['REMOTE_ADDR'] );
|
379 |
+
$spam = FALSE;
|
380 |
if ( preg_match( $pattern, $check_IP ) ) {
|
381 |
+
|
382 |
+
// check
|
383 |
+
$i = 0;
|
384 |
+
while($i < count($check_list)){
|
385 |
+
$check = $ip . $check_list[$i];
|
386 |
+
$check = implode( '.',array_reverse( split( '\.',$check_IP ) ) ) . '.' . $check_list[$i];
|
387 |
+
|
388 |
+
$i ++;
|
389 |
+
|
390 |
+
$result = gethostbyname($check);
|
391 |
+
|
392 |
+
if ($result != $check) {
|
393 |
+
$spam = TRUE;
|
394 |
+
break;
|
|
|
|
|
|
|
395 |
}
|
|
|
|
|
|
|
|
|
396 |
}
|
397 |
}
|
398 |
if ( $spam ) {
|
399 |
+
$error_type = SPAM_BLACKLIST;
|
400 |
return FALSE;
|
401 |
}
|
402 |
return TRUE;
|
483 |
$tsa_spam_limit_count = intval( get_option( 'tsa_spam_limit_count', $default_spam_limit_count ) );
|
484 |
if ( $spam_count > $tsa_spam_limit_count ) {
|
485 |
// アウト!
|
486 |
+
$error_type = SPAM_LIMIT_OVER;
|
487 |
return FALSE;
|
488 |
}
|
489 |
}
|
491 |
$tsa_dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $default_dummy_param_field_flg );
|
492 |
if ( $tsa_dummy_param_field_flg == '1') {
|
493 |
if ( ! empty( $_POST['tsa_param_field_tsa_3'] ) ) { // このフィールドにリクエストパラメータが入る場合はスパム判定
|
494 |
+
$error_type = DUMMY_FIELD;
|
495 |
return FALSE;
|
496 |
}
|
497 |
}
|
498 |
// シングルバイトだけならエラー
|
499 |
if ( $tsa_on_flg != '2' && strlen( bin2hex( $comment ) ) / 2 == mb_strlen( $comment ) ) {
|
500 |
+
$error_type = NOT_JAPANESE;
|
501 |
return FALSE;
|
502 |
} else {
|
503 |
// 日本語文字列必須含有数
|
557 |
|
558 |
$flg = ( $tsa_japanese_string_min_count < $count_flg );
|
559 |
if ($flg == FALSE) {
|
560 |
+
$error_type = NOT_JAPANESE;
|
561 |
return FALSE;
|
562 |
}
|
563 |
}
|
566 |
$keyword_list = mb_split( ',', $tsa_ng_keywords );
|
567 |
foreach ( $keyword_list as $key ) {
|
568 |
if ( preg_match('/'.trim( $key ).'/u', $author.$comment) ) {
|
569 |
+
$error_type = NG_WORD;
|
570 |
return FALSE;
|
571 |
}
|
572 |
}
|
588 |
if ( $tsa_url_count_check != '2' ) {
|
589 |
if ( substr_count( strtolower( $author.$comment ), 'http') > $tsa_ok_url_count) {
|
590 |
// URL文字列(httpの数)が多いエラー
|
591 |
+
$error_type = URL_COUNT_OVER;
|
592 |
return FALSE;
|
593 |
}
|
594 |
}
|
651 |
global $default_ok_url_count;
|
652 |
global $default_spam_champuru_flg;
|
653 |
|
654 |
+
global $default_spam_champuru_hosts;
|
655 |
+
global $default_spam_champuru_by_text;
|
656 |
+
|
657 |
global $default_spam_limit_flg;
|
658 |
global $default_spam_limit_minutes;
|
659 |
global $default_spam_limit_count;
|
664 |
global $default_spam_display_day_count;
|
665 |
global $default_spam_keep_day_count;
|
666 |
|
667 |
+
global $lower_spam_keep_day_count;
|
668 |
+
|
669 |
+
global $spam_champuru_hosts;
|
670 |
+
|
671 |
// 設定完了の場合はメッセージ表示
|
672 |
$_saved = FALSE;
|
673 |
if ( esc_attr( $_GET['settings-updated'] ) == 'true' ) {
|
798 |
</td>
|
799 |
</tr>
|
800 |
<tr valign="top">
|
801 |
+
<th scope="row">
|
802 |
+
日本語文字列含有数<br />
|
803 |
+
(この文字列に達していない場合無視対象となります。)
|
804 |
+
</th>
|
805 |
+
<td>
|
806 |
+
<input type="text" name="tsa_japanese_string_min_count"
|
807 |
value="<?php echo get_option( 'tsa_japanese_string_min_count', $default_japanese_string_min_count ); ?>" /><br />
|
808 |
(初期設定:<?php echo $default_japanese_string_min_count; ?>)
|
809 |
</td>
|
953 |
<h3 id="ip_opt">投稿IPアドレスによる制御設定</h3>
|
954 |
<table class="form-table">
|
955 |
<tr valign="top">
|
956 |
+
<th scope="row" rowspan="3">SPAMブラックリスト利用</th>
|
957 |
<td><?php
|
958 |
$chk = '';
|
959 |
if ( get_option( 'tsa_spam_champuru_flg', $default_spam_champuru_flg) == '1' ) {
|
960 |
$chk = ' checked="checked"';
|
961 |
}
|
962 |
?>
|
963 |
+
<label><input type="checkbox" name="tsa_spam_champuru_flg" value='1' <?php esc_attr_e( $chk ); ?> />スパムブラックリストサービスに登録されているIPアドレスからのコメントを拒否する</label><br />
|
964 |
(初期設定:<?php echo ( $default_spam_champuru_flg == '2' ? "しない" : "する" ); ?>)
|
965 |
</td>
|
966 |
</tr>
|
967 |
+
<tr>
|
968 |
+
<td>
|
969 |
+
<h4>下記の2つのリストはマージされて利用します。※多ければ多いほどトラッフィク量が上がりますので注意してください。</h4>
|
970 |
+
<strong>【利用するスパムブラックリストサービス】</strong><br />
|
971 |
+
<ul>
|
972 |
+
<?php
|
973 |
+
$spam_hosts = get_option( 'tsa_spam_champuru_hosts', $default_spam_champuru_hosts );
|
974 |
+
|
975 |
+
foreach ( $spam_champuru_hosts as $check_host ) { ?>
|
976 |
+
<li><input type="checkbox" name="tsa_spam_champuru_hosts[]" value="<?php echo $check_host; ?>"<?php
|
977 |
+
if ( in_array( $check_host, $spam_hosts ) ) { ?> checked="checked"<?php } ?>><?php echo $check_host; ?></li>
|
978 |
+
<?php } ?>
|
979 |
+
</ul>
|
980 |
+
</td>
|
981 |
+
</tr>
|
982 |
+
|
983 |
+
<tr>
|
984 |
+
<td>
|
985 |
+
<strong>【利用するスパムブラックリストサービスをテキスト入力(カンマ区切り)】</strong><br />
|
986 |
+
<input type="text" name="tsa_spam_champuru_by_text"
|
987 |
+
size="80"
|
988 |
+
value="<?php echo get_option( 'tsa_spam_champuru_by_text', $default_spam_champuru_by_text );?>" /><br />(初期設定:<?php echo $default_spam_champuru_by_text; ?>)
|
989 |
+
|
990 |
+
</td>
|
991 |
+
</tr>
|
992 |
<tr valign="top">
|
993 |
<th scope="row">WordPressのコメントで「スパム」にしたIPからの投稿にも採用する</th>
|
994 |
<td><?php
|
1085 |
<td>
|
1086 |
<input
|
1087 |
type="text" name="tsa_spam_keep_day_count" size="3"
|
1088 |
+
value="<?php echo get_option( 'tsa_spam_keep_day_count', $default_spam_keep_day_count); ?>" />日分(最低<?php echo $lower_spam_keep_day_count; ?>日)(初期設定: <?php echo $default_spam_keep_day_count; ?>)<br />
|
1089 |
<?php
|
1090 |
$chk = '';
|
1091 |
if ( get_option( 'tsa_spam_data_delete_flg', $default_spam_data_delete_flg) == '1' ) {
|
1128 |
|
1129 |
<input type="hidden" name="action" value="update" /> <input
|
1130 |
type="hidden" name="page_options"
|
1131 |
+
value="tsa_on_flg,tsa_japanese_string_min_count,tsa_back_second,tsa_caution_message,tsa_caution_msg_point,tsa_error_message,tsa_ng_keywords,tsa_ng_key_error_message,tsa_must_keywords,tsa_must_key_error_message,tsa_tb_on_flg,tsa_tb_url_flg,tsa_block_ip_addresses,tsa_ip_block_from_spam_chk_flg,tsa_block_ip_address_error_message,tsa_url_count_on_flg,tsa_ok_url_count,tsa_url_count_over_error_message,tsa_spam_data_save,tsa_spam_limit_flg,tsa_spam_limit_minutes,tsa_spam_limit_count,tsa_spam_limit_over_interval,tsa_spam_limit_over_interval_error_message,tsa_spam_champuru_flg,tsa_spam_keep_day_count,tsa_spam_data_delete_flg,tsa_white_ip_addresses,tsa_dummy_param_field_flg,tsa_memo,tsa_spam_champuru_by_text,tsa_spam_champuru_hosts" />
|
1132 |
<p class="submit" id="tsa_submit_button">
|
1133 |
<input type="submit" class="button-primary"
|
1134 |
value="<?php _e('Save Changes') ?>" />
|
1174 |
} else {
|
1175 |
if ( get_option( 'tsa_spam_data_save', $default_spam_data_save ) == '1' ) {
|
1176 |
$spam_contents = array();
|
1177 |
+
$spam_contents['error_type'] = SPAM_TRACKBACK;
|
1178 |
$spam_contents['author'] = mb_strcut( strip_tags( $author ), 0, 255 );
|
1179 |
$spam_contents['comment'] = mb_strcut( strip_tags( $comment ), 0, 255 );
|
1180 |
|
1213 |
*/
|
1214 |
function spams_list() {
|
1215 |
global $wpdb;
|
1216 |
+
global $lower_spam_keep_day_count;
|
1217 |
$_saved = FALSE;
|
1218 |
|
1219 |
// ブラックIPリスト
|
1442 |
// エラー変換
|
1443 |
$spam_error_type_str = $spam_error_type;
|
1444 |
switch ( $spam_error_type ) {
|
1445 |
+
case NOT_JAPANESE:
|
1446 |
$spam_error_type_str = '日本語以外';
|
1447 |
break;
|
1448 |
+
case MUST_WORD:
|
1449 |
$spam_error_type_str = '必須キーワード無し';
|
1450 |
break;
|
1451 |
+
case NG_WORD:
|
1452 |
$spam_error_type_str = 'NGキーワード混入';
|
1453 |
break;
|
1454 |
+
case BLOCK_IP:
|
1455 |
$spam_error_type_str = 'ブロック対象IPアドレス';
|
1456 |
break;
|
1457 |
+
case SPAM_BLACKLIST:
|
1458 |
+
$spam_error_type_str = 'スパムブラックリスト';
|
1459 |
break;
|
1460 |
+
case SPAM_TRACKBACK:
|
1461 |
$spam_error_type_str = 'トラックバックスパム';
|
1462 |
break;
|
1463 |
+
case URL_COUNT_OVER:
|
1464 |
$spam_error_type_str = 'URL文字列混入数オーバー';
|
1465 |
break;
|
1466 |
+
case SPAM_LIMIT_OVER:
|
1467 |
$spam_error_type_str = '一定時間スパム判定エラー';
|
1468 |
break;
|
1469 |
+
case DUMMY_FIELD:
|
1470 |
$spam_error_type_str = 'ダミー項目エラー';
|
1471 |
break;
|
1472 |
}
|
throws_spam_away.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
Plugin URI: http://gti.jp/tsa/
|
5 |
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
-
Version: 2.6.
|
8 |
Author URI: http://gti.jp/
|
9 |
License: GPL2
|
10 |
*/
|
@@ -31,7 +31,7 @@ require_once 'throws_spam_away.class.php';
|
|
31 |
*/
|
32 |
|
33 |
// Throws SPAM Awayバージョン
|
34 |
-
$tsa_version = '2.6.
|
35 |
// スパムデータベースバージョン
|
36 |
$tsa_db_version = 2.6; // 2.6からデータベース変更 [error_type]追加
|
37 |
|
@@ -94,12 +94,21 @@ $default_tb_on_flg = '1';
|
|
94 |
$default_tb_url_flg = '1';
|
95 |
|
96 |
/** 投稿IPアドレスによる制御設定 */
|
97 |
-
|
98 |
// スパムちゃんぷるーホスト
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
|
101 |
// すぱむちゃんぷるー利用初期設定
|
102 |
-
$default_spam_champuru_flg = '
|
|
|
|
|
103 |
|
104 |
// WordPressのcommentsテーブルで「spam」判定されたことがあるIPアドレスからの投稿を無視するか
|
105 |
$default_ip_block_from_spam_chk_flg = '1'; // "1":する
|
@@ -116,10 +125,10 @@ $default_spam_data_save = '1';
|
|
116 |
$default_spam_data_delete_flg = '1';
|
117 |
|
118 |
// スパムデータ保持期間(日)
|
119 |
-
$default_spam_keep_day_count = 30
|
120 |
|
121 |
// 最低保存期間(日)
|
122 |
-
$lower_spam_keep_day_count = 7
|
123 |
|
124 |
// 機能設定
|
125 |
$default_spam_limit_flg = '1';
|
@@ -165,6 +174,10 @@ $default_spam_limit_over_interval_error_msg = ''; // そしてその際のエラ
|
|
165 |
// URL(単純に'http'文字列のチェックのみ)文字列許容数オーバー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
166 |
// [tsa_url_count_over_error_message] 文字列型
|
167 |
|
|
|
|
|
|
|
|
|
168 |
|
169 |
|
170 |
/** プロセス */
|
4 |
Plugin URI: http://gti.jp/tsa/
|
5 |
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
+
Version: 2.6.5
|
8 |
Author URI: http://gti.jp/
|
9 |
License: GPL2
|
10 |
*/
|
31 |
*/
|
32 |
|
33 |
// Throws SPAM Awayバージョン
|
34 |
+
$tsa_version = '2.6.5';
|
35 |
// スパムデータベースバージョン
|
36 |
$tsa_db_version = 2.6; // 2.6からデータベース変更 [error_type]追加
|
37 |
|
94 |
$default_tb_url_flg = '1';
|
95 |
|
96 |
/** 投稿IPアドレスによる制御設定 */
|
97 |
+
/** ver 2.6.5から */
|
98 |
// スパムちゃんぷるーホスト
|
99 |
+
//$spam_champuru_host = 'dnsbl.spam-champuru.livedoor.com';
|
100 |
+
// すぱむちゃんぷるー代替リスト化
|
101 |
+
$spam_champuru_hosts = array("bsb.spamlookup.net", "bsb.empty.us", "list.dsbl.org", "all.rbl.jp");
|
102 |
+
|
103 |
+
$default_spam_champuru_hosts = array("bsb.spamlookup.net");
|
104 |
+
|
105 |
+
// スパムブラックリスト by テキスト
|
106 |
+
$default_spam_champuru_by_text = "";
|
107 |
|
108 |
// すぱむちゃんぷるー利用初期設定
|
109 |
+
$default_spam_champuru_flg = '2'; // "2":しない
|
110 |
+
|
111 |
+
/** /2.6.5 */
|
112 |
|
113 |
// WordPressのcommentsテーブルで「spam」判定されたことがあるIPアドレスからの投稿を無視するか
|
114 |
$default_ip_block_from_spam_chk_flg = '1'; // "1":する
|
125 |
$default_spam_data_delete_flg = '1';
|
126 |
|
127 |
// スパムデータ保持期間(日)
|
128 |
+
$default_spam_keep_day_count = 15; /** 30 -> 15 */
|
129 |
|
130 |
// 最低保存期間(日)
|
131 |
+
$lower_spam_keep_day_count = 3; /** 7 -> 3 */
|
132 |
|
133 |
// 機能設定
|
134 |
$default_spam_limit_flg = '1';
|
174 |
// URL(単純に'http'文字列のチェックのみ)文字列許容数オーバー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
175 |
// [tsa_url_count_over_error_message] 文字列型
|
176 |
|
177 |
+
// スパムブラックリスト [tsa_spam_champuru_hosts] 配列型
|
178 |
+
// スパムブラックリスト by テキスト [tsa_spam_chmapuru_by_text] 文字列型(カンマ区切り)
|
179 |
+
|
180 |
+
|
181 |
|
182 |
|
183 |
/** プロセス */
|
uninstall.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Throws SPAM Awayプラグインアンインストール
|
4 |
+
2.3 追加
|
5 |
+
2.4 追記
|
6 |
+
2.6 追記
|
7 |
+
*/
|
8 |
+
|
9 |
+
if(!defined('ABSPATH') && !defined('WP_UNINSTALL_PLUGIN')) { exit(); }
|
10 |
+
|
11 |
+
delete_option('tsa_back_content_second'); // ver.1.6以下の方用
|
12 |
+
delete_option('tsa_on_flg');
|
13 |
+
delete_option('tsa_japanese_string_min_count');
|
14 |
+
delete_option('tsa_back_second');
|
15 |
+
delete_option('tsa_caution_message');
|
16 |
+
delete_option('tsa_error_message');
|
17 |
+
delete_option('tsa_ng_keywords');
|
18 |
+
delete_option('tsa_ng_key_error_message');
|
19 |
+
delete_option('tsa_must_keywords');
|
20 |
+
delete_option('tsa_must_key_error_message');
|
21 |
+
delete_option('tsa_tb_on_flg');
|
22 |
+
delete_option('tsa_tb_url_flg');
|
23 |
+
// ver.2.0
|
24 |
+
delete_option('tsa_ip_block_from_spam_chk_flg');
|
25 |
+
delete_option('tsa_block_ip_addresses');
|
26 |
+
delete_option('tsa_block_ip_address_error_message');
|
27 |
+
// ver.2.2
|
28 |
+
delete_option('tsa_url_count_on_flg');
|
29 |
+
delete_option('tsa_ok_url_count');
|
30 |
+
delete_option('tsa_url_count_over_error_message');
|
31 |
+
// ver.2.3
|
32 |
+
delete_option('tsa_meta_version');
|
33 |
+
delete_option('tsa_spam_data_save');
|
34 |
+
// ver.2.4
|
35 |
+
delete_option('tsa_spam_limit_flg');
|
36 |
+
delete_option('tsa_spam_limit_minutes');
|
37 |
+
delete_option('tsa_spam_limit_count');
|
38 |
+
delete_option('tsa_spam_limit_over_interval');
|
39 |
+
delete_option('tsa_spam_limit_over_interval_error_message');
|
40 |
+
// ver.2.5
|
41 |
+
delete_option('tsa_spam_champuru_flg');
|
42 |
+
delete_option('tsa_spam_keep_day_count');
|
43 |
+
delete_option('tsa_spam_data_delete_flg');
|
44 |
+
delete_option('tsa_white_ip_addresses');
|
45 |
+
// ver.2.5.1
|
46 |
+
delete_option('tsa_caution_msg_point');
|
47 |
+
// ver.2.6
|
48 |
+
delete_option('tsa_empty_param_field_flg');
|
49 |
+
delete_option('tsa_memo');
|
50 |
+
|
51 |
+
// ver.2.6.5
|
52 |
+
delete_option('tsa_spam_champuru_hosts');
|
53 |
+
delete_option('tsa_spam_champuru_host'); // 2.6.4まで使用
|
54 |
+
delete_option('tsa_spam_chmapuru_by_text');
|
55 |
+
|