Version Description
Download this release
Release Info
Developer | tsato |
Plugin | Throws SPAM Away |
Version | 2.7 |
Comparing to | |
See all releases |
Code changes from version 2.6.9 to 2.7
- css/tsa_data_styles.css +141 -141
- css/tsa_styles.css +40 -40
- hostbyip.php +90 -90
- js/tsa_params.js +32 -32
- readme.txt +43 -24
- throws_spam_away.class.php +175 -117
- throws_spam_away.php +200 -204
css/tsa_data_styles.css
CHANGED
@@ -1,141 +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 |
-
|
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
CHANGED
@@ -1,40 +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 |
-
|
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
CHANGED
@@ -1,91 +1,91 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* <p>ThrowsSpamAway</p> hostbyipページ
|
4 |
-
* WordPress's Plugin
|
5 |
-
* @author Takeshi Satoh@GTI Inc. 2014
|
6 |
-
* @version 2.6.8
|
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 |
-
<style>
|
39 |
-
h2 {
|
40 |
-
background:#333;
|
41 |
-
color:#fff;
|
42 |
-
}
|
43 |
-
h3 {
|
44 |
-
background: #666;
|
45 |
-
color: #fff;
|
46 |
-
}
|
47 |
-
.tsa_hostbyip_text {
|
48 |
-
background: #999;
|
49 |
-
color: #fff;
|
50 |
-
margin:3px 0 0 0;
|
51 |
-
}
|
52 |
-
</style>
|
53 |
-
</head>
|
54 |
-
<body>
|
55 |
-
<div style="textalign: center;">
|
56 |
-
<h2><?php echo $spam_ip; ?></h2>
|
57 |
-
<?php
|
58 |
-
$spam_host = gethostbyaddr(htmlspecialchars($spam_ip));
|
59 |
-
if ($spam_host != $spam_ip) {
|
60 |
-
?>
|
61 |
-
<h3>特定のホスト情報が見つかりました。</h3>
|
62 |
-
↓↓↓<br />
|
63 |
-
|
64 |
-
<h4><?php echo $spam_host; ?></h4>
|
65 |
-
Whois: <a href="http://whois.arin.net/rest/ip/<?php echo $spam_ip; ?>" target="_blank"><?php echo $spam_ip; ?></a>
|
66 |
-
<?php
|
67 |
-
} else {
|
68 |
-
?>
|
69 |
-
<h3>このIPアドレスから特定のホスト情報は見つかりませんでした。</h3>
|
70 |
-
<?php
|
71 |
-
}
|
72 |
-
?>
|
73 |
-
<?php if ( $last_spam_comment_result != NULL ) { ?>
|
74 |
-
<div class="tsa_hostbyip_text">このIPからの最終投稿日時</div><?php echo $last_comment_date; ?><br />
|
75 |
-
<div class="tsa_hostbyip_text">このIPからスパム投稿対象となったページ</div><a href="<?php echo $last_comment_post; ?>" target="_blank"><?php echo $last_comment_post_title; ?></a><br />
|
76 |
-
<?php } ?>
|
77 |
-
<h4>スパムフィルター:<?php echo ($is_spam_champuru ? "スパムブラックリスト存在IPアドレス" : "未検出" ); ?></h4>
|
78 |
-
|
79 |
-
<div class="tsa_hostbyip_text">最新コメント内容</div>
|
80 |
-
<div ><?php if ( $spam_author != NULL && $spam_comment != NULL ) {
|
81 |
-
?>
|
82 |
-
IP: <?php esc_attr_e( $spam_ip ); ?><br />
|
83 |
-
名前:<?php echo esc_attr( $spam_author ); ?><br />
|
84 |
-
内容:<?php esc_attr_e( $spam_comment ); ?><?php
|
85 |
-
} ?>
|
86 |
-
</div>
|
87 |
-
|
88 |
-
<div style="text-align:right;"><a href="javascript:void(0);" onclick="window.close();">閉じる</a></div>
|
89 |
-
</div>
|
90 |
-
</body>
|
91 |
</html>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* <p>ThrowsSpamAway</p> hostbyipページ
|
4 |
+
* WordPress's Plugin
|
5 |
+
* @author Takeshi Satoh@GTI Inc. 2014
|
6 |
+
* @version 2.6.8
|
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 |
+
<style>
|
39 |
+
h2 {
|
40 |
+
background:#333;
|
41 |
+
color:#fff;
|
42 |
+
}
|
43 |
+
h3 {
|
44 |
+
background: #666;
|
45 |
+
color: #fff;
|
46 |
+
}
|
47 |
+
.tsa_hostbyip_text {
|
48 |
+
background: #999;
|
49 |
+
color: #fff;
|
50 |
+
margin:3px 0 0 0;
|
51 |
+
}
|
52 |
+
</style>
|
53 |
+
</head>
|
54 |
+
<body>
|
55 |
+
<div style="textalign: center;">
|
56 |
+
<h2><?php echo $spam_ip; ?></h2>
|
57 |
+
<?php
|
58 |
+
$spam_host = gethostbyaddr(htmlspecialchars($spam_ip));
|
59 |
+
if ($spam_host != $spam_ip) {
|
60 |
+
?>
|
61 |
+
<h3>特定のホスト情報が見つかりました。</h3>
|
62 |
+
↓↓↓<br />
|
63 |
+
|
64 |
+
<h4><?php echo $spam_host; ?></h4>
|
65 |
+
Whois: <a href="http://whois.arin.net/rest/ip/<?php echo $spam_ip; ?>" target="_blank"><?php echo $spam_ip; ?></a>
|
66 |
+
<?php
|
67 |
+
} else {
|
68 |
+
?>
|
69 |
+
<h3>このIPアドレスから特定のホスト情報は見つかりませんでした。</h3>
|
70 |
+
<?php
|
71 |
+
}
|
72 |
+
?>
|
73 |
+
<?php if ( $last_spam_comment_result != NULL ) { ?>
|
74 |
+
<div class="tsa_hostbyip_text">このIPからの最終投稿日時</div><?php echo $last_comment_date; ?><br />
|
75 |
+
<div class="tsa_hostbyip_text">このIPからスパム投稿対象となったページ</div><a href="<?php echo $last_comment_post; ?>" target="_blank"><?php echo $last_comment_post_title; ?></a><br />
|
76 |
+
<?php } ?>
|
77 |
+
<h4>スパムフィルター:<?php echo ($is_spam_champuru ? "スパムブラックリスト存在IPアドレス" : "未検出" ); ?></h4>
|
78 |
+
|
79 |
+
<div class="tsa_hostbyip_text">最新コメント内容</div>
|
80 |
+
<div ><?php if ( $spam_author != NULL && $spam_comment != NULL ) {
|
81 |
+
?>
|
82 |
+
IP: <?php esc_attr_e( $spam_ip ); ?><br />
|
83 |
+
名前:<?php echo esc_attr( $spam_author ); ?><br />
|
84 |
+
内容:<?php esc_attr_e( $spam_comment ); ?><?php
|
85 |
+
} ?>
|
86 |
+
</div>
|
87 |
+
|
88 |
+
<div style="text-align:right;"><a href="javascript:void(0);" onclick="window.close();">閉じる</a></div>
|
89 |
+
</div>
|
90 |
+
</body>
|
91 |
</html>
|
js/tsa_params.js
CHANGED
@@ -1,33 +1,33 @@
|
|
1 |
-
/**
|
2 |
-
* <p>ThrowsSpamAway</p> JavaScript
|
3 |
-
* WordPress's Plugin
|
4 |
-
* @author Takeshi Satoh@GTI Inc. 2015
|
5 |
-
* @since version2.6
|
6 |
-
*
|
7 |
-
* -- updated --
|
8 |
-
* 2014/05/10 debug for IE8
|
9 |
-
* 2015/07/25 �C�����C���X�^�C����display:none�w�肵������ hide�폜
|
10 |
-
*/
|
11 |
-
|
12 |
-
jQuery(function(){
|
13 |
-
jQuery('.tsa_param_field_tsa_2 input#tsa_param_field_tsa_3').val( jQuery('.tsa_param_field_tsa_ input').val() ); // copy
|
14 |
-
|
15 |
-
var date = new Date();
|
16 |
-
var iso = null;
|
17 |
-
if ( typeof date.toISOString != 'undefined' ) {
|
18 |
-
iso = date.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/);
|
19 |
-
current_date = iso[1] + ' ' + iso[2];
|
20 |
-
if ( jQuery('#comments form input#tsa_param_field_tsa_3').length == 0 ) {
|
21 |
-
jQuery('#comments form').append('<input type="hidden" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" value="'+current_date+'" />'); // add to comment form
|
22 |
-
}
|
23 |
-
|
24 |
-
if ( jQuery('#respond form input#tsa_param_field_tsa_3').length == 0 ) {
|
25 |
-
jQuery('#respond form').append('<input type="hidden" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" value="'+current_date+'" />'); // add to comment form
|
26 |
-
}
|
27 |
-
|
28 |
-
if ( jQuery('form#commentform input#tsa_param_field_tsa_3').length == 0 ) {
|
29 |
-
jQuery('form#commentform').append('<input type="hidden" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" value="'+current_date+'" />'); // add to comment form
|
30 |
-
}
|
31 |
-
}
|
32 |
-
|
33 |
});
|
1 |
+
/**
|
2 |
+
* <p>ThrowsSpamAway</p> JavaScript
|
3 |
+
* WordPress's Plugin
|
4 |
+
* @author Takeshi Satoh@GTI Inc. 2015
|
5 |
+
* @since version2.6
|
6 |
+
*
|
7 |
+
* -- updated --
|
8 |
+
* 2014/05/10 debug for IE8
|
9 |
+
* 2015/07/25 �C�����C���X�^�C����display:none�w�肵������ hide�폜
|
10 |
+
*/
|
11 |
+
|
12 |
+
jQuery(function(){
|
13 |
+
jQuery('.tsa_param_field_tsa_2 input#tsa_param_field_tsa_3').val( jQuery('.tsa_param_field_tsa_ input').val() ); // copy
|
14 |
+
|
15 |
+
var date = new Date();
|
16 |
+
var iso = null;
|
17 |
+
if ( typeof date.toISOString != 'undefined' ) {
|
18 |
+
iso = date.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/);
|
19 |
+
current_date = iso[1] + ' ' + iso[2];
|
20 |
+
if ( jQuery('#comments form input#tsa_param_field_tsa_3').length == 0 ) {
|
21 |
+
jQuery('#comments form').append('<input type="hidden" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" value="'+current_date+'" />'); // add to comment form
|
22 |
+
}
|
23 |
+
|
24 |
+
if ( jQuery('#respond form input#tsa_param_field_tsa_3').length == 0 ) {
|
25 |
+
jQuery('#respond form').append('<input type="hidden" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" value="'+current_date+'" />'); // add to comment form
|
26 |
+
}
|
27 |
+
|
28 |
+
if ( jQuery('form#commentform input#tsa_param_field_tsa_3').length == 0 ) {
|
29 |
+
jQuery('form#commentform').append('<input type="hidden" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" value="'+current_date+'" />'); // add to comment form
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
});
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: tsato
|
|
3 |
Donate link: http://gti.jp/throws-spam-away
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
-
Tested up to: 4.
|
7 |
-
Stable tag: 2.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -50,7 +50,7 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
50 |
|
51 |
【ホワイトリスト】
|
52 |
ホワイトリストに登録したIPアドレスからの投稿はすべてのフィルタを通しませんので優先的に通常コメントとしてノーチェックで投稿処理がなされます。
|
53 |
-
|
54 |
|
55 |
IPアドレスの指定「ブロックリスト」「ホワイトリスト」共に「改行」区切りで複数入力できますが、「192.168.1.0/24」のようにIPアドレスの範囲指定も可能です。
|
56 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
@@ -82,6 +82,12 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
82 |
※コメント投稿時のスパムコメント対応の煩わしさが原因で作ったものですのでスパム判定されたコメントを保持しておりません。
|
83 |
|
84 |
-- これまでの変更点について
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
・バージョン2.6.9
|
87 |
2015/7/25
|
@@ -183,16 +189,16 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
183 |
|
184 |
・バージョン2.4
|
185 |
スパム情報収集機能を「スパムコメント情報を保存する」にした場合に限り、「一定時間内スパム認定機能」が作動するように出来ます。
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
|
197 |
スパム投稿の一覧を見やすくしました。
|
198 |
これまでスパム投稿情報の表示が日付が一覧で縦表示していたため見づらいものとなっておりました。
|
@@ -272,6 +278,19 @@ e.g.
|
|
272 |
== Screenshots ==
|
273 |
|
274 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
= 2.6.8 =
|
276 |
2015/5/12
|
277 |
「スパムデータベースへの保存」を デフォルト OFF にしました。
|
@@ -363,16 +382,16 @@ e.g.
|
|
363 |
・このIPアドレスからスパム投稿を受けた記事(リンク)
|
364 |
|
365 |
スパム情報収集機能を「スパムコメント情報を保存する」にした場合に限り、「一定時間内スパム認定機能」が作動するように出来ます。
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
|
377 |
IPアドレス指定を「カンマ区切り」から「改行区切り」へ変更。スパム投稿IPアドレス情報に下記データ追加
|
378 |
○IPアドレス
|
@@ -499,4 +518,4 @@ NGキーワード(日本語及びその他言語)の設定による無視機
|
|
499 |
とりあえず作りました!
|
500 |
== Arbitrary section ==
|
501 |
|
502 |
-
== A brief Markdown Example ==
|
3 |
Donate link: http://gti.jp/throws-spam-away
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
+
Tested up to: 4.3.1
|
7 |
+
Stable tag: 2.7
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
50 |
|
51 |
【ホワイトリスト】
|
52 |
ホワイトリストに登録したIPアドレスからの投稿はすべてのフィルタを通しませんので優先的に通常コメントとしてノーチェックで投稿処理がなされます。
|
53 |
+
※ホワイトリストが一番強力にしてありますので、このIPアドレスがAkismetで捉えられていてもスパムちゃんぷるーでスパム扱いになったとしても優先で通過させます。
|
54 |
|
55 |
IPアドレスの指定「ブロックリスト」「ホワイトリスト」共に「改行」区切りで複数入力できますが、「192.168.1.0/24」のようにIPアドレスの範囲指定も可能です。
|
56 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
82 |
※コメント投稿時のスパムコメント対応の煩わしさが原因で作ったものですのでスパム判定されたコメントを保持しておりません。
|
83 |
|
84 |
-- これまでの変更点について
|
85 |
+
・バージョン 2.7
|
86 |
+
2015/10/24
|
87 |
+
スパム判定メソッドを整理し外部から利用できるようにした。
|
88 |
+
|
89 |
+
・バージョン 2.6.10
|
90 |
+
管理画面レイアウト崩れ修正
|
91 |
|
92 |
・バージョン2.6.9
|
93 |
2015/7/25
|
189 |
|
190 |
・バージョン2.4
|
191 |
スパム情報収集機能を「スパムコメント情報を保存する」にした場合に限り、「一定時間内スパム認定機能」が作動するように出来ます。
|
192 |
+
この「○」を設定します→《○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定》
|
193 |
+
例えば、「10分以内に2回スパムとなったら10分間、当該IPからのコメントはスパム扱いする」とした場合は
|
194 |
+
過去(今から)10分前から今まで2回スパム扱いとなったIPからの投稿は3回目以降スパム扱いとなります。
|
195 |
+
そのため、10分以内に3回目のスパムを作ってしまったためそこから10分以上経過しないとずっとスパム扱いになってしまいます。
|
196 |
+
今までのように「これは・・・・ダメ」「これは・・・・ダメ」「これは・・・・行けた!」「よっしゃーー!突っ込めー!」という風にはできなくなるということです。
|
197 |
+
上記の例はデフォルト値ですが、「1時間(60分)以内に3回スパムになったら24時間(1440分)スパム扱い」という設定の場合は
|
198 |
+
24時間以内に3回スパムがあったら・・・という設定とほぼ同等(完全に同等ではありませんが・・・)ですので
|
199 |
+
24時間の方に合わせる形で24時間以内のスパム回数を算出するようにしています。(今後見直すかもしれません)
|
200 |
+
あまり長い時間を指定しますとコメント欄への反映が遅くなりますので気をつけてください。
|
201 |
+
5~10分程度を推奨します。
|
202 |
|
203 |
スパム投稿の一覧を見やすくしました。
|
204 |
これまでスパム投稿情報の表示が日付が一覧で縦表示していたため見づらいものとなっておりました。
|
278 |
== Screenshots ==
|
279 |
|
280 |
== Changelog ==
|
281 |
+
= 2.7 =
|
282 |
+
スパム判定メソッドの整理を実施。
|
283 |
+
外部から利用できるようにしました。
|
284 |
+
|
285 |
+
= 2.6.10 =
|
286 |
+
管理画面レイアウト崩れの修正
|
287 |
+
|
288 |
+
= 2.6.9 =
|
289 |
+
2015/8/3
|
290 |
+
すぱむちゃんぷるーの代替スパムフィルタが判定の不具合となる危険性がありましたので一度機能削除しました。
|
291 |
+
テキストでリストを記述されている場合はそのまま稼働します。
|
292 |
+
ダミー項目機能において一部テーマで隠しフィールドが表示されてしまう不具合報告がありましたので修正しました。
|
293 |
+
|
294 |
= 2.6.8 =
|
295 |
2015/5/12
|
296 |
「スパムデータベースへの保存」を デフォルト OFF にしました。
|
382 |
・このIPアドレスからスパム投稿を受けた記事(リンク)
|
383 |
|
384 |
スパム情報収集機能を「スパムコメント情報を保存する」にした場合に限り、「一定時間内スパム認定機能」が作動するように出来ます。
|
385 |
+
この「○」を設定します→《○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定》
|
386 |
+
例えば、「10分以内に2回スパムとなったら10分間、当該IPからのコメントはスパム扱いする」とした場合は
|
387 |
+
過去(今から)10分前から今まで2回スパム扱いとなったIPからの投稿は3回目以降スパム扱いとなります。
|
388 |
+
そのため、10分以内に3回目のスパムを作ってしまったためそこから10分以上経過しないとずっとスパム扱いになってしまいます。
|
389 |
+
今までのように「これは・・・・ダメ」「これは・・・・ダメ」「これは・・・・行けた!」「よっしゃーー!突っ込めー!」という風にはできなくなるということです。
|
390 |
+
上記の例はデフォルト値ですが、「1時間(60分)以内に3回スパムになったら24時間(1440分)スパム扱い」という設定の場合は
|
391 |
+
24時間以内に3回スパムがあったら・・・という設定とほぼ同等(完全に同等ではありませんが・・・)ですので
|
392 |
+
24時間の方に合わせる形で24時間以内のスパム回数を算出するようにしています。(今後見直すかもしれません)
|
393 |
+
あまり長い時間を指定しますとコメント欄への反映が遅くなりますので気をつけてください。
|
394 |
+
5~10分程度を推奨します。
|
395 |
|
396 |
IPアドレス指定を「カンマ区切り」から「改行区切り」へ変更。スパム投稿IPアドレス情報に下記データ追加
|
397 |
○IPアドレス
|
518 |
とりあえず作りました!
|
519 |
== Arbitrary section ==
|
520 |
|
521 |
+
== A brief Markdown Example ==
|
throws_spam_away.class.php
CHANGED
@@ -4,13 +4,15 @@
|
|
4 |
* <p>ThrowsSpamAway</p> Class
|
5 |
* WordPress's Plugin
|
6 |
* @author Takeshi Satoh@GTI Inc. 2015
|
7 |
-
* @version 2.
|
8 |
*/
|
9 |
class ThrowsSpamAway {
|
10 |
|
11 |
// データベースのversion
|
12 |
var $table_name = NULL;
|
13 |
|
|
|
|
|
14 |
public function __construct() {
|
15 |
global $default_spam_data_save;
|
16 |
global $tsa_spam_tbl_name;
|
@@ -233,12 +235,12 @@ class ThrowsSpamAway {
|
|
233 |
global $default_block_ip_address_error_msg;
|
234 |
global $default_url_count_over_error_msg;
|
235 |
global $default_spam_limit_over_interval_error_msg;
|
236 |
-
global $error_type;
|
237 |
|
238 |
// ログインしている場合は通過させます。
|
239 |
if ( $user_ID ) {
|
240 |
return $id;
|
241 |
}
|
|
|
242 |
// コメント(comment)及び名前(author)の中も検査
|
243 |
$author = esc_attr( $_POST['author'] );
|
244 |
$comment = esc_attr( $_POST['comment'] );
|
@@ -274,6 +276,7 @@ class ThrowsSpamAway {
|
|
274 |
if ( $newThrowsSpamAway->validation( $comment, $author, $id ) ) {
|
275 |
return $id;
|
276 |
}
|
|
|
277 |
$error_msg = '';
|
278 |
switch ( $error_type ) {
|
279 |
case MUST_WORD :
|
@@ -317,6 +320,141 @@ class ThrowsSpamAway {
|
|
317 |
}
|
318 |
}
|
319 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
320 |
/**
|
321 |
* IPアドレスのチェックメソッド
|
322 |
* @param string $target_ip
|
@@ -325,7 +463,7 @@ class ThrowsSpamAway {
|
|
325 |
global $wpdb; // WordPress DBアクセス
|
326 |
global $default_spam_champuru_flg; // すぱむちゃんぷるー利用初期値
|
327 |
global $newThrowsSpamAway;
|
328 |
-
|
329 |
// スパムフィルター利用あれば始めに通す
|
330 |
// 1.スパムちゃんぷるー
|
331 |
$spam_filter_spam_champuru_flg = get_option( 'tsa_spam_champuru_flg', $default_spam_champuru_flg );
|
@@ -343,7 +481,7 @@ class ThrowsSpamAway {
|
|
343 |
foreach ( $results as $item ) {
|
344 |
if ( trim( $item->comment_author_IP ) == trim( $target_ip ) ) {
|
345 |
// ブロックしたいIP
|
346 |
-
$error_type = BLOCK_IP;
|
347 |
return FALSE;
|
348 |
}
|
349 |
}
|
@@ -359,12 +497,12 @@ class ThrowsSpamAway {
|
|
359 |
if ( strpos( $ip, '/' ) != FALSE ) {
|
360 |
if ( $this->in_cidr( $target_ip, $ip ) ) {
|
361 |
// ブロックしたいIP
|
362 |
-
$error_type = BLOCK_IP;
|
363 |
return FALSE;
|
364 |
}
|
365 |
} elseif ( trim( $ip ) == trim( $target_ip ) ) {
|
366 |
// ブロックしたいIP
|
367 |
-
$error_type = BLOCK_IP;
|
368 |
return FALSE;
|
369 |
} else {
|
370 |
// セーフIP
|
@@ -384,9 +522,6 @@ class ThrowsSpamAway {
|
|
384 |
// スパムブラックリスト by テキスト [tsa_spam_chmapuru_by_text] 文字列型(カンマ区切り)
|
385 |
global $default_spam_champuru_by_text;
|
386 |
|
387 |
-
global $error_type;
|
388 |
-
|
389 |
-
|
390 |
// $spam_blacklist_hosts = get_option( 'tsa_spam_champuru_hosts', $default_spam_champuru_hosts );
|
391 |
$spam_blacklist_by_text = get_option( 'tsa_spam_champuru_by_text', $default_spam_champuru_by_text);
|
392 |
|
@@ -428,7 +563,7 @@ class ThrowsSpamAway {
|
|
428 |
}
|
429 |
}
|
430 |
if ( $spam ) {
|
431 |
-
$error_type = SPAM_BLACKLIST;
|
432 |
return FALSE;
|
433 |
}
|
434 |
return TRUE;
|
@@ -460,14 +595,13 @@ class ThrowsSpamAway {
|
|
460 |
*/
|
461 |
function validation( $comment, $author, $post_id = NULL ) {
|
462 |
global $newThrowsSpamAway;
|
463 |
-
global $error_type;
|
464 |
global $default_on_flg; // 日本語以外を弾くかどうか初期値
|
465 |
global $default_dummy_param_field_flg; // ダミー項目によるスパム判定初期値
|
466 |
global $default_url_count_check_flg; // URL数を制御するか初期設定値
|
467 |
global $default_ok_url_count; // 制限する場合のURL数初期設定値
|
468 |
global $default_japanese_string_min_count; // 日本語文字最小含有数
|
469 |
|
470 |
-
// Throws SPAM Away 起動フラグ
|
471 |
$tsa_on_flg = get_option( 'tsa_on_flg', $default_on_flg );
|
472 |
|
473 |
// 一定時間制限チェック
|
@@ -515,7 +649,7 @@ class ThrowsSpamAway {
|
|
515 |
$tsa_spam_limit_count = intval( get_option( 'tsa_spam_limit_count', $default_spam_limit_count ) );
|
516 |
if ( $spam_count > $tsa_spam_limit_count ) {
|
517 |
// アウト!
|
518 |
-
$error_type = SPAM_LIMIT_OVER;
|
519 |
return FALSE;
|
520 |
}
|
521 |
}
|
@@ -523,110 +657,34 @@ class ThrowsSpamAway {
|
|
523 |
$tsa_dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $default_dummy_param_field_flg );
|
524 |
if ( $tsa_dummy_param_field_flg == '1') {
|
525 |
if ( ! empty( $_POST['tsa_param_field_tsa_3'] ) ) { // このフィールドにリクエストパラメータが入る場合はスパム判定
|
526 |
-
$error_type = DUMMY_FIELD;
|
527 |
return FALSE;
|
528 |
}
|
529 |
}
|
530 |
-
//
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
$
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
$
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
$tit_split = NULL;
|
555 |
-
|
556 |
-
// タイトル文字列が含まれている場合はそれを除く機能のためタイトル文字列リスト化
|
557 |
-
if ( $tsa_without_title_str == 1 && $post_id != NULL ) {
|
558 |
-
global $wpdb;
|
559 |
-
$target_post = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE ID = '".htmlspecialchars($post_id)."'");
|
560 |
-
|
561 |
-
$title = $target_post[0]->post_title;
|
562 |
-
|
563 |
-
$tit_split = $newThrowsSpamAway->mb_str_split( $title );
|
564 |
-
|
565 |
-
}
|
566 |
-
foreach ( $com_split as $it ) {
|
567 |
-
|
568 |
-
// タイトル文字列を除く
|
569 |
-
if ( $tsa_without_title_str == 1 && in_array( $it, $tit_split ) ) {
|
570 |
-
|
571 |
-
// N/A
|
572 |
-
// カウントをアップしない(日本語ではない率が上がる)
|
573 |
-
|
574 |
-
|
575 |
-
} else {
|
576 |
-
|
577 |
-
if ( preg_match('/[一-龠]+/u', $it ) ){
|
578 |
-
$count_flg += 1;
|
579 |
-
}
|
580 |
-
if ( preg_match('/[ァ-ヶー]+/u', $it ) ){
|
581 |
-
$count_flg += 1;
|
582 |
-
}
|
583 |
-
if ( preg_match('/[ぁ-ん]+/u', $it ) ){
|
584 |
-
$count_flg += 1;
|
585 |
-
}
|
586 |
-
|
587 |
-
}
|
588 |
-
}
|
589 |
-
|
590 |
-
$flg = ( $tsa_japanese_string_min_count < $count_flg );
|
591 |
-
if ($flg == FALSE) {
|
592 |
-
$error_type = NOT_JAPANESE;
|
593 |
-
return FALSE;
|
594 |
-
}
|
595 |
-
}
|
596 |
-
// 日本語文字列チェック抜けたらキーワードチェックを行う
|
597 |
-
if ( $tsa_ng_keywords != '' ) {
|
598 |
-
$keyword_list = mb_split( ',', $tsa_ng_keywords );
|
599 |
-
foreach ( $keyword_list as $key ) {
|
600 |
-
if ( preg_match('/'.trim( $key ).'/u', $author.$comment) ) {
|
601 |
-
$error_type = NG_WORD;
|
602 |
-
return FALSE;
|
603 |
-
}
|
604 |
-
}
|
605 |
-
}
|
606 |
-
// キーワードチェック(ブラックリスト)を抜けたら必須キーワードチェックを行う
|
607 |
-
if ( $tsa_must_keywords != '' ) {
|
608 |
-
$keyword_list = mb_split( ',', $tsa_must_keywords );
|
609 |
-
foreach ( $keyword_list as $key ) {
|
610 |
-
if ( preg_match( '/'.trim( $key ).'/u', $author.$comment ) ) {
|
611 |
-
// OK
|
612 |
-
} else {
|
613 |
-
// 必須ワードがなかったためエラー
|
614 |
-
$error_type = 'must_word';
|
615 |
-
return FALSE;
|
616 |
-
}
|
617 |
-
}
|
618 |
-
}
|
619 |
-
// 含有URL数チェック
|
620 |
-
if ( $tsa_url_count_check != '2' ) {
|
621 |
-
if ( substr_count( strtolower( $author.$comment ), 'http') > $tsa_ok_url_count) {
|
622 |
-
// URL文字列(httpの数)が多いエラー
|
623 |
-
$error_type = URL_COUNT_OVER;
|
624 |
-
return FALSE;
|
625 |
-
}
|
626 |
-
}
|
627 |
-
|
628 |
-
return TRUE;
|
629 |
-
}
|
630 |
}
|
631 |
|
632 |
function mb_str_split( $string ) {
|
@@ -706,7 +764,7 @@ class ThrowsSpamAway {
|
|
706 |
if ( isset( $_POST['tsa_nonce'] ) ) {
|
707 |
check_admin_referer( 'tsa_action', 'tsa_nonce' );
|
708 |
|
709 |
-
update_option( 'tsa_on_flg', $_POST['tsa_on_flg'] );
|
710 |
update_option( 'tsa_japanese_string_min_count', $_POST['tsa_japanese_string_min_count'] );
|
711 |
update_option( 'tsa_back_second', $_POST['tsa_back_second'] );
|
712 |
update_option( 'tsa_caution_message', $_POST['tsa_caution_message'] );
|
@@ -844,7 +902,7 @@ function addIpAddresses(newAddressStr) {
|
|
844 |
<td><?php
|
845 |
$chk_1 = '';
|
846 |
$chk_2 = '';
|
847 |
-
if ( get_option( 'tsa_on_flg', $default_on_flg ) ==
|
848 |
$chk_2 = ' checked="checked"';
|
849 |
} else {
|
850 |
$chk_1 = ' checked="checked"';
|
@@ -1025,7 +1083,7 @@ function addIpAddresses(newAddressStr) {
|
|
1025 |
<h3 id="ip_opt">投稿IPアドレスによる制御設定</h3>
|
1026 |
<table class="form-table">
|
1027 |
<tr valign="top">
|
1028 |
-
<th scope="row" rowspan="
|
1029 |
<td><?php
|
1030 |
$chk = '';
|
1031 |
if ( get_option( 'tsa_spam_champuru_flg', $default_spam_champuru_flg) == '1' ) {
|
4 |
* <p>ThrowsSpamAway</p> Class
|
5 |
* WordPress's Plugin
|
6 |
* @author Takeshi Satoh@GTI Inc. 2015
|
7 |
+
* @version 2.7
|
8 |
*/
|
9 |
class ThrowsSpamAway {
|
10 |
|
11 |
// データベースのversion
|
12 |
var $table_name = NULL;
|
13 |
|
14 |
+
var $error_type = NULL;
|
15 |
+
|
16 |
public function __construct() {
|
17 |
global $default_spam_data_save;
|
18 |
global $tsa_spam_tbl_name;
|
235 |
global $default_block_ip_address_error_msg;
|
236 |
global $default_url_count_over_error_msg;
|
237 |
global $default_spam_limit_over_interval_error_msg;
|
|
|
238 |
|
239 |
// ログインしている場合は通過させます。
|
240 |
if ( $user_ID ) {
|
241 |
return $id;
|
242 |
}
|
243 |
+
|
244 |
// コメント(comment)及び名前(author)の中も検査
|
245 |
$author = esc_attr( $_POST['author'] );
|
246 |
$comment = esc_attr( $_POST['comment'] );
|
276 |
if ( $newThrowsSpamAway->validation( $comment, $author, $id ) ) {
|
277 |
return $id;
|
278 |
}
|
279 |
+
$error_type = $newThrowsSpamAway->error_type;
|
280 |
$error_msg = '';
|
281 |
switch ( $error_type ) {
|
282 |
case MUST_WORD :
|
320 |
}
|
321 |
}
|
322 |
|
323 |
+
/****** Check Methods *****/
|
324 |
+
function validate_comment(
|
325 |
+
$author,
|
326 |
+
$comment,
|
327 |
+
$validate_array
|
328 |
+
) {
|
329 |
+
global $default_on_flg; // 日本語以外を弾くかどうか初期値
|
330 |
+
global $default_url_count_check_flg; // URL数を制御するか初期設定値
|
331 |
+
global $default_ok_url_count; // 制限する場合のURL数初期設定値
|
332 |
+
global $default_japanese_string_min_count; // 日本語文字最小含有数
|
333 |
+
|
334 |
+
$validate_array = array_merge(array(
|
335 |
+
'post_id' => NULL,
|
336 |
+
'tsa_on_flg' => $default_on_flg,
|
337 |
+
'tsa_japanese_string_min_count' => '',
|
338 |
+
'tsa_ng_keywords' => "",
|
339 |
+
'tsa_must_keywords' => "",
|
340 |
+
'tsa_url_count_check' => $default_url_count_check_flg,
|
341 |
+
'tsa_ok_url_count' => $default_ok_url_count
|
342 |
+
), $validate_array );
|
343 |
+
|
344 |
+
$post_id = @$validate_array['post_id'];
|
345 |
+
$tsa_on_flg = @$validate_array['tsa_on_flg'];
|
346 |
+
$tsa_japanese_string_min_count = @$validate_array['tsa_japanese_string_min_count'];
|
347 |
+
$tsa_ng_keywords = @$validate_array['tsa_ng_keywords'];
|
348 |
+
$tsa_must_keywords = @$validate_array['tsa_must_keywords'];
|
349 |
+
$tsa_url_count_check = @$validate_array['tsa_url_count_check'];
|
350 |
+
$tsa_ok_url_count = @$validate_array['tsa_ok_url_count'];
|
351 |
+
|
352 |
+
// シングルバイトだけならエラー
|
353 |
+
if ( $tsa_on_flg == 1 && $this->is_only_in_singlebyte( $comment ) ) {
|
354 |
+
$this->error_type = NOT_JAPANESE;
|
355 |
+
return FALSE;
|
356 |
+
}
|
357 |
+
|
358 |
+
// 日本語文字列必須含有数
|
359 |
+
$tsa_japanese_string_min_count = intval( $tsa_japanese_string_min_count );
|
360 |
+
// NGキーワード文字列群
|
361 |
+
// キーワード文字列群 ※ブラックリストと重複するものはブラックリストのほうが優先です。
|
362 |
+
// URL数チェック
|
363 |
+
$tsa_url_count_check = $tsa_url_count_on_flg;
|
364 |
+
// 許容URL数設定値
|
365 |
+
$tsa_ok_url_count = intval( $tsa_ok_url_count ); // デフォルト値3(3つまで許容)
|
366 |
+
|
367 |
+
// OKフラグ
|
368 |
+
$flg = FALSE;
|
369 |
+
// マルチバイト文字が含まれている場合は日本語が含まれていればOK
|
370 |
+
if ( $tsa_on_flg == 1 ) {
|
371 |
+
$count_flg = 0;
|
372 |
+
mb_regex_encoding('UTF-8');
|
373 |
+
$com_split = $this->mb_str_split( $comment );
|
374 |
+
|
375 |
+
$tit_split = NULL;
|
376 |
+
|
377 |
+
// タイトル文字列が含まれている場合はそれを除く機能のためタイトル文字列リスト化
|
378 |
+
if ( $tsa_without_title_str == 1 && $post_id != NULL ) {
|
379 |
+
global $wpdb;
|
380 |
+
$target_post = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE ID = '".htmlspecialchars($post_id)."'");
|
381 |
+
|
382 |
+
$title = $target_post[0]->post_title;
|
383 |
+
|
384 |
+
$tit_split = $this->mb_str_split( $title );
|
385 |
+
|
386 |
+
}
|
387 |
+
foreach ( $com_split as $it ) {
|
388 |
+
|
389 |
+
// タイトル文字列を除く
|
390 |
+
if ( $tsa_without_title_str == 1 && in_array( $it, $tit_split ) ) {
|
391 |
+
|
392 |
+
// N/A
|
393 |
+
// カウントをアップしない(日本語ではない率が上がる)
|
394 |
+
|
395 |
+
|
396 |
+
} else {
|
397 |
+
|
398 |
+
if ( preg_match('/[一-龠]+/u', $it ) ){
|
399 |
+
$count_flg += 1;
|
400 |
+
}
|
401 |
+
if ( preg_match('/[ァ-ヶー]+/u', $it ) ){
|
402 |
+
$count_flg += 1;
|
403 |
+
}
|
404 |
+
if ( preg_match('/[ぁ-ん]+/u', $it ) ){
|
405 |
+
$count_flg += 1;
|
406 |
+
}
|
407 |
+
|
408 |
+
}
|
409 |
+
}
|
410 |
+
|
411 |
+
$flg = ( $tsa_japanese_string_min_count < $count_flg );
|
412 |
+
if ($flg == FALSE) {
|
413 |
+
$this->error_type = NOT_JAPANESE;
|
414 |
+
return FALSE;
|
415 |
+
}
|
416 |
+
}
|
417 |
+
// 日本語文字列チェック抜けたらキーワードチェックを行う
|
418 |
+
if ( $tsa_ng_keywords != '' ) {
|
419 |
+
$keyword_list = mb_split( ',', $tsa_ng_keywords );
|
420 |
+
foreach ( $keyword_list as $key ) {
|
421 |
+
if ( preg_match('/'.trim( $key ).'/u', $author.$comment) ) {
|
422 |
+
$this->error_type = NG_WORD;
|
423 |
+
return FALSE;
|
424 |
+
}
|
425 |
+
}
|
426 |
+
}
|
427 |
+
// キーワードチェック(ブラックリスト)を抜けたら必須キーワードチェックを行う
|
428 |
+
if ( $tsa_must_keywords != '' ) {
|
429 |
+
$keyword_list = mb_split( ',', $tsa_must_keywords );
|
430 |
+
foreach ( $keyword_list as $key ) {
|
431 |
+
if ( preg_match( '/'.trim( $key ).'/u', $author.$comment ) ) {
|
432 |
+
// OK
|
433 |
+
} else {
|
434 |
+
// 必須ワードがなかったためエラー
|
435 |
+
$this->error_type = MUST_WORD;
|
436 |
+
return FALSE;
|
437 |
+
}
|
438 |
+
}
|
439 |
+
}
|
440 |
+
// 含有URL数チェック
|
441 |
+
if ( $tsa_url_count_check != '2' ) {
|
442 |
+
if ( substr_count( strtolower( $author.$comment ), 'http') > $tsa_ok_url_count) {
|
443 |
+
// URL文字列(httpの数)が多いエラー
|
444 |
+
$this->error_type = URL_COUNT_OVER;
|
445 |
+
return FALSE;
|
446 |
+
}
|
447 |
+
}
|
448 |
+
|
449 |
+
return TRUE;
|
450 |
+
}
|
451 |
+
|
452 |
+
|
453 |
+
// シングルバイトだけで
|
454 |
+
function is_only_in_singlebyte( $comment ) {
|
455 |
+
return strlen( bin2hex( $comment ) ) / 2 == mb_strlen( $comment );
|
456 |
+
}
|
457 |
+
|
458 |
/**
|
459 |
* IPアドレスのチェックメソッド
|
460 |
* @param string $target_ip
|
463 |
global $wpdb; // WordPress DBアクセス
|
464 |
global $default_spam_champuru_flg; // すぱむちゃんぷるー利用初期値
|
465 |
global $newThrowsSpamAway;
|
466 |
+
|
467 |
// スパムフィルター利用あれば始めに通す
|
468 |
// 1.スパムちゃんぷるー
|
469 |
$spam_filter_spam_champuru_flg = get_option( 'tsa_spam_champuru_flg', $default_spam_champuru_flg );
|
481 |
foreach ( $results as $item ) {
|
482 |
if ( trim( $item->comment_author_IP ) == trim( $target_ip ) ) {
|
483 |
// ブロックしたいIP
|
484 |
+
$this->error_type = BLOCK_IP;
|
485 |
return FALSE;
|
486 |
}
|
487 |
}
|
497 |
if ( strpos( $ip, '/' ) != FALSE ) {
|
498 |
if ( $this->in_cidr( $target_ip, $ip ) ) {
|
499 |
// ブロックしたいIP
|
500 |
+
$this->error_type = BLOCK_IP;
|
501 |
return FALSE;
|
502 |
}
|
503 |
} elseif ( trim( $ip ) == trim( $target_ip ) ) {
|
504 |
// ブロックしたいIP
|
505 |
+
$this->error_type = BLOCK_IP;
|
506 |
return FALSE;
|
507 |
} else {
|
508 |
// セーフIP
|
522 |
// スパムブラックリスト by テキスト [tsa_spam_chmapuru_by_text] 文字列型(カンマ区切り)
|
523 |
global $default_spam_champuru_by_text;
|
524 |
|
|
|
|
|
|
|
525 |
// $spam_blacklist_hosts = get_option( 'tsa_spam_champuru_hosts', $default_spam_champuru_hosts );
|
526 |
$spam_blacklist_by_text = get_option( 'tsa_spam_champuru_by_text', $default_spam_champuru_by_text);
|
527 |
|
563 |
}
|
564 |
}
|
565 |
if ( $spam ) {
|
566 |
+
$this->error_type = SPAM_BLACKLIST;
|
567 |
return FALSE;
|
568 |
}
|
569 |
return TRUE;
|
595 |
*/
|
596 |
function validation( $comment, $author, $post_id = NULL ) {
|
597 |
global $newThrowsSpamAway;
|
|
|
598 |
global $default_on_flg; // 日本語以外を弾くかどうか初期値
|
599 |
global $default_dummy_param_field_flg; // ダミー項目によるスパム判定初期値
|
600 |
global $default_url_count_check_flg; // URL数を制御するか初期設定値
|
601 |
global $default_ok_url_count; // 制限する場合のURL数初期設定値
|
602 |
global $default_japanese_string_min_count; // 日本語文字最小含有数
|
603 |
|
604 |
+
// Throws SPAM Away 起動フラグ 1:起動 2 or Other:オフ
|
605 |
$tsa_on_flg = get_option( 'tsa_on_flg', $default_on_flg );
|
606 |
|
607 |
// 一定時間制限チェック
|
649 |
$tsa_spam_limit_count = intval( get_option( 'tsa_spam_limit_count', $default_spam_limit_count ) );
|
650 |
if ( $spam_count > $tsa_spam_limit_count ) {
|
651 |
// アウト!
|
652 |
+
$this->error_type = SPAM_LIMIT_OVER;
|
653 |
return FALSE;
|
654 |
}
|
655 |
}
|
657 |
$tsa_dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $default_dummy_param_field_flg );
|
658 |
if ( $tsa_dummy_param_field_flg == '1') {
|
659 |
if ( ! empty( $_POST['tsa_param_field_tsa_3'] ) ) { // このフィールドにリクエストパラメータが入る場合はスパム判定
|
660 |
+
$this->error_type = DUMMY_FIELD;
|
661 |
return FALSE;
|
662 |
}
|
663 |
}
|
664 |
+
//
|
665 |
+
$tsa_japanese_string_min_count = get_option( 'tsa_japanese_string_min_count', $default_japanese_string_min_count );
|
666 |
+
// NGキーワード文字列群
|
667 |
+
$tsa_ng_keywords = get_option( 'tsa_ng_keywords', '' );
|
668 |
+
// キーワード文字列群 ※ブラックリストと重複するものはブラックリストのほうが優先です。
|
669 |
+
$tsa_must_keywords = get_option( 'tsa_must_keywords', '' );
|
670 |
+
// URL数チェック
|
671 |
+
$tsa_url_count_check = get_option( 'tsa_url_count_on_flg', $default_url_count_check_flg );
|
672 |
+
// 許容URL数設定値
|
673 |
+
$tsa_ok_url_count = intval( get_option( 'tsa_ok_url_count', $default_ok_url_count ) ); // デフォルト値3(3つまで許容)
|
674 |
+
|
675 |
+
return $this->validate_comment(
|
676 |
+
$author,
|
677 |
+
$comment,
|
678 |
+
array(
|
679 |
+
'post_id' => $post_id,
|
680 |
+
'tsa_on_flg' => $tsa_on_flg,
|
681 |
+
'tsa_japanese_string_min_count' => $tsa_japanese_string_min_count,
|
682 |
+
'tsa_ng_keywords' => $tsa_ng_keywords,
|
683 |
+
'tsa_must_keywords' => $tsa_must_keywords,
|
684 |
+
'tsa_url_count_check' => $tsa_url_count_check,
|
685 |
+
'tsa_ok_url_count' => $tsa_ok_url_count
|
686 |
+
)
|
687 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
688 |
}
|
689 |
|
690 |
function mb_str_split( $string ) {
|
764 |
if ( isset( $_POST['tsa_nonce'] ) ) {
|
765 |
check_admin_referer( 'tsa_action', 'tsa_nonce' );
|
766 |
|
767 |
+
update_option( 'tsa_on_flg', intval( $_POST['tsa_on_flg'] ) );
|
768 |
update_option( 'tsa_japanese_string_min_count', $_POST['tsa_japanese_string_min_count'] );
|
769 |
update_option( 'tsa_back_second', $_POST['tsa_back_second'] );
|
770 |
update_option( 'tsa_caution_message', $_POST['tsa_caution_message'] );
|
902 |
<td><?php
|
903 |
$chk_1 = '';
|
904 |
$chk_2 = '';
|
905 |
+
if ( get_option( 'tsa_on_flg', $default_on_flg ) == 2 ) {
|
906 |
$chk_2 = ' checked="checked"';
|
907 |
} else {
|
908 |
$chk_1 = ' checked="checked"';
|
1083 |
<h3 id="ip_opt">投稿IPアドレスによる制御設定</h3>
|
1084 |
<table class="form-table">
|
1085 |
<tr valign="top">
|
1086 |
+
<th scope="row" rowspan="2">SPAMブラックリスト利用</th>
|
1087 |
<td><?php
|
1088 |
$chk = '';
|
1089 |
if ( get_option( 'tsa_spam_champuru_flg', $default_spam_champuru_flg) == '1' ) {
|
throws_spam_away.php
CHANGED
@@ -1,204 +1,200 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Plugin Name: Throws SPAM Away
|
4 |
-
Plugin URI: http://gti.jp/throws-spam-away/
|
5 |
-
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
-
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
-
Version: 2.
|
8 |
-
Author URI: http://gti.jp/
|
9 |
-
License: GPL2
|
10 |
-
*/
|
11 |
-
/* Copyright 2015 Takeshi Satoh (http://gti.jp/)
|
12 |
-
|
13 |
-
This program is free software; you can redistribute it and/or modify
|
14 |
-
it under the terms of the GNU General Public License, version 2, as
|
15 |
-
published by the Free Software Foundation.
|
16 |
-
|
17 |
-
This program is distributed in the hope that it will be useful,
|
18 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
20 |
-
GNU General Public License for more details.
|
21 |
-
|
22 |
-
You should have received a copy of the GNU General Public License
|
23 |
-
along with this program; if not, write to the Free Software
|
24 |
-
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
25 |
-
*/
|
26 |
-
require_once 'throws_spam_away.class.php';
|
27 |
-
|
28 |
-
/**
|
29 |
-
* 設定値一覧
|
30 |
-
* デフォルト設定
|
31 |
-
*/
|
32 |
-
|
33 |
-
$tsa_spam_tbl_name = 'tsa_spam';
|
34 |
-
|
35 |
-
// Throws SPAM Awayバージョン
|
36 |
-
$tsa_version = '2.
|
37 |
-
// スパムデータベースバージョン
|
38 |
-
$tsa_db_version = 2.6;
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
//
|
49 |
-
$
|
50 |
-
|
51 |
-
//
|
52 |
-
$
|
53 |
-
|
54 |
-
//
|
55 |
-
$
|
56 |
-
|
57 |
-
//
|
58 |
-
$
|
59 |
-
|
60 |
-
//
|
61 |
-
$
|
62 |
-
|
63 |
-
//
|
64 |
-
$
|
65 |
-
|
66 |
-
//
|
67 |
-
$
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
// URL
|
74 |
-
$
|
75 |
-
|
76 |
-
// URL
|
77 |
-
$
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
//
|
85 |
-
$
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
//
|
93 |
-
$
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
//
|
101 |
-
//$
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
//
|
109 |
-
$
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
//
|
117 |
-
$
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
//
|
125 |
-
$
|
126 |
-
|
127 |
-
//
|
128 |
-
$
|
129 |
-
|
130 |
-
//
|
131 |
-
$
|
132 |
-
|
133 |
-
//
|
134 |
-
$
|
135 |
-
|
136 |
-
//
|
137 |
-
$
|
138 |
-
//
|
139 |
-
$
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
//
|
148 |
-
//
|
149 |
-
//
|
150 |
-
//
|
151 |
-
//
|
152 |
-
//
|
153 |
-
//
|
154 |
-
//
|
155 |
-
//
|
156 |
-
//
|
157 |
-
//
|
158 |
-
//
|
159 |
-
//
|
160 |
-
//
|
161 |
-
//
|
162 |
-
// [
|
163 |
-
//
|
164 |
-
//
|
165 |
-
//
|
166 |
-
//
|
167 |
-
//
|
168 |
-
//
|
169 |
-
//
|
170 |
-
//
|
171 |
-
//
|
172 |
-
//
|
173 |
-
|
174 |
-
//
|
175 |
-
//
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
//
|
195 |
-
|
196 |
-
$
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
add_action( $comment_disp_point, array( &$newThrowsSpamAway, 'comment_form' ), 9999 );
|
202 |
-
// コメントチェックフィルター
|
203 |
-
add_action( 'pre_comment_on_post', array( &$newThrowsSpamAway, 'comment_post' ), 1 );
|
204 |
-
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Throws SPAM Away
|
4 |
+
Plugin URI: http://gti.jp/throws-spam-away/
|
5 |
+
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
+
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
+
Version: 2.7
|
8 |
+
Author URI: http://gti.jp/
|
9 |
+
License: GPL2
|
10 |
+
*/
|
11 |
+
/* Copyright 2015 Takeshi Satoh (http://gti.jp/)
|
12 |
+
|
13 |
+
This program is free software; you can redistribute it and/or modify
|
14 |
+
it under the terms of the GNU General Public License, version 2, as
|
15 |
+
published by the Free Software Foundation.
|
16 |
+
|
17 |
+
This program is distributed in the hope that it will be useful,
|
18 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
20 |
+
GNU General Public License for more details.
|
21 |
+
|
22 |
+
You should have received a copy of the GNU General Public License
|
23 |
+
along with this program; if not, write to the Free Software
|
24 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
25 |
+
*/
|
26 |
+
require_once 'throws_spam_away.class.php';
|
27 |
+
|
28 |
+
/**
|
29 |
+
* 設定値一覧
|
30 |
+
* デフォルト設定
|
31 |
+
*/
|
32 |
+
|
33 |
+
$tsa_spam_tbl_name = 'tsa_spam';
|
34 |
+
|
35 |
+
// Throws SPAM Awayバージョン
|
36 |
+
$tsa_version = '2.7';
|
37 |
+
// スパムデータベースバージョン
|
38 |
+
$tsa_db_version = 2.6; // 2.6からデータベース変更 [error_type]追加
|
39 |
+
|
40 |
+
/** 初期設定 */
|
41 |
+
/**
|
42 |
+
* 設定値変更 2.6.2から
|
43 |
+
*/
|
44 |
+
|
45 |
+
// ダミー項目でのスパム判定をするか
|
46 |
+
$default_dummy_param_field_flg = '1'; // 1: する 2:しない
|
47 |
+
|
48 |
+
// 日本語が存在しない場合無視対象とするか
|
49 |
+
$default_on_flg = 1; // 1:する
|
50 |
+
|
51 |
+
// タイトルの文字列はカウントから排除するか since 2.6.4
|
52 |
+
$default_without_title_str = 1; // 1:する
|
53 |
+
|
54 |
+
// 日本語文字最小含有数
|
55 |
+
$default_japanese_string_min_count = 3;
|
56 |
+
|
57 |
+
// 無視後、元画面に戻る時間
|
58 |
+
$default_back_second = 0;
|
59 |
+
|
60 |
+
// コメント欄下に表示される注意文言(初期設定)
|
61 |
+
$default_caution_msg = '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)';
|
62 |
+
|
63 |
+
// コメント欄下に表示する位置(初期設定)1:コメント送信ボタンの上 2:コメント送信フォームの下
|
64 |
+
$default_caution_msg_point = '1'; //1:"comment_form", 2:"comment_form_after"
|
65 |
+
|
66 |
+
// エラー時に表示されるエラー文言(初期設定)
|
67 |
+
$default_error_msg = '日本語を規定文字数以上含まない記事は投稿できませんよ。';
|
68 |
+
|
69 |
+
/** URL文字列除外 設定 */
|
70 |
+
// URL数の制限をするか
|
71 |
+
$default_url_count_check_flg = '1'; // 1:する
|
72 |
+
|
73 |
+
// URL数の制限数
|
74 |
+
$default_ok_url_count = 3; // 3つまで許容
|
75 |
+
|
76 |
+
// URL数制限値オーバーのエラー文言(初期設定)
|
77 |
+
$default_url_count_over_error_msg = '';
|
78 |
+
|
79 |
+
/** NGキーワード/必須キーワード 制御設定 */
|
80 |
+
|
81 |
+
// キーワードNGエラー時に表示されるエラー文言(初期設定)
|
82 |
+
$default_ng_key_error_msg = 'NGキーワードが含まれているため投稿できません。';
|
83 |
+
|
84 |
+
// 必須キーワードが含まれないエラー文言(初期設定)
|
85 |
+
$default_must_key_error_msg = '必須キーワードが含まれていないため投稿できません。';
|
86 |
+
|
87 |
+
/** トラックバックへの対応設定 */
|
88 |
+
|
89 |
+
// トラックバックへの対応 1: する
|
90 |
+
$default_tb_on_flg = '1';
|
91 |
+
|
92 |
+
// トラックバック記事に当サイトURLがなければ無視するか
|
93 |
+
$default_tb_url_flg = '1';
|
94 |
+
|
95 |
+
/** 投稿IPアドレスによる制御設定 */
|
96 |
+
/** ver 2.6.5から */
|
97 |
+
// スパムちゃんぷるーホスト
|
98 |
+
//$spam_champuru_host = 'dnsbl.spam-champuru.livedoor.com';
|
99 |
+
// すぱむちゃんぷるー代替リスト化
|
100 |
+
// リスト廃止 2.6.9
|
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":する
|
115 |
+
|
116 |
+
// ブロックIPアドレスからの投稿の場合に表示されるエラー文言(初期設定)
|
117 |
+
$default_block_ip_address_error_msg = '';
|
118 |
+
|
119 |
+
/** スパムデータベース */
|
120 |
+
|
121 |
+
// スパムデータベース保存するか "0":保存しない
|
122 |
+
$default_spam_data_save = '0';
|
123 |
+
|
124 |
+
// 期間が過ぎたデータを削除するか? "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 =1;
|
132 |
+
|
133 |
+
// ○分以内に○回スパムとなったら○分間そのIPからのコメントははじくかの設定
|
134 |
+
$default_spam_limit_flg = 0; // 1:する Other:しない ※スパム情報保存がデフォルトではないのでこちらも基本はしない方向です。
|
135 |
+
// ※スパム情報保存していないと機能しません。
|
136 |
+
$default_spam_limit_minutes = 10; // 10分以内に・・・
|
137 |
+
$default_spam_limit_count = 2; // 2回までは許そうか。
|
138 |
+
$default_spam_limit_over_interval = 10; // だがそれを超えたら(デフォルト3回目以降)10分はOKコメントでもスパム扱いするんでよろしく!
|
139 |
+
$default_spam_limit_over_interval_error_msg = ''; // そしてその際のエラーメッセージは・・・
|
140 |
+
|
141 |
+
|
142 |
+
|
143 |
+
/** オプションキー */
|
144 |
+
// ダミーフィールドを生成しそこに入力がある場合はエラーとするかフラグ [tsa_dummy_param_field_flg] 1:する 2:しない
|
145 |
+
// 日本語が存在しない時エラーとするかフラグ [tsa_on_flg] 1:する 2:しない
|
146 |
+
// 日本語文字列含有数 (入力値以下ならエラー) [tsa_japanese_string_min_count] 数値型
|
147 |
+
// 元の記事に戻ってくる時間(秒) [tsa_back_second] 数値型
|
148 |
+
// コメント欄の下に表示される注意文言 [tsa_caution_message] 文字列型
|
149 |
+
// コメント欄の下に表示される注意文言の位置 [tsa_caution_message_point] 文字列型("1" or "2")
|
150 |
+
// 日本語文字列規定値未満エラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
151 |
+
// [tsa_error_message] 文字列型
|
152 |
+
// その他NGキーワード(日本語でも英語(その他)でもNGとしたいキーワードを半角カンマ区切りで複数設定できます。挙動は同じです。NGキーワードだけでも使用できます。)
|
153 |
+
// [tsa_ng_keywords] 文字列型(半角カンマ区切り文字列)
|
154 |
+
// NGキーワードエラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
155 |
+
// [tsa_ng_key_error_message] 文字列型
|
156 |
+
// 必須キーワード(日本語でも英語(その他)でも必須としたいキーワードを半角カンマ区切りで複数設定できます。指定文字列を含まない場合はエラーとなります。※複数の方が厳しくなります。必須キーワードだけでも使用できます。)
|
157 |
+
// [tsa_must_keywords] 文字列型(半角カンマ区切り文字列)
|
158 |
+
// 必須キーワードエラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
159 |
+
// [tsa_must_key_error_message] 文字列型
|
160 |
+
// この設定をトラックバック記事にも採用するか [tsa_tb_on_flg] 1:する 2:しない
|
161 |
+
// トラックバック記事にも採用する場合、ついでにこちらのURLが含まれているか判断するか
|
162 |
+
// [tsa_tb_url_flg] 1:する 2:しない
|
163 |
+
// WordPressのcommentsテーブルで「spam」判定されたことがあるIPアドレスからの投稿を無視するか
|
164 |
+
// [tsa_ip_block_from_spam_chk_flg] 1:する その他:しない
|
165 |
+
// ブロックしたいIPアドレスを任意で入力(半角カンマ区切りで複数設定できます。)
|
166 |
+
// [tsa_block_ip_addresses] 文字列型
|
167 |
+
// ブロック対象IPアドレスからの投稿時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
168 |
+
// [tsa_block_ip_address_error_message] 文字列型
|
169 |
+
// URL(単純に'http'文字列のチェックのみ)文字列数を制限するか [tsa_url_count_on_flg] 1:する その他:しない
|
170 |
+
// URL(単純に'http'文字列のチェックのみ)文字列の許容数 [tsa_ok_url_count] 数値型
|
171 |
+
// URL(単純に'http'文字列のチェックのみ)文字列許容数オーバー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
172 |
+
// [tsa_url_count_over_error_message] 文字列型
|
173 |
+
|
174 |
+
// スパムブラックリスト [tsa_spam_champuru_hosts] 配列型
|
175 |
+
// スパムブラックリスト by テキスト [tsa_spam_chmapuru_by_text] 文字列型(カンマ区切り)
|
176 |
+
|
177 |
+
|
178 |
+
|
179 |
+
|
180 |
+
/** プロセス */
|
181 |
+
$newThrowsSpamAway = new ThrowsSpamAway;
|
182 |
+
// トラックバックチェックフィルター
|
183 |
+
add_filter( 'preprocess_comment', array( &$newThrowsSpamAway, 'trackback_spam_away' ), 1, 1 );
|
184 |
+
// ダミーフィールド作成
|
185 |
+
$dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $default_dummy_param_field_flg );
|
186 |
+
if ( '1' == $dummy_param_field_flg ) {
|
187 |
+
add_action( 'wp_head', array( &$newThrowsSpamAway, 'tsa_scripts_init' ), 9997 );
|
188 |
+
add_action( "comment_form", array(&$newThrowsSpamAway, "comment_form_dummy_param_field" ), 9998);
|
189 |
+
}
|
190 |
+
// 注意文言表示
|
191 |
+
// コメントフォーム表示
|
192 |
+
$comment_disp_point = 'comment_form';
|
193 |
+
$comment_form_action_point = get_option( 'tsa_caution_msg_point', $default_caution_msg_point );
|
194 |
+
// フォーム内かフォーム外か判断する
|
195 |
+
if ( '2' == $comment_form_action_point ) {
|
196 |
+
$comment_disp_point = 'comment_form_after';
|
197 |
+
}
|
198 |
+
add_action( $comment_disp_point, array( &$newThrowsSpamAway, 'comment_form' ), 9999 );
|
199 |
+
// コメントチェックフィルター
|
200 |
+
add_action( 'pre_comment_on_post', array( &$newThrowsSpamAway, 'comment_post' ), 1 );
|
|
|
|
|
|
|
|