Throws SPAM Away - Version 2.7

Version Description

Download this release

Release Info

Developer tsato
Plugin Icon wp plugin Throws SPAM Away
Version 2.7
Comparing to
See all releases

Code changes from version 2.6.9 to 2.7

Files changed (7) hide show
  1. css/tsa_data_styles.css +141 -141
  2. css/tsa_styles.css +40 -40
  3. hostbyip.php +90 -90
  4. js/tsa_params.js +32 -32
  5. readme.txt +43 -24
  6. throws_spam_away.class.php +175 -117
  7. 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.2.3
7
- Stable tag: 2.6.9
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
- ※ホワイトリストが一番強力にしてありますので、この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,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
- この「○」を設定します→《○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定》
187
- 例えば、「10分以内に2回スパムとなったら10分間、当該IPからのコメントはスパム扱いする」とした場合は
188
- 過去(今から)10分前から今まで2回スパム扱いとなったIPからの投稿は3回目以降スパム扱いとなります。
189
- そのため、10分以内に3回目のスパムを作ってしまったためそこから10分以上経過しないとずっとスパム扱いになってしまいます。
190
- 今までのように「これは・・・・ダメ」「これは・・・・ダメ」「これは・・・・行けた!」「よっしゃーー!突っ込めー!」という風にはできなくなるということです。
191
- 上記の例はデフォルト値ですが、「1時間(60分)以内に3回スパムになったら24時間(1440分)スパム扱い」という設定の場合は
192
- 24時間以内に3回スパムがあったら・・・という設定とほぼ同等(完全に同等ではありませんが・・・)ですので
193
- 24時間の方に合わせる形で24時間以内のスパム回数を算出するようにしています。(今後見直すかもしれません)
194
- あまり長い時間を指定しますとコメント欄への反映が遅くなりますので気をつけてください。
195
- 5~10分程度を推奨します。
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
- この「○」を設定します→《○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定》
367
- 例えば、「10分以内に2回スパムとなったら10分間、当該IPからのコメントはスパム扱いする」とした場合は
368
- 過去(今から)10分前から今まで2回スパム扱いとなったIPからの投稿は3回目以降スパム扱いとなります。
369
- そのため、10分以内に3回目のスパムを作ってしまったためそこから10分以上経過しないとずっとスパム扱いになってしまいます。
370
- 今までのように「これは・・・・ダメ」「これは・・・・ダメ」「これは・・・・行けた!」「よっしゃーー!突っ込めー!」という風にはできなくなるということです。
371
- 上記の例はデフォルト値ですが、「1時間(60分)以内に3回スパムになったら24時間(1440分)スパム扱い」という設定の場合は
372
- 24時間以内に3回スパムがあったら・・・という設定とほぼ同等(完全に同等ではありませんが・・・)ですので
373
- 24時間の方に合わせる形で24時間以内のスパム回数を算出するようにしています。(今後見直すかもしれません)
374
- あまり長い時間を指定しますとコメント欄への反映が遅くなりますので気をつけてください。
375
- 5~10分程度を推奨します。
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.6.9
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
- global $error_type;
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 起動フラグ '1':起動 "2":オフ
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
- if ( $tsa_on_flg != '2' && strlen( bin2hex( $comment ) ) / 2 == mb_strlen( $comment ) ) {
532
- $error_type = NOT_JAPANESE;
533
- return FALSE;
534
- } else {
535
- // 日本語文字列必須含有数
536
- $tsa_japanese_string_min_count = intval( get_option( 'tsa_japanese_string_min_count', $default_japanese_string_min_count ) );
537
- // NGキーワード文字列群
538
- $tsa_ng_keywords = get_option( 'tsa_ng_keywords', '' );
539
- // キーワード文字列群 ※ブラックリストと重複するものはブラックリストのほうが優先です。
540
- $tsa_must_keywords = get_option( 'tsa_must_keywords', '' );
541
- // URL数チェック
542
- $tsa_url_count_check = get_option( 'tsa_url_count_on_flg', $default_url_count_check_flg );
543
- // 許容URL数設定値
544
- $tsa_ok_url_count = intval( get_option( 'tsa_ok_url_count', $default_ok_url_count ) ); // デフォルト値3(3つまで許容)
545
-
546
- // OKフラグ
547
- $flg = FALSE;
548
- // マルチバイト文字が含まれている場合は日本語が含まれていればOK
549
- if ( $tsa_on_flg != '2' ) {
550
- $count_flg = 0;
551
- mb_regex_encoding('UTF-8');
552
- $com_split = $newThrowsSpamAway->mb_str_split( $comment );
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 ) == '2' ) {
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="3">SPAMブラックリスト利用</th>
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.6.9
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.6.9';
37
- // スパムデータベースバージョン
38
- $tsa_db_version = 2.6; // 2.6からデータベース変更 [error_type]追加
39
-
40
- // エラー種別
41
- $error_type = '';
42
-
43
- /** 初期設定 */
44
- /**
45
- * 設定値変更 2.6.2から
46
- */
47
-
48
- // ダミー項目でのスパム判定をするか
49
- $default_dummy_param_field_flg = '1'; // 1: する 2:しない
50
-
51
- // 日本語が存在しない場合無視対象とするか
52
- $default_on_flg = 1; // 1:する
53
-
54
- // タイトルの文字列はカウントから排除するか since 2.6.4
55
- $default_without_title_str = 1; // 1:する
56
-
57
- // 日本語文字最小含有数
58
- $default_japanese_string_min_count = 3;
59
-
60
- // 無視後、元画面に戻る時間
61
- $default_back_second = 0;
62
-
63
- // コメント欄下に表示される注意文言(初期設定)
64
- $default_caution_msg = '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)';
65
-
66
- // コメント欄下に表示する位置(初期設定)1:コメント送信ボタンの上 2:コメント送信フォームの下
67
- $default_caution_msg_point = '1'; //1:"comment_form", 2:"comment_form_after"
68
-
69
- // エラー時に表示されるエラー文言(初期設定)
70
- $default_error_msg = '日本語を規定文字数以上含まない記事は投稿できませんよ。';
71
-
72
- /** URL文字列除外 設定 */
73
- // URL数の制限をするか
74
- $default_url_count_check_flg = '1'; // 1:する
75
-
76
- // URL数の制限数
77
- $default_ok_url_count = 3; // 3つまで許容
78
-
79
- // URL数制限値オーバーのエラー文言(初期設定)
80
- $default_url_count_over_error_msg = '';
81
-
82
- /** NGキーワード/必須キーワード 制御設定 */
83
-
84
- // キーワードNGエラー時に表示されるエラー文言(初期設定)
85
- $default_ng_key_error_msg = 'NGキーワードが含まれているため投稿できません。';
86
-
87
- // 必須キーワードが含まれないエラー文言(初期設定)
88
- $default_must_key_error_msg = '必須キーワードが含まれていないため投稿できません。';
89
-
90
- /** トラックバックへの対応設定 */
91
-
92
- // トラックバックへの対応 1: する
93
- $default_tb_on_flg = '1';
94
-
95
- // トラックバック記事に当サイトURLがなければ無視するか
96
- $default_tb_url_flg = '1';
97
-
98
- /** 投稿IPアドレスによる制御設定 */
99
- /** ver 2.6.5から */
100
- // スパムちゃんぷるーホスト
101
- //$spam_champuru_host = 'dnsbl.spam-champuru.livedoor.com';
102
- // すぱむちゃんぷるー代替リスト化
103
- // リスト廃止 2.6.9
104
- //$spam_champuru_hosts = array("bsb.spamlookup.net", "bsb.empty.us", "list.dsbl.org", "all.rbl.jp");
105
-
106
- //$default_spam_champuru_hosts = array("bsb.spamlookup.net");
107
-
108
- // スパムブラックリスト by テキスト
109
- $default_spam_champuru_by_text = "";
110
-
111
- // すぱむちゃんぷるー利用初期設定
112
- $default_spam_champuru_flg = '2'; // "2":しない
113
-
114
- /** /2.6.5 */
115
-
116
- // WordPressのcommentsテーブルで「spam」判定されたことがあるIPアドレスからの投稿を無視するか
117
- $default_ip_block_from_spam_chk_flg = '1'; // "1":する
118
-
119
- // ブロックIPアドレスからの投稿の場合に表示されるエラー文言(初期設定)
120
- $default_block_ip_address_error_msg = '';
121
-
122
- /** スパムデータベース */
123
-
124
- // スパムデータベース保存するか "0":保存しない
125
- $default_spam_data_save = '0';
126
-
127
- // 期間が過ぎたデータを削除するか? "1":する
128
- $default_spam_data_delete_flg = '1';
129
-
130
- // スパムデータ保持期間(日)
131
- $default_spam_keep_day_count = 15; /** 30 -> 15 */
132
-
133
- // 最低保存期間(日)
134
- $lower_spam_keep_day_count =1;
135
-
136
- // ○分以内に○回スパムとなったら○分間そのIPからのコメントははじくかの設定
137
- $default_spam_limit_flg = 0; // 1:する Other:しない ※スパム情報保存がデフォルトではないのでこちらも基本はしない方向です。
138
- // ※スパム情報保存していないと機能しません。
139
- $default_spam_limit_minutes = 10; // 10分以内に・・・
140
- $default_spam_limit_count = 2; // 2回までは許そうか。
141
- $default_spam_limit_over_interval = 10; // だがそれを超えたら(デフォルト3回目以降)10分はOKコメントでもスパム扱いするんでよろしく!
142
- $default_spam_limit_over_interval_error_msg = ''; // そしてその際のエラーメッセージは・・・
143
-
144
-
145
-
146
- /** オプションキー */
147
- // ダミーフィールドを生成しそこに入力がある場合はエラーとするかフラグ [tsa_dummy_param_field_flg] 1:する 2:しない
148
- // 日本語が存在しない時エラーとするかフラグ [tsa_on_flg] 1:する 2:しない
149
- // 日本語文字列含有数 (入力値以下ならエラー) [tsa_japanese_string_min_count] 数値型
150
- // 元の記事に戻ってくる時間(秒) [tsa_back_second] 数値型
151
- // コメント欄の下に表示される注意文言 [tsa_caution_message] 文字列型
152
- // コメント欄の下に表示される注意文言の位置 [tsa_caution_message_point] 文字列型("1" or "2")
153
- // 日本語文字列規定値未満エラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
154
- // [tsa_error_message] 文字列型
155
- // その他NGキーワード(日本語でも英語(その他)でもNGとしたいキーワードを半角カンマ区切りで複数設定できます。挙動は同じです。NGキーワードだけでも使用できます。)
156
- // [tsa_ng_keywords] 文字列型(半角カンマ区切り文字列)
157
- // NGキーワードエラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
158
- // [tsa_ng_key_error_message] 文字列型
159
- // 必須キーワード(日本語でも英語(その他)でも必須としたいキーワードを半角カンマ区切りで複数設定できます。指定文字列を含まない場合はエラーとなります。※複数の方が厳しくなります。必須キーワードだけでも使用できます。)
160
- // [tsa_must_keywords] 文字列型(半角カンマ区切り文字列)
161
- // 必須キーワードエラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
162
- // [tsa_must_key_error_message] 文字列型
163
- // この設定をトラックバック記事にも採用するか [tsa_tb_on_flg] 1:する 2:しない
164
- // トラックバック記事にも採用する場合、ついでにこちらのURLが含まれているか判断するか
165
- // [tsa_tb_url_flg] 1:する 2:しない
166
- // WordPressのcommentsテーブルで「spam」判定されたことがあるIPアドレスからの投稿を無視するか
167
- // [tsa_ip_block_from_spam_chk_flg] 1:する その他:しない
168
- // ブロックしたいIPアドレスを任意で入力(半角カンマ区切りで複数設定できます。)
169
- // [tsa_block_ip_addresses] 文字列型
170
- // ブロック対象IPアドレスからの投稿時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
171
- // [tsa_block_ip_address_error_message] 文字列型
172
- // URL(単純に'http'文字列のチェックのみ)文字列数を制限するか [tsa_url_count_on_flg] 1:する その他:しない
173
- // URL(単純に'http'文字列のチェックのみ)文字列の許容数 [tsa_ok_url_count] 数値型
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
- /** プロセス */
184
- $newThrowsSpamAway = new ThrowsSpamAway;
185
- // トラックバックチェックフィルター
186
- add_filter( 'preprocess_comment', array( &$newThrowsSpamAway, 'trackback_spam_away' ), 1, 1 );
187
- // ダミーフィールド作成
188
- $dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $default_dummy_param_field_flg );
189
- if ( '1' == $dummy_param_field_flg ) {
190
- add_action( 'wp_head', array( &$newThrowsSpamAway, 'tsa_scripts_init' ), 9997 );
191
- add_action( "comment_form", array(&$newThrowsSpamAway, "comment_form_dummy_param_field" ), 9998);
192
- }
193
- // 注意文言表示
194
- // コメントフォーム表示
195
- $comment_disp_point = 'comment_form';
196
- $comment_form_action_point = get_option( 'tsa_caution_msg_point', $default_caution_msg_point );
197
- // フォーム内かフォーム外か判断する
198
- if ( '2' == $comment_form_action_point ) {
199
- $comment_disp_point = 'comment_form_after';
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 );