Version Description
CSRF
Download this release
Release Info
Developer | tsato |
Plugin | Throws SPAM Away |
Version | 3.3.1 |
Comparing to | |
See all releases |
Code changes from version 2.8.2.1 to 3.3.1
- css/tsa_data_styles.css +1 -1
- hostbyip.php +73 -66
- js/tsa_params.js +48 -20
- js/tsa_params.min.js +1 -1
- languages/throws-spam-away-ja.mo +0 -0
- languages/throws-spam-away-ja.po +526 -0
- languages/throws-spam-away-ja_JP.mo +0 -0
- languages/throws-spam-away.pot +487 -0
- readme.txt +265 -122
- throws_spam_away.class.php +1183 -1073
- throws_spam_away.php +93 -82
- throws_spam_away_comments.php +118 -0
css/tsa_data_styles.css
CHANGED
@@ -96,7 +96,7 @@
|
|
96 |
/** スクロール対象テーブルCSS */
|
97 |
#spam_list {
|
98 |
background-color: #ffffff;
|
99 |
-
border-collapse
|
100 |
font-size: 1em !important;
|
101 |
}
|
102 |
/** 全体container */
|
96 |
/** スクロール対象テーブルCSS */
|
97 |
#spam_list {
|
98 |
background-color: #ffffff;
|
99 |
+
border-collapse: initial;
|
100 |
font-size: 1em !important;
|
101 |
}
|
102 |
/** 全体container */
|
hostbyip.php
CHANGED
@@ -2,88 +2,95 @@
|
|
2 |
/**
|
3 |
* <p>ThrowsSpamAway</p> hostbyipページ
|
4 |
* WordPress's Plugin
|
5 |
-
* @author Takeshi Satoh@GTI Inc.
|
6 |
-
* @version
|
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(
|
15 |
-
$last_spam_comment_result = $newThrowsSpamAway->get_last_spam_comment($spam_ip);
|
16 |
// 最終投稿日
|
17 |
-
$last_comment_date
|
18 |
-
$last_comment_post
|
19 |
-
$last_comment_post_title = get_the_title(get_post($last_spam_comment_result->post_id));
|
20 |
-
$is_spam_champuru
|
21 |
-
$spam_author
|
22 |
-
$spam_comment
|
23 |
?><!DOCTYPE html>
|
24 |
<html <?php language_attributes(); ?>>
|
25 |
<head>
|
26 |
-
|
27 |
-
|
28 |
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
|
29 |
|
30 |
-
<title>Throws SPAM Away | Hostbyip[<?php echo htmlspecialchars($_GET['ip']); ?>]</title>
|
31 |
-
<script type="text/javascript">
|
32 |
-
window.onblur=function(){
|
33 |
-
|
34 |
-
}
|
35 |
-
</script>
|
36 |
-
<style>
|
37 |
-
h2 {
|
38 |
-
|
39 |
-
|
40 |
-
}
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
|
|
|
|
51 |
</head>
|
52 |
<body>
|
53 |
<div style="textalign: center;">
|
54 |
-
<h2><?php echo $spam_ip; ?></h2>
|
55 |
-
<?php
|
56 |
-
$spam_host = gethostbyaddr(htmlspecialchars($spam_ip));
|
57 |
-
if ($spam_host != $spam_ip) {
|
58 |
-
?>
|
59 |
-
<h3
|
60 |
-
↓↓↓<br
|
61 |
|
62 |
-
<h4><?php echo $spam_host; ?></h4>
|
63 |
-
Whois: <a href="http://whois.arin.net/rest/ip/<?php echo $spam_ip; ?>"
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
<div class="tsa_hostbyip_text"
|
74 |
-
|
75 |
-
<
|
|
|
|
|
|
|
|
|
76 |
|
77 |
-
<div class="tsa_hostbyip_text"
|
78 |
-
<div
|
79 |
-
?>
|
80 |
-
IP: <?php esc_attr_e( $spam_ip ); ?><br
|
81 |
-
名前:<?php echo esc_attr( $spam_author ); ?><br
|
82 |
-
内容:<?php esc_attr_e( $spam_comment ); ?><?php
|
83 |
-
} ?>
|
84 |
-
</div>
|
85 |
|
86 |
-
<div style="text-align:right;"><a href="javascript:void(0);"
|
|
|
87 |
</div>
|
88 |
</body>
|
89 |
</html>
|
2 |
/**
|
3 |
* <p>ThrowsSpamAway</p> hostbyipページ
|
4 |
* WordPress's Plugin
|
5 |
+
* @author Takeshi Satoh@GTI Inc. 2017
|
6 |
+
* @version 3.0
|
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();
|
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 |
<html <?php language_attributes(); ?>>
|
25 |
<head>
|
26 |
+
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
27 |
+
<meta name="viewport" content="width=device-width">
|
28 |
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
29 |
|
30 |
+
<title>Throws SPAM Away | Hostbyip[<?php echo htmlspecialchars( $_GET['ip'] ); ?>]</title>
|
31 |
+
<script type="text/javascript">
|
32 |
+
window.onblur = function () {
|
33 |
+
window.close();
|
34 |
+
}
|
35 |
+
</script>
|
36 |
+
<style>
|
37 |
+
h2 {
|
38 |
+
background: #333;
|
39 |
+
color: #fff;
|
40 |
+
}
|
41 |
+
|
42 |
+
h3 {
|
43 |
+
background: #666;
|
44 |
+
color: #fff;
|
45 |
+
}
|
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><?php _e( "特定のホスト情報が見つかりました。", 'throws-spam-away' ); ?></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; ?>"
|
66 |
+
target="_blank"><?php echo $spam_ip; ?></a>
|
67 |
+
<?php
|
68 |
+
} else {
|
69 |
+
?>
|
70 |
+
<h3><?php _e( "このIPアドレスから特定のホスト情報は見つかりませんでした。", 'throws-spam-away' ); ?></h3>
|
71 |
+
<?php
|
72 |
+
}
|
73 |
+
?>
|
74 |
+
<?php if ( $last_spam_comment_result != null ) { ?>
|
75 |
+
<div class="tsa_hostbyip_text"><?php _e( "このIPからの最終投稿日時", 'throws-spam-away' ); ?></div><?php echo $last_comment_date; ?>
|
76 |
+
<br/>
|
77 |
+
<div class="tsa_hostbyip_text"><?php _e( "このIPからスパム投稿対象となったページ", 'throws-spam-away' ); ?></div><a
|
78 |
+
href="<?php echo $last_comment_post; ?>" target="_blank"><?php echo $last_comment_post_title; ?></a>
|
79 |
+
<br/>
|
80 |
+
<?php } ?>
|
81 |
+
<h4><?php _e( "スパムフィルター:", 'throws-spam-away' ); ?><?php echo( $is_spam_champuru ? __( "スパム拒否リスト存在IPアドレス", 'throws-spam-away' ) : __( "未検出", 'throws-spam-away' ) ); ?></h4>
|
82 |
|
83 |
+
<div class="tsa_hostbyip_text"><?php _e( "最新コメント内容", 'throws-spam-away' ); ?></div>
|
84 |
+
<div><?php if ( $spam_author != null && $spam_comment != null ) {
|
85 |
+
?>
|
86 |
+
IP: <?php esc_attr_e( $spam_ip ); ?><br/>
|
87 |
+
名前:<?php echo esc_attr( $spam_author ); ?><br/>
|
88 |
+
内容:<?php esc_attr_e( $spam_comment ); ?><?php
|
89 |
+
} ?>
|
90 |
+
</div>
|
91 |
|
92 |
+
<div style="text-align:right;"><a href="javascript:void(0);"
|
93 |
+
onclick="window.close();"><?php _e( "閉じる", 'throws-spam-away' ); ?></a></div>
|
94 |
</div>
|
95 |
</body>
|
96 |
</html>
|
js/tsa_params.js
CHANGED
@@ -1,32 +1,60 @@
|
|
1 |
/**
|
2 |
* <p>ThrowsSpamAway</p> JavaScript
|
3 |
* WordPress's Plugin
|
4 |
-
* @
|
|
|
5 |
* @since version2.6
|
6 |
*
|
7 |
* -- updated --
|
|
|
8 |
* 2014/05/10 debug for IE8
|
9 |
-
* 2015/07/25
|
10 |
-
|
11 |
-
|
12 |
-
|
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 |
-
|
25 |
-
|
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 |
|
1 |
/**
|
2 |
* <p>ThrowsSpamAway</p> JavaScript
|
3 |
* WordPress's Plugin
|
4 |
+
* @version 3.2.3
|
5 |
+
* @author Takeshi Satoh@GTI Inc. 2020
|
6 |
* @since version2.6
|
7 |
*
|
8 |
* -- updated --
|
9 |
+
* 2020/09/03 テーマによってJavaScriptエラーが発生するため修正
|
10 |
* 2014/05/10 debug for IE8
|
11 |
+
* 2015/07/25 インラインスタイルでdisplay:none指定したため hide削除
|
12 |
+
* 2020/07/16 jQuery 排除し JavaScript へ
|
13 |
+
* 2020/10/13 JavaScript修正
|
14 |
+
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
+
document.addEventListener('DOMContentLoaded', function() {
|
17 |
+
|
18 |
+
if (
|
19 |
+
document.querySelector('.tsa_param_field_tsa_2 input#tsa_param_field_tsa_3') &&
|
20 |
+
document.querySelector('.tsa_param_field_tsa_ input')
|
21 |
+
) {
|
22 |
+
document.querySelector('.tsa_param_field_tsa_2 input#tsa_param_field_tsa_3').value =
|
23 |
+
document.querySelector('.tsa_param_field_tsa_ input').value
|
24 |
+
|
25 |
+
var date = new Date();
|
26 |
+
var iso = null;
|
27 |
+
if (typeof date.toISOString != 'undefined') {
|
28 |
+
iso = date.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/);
|
29 |
+
current_date = iso[1] + ' ' + iso[2];
|
30 |
+
|
31 |
+
if (document.querySelector('#comments form') && !document.querySelector('#comments form input#tsa_param_field_tsa_3')) {
|
32 |
+
const tsa_field = document.createElement("input");
|
33 |
+
tsa_field.setAttribute("type", "hidden");
|
34 |
+
tsa_field.setAttribute("name", "tsa_param_field_tsa_3");
|
35 |
+
tsa_field.setAttribute("id", "tsa_param_field_tsa_3");
|
36 |
+
tsa_field.setAttribute("value", current_date);
|
37 |
+
document.querySelector('#comments form').appendChild(tsa_field);
|
38 |
+
}
|
39 |
+
|
40 |
+
if (document.querySelector('#respond form') && !document.querySelector('#respond form input#tsa_param_field_tsa_3')) {
|
41 |
+
const tsa_field2 = document.createElement("input");
|
42 |
+
tsa_field2.setAttribute("type", "hidden");
|
43 |
+
tsa_field2.setAttribute("name", "tsa_param_field_tsa_3");
|
44 |
+
tsa_field2.setAttribute("id", "tsa_param_field_tsa_3");
|
45 |
+
tsa_field2.setAttribute("value", current_date);
|
46 |
+
document.querySelector('#respond form').appendChild(tsa_field2);
|
47 |
+
}
|
48 |
+
|
49 |
+
if (document.querySelector('form#commentform') && !document.querySelector('form#commentform input#tsa_param_field_tsa_3')) {
|
50 |
+
const tsa_field3 = document.createElement("input");
|
51 |
+
tsa_field3.setAttribute("type", "hidden");
|
52 |
+
tsa_field3.setAttribute("name", "tsa_param_field_tsa_3");
|
53 |
+
tsa_field3.setAttribute("id", "tsa_param_field_tsa_3");
|
54 |
+
tsa_field3.setAttribute("value", current_date);
|
55 |
+
document.querySelector('form#commentform').appendChild(tsa_field3);
|
56 |
+
}
|
57 |
|
|
|
|
|
58 |
}
|
59 |
}
|
60 |
|
js/tsa_params.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
document.addEventListener("DOMContentLoaded",function(){if(document.querySelector(".tsa_param_field_tsa_2 input#tsa_param_field_tsa_3")&&document.querySelector(".tsa_param_field_tsa_ input")){document.querySelector(".tsa_param_field_tsa_2 input#tsa_param_field_tsa_3").value=document.querySelector(".tsa_param_field_tsa_ input").value;var t=new Date,e=null;if(void 0!==t.toISOString){if(e=t.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/),current_date=e[1]+" "+e[2],document.querySelector("#comments form")&&!document.querySelector("#comments form input#tsa_param_field_tsa_3")){const t=document.createElement("input");t.setAttribute("type","hidden"),t.setAttribute("name","tsa_param_field_tsa_3"),t.setAttribute("id","tsa_param_field_tsa_3"),t.setAttribute("value",current_date),document.querySelector("#comments form").appendChild(t)}if(document.querySelector("#respond form")&&!document.querySelector("#respond form input#tsa_param_field_tsa_3")){const t=document.createElement("input");t.setAttribute("type","hidden"),t.setAttribute("name","tsa_param_field_tsa_3"),t.setAttribute("id","tsa_param_field_tsa_3"),t.setAttribute("value",current_date),document.querySelector("#respond form").appendChild(t)}if(document.querySelector("form#commentform")&&!document.querySelector("form#commentform input#tsa_param_field_tsa_3")){const t=document.createElement("input");t.setAttribute("type","hidden"),t.setAttribute("name","tsa_param_field_tsa_3"),t.setAttribute("id","tsa_param_field_tsa_3"),t.setAttribute("value",current_date),document.querySelector("form#commentform").appendChild(t)}}}});
|
languages/throws-spam-away-ja.mo
ADDED
Binary file
|
languages/throws-spam-away-ja.po
ADDED
@@ -0,0 +1,526 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Throws SPAM Away\n"
|
4 |
+
"POT-Creation-Date: 2020-07-08 16:15+0900\n"
|
5 |
+
"PO-Revision-Date: 2020-07-08 16:27+0900\n"
|
6 |
+
"Last-Translator: \n"
|
7 |
+
"Language-Team: \n"
|
8 |
+
"Language: ja_JP\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.3.1\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
15 |
+
"X-Poedit-Flags-xgettext: --add-comments=translators:\n"
|
16 |
+
"X-Poedit-WPHeader: throws_spam_away.php\n"
|
17 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
|
19 |
+
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;"
|
20 |
+
"_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
21 |
+
"X-Poedit-SearchPath-0: .\n"
|
22 |
+
"X-Poedit-SearchPathExcluded-0: *.min.js\n"
|
23 |
+
|
24 |
+
#: hostbyip.php:61
|
25 |
+
msgid "特定のホスト情報が見つかりました。"
|
26 |
+
msgstr "特定のホスト情報が見つかりました。"
|
27 |
+
|
28 |
+
#: hostbyip.php:70
|
29 |
+
msgid "このIPアドレスから特定のホスト情報は見つかりませんでした。"
|
30 |
+
msgstr "このIPアドレスから特定のホスト情報は見つかりませんでした。"
|
31 |
+
|
32 |
+
#: hostbyip.php:75
|
33 |
+
msgid "このIPからの最終投稿日時"
|
34 |
+
msgstr "このIPからの最終投稿日時"
|
35 |
+
|
36 |
+
#: hostbyip.php:77
|
37 |
+
msgid "このIPからスパム投稿対象となったページ"
|
38 |
+
msgstr "このIPからスパム投稿対象となったページ"
|
39 |
+
|
40 |
+
#: hostbyip.php:81
|
41 |
+
msgid "スパムフィルター:"
|
42 |
+
msgstr "スパムフィルター:"
|
43 |
+
|
44 |
+
#: hostbyip.php:81
|
45 |
+
msgid "スパム拒否リスト存在IPアドレス"
|
46 |
+
msgstr "スパム拒否リスト存在IPアドレス"
|
47 |
+
|
48 |
+
#: hostbyip.php:81
|
49 |
+
msgid "未検出"
|
50 |
+
msgstr "未検出"
|
51 |
+
|
52 |
+
#: hostbyip.php:83
|
53 |
+
msgid "最新コメント内容"
|
54 |
+
msgstr "最新コメント内容"
|
55 |
+
|
56 |
+
#: hostbyip.php:93
|
57 |
+
msgid "閉じる"
|
58 |
+
msgstr "閉じる"
|
59 |
+
|
60 |
+
#: throws_spam_away.class.php:787
|
61 |
+
msgid "Throws SPAM Away 設定"
|
62 |
+
msgstr "Throws SPAM Away 設定"
|
63 |
+
|
64 |
+
#. Plugin Name of the plugin/theme
|
65 |
+
#: throws_spam_away.class.php:787
|
66 |
+
msgid "Throws SPAM Away"
|
67 |
+
msgstr "Throws SPAM Away"
|
68 |
+
|
69 |
+
#: throws_spam_away.class.php:795
|
70 |
+
msgid "スパムデータ"
|
71 |
+
msgstr "スパムデータ"
|
72 |
+
|
73 |
+
#: throws_spam_away.class.php:800
|
74 |
+
msgid "スパムコメント一括削除"
|
75 |
+
msgstr "スパムコメント一括削除"
|
76 |
+
|
77 |
+
#: throws_spam_away.class.php:1088 throws_spam_away.class.php:1119
|
78 |
+
#: throws_spam_away.class.php:1192 throws_spam_away.class.php:1300
|
79 |
+
#: throws_spam_away.class.php:1313 throws_spam_away.class.php:1388
|
80 |
+
msgid "▲ 上へ"
|
81 |
+
msgstr "▲ 上へ"
|
82 |
+
|
83 |
+
#: throws_spam_away.class.php:1280
|
84 |
+
msgid ""
|
85 |
+
"※ここに登録したIPアドレスはスパムフィルタを掛けず優先的に通します。<br>※日"
|
86 |
+
"本語以外の言語でご利用になられるお客様のIPアドレスを登録するなどご利用くだ"
|
87 |
+
"さい。<br>改行区切りで複数設定できます。範囲指定も可能です。(半角数字とス"
|
88 |
+
"ラッシュ、ドットのみ)"
|
89 |
+
msgstr ""
|
90 |
+
"※ここに登録したIPアドレスはスパムフィルタを掛けず優先的に通します。<br>※日"
|
91 |
+
"本語以外の言語でご利用になられるお客様のIPアドレスを登録するなどご利用くだ"
|
92 |
+
"さい。<br>改行区切りで複数設定できます。範囲指定も可能です。(半角数字とス"
|
93 |
+
"ラッシュ、ドットのみ)"
|
94 |
+
|
95 |
+
#: throws_spam_away.class.php:1291
|
96 |
+
msgid ""
|
97 |
+
"許可リストに登録したIPアドレス以外からの投稿を無視する(許可リストへの登録"
|
98 |
+
"がない場合は有効になりません)"
|
99 |
+
msgstr ""
|
100 |
+
"許可リストに登録したIPアドレス以外からの投稿を無視する(許可リストへの登録"
|
101 |
+
"がない場合は有効になりません)"
|
102 |
+
|
103 |
+
#: throws_spam_away.class.php:1293
|
104 |
+
msgid "(初期設定:"
|
105 |
+
msgstr "(初期設定:"
|
106 |
+
|
107 |
+
#: throws_spam_away.class.php:1293 throws_spam_away.class.php:1330
|
108 |
+
#: throws_spam_away.class.php:1364
|
109 |
+
msgid "しない"
|
110 |
+
msgstr "しない"
|
111 |
+
|
112 |
+
#: throws_spam_away.class.php:1293 throws_spam_away.class.php:1330
|
113 |
+
#: throws_spam_away.class.php:1364
|
114 |
+
msgid "する"
|
115 |
+
msgstr "する"
|
116 |
+
|
117 |
+
#: throws_spam_away.class.php:1293
|
118 |
+
msgid ")"
|
119 |
+
msgstr ")"
|
120 |
+
|
121 |
+
#: throws_spam_away.class.php:1295
|
122 |
+
msgid ""
|
123 |
+
"※許可リストで登録したIP以外の投稿は無視されますのでこの設定は慎重に行ってく"
|
124 |
+
"ださい。(すべての設定より優先します)<br>※エラーメッセージは「ブロック対象"
|
125 |
+
"のIPアドレスからの投稿時に表示される文言」が使われます。(エラー表示時の"
|
126 |
+
"み)"
|
127 |
+
msgstr ""
|
128 |
+
"※許可リストで登録したIP以外の投稿は無視されますのでこの設定は慎重に行ってく"
|
129 |
+
"ださい。(すべての設定より優先します)<br>※エラーメッセージは「ブロック対象"
|
130 |
+
"のIPアドレスからの投稿時に表示される文言」が使われます。(エラー表示時の"
|
131 |
+
"み)"
|
132 |
+
|
133 |
+
#: throws_spam_away.class.php:1302
|
134 |
+
msgid ""
|
135 |
+
"メモ(スパム対策情報や IPアドレス・NGワードその他メモ備忘録としてご自由にお"
|
136 |
+
"使い下さい)"
|
137 |
+
msgstr ""
|
138 |
+
"メモ(スパム対策情報や IPアドレス・NGワードその他メモ備忘録としてご自由にお"
|
139 |
+
"使い下さい)"
|
140 |
+
|
141 |
+
#: throws_spam_away.class.php:1303
|
142 |
+
msgid "この欄の内容が表示されることはありません。"
|
143 |
+
msgstr "この欄の内容が表示されることはありません。"
|
144 |
+
|
145 |
+
#: throws_spam_away.class.php:1315
|
146 |
+
msgid "スパムデータベース"
|
147 |
+
msgstr "スパムデータベース"
|
148 |
+
|
149 |
+
#: throws_spam_away.class.php:1318
|
150 |
+
msgid "スパムコメント投稿情報を保存しますか?"
|
151 |
+
msgstr "スパムコメント投稿情報を保存しますか?"
|
152 |
+
|
153 |
+
#: throws_spam_away.class.php:1326
|
154 |
+
msgid "スパムコメント情報を保存する"
|
155 |
+
msgstr "スパムコメント情報を保存する"
|
156 |
+
|
157 |
+
#: throws_spam_away.class.php:1328
|
158 |
+
#, php-format
|
159 |
+
msgid ""
|
160 |
+
"※Throws SPAM Away設定画面表示時に時間がかかることがあります。<br>※「保存す"
|
161 |
+
"る」を解除した場合でもテーブルは残りますので%d日以内の取得データは表示され"
|
162 |
+
"ます。"
|
163 |
+
msgstr ""
|
164 |
+
"※Throws SPAM Away設定画面表示時に時間がかかることがあります。<br>※「保存す"
|
165 |
+
"る」を解除した場合でもテーブルは残りますので%d日以内の取得データは表示され"
|
166 |
+
"ます。"
|
167 |
+
|
168 |
+
#: throws_spam_away.class.php:1330 throws_spam_away.class.php:1384
|
169 |
+
#, php-format
|
170 |
+
msgid "(初期設定:%s)"
|
171 |
+
msgstr "(初期設定:%s)"
|
172 |
+
|
173 |
+
#: throws_spam_away.class.php:1334
|
174 |
+
msgid "スパムデータを表示する期間"
|
175 |
+
msgstr "スパムデータを表示する期間"
|
176 |
+
|
177 |
+
#: throws_spam_away.class.php:1338
|
178 |
+
#, php-format
|
179 |
+
msgid "日分(最低%d日)"
|
180 |
+
msgstr "日分(最低%d日)"
|
181 |
+
|
182 |
+
#: throws_spam_away.class.php:1338
|
183 |
+
#, php-format
|
184 |
+
msgid "(初期設定: %d)"
|
185 |
+
msgstr "(初期設定: %d)"
|
186 |
+
|
187 |
+
#: throws_spam_away.class.php:1347
|
188 |
+
msgid "期間が過ぎたデータを削除する"
|
189 |
+
msgstr "期間が過ぎたデータを削除する"
|
190 |
+
|
191 |
+
#: throws_spam_away.class.php:1349
|
192 |
+
#, php-format
|
193 |
+
msgid ""
|
194 |
+
"※一度消したデータは復活出来ませんのでご注意ください。また最低%d日分は保存さ"
|
195 |
+
"れます。"
|
196 |
+
msgstr ""
|
197 |
+
"※一度消したデータは復活出来ませんのでご注意ください。また最低%d日分は保存さ"
|
198 |
+
"れます。"
|
199 |
+
|
200 |
+
#: throws_spam_away.class.php:1353
|
201 |
+
msgid ""
|
202 |
+
"一定時間内スパム認定機能<br>○分以内に○回スパムとなったら○分間、当該IPからの"
|
203 |
+
"コメントはスパム扱いする設定<br><b>※一定時間以内にスパム投稿された回数を測"
|
204 |
+
"定していますので「スパムコメント情報を保存する」機能がオフの場合は機能しま"
|
205 |
+
"せん。</b>"
|
206 |
+
msgstr ""
|
207 |
+
"一定時間内スパム認定機能<br>○分以内に○回スパムとなったら○分間、当該IPからの"
|
208 |
+
"コメントはスパム扱いする設定<br><b>※一定時間以内にスパム投稿された回数を測"
|
209 |
+
"定していますので「スパムコメント情報を保存する」機能がオフの場合は機能しま"
|
210 |
+
"せん。</b>"
|
211 |
+
|
212 |
+
#: throws_spam_away.class.php:1356
|
213 |
+
msgid "機能設定"
|
214 |
+
msgstr "機能設定"
|
215 |
+
|
216 |
+
#: throws_spam_away.class.php:1363
|
217 |
+
msgid "機能させる"
|
218 |
+
msgstr "機能させる"
|
219 |
+
|
220 |
+
#: throws_spam_away.class.php:1364
|
221 |
+
#, php-format
|
222 |
+
msgid "(初期設定: %s)"
|
223 |
+
msgstr "(初期設定: %s)"
|
224 |
+
|
225 |
+
#: throws_spam_away.class.php:1366 throws_spam_away.class.php:1372
|
226 |
+
msgid "一定時間:"
|
227 |
+
msgstr "一定時間:"
|
228 |
+
|
229 |
+
#: throws_spam_away.class.php:1368
|
230 |
+
msgid "分以内に"
|
231 |
+
msgstr "分以内に"
|
232 |
+
|
233 |
+
#: throws_spam_away.class.php:1369
|
234 |
+
msgid "一定回数:"
|
235 |
+
msgstr "一定回数:"
|
236 |
+
|
237 |
+
#: throws_spam_away.class.php:1370
|
238 |
+
msgid "回スパムとなったら"
|
239 |
+
msgstr "回スパムとなったら"
|
240 |
+
|
241 |
+
#: throws_spam_away.class.php:1371
|
242 |
+
msgid "<b>次から</b>"
|
243 |
+
msgstr "<b>次から</b>"
|
244 |
+
|
245 |
+
#: throws_spam_away.class.php:1374
|
246 |
+
msgid "分間"
|
247 |
+
msgstr "分間"
|
248 |
+
|
249 |
+
#: throws_spam_away.class.php:1377
|
250 |
+
#, php-format
|
251 |
+
msgid ""
|
252 |
+
"(初期設定:一定時間「%d」分以内に一定回数「%d」回スパムとなったら次から"
|
253 |
+
"「%d」分間)<br>当該IPアドレスからのコメントを強制スパム扱いします。"
|
254 |
+
msgstr ""
|
255 |
+
"(初期設定:一定時間「%d」分以内に一定回数「%d」回スパムとなったら次から"
|
256 |
+
"「%d」分間)<br>当該IPアドレスからのコメントを強制スパム扱いします。"
|
257 |
+
|
258 |
+
#: throws_spam_away.class.php:1380
|
259 |
+
msgid "エラーメッセージは:"
|
260 |
+
msgstr "エラーメッセージは:"
|
261 |
+
|
262 |
+
#: throws_spam_away.class.php:1398
|
263 |
+
msgid "Save Changes"
|
264 |
+
msgstr "変更を保存"
|
265 |
+
|
266 |
+
#: throws_spam_away.class.php:1523
|
267 |
+
#, php-format
|
268 |
+
msgid "スパムデータから %s のデータを削除しました。"
|
269 |
+
msgstr "スパムデータから %s のデータを削除しました。"
|
270 |
+
|
271 |
+
#: throws_spam_away.class.php:1535
|
272 |
+
#, php-format
|
273 |
+
msgid "%s はすでに設定されています。"
|
274 |
+
msgstr "%s はすでに設定されています。"
|
275 |
+
|
276 |
+
#: throws_spam_away.class.php:1544
|
277 |
+
#, php-format
|
278 |
+
msgid "%s を追加設定しました。"
|
279 |
+
msgstr "%s を追加設定しました。"
|
280 |
+
|
281 |
+
#: throws_spam_away.class.php:1553
|
282 |
+
msgid "スパムデータをすべて削除しました。"
|
283 |
+
msgstr "スパムデータをすべて削除しました。"
|
284 |
+
|
285 |
+
#: throws_spam_away.class.php:1556
|
286 |
+
msgid ""
|
287 |
+
"スパムデータテーブルへ削除処理を実行しましたが、エラーが発生し処理が完了し"
|
288 |
+
"ませんでした。"
|
289 |
+
msgstr ""
|
290 |
+
"スパムデータテーブルへ削除処理を実行しましたが、エラーが発生し処理が完了し"
|
291 |
+
"ませんでした。"
|
292 |
+
|
293 |
+
#: throws_spam_away.class.php:1573
|
294 |
+
msgid "Throws SPAM Away スパムデータ"
|
295 |
+
msgstr "Throws SPAM Away スパムデータ"
|
296 |
+
|
297 |
+
#: throws_spam_away.class.php:1574
|
298 |
+
#, php-format
|
299 |
+
msgid "スパム投稿%d日間の推移"
|
300 |
+
msgstr "スパム投稿%d日間の推移"
|
301 |
+
|
302 |
+
#: throws_spam_away.class.php:1647
|
303 |
+
msgid ""
|
304 |
+
" ※ 数値は<上段>がSPAM投稿したユニークIPアドレス数、 "
|
305 |
+
"<下段>が破棄したスパム投稿数"
|
306 |
+
msgstr ""
|
307 |
+
" ※ 数値は<上段>がSPAM投稿したユニークIPアドレス数、 "
|
308 |
+
"<下段>が破棄したスパム投稿数"
|
309 |
+
|
310 |
+
#: throws_spam_away.class.php:1661
|
311 |
+
#, php-format
|
312 |
+
msgid "過去%d日間に無視投稿されたIPアドレス"
|
313 |
+
msgstr "過去%d日間に無視投稿されたIPアドレス"
|
314 |
+
|
315 |
+
#: throws_spam_away.class.php:1686
|
316 |
+
msgid ""
|
317 |
+
"をスパムデータベースから削除します。よろしいですか?この操作は取り消せませ"
|
318 |
+
"ん"
|
319 |
+
msgstr ""
|
320 |
+
"をスパムデータベースから削除します。よろしいですか?この操作は取り消せませ"
|
321 |
+
"ん"
|
322 |
+
|
323 |
+
#: throws_spam_away.class.php:1695
|
324 |
+
msgid "を無視対象に追加します。よろしいですか?削除は設定から行ってください"
|
325 |
+
msgstr "を無視対象に追加します。よろしいですか?削除は設定から行ってください"
|
326 |
+
|
327 |
+
#: throws_spam_away.class.php:1705
|
328 |
+
msgid "投稿内容の判定"
|
329 |
+
msgstr "投稿内容の判定"
|
330 |
+
|
331 |
+
#: throws_spam_away.class.php:1706
|
332 |
+
msgid ""
|
333 |
+
"※最新1件のコメント内容はIPアドレスまたはエラー判定のリンク先を参照してくだ"
|
334 |
+
"さい。"
|
335 |
+
msgstr ""
|
336 |
+
"※最新1件のコメント内容はIPアドレスまたはエラー判定のリンク先を参照してくだ"
|
337 |
+
"さい。"
|
338 |
+
|
339 |
+
#: throws_spam_away.class.php:1717
|
340 |
+
msgid "IPアドレス"
|
341 |
+
msgstr "IPアドレス"
|
342 |
+
|
343 |
+
#: throws_spam_away.class.php:1718
|
344 |
+
msgid "投稿数"
|
345 |
+
msgstr "投稿数"
|
346 |
+
|
347 |
+
#: throws_spam_away.class.php:1719
|
348 |
+
msgid "最終投稿日時"
|
349 |
+
msgstr "最終投稿日時"
|
350 |
+
|
351 |
+
#: throws_spam_away.class.php:1720
|
352 |
+
msgid "スパムIP登録"
|
353 |
+
msgstr "スパムIP登録"
|
354 |
+
|
355 |
+
#: throws_spam_away.class.php:1721
|
356 |
+
msgid "エラー判定(最新)"
|
357 |
+
msgstr "エラー判定(最新)"
|
358 |
+
|
359 |
+
#: throws_spam_away.class.php:1738
|
360 |
+
msgid "日本語以外"
|
361 |
+
msgstr "日本語以外"
|
362 |
+
|
363 |
+
#: throws_spam_away.class.php:1741
|
364 |
+
msgid "必須キーワード無し"
|
365 |
+
msgstr "必須キーワード無し"
|
366 |
+
|
367 |
+
#: throws_spam_away.class.php:1744
|
368 |
+
msgid "NGキーワード混入"
|
369 |
+
msgstr "NGキーワード混入"
|
370 |
+
|
371 |
+
#: throws_spam_away.class.php:1747
|
372 |
+
msgid "ブロック対象IPアドレス"
|
373 |
+
msgstr "ブロック対象IPアドレス"
|
374 |
+
|
375 |
+
#: throws_spam_away.class.php:1750
|
376 |
+
msgid "スパム拒否リスト"
|
377 |
+
msgstr "スパム拒否リスト"
|
378 |
+
|
379 |
+
#: throws_spam_away.class.php:1753
|
380 |
+
msgid "トラックバックスパム"
|
381 |
+
msgstr "トラックバックスパム"
|
382 |
+
|
383 |
+
#: throws_spam_away.class.php:1756
|
384 |
+
msgid "URL文字列混入数オーバー"
|
385 |
+
msgstr "URL文字列混入数オーバー"
|
386 |
+
|
387 |
+
#: throws_spam_away.class.php:1759
|
388 |
+
msgid "一定時間スパム判定エラー"
|
389 |
+
msgstr "一定時間スパム判定エラー"
|
390 |
+
|
391 |
+
#: throws_spam_away.class.php:1762
|
392 |
+
msgid "ダミー項目エラー"
|
393 |
+
msgstr "ダミー項目エラー"
|
394 |
+
|
395 |
+
#: throws_spam_away.class.php:1765
|
396 |
+
msgid "許可リスト許可IP以外"
|
397 |
+
msgstr "許可リスト許可IP以外"
|
398 |
+
|
399 |
+
#: throws_spam_away.class.php:1776
|
400 |
+
msgid "スパムデータから削除する"
|
401 |
+
msgstr "スパムデータから削除する"
|
402 |
+
|
403 |
+
#: throws_spam_away.class.php:1784
|
404 |
+
msgid "ブロック対象IPアドレス追加"
|
405 |
+
msgstr "ブロック対象IPアドレス追加"
|
406 |
+
|
407 |
+
#: throws_spam_away.class.php:1804
|
408 |
+
msgid ""
|
409 |
+
"スパムデータベースを使用するにはThrows SPAM Awayのメニュー「設定」から"
|
410 |
+
"<br>「スパムコメント投稿情報を保存しますか?」項目を<strong>「スパムコメン"
|
411 |
+
"ト情報を保存する」</strong>に設定してください"
|
412 |
+
msgstr ""
|
413 |
+
"スパムデータベースを使用するにはThrows SPAM Awayのメニュー「設定」から"
|
414 |
+
"<br>「スパムコメント投稿情報を保存しますか?」項目を<strong>「スパムコメン"
|
415 |
+
"ト情報を保存する」</strong>に設定してください"
|
416 |
+
|
417 |
+
#: throws_spam_away.class.php:1820
|
418 |
+
msgid "すべてのスパムデータが削除されます。よろしいですか?"
|
419 |
+
msgstr "すべてのスパムデータが削除されます。よろしいですか?"
|
420 |
+
|
421 |
+
#: throws_spam_away.class.php:1821
|
422 |
+
msgid "すべてのデータを削除する"
|
423 |
+
msgstr "すべてのデータを削除する"
|
424 |
+
|
425 |
+
#: throws_spam_away.php:67
|
426 |
+
msgid ""
|
427 |
+
"日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)"
|
428 |
+
msgstr ""
|
429 |
+
"日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)"
|
430 |
+
|
431 |
+
#: throws_spam_away.php:73
|
432 |
+
msgid "日本語を規定文字数以上含まない記事は投稿できませんよ。"
|
433 |
+
msgstr "日本語を規定文字数以上含まない記事は投稿できませんよ。"
|
434 |
+
|
435 |
+
#: throws_spam_away.php:88
|
436 |
+
msgid "NGキーワードが含まれているため投稿できません。"
|
437 |
+
msgstr "NGキーワードが含まれているため投稿できません。"
|
438 |
+
|
439 |
+
#: throws_spam_away.php:91
|
440 |
+
msgid "必須キーワードが含まれていないため投稿できません。"
|
441 |
+
msgstr "必須キーワードが含まれていないため投稿できません。"
|
442 |
+
|
443 |
+
#: throws_spam_away_comments.php:24
|
444 |
+
msgid "You have no comment spam."
|
445 |
+
msgstr "スパムコメントはありません。"
|
446 |
+
|
447 |
+
#: throws_spam_away_comments.php:28
|
448 |
+
msgid "Spam comments have been deleted."
|
449 |
+
msgstr "スパムコメントが削除されました。"
|
450 |
+
|
451 |
+
#: throws_spam_away_comments.php:30 throws_spam_away_comments.php:38
|
452 |
+
#: throws_spam_away_comments.php:70
|
453 |
+
msgid "Something Went Wrong,Please Try Again!"
|
454 |
+
msgstr "不具合が発生しました。もう一度操作してください。"
|
455 |
+
|
456 |
+
#: throws_spam_away_comments.php:36 throws_spam_away_comments.php:62
|
457 |
+
msgid "All comments have been deleted."
|
458 |
+
msgstr "すべてのコメントが削除されました。"
|
459 |
+
|
460 |
+
#: throws_spam_away_comments.php:43
|
461 |
+
msgid "Number of all Comments"
|
462 |
+
msgstr "すべてのコメント数"
|
463 |
+
|
464 |
+
#: throws_spam_away_comments.php:44
|
465 |
+
msgid "Number of Spam Comments"
|
466 |
+
msgstr "スパムコメント数"
|
467 |
+
|
468 |
+
#: throws_spam_away_comments.php:51
|
469 |
+
msgid "Delete all spam comments"
|
470 |
+
msgstr "スパムコメントをすべて削除"
|
471 |
+
|
472 |
+
#: throws_spam_away_comments.php:52
|
473 |
+
msgid "Delete all comments"
|
474 |
+
msgstr "コメントをすべて削除"
|
475 |
+
|
476 |
+
#: throws_spam_away_comments.php:56
|
477 |
+
msgid "Delete all Comments"
|
478 |
+
msgstr "すべてのコメントを削除"
|
479 |
+
|
480 |
+
#: throws_spam_away_comments.php:57
|
481 |
+
msgid "I will send. Is it OK?"
|
482 |
+
msgstr "送信します。よろしいですか?"
|
483 |
+
|
484 |
+
#: throws_spam_away_comments.php:68
|
485 |
+
msgid "All Pending comments have been deleted."
|
486 |
+
msgstr "保留中のコメントはすべて削除されました。"
|
487 |
+
|
488 |
+
#: throws_spam_away_comments.php:74
|
489 |
+
msgid "Number of Pending Comments"
|
490 |
+
msgstr "保留中のコメント数"
|
491 |
+
|
492 |
+
#: throws_spam_away_comments.php:81
|
493 |
+
msgid "Delete all pending comments"
|
494 |
+
msgstr "保留中のコメントをすべて削除する"
|
495 |
+
|
496 |
+
#: throws_spam_away_comments.php:84
|
497 |
+
msgid "Delete all pending Comments"
|
498 |
+
msgstr "保留中のコメントをすべて削除する"
|
499 |
+
|
500 |
+
#: throws_spam_away_comments.php:89
|
501 |
+
msgid "All pending comments have been deleted."
|
502 |
+
msgstr "保留中のコメントはすべて削除されました。"
|
503 |
+
|
504 |
+
#: throws_spam_away_comments.php:93
|
505 |
+
msgid "Warning : Once Comment Deleted can't be restored!"
|
506 |
+
msgstr "注意: 削除されたコメントは戻せません。"
|
507 |
+
|
508 |
+
#. Plugin URI of the plugin/theme
|
509 |
+
msgid "https://gti.co.jp/throws-spam-away/"
|
510 |
+
msgstr "https://gti.co.jp/throws-spam-away/"
|
511 |
+
|
512 |
+
#. Description of the plugin/theme
|
513 |
+
msgid ""
|
514 |
+
"コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞い"
|
515 |
+
"ながらも捨ててしまうプラグイン"
|
516 |
+
msgstr ""
|
517 |
+
"コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞い"
|
518 |
+
"ながらも捨ててしまうプラグイン"
|
519 |
+
|
520 |
+
#. Author of the plugin/theme
|
521 |
+
msgid "株式会社ジーティーアイ さとう たけし"
|
522 |
+
msgstr "株式会社ジーティーアイ さとう たけし"
|
523 |
+
|
524 |
+
#. Author URI of the plugin/theme
|
525 |
+
msgid "https://gti.co.jp/"
|
526 |
+
msgstr "https://gti.co.jp/"
|
languages/throws-spam-away-ja_JP.mo
ADDED
Binary file
|
languages/throws-spam-away.pot
ADDED
@@ -0,0 +1,487 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#, fuzzy
|
2 |
+
msgid ""
|
3 |
+
msgstr ""
|
4 |
+
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
5 |
+
"Project-Id-Version: Throws SPAM Away\n"
|
6 |
+
"POT-Creation-Date: 2019-03-14 00:58+0900\n"
|
7 |
+
"PO-Revision-Date: 2019-03-14 00:57+0900\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Generator: Poedit 2.2.1\n"
|
14 |
+
"X-Poedit-Basepath: ..\n"
|
15 |
+
"X-Poedit-Flags-xgettext: --add-comments=translators:\n"
|
16 |
+
"X-Poedit-WPHeader: throws_spam_away.php\n"
|
17 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
|
19 |
+
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
|
20 |
+
"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
21 |
+
"X-Poedit-SearchPath-0: .\n"
|
22 |
+
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
23 |
+
|
24 |
+
#: hostbyip.php:61
|
25 |
+
msgid "特定のホスト情報が見つかりました。"
|
26 |
+
msgstr ""
|
27 |
+
|
28 |
+
#: hostbyip.php:70
|
29 |
+
msgid "このIPアドレスから特定のホスト情報は見つかりませんでした。"
|
30 |
+
msgstr ""
|
31 |
+
|
32 |
+
#: hostbyip.php:75
|
33 |
+
msgid "このIPからの最終投稿日時"
|
34 |
+
msgstr ""
|
35 |
+
|
36 |
+
#: hostbyip.php:77
|
37 |
+
msgid "このIPからスパム投稿対象となったページ"
|
38 |
+
msgstr ""
|
39 |
+
|
40 |
+
#: hostbyip.php:81
|
41 |
+
msgid "スパムフィルター:"
|
42 |
+
msgstr ""
|
43 |
+
|
44 |
+
#: hostbyip.php:81
|
45 |
+
msgid "スパム拒否リスト存在IPアドレス"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: hostbyip.php:81
|
49 |
+
msgid "未検出"
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: hostbyip.php:83
|
53 |
+
msgid "最新コメント内容"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: hostbyip.php:93
|
57 |
+
msgid "閉じる"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: throws_spam_away.class.php:787
|
61 |
+
msgid "Throws SPAM Away 設定"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#. Plugin Name of the plugin/theme
|
65 |
+
#: throws_spam_away.class.php:787
|
66 |
+
msgid "Throws SPAM Away"
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: throws_spam_away.class.php:795
|
70 |
+
msgid "スパムデータ"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: throws_spam_away.class.php:800
|
74 |
+
msgid "スパムコメント一括削除"
|
75 |
+
msgstr ""
|
76 |
+
|
77 |
+
#: throws_spam_away.class.php:1091 throws_spam_away.class.php:1122
|
78 |
+
#: throws_spam_away.class.php:1195 throws_spam_away.class.php:1303
|
79 |
+
#: throws_spam_away.class.php:1316 throws_spam_away.class.php:1391
|
80 |
+
msgid "▲ 上へ"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: throws_spam_away.class.php:1283
|
84 |
+
msgid ""
|
85 |
+
"※ここに登録したIPアドレスはスパムフィルタを掛けず優先的に通します。<br/>※日本"
|
86 |
+
"語以外の言語でご利用になられるお客様のIPアドレスを登録するなどご利用くださ"
|
87 |
+
"い。<br/>改行区切りで複数設定できます。範囲指定も可能です。(半角数字とスラッ"
|
88 |
+
"シュ、ドットのみ)"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
#: throws_spam_away.class.php:1294
|
92 |
+
msgid ""
|
93 |
+
"許可リストに登録したIPアドレス以外からの投稿を無視する(許可リストへ"
|
94 |
+
"の登録がない場合は有効になりません)"
|
95 |
+
msgstr ""
|
96 |
+
|
97 |
+
#: throws_spam_away.class.php:1296
|
98 |
+
msgid "(初期設定:"
|
99 |
+
msgstr ""
|
100 |
+
|
101 |
+
#: throws_spam_away.class.php:1296 throws_spam_away.class.php:1333
|
102 |
+
#: throws_spam_away.class.php:1367
|
103 |
+
msgid "しない"
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: throws_spam_away.class.php:1296 throws_spam_away.class.php:1333
|
107 |
+
#: throws_spam_away.class.php:1367
|
108 |
+
msgid "する"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
#: throws_spam_away.class.php:1296
|
112 |
+
msgid ")"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: throws_spam_away.class.php:1298
|
116 |
+
msgid ""
|
117 |
+
"※許可リストで登録したIP以外の投稿は無視されますのでこの設定は慎重に行って"
|
118 |
+
"ください。(すべての設定より優先します)<br/>※エラーメッセージは「ブロック対"
|
119 |
+
"象のIPアドレスからの投稿時に表示される文言」が使われます。(エラー表示時の"
|
120 |
+
"み)"
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#: throws_spam_away.class.php:1305
|
124 |
+
msgid ""
|
125 |
+
"メモ(スパム対策情報や IPアドレス・NGワードその他メモ備忘録としてご自由にお使"
|
126 |
+
"い下さい)"
|
127 |
+
msgstr ""
|
128 |
+
|
129 |
+
#: throws_spam_away.class.php:1306
|
130 |
+
msgid "この欄の内容が表示されることはありません。"
|
131 |
+
msgstr ""
|
132 |
+
|
133 |
+
#: throws_spam_away.class.php:1318
|
134 |
+
msgid "スパムデータベース"
|
135 |
+
msgstr ""
|
136 |
+
|
137 |
+
#: throws_spam_away.class.php:1321
|
138 |
+
msgid "スパムコメント投稿情報を保存しますか?"
|
139 |
+
msgstr ""
|
140 |
+
|
141 |
+
#: throws_spam_away.class.php:1329
|
142 |
+
msgid "スパムコメント情報を保存する"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: throws_spam_away.class.php:1331
|
146 |
+
#, php-format
|
147 |
+
msgid ""
|
148 |
+
"※Throws SPAM Away設定画面表示時に時間がかかることがあります。<br/>※「保存す"
|
149 |
+
"る」を解除した場合でもテーブルは残りますので%d日以内の取得データは表示されま"
|
150 |
+
"す。"
|
151 |
+
msgstr ""
|
152 |
+
|
153 |
+
#: throws_spam_away.class.php:1333 throws_spam_away.class.php:1387
|
154 |
+
#, php-format
|
155 |
+
msgid "(初期設定:%s)"
|
156 |
+
msgstr ""
|
157 |
+
|
158 |
+
#: throws_spam_away.class.php:1337
|
159 |
+
msgid "スパムデータを表示する期間"
|
160 |
+
msgstr ""
|
161 |
+
|
162 |
+
#: throws_spam_away.class.php:1341
|
163 |
+
#, php-format
|
164 |
+
msgid "日分(最低%d日)"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: throws_spam_away.class.php:1341
|
168 |
+
#, php-format
|
169 |
+
msgid "(初期設定: %d)"
|
170 |
+
msgstr ""
|
171 |
+
|
172 |
+
#: throws_spam_away.class.php:1350
|
173 |
+
msgid "期間が過ぎたデータを削除する"
|
174 |
+
msgstr ""
|
175 |
+
|
176 |
+
#: throws_spam_away.class.php:1352
|
177 |
+
#, php-format
|
178 |
+
msgid ""
|
179 |
+
"※一度消したデータは復活出来ませんのでご注意ください。また最低%d日分は保存され"
|
180 |
+
"ます。"
|
181 |
+
msgstr ""
|
182 |
+
|
183 |
+
#: throws_spam_away.class.php:1356
|
184 |
+
msgid ""
|
185 |
+
"一定時間内スパム認定機能<br/>○分以内に○回スパムとなったら○分間、当該IPからの"
|
186 |
+
"コメントはスパム扱いする設定<br/><b>※一定時間以内にスパム投稿された回数を測定"
|
187 |
+
"していますので「スパムコメント情報を保存する」機能がオフの場合は機能しませ"
|
188 |
+
"ん。</b>"
|
189 |
+
msgstr ""
|
190 |
+
|
191 |
+
#: throws_spam_away.class.php:1359
|
192 |
+
msgid "機能設定"
|
193 |
+
msgstr ""
|
194 |
+
|
195 |
+
#: throws_spam_away.class.php:1366
|
196 |
+
msgid "機能させる"
|
197 |
+
msgstr ""
|
198 |
+
|
199 |
+
#: throws_spam_away.class.php:1367
|
200 |
+
#, php-format
|
201 |
+
msgid "(初期設定: %s)"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: throws_spam_away.class.php:1369 throws_spam_away.class.php:1375
|
205 |
+
msgid "一定時間:"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: throws_spam_away.class.php:1371
|
209 |
+
msgid "分以内に"
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
#: throws_spam_away.class.php:1372
|
213 |
+
msgid "一定回数:"
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: throws_spam_away.class.php:1373
|
217 |
+
msgid "回スパムとなったら"
|
218 |
+
msgstr ""
|
219 |
+
|
220 |
+
#: throws_spam_away.class.php:1374
|
221 |
+
msgid "<b>次から</b>"
|
222 |
+
msgstr ""
|
223 |
+
|
224 |
+
#: throws_spam_away.class.php:1377
|
225 |
+
msgid "分間"
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: throws_spam_away.class.php:1380
|
229 |
+
#, php-format
|
230 |
+
msgid ""
|
231 |
+
"(初期設定:一定時間「%d」分以内に一定回数「%d」回スパムとなったら次から"
|
232 |
+
"「%d」分間)<br/>当該IPアドレスからのコメントを強制スパム扱いします。"
|
233 |
+
msgstr ""
|
234 |
+
|
235 |
+
#: throws_spam_away.class.php:1383
|
236 |
+
msgid "エラーメッセージは:"
|
237 |
+
msgstr ""
|
238 |
+
|
239 |
+
#: throws_spam_away.class.php:1401
|
240 |
+
msgid "Save Changes"
|
241 |
+
msgstr ""
|
242 |
+
|
243 |
+
#: throws_spam_away.class.php:1528
|
244 |
+
#, php-format
|
245 |
+
msgid "スパムデータから %s のデータを削除しました。"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: throws_spam_away.class.php:1540
|
249 |
+
#, php-format
|
250 |
+
msgid "%s はすでに設定されています。"
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: throws_spam_away.class.php:1549
|
254 |
+
#, php-format
|
255 |
+
msgid "%s を追加設定しました。"
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: throws_spam_away.class.php:1558
|
259 |
+
msgid "スパムデータをすべて削除しました。"
|
260 |
+
msgstr ""
|
261 |
+
|
262 |
+
#: throws_spam_away.class.php:1561
|
263 |
+
msgid ""
|
264 |
+
"スパムデータテーブルへ削除処理を実行しましたが、エラーが発生し処理が完了しま"
|
265 |
+
"せんでした。"
|
266 |
+
msgstr ""
|
267 |
+
|
268 |
+
#: throws_spam_away.class.php:1578
|
269 |
+
msgid "Throws SPAM Away スパムデータ"
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: throws_spam_away.class.php:1579
|
273 |
+
#, php-format
|
274 |
+
msgid "スパム投稿%d日間の推移"
|
275 |
+
msgstr ""
|
276 |
+
|
277 |
+
#: throws_spam_away.class.php:1652
|
278 |
+
msgid ""
|
279 |
+
" ※ 数値は<上段>がSPAM投稿したユニークIPアドレス数、 <"
|
280 |
+
"下段>が破棄したスパム投稿数"
|
281 |
+
msgstr ""
|
282 |
+
|
283 |
+
#: throws_spam_away.class.php:1666
|
284 |
+
#, php-format
|
285 |
+
msgid "過去%d日間に無視投稿されたIPアドレス"
|
286 |
+
msgstr ""
|
287 |
+
|
288 |
+
#: throws_spam_away.class.php:1691
|
289 |
+
msgid ""
|
290 |
+
"をスパムデータベースから削除します。よろしいですか?この操作は取り消せません"
|
291 |
+
msgstr ""
|
292 |
+
|
293 |
+
#: throws_spam_away.class.php:1700
|
294 |
+
msgid "を無視対象に追加します。よろしいですか?削除は設定から行ってください"
|
295 |
+
msgstr ""
|
296 |
+
|
297 |
+
#: throws_spam_away.class.php:1710
|
298 |
+
msgid "投稿内容の判定"
|
299 |
+
msgstr ""
|
300 |
+
|
301 |
+
#: throws_spam_away.class.php:1711
|
302 |
+
msgid ""
|
303 |
+
"※最新1件のコメント内容はIPアドレスまたはエラー判定のリンク先を参照してくださ"
|
304 |
+
"い。"
|
305 |
+
msgstr ""
|
306 |
+
|
307 |
+
#: throws_spam_away.class.php:1722
|
308 |
+
msgid "IPアドレス"
|
309 |
+
msgstr ""
|
310 |
+
|
311 |
+
#: throws_spam_away.class.php:1723
|
312 |
+
msgid "投稿数"
|
313 |
+
msgstr ""
|
314 |
+
|
315 |
+
#: throws_spam_away.class.php:1724
|
316 |
+
msgid "最終投稿日時"
|
317 |
+
msgstr ""
|
318 |
+
|
319 |
+
#: throws_spam_away.class.php:1725
|
320 |
+
msgid "スパムIP登録"
|
321 |
+
msgstr ""
|
322 |
+
|
323 |
+
#: throws_spam_away.class.php:1726
|
324 |
+
msgid "エラー判定(最新)"
|
325 |
+
msgstr ""
|
326 |
+
|
327 |
+
#: throws_spam_away.class.php:1743
|
328 |
+
msgid "日本語以外"
|
329 |
+
msgstr ""
|
330 |
+
|
331 |
+
#: throws_spam_away.class.php:1746
|
332 |
+
msgid "必須キーワード無し"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: throws_spam_away.class.php:1749
|
336 |
+
msgid "NGキーワード混入"
|
337 |
+
msgstr ""
|
338 |
+
|
339 |
+
#: throws_spam_away.class.php:1752
|
340 |
+
msgid "ブロック対象IPアドレス"
|
341 |
+
msgstr ""
|
342 |
+
|
343 |
+
#: throws_spam_away.class.php:1755
|
344 |
+
msgid "スパム拒否リスト"
|
345 |
+
msgstr ""
|
346 |
+
|
347 |
+
#: throws_spam_away.class.php:1758
|
348 |
+
msgid "トラックバックスパム"
|
349 |
+
msgstr ""
|
350 |
+
|
351 |
+
#: throws_spam_away.class.php:1761
|
352 |
+
msgid "URL文字列混入数オーバー"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
#: throws_spam_away.class.php:1764
|
356 |
+
msgid "一定時間スパム判定エラー"
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
#: throws_spam_away.class.php:1767
|
360 |
+
msgid "ダミー項目エラー"
|
361 |
+
msgstr ""
|
362 |
+
|
363 |
+
#: throws_spam_away.class.php:1770
|
364 |
+
msgid "許可リスト許可IP以外"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: throws_spam_away.class.php:1781
|
368 |
+
msgid "スパムデータから削除する"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#: throws_spam_away.class.php:1789
|
372 |
+
msgid "ブロック対象IPアドレス追加"
|
373 |
+
msgstr ""
|
374 |
+
|
375 |
+
#: throws_spam_away.class.php:1809
|
376 |
+
msgid ""
|
377 |
+
"スパムデータベースを使用するにはThrows SPAM Awayのメニュー「設定」から<br/"
|
378 |
+
">「スパムコメント投稿情報を保存しますか?」項目を<strong>「スパムコメント情報"
|
379 |
+
"を保存する」</strong>に設定してください"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: throws_spam_away.class.php:1825
|
383 |
+
msgid "すべてのスパムデータが削除されます。よろしいですか?"
|
384 |
+
msgstr ""
|
385 |
+
|
386 |
+
#: throws_spam_away.class.php:1826
|
387 |
+
msgid "すべてのデータを削除する"
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: throws_spam_away.php:64
|
391 |
+
msgid "日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: throws_spam_away.php:70
|
395 |
+
msgid "日本語を規定文字数以上含まない記事は投稿できませんよ。"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: throws_spam_away.php:85
|
399 |
+
msgid "NGキーワードが含まれているため投稿できません。"
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: throws_spam_away.php:88
|
403 |
+
msgid "必須キーワードが含まれていないため投稿できません。"
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: throws_spam_away_comments.php:24
|
407 |
+
msgid "You have no comment spam."
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
#: throws_spam_away_comments.php:28
|
411 |
+
msgid "Spam comments have been deleted."
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
+
#: throws_spam_away_comments.php:30 throws_spam_away_comments.php:38
|
415 |
+
#: throws_spam_away_comments.php:67
|
416 |
+
msgid "Something Went Wrong,Please Try Again!"
|
417 |
+
msgstr ""
|
418 |
+
|
419 |
+
#: throws_spam_away_comments.php:36 throws_spam_away_comments.php:59
|
420 |
+
msgid "All comments have been deleted."
|
421 |
+
msgstr ""
|
422 |
+
|
423 |
+
#: throws_spam_away_comments.php:43
|
424 |
+
msgid "Number of all Comments"
|
425 |
+
msgstr ""
|
426 |
+
|
427 |
+
#: throws_spam_away_comments.php:44
|
428 |
+
msgid "Number of Spam Comments"
|
429 |
+
msgstr ""
|
430 |
+
|
431 |
+
#: throws_spam_away_comments.php:50
|
432 |
+
msgid "Delete all spam comments"
|
433 |
+
msgstr ""
|
434 |
+
|
435 |
+
#: throws_spam_away_comments.php:51
|
436 |
+
msgid "Delete all comments"
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: throws_spam_away_comments.php:54
|
440 |
+
msgid "Delete all Comments"
|
441 |
+
msgstr ""
|
442 |
+
|
443 |
+
#: throws_spam_away_comments.php:54
|
444 |
+
msgid "I will send. Is it OK?"
|
445 |
+
msgstr ""
|
446 |
+
|
447 |
+
#: throws_spam_away_comments.php:65
|
448 |
+
msgid "All Pending comments have been deleted."
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: throws_spam_away_comments.php:71
|
452 |
+
msgid "Number of Pending Comments"
|
453 |
+
msgstr ""
|
454 |
+
|
455 |
+
#: throws_spam_away_comments.php:77
|
456 |
+
msgid "Delete all pending comments"
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
#: throws_spam_away_comments.php:79
|
460 |
+
msgid "Delete all pending Comments"
|
461 |
+
msgstr ""
|
462 |
+
|
463 |
+
#: throws_spam_away_comments.php:84
|
464 |
+
msgid "All pending comments have been deleted."
|
465 |
+
msgstr ""
|
466 |
+
|
467 |
+
#: throws_spam_away_comments.php:88
|
468 |
+
msgid "Warning : Once Comment Deleted can't be restored!"
|
469 |
+
msgstr ""
|
470 |
+
|
471 |
+
#. Plugin URI of the plugin/theme
|
472 |
+
msgid "https://gti.co.jp/throws-spam-away/"
|
473 |
+
msgstr ""
|
474 |
+
|
475 |
+
#. Description of the plugin/theme
|
476 |
+
msgid ""
|
477 |
+
"コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いな"
|
478 |
+
"がらも捨ててしまうプラグイン"
|
479 |
+
msgstr ""
|
480 |
+
|
481 |
+
#. Author of the plugin/theme
|
482 |
+
msgid "株式会社ジーティーアイ さとう たけし"
|
483 |
+
msgstr ""
|
484 |
+
|
485 |
+
#. Author URI of the plugin/theme
|
486 |
+
msgid "https://gti.co.jp/"
|
487 |
+
msgstr ""
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Plugin Name ===
|
2 |
Contributors: tsato
|
3 |
-
Donate link:
|
4 |
Tags: comments, spam
|
5 |
-
Requires at least:
|
6 |
-
Tested up to:
|
7 |
-
Stable tag:
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -45,18 +45,18 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
45 |
指定IPアドレスからの投稿をスパムとして処理します。
|
46 |
以前スパムとしてチェックした投稿のIPアドレス及び、任意のIPアドレスでの制御も出来るようになっています。
|
47 |
|
48 |
-
|
49 |
-
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
|
59 |
-
IP
|
60 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
61 |
[192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否(または優先通過)対象とします。
|
62 |
|
@@ -86,138 +86,204 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
86 |
※コメント投稿時のスパムコメント対応の煩わしさが原因で作ったものですのでスパム判定されたコメントを保持しておりません。
|
87 |
|
88 |
-- これまでの変更点について
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
|
90 |
・バージョン 2.8.2
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
|
95 |
・バージョン 2.8.1
|
96 |
-
|
97 |
-
|
98 |
|
99 |
・バージョン 2.8
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
|
107 |
・バージョン 2.7.1
|
108 |
-
|
109 |
スパム判定の初期値設定を判定メソッド内部に移動。
|
110 |
外部からの利用時にThrows SPAM Away 側の設定が活用できるようにした。
|
111 |
mb_split 関数を explode に変更
|
112 |
|
113 |
・バージョン 2.7
|
114 |
-
|
115 |
-
|
116 |
|
117 |
・バージョン 2.6.10
|
118 |
-
|
119 |
|
120 |
・バージョン2.6.9
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
|
126 |
・バージョン2.6.8
|
127 |
-
|
128 |
-
|
129 |
|
130 |
-
|
131 |
-
|
132 |
|
133 |
-
|
134 |
-
|
135 |
|
136 |
-
|
137 |
|
138 |
・バージョン2.6.7
|
139 |
-
|
140 |
-
|
141 |
|
142 |
・バージョン2.6.5
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
|
149 |
-
|
150 |
|
151 |
-
|
152 |
-
|
153 |
|
154 |
・バージョン2.6.4
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
|
160 |
-
|
161 |
-
|
162 |
|
163 |
-
|
164 |
|
165 |
・バージョン2.6.3
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
|
170 |
-
|
171 |
-
|
172 |
|
173 |
-
|
174 |
|
175 |
・バージョン2.6.2
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
|
180 |
・バージョン2.6.1
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
|
185 |
・バージョン2.6
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
|
191 |
-
|
192 |
-
|
193 |
|
194 |
・バージョン2.5.2.1
|
195 |
-
|
196 |
|
197 |
・バージョン2.5.2
|
198 |
-
|
199 |
-
|
200 |
|
201 |
・バージョン2.5.1
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
|
210 |
・バージョン2.5
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
|
218 |
・バージョン2.4
|
219 |
-
|
220 |
-
|
221 |
例えば、「10分以内に2回スパムとなったら10分間、当該IPからのコメントはスパム扱いする」とした場合は
|
222 |
過去(今から)10分前から今まで2回スパム扱いとなったIPからの投稿は3回目以降スパム扱いとなります。
|
223 |
そのため、10分以内に3回目のスパムを作ってしまったためそこから10分以上経過しないとずっとスパム扱いになってしまいます。
|
@@ -228,25 +294,25 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
228 |
あまり長い時間を指定しますとコメント欄への反映が遅くなりますので気をつけてください。
|
229 |
5~10分程度を推奨します。
|
230 |
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
|
236 |
-
|
237 |
○IPアドレス
|
238 |
○ホスト名が特定出来た場合はホスト名
|
239 |
○このIPアドレスからの最終投稿日時
|
240 |
○このIPアドレスからスパム投稿を受けた記事(リンク)
|
241 |
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
|
247 |
・バージョン2.3.1, 2.3.2 不具合修正 仕様は2.3のままです。
|
248 |
・バージョン2.3スパムコメント数を保持出来るようにしました。設定を変更しないと機能しませんのでご注意ください。
|
249 |
-
|
250 |
○投稿日時
|
251 |
○投稿された記事ID
|
252 |
○投稿元IPアドレス
|
@@ -258,30 +324,30 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
|
|
258 |
(トラックバックでも同様に名前もNGワード対象に追加しています。)
|
259 |
|
260 |
・バージョン2.2 'http'を許容数(初期設定 3)を超えて包含する場合にエラーとする機能を付けました。
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
|
265 |
・バージョン2.1.1 一部レンタルサーバー等の設定によってコメント投稿後エラーまたは白画面になってしまう不具合を修正
|
266 |
-
|
267 |
|
268 |
・バージョン2.1でIPアドレスの範囲指定を可能にしました。
|
269 |
|
270 |
・バージョン2.0で、WordPressのcommentsテーブルを検索し「spam」扱いとなったコメントのIPを収集しそのIPからの投稿を無視出来る機能と任意のIPアドレスからの投稿を無視出来る機能をつけました。
|
271 |
|
272 |
・バージョン1.7で、元の画面に戻ってくる際の挙動を修正しました。
|
273 |
-
|
274 |
-
|
275 |
|
276 |
・バージョン1.6にてNGキーワードとは逆にコレが入っていないとダメという「必須キーワード」の設定が出来るようにしました。
|
277 |
-
|
278 |
|
279 |
・バージョン1.5では「トラックバック」に対しても同様の規制を入れられるようになりました。
|
280 |
-
|
281 |
-
|
282 |
|
283 |
|
284 |
-
制作:佐藤 毅(さとう たけし) <a href="
|
285 |
|
286 |
== Installation ==
|
287 |
|
@@ -301,23 +367,100 @@ e.g.
|
|
301 |
2. Activate the plugin through the 'Plugins' menu in WordPress
|
302 |
|
303 |
== Frequently Asked Questions ==
|
304 |
-
質問やご要望はSupportまたは弊社お問い合わせ(
|
305 |
|
306 |
== Screenshots ==
|
307 |
|
308 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
309 |
= 2.8.2 =
|
310 |
ロードバランサ経由のクライアントIP取得ができるように HTTP_X_FORWARDED_FOR を取得するようにしました。
|
311 |
JavaScriptの不具合修正
|
312 |
|
313 |
= 2.8.1 =
|
314 |
-
|
315 |
|
316 |
= 2.8 =
|
317 |
-
|
318 |
このフラグが「する」担っている場合は・・・
|
319 |
-
|
320 |
-
|
321 |
|
322 |
= 2.7 =
|
323 |
スパム判定メソッドの整理を実施。
|
@@ -355,7 +498,7 @@ e.g.
|
|
355 |
選択肢「bsb.spamlookup.net, bsb.empty.us, list.dsbl.org, all.rbl.jp」
|
356 |
及び自由記入欄にてカンマ区切りでサービスのURLを入力できます。
|
357 |
※記述に誤りがありますと通信が返ってこないためコメント出来ない可能性がありますのでご注意ください。
|
358 |
-
|
359 |
その時点では有効だったフィルタが閲覧時に入れ替えがあると「スパムフィルター:未検出」となる場合があります。
|
360 |
ご了承ください。
|
361 |
|
@@ -381,7 +524,7 @@ e.g.
|
|
381 |
スパムコメントの表示を個別画面へ移動(エラーをクリック)
|
382 |
|
383 |
スパムの区別が「すぱむちゃんぷるー」でも「指定IP」でも同一「ブロックIPアドレス」であったが
|
384 |
-
|
385 |
|
386 |
管理画面の見栄えを変更しました。
|
387 |
|
@@ -400,9 +543,9 @@ e.g.
|
|
400 |
= 2.5 =
|
401 |
・「スパムちゃんぷるー(ベータ)」http://spam-champuru.livedoor.com/dnsbl/ を利用出来ます。
|
402 |
スパムちゃんぷるーでスパム判定する機能です。
|
403 |
-
・「IPアドレス
|
404 |
-
|
405 |
-
|
406 |
・スパムデータベースの表示期間を指定するようにしました。また表示期間を過ぎたデータを削除することも出来るようにしました。
|
407 |
・テストでスパム投稿したIPアドレスなどをスパムデータベースから削除する機能を付けました。
|
408 |
・スパム投稿データに「スパムちゃんぷるー」の結果も付加しました。
|
1 |
=== Plugin Name ===
|
2 |
Contributors: tsato
|
3 |
+
Donate link: https://www.gti.co.jp/throws-spam-away
|
4 |
Tags: comments, spam
|
5 |
+
Requires at least: 5.1
|
6 |
+
Tested up to: 5.9.3
|
7 |
+
Stable tag: 3.3.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
45 |
指定IPアドレスからの投稿をスパムとして処理します。
|
46 |
以前スパムとしてチェックした投稿のIPアドレス及び、任意のIPアドレスでの制御も出来るようになっています。
|
47 |
|
48 |
+
【拒否リスト】
|
49 |
+
拒否リストに登録したIPアドレスからの投稿をスパム処理します。
|
50 |
|
51 |
+
【許可リスト】
|
52 |
+
許可リストに登録したIPアドレスからの投稿はすべてのフィルタを通しませんので優先的に通常コメントとしてノーチェックで投稿処理がなされます。
|
53 |
+
※許可リストが一番強力にしてありますので、このIPアドレスがAkismetで捉えられていてもブロック対象だったとしても優先で通過させます。
|
54 |
|
55 |
+
【許可リストのみ許可するフラグ】
|
56 |
+
許可リストに登録したIPアドレスのみ許可するフラグをチェックすると許可リスト登録IP以外は無視されるようになります。
|
57 |
+
このフラグが付いている場合は本来ノーチェックだった許可リストへIPアドレスチェック以外が行われるようになります。
|
58 |
|
59 |
+
IPアドレスの指定「ブロックリスト」「許可リスト」共に「改行」区切りで複数入力できますが、「192.168.1.0/24」のようにIPアドレスの範囲指定も可能です。
|
60 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
61 |
[192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否(または優先通過)対象とします。
|
62 |
|
86 |
※コメント投稿時のスパムコメント対応の煩わしさが原因で作ったものですのでスパム判定されたコメントを保持しておりません。
|
87 |
|
88 |
-- これまでの変更点について
|
89 |
+
・バージョン 3.3.2
|
90 |
+
変数の初期化漏れを修正。
|
91 |
+
|
92 |
+
・バージョン 3.3.1
|
93 |
+
スパムコメント削除フォーム CSRF対策
|
94 |
+
「コメントをすべて削除」機能削除
|
95 |
+
|
96 |
+
・バージョン 3.3
|
97 |
+
スパム防止メッセージを 送信ボタン上にも置けるように選択肢追加
|
98 |
+
|
99 |
+
・バージョン 3.2.6
|
100 |
+
WordPress5.9 対応確認
|
101 |
+
コード見直し
|
102 |
+
|
103 |
+
・バージョン 3.2.5
|
104 |
+
スパムデータ削除時のDELETE発行処理を修正
|
105 |
+
テーブル存在確認方法を変更
|
106 |
+
|
107 |
+
・バージョン 3.2.4
|
108 |
+
スパムデータ削除時のDELETE発行処理を改修
|
109 |
+
|
110 |
+
・バージョン 3.2.2, 3.2.3
|
111 |
+
テンプレートの作りによって JavaScript エラーがあったため修正
|
112 |
+
|
113 |
+
・バージョン 3.2.1
|
114 |
+
テーマによって JavaScript エラーがあったため修正
|
115 |
+
|
116 |
+
・バージョン 3.2
|
117 |
+
jQuery で処理していた部分を JavaScript に書き換え。
|
118 |
+
pre_comment_on_post から preprocess_comment にて処理を行うように変更
|
119 |
+
IP拒否リスト、許可リスト の不具合を修正
|
120 |
+
|
121 |
+
・バージョン 3.1.4
|
122 |
+
表記の変更を行いました。
|
123 |
+
|
124 |
+
・バージョン 3.1.3
|
125 |
+
WordPress5.4 動作確認
|
126 |
+
PHP7.4 対応確認
|
127 |
+
|
128 |
+
・バージョン 3.1.2
|
129 |
+
throws_spam_away.class.php を単体利用した際に出力される Warningを修正
|
130 |
+
|
131 |
+
・バージョン 3.1.1
|
132 |
+
PHP7.3までの対応
|
133 |
+
|
134 |
+
・バージョン 3.0
|
135 |
+
スパムコメントの一括削除機能
|
136 |
+
|
137 |
+
・バージョン 2.9
|
138 |
+
国際化対応
|
139 |
+
コメントバリデーション部分にapply_filters 2つ追加
|
140 |
+
|
141 |
+
$result_valid = apply_filters( 'tsa_validate_comment',
|
142 |
+
$this->validate_comment(
|
143 |
+
$author,
|
144 |
+
$comment,
|
145 |
+
array(
|
146 |
+
'post_id' => $post_id,
|
147 |
+
'tsa_on_flg' => $tsa_on_flg
|
148 |
+
)
|
149 |
+
), $author, $comment, $post_id, $tsa_on_flg );
|
150 |
+
|
151 |
+
return apply_filters( 'tsa_validate_comment_result', $result_valid );
|
152 |
+
|
153 |
+
バリデーション方法追加または変更可能にし
|
154 |
+
バリデーション結果自体も変更可能にしました。
|
155 |
|
156 |
・バージョン 2.8.2
|
157 |
+
2016/12/1
|
158 |
+
ロードバランサ経由のクライアントIP取得ができるように HTTP_X_FORWARDED_FOR を取得するようにしました。
|
159 |
+
JavaScriptの不具合修正
|
160 |
|
161 |
・バージョン 2.8.1
|
162 |
+
2016/5/14
|
163 |
+
許可リストIPアドレスのチェックメソッドの不具合を修正しました。
|
164 |
|
165 |
・バージョン 2.8
|
166 |
+
2016/5/2
|
167 |
+
許可リスト登録IPアドレスだけを許可するフラグを追加
|
168 |
+
このフラグが「する」になっている場合は・・・
|
169 |
+
許可リストに登録したIPアドレスのみ許可するフラグをチェックすると許可リスト登録IP以外は無視されるようになります。
|
170 |
+
このフラグが付いている場合は本来ノーチェックだった許可リストへIPアドレスチェック以外が行われるようになります。
|
171 |
+
このバージョンでは許可リストをトラックバックには適用しておりません。
|
172 |
|
173 |
・バージョン 2.7.1
|
174 |
+
2015/11/16
|
175 |
スパム判定の初期値設定を判定メソッド内部に移動。
|
176 |
外部からの利用時にThrows SPAM Away 側の設定が活用できるようにした。
|
177 |
mb_split 関数を explode に変更
|
178 |
|
179 |
・バージョン 2.7
|
180 |
+
2015/10/24
|
181 |
+
スパム判定メソッドを整理し外部から利用できるようにした。
|
182 |
|
183 |
・バージョン 2.6.10
|
184 |
+
管理画面レイアウト崩れ修正
|
185 |
|
186 |
・バージョン2.6.9
|
187 |
+
2015/7/25
|
188 |
+
すぱむちゃんぷるーの代替スパムフィルタが判定の不具合となる危険性がありましたので一度機能削除しました。
|
189 |
+
テキストでリストを記述されている場合はそのまま稼働します。
|
190 |
+
ダミー項目機能において一部テーマで隠しフィールドが表示されてしまう不具合報告がありましたので修正しました。
|
191 |
|
192 |
・バージョン2.6.8
|
193 |
+
2015/5/12
|
194 |
+
スパム排除が目的なのにスパムが溜まる矛盾を解決すべく「スパムデータベースへの保存」を デフォルト OFF にしました。
|
195 |
|
196 |
+
スパムデータベースの最小保存期間を 3日から 1日に変更しました。
|
197 |
+
スパムデータベースからすべてのデータを削除出来るようになりました。
|
198 |
|
199 |
+
アンインストール時にスパムデータテーブルの削除を行うようにしました。
|
200 |
+
またアンインストール時に一部optionsに格納されるパラメータが削除されていなかった不具合を修正しました。
|
201 |
|
202 |
+
WordPress非推奨の部分を一掃しデバッグモードにてエラー(Warning)が表示されていた部分を修正しました。
|
203 |
|
204 |
・バージョン2.6.7
|
205 |
+
2015/4/3
|
206 |
+
コメント欄の無いページではスクリプトの読込みを行わないように制御を追加
|
207 |
|
208 |
・バージョン2.6.5
|
209 |
+
2014/12/22
|
210 |
+
スパムフィルタを自身で設定できるように変更しました。
|
211 |
+
選択肢「bsb.spamlookup.net, bsb.empty.us, list.dsbl.org, all.rbl.jp」
|
212 |
+
及び自由記入欄にてカンマ区切りでサービスのURLを入力できます。
|
213 |
+
※記述に誤りがありますと通信が返ってこないためコメント出来ない可能性がありますのでご注意ください。
|
214 |
|
215 |
+
スパムデータベースの最小保存期間を 7日から 3日に変更しました。
|
216 |
|
217 |
+
プラグイン作成者のwordpress.orgネームが間違えていた(IDにしていた)ためプラグインページにプロフィールリンクが
|
218 |
+
表示されていない大変寂しい結果になっておりました。今バージョンより修正いたします。
|
219 |
|
220 |
・バージョン2.6.4
|
221 |
+
2014/06/23
|
222 |
+
タイトルの文字列をそのまま流用し「日本語」を使うことでフィルタを回避しようとする方法を排除するため
|
223 |
+
タイトル文字列を排除してカウントする機能を追加。(デフォルトで効くようになっています。)
|
224 |
+
「日本語文字列含有数」については、この「タイトル」に使用されている文字列を除いた数をカウントするようになります。
|
225 |
|
226 |
+
例)タイトルに使用された文字は「えーびーしー」という文字列の場合、「え」「び」「し」「ー」が何度出現してもカウントされません。
|
227 |
+
「びしえー」というように文字列を入れ替えても「えー びー しー」とスペースを入れても関係なくカウントされなくなります。
|
228 |
|
229 |
+
JSファイルの $ を jQuery に変更。
|
230 |
|
231 |
・バージョン2.6.3
|
232 |
+
2014/06/06
|
233 |
+
スパムデータベースの表示速度を向上するため
|
234 |
+
スパムコメントの表示を個別画面へ移動(エラーをクリック)
|
235 |
|
236 |
+
スパムの区別が「すぱむちゃんぷるー」でも「指定IP」でも同一「ブロックIPアドレス」であったが
|
237 |
+
「すぱむちゃんぷるー」を分けて表示するようにした。これにより拒否リストから外せる場合が増えるはずです。
|
238 |
|
239 |
+
管理画面の見栄えを変更しました。
|
240 |
|
241 |
・バージョン2.6.2
|
242 |
+
スパム対策設定の初期値を長年の研究の末の「最適」であろう設定値にしました。
|
243 |
+
デフォルト値として項目の下に記載しています。長年ご利用の方は、参考に調整してください。
|
244 |
+
IE8にてJavaScriptエラーとなっていた箇所があり、「tsa_param.js」を修正いたしました。大変ご迷惑をお掛けいたしました。
|
245 |
|
246 |
・バージョン2.6.1
|
247 |
+
スパムデータベースの表示に時間がかかるため「設定」部分と「スパムデータ」表示画面の2メニュー構成に変更しました。
|
248 |
+
すぱむチャンプルーによる捕捉の場合にエラータイプが正しく表示されていない不具合を修正しました。
|
249 |
+
スパム投稿内容によって画面が崩れる不具合を修正しました。
|
250 |
|
251 |
・バージョン2.6
|
252 |
+
コメント欄に隠しフィールドを生成しその項目に入力があればスパム判定する機能を追加。
|
253 |
+
スパムデータベースに[error_type]を追加。なにが原因でスパム判定されたかとスパム投稿の内容をスパムデータベースで保存(255バイトのみ)
|
254 |
+
スパム一覧に少し表示するようにしました。
|
255 |
+
※データベースを直接参照すれば最新以外のスパム内容もわかります。(wp_)tsa_spamテーブルです。authorとcommentのみ格納しています。
|
256 |
|
257 |
+
個人的にThrows SPAM Awayの設定内容をどこかに保存しておきたい場合がありましたので、そのためのメモ欄を追加しました。
|
258 |
+
これは便利機能なだけで本体機能自体とはなんら関係ありませんのでご自由にお使い下さい。
|
259 |
|
260 |
・バージョン2.5.2.1
|
261 |
+
管理画面の微妙な調整を行いました。
|
262 |
|
263 |
・バージョン2.5.2
|
264 |
+
バージョン2.5.1で許可リスト等機能ブロックが無くなってしまったミステイクがあったため精査し機能を戻しました。
|
265 |
+
大変失礼いたしました。設定されていたデータはそのまま残っていると思いますが、保証はいたしかねますのでご確認のほどよろしくお願いいたします。
|
266 |
|
267 |
・バージョン2.5.1
|
268 |
+
「日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)」の文言表示する際の表示位置をフォーム内部の「送信」ボタン上かフォームの下に設置出来るように変更。
|
269 |
+
この文言は前のバージョンまでは
|
270 |
+
「 <div id="throwsSpamAway">日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)</div>」
|
271 |
+
と表示されるようにしておりましたが、この「div」タグを「p」タグに変更。
|
272 |
+
また、「コメント欄の下に表示される注意文言」を空白にした場合はタグ自体が挿入されないようにしました。
|
273 |
+
どうしても崩れてしまう方は注意文言を空白にして更新するようお願いいたします。
|
274 |
+
※WordPress3.6以降のWordPressテーマ「Twenty Thirteen」で表示が崩れる事象が起きているための対策です。ご迷惑をお掛けしました。大変申し訳ありません。
|
275 |
|
276 |
・バージョン2.5
|
277 |
+
「スパムちゃんぷるー(ベータ)」http://spam-champuru.livedoor.com/dnsbl/ を利用出来ます!スパムちゃんぷるーでスパム判定する機能です。
|
278 |
+
「IPアドレス 許可リスト」を導入しました。許可リストに登録されたIPアドレスからの投稿はノーチェックで投稿完了されます。
|
279 |
+
※許可リストが一番強力にしてありますので、このIPアドレスがAkismetで捉えられていてもスパムちゃんぷるーでスパム扱いになったとしても優先で通過させます。
|
280 |
+
スパムデータベースの表示期間を指定するようにしました。また表示期間を過ぎたデータを削除することも出来るようにしました。
|
281 |
+
テストでスパム投稿したIPアドレスなどをスパムデータベースから削除する機能を付けました。
|
282 |
+
スパム投稿データに「スパムちゃんぷるー」の結果も付加しました。
|
283 |
|
284 |
・バージョン2.4
|
285 |
+
スパム情報収集機能を「スパムコメント情報を保存する」にした場合に限り、「一定時間内スパム認定機能」が作動するように出来ます。
|
286 |
+
この「○」を設定します→《○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定》
|
287 |
例えば、「10分以内に2回スパムとなったら10分間、当該IPからのコメントはスパム扱いする」とした場合は
|
288 |
過去(今から)10分前から今まで2回スパム扱いとなったIPからの投稿は3回目以降スパム扱いとなります。
|
289 |
そのため、10分以内に3回目のスパムを作ってしまったためそこから10分以上経過しないとずっとスパム扱いになってしまいます。
|
294 |
あまり長い時間を指定しますとコメント欄への反映が遅くなりますので気をつけてください。
|
295 |
5~10分程度を推奨します。
|
296 |
|
297 |
+
スパム投稿の一覧を見やすくしました。
|
298 |
+
これまでスパム投稿情報の表示が日付が一覧で縦表示していたため見づらいものとなっておりました。
|
299 |
+
今回、横軸にその情報を追加しました。
|
300 |
+
また、スパム投稿リストの表示も改良し、IPアドレス・スパム投稿数・最終投稿日でソートを掛けられるようにしました。
|
301 |
|
302 |
+
IPアドレス指定を「カンマ区切り」から「改行区切り」へ変更。スパム投稿IPアドレス情報に下記データ追加
|
303 |
○IPアドレス
|
304 |
○ホスト名が特定出来た場合はホスト名
|
305 |
○このIPアドレスからの最終投稿日時
|
306 |
○このIPアドレスからスパム投稿を受けた記事(リンク)
|
307 |
|
308 |
+
このバージョンよりファイル構成が変更になり、今まで「throws_spam_away.php」にプログラムのすべてが存在しましたが、プロセスの部分を
|
309 |
+
「throws_spam_away.php」に残し、クラスの部分を「throws_spam_away.class.php」に移しました。
|
310 |
+
これにより、throws_spam_away.class.php」を外部から読込みメソッドを使用することを目論んでいます。
|
311 |
+
※まだ実験段階です。
|
312 |
|
313 |
・バージョン2.3.1, 2.3.2 不具合修正 仕様は2.3のままです。
|
314 |
・バージョン2.3スパムコメント数を保持出来るようにしました。設定を変更しないと機能しませんのでご注意ください。
|
315 |
+
保持データは下記の通り
|
316 |
○投稿日時
|
317 |
○投稿された記事ID
|
318 |
○投稿元IPアドレス
|
324 |
(トラックバックでも同様に名前もNGワード対象に追加しています。)
|
325 |
|
326 |
・バージョン2.2 'http'を許容数(初期設定 3)を超えて包含する場合にエラーとする機能を付けました。
|
327 |
+
導入後すぐに機能しはじめます。制限数の増減も行えます。
|
328 |
+
<strong>(注意!)不要な方は設定の変更でこの機能をOFFにしてください</strong>
|
329 |
+
※インストールしただけで最大限活用できるように初期設定値を設定いたしました。日本語スパム投稿(おもにリンクを多数掲載するもの)に対抗するための追加機能です。ご理解のほど、よろしくお願いします。
|
330 |
|
331 |
・バージョン2.1.1 一部レンタルサーバー等の設定によってコメント投稿後エラーまたは白画面になってしまう不具合を修正
|
332 |
+
※確認したレンタルサーバー(さくらレンタルサーバー)※コメント欄に独自修正を行うような特殊な条件により発生する模様
|
333 |
|
334 |
・バージョン2.1でIPアドレスの範囲指定を可能にしました。
|
335 |
|
336 |
・バージョン2.0で、WordPressのcommentsテーブルを検索し「spam」扱いとなったコメントのIPを収集しそのIPからの投稿を無視出来る機能と任意のIPアドレスからの投稿を無視出来る機能をつけました。
|
337 |
|
338 |
・バージョン1.7で、元の画面に戻ってくる際の挙動を修正しました。
|
339 |
+
エラー画面表示の時間を「0」に設定していた場合はエラー画面を一切介さずリダイレクトするようにしました。
|
340 |
+
0以上の場合の挙動は以前と変わらずJavaScriptで時間になったら戻ってきます。
|
341 |
|
342 |
・バージョン1.6にてNGキーワードとは逆にコレが入っていないとダメという「必須キーワード」の設定が出来るようにしました。
|
343 |
+
日本語を入れれば良いため通ってしまいやすい「中国語」への配慮です。「が」や「の」や「は」など、日本語文章が成り立つ上で必ず使用するであろう「ひらがな」を入れることで効力が発揮されると思います。
|
344 |
|
345 |
・バージョン1.5では「トラックバック」に対しても同様の規制を入れられるようになりました。
|
346 |
+
トラックバック記事の内容に日本語を含まないものを無視します。
|
347 |
+
加えて、トラックバック記事内にこちらのサイトのURLが含まれない場合、日本語が含まれていても無視するかどうかの設定も出来るようにしました。
|
348 |
|
349 |
|
350 |
+
制作:佐藤 毅(さとう たけし) <a href="https://gti.co.jp/" target="_blank">福岡のシステム開発 ホームページ制作</a> 株式会社ジーティーアイ代表
|
351 |
|
352 |
== Installation ==
|
353 |
|
367 |
2. Activate the plugin through the 'Plugins' menu in WordPress
|
368 |
|
369 |
== Frequently Asked Questions ==
|
370 |
+
質問やご要望はSupportまたは弊社お問い合わせ(https://gti.co.jp/)へお願いします!
|
371 |
|
372 |
== Screenshots ==
|
373 |
|
374 |
== Changelog ==
|
375 |
+
= 3.3.2 =
|
376 |
+
変数の初期化漏れを修正。
|
377 |
+
|
378 |
+
= 3.3.1 =
|
379 |
+
スパムコメント削除フォーム CSRF対策
|
380 |
+
「コメントをすべて削除」機能削除
|
381 |
+
|
382 |
+
= 3.3 =
|
383 |
+
スパム防止メッセージを 送信ボタン上にも置けるように選択肢追加
|
384 |
+
|
385 |
+
= 3.2.6 =
|
386 |
+
WordPress 5.9 動作確認
|
387 |
+
最低限バージョンを 3.1 から 5.2 に変更
|
388 |
+
コードの見直し
|
389 |
+
|
390 |
+
= 3.2.5.1 =
|
391 |
+
WordPress5.8.2 動作確認
|
392 |
+
PHP8.0.13での動作確認
|
393 |
+
|
394 |
+
= 3.2.5 =
|
395 |
+
スパムデータ削除時のDELETE発行処理を修正
|
396 |
+
テーブル存在確認方法を変更
|
397 |
+
|
398 |
+
= 3.2.4 =
|
399 |
+
スパムデータ削除時のDELETE発行処理を改修
|
400 |
+
|
401 |
+
= 3.2.2, 3.2.3 =
|
402 |
+
テンプレートの作りによって JavaScript エラーがあったため修正
|
403 |
+
|
404 |
+
= 3.2.1 =
|
405 |
+
テーマによって JavaScript エラーがあったため修正
|
406 |
+
|
407 |
+
= 3.2 =
|
408 |
+
jQuery で処理していた部分を JavaScript に書き換え。
|
409 |
+
pre_comment_on_post から preprocess_comment にて処理を行うように変更
|
410 |
+
IP拒否リスト、許可リスト の不具合を修正
|
411 |
+
|
412 |
+
= 3.1.4 =
|
413 |
+
表記の変更を行いました。
|
414 |
+
|
415 |
+
= 3.1.3 =
|
416 |
+
WordPress 5.4 動作確認
|
417 |
+
PHP7.4 対応確認
|
418 |
+
|
419 |
+
= 3.1.2 =
|
420 |
+
throws_spam_away.class.php を単体利用した際に出力される Warningを修正
|
421 |
+
|
422 |
+
= 3.1.1 =
|
423 |
+
PHP7.3までの対応
|
424 |
+
|
425 |
+
= 3.0.2 =
|
426 |
+
comments_open() を $post->comment_status の判定に置き換え
|
427 |
+
|
428 |
+
= 3.0 =
|
429 |
+
・バージョン 3.0
|
430 |
+
"spam" が付加されているコメントの一括削除機能追加
|
431 |
+
|
432 |
+
= 2.9 =
|
433 |
+
・バージョン 2.9
|
434 |
+
国際化対応
|
435 |
+
コメントバリデーション部分にapply_filters 2つ追加
|
436 |
+
|
437 |
+
$result_valid = apply_filters( 'tsa_validate_comment',
|
438 |
+
$this->validate_comment(
|
439 |
+
$author,
|
440 |
+
$comment,
|
441 |
+
array(
|
442 |
+
'post_id' => $post_id,
|
443 |
+
'tsa_on_flg' => $tsa_on_flg
|
444 |
+
)
|
445 |
+
), $author, $comment, $post_id, $tsa_on_flg );
|
446 |
+
|
447 |
+
return apply_filters( 'tsa_validate_comment_result', $result_valid );
|
448 |
+
|
449 |
+
バリデーション方法追加または変更可能にし
|
450 |
+
バリデーション結果自体も変更可能にしました。
|
451 |
+
|
452 |
= 2.8.2 =
|
453 |
ロードバランサ経由のクライアントIP取得ができるように HTTP_X_FORWARDED_FOR を取得するようにしました。
|
454 |
JavaScriptの不具合修正
|
455 |
|
456 |
= 2.8.1 =
|
457 |
+
許可リスト判定に不具合がありロジックを修正しました。
|
458 |
|
459 |
= 2.8 =
|
460 |
+
許可リスト登録IPアドレスだけを許可するフラグを追加
|
461 |
このフラグが「する」担っている場合は・・・
|
462 |
+
許可リストに登録したIPアドレスのみ許可するフラグをチェックすると許可リスト登録IP以外は無視されるようになります。
|
463 |
+
このフラグが付いている場合は本来ノーチェックだった許可リストへIPアドレスチェック以外が行われるようになります。
|
464 |
|
465 |
= 2.7 =
|
466 |
スパム判定メソッドの整理を実施。
|
498 |
選択肢「bsb.spamlookup.net, bsb.empty.us, list.dsbl.org, all.rbl.jp」
|
499 |
及び自由記入欄にてカンマ区切りでサービスのURLを入力できます。
|
500 |
※記述に誤りがありますと通信が返ってこないためコメント出来ない可能性がありますのでご注意ください。
|
501 |
+
※スパムフィルタが変更できることによって現在まで「スパム拒否リスト」でエラーとなっていた投稿に対し
|
502 |
その時点では有効だったフィルタが閲覧時に入れ替えがあると「スパムフィルター:未検出」となる場合があります。
|
503 |
ご了承ください。
|
504 |
|
524 |
スパムコメントの表示を個別画面へ移動(エラーをクリック)
|
525 |
|
526 |
スパムの区別が「すぱむちゃんぷるー」でも「指定IP」でも同一「ブロックIPアドレス」であったが
|
527 |
+
「すぱむちゃんぷるー」を分けて表示するようにした。これにより拒否リストから外せる場合が増えるはずです。
|
528 |
|
529 |
管理画面の見栄えを変更しました。
|
530 |
|
543 |
= 2.5 =
|
544 |
・「スパムちゃんぷるー(ベータ)」http://spam-champuru.livedoor.com/dnsbl/ を利用出来ます。
|
545 |
スパムちゃんぷるーでスパム判定する機能です。
|
546 |
+
・「IPアドレス 許可リスト」を導入しました。
|
547 |
+
許可リストに登録されたIPアドレスからの投稿はノーチェックで投稿完了されます。
|
548 |
+
※許可リストが一番強力にしてありますので、このIPアドレスがAkismetで捉えられていてもスパムちゃんぷるーでスパム扱いになったとしても優先で通過させます。
|
549 |
・スパムデータベースの表示期間を指定するようにしました。また表示期間を過ぎたデータを削除することも出来るようにしました。
|
550 |
・テストでスパム投稿したIPアドレスなどをスパムデータベースから削除する機能を付けました。
|
551 |
・スパム投稿データに「スパムちゃんぷるー」の結果も付加しました。
|
throws_spam_away.class.php
CHANGED
@@ -1,28 +1,35 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
*
|
4 |
* <p>ThrowsSpamAway</p> Class
|
5 |
* WordPress's Plugin
|
6 |
-
* @author Takeshi Satoh@GTI Inc.
|
7 |
-
* @version
|
8 |
*/
|
9 |
class ThrowsSpamAway {
|
10 |
|
11 |
-
|
12 |
-
var $table_name = NULL;
|
13 |
|
14 |
-
|
|
|
|
|
|
|
15 |
|
|
|
|
|
|
|
16 |
public function __construct() {
|
17 |
-
global $default_spam_data_save;
|
18 |
global $tsa_spam_tbl_name;
|
19 |
global $wpdb;
|
|
|
|
|
20 |
// Activate
|
21 |
register_activation_hook( __FILE__, array( $this, 'activate' ) );
|
22 |
|
23 |
// エラー記号
|
24 |
-
if ( !defined('MUST_WORD') ) {
|
25 |
-
define( 'MUST_WORD'
|
26 |
define( 'NG_WORD', 'ng_word' );
|
27 |
define( 'BLOCK_IP', 'block_ip' );
|
28 |
define( 'SPAM_BLACKLIST', 'spam_champuru' );
|
@@ -31,9 +38,9 @@ class ThrowsSpamAway {
|
|
31 |
define( 'DUMMY_FIELD', 'dummy_param_field' );
|
32 |
|
33 |
define( 'SPAM_TRACKBACK', 'spam_trackback' );
|
34 |
-
define( 'NOT_JAPANESE', 'not_japanese');
|
35 |
|
36 |
-
define( 'NOT_IN_WHITELIST_IP', 'not_in_whitelist_ip');
|
37 |
}
|
38 |
|
39 |
// 接頭辞(wp_)を付けてテーブル名を設定
|
@@ -42,17 +49,21 @@ class ThrowsSpamAway {
|
|
42 |
// 管理画面メニュー追加
|
43 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
44 |
|
45 |
-
global $
|
46 |
-
global $
|
47 |
|
48 |
// 保存期間終了したデータ削除
|
49 |
-
$skdc = intval( get_option( 'tsa_spam_keep_day_count', $
|
50 |
-
if ( $skdc < $
|
|
|
|
|
51 |
if ( get_option( 'tsa_spam_data_delete_flg', '' ) == '1' ) {
|
52 |
// 期間 get_option( 'tsa_spam_keep_day_count' ) 日
|
53 |
-
$wpdb->
|
54 |
-
|
55 |
-
|
|
|
|
|
56 |
}
|
57 |
}
|
58 |
|
@@ -60,49 +71,49 @@ class ThrowsSpamAway {
|
|
60 |
* プラグインインストール後 有効化時処理
|
61 |
*/
|
62 |
function activate() {
|
63 |
-
global $
|
64 |
-
global $
|
65 |
-
global $
|
66 |
-
global $
|
67 |
-
global $
|
68 |
//global $default_spam_champuru_hosts,
|
69 |
-
global $
|
70 |
-
global $
|
71 |
-
global $
|
72 |
-
global $
|
73 |
-
global $
|
74 |
-
global $
|
75 |
|
76 |
// 初期設定値
|
77 |
-
update_option( 'tsa_dummy_param_field_flg', $
|
78 |
-
update_option( 'tsa_on_flg', $
|
79 |
-
update_option( 'tsa_without_title_str', $
|
80 |
-
update_option( 'tsa_japanese_string_min_count', $
|
81 |
-
update_option( 'tsa_back_second', $
|
82 |
-
update_option( 'tsa_caution_msg', $
|
83 |
-
update_option( 'tsa_caution_msg_point', $
|
84 |
-
update_option( 'tsa_error_msg', $
|
85 |
-
update_option( 'tsa_url_count_check_flg', $
|
86 |
-
update_option( 'tsa_ok_url_count', $
|
87 |
-
update_option( 'tsa_url_count_over_error_msg', $
|
88 |
-
update_option( 'tsa_ng_key_error_message', $
|
89 |
-
update_option( 'tsa_must_key_error_message', $
|
90 |
-
update_option( 'tsa_tb_on_flg', $
|
91 |
-
update_option( 'tsa_tb_url_flg', $
|
92 |
-
delete_option( 'tsa_spam_champuru_hosts');
|
93 |
-
update_option( 'tsa_spam_champuru_by_text', $
|
94 |
-
update_option( 'tsa_spam_champuru_flg', $
|
95 |
-
update_option( 'tsa_ip_block_from_spam_chk_flg', $
|
96 |
-
update_option( 'tsa_block_ip_address_error_message', $
|
97 |
-
update_option( 'tsa_spam_data_save', $
|
98 |
-
update_option( 'tsa_spam_data_delete_flg', $
|
99 |
-
update_option( 'tsa_spam_keep_day_count', $
|
100 |
-
update_option( 'tsa_spam_limit_flg', $
|
101 |
-
update_option( 'tsa_spam_limit_minutes', $
|
102 |
-
update_option( 'tsa_spam_limit_count', $
|
103 |
-
update_option( 'tsa_spam_limit_over_interval', $
|
104 |
-
update_option( 'tsa_spam_limit_over_interval_error_message', $
|
105 |
-
update_option( 'tsa_only_whitelist_ip_flg', $
|
106 |
|
107 |
// スパムデータベース作成
|
108 |
$this->tsa_create_tbl();
|
@@ -126,10 +137,10 @@ class ThrowsSpamAway {
|
|
126 |
|
127 |
$table_name = $wpdb->prefix . $tsa_spam_tbl_name;
|
128 |
// テーブル作成要フラグ
|
129 |
-
$flg =
|
130 |
-
if ( $wpdb->get_var( "
|
131 |
// テーブルが存在しないため作成する
|
132 |
-
$flg =
|
133 |
}
|
134 |
|
135 |
//DBのバージョン
|
@@ -137,7 +148,7 @@ class ThrowsSpamAway {
|
|
137 |
//現在のDBバージョン取得
|
138 |
$installed_ver = get_option( 'tsa_meta_version', 0 );
|
139 |
// DBバージョンが低い または テーブルが存在しない場合は作成
|
140 |
-
if ( $flg ==
|
141 |
// dbDeltaのおかげ様でCREATE文のみ
|
142 |
$sql = "CREATE TABLE $table_name (
|
143 |
meta_id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
@@ -159,168 +170,192 @@ class ThrowsSpamAway {
|
|
159 |
|
160 |
/**
|
161 |
* スパム投稿の記録
|
|
|
162 |
* @param string $post_id
|
163 |
* @param string $ip_address
|
164 |
*/
|
165 |
function save_post_meta( $post_id, $ip_address, $spam_contents ) {
|
166 |
-
global $
|
167 |
|
168 |
-
if ( get_option( 'tsa_spam_data_save', $
|
|
|
|
|
169 |
|
170 |
global $wpdb;
|
171 |
|
172 |
$error_type = $spam_contents['error_type'];
|
173 |
-
$author
|
174 |
-
$comment
|
175 |
|
176 |
//保存するために配列にする
|
177 |
$set_arr = array(
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
);
|
184 |
|
185 |
//レコード新規追加
|
186 |
$wpdb->insert( $this->table_name, $set_arr );
|
187 |
-
|
188 |
return;
|
189 |
}
|
190 |
|
191 |
// JS読み込み部
|
192 |
function tsa_scripts_init() {
|
|
|
193 |
global $tsa_version;
|
194 |
|
195 |
-
$comments_open =
|
196 |
|
197 |
// anti-spam の方法を参考に作成しました
|
198 |
if (
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
) {
|
206 |
wp_enqueue_script( 'throws-spam-away-script', plugins_url( '/js/tsa_params.min.js', __FILE__ ), array( 'jquery' ), $tsa_version );
|
207 |
}
|
208 |
}
|
209 |
|
210 |
-
function
|
211 |
-
global $
|
212 |
-
|
213 |
-
|
|
|
214 |
// 注意文言が設定されている場合のみ表示する
|
215 |
if ( strlen( trim( $caution_msg ) ) > 0 ) {
|
216 |
-
|
217 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
}
|
219 |
|
220 |
function comment_form_dummy_param_field() {
|
221 |
-
global $
|
222 |
// 空パラメータフィールド作成
|
223 |
-
$dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $
|
224 |
if ( $dummy_param_field_flg == '1' ) {
|
225 |
echo '<p class="tsa_param_field_tsa_" style="display:none;">email confirm<span class="required">*</span><input type="text" name="tsa_email_param_field___" id="tsa_email_param_field___" size="30" value="" />
|
226 |
</p>';
|
227 |
-
echo '<p class="tsa_param_field_tsa_2" style="display:none;">post date<span class="required">*</span><input type="text" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" size="30" value="'.date( 'Y-m-d H:i:s' ).'" />
|
228 |
</p>';
|
229 |
}
|
230 |
}
|
231 |
|
232 |
-
function comment_post( $
|
233 |
global $newThrowsSpamAway;
|
234 |
global $user_ID;
|
235 |
-
global $
|
236 |
-
global $
|
237 |
-
global $
|
238 |
-
global $
|
239 |
-
global $
|
240 |
-
global $
|
241 |
-
global $
|
242 |
-
global $
|
|
|
243 |
|
244 |
// ログインしている場合は通過させます。
|
245 |
if ( $user_ID ) {
|
246 |
-
return $
|
247 |
}
|
248 |
|
249 |
// コメント(comment)及び名前(author)の中も検査
|
250 |
-
$
|
251 |
-
$
|
|
|
252 |
|
253 |
// チェック対象IPアドレス
|
254 |
$remote_ip = $_SERVER['REMOTE_ADDR'];
|
255 |
-
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
256 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
257 |
-
$ip_array
|
258 |
$remote_ip = $ip_array[0];
|
259 |
}
|
260 |
|
261 |
-
//
|
262 |
// IP制御 任意のIPアドレスをあればブロックする
|
263 |
-
$white_ip_addresses
|
264 |
-
$only_whitelist_ip_flg = get_option( 'tsa_only_whitelist_ip_flg', $
|
265 |
-
$white_ip
|
266 |
-
// IP制御
|
267 |
-
if ( ( $white_ip_addresses
|
268 |
-
|
269 |
-
//
|
270 |
$newThrowsSpamAway->error_type = NOT_IN_WHITELIST_IP;
|
271 |
} else {
|
272 |
// IP系の検査
|
273 |
-
if ( ! $newThrowsSpamAway->ip_check( $remote_ip ) && $white_ip ==
|
274 |
// アウト!
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
return $id;
|
279 |
}
|
280 |
}
|
281 |
$error_type = $newThrowsSpamAway->error_type;
|
282 |
-
$error_msg = '';
|
283 |
switch ( $error_type ) {
|
284 |
case MUST_WORD :
|
285 |
-
$error_msg = get_option( 'tsa_must_key_error_message', $
|
286 |
break;
|
287 |
case NG_WORD :
|
288 |
-
$error_msg = get_option( 'tsa_ng_key_error_message', $
|
289 |
break;
|
290 |
case BLOCK_IP :
|
291 |
case NOT_IN_WHITELIST_IP :
|
292 |
case SPAM_BLACKLIST :
|
293 |
-
$error_msg = get_option( 'tsa_block_ip_address_error_message', $
|
294 |
break;
|
295 |
case URL_COUNT_OVER :
|
296 |
-
$error_msg = get_option( 'tsa_url_count_over_error_message', $
|
297 |
break;
|
298 |
case SPAM_LIMIT_OVER :
|
299 |
-
$error_msg = get_option( 'tsa_spam_limit_over_interval_error_message', $
|
300 |
break;
|
301 |
-
case DUMMY_FIELD :
|
302 |
default :
|
303 |
-
$error_msg = get_option( 'tsa_error_message', $default_error_msg );
|
304 |
}
|
305 |
// 記録する場合はDB記録
|
306 |
-
if ( get_option( 'tsa_spam_data_save', $
|
307 |
-
$spam_contents
|
308 |
$spam_contents['error_type'] = $error_type;
|
309 |
-
$spam_contents['author']
|
310 |
-
$spam_contents['comment']
|
311 |
|
312 |
$this->save_post_meta( $id, $remote_ip, $spam_contents );
|
313 |
}
|
314 |
// 元画面へ戻るタイム計算
|
315 |
-
$back_time = ( (int) get_option( 'tsa_back_second', $
|
316 |
// タイム値が0なら元画面へそのままリダイレクト
|
317 |
if ( $back_time == 0 ) {
|
318 |
-
header( 'Location:'
|
319 |
die;
|
320 |
} else {
|
321 |
-
wp_die(
|
322 |
-
|
323 |
-
window.setTimeout( closing, '.$back_time.');</script>', 'throws-spam-away' ) );
|
324 |
}
|
325 |
}
|
326 |
|
@@ -329,69 +364,72 @@ class ThrowsSpamAway {
|
|
329 |
$author,
|
330 |
$comment,
|
331 |
$validate_array
|
332 |
-
|
333 |
-
global $
|
334 |
-
global $
|
335 |
-
global $
|
336 |
-
global $
|
|
|
|
|
337 |
//
|
338 |
-
$_japanese_string_min_count = get_option( 'tsa_japanese_string_min_count', $
|
339 |
// NGキーワード文字列群
|
340 |
$_ng_keywords = get_option( 'tsa_ng_keywords', '' );
|
341 |
-
// キーワード文字列群
|
342 |
$_must_keywords = get_option( 'tsa_must_keywords', '' );
|
343 |
// URL数チェック
|
344 |
-
$_url_count_check = get_option( 'tsa_url_count_on_flg', $
|
345 |
// 許容URL数設定値
|
346 |
-
$_ok_url_count = intval( get_option( 'tsa_ok_url_count', $
|
347 |
-
|
348 |
-
$
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
|
|
|
|
356 |
), $validate_array );
|
357 |
|
358 |
-
|
359 |
-
$
|
360 |
-
|
361 |
-
$
|
362 |
-
$tsa_must_keywords = @$validate_array['tsa_must_keywords'];
|
363 |
-
$tsa_url_count_check = @$validate_array['tsa_url_count_check'];
|
364 |
-
$tsa_ok_url_count = @$validate_array['tsa_ok_url_count'];
|
365 |
-
|
366 |
-
// シングルバイトだけならエラー
|
367 |
-
if ( $tsa_on_flg == 1 && $this->is_only_in_singlebyte( $comment ) ) {
|
368 |
-
$this->error_type = NOT_JAPANESE;
|
369 |
-
return FALSE;
|
370 |
-
}
|
371 |
-
|
372 |
// 日本語文字列必須含有数
|
|
|
373 |
$tsa_japanese_string_min_count = intval( $tsa_japanese_string_min_count );
|
374 |
// NGキーワード文字列群
|
375 |
-
|
|
|
|
|
376 |
// URL数チェック
|
377 |
-
$tsa_url_count_check =
|
378 |
// 許容URL数設定値
|
|
|
379 |
$tsa_ok_url_count = intval( $tsa_ok_url_count ); // デフォルト値3(3つまで許容)
|
380 |
|
381 |
-
//
|
382 |
-
$
|
|
|
|
|
|
|
|
|
|
|
383 |
// マルチバイト文字が含まれている場合は日本語が含まれていればOK
|
384 |
if ( $tsa_on_flg == 1 ) {
|
385 |
$count_flg = 0;
|
386 |
-
mb_regex_encoding('UTF-8');
|
387 |
$com_split = $this->mb_str_split( $comment );
|
388 |
|
389 |
-
$tit_split =
|
390 |
|
391 |
// タイトル文字列が含まれている場合はそれを除く機能のためタイトル文字列リスト化
|
392 |
-
if ( $tsa_without_title_str == 1 && $post_id !=
|
393 |
global $wpdb;
|
394 |
-
$target_post = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE ID =
|
395 |
|
396 |
$title = $target_post[0]->post_title;
|
397 |
|
@@ -409,13 +447,13 @@ class ThrowsSpamAway {
|
|
409 |
|
410 |
} else {
|
411 |
|
412 |
-
if ( preg_match('/[一-龠]+/u', $it ) ){
|
413 |
$count_flg += 1;
|
414 |
}
|
415 |
-
if ( preg_match('/[ァ-ヶー]+/u', $it ) ){
|
416 |
$count_flg += 1;
|
417 |
}
|
418 |
-
if ( preg_match('/[ぁ-ん]+/u', $it ) ){
|
419 |
$count_flg += 1;
|
420 |
}
|
421 |
|
@@ -423,44 +461,48 @@ class ThrowsSpamAway {
|
|
423 |
}
|
424 |
|
425 |
$flg = ( $tsa_japanese_string_min_count < $count_flg );
|
426 |
-
if ($flg ==
|
427 |
$this->error_type = NOT_JAPANESE;
|
428 |
-
|
|
|
429 |
}
|
430 |
}
|
431 |
// 日本語文字列チェック抜けたらキーワードチェックを行う
|
432 |
if ( $tsa_ng_keywords != '' ) {
|
433 |
$keyword_list = explode( ',', $tsa_ng_keywords );
|
434 |
foreach ( $keyword_list as $key ) {
|
435 |
-
if ( preg_match('/'.trim( $key ).'/u', $author
|
436 |
$this->error_type = NG_WORD;
|
437 |
-
|
|
|
438 |
}
|
439 |
}
|
440 |
}
|
441 |
-
//
|
442 |
if ( $tsa_must_keywords != '' ) {
|
443 |
$keyword_list = explode( ',', $tsa_must_keywords );
|
444 |
foreach ( $keyword_list as $key ) {
|
445 |
-
if ( preg_match( '/'.trim( $key ).'/u', $author
|
446 |
// OK
|
447 |
} else {
|
448 |
// 必須ワードがなかったためエラー
|
449 |
$this->error_type = MUST_WORD;
|
450 |
-
|
|
|
451 |
}
|
452 |
}
|
453 |
}
|
454 |
// 含有URL数チェック
|
455 |
if ( $tsa_url_count_check != '2' ) {
|
456 |
-
if ( substr_count( strtolower( $author
|
457 |
// URL文字列(httpの数)が多いエラー
|
458 |
$this->error_type = URL_COUNT_OVER;
|
459 |
-
|
|
|
460 |
}
|
461 |
}
|
462 |
|
463 |
-
return
|
464 |
}
|
465 |
|
466 |
|
@@ -470,51 +512,53 @@ class ThrowsSpamAway {
|
|
470 |
}
|
471 |
|
472 |
/**
|
473 |
-
* IP
|
|
|
474 |
* @param string $target_ip
|
475 |
*/
|
476 |
function white_ip_check( $target_ip ) {
|
477 |
-
global $
|
478 |
-
$white_ip_addresses
|
479 |
-
$only_whitelist_ip_flg = get_option( 'tsa_only_whitelist_ip_flg', $
|
480 |
|
481 |
-
if (
|
482 |
// 改行区切りの場合はカンマ区切りに文字列置換後リスト化
|
483 |
$white_ip_addresses = str_replace( "\n", ',', $white_ip_addresses );
|
484 |
-
$ip_list
|
485 |
foreach ( $ip_list as $_ip ) {
|
486 |
// 指定IPが範囲指定の場合 例:192.168.1.0/24
|
487 |
-
if ( strpos( $_ip, '/' ) !=
|
488 |
if ( $this->in_cidr( $target_ip, $_ip ) ) {
|
489 |
// 通過対象
|
490 |
if ( $only_whitelist_ip_flg === '1' ) {
|
491 |
-
return
|
492 |
}
|
493 |
}
|
494 |
} elseif ( trim( $_ip ) == trim( $target_ip ) ) {
|
495 |
// 通過対象
|
496 |
if ( $only_whitelist_ip_flg === '1' ) {
|
497 |
-
return
|
498 |
}
|
499 |
}
|
500 |
}
|
501 |
}
|
502 |
-
|
|
|
503 |
}
|
504 |
|
505 |
/**
|
506 |
* IPアドレスのチェックメソッド
|
|
|
507 |
* @param string $target_ip
|
508 |
*/
|
509 |
function ip_check( $target_ip ) {
|
510 |
global $wpdb; // WordPress DBアクセス
|
511 |
-
global $
|
512 |
-
global $newThrowsSpamAway;
|
513 |
|
514 |
// スパムフィルター利用あれば始めに通す
|
515 |
// 1.スパムちゃんぷるー
|
516 |
-
$spam_filter_spam_champuru_flg = get_option( 'tsa_spam_champuru_flg', $
|
517 |
-
if (
|
518 |
return $this->reject_spam_ip( $target_ip );
|
519 |
}
|
520 |
// 2.以降あれば追加
|
@@ -524,53 +568,57 @@ class ThrowsSpamAway {
|
|
524 |
|
525 |
if ( $ip_block_from_spam_chk_flg === '1' ) {
|
526 |
// wp_commentsの comment_approved カラムが「spam」のIP_ADDRESSからの投稿は無視する
|
527 |
-
|
|
|
528 |
foreach ( $results as $item ) {
|
529 |
if ( trim( $item->comment_author_IP ) == trim( $target_ip ) ) {
|
530 |
// ブロックしたいIP
|
531 |
$this->error_type = BLOCK_IP;
|
532 |
-
|
|
|
533 |
}
|
534 |
}
|
535 |
}
|
536 |
// IP制御 任意のIPアドレスをあればブロックする
|
537 |
-
$block_ip_addresses = get_option( 'tsa_block_ip_addresses', '' );
|
538 |
-
if (
|
539 |
// 改行区切りの場合はカンマ区切りに文字列置換後リスト化
|
540 |
$block_ip_addresses = str_replace( "\n", ',', $block_ip_addresses );
|
541 |
-
$ip_list
|
542 |
foreach ( $ip_list as $ip ) {
|
543 |
// 指定IPが範囲指定の場合 例:192.168.1.0/24
|
544 |
-
if ( strpos( $ip, '/' ) !=
|
545 |
if ( $this->in_cidr( $target_ip, $ip ) ) {
|
546 |
// ブロックしたいIP
|
547 |
$this->error_type = BLOCK_IP;
|
548 |
-
|
|
|
549 |
}
|
550 |
} elseif ( trim( $ip ) == trim( $target_ip ) ) {
|
551 |
// ブロックしたいIP
|
552 |
$this->error_type = BLOCK_IP;
|
553 |
-
|
554 |
-
|
555 |
-
// セーフIP
|
556 |
}
|
|
|
557 |
}
|
558 |
}
|
559 |
-
|
|
|
560 |
}
|
561 |
|
562 |
/**
|
563 |
-
*
|
564 |
*/
|
565 |
function reject_spam_ip( $ip ) {
|
566 |
|
567 |
-
//
|
568 |
// global $default_spam_champuru_hosts;
|
569 |
-
//
|
570 |
-
global $
|
571 |
|
572 |
// $spam_blacklist_hosts = get_option( 'tsa_spam_champuru_hosts', $default_spam_champuru_hosts );
|
573 |
-
$spam_blacklist_by_text = get_option( 'tsa_spam_champuru_by_text', $
|
574 |
|
575 |
$spam_blacklist_by_text_lists = explode( ',', $spam_blacklist_by_text );
|
576 |
if ( count( $spam_blacklist_by_text_lists ) > 0 ) {
|
@@ -580,82 +628,83 @@ class ThrowsSpamAway {
|
|
580 |
}
|
581 |
|
582 |
if ( strlen( trim( $spam_blacklist_by_text ) ) == 0 || count( $spam_blacklist_by_text_lists ) == 0 ) {
|
583 |
-
return
|
584 |
}
|
585 |
|
586 |
-
global $default_spam_champuru_by_text;
|
587 |
-
|
588 |
$check_list = $spam_blacklist_by_text_lists;
|
589 |
|
590 |
-
$
|
591 |
-
$
|
592 |
-
|
593 |
-
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
594 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
595 |
-
$ip_array
|
596 |
$remote_ip = $ip_array[0];
|
597 |
}
|
598 |
$check_IP = trim( preg_match( $pattern, $ip ) ? $ip : $remote_ip );
|
599 |
-
$spam
|
600 |
if ( preg_match( $pattern, $check_IP ) ) {
|
601 |
|
602 |
// check
|
603 |
$i = 0;
|
604 |
-
while($i < count($check_list)){
|
605 |
-
$check = $
|
606 |
-
$check = implode( '.',array_reverse( @split( '\.',$check_IP ) ) ) . '.' . $check_list[$i];
|
607 |
|
608 |
$i ++;
|
609 |
|
610 |
-
$result = gethostbyname($check);
|
611 |
|
612 |
-
if ($result != $check) {
|
613 |
-
$spam =
|
614 |
break;
|
615 |
}
|
616 |
}
|
617 |
}
|
618 |
if ( $spam ) {
|
619 |
$this->error_type = SPAM_BLACKLIST;
|
620 |
-
|
|
|
621 |
}
|
622 |
-
|
|
|
623 |
}
|
624 |
|
625 |
/**
|
626 |
* CIDRチェック
|
|
|
627 |
* @param string $ip
|
628 |
* @param string $cidr
|
|
|
629 |
* @return boolean
|
630 |
*/
|
631 |
function in_cidr( $ip, $cidr ) {
|
632 |
list( $network, $mask_bit_len ) = explode( '/', $cidr );
|
633 |
if ( ! is_nan( $mask_bit_len ) && $mask_bit_len <= 32 ) {
|
634 |
-
$host
|
635 |
-
$net
|
636 |
-
$ip_net = ip2long($ip) >> $host << $host;
|
|
|
637 |
return $net === $ip_net;
|
638 |
} else {
|
639 |
// 形式が不正ならば無視するためFALSE
|
640 |
-
return
|
641 |
}
|
642 |
}
|
643 |
|
644 |
/**
|
645 |
* 日本語が含まれているかチェックメソッド
|
|
|
646 |
* @param string $comment
|
647 |
* @param string $author
|
648 |
*/
|
649 |
-
function validation( $comment, $author, $post_id =
|
650 |
-
global $
|
651 |
-
global $
|
652 |
-
global $
|
653 |
-
global $
|
654 |
-
global $
|
655 |
-
global $default_japanese_string_min_count; // 日本語文字最小含有数
|
656 |
|
657 |
// Throws SPAM Away 起動フラグ 1:起動 2 or Other:オフ
|
658 |
-
$tsa_on_flg = get_option( 'tsa_on_flg', $
|
659 |
|
660 |
// 一定時間制限チェック
|
661 |
// 一定時間内スパム認定機能<br />○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定+スパム情報保存
|
@@ -669,68 +718,73 @@ class ThrowsSpamAway {
|
|
669 |
// tsa_spam_limit_flg,tsa_spam_limit_minutes,tsa_spam_limit_count,tsa_spam_limit_over_interval,tsa_spam_limit_over_interval_error_message
|
670 |
|
671 |
// タイトル文字列は文字列カウントから排除するか 1:する
|
672 |
-
global $
|
673 |
-
$tsa_without_title_str = intval( get_option( 'tsa_without_title_str', $
|
674 |
|
675 |
// スパム情報保存フラグ
|
676 |
$tsa_spam_data_save = get_option( 'tsa_spam_data_save' );
|
677 |
// 一定時間制限チェック
|
678 |
$tsa_spam_limit_flg = get_option( 'tsa_spam_limit_flg', '' );
|
679 |
if ( $tsa_spam_data_save == '1' && $tsa_spam_limit_flg == '1' ) {
|
680 |
-
global $
|
681 |
-
global $
|
682 |
-
global $
|
683 |
global $wpdb;
|
684 |
-
$tsa_spam_limit_minutes
|
685 |
-
$tsa_spam_limit_over_interval = intval(get_option( 'tsa_spam_limit_over_interval', $
|
686 |
// ○分以内(インターバルの方が長い場合はインターバル値を利用する)の同一IPからのスパム投稿回数を調べる
|
687 |
$interval_minutes = ( $tsa_spam_limit_minutes >= $tsa_spam_limit_over_interval ? $tsa_spam_limit_minutes : $tsa_spam_limit_over_interval );
|
688 |
|
689 |
// 上記が○回を超えているかチェック
|
690 |
$remote_ip = $_SERVER['REMOTE_ADDR'];
|
691 |
-
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
692 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
693 |
-
$ip_array
|
694 |
$remote_ip = $ip_array[0];
|
695 |
}
|
696 |
|
697 |
-
$ip
|
698 |
$this_ip_spam_cnt = "
|
699 |
SELECT ip_address, count(ppd) as spam_count, max(post_date)
|
700 |
FROM (select ip_address, post_date as ppd, post_date from $this->table_name) as A
|
701 |
-
WHERE A.ip_address = '"
|
702 |
-
ppd >= '".gmdate( 'Y-m-d H:i:s', current_time( 'timestamp' ) - 60 * $interval_minutes )."'
|
703 |
GROUP BY ip_address LIMIT 1";
|
704 |
-
$query
|
705 |
-
$spam_count
|
706 |
|
707 |
|
708 |
-
//
|
709 |
-
$tsa_spam_limit_count = intval( get_option( 'tsa_spam_limit_count', $
|
710 |
if ( $spam_count > $tsa_spam_limit_count ) {
|
711 |
// アウト!
|
712 |
$this->error_type = SPAM_LIMIT_OVER;
|
713 |
-
|
|
|
714 |
}
|
715 |
}
|
716 |
// ダミーフィールド使用する場合、ダミーフィールドに入力値があればエラー
|
717 |
-
$tsa_dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $
|
718 |
-
if ( $tsa_dummy_param_field_flg == '1') {
|
719 |
if ( ! empty( $_POST['tsa_param_field_tsa_3'] ) ) { // このフィールドにリクエストパラメータが入る場合はスパム判定
|
720 |
$this->error_type = DUMMY_FIELD;
|
721 |
-
|
|
|
722 |
}
|
723 |
}
|
724 |
|
725 |
// コメントの内容に関するバリデーション
|
726 |
-
|
727 |
-
$
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
|
|
|
|
|
|
734 |
}
|
735 |
|
736 |
function mb_str_split( $string ) {
|
@@ -741,17 +795,23 @@ class ThrowsSpamAway {
|
|
741 |
* Callback admin_menu
|
742 |
*/
|
743 |
function admin_menu() {
|
744 |
-
$mincap
|
745 |
$spam_mincap = 'level_7';
|
746 |
-
if (function_exists('add_menu_page')) {
|
747 |
-
add_menu_page(__('Throws SPAM Away 設定',
|
|
|
|
|
|
|
748 |
}
|
749 |
|
750 |
-
if (function_exists('add_submenu_page')) {
|
751 |
if ( get_option( 'tsa_spam_data_save' ) == '1' ) {
|
752 |
-
add_submenu_page( 'throws-spam-away', __( 'スパムデータ',
|
|
|
|
|
|
|
753 |
}
|
754 |
-
|
755 |
}
|
756 |
// 従来通りスパムデータ保存しない場合はスルーする
|
757 |
if ( get_option( 'tsa_spam_data_save' ) != 1 ) {
|
@@ -770,50 +830,48 @@ class ThrowsSpamAway {
|
|
770 |
global $wpdb; // WordPress DBアクセス
|
771 |
global $tsa_version;
|
772 |
|
773 |
-
global $
|
774 |
-
global $
|
775 |
-
global $
|
776 |
-
global $
|
777 |
-
global $
|
778 |
-
global $
|
779 |
-
global $
|
780 |
-
global $
|
781 |
-
global $
|
782 |
-
global $
|
783 |
-
global $
|
784 |
-
global $
|
785 |
-
global $
|
786 |
-
global $
|
787 |
-
global $
|
788 |
-
global $
|
789 |
-
global $
|
790 |
-
global $
|
791 |
|
792 |
//global $default_spam_champuru_hosts;
|
793 |
-
global $
|
794 |
|
795 |
-
global $
|
796 |
-
global $
|
797 |
-
global $
|
798 |
-
global $
|
799 |
-
global $
|
800 |
|
801 |
-
global $
|
802 |
-
global $
|
803 |
-
global $default_spam_keep_day_count;
|
804 |
|
805 |
-
global $
|
806 |
|
807 |
global $spam_champuru_hosts;
|
808 |
|
809 |
-
global $
|
810 |
|
811 |
// 設定完了の場合はメッセージ表示
|
812 |
-
$_saved =
|
813 |
|
814 |
if ( isset( $_POST['tsa_nonce'] ) ) {
|
815 |
check_admin_referer( 'tsa_action', 'tsa_nonce' );
|
816 |
-
|
817 |
update_option( 'tsa_on_flg', intval( $_POST['tsa_on_flg'] ) );
|
818 |
update_option( 'tsa_japanese_string_min_count', $_POST['tsa_japanese_string_min_count'] );
|
819 |
update_option( 'tsa_back_second', $_POST['tsa_back_second'] );
|
@@ -845,527 +903,578 @@ class ThrowsSpamAway {
|
|
845 |
update_option( 'tsa_dummy_param_field_flg', $_POST['tsa_dummy_param_field_flg'] );
|
846 |
update_option( 'tsa_memo', $_POST['tsa_memo'] );
|
847 |
update_option( 'tsa_spam_champuru_by_text', $_POST['tsa_spam_champuru_by_text'] );
|
848 |
-
|
849 |
-
update_option( 'tsa_only_whitelist_ip_flg', $_POST['tsa_only_whitelist_ip_flg'] );
|
850 |
|
851 |
// スパムデータベース作成
|
852 |
$this->tsa_create_tbl();
|
853 |
|
854 |
-
$_saved =
|
855 |
}
|
856 |
wp_enqueue_style( 'thorows-spam-away-styles', plugins_url( '/css/tsa_styles.css', __FILE__ ) );
|
857 |
?>
|
858 |
-
<style>
|
859 |
-
table.form-table {
|
860 |
-
|
861 |
-
}
|
862 |
-
|
863 |
-
table.form-table th {
|
864 |
-
|
865 |
-
}
|
866 |
-
</style>
|
867 |
-
<script type="text/Javascript">
|
868 |
-
// 配列重複チェック
|
869 |
-
var isDuplicate = function(
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
};
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
}
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
<
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1322 |
}
|
1323 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1324 |
function trackback_spam_away( $tb ) {
|
1325 |
global $newThrowsSpamAway;
|
|
|
1326 |
|
1327 |
-
$tsa_tb_on_flg
|
1328 |
$tsa_tb_url_flg = get_option( 'tsa_tb_url_flg' );
|
1329 |
-
$siteurl
|
1330 |
// トラックバック OR ピンバック時にフィルタ発動
|
1331 |
-
if ( $tsa_tb_on_flg == "2" || ( $tb['comment_type'] != 'trackback' && $tb['comment_type'] != 'pingback' ) )
|
|
|
|
|
1332 |
|
1333 |
// SPAMかどうかフラグ
|
1334 |
-
$tb_val['is_spam'] =
|
1335 |
|
1336 |
// コメント判定
|
1337 |
-
$author
|
1338 |
$comment = $tb["comment_content"];
|
1339 |
$post_id = $tb["comment_post_ID"];
|
1340 |
// IP系の検査
|
1341 |
$remote_ip = $_SERVER['REMOTE_ADDR'];
|
1342 |
-
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
1343 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
1344 |
-
$ip_array
|
1345 |
$remote_ip = $ip_array[0];
|
1346 |
}
|
1347 |
|
1348 |
if ( ! $newThrowsSpamAway->ip_check( $remote_ip ) ) {
|
1349 |
-
$tb_val['is_spam'] =
|
1350 |
-
}
|
1351 |
-
|
1352 |
-
|
1353 |
-
$tb_val['is_spam'] =
|
1354 |
-
} else
|
1355 |
-
// URL検索する場合、URL包含検査 (このブログのURLを含んでない場合エラー
|
1356 |
-
if ( $tsa_tb_url_flg == '1' && stripos( $comment, $siteurl ) == FALSE ) {
|
1357 |
-
$tb_val['is_spam'] = TRUE; // スパム扱い
|
1358 |
}
|
1359 |
// トラックバックスパムがなければ返却・あったら捨てちゃう
|
1360 |
if ( ! $tb_val['is_spam'] ) {
|
1361 |
// トラックバック内に日本語存在(または禁止語句混入なし)
|
1362 |
return $tb;
|
1363 |
} else {
|
1364 |
-
if ( get_option( 'tsa_spam_data_save', $
|
1365 |
-
$spam_contents
|
1366 |
$spam_contents['error_type'] = SPAM_TRACKBACK;
|
1367 |
-
$spam_contents['author']
|
1368 |
-
$spam_contents['comment']
|
1369 |
|
1370 |
$this->save_post_meta( $post_id, $remote_ip, $spam_contents );
|
1371 |
}
|
@@ -1375,42 +1484,45 @@ function addIpAddresses(newAddressStr) {
|
|
1375 |
|
1376 |
/**
|
1377 |
* 当該IPアドレスからの最終投稿日時取得
|
|
|
1378 |
* @param string ip_address
|
|
|
1379 |
* @return 最終投稿日時 Y-m-d H:i:s
|
1380 |
*/
|
1381 |
-
function get_last_spam_comment( $ip_address =
|
1382 |
global $wpdb;
|
1383 |
// IPアドレスがなければNULL返却
|
1384 |
-
if ( $ip_address ==
|
1385 |
-
return
|
1386 |
}
|
1387 |
// 最終コメント情報取得
|
1388 |
$qry_str = "SELECT A.post_date, A.post_id, B.error_type, B.author as spam_author, B.comment as spam_comment FROM $this->table_name as A
|
1389 |
INNER JOIN $this->table_name as B ON A.ip_address = B.ip_address AND A.post_date = B.post_date
|
1390 |
-
WHERE A.ip_address = '".htmlspecialchars( $ip_address )."' ORDER BY A.post_date DESC LIMIT 1 ";
|
1391 |
$results = $wpdb->get_results( $qry_str );
|
1392 |
if ( count( $results ) > 0 ) {
|
1393 |
return $results[0];
|
1394 |
}
|
1395 |
-
|
|
|
1396 |
}
|
1397 |
|
1398 |
/**
|
1399 |
* スパムデータベース表示
|
|
|
1400 |
* @param
|
1401 |
-
* @return HTML
|
1402 |
*/
|
1403 |
-
|
1404 |
global $wpdb;
|
1405 |
-
global $
|
1406 |
-
$_saved =
|
1407 |
|
1408 |
// ブラックIPリスト
|
1409 |
-
$block_ip_addresses_str = get_option( 'tsa_block_ip_addresses', '');
|
1410 |
-
$block_ip_addresses
|
1411 |
-
$ip_list
|
1412 |
|
1413 |
-
$act = ( isset( $_POST['act'] ) ? esc_attr( $_POST['act'] ) :
|
1414 |
|
1415 |
if ( isset( $_POST['tsa_nonce'] ) ) {
|
1416 |
check_admin_referer( 'tsa_action', 'tsa_nonce' );
|
@@ -1418,15 +1530,15 @@ function addIpAddresses(newAddressStr) {
|
|
1418 |
// スパム情報から 特定IPアドレス削除
|
1419 |
if ( $act == "remove_ip" ) {
|
1420 |
$remove_ip_address = @htmlspecialchars( $_POST['ip_address'] );
|
1421 |
-
if ( !isset( $remove_ip_address ) || strlen( $remove_ip_address ) == 0 ) {
|
1422 |
// N/A
|
1423 |
} else {
|
1424 |
// スパムデータベースから特定IP情報削除
|
1425 |
$wpdb->query(
|
1426 |
-
|
1427 |
);
|
1428 |
-
$_saved
|
1429 |
-
$message = "スパムデータから $remove_ip_address
|
1430 |
}
|
1431 |
} elseif ( $act == "add_ip" ) {
|
1432 |
$add_ip_address = @htmlspecialchars( $_POST['ip_address'] );
|
@@ -1434,312 +1546,310 @@ function addIpAddresses(newAddressStr) {
|
|
1434 |
// N/A
|
1435 |
} else {
|
1436 |
// 対象IPアドレスに一つ追加
|
1437 |
-
$dup_flg =
|
1438 |
foreach ( $ip_list as $ip ) {
|
1439 |
-
if ( $ip == trim($add_ip_address) ) {
|
1440 |
-
$_saved
|
1441 |
-
$message = "$add_ip_address
|
1442 |
-
$dup_flg =
|
1443 |
break;
|
1444 |
}
|
1445 |
}
|
1446 |
-
if ( $dup_flg ==
|
1447 |
-
$added_block_ip_addresses_str = $block_ip_addresses_str . "\n"
|
1448 |
-
update_option("tsa_block_ip_addresses", $added_block_ip_addresses_str);
|
1449 |
-
$_saved
|
1450 |
-
$message = "$add_ip_address
|
1451 |
}
|
1452 |
}
|
1453 |
} elseif ( $act == "truncate" ) {
|
1454 |
// スパムデータテーブルのtruncateを行う
|
1455 |
$result = $wpdb->query(
|
1456 |
-
|
1457 |
-
if ( $result ==
|
1458 |
-
$_saved
|
1459 |
-
$message = "スパムデータをすべて削除しました。";
|
1460 |
} else {
|
1461 |
-
$_saved
|
1462 |
-
$message = "スパムデータテーブルへ削除処理を実行しましたが、エラーが発生し処理が完了しませんでした。";
|
1463 |
}
|
1464 |
}
|
1465 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1466 |
?>
|
1467 |
-
|
1468 |
-
<?php
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
-
|
1485 |
-
|
1486 |
-
|
|
|
1487 |
SELECT count(ppd) as pageview, ppd
|
1488 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as A
|
1489 |
-
GROUP BY ppd HAVING ppd >= '".gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gdays )."'
|
1490 |
ORDER BY pageview DESC
|
1491 |
LIMIT 1
|
1492 |
";
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
|
1498 |
-
|
1499 |
SELECT count(distinct ip_address) as vis, ppd
|
1500 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as B
|
1501 |
GROUP BY ppd HAVING ppd >= '" . gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gdays ) . "'
|
1502 |
ORDER BY vis DESC
|
1503 |
LIMIT 1
|
1504 |
";
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
|
1518 |
SELECT count(DISTINCT ip_address) AS total
|
1519 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as B
|
1520 |
-
WHERE ppd = '".gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gg )."'
|
1521 |
";
|
1522 |
-
|
1523 |
-
|
1524 |
-
|
1525 |
-
|
1526 |
SELECT count(ppd) as total
|
1527 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as C
|
1528 |
-
WHERE ppd = '".gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gg )."'
|
1529 |
";
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
|
1535 |
-
|
1536 |
-
|
1537 |
-
|
1538 |
-
<div style='background:#ffffff;width:100%;height:"
|
1539 |
-
<div style='background:$unique_color;width:100%;height:"
|
1540 |
-
<div style='background:$web_color;width:100%;height:"
|
1541 |
<div style='background:gray;width:100%;height:1px;'></div>
|
1542 |
-
<br />".gmdate( 'd', current_time( 'timestamp' ) - 86400 * $gg ) . '<br />' . gmdate( 'M', current_time( 'timestamp' ) - 86400 * $gg ) ."
|
1543 |
-
<div style='background:;width:100%;height:2.2em;'>"
|
1544 |
<br clear=\"all\" /></div>
|
1545 |
</td>\n";
|
1546 |
-
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
※ 
|
1551 |
-
|
1552 |
-
|
1553 |
-
<?php
|
1554 |
-
// wp_tsa_spam の ip_address カラムに存在するIP_ADDRESS投稿は無視するか
|
1555 |
-
$results = $wpdb->get_results(
|
1556 |
-
"SELECT D.cnt as cnt,E.ip_address as ip_address, D.ppd as post_date, E.error_type as error_type, E.author as author, E.comment as comment FROM
|
1557 |
-
((select count(ip_address) as cnt, ip_address, max(post_date) as ppd, error_type, author, comment from $this->table_name
|
1558 |
-
WHERE post_date >= '". gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gdays )."'
|
1559 |
-
GROUP BY ip_address) as D INNER JOIN $this->table_name as E ON D.ip_address = E.ip_address AND D.ppd = E.post_date)
|
1560 |
-
ORDER BY post_date DESC"
|
1561 |
-
);
|
1562 |
-
?>
|
1563 |
<h4>
|
1564 |
-
|
1565 |
-
|
1566 |
-
|
1567 |
-
|
1568 |
-
|
1569 |
-
|
1570 |
-
|
1571 |
-
|
1572 |
-
|
1573 |
-
|
1574 |
-
|
1575 |
-
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
-
|
1580 |
-
|
1581 |
-
|
1582 |
-
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
|
1592 |
-
|
1593 |
-
|
1594 |
-
|
1595 |
-
|
1596 |
-
|
1597 |
-
|
1598 |
-
|
1599 |
-
|
1600 |
-
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
|
1607 |
-
|
1608 |
-
|
1609 |
-
|
1610 |
-
|
1611 |
-
|
1612 |
-
|
1613 |
-
|
1614 |
-
|
1615 |
-
|
1616 |
-
|
1617 |
-
|
1618 |
-
|
1619 |
-
|
1620 |
-
|
1621 |
-
|
1622 |
-
|
1623 |
-
|
1624 |
-
|
1625 |
-
|
1626 |
-
|
1627 |
-
|
1628 |
-
|
1629 |
-
|
1630 |
-
|
1631 |
-
|
1632 |
-
|
1633 |
-
|
1634 |
-
|
1635 |
-
|
1636 |
-
|
1637 |
-
|
1638 |
-
|
1639 |
-
|
1640 |
-
|
1641 |
-
|
1642 |
-
|
1643 |
-
|
1644 |
-
|
1645 |
-
|
1646 |
-
|
1647 |
-
|
1648 |
-
|
1649 |
-
|
1650 |
-
|
1651 |
-
|
1652 |
-
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
|
1657 |
-
|
1658 |
-
|
1659 |
-
|
1660 |
-
|
1661 |
-
|
1662 |
-
|
1663 |
-
|
1664 |
-
|
1665 |
-
|
1666 |
-
|
1667 |
-
|
1668 |
-
|
1669 |
-
|
1670 |
-
|
1671 |
-
|
1672 |
-
|
1673 |
-
|
1674 |
-
|
1675 |
-
|
1676 |
-
|
1677 |
-
|
1678 |
-
|
1679 |
-
|
1680 |
-
|
1681 |
-
|
1682 |
-
|
1683 |
-
|
1684 |
-
|
1685 |
-
|
1686 |
-
|
1687 |
-
|
1688 |
-
|
1689 |
-
<?php /*} else { ?>
|
1690 |
ブロック対象IP
|
1691 |
<?php } */ ?>
|
1692 |
-
|
1693 |
-
|
1694 |
-
|
1695 |
-
|
1696 |
-
|
1697 |
-
|
1698 |
-
|
1699 |
-
|
1700 |
-
|
1701 |
-
|
1702 |
-
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
|
1714 |
-
|
1715 |
-
|
1716 |
-
|
1717 |
-
|
1718 |
-
|
1719 |
-
|
1720 |
-
|
1721 |
-
|
1722 |
-
|
1723 |
-
|
1724 |
-
|
1725 |
-
|
1726 |
-
|
1727 |
-
|
1728 |
-
|
1729 |
-
|
1730 |
-
|
1731 |
-
|
1732 |
-
<?php
|
1733 |
}
|
1734 |
|
1735 |
/**
|
1736 |
-
*
|
1737 |
*/
|
1738 |
function recommend_setting() {
|
1739 |
-
global $wpdb;
|
1740 |
?>
|
1741 |
-
|
1742 |
-
|
1743 |
}
|
1744 |
|
1745 |
}
|
1 |
<?php
|
2 |
+
|
3 |
/**
|
4 |
*
|
5 |
* <p>ThrowsSpamAway</p> Class
|
6 |
* WordPress's Plugin
|
7 |
+
* @author Takeshi Satoh@GTI Inc. 2021
|
8 |
+
* @version 3.3.1
|
9 |
*/
|
10 |
class ThrowsSpamAway {
|
11 |
|
12 |
+
const DOMAIN = 'throws-spam-away';
|
|
|
13 |
|
14 |
+
// データベースのversion
|
15 |
+
var $table_name = null;
|
16 |
+
// エラータイプ
|
17 |
+
var $error_type = null;
|
18 |
|
19 |
+
/**
|
20 |
+
* ThrowsSpamAway constructor.
|
21 |
+
*/
|
22 |
public function __construct() {
|
|
|
23 |
global $tsa_spam_tbl_name;
|
24 |
global $wpdb;
|
25 |
+
// language
|
26 |
+
load_plugin_textdomain( self::DOMAIN, false, basename( dirname( __FILE__ ) ) . '/languages' );
|
27 |
// Activate
|
28 |
register_activation_hook( __FILE__, array( $this, 'activate' ) );
|
29 |
|
30 |
// エラー記号
|
31 |
+
if ( ! defined( 'MUST_WORD' ) ) {
|
32 |
+
define( 'MUST_WORD', 'must_word' );
|
33 |
define( 'NG_WORD', 'ng_word' );
|
34 |
define( 'BLOCK_IP', 'block_ip' );
|
35 |
define( 'SPAM_BLACKLIST', 'spam_champuru' );
|
38 |
define( 'DUMMY_FIELD', 'dummy_param_field' );
|
39 |
|
40 |
define( 'SPAM_TRACKBACK', 'spam_trackback' );
|
41 |
+
define( 'NOT_JAPANESE', 'not_japanese' );
|
42 |
|
43 |
+
define( 'NOT_IN_WHITELIST_IP', 'not_in_whitelist_ip' );
|
44 |
}
|
45 |
|
46 |
// 接頭辞(wp_)を付けてテーブル名を設定
|
49 |
// 管理画面メニュー追加
|
50 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
51 |
|
52 |
+
global $df_spam_keep_day_cnt;
|
53 |
+
global $lower_spam_keep_day_cnt;
|
54 |
|
55 |
// 保存期間終了したデータ削除
|
56 |
+
$skdc = intval( get_option( 'tsa_spam_keep_day_count', $df_spam_keep_day_cnt ) );
|
57 |
+
if ( $skdc < $lower_spam_keep_day_cnt ) {
|
58 |
+
$skdc = $lower_spam_keep_day_cnt;
|
59 |
+
}
|
60 |
if ( get_option( 'tsa_spam_data_delete_flg', '' ) == '1' ) {
|
61 |
// 期間 get_option( 'tsa_spam_keep_day_count' ) 日
|
62 |
+
$tsearch = $wpdb->get_var( "SELECT 1 FROM " .$this->table_name . " LIMIT 1" );
|
63 |
+
if ( $tsearch == 1 ) {
|
64 |
+
$del_query = "DELETE FROM " . $this->table_name . " WHERE post_date < %s ";
|
65 |
+
$wpdb->query( $wpdb->prepare( $del_query, gmdate( 'Y-m-d 23:59:59', current_time( 'timestamp' ) - ( 86400 * $skdc ) ) ) );
|
66 |
+
}
|
67 |
}
|
68 |
}
|
69 |
|
71 |
* プラグインインストール後 有効化時処理
|
72 |
*/
|
73 |
function activate() {
|
74 |
+
global $df_dummy_param_field_flg, $df_on_flg, $df_without_title_str, $df_japanese_string_min_cnt;
|
75 |
+
global $df_back_second, $df_caution_msg;
|
76 |
+
global $df_caution_msg_pnt, $df_err_msg, $df_url_cnt_chk_flg;
|
77 |
+
global $df_ok_url_cnt, $df_url_cnt_over_err_msg, $df_ng_key_err_msg;
|
78 |
+
global $df_must_key_err_msg, $df_tb_on_flg, $df_tb_url_flg;
|
79 |
//global $default_spam_champuru_hosts,
|
80 |
+
global $df_spam_champuru_by_text, $df_spam_champuru_flg;
|
81 |
+
global $df_ip_block_from_spam_chk_flg, $df_block_ip_address_err_msg, $df_spam_data_save;
|
82 |
+
global $df_spam_data_delete_flg, $df_spam_keep_day_cnt;
|
83 |
+
global $df_spam_limit_flg, $df_spam_limit_minutes, $df_spam_limit_cnt;
|
84 |
+
global $df_spam_limit_over_interval, $df_spam_limit_over_interval_err_msg;
|
85 |
+
global $df_only_whitelist_ip_flg;
|
86 |
|
87 |
// 初期設定値
|
88 |
+
update_option( 'tsa_dummy_param_field_flg', $df_dummy_param_field_flg );
|
89 |
+
update_option( 'tsa_on_flg', $df_on_flg );
|
90 |
+
update_option( 'tsa_without_title_str', $df_without_title_str );
|
91 |
+
update_option( 'tsa_japanese_string_min_count', $df_japanese_string_min_cnt );
|
92 |
+
update_option( 'tsa_back_second', $df_back_second );
|
93 |
+
update_option( 'tsa_caution_msg', $df_caution_msg );
|
94 |
+
update_option( 'tsa_caution_msg_point', $df_caution_msg_pnt );
|
95 |
+
update_option( 'tsa_error_msg', $df_err_msg );
|
96 |
+
update_option( 'tsa_url_count_check_flg', $df_url_cnt_chk_flg );
|
97 |
+
update_option( 'tsa_ok_url_count', $df_ok_url_cnt );
|
98 |
+
update_option( 'tsa_url_count_over_error_msg', $df_url_cnt_over_err_msg );
|
99 |
+
update_option( 'tsa_ng_key_error_message', $df_ng_key_err_msg );
|
100 |
+
update_option( 'tsa_must_key_error_message', $df_must_key_err_msg );
|
101 |
+
update_option( 'tsa_tb_on_flg', $df_tb_on_flg );
|
102 |
+
update_option( 'tsa_tb_url_flg', $df_tb_url_flg );
|
103 |
+
delete_option( 'tsa_spam_champuru_hosts' );
|
104 |
+
update_option( 'tsa_spam_champuru_by_text', $df_spam_champuru_by_text );
|
105 |
+
update_option( 'tsa_spam_champuru_flg', $df_spam_champuru_flg );
|
106 |
+
update_option( 'tsa_ip_block_from_spam_chk_flg', $df_ip_block_from_spam_chk_flg );
|
107 |
+
update_option( 'tsa_block_ip_address_error_message', $df_block_ip_address_err_msg );
|
108 |
+
update_option( 'tsa_spam_data_save', $df_spam_data_save );
|
109 |
+
update_option( 'tsa_spam_data_delete_flg', $df_spam_data_delete_flg );
|
110 |
+
update_option( 'tsa_spam_keep_day_count', $df_spam_keep_day_cnt );
|
111 |
+
update_option( 'tsa_spam_limit_flg', $df_spam_limit_flg );
|
112 |
+
update_option( 'tsa_spam_limit_minutes', $df_spam_limit_minutes );
|
113 |
+
update_option( 'tsa_spam_limit_count', $df_spam_limit_cnt );
|
114 |
+
update_option( 'tsa_spam_limit_over_interval', $df_spam_limit_over_interval );
|
115 |
+
update_option( 'tsa_spam_limit_over_interval_error_message', $df_spam_limit_over_interval_err_msg );
|
116 |
+
update_option( 'tsa_only_whitelist_ip_flg', $df_only_whitelist_ip_flg );
|
117 |
|
118 |
// スパムデータベース作成
|
119 |
$this->tsa_create_tbl();
|
137 |
|
138 |
$table_name = $wpdb->prefix . $tsa_spam_tbl_name;
|
139 |
// テーブル作成要フラグ
|
140 |
+
$flg = false;
|
141 |
+
if ( $wpdb->get_var( "SELECT 1 FROM " .$table_name . " LIMIT 1" ) != 1 ) {
|
142 |
// テーブルが存在しないため作成する
|
143 |
+
$flg = true;
|
144 |
}
|
145 |
|
146 |
//DBのバージョン
|
148 |
//現在のDBバージョン取得
|
149 |
$installed_ver = get_option( 'tsa_meta_version', 0 );
|
150 |
// DBバージョンが低い または テーブルが存在しない場合は作成
|
151 |
+
if ( $flg == true || $installed_ver < $tsa_db_version ) {
|
152 |
// dbDeltaのおかげ様でCREATE文のみ
|
153 |
$sql = "CREATE TABLE $table_name (
|
154 |
meta_id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
170 |
|
171 |
/**
|
172 |
* スパム投稿の記録
|
173 |
+
*
|
174 |
* @param string $post_id
|
175 |
* @param string $ip_address
|
176 |
*/
|
177 |
function save_post_meta( $post_id, $ip_address, $spam_contents ) {
|
178 |
+
global $df_spam_data_save;
|
179 |
|
180 |
+
if ( get_option( 'tsa_spam_data_save', $df_spam_data_save ) != '1' ) {
|
181 |
+
return;
|
182 |
+
}
|
183 |
|
184 |
global $wpdb;
|
185 |
|
186 |
$error_type = $spam_contents['error_type'];
|
187 |
+
$author = strip_tags( $spam_contents['author'] );
|
188 |
+
$comment = strip_tags( $spam_contents['comment'] );
|
189 |
|
190 |
//保存するために配列にする
|
191 |
$set_arr = array(
|
192 |
+
'post_id' => $post_id,
|
193 |
+
'ip_address' => $ip_address,
|
194 |
+
'error_type' => $error_type,
|
195 |
+
'author' => $author,
|
196 |
+
'comment' => $comment,
|
197 |
);
|
198 |
|
199 |
//レコード新規追加
|
200 |
$wpdb->insert( $this->table_name, $set_arr );
|
201 |
+
|
202 |
return;
|
203 |
}
|
204 |
|
205 |
// JS読み込み部
|
206 |
function tsa_scripts_init() {
|
207 |
+
global $post;
|
208 |
global $tsa_version;
|
209 |
|
210 |
+
$comments_open = ( isset( $post->comment_status ) && $post->comment_status != 'closed' );
|
211 |
|
212 |
// anti-spam の方法を参考に作成しました
|
213 |
if (
|
214 |
+
! is_admin() &&
|
215 |
+
! is_home() &&
|
216 |
+
! is_front_page() &&
|
217 |
+
! is_archive() &&
|
218 |
+
! is_search() &&
|
219 |
+
$comments_open
|
220 |
) {
|
221 |
wp_enqueue_script( 'throws-spam-away-script', plugins_url( '/js/tsa_params.min.js', __FILE__ ), array( 'jquery' ), $tsa_version );
|
222 |
}
|
223 |
}
|
224 |
|
225 |
+
function comment_form_message_html() {
|
226 |
+
global $df_caution_msg;
|
227 |
+
$ret = "";
|
228 |
+
// 注意文言表示 Filter Hook: tsa_caution_message since Ver.3.3
|
229 |
+
$caution_msg = apply_filters( 'tsa_caution_message', get_option( 'tsa_caution_message', $df_caution_msg ) );
|
230 |
// 注意文言が設定されている場合のみ表示する
|
231 |
if ( strlen( trim( $caution_msg ) ) > 0 ) {
|
232 |
+
$ret = '<p id="throwsSpamAway">' . $caution_msg . '</p>';
|
233 |
}
|
234 |
+
return $ret;
|
235 |
+
}
|
236 |
+
|
237 |
+
function comment_form() {
|
238 |
+
echo $this->comment_form_message_html();
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* コメントフォーム 送信ボタン前
|
243 |
+
*
|
244 |
+
* Filter Hook: tsa_comment_form_submit_field since Ver.3.3
|
245 |
+
*
|
246 |
+
* @param $submit_field
|
247 |
+
* @param $args
|
248 |
+
*
|
249 |
+
* @return mixed|void
|
250 |
+
*/
|
251 |
+
function comment_form_submit_field( $submit_field, $args ) {
|
252 |
+
$ret = $this->comment_form_message_html();
|
253 |
+
return apply_filters( 'tsa_comment_form_submit_field', $ret . $submit_field, $submit_field, $ret );
|
254 |
}
|
255 |
|
256 |
function comment_form_dummy_param_field() {
|
257 |
+
global $df_dummy_param_field_flg;
|
258 |
// 空パラメータフィールド作成
|
259 |
+
$dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $df_dummy_param_field_flg );
|
260 |
if ( $dummy_param_field_flg == '1' ) {
|
261 |
echo '<p class="tsa_param_field_tsa_" style="display:none;">email confirm<span class="required">*</span><input type="text" name="tsa_email_param_field___" id="tsa_email_param_field___" size="30" value="" />
|
262 |
</p>';
|
263 |
+
echo '<p class="tsa_param_field_tsa_2" style="display:none;">post date<span class="required">*</span><input type="text" name="tsa_param_field_tsa_3" id="tsa_param_field_tsa_3" size="30" value="' . date( 'Y-m-d H:i:s' ) . '" />
|
264 |
</p>';
|
265 |
}
|
266 |
}
|
267 |
|
268 |
+
function comment_post( $commentdata ) {
|
269 |
global $newThrowsSpamAway;
|
270 |
global $user_ID;
|
271 |
+
global $df_back_second;
|
272 |
+
global $df_err_msg;
|
273 |
+
global $df_ng_key_err_msg;
|
274 |
+
global $df_must_key_err_msg;
|
275 |
+
global $df_block_ip_address_err_msg;
|
276 |
+
global $df_url_cnt_over_err_msg;
|
277 |
+
global $df_spam_limit_over_interval_err_msg;
|
278 |
+
global $df_only_whitelist_ip_flg;
|
279 |
+
global $df_spam_data_save;
|
280 |
|
281 |
// ログインしている場合は通過させます。
|
282 |
if ( $user_ID ) {
|
283 |
+
return $commentdata;
|
284 |
}
|
285 |
|
286 |
// コメント(comment)及び名前(author)の中も検査
|
287 |
+
$id = @$commentdata['comment_post_ID'];
|
288 |
+
$author = @$commentdata['comment_author'];
|
289 |
+
$comment = @$commentdata['comment_content'];
|
290 |
|
291 |
// チェック対象IPアドレス
|
292 |
$remote_ip = $_SERVER['REMOTE_ADDR'];
|
293 |
+
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
294 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
295 |
+
$ip_array = explode( ",", $remote_ip );
|
296 |
$remote_ip = $ip_array[0];
|
297 |
}
|
298 |
|
299 |
+
// 許可リスト優先通過
|
300 |
// IP制御 任意のIPアドレスをあればブロックする
|
301 |
+
$white_ip_addresses = trim( get_option( 'tsa_white_ip_addresses', '' ) );
|
302 |
+
$only_whitelist_ip_flg = get_option( 'tsa_only_whitelist_ip_flg', $df_only_whitelist_ip_flg );
|
303 |
+
$white_ip = ! $newThrowsSpamAway->white_ip_check( $remote_ip );
|
304 |
+
// IP制御 許可リストIPのみ許可する場合(許可リストに記入がある場合のみ有効)
|
305 |
+
if ( ! empty( $white_ip_addresses ) &&
|
306 |
+
$only_whitelist_ip_flg === '1' && $white_ip == false ) {
|
307 |
+
// 許可リスト以外通さない
|
308 |
$newThrowsSpamAway->error_type = NOT_IN_WHITELIST_IP;
|
309 |
} else {
|
310 |
// IP系の検査
|
311 |
+
if ( ! $newThrowsSpamAway->ip_check( $remote_ip ) && $white_ip == false ) {
|
312 |
// アウト!
|
313 |
+
|
314 |
+
} elseif ( $newThrowsSpamAway->validation( $comment, $author, $id ) ) { // コメント検査
|
315 |
+
return $commentdata;
|
|
|
316 |
}
|
317 |
}
|
318 |
$error_type = $newThrowsSpamAway->error_type;
|
319 |
+
$error_msg = get_option( 'tsa_error_message', $df_err_msg );
|
320 |
switch ( $error_type ) {
|
321 |
case MUST_WORD :
|
322 |
+
$error_msg = get_option( 'tsa_must_key_error_message', $df_must_key_err_msg );
|
323 |
break;
|
324 |
case NG_WORD :
|
325 |
+
$error_msg = get_option( 'tsa_ng_key_error_message', $df_ng_key_err_msg );
|
326 |
break;
|
327 |
case BLOCK_IP :
|
328 |
case NOT_IN_WHITELIST_IP :
|
329 |
case SPAM_BLACKLIST :
|
330 |
+
$error_msg = get_option( 'tsa_block_ip_address_error_message', $df_block_ip_address_err_msg );
|
331 |
break;
|
332 |
case URL_COUNT_OVER :
|
333 |
+
$error_msg = get_option( 'tsa_url_count_over_error_message', $df_url_cnt_over_err_msg );
|
334 |
break;
|
335 |
case SPAM_LIMIT_OVER :
|
336 |
+
$error_msg = get_option( 'tsa_spam_limit_over_interval_error_message', $df_spam_limit_over_interval_err_msg );
|
337 |
break;
|
338 |
+
case DUMMY_FIELD : // ダミーフィールドの場合は通常メッセージ
|
339 |
default :
|
|
|
340 |
}
|
341 |
// 記録する場合はDB記録
|
342 |
+
if ( get_option( 'tsa_spam_data_save', $df_spam_data_save ) == '1' ) {
|
343 |
+
$spam_contents = array();
|
344 |
$spam_contents['error_type'] = $error_type;
|
345 |
+
$spam_contents['author'] = mb_strcut( $author, 0, 255 );
|
346 |
+
$spam_contents['comment'] = mb_strcut( $comment, 0, 255 );
|
347 |
|
348 |
$this->save_post_meta( $id, $remote_ip, $spam_contents );
|
349 |
}
|
350 |
// 元画面へ戻るタイム計算
|
351 |
+
$back_time = ( (int) get_option( 'tsa_back_second', $df_back_second ) ) * 1000;
|
352 |
// タイム値が0なら元画面へそのままリダイレクト
|
353 |
if ( $back_time == 0 ) {
|
354 |
+
header( 'Location:' . $_SERVER['HTTP_REFERER'] );
|
355 |
die;
|
356 |
} else {
|
357 |
+
wp_die( $error_msg . '<script type="text/javascript">var closing = function() {location.href="' . $_SERVER['HTTP_REFERER'] . '";}
|
358 |
+
window.setTimeout( closing, ' . $back_time . ');</script>' );
|
|
|
359 |
}
|
360 |
}
|
361 |
|
364 |
$author,
|
365 |
$comment,
|
366 |
$validate_array
|
367 |
+
) {
|
368 |
+
global $df_on_flg; // 日本語以外を弾くかどうか初期値
|
369 |
+
global $df_url_cnt_chk_flg; // URL数を制御するか初期設定値
|
370 |
+
global $df_ok_url_cnt; // 制限する場合のURL数初期設定値
|
371 |
+
global $df_japanese_string_min_cnt; // 日本語文字最小含有数
|
372 |
+
global $df_without_title_str; // タイトル文字列は文字列カウントから排除するか 1:する
|
373 |
+
|
374 |
//
|
375 |
+
$_japanese_string_min_count = get_option( 'tsa_japanese_string_min_count', $df_japanese_string_min_cnt );
|
376 |
// NGキーワード文字列群
|
377 |
$_ng_keywords = get_option( 'tsa_ng_keywords', '' );
|
378 |
+
// キーワード文字列群 ※拒否リストと重複するものは拒否リストのほうが優先です。
|
379 |
$_must_keywords = get_option( 'tsa_must_keywords', '' );
|
380 |
// URL数チェック
|
381 |
+
$_url_count_check = get_option( 'tsa_url_count_on_flg', $df_url_cnt_chk_flg );
|
382 |
// 許容URL数設定値
|
383 |
+
$_ok_url_count = intval( get_option( 'tsa_ok_url_count', $df_ok_url_cnt ) ); // デフォルト値3(3つまで許容)
|
384 |
+
// タイトル文字列を文字列カウントから排除するか デフォルト 1:する
|
385 |
+
$tsa_without_title_str = intval( get_option( 'tsa_without_title_str', $df_without_title_str ) );
|
386 |
+
|
387 |
+
$validate_array = array_merge( array(
|
388 |
+
'post_id' => null,
|
389 |
+
'tsa_on_flg' => $df_on_flg,
|
390 |
+
'tsa_japanese_string_min_count' => $_japanese_string_min_count,
|
391 |
+
'tsa_ng_keywords' => $_ng_keywords,
|
392 |
+
'tsa_must_keywords' => $_must_keywords,
|
393 |
+
'tsa_url_count_check' => $_url_count_check,
|
394 |
+
'tsa_ok_url_count' => $_ok_url_count
|
395 |
), $validate_array );
|
396 |
|
397 |
+
// post->ID
|
398 |
+
$post_id = @$validate_array['post_id'];
|
399 |
+
// スパムフィルター ON フラグ
|
400 |
+
$tsa_on_flg = @$validate_array['tsa_on_flg'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
401 |
// 日本語文字列必須含有数
|
402 |
+
$tsa_japanese_string_min_count = @$validate_array['tsa_japanese_string_min_count'];
|
403 |
$tsa_japanese_string_min_count = intval( $tsa_japanese_string_min_count );
|
404 |
// NGキーワード文字列群
|
405 |
+
$tsa_ng_keywords = @$validate_array['tsa_ng_keywords'];
|
406 |
+
// キーワード文字列群 ※拒否リストと重複するものは拒否リストのほうが優先です。
|
407 |
+
$tsa_must_keywords = @$validate_array['tsa_must_keywords'];
|
408 |
// URL数チェック
|
409 |
+
$tsa_url_count_check = @$validate_array['tsa_url_count_check'];
|
410 |
// 許容URL数設定値
|
411 |
+
$tsa_ok_url_count = @$validate_array['tsa_ok_url_count'];
|
412 |
$tsa_ok_url_count = intval( $tsa_ok_url_count ); // デフォルト値3(3つまで許容)
|
413 |
|
414 |
+
// シングルバイトだけならエラー
|
415 |
+
if ( $tsa_on_flg == 1 && $this->is_only_in_singlebyte( $comment ) ) {
|
416 |
+
$this->error_type = NOT_JAPANESE;
|
417 |
+
|
418 |
+
return false;
|
419 |
+
}
|
420 |
+
|
421 |
// マルチバイト文字が含まれている場合は日本語が含まれていればOK
|
422 |
if ( $tsa_on_flg == 1 ) {
|
423 |
$count_flg = 0;
|
424 |
+
mb_regex_encoding( 'UTF-8' );
|
425 |
$com_split = $this->mb_str_split( $comment );
|
426 |
|
427 |
+
$tit_split = array();
|
428 |
|
429 |
// タイトル文字列が含まれている場合はそれを除く機能のためタイトル文字列リスト化
|
430 |
+
if ( $tsa_without_title_str == 1 && $post_id != null ) {
|
431 |
global $wpdb;
|
432 |
+
$target_post = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . $wpdb->posts . " WHERE ID = %d ", htmlspecialchars( $post_id ) ) );
|
433 |
|
434 |
$title = $target_post[0]->post_title;
|
435 |
|
447 |
|
448 |
} else {
|
449 |
|
450 |
+
if ( preg_match( '/[一-龠]+/u', $it ) ) {
|
451 |
$count_flg += 1;
|
452 |
}
|
453 |
+
if ( preg_match( '/[ァ-ヶー]+/u', $it ) ) {
|
454 |
$count_flg += 1;
|
455 |
}
|
456 |
+
if ( preg_match( '/[ぁ-ん]+/u', $it ) ) {
|
457 |
$count_flg += 1;
|
458 |
}
|
459 |
|
461 |
}
|
462 |
|
463 |
$flg = ( $tsa_japanese_string_min_count < $count_flg );
|
464 |
+
if ( $flg == false ) {
|
465 |
$this->error_type = NOT_JAPANESE;
|
466 |
+
|
467 |
+
return false;
|
468 |
}
|
469 |
}
|
470 |
// 日本語文字列チェック抜けたらキーワードチェックを行う
|
471 |
if ( $tsa_ng_keywords != '' ) {
|
472 |
$keyword_list = explode( ',', $tsa_ng_keywords );
|
473 |
foreach ( $keyword_list as $key ) {
|
474 |
+
if ( preg_match( '/' . trim( $key ) . '/u', $author . $comment ) ) {
|
475 |
$this->error_type = NG_WORD;
|
476 |
+
|
477 |
+
return false;
|
478 |
}
|
479 |
}
|
480 |
}
|
481 |
+
// キーワードチェック(拒否リスト)を抜けたら必須キーワードチェックを行う
|
482 |
if ( $tsa_must_keywords != '' ) {
|
483 |
$keyword_list = explode( ',', $tsa_must_keywords );
|
484 |
foreach ( $keyword_list as $key ) {
|
485 |
+
if ( preg_match( '/' . trim( $key ) . '/u', $author . $comment ) ) {
|
486 |
// OK
|
487 |
} else {
|
488 |
// 必須ワードがなかったためエラー
|
489 |
$this->error_type = MUST_WORD;
|
490 |
+
|
491 |
+
return false;
|
492 |
}
|
493 |
}
|
494 |
}
|
495 |
// 含有URL数チェック
|
496 |
if ( $tsa_url_count_check != '2' ) {
|
497 |
+
if ( substr_count( strtolower( $author . $comment ), 'http' ) > $tsa_ok_url_count ) {
|
498 |
// URL文字列(httpの数)が多いエラー
|
499 |
$this->error_type = URL_COUNT_OVER;
|
500 |
+
|
501 |
+
return false;
|
502 |
}
|
503 |
}
|
504 |
|
505 |
+
return true;
|
506 |
}
|
507 |
|
508 |
|
512 |
}
|
513 |
|
514 |
/**
|
515 |
+
* IP制御許可リストチェックメソッド
|
516 |
+
*
|
517 |
* @param string $target_ip
|
518 |
*/
|
519 |
function white_ip_check( $target_ip ) {
|
520 |
+
global $df_only_whitelist_ip_flg;
|
521 |
+
$white_ip_addresses = trim( get_option( 'tsa_white_ip_addresses', '' ) );
|
522 |
+
$only_whitelist_ip_flg = get_option( 'tsa_only_whitelist_ip_flg', $df_only_whitelist_ip_flg );
|
523 |
|
524 |
+
if ( ! empty( $white_ip_addresses ) ) {
|
525 |
// 改行区切りの場合はカンマ区切りに文字列置換後リスト化
|
526 |
$white_ip_addresses = str_replace( "\n", ',', $white_ip_addresses );
|
527 |
+
$ip_list = explode( ',', $white_ip_addresses );
|
528 |
foreach ( $ip_list as $_ip ) {
|
529 |
// 指定IPが範囲指定の場合 例:192.168.1.0/24
|
530 |
+
if ( strpos( $_ip, '/' ) != false ) {
|
531 |
if ( $this->in_cidr( $target_ip, $_ip ) ) {
|
532 |
// 通過対象
|
533 |
if ( $only_whitelist_ip_flg === '1' ) {
|
534 |
+
return false;
|
535 |
}
|
536 |
}
|
537 |
} elseif ( trim( $_ip ) == trim( $target_ip ) ) {
|
538 |
// 通過対象
|
539 |
if ( $only_whitelist_ip_flg === '1' ) {
|
540 |
+
return false;
|
541 |
}
|
542 |
}
|
543 |
}
|
544 |
}
|
545 |
+
|
546 |
+
return true;
|
547 |
}
|
548 |
|
549 |
/**
|
550 |
* IPアドレスのチェックメソッド
|
551 |
+
*
|
552 |
* @param string $target_ip
|
553 |
*/
|
554 |
function ip_check( $target_ip ) {
|
555 |
global $wpdb; // WordPress DBアクセス
|
556 |
+
global $df_spam_champuru_flg; // すぱむちゃんぷるー利用初期値
|
|
|
557 |
|
558 |
// スパムフィルター利用あれば始めに通す
|
559 |
// 1.スパムちゃんぷるー
|
560 |
+
$spam_filter_spam_champuru_flg = get_option( 'tsa_spam_champuru_flg', $df_spam_champuru_flg );
|
561 |
+
if ( $spam_filter_spam_champuru_flg == '1' ) {
|
562 |
return $this->reject_spam_ip( $target_ip );
|
563 |
}
|
564 |
// 2.以降あれば追加
|
568 |
|
569 |
if ( $ip_block_from_spam_chk_flg === '1' ) {
|
570 |
// wp_commentsの comment_approved カラムが「spam」のIP_ADDRESSからの投稿は無視する
|
571 |
+
$comment_spam_select_query = "SELECT DISTINCT comment_author_IP FROM " . $wpdb->comments . " WHERE comment_approved = 'spam' ORDER BY comment_author_IP ASC ";
|
572 |
+
$results = $wpdb->get_results( $comment_spam_select_query );
|
573 |
foreach ( $results as $item ) {
|
574 |
if ( trim( $item->comment_author_IP ) == trim( $target_ip ) ) {
|
575 |
// ブロックしたいIP
|
576 |
$this->error_type = BLOCK_IP;
|
577 |
+
|
578 |
+
return false;
|
579 |
}
|
580 |
}
|
581 |
}
|
582 |
// IP制御 任意のIPアドレスをあればブロックする
|
583 |
+
$block_ip_addresses = trim( get_option( 'tsa_block_ip_addresses', '' ) );
|
584 |
+
if ( ! empty( $block_ip_addresses ) ) {
|
585 |
// 改行区切りの場合はカンマ区切りに文字列置換後リスト化
|
586 |
$block_ip_addresses = str_replace( "\n", ',', $block_ip_addresses );
|
587 |
+
$ip_list = explode( ',', $block_ip_addresses );
|
588 |
foreach ( $ip_list as $ip ) {
|
589 |
// 指定IPが範囲指定の場合 例:192.168.1.0/24
|
590 |
+
if ( strpos( $ip, '/' ) != false ) {
|
591 |
if ( $this->in_cidr( $target_ip, $ip ) ) {
|
592 |
// ブロックしたいIP
|
593 |
$this->error_type = BLOCK_IP;
|
594 |
+
|
595 |
+
return false;
|
596 |
}
|
597 |
} elseif ( trim( $ip ) == trim( $target_ip ) ) {
|
598 |
// ブロックしたいIP
|
599 |
$this->error_type = BLOCK_IP;
|
600 |
+
|
601 |
+
return false;
|
|
|
602 |
}
|
603 |
+
// セーフIP
|
604 |
}
|
605 |
}
|
606 |
+
|
607 |
+
return true;
|
608 |
}
|
609 |
|
610 |
/**
|
611 |
+
* スパムちゃんぷるー代替スパム拒否リスト利用ブロック
|
612 |
*/
|
613 |
function reject_spam_ip( $ip ) {
|
614 |
|
615 |
+
// スパム拒否リスト [tsa_spam_champuru_hosts] 配列型
|
616 |
// global $default_spam_champuru_hosts;
|
617 |
+
// スパム拒否リスト by テキスト [tsa_spam_chmapuru_by_text] 文字列型(カンマ区切り)
|
618 |
+
global $df_spam_champuru_by_text;
|
619 |
|
620 |
// $spam_blacklist_hosts = get_option( 'tsa_spam_champuru_hosts', $default_spam_champuru_hosts );
|
621 |
+
$spam_blacklist_by_text = get_option( 'tsa_spam_champuru_by_text', $df_spam_champuru_by_text );
|
622 |
|
623 |
$spam_blacklist_by_text_lists = explode( ',', $spam_blacklist_by_text );
|
624 |
if ( count( $spam_blacklist_by_text_lists ) > 0 ) {
|
628 |
}
|
629 |
|
630 |
if ( strlen( trim( $spam_blacklist_by_text ) ) == 0 || count( $spam_blacklist_by_text_lists ) == 0 ) {
|
631 |
+
return true;
|
632 |
}
|
633 |
|
|
|
|
|
634 |
$check_list = $spam_blacklist_by_text_lists;
|
635 |
|
636 |
+
$pattern = '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/';
|
637 |
+
$remote_ip = $_SERVER['REMOTE_ADDR'];
|
638 |
+
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
|
|
639 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
640 |
+
$ip_array = explode( ",", $remote_ip );
|
641 |
$remote_ip = $ip_array[0];
|
642 |
}
|
643 |
$check_IP = trim( preg_match( $pattern, $ip ) ? $ip : $remote_ip );
|
644 |
+
$spam = false;
|
645 |
if ( preg_match( $pattern, $check_IP ) ) {
|
646 |
|
647 |
// check
|
648 |
$i = 0;
|
649 |
+
while ( $i < count( $check_list ) ) {
|
650 |
+
$check = implode( '.', array_reverse( preg_split( '\.', $check_IP ) ) ) . '.' . $check_list[ $i ];
|
|
|
651 |
|
652 |
$i ++;
|
653 |
|
654 |
+
$result = gethostbyname( $check );
|
655 |
|
656 |
+
if ( $result != $check ) {
|
657 |
+
$spam = true;
|
658 |
break;
|
659 |
}
|
660 |
}
|
661 |
}
|
662 |
if ( $spam ) {
|
663 |
$this->error_type = SPAM_BLACKLIST;
|
664 |
+
|
665 |
+
return false;
|
666 |
}
|
667 |
+
|
668 |
+
return true;
|
669 |
}
|
670 |
|
671 |
/**
|
672 |
* CIDRチェック
|
673 |
+
*
|
674 |
* @param string $ip
|
675 |
* @param string $cidr
|
676 |
+
*
|
677 |
* @return boolean
|
678 |
*/
|
679 |
function in_cidr( $ip, $cidr ) {
|
680 |
list( $network, $mask_bit_len ) = explode( '/', $cidr );
|
681 |
if ( ! is_nan( $mask_bit_len ) && $mask_bit_len <= 32 ) {
|
682 |
+
$host = 32 - $mask_bit_len;
|
683 |
+
$net = ip2long( $network ) >> $host << $host; // 11000000101010000000000000000000
|
684 |
+
$ip_net = ip2long( $ip ) >> $host << $host; // 11000000101010000000000000000000
|
685 |
+
|
686 |
return $net === $ip_net;
|
687 |
} else {
|
688 |
// 形式が不正ならば無視するためFALSE
|
689 |
+
return false;
|
690 |
}
|
691 |
}
|
692 |
|
693 |
/**
|
694 |
* 日本語が含まれているかチェックメソッド
|
695 |
+
*
|
696 |
* @param string $comment
|
697 |
* @param string $author
|
698 |
*/
|
699 |
+
function validation( $comment, $author, $post_id = null ) {
|
700 |
+
global $df_on_flg; // 日本語以外を弾くかどうか初期値
|
701 |
+
global $df_dummy_param_field_flg; // ダミー項目によるスパム判定初期値
|
702 |
+
// global $df_url_cnt_chk_flg; // URL数を制御するか初期設定値
|
703 |
+
// global $df_ok_url_cnt; // 制限する場合のURL数初期設定値
|
704 |
+
// global $df_japanese_string_min_cnt; // 日本語文字最小含有数
|
|
|
705 |
|
706 |
// Throws SPAM Away 起動フラグ 1:起動 2 or Other:オフ
|
707 |
+
$tsa_on_flg = get_option( 'tsa_on_flg', $df_on_flg );
|
708 |
|
709 |
// 一定時間制限チェック
|
710 |
// 一定時間内スパム認定機能<br />○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定+スパム情報保存
|
718 |
// tsa_spam_limit_flg,tsa_spam_limit_minutes,tsa_spam_limit_count,tsa_spam_limit_over_interval,tsa_spam_limit_over_interval_error_message
|
719 |
|
720 |
// タイトル文字列は文字列カウントから排除するか 1:する
|
721 |
+
global $df_without_title_str;
|
722 |
+
$tsa_without_title_str = intval( get_option( 'tsa_without_title_str', $df_without_title_str ) );
|
723 |
|
724 |
// スパム情報保存フラグ
|
725 |
$tsa_spam_data_save = get_option( 'tsa_spam_data_save' );
|
726 |
// 一定時間制限チェック
|
727 |
$tsa_spam_limit_flg = get_option( 'tsa_spam_limit_flg', '' );
|
728 |
if ( $tsa_spam_data_save == '1' && $tsa_spam_limit_flg == '1' ) {
|
729 |
+
global $df_spam_limit_minutes;
|
730 |
+
global $df_spam_limit_over_interval;
|
731 |
+
global $df_spam_limit_cnt;
|
732 |
global $wpdb;
|
733 |
+
$tsa_spam_limit_minutes = intval( get_option( 'tsa_spam_limit_minutes', $df_spam_limit_minutes ) );
|
734 |
+
$tsa_spam_limit_over_interval = intval( get_option( 'tsa_spam_limit_over_interval', $df_spam_limit_over_interval ) );
|
735 |
// ○分以内(インターバルの方が長い場合はインターバル値を利用する)の同一IPからのスパム投稿回数を調べる
|
736 |
$interval_minutes = ( $tsa_spam_limit_minutes >= $tsa_spam_limit_over_interval ? $tsa_spam_limit_minutes : $tsa_spam_limit_over_interval );
|
737 |
|
738 |
// 上記が○回を超えているかチェック
|
739 |
$remote_ip = $_SERVER['REMOTE_ADDR'];
|
740 |
+
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
741 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
742 |
+
$ip_array = explode( ",", $remote_ip );
|
743 |
$remote_ip = $ip_array[0];
|
744 |
}
|
745 |
|
746 |
+
$ip = htmlspecialchars( $remote_ip );
|
747 |
$this_ip_spam_cnt = "
|
748 |
SELECT ip_address, count(ppd) as spam_count, max(post_date)
|
749 |
FROM (select ip_address, post_date as ppd, post_date from $this->table_name) as A
|
750 |
+
WHERE A.ip_address = '" . $remote_ip . "' AND
|
751 |
+
ppd >= '" . gmdate( 'Y-m-d H:i:s', current_time( 'timestamp' ) - 60 * $interval_minutes ) . "'
|
752 |
GROUP BY ip_address LIMIT 1";
|
753 |
+
$query = $wpdb->get_row( $this_ip_spam_cnt );
|
754 |
+
$spam_count = intval( $query->spam_count );
|
755 |
|
756 |
|
757 |
+
// 最後のスパム投稿から○分超えていなければアウト!!
|
758 |
+
$tsa_spam_limit_count = intval( get_option( 'tsa_spam_limit_count', $df_spam_limit_cnt ) );
|
759 |
if ( $spam_count > $tsa_spam_limit_count ) {
|
760 |
// アウト!
|
761 |
$this->error_type = SPAM_LIMIT_OVER;
|
762 |
+
|
763 |
+
return false;
|
764 |
}
|
765 |
}
|
766 |
// ダミーフィールド使用する場合、ダミーフィールドに入力値があればエラー
|
767 |
+
$tsa_dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $df_dummy_param_field_flg );
|
768 |
+
if ( $tsa_dummy_param_field_flg == '1' ) {
|
769 |
if ( ! empty( $_POST['tsa_param_field_tsa_3'] ) ) { // このフィールドにリクエストパラメータが入る場合はスパム判定
|
770 |
$this->error_type = DUMMY_FIELD;
|
771 |
+
|
772 |
+
return false;
|
773 |
}
|
774 |
}
|
775 |
|
776 |
// コメントの内容に関するバリデーション
|
777 |
+
$result_valid = apply_filters( 'tsa_validate_comment',
|
778 |
+
$this->validate_comment(
|
779 |
+
$author,
|
780 |
+
$comment,
|
781 |
+
array(
|
782 |
+
'post_id' => $post_id,
|
783 |
+
'tsa_on_flg' => $tsa_on_flg
|
784 |
+
)
|
785 |
+
), $author, $comment, $post_id, $tsa_on_flg );
|
786 |
+
|
787 |
+
return apply_filters( 'tsa_validate_comment_result', $result_valid );
|
788 |
}
|
789 |
|
790 |
function mb_str_split( $string ) {
|
795 |
* Callback admin_menu
|
796 |
*/
|
797 |
function admin_menu() {
|
798 |
+
$mincap = 'level_8';
|
799 |
$spam_mincap = 'level_7';
|
800 |
+
if ( function_exists( 'add_menu_page' ) ) {
|
801 |
+
add_menu_page( __( 'Throws SPAM Away 設定', self::DOMAIN ), __( 'Throws SPAM Away', self::DOMAIN ), $mincap, 'throws-spam-away', array(
|
802 |
+
$this,
|
803 |
+
'options_page'
|
804 |
+
) );
|
805 |
}
|
806 |
|
807 |
+
if ( function_exists( 'add_submenu_page' ) ) {
|
808 |
if ( get_option( 'tsa_spam_data_save' ) == '1' ) {
|
809 |
+
add_submenu_page( 'throws-spam-away', __( 'スパムデータ', self::DOMAIN ), __( 'スパムデータ', self::DOMAIN ), $spam_mincap, 'throws-spam-away/throws_spam_away.class.php', array(
|
810 |
+
$this,
|
811 |
+
'spams_list'
|
812 |
+
) );
|
813 |
}
|
814 |
+
add_submenu_page( 'throws-spam-away', __( 'スパムコメント一括削除', self::DOMAIN ), __( 'スパムコメント一括削除', 'throws-spam_away' ), $mincap, 'throws-spam-away/throws_spam_away_comments.php' );
|
815 |
}
|
816 |
// 従来通りスパムデータ保存しない場合はスルーする
|
817 |
if ( get_option( 'tsa_spam_data_save' ) != 1 ) {
|
830 |
global $wpdb; // WordPress DBアクセス
|
831 |
global $tsa_version;
|
832 |
|
833 |
+
global $df_on_flg;
|
834 |
+
global $df_without_title_str;
|
835 |
+
global $df_dummy_param_field_flg;
|
836 |
+
global $df_japanese_string_min_cnt;
|
837 |
+
global $df_caution_msg;
|
838 |
+
global $df_caution_msg_pnt;
|
839 |
+
global $df_back_second;
|
840 |
+
global $df_err_msg;
|
841 |
+
global $df_ng_key_err_msg;
|
842 |
+
global $df_must_key_err_msg;
|
843 |
+
global $df_tb_on_flg;
|
844 |
+
global $df_tb_url_flg;
|
845 |
+
global $df_block_ip_address_err_msg;
|
846 |
+
global $df_ip_block_from_spam_chk_flg;
|
847 |
+
global $df_spam_data_save;
|
848 |
+
global $df_url_cnt_over_err_msg;
|
849 |
+
global $df_ok_url_cnt;
|
850 |
+
global $df_spam_champuru_flg;
|
851 |
|
852 |
//global $default_spam_champuru_hosts;
|
853 |
+
global $df_spam_champuru_by_text;
|
854 |
|
855 |
+
global $df_spam_limit_flg;
|
856 |
+
global $df_spam_limit_minutes;
|
857 |
+
global $df_spam_limit_cnt;
|
858 |
+
global $df_spam_limit_over_interval;
|
859 |
+
global $df_spam_limit_over_interval_err_msg;
|
860 |
|
861 |
+
global $df_spam_data_delete_flg;
|
862 |
+
global $df_spam_keep_day_cnt;
|
|
|
863 |
|
864 |
+
global $lower_spam_keep_day_cnt;
|
865 |
|
866 |
global $spam_champuru_hosts;
|
867 |
|
868 |
+
global $df_only_whitelist_ip_flg;
|
869 |
|
870 |
// 設定完了の場合はメッセージ表示
|
871 |
+
$_saved = false;
|
872 |
|
873 |
if ( isset( $_POST['tsa_nonce'] ) ) {
|
874 |
check_admin_referer( 'tsa_action', 'tsa_nonce' );
|
|
|
875 |
update_option( 'tsa_on_flg', intval( $_POST['tsa_on_flg'] ) );
|
876 |
update_option( 'tsa_japanese_string_min_count', $_POST['tsa_japanese_string_min_count'] );
|
877 |
update_option( 'tsa_back_second', $_POST['tsa_back_second'] );
|
903 |
update_option( 'tsa_dummy_param_field_flg', $_POST['tsa_dummy_param_field_flg'] );
|
904 |
update_option( 'tsa_memo', $_POST['tsa_memo'] );
|
905 |
update_option( 'tsa_spam_champuru_by_text', $_POST['tsa_spam_champuru_by_text'] );
|
906 |
+
update_option( 'tsa_only_whitelist_ip_flg', ( isset( $_POST['tsa_only_whitelist_ip_flg'] ) ? $_POST['tsa_only_whitelist_ip_flg'] : '0' ) );
|
|
|
907 |
|
908 |
// スパムデータベース作成
|
909 |
$this->tsa_create_tbl();
|
910 |
|
911 |
+
$_saved = true;
|
912 |
}
|
913 |
wp_enqueue_style( 'thorows-spam-away-styles', plugins_url( '/css/tsa_styles.css', __FILE__ ) );
|
914 |
?>
|
915 |
+
<style>
|
916 |
+
table.form-table {
|
917 |
+
|
918 |
+
}
|
919 |
+
|
920 |
+
table.form-table th {
|
921 |
+
width: 200px;
|
922 |
+
}
|
923 |
+
</style>
|
924 |
+
<script type="text/Javascript">
|
925 |
+
// 配列重複チェック
|
926 |
+
var isDuplicate = function (ary, str) {
|
927 |
+
for (var i = 0; i < ary.length; i++) {
|
928 |
+
if (str == ary[i]) {
|
929 |
+
return true;
|
930 |
+
}
|
931 |
+
}
|
932 |
+
return false;
|
933 |
+
};
|
934 |
+
|
935 |
+
function addIpAddresses(newAddressStr) {
|
936 |
+
// チェック用配列
|
937 |
+
var test_newAddress_list = newAddressStr.split(",");
|
938 |
+
var str = document.getElementById('tsa_block_ip_addresses').value;
|
939 |
+
// 現在の配列(テスト用)
|
940 |
+
str = str.replace(/\,/g, "\n");
|
941 |
+
var test_oldAddress_list = str.split("\n");
|
942 |
+
|
943 |
+
if (str.length > 0) {
|
944 |
+
str += "\n";
|
945 |
+
}
|
946 |
+
if (newAddressStr.length > 0) {
|
947 |
+
newAddressStr = newAddressStr.replace(/\,/g, "\n");
|
948 |
+
}
|
949 |
+
str += newAddressStr;
|
950 |
+
str = str.replace(/\,/g, "\n");
|
951 |
+
|
952 |
+
var ary = str.split("\n");
|
953 |
+
var newAry = new Array;
|
954 |
+
|
955 |
+
var upd_flg = false;
|
956 |
+
var upd_ip_str = "";
|
957 |
+
for ( i = 0; i < test_newAddress_list.length; i++) {
|
958 |
+
if (!isDuplicate(test_oldAddress_list, test_newAddress_list[i]) && test_newAddress_list[i] != "") {
|
959 |
+
upd_flg = true;
|
960 |
+
upd_ip_str = upd_ip_str + "・" + test_newAddress_list[i] + "\n";
|
961 |
+
}
|
962 |
+
}
|
963 |
+
if (upd_flg == true) {
|
964 |
+
|
965 |
+
for (var i = 0; i < ary.length; i++) {
|
966 |
+
if (!isDuplicate(newAry, ary[i]) && ary[i] != "") {
|
967 |
+
newAry.push(ary[i]);
|
968 |
+
}
|
969 |
+
}
|
970 |
+
document.getElementById('tsa_block_ip_addresses').value = newAry.join('\n');
|
971 |
+
alert('新たにIPアドレスを追加しました。\n' + upd_ip_str);
|
972 |
+
} else {
|
973 |
+
alert('指定されたIPアドレスは\nすでに追加されています。');
|
974 |
+
}
|
975 |
+
return false;
|
976 |
+
}
|
977 |
+
</script>
|
978 |
+
<div class="wrap">
|
979 |
+
<h2 id="option_setting">Throws SPAM Away設定</h2>
|
980 |
+
<?php if ( $_saved ) { ?>
|
981 |
+
<div class="updated" style="padding: 10px; width: 50%;" id="message">設定の更新が完了しました。</div>
|
982 |
+
<?php } ?>
|
983 |
+
<form method="post" action="">
|
984 |
+
<?php wp_nonce_field( 'tsa_action', 'tsa_nonce' ) ?>
|
985 |
+
<p>
|
986 |
+
<a href="#spam_opt">スパム対策機能設定</a> | <a href="#url_opt">URL文字列除外 設定</a> | <a href="#keyword_opt">NGキーワード
|
987 |
+
/ 必須キーワード 制御設定</a> | <a href="#tb_opt">トラックバックへの対応設定</a> | <a href="#ip_opt">投稿IPアドレスによる制御設定</a>
|
988 |
+
| <a href="#memo_opt">メモ</a> | <a href="#spam_data_opt">スパムデータベース</a>
|
989 |
+
</p>
|
990 |
+
<h3 id="spam_opt">スパム対策機能 設定</h3>
|
991 |
+
<?php wp_nonce_field( 'update-options' ); ?>
|
992 |
+
<table class="form-table">
|
993 |
+
<tr>
|
994 |
+
<th scope="row">人の目には見えないダミーの入力項目を作成し、そこに入力があれば無視対象とする<br>(スパムプログラム投稿に有効です)</th>
|
995 |
+
<td><?php
|
996 |
+
$chk_1 = '';
|
997 |
+
$chk_2 = '';
|
998 |
+
if ( get_option( 'tsa_dummy_param_field_flg', $df_dummy_param_field_flg ) == '2' ) {
|
999 |
+
$chk_2 = ' checked="checked"';
|
1000 |
+
} else {
|
1001 |
+
$chk_1 = ' checked="checked"';
|
1002 |
+
}
|
1003 |
+
?>
|
1004 |
+
<label><input type="radio" name="tsa_dummy_param_field_flg"
|
1005 |
+
value="1"<?php esc_attr_e( $chk_1 ); ?> /> する</label>
|
1006 |
+
<label><input type="radio" name="tsa_dummy_param_field_flg"
|
1007 |
+
value="2"<?php esc_attr_e( $chk_2 ); ?> /> しない</label><br>
|
1008 |
+
※ダミー項目の制御にJavaScriptを使用しますのでJavaScriptが動作しない環境からの投稿はスパム判定されてしまいます。ご注意の上、ご利用ください。<br>
|
1009 |
+
(初期設定:<?php echo( $df_dummy_param_field_flg == '2' ? "しない" : "する" ); ?>)
|
1010 |
+
</td>
|
1011 |
+
</tr>
|
1012 |
+
</table>
|
1013 |
+
<table class="form-table">
|
1014 |
+
<tr>
|
1015 |
+
<th scope="row">日本語が存在しない場合、無視対象とする<br>(日本語文字列が存在しない場合無視対象となります。)</th>
|
1016 |
+
<td><?php
|
1017 |
+
$chk_1 = '';
|
1018 |
+
$chk_2 = '';
|
1019 |
+
if ( get_option( 'tsa_on_flg', $df_on_flg ) == 2 ) {
|
1020 |
+
$chk_2 = ' checked="checked"';
|
1021 |
+
} else {
|
1022 |
+
$chk_1 = ' checked="checked"';
|
1023 |
+
}
|
1024 |
+
?> <label><input type="radio" name="tsa_on_flg" value="1" <?php esc_attr_e( $chk_1 ); ?> /> する</label>
|
1025 |
+
<label><input type="radio" name="tsa_on_flg" value="2" <?php esc_attr_e( $chk_2 ); ?> /> しない</label><br>
|
1026 |
+
(初期設定:<?php echo( $df_on_flg == '2' ? "しない" : "する" ); ?>)
|
1027 |
+
</td>
|
1028 |
+
</tr>
|
1029 |
+
<tr>
|
1030 |
+
<th scope="row">タイトルの文字列が含まれる場合、日本語としてカウントしない<br>(日本語を無理やり入れるためにタイトルを利用する方法を排除する)</th>
|
1031 |
+
<td><?php
|
1032 |
+
$chk_1 = '';
|
1033 |
+
$chk_2 = '';
|
1034 |
+
if ( get_option( 'tsa_without_title_str', $df_without_title_str ) != '1' ) {
|
1035 |
+
$chk_2 = ' checked="checked"';
|
1036 |
+
} else {
|
1037 |
+
$chk_1 = ' checked="checked"';
|
1038 |
+
} ?>
|
1039 |
+
<label><input type="radio" name="tsa_without_title_str"
|
1040 |
+
value="1"<?php esc_attr_e( $chk_1 ); ?> /> する</label>
|
1041 |
+
<label><input type="radio" name="tsa_without_title_str"
|
1042 |
+
value="2"<?php esc_attr_e( $chk_2 ); ?> /> しない</label><br>
|
1043 |
+
(初期設定:<?php echo( $df_without_title_str == '2' ? "しない" : "する" ); ?>)
|
1044 |
+
</td>
|
1045 |
+
</tr>
|
1046 |
+
<tr>
|
1047 |
+
<th scope="row">
|
1048 |
+
<label for="tsa_japanese_string_min_count">日本語文字列含有数<br>
|
1049 |
+
(この文字列に達していない場合無視対象となります。)</label>
|
1050 |
+
</th>
|
1051 |
+
<td>
|
1052 |
+
<input id="tsa_japanese_string_min_count" type="text" name="tsa_japanese_string_min_count"
|
1053 |
+
value="<?php echo get_option( 'tsa_japanese_string_min_count', $df_japanese_string_min_cnt ); ?>"><br>
|
1054 |
+
(初期設定:<?php echo $df_japanese_string_min_cnt; ?>)
|
1055 |
+
</td>
|
1056 |
+
</tr>
|
1057 |
+
<tr>
|
1058 |
+
<th scope="row"><label for="tsa_back_second">元の記事に戻ってくる時間<br>(秒)※0の場合エラー画面表示しません。</label>
|
1059 |
+
</th>
|
1060 |
+
<td><input type="text" id="tsa_back_second" name="tsa_back_second"
|
1061 |
+
value="<?php echo get_option( 'tsa_back_second', $df_back_second ); ?>"><br>
|
1062 |
+
(初期設定:<?php echo $df_back_second; ?>)
|
1063 |
+
</td>
|
1064 |
+
</tr>
|
1065 |
+
<tr>
|
1066 |
+
<th scope="row" id="tsa_caution_message"><label for="tsa_caution_message">コメント欄の下に表示される注意文言</label></th>
|
1067 |
+
<td><input type="text" id="tsa_caution_message" name="tsa_caution_message" size="80"
|
1068 |
+
value="<?php echo get_option( 'tsa_caution_message', $df_caution_msg ); ?>"><br>
|
1069 |
+
(初期設定:<?php echo $df_caution_msg; ?>)
|
1070 |
+
</td>
|
1071 |
+
</tr>
|
1072 |
+
<tr>
|
1073 |
+
<th scope="row" id="tsa_caution_msg_point">コメント注意文言の表示位置</th>
|
1074 |
+
<td><?php
|
1075 |
+
$chk_1 = '';
|
1076 |
+
$chk_2 = '';
|
1077 |
+
$chk_3 = '';
|
1078 |
+
$opt_tsa_caution_msg_point = get_option( 'tsa_caution_msg_point', $df_caution_msg_pnt );
|
1079 |
+
if ( $opt_tsa_caution_msg_point == '3' ) {
|
1080 |
+
$chk_3 = ' checked="checked"';
|
1081 |
+
} elseif ( $opt_tsa_caution_msg_point == '2' ) {
|
1082 |
+
$chk_2 = ' checked="checked"';
|
1083 |
+
} else {
|
1084 |
+
$chk_1 = ' checked="checked"';
|
1085 |
+
}
|
1086 |
+
?>
|
1087 |
+
<label><input type="radio"
|
1088 |
+
name="tsa_caution_msg_point" value='1' <?php esc_attr_e( $chk_1 ); ?> /> コメント送信ボタンの下</label>
|
1089 |
+
<label><input type="radio"
|
1090 |
+
name="tsa_caution_msg_point" value='3' <?php esc_attr_e( $chk_3 ); ?> /> コメント送信ボタンの上</label>
|
1091 |
+
<label><input type="radio" name="tsa_caution_msg_point" value="2"
|
1092 |
+
<?php esc_attr_e( $chk_2 ); ?> /> コメント送信フォームの下</label><br>
|
1093 |
+
(初期設定:<?php echo( $df_caution_msg_pnt == '2' ? "コメント送信フォームの下" : "コメント送信ボタンの下" ); ?>)
|
1094 |
+
</td>
|
1095 |
+
</tr>
|
1096 |
+
</table>
|
1097 |
+
<p>※表示が崩れる場合、<a href="#tsa_caution_msg_point">「コメント注意文言の表示位置」</a>の変更 や <a href="#tsa_caution_message">「コメント欄の下に表示される注意文言」</a>を空白にすること を試してみて下さい。<br>
|
1098 |
+
「コメント欄の下に表示される注意文言」が空白の場合は文言表示のタグ自体が挿入されないようになります。</p>
|
1099 |
+
<table class="form-table">
|
1100 |
+
<tr>
|
1101 |
+
<th scope="row"><label for="tsa_error_message"> 日本語文字列規定値未満エラー時に表示される文言<br>(元の記事に戻ってくる時間の間のみ表示)</label></th>
|
1102 |
+
<td><input type="text" id="tsa_error_message" name="tsa_error_message" size="80"
|
1103 |
+
value="<?php echo get_option( 'tsa_error_message', $df_err_msg ); ?>"><br>(初期設定:<?php echo $df_err_msg; ?>
|
1104 |
+
)
|
1105 |
+
</td>
|
1106 |
+
</tr>
|
1107 |
+
</table>
|
1108 |
+
<a href="#option_setting" class="alignright"><?php _e( '▲ 上へ', self::DOMAIN ); ?></a>
|
1109 |
+
<h3 id="url_opt">URL文字列除外 設定</h3>
|
1110 |
+
<table class="form-table">
|
1111 |
+
<tr>
|
1112 |
+
<th scope="row">URLらしき文字列が混入している場合エラーとするか</th>
|
1113 |
+
<td><?php
|
1114 |
+
$chk_1 = '';
|
1115 |
+
$chk_2 = '';
|
1116 |
+
if ( get_option( 'tsa_url_count_on_flg', '1' ) == '2' ) {
|
1117 |
+
$chk_2 = ' checked="checked"';
|
1118 |
+
} else {
|
1119 |
+
$chk_1 = ' checked="checked"';
|
1120 |
+
}
|
1121 |
+
?> <label><input type="radio"
|
1122 |
+
name="tsa_url_count_on_flg" value='1' <?php esc_attr_e( $chk_1 ); ?>> する</label>
|
1123 |
+
<label><input type="radio" name="tsa_url_count_on_flg" value="2"
|
1124 |
+
<?php esc_attr_e( $chk_2 ); ?>> しない</label><br> する場合の制限数(入力数値まで許容):<input
|
1125 |
+
type="text" name="tsa_ok_url_count" size="2"
|
1126 |
+
value="<?php echo get_option( 'tsa_ok_url_count', $df_ok_url_cnt ); ?>"><br>
|
1127 |
+
(初期設定: <?php echo $df_ok_url_cnt; ?>)
|
1128 |
+
</td>
|
1129 |
+
</tr>
|
1130 |
+
<tr>
|
1131 |
+
<th scope="row"><label for="tsa_url_count_over_error_message">URLらしき文字列混入数オーバーエラー時に表示される文言 (元の記事に戻ってくる時間の間のみ表示)</label></th>
|
1132 |
+
<td><input type="text" id="tsa_url_count_over_error_message" name="tsa_url_count_over_error_message"
|
1133 |
+
size="80"
|
1134 |
+
value="<?php echo get_option( 'tsa_url_count_over_error_message', $df_url_cnt_over_err_msg ); ?>"><br>
|
1135 |
+
(初期設定:<?php echo $df_url_cnt_over_err_msg; ?>)
|
1136 |
+
</td>
|
1137 |
+
</tr>
|
1138 |
+
</table>
|
1139 |
+
<a href="#option_setting" class="alignright"><?php _e( '▲ 上へ', self::DOMAIN ); ?></a>
|
1140 |
+
|
1141 |
+
<h3 id="keyword_opt">NGキーワード / 必須キーワード 制御設定</h3>
|
1142 |
+
<table class="form-table">
|
1143 |
+
<tr>
|
1144 |
+
<th scope="row"><label for="tsa_ng_keywords">その他NGキーワード<br>(日本語でも英語(その他)でもNGとしたいキーワードを半角カンマ区切りで複数設定できます。<br>挙動は同じです。NGキーワードだけでも使用できます。)</label>
|
1145 |
+
</th>
|
1146 |
+
<td><input type="text" id="tsa_ng_keywords" name="tsa_ng_keywords" size="80"
|
1147 |
+
value="<?php echo get_option( 'tsa_ng_keywords', '' ); ?>"></td>
|
1148 |
+
</tr>
|
1149 |
+
<tr>
|
1150 |
+
<th scope="row"><label for="tsa_ng_key_error_message">NGキーワードエラー時に表示される文言<br>(元の記事に戻ってくる時間の間のみ表示)</label>
|
1151 |
+
</th>
|
1152 |
+
<td><input type="text" id="tsa_ng_key_error_message" name="tsa_ng_key_error_message" size="80"
|
1153 |
+
value="<?php echo get_option( 'tsa_ng_key_error_message', $df_ng_key_err_msg ); ?>"><br>
|
1154 |
+
(初期設定:<?php echo $df_ng_key_err_msg; ?>)
|
1155 |
+
</td>
|
1156 |
+
</tr>
|
1157 |
+
<tr>
|
1158 |
+
<th scope="row"><label for="tsa_must_keywords">その上での必須キーワード<br>(日本語でも英語(その他)でも必須としたいキーワードを半角カンマ区切りで複数設定できます。<br>指定文字列を含まない場合はエラーとなります。※複数の方が厳しくなります。<br>必須キーワードだけでも使用できます。)</label>
|
1159 |
+
</th>
|
1160 |
+
<td><input type="text" id="tsa_must_keywords" name="tsa_must_keywords" size="80"
|
1161 |
+
value="<?php echo get_option( 'tsa_must_keywords', '' ); ?>"></td>
|
1162 |
+
</tr>
|
1163 |
+
<tr>
|
1164 |
+
<th scope="row"><label for="tsa_must_key_error_message">必須キーワードエラー時に表示される文言<br>(元の記事に戻ってくる時間の間のみ表示)</label>
|
1165 |
+
</th>
|
1166 |
+
<td><input type="text" id="tsa_must_key_error_message" name="tsa_must_key_error_message" size="80"
|
1167 |
+
value="<?php echo get_option( 'tsa_must_key_error_message', $df_must_key_err_msg ); ?>"><br>
|
1168 |
+
(初期設定:<?php echo $df_must_key_err_msg; ?>)
|
1169 |
+
</td>
|
1170 |
+
</tr>
|
1171 |
+
</table>
|
1172 |
+
<a href="#option_setting" class="alignright"></a>
|
1173 |
+
|
1174 |
+
<h3 id="tb_opt">トラックバックへの対応設定</h3>
|
1175 |
+
<table class="form-table">
|
1176 |
+
<tr>
|
1177 |
+
<th scope="row">上記設定をトラックバック記事にも採用する</th>
|
1178 |
+
<td><?php
|
1179 |
+
$chk_1 = '';
|
1180 |
+
$chk_2 = '';
|
1181 |
+
if ( get_option( 'tsa_tb_on_flg', $df_tb_on_flg ) == "2" ) {
|
1182 |
+
$chk_2 = ' checked="checked"';
|
1183 |
+
} else {
|
1184 |
+
$chk_1 = ' checked="checked"';
|
1185 |
+
}
|
1186 |
+
?> <label><input type="radio" name="tsa_tb_on_flg"
|
1187 |
+
value='1' <?php esc_attr_e( $chk_1 ); ?> /> する</label>
|
1188 |
+
<label><input
|
1189 |
+
type="radio" name="tsa_tb_on_flg" value="2" <?php esc_attr_e( $chk_2 ); ?> /> しない</label><br>
|
1190 |
+
(初期設定:<?php echo( $df_tb_on_flg == '2' ? "しない" : "する" ); ?>)
|
1191 |
+
</td>
|
1192 |
+
</tr>
|
1193 |
+
<tr>
|
1194 |
+
<th scope="row">トラックバック記事にも採用する場合、ついでにこちらのURLが含まれているか判断する
|
1195 |
+
</th>
|
1196 |
+
<td><?php
|
1197 |
+
$chk_1 = '';
|
1198 |
+
$chk_2 = '';
|
1199 |
+
if ( get_option( 'tsa_tb_url_flg', $df_tb_url_flg ) == '2' ) {
|
1200 |
+
$chk_2 = ' checked="checked"';
|
1201 |
+
} else {
|
1202 |
+
$chk_1 = ' checked="checked"';
|
1203 |
+
}
|
1204 |
+
?> <label><input type="radio" name="tsa_tb_url_flg"
|
1205 |
+
value='1' <?php esc_attr_e( $chk_1 ); ?> /> する</label>
|
1206 |
+
<label><input
|
1207 |
+
type="radio" name="tsa_tb_url_flg" value="2" <?php esc_attr_e( $chk_2 ); ?> /> しない</label><br>
|
1208 |
+
(初期設定:<?php echo( $df_tb_url_flg == '2' ? "しない" : "する" ); ?>)
|
1209 |
+
</td>
|
1210 |
+
</tr>
|
1211 |
+
</table>
|
1212 |
+
<a href="#option_setting" class="alignright"><?php _e( '▲ 上へ', self::DOMAIN ); ?></a>
|
1213 |
+
|
1214 |
+
<h3 id="ip_opt">投稿IPアドレスによる制御設定</h3>
|
1215 |
+
<table class="form-table">
|
1216 |
+
<tr>
|
1217 |
+
<th scope="row" rowspan="2">SPAM拒否リスト利用</th>
|
1218 |
+
<td><?php
|
1219 |
+
$chk = '';
|
1220 |
+
if ( get_option( 'tsa_spam_champuru_flg', $df_spam_champuru_flg ) == '1' ) {
|
1221 |
+
$chk = ' checked="checked"';
|
1222 |
+
}
|
1223 |
+
?>
|
1224 |
+
<label><input type="checkbox" name="tsa_spam_champuru_flg"
|
1225 |
+
value='1' <?php esc_attr_e( $chk ); ?> />スパム拒否リストサービスに登録されているIPアドレスからのコメントを拒否する</label><br>
|
1226 |
+
(初期設定:<?php echo( $df_spam_champuru_flg == '2' ? "しない" : "する" ); ?>)
|
1227 |
+
</td>
|
1228 |
+
</tr>
|
1229 |
+
<tr>
|
1230 |
+
<td>
|
1231 |
+
<h4>※多ければ多いほどトラッフィク量が上がりますので注意してください。</h4>
|
1232 |
+
|
1233 |
+
<label><strong>【利用するスパム拒否リストサービスをテキスト入力(カンマ区切り)】</strong><br>
|
1234 |
+
<input type="text" name="tsa_spam_champuru_by_text"
|
1235 |
+
size="80"
|
1236 |
+
value="<?php echo get_option( 'tsa_spam_champuru_by_text', $df_spam_champuru_by_text ); ?>"><br>(初期設定:<?php echo $df_spam_champuru_by_text; ?>
|
1237 |
+
)</label>
|
1238 |
+
|
1239 |
+
</td>
|
1240 |
+
</tr>
|
1241 |
+
<tr>
|
1242 |
+
<th scope="row">WordPressのコメントで「スパム」にしたIPからの投稿にも採用する</th>
|
1243 |
+
<td><?php
|
1244 |
+
$chk = '';
|
1245 |
+
if ( get_option( 'tsa_ip_block_from_spam_chk_flg', $df_ip_block_from_spam_chk_flg ) == '1' ) {
|
1246 |
+
$chk = ' checked="checked"';
|
1247 |
+
}
|
1248 |
+
?> <label><input type="checkbox"
|
1249 |
+
name="tsa_ip_block_from_spam_chk_flg" value='1'
|
1250 |
+
<?php esc_attr_e( $chk ); ?> /> スパム投稿設定したIPアドレスからの投稿も無視する</label> ※Akismet等で自動的にスパムマークされたものも含む<br>
|
1251 |
+
(初期設定:<?php echo( $df_ip_block_from_spam_chk_flg != '1' ? "しない" : "する" ); ?>)<br>
|
1252 |
+
<?php
|
1253 |
+
// wp_commentsの comment_approved カラムが「spam」のIP_ADDRESSからの投稿は無視する
|
1254 |
+
$results = $wpdb->get_results( "SELECT DISTINCT comment_author_IP FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_author_IP ASC " );
|
1255 |
+
?>現在「spam」フラグが付いているIPアドレス:<br>
|
1256 |
+
<blockquote>
|
1257 |
+
<?php
|
1258 |
+
$add_ip_addresses = '';
|
1259 |
+
foreach ( $results as $item ) {
|
1260 |
+
$spam_ip = esc_attr( $item->comment_author_IP );
|
1261 |
+
// ブロックしたいIP
|
1262 |
+
if ( strlen( $add_ip_addresses ) > 0 ) {
|
1263 |
+
$add_ip_addresses .= ',';
|
1264 |
+
}
|
1265 |
+
$add_ip_addresses .= $spam_ip;
|
1266 |
+
?>
|
1267 |
+
<b><?php esc_attr_e( $spam_ip ); ?> </b><br>
|
1268 |
+
<?php
|
1269 |
+
}
|
1270 |
+
?>
|
1271 |
+
<input type="button"
|
1272 |
+
onclick="javascript:addIpAddresses('<?php echo $add_ip_addresses; ?>');"
|
1273 |
+
value="これらのIPアドレスを任意のブロック対象IPアドレスにコピーする"><br>
|
1274 |
+
</blockquote>
|
1275 |
+
</td>
|
1276 |
+
</tr>
|
1277 |
+
<tr>
|
1278 |
+
<th scope="row">任意のIPアドレスからの投稿も無視したい場合、対象となるIPアドレスを記述してください。<br>改行区切りで複数設定できます。(半角数字とスラッシュ、ドットのみ)<br>※カンマは自動的に改行に変換されます
|
1279 |
+
</th>
|
1280 |
+
<td><textarea name="tsa_block_ip_addresses"
|
1281 |
+
id="tsa_block_ip_addresses" cols="80"
|
1282 |
+
rows="10"><?php echo get_option( 'tsa_block_ip_addresses', '' ); ?></textarea>
|
1283 |
+
</td>
|
1284 |
+
</tr>
|
1285 |
+
<tr>
|
1286 |
+
<th scope="row">ブロック対象のIPアドレスからの投稿時に表示される文言<br>(元の記事に戻ってくる時間の間のみ表示)
|
1287 |
+
</th>
|
1288 |
+
<td><input type="text" name="tsa_block_ip_address_error_message"
|
1289 |
+
size="80"
|
1290 |
+
value="<?php echo get_option( 'tsa_block_ip_address_error_message', $df_block_ip_address_err_msg ); ?>"><br>(初期設定:<?php echo $df_block_ip_address_err_msg; ?>
|
1291 |
+
)
|
1292 |
+
</td>
|
1293 |
+
</tr>
|
1294 |
+
</table>
|
1295 |
+
<p>※上記のスパムチェックから除外するIPアドレスがあれば下記に設定してください。優先的に通過させます。<br>※トラックバックは優先通過ではありません。</p>
|
1296 |
+
<table class="form-table">
|
1297 |
+
<tr style="background-color: #fefefe;">
|
1298 |
+
<th scope="row"><strong>IP制御免除<br>許可リスト</strong></th>
|
1299 |
+
<td>
|
1300 |
+
<?php _e( '※ここに登録したIPアドレスはスパムフィルタを掛けず優先的に通します。<br>※日本語以外の言語でご利用になられるお客様のIPアドレスを登録するなどご利用ください。<br>改行区切りで複数設定できます。範囲指定も可能です。(半角数字とスラッシュ、ドットのみ)', self::DOMAIN ); ?>
|
1301 |
+
<textarea name="tsa_white_ip_addresses"
|
1302 |
+
id="tsa_white_ip_addresses" cols="80"
|
1303 |
+
rows="10"><?php echo get_option( 'tsa_white_ip_addresses', '' ); ?></textarea><br>
|
1304 |
+
<?php
|
1305 |
+
$chk = '';
|
1306 |
+
if ( get_option( 'tsa_only_whitelist_ip_flg', $df_only_whitelist_ip_flg ) == '1' ) {
|
1307 |
+
$chk = ' checked="checked"';
|
1308 |
+
}
|
1309 |
+
?> <label><input type="checkbox"
|
1310 |
+
name="tsa_only_whitelist_ip_flg" value='1'
|
1311 |
+
<?php esc_attr_e( $chk ); ?> /> <?php _e( '許可リストに登録したIPアドレス以外からの投稿を無視する(許可リストへの登録がない場合は有効になりません)', self::DOMAIN ); ?>
|
1312 |
+
</label><br>
|
1313 |
+
<?php _e( '(初期設定:', self::DOMAIN ); ?><?php echo( $df_only_whitelist_ip_flg != '1' ? __( "しない", self::DOMAIN ) : __( "する", self::DOMAIN ) ); ?><?php _e( ')', self::DOMAIN ); ?>
|
1314 |
+
<br>
|
1315 |
+
<?php _e( '※許可リストで登録したIP以外の投稿は無視されますのでこの設定は慎重に行ってください。(すべての設定より優先します)<br>※エラーメッセージは「ブロック対象のIPアドレスからの投稿時に表示される文言」が使われます。(エラー表示時のみ)', self::DOMAIN ); ?>
|
1316 |
+
</td>
|
1317 |
+
</tr>
|
1318 |
+
|
1319 |
+
</table>
|
1320 |
+
<a href="#option_setting" class="alignright"><?php _e( '▲ 上へ', self::DOMAIN ); ?></a>
|
1321 |
+
|
1322 |
+
<h3 id="memo_opt"><?php _e( 'メモ(スパム対策情報や IPアドレス・NGワードその他メモ備忘録としてご自由にお使い下さい)', self::DOMAIN ); ?></h3>
|
1323 |
+
<p><?php _e( 'この欄の内容が表示されることはありません。', self::DOMAIN ); ?></p>
|
1324 |
+
<table class="form-table">
|
1325 |
+
<tr>
|
1326 |
+
<td>
|
1327 |
+
<textarea name="tsa_memo" style="width: 80%;"
|
1328 |
+
rows="10"><?php echo get_option( 'tsa_memo', '' ); ?></textarea>
|
1329 |
+
|
1330 |
+
</td>
|
1331 |
+
</tr>
|
1332 |
+
</table>
|
1333 |
+
<a href="#option_setting" class="alignright"><?php _e( '▲ 上へ', self::DOMAIN ); ?></a>
|
1334 |
+
|
1335 |
+
<h3 id="spam_data_opt"><?php _e( 'スパムデータベース', self::DOMAIN ); ?></h3>
|
1336 |
+
<table class="form-table">
|
1337 |
+
<tr>
|
1338 |
+
<th scope="row"><?php _e( 'スパムコメント投稿情報を保存しますか?', self::DOMAIN ); ?></th>
|
1339 |
+
<td><?php
|
1340 |
+
$chk = '';
|
1341 |
+
if ( get_option( 'tsa_spam_data_save', $df_spam_data_save ) == '1' ) {
|
1342 |
+
$chk = ' checked="checked"';
|
1343 |
+
}
|
1344 |
+
?> <label><input type="checkbox"
|
1345 |
+
name="tsa_spam_data_save"
|
1346 |
+
value='1' <?php esc_attr_e( $chk ); ?> /> <?php _e( 'スパムコメント情報を保存する', self::DOMAIN ); ?>
|
1347 |
+
</label><br>
|
1348 |
+
<?php echo sprintf( __( "※Throws SPAM Away設定画面表示時に時間がかかることがあります。<br>※「保存する」を解除した場合でもテーブルは残りますので%d日以内の取得データは表示されます。", self::DOMAIN ), get_option( 'tsa_spam_keep_day_count', $df_spam_keep_day_cnt ) ); ?>
|
1349 |
+
<br>
|
1350 |
+
<?php echo sprintf( __( "(初期設定:%s)", self::DOMAIN ), ( $df_spam_data_save != '1' ? __( "しない", self::DOMAIN ) : __( "する", self::DOMAIN ) ) ); ?>
|
1351 |
+
</td>
|
1352 |
+
</tr>
|
1353 |
+
<tr>
|
1354 |
+
<th scope="row"><?php _e( 'スパムデータを表示する期間', self::DOMAIN ); ?></th>
|
1355 |
+
<td>
|
1356 |
+
<input
|
1357 |
+
type="text" name="tsa_spam_keep_day_count" size="3"
|
1358 |
+
value="<?php echo get_option( 'tsa_spam_keep_day_count', $df_spam_keep_day_cnt ); ?>"><?php echo sprintf( __( "日分(最低%d日)", self::DOMAIN ), $lower_spam_keep_day_cnt ); ?><?php echo sprintf( __( "(初期設定: %d)", self::DOMAIN ), $df_spam_keep_day_cnt ); ?>
|
1359 |
+
<br>
|
1360 |
+
<?php
|
1361 |
+
$chk = '';
|
1362 |
+
if ( get_option( 'tsa_spam_data_delete_flg', $df_spam_data_delete_flg ) == '1' ) {
|
1363 |
+
$chk = ' checked="checked"';
|
1364 |
+
}
|
1365 |
+
?>
|
1366 |
+
<label><input type="checkbox" name="tsa_spam_data_delete_flg" value='1'
|
1367 |
+
<?php esc_attr_e( $chk ); ?> > <?php _e( "期間が過ぎたデータを削除する", self::DOMAIN ); ?>
|
1368 |
+
</label><br>
|
1369 |
+
<?php echo sprintf( __( "※一度消したデータは復活出来ませんのでご注意ください。また最低%d日分は保存されます。", self::DOMAIN ), $lower_spam_keep_day_cnt ); ?>
|
1370 |
+
</td>
|
1371 |
+
</tr>
|
1372 |
+
</table>
|
1373 |
+
<p><?php _e( "一定時間内スパム認定機能<br>○分以内に○回スパムとなったら○分間、当該IPからのコメントはスパム扱いする設定<br><b>※一定時間以内にスパム投稿された回数を測定していますので「スパムコメント情報を保存する」機能がオフの場合は機能しません。</b>", self::DOMAIN ); ?></p>
|
1374 |
+
<table class="form-table">
|
1375 |
+
<tr>
|
1376 |
+
<th scope="row"><?php _e( "機能設定", self::DOMAIN ); ?></th>
|
1377 |
+
<td><?php
|
1378 |
+
$chk = '';
|
1379 |
+
if ( get_option( 'tsa_spam_limit_flg', $df_spam_limit_flg ) == '1' ) {
|
1380 |
+
$chk = ' checked="checked"';
|
1381 |
+
}
|
1382 |
+
?> <label><input type="checkbox" name="tsa_spam_limit_flg" value='1'
|
1383 |
+
<?php esc_attr_e( $chk ); ?> /> <?php _e( "機能させる", self::DOMAIN ); ?></label>
|
1384 |
+
<?php echo sprintf( __( "(初期設定: %s)", self::DOMAIN ), ( $df_spam_limit_flg != '1' ? __( "しない", self::DOMAIN ) : __( "する", self::DOMAIN ) ) ); ?>
|
1385 |
+
<br>
|
1386 |
+
<?php _e( "一定時間:", self::DOMAIN ); ?><input
|
1387 |
+
type="text" name="tsa_spam_limit_minutes" size="3"
|
1388 |
+
value="<?php echo get_option( 'tsa_spam_limit_minutes', $df_spam_limit_minutes ); ?>"><?php _e( "分以内に", self:: DOMAIN ); ?>
|
1389 |
+
<?php _e( "一定回数:", self::DOMAIN ); ?><input type="text" name="tsa_spam_limit_count" size="3"
|
1390 |
+
value="<?php echo get_option( 'tsa_spam_limit_count', $df_spam_limit_cnt ); ?>"><?php _e( "回スパムとなったら", self::DOMAIN ); ?>
|
1391 |
+
<?php _e( "<b>次から</b>", self::DOMAIN ); ?>
|
1392 |
+
<?php _e( "一定時間:", self::DOMAIN ); ?><input type="text" name="tsa_spam_limit_over_interval"
|
1393 |
+
size="3"
|
1394 |
+
value="<?php echo get_option( 'tsa_spam_limit_over_interval', $df_spam_limit_over_interval ); ?>"><?php _e( "分間", self::DOMAIN ); ?>
|
1395 |
+
<br>
|
1396 |
+
<?php echo sprintf(
|
1397 |
+
__( "(初期設定:一定時間「%d」分以内に一定回数「%d」回スパムとなったら次から「%d」分間)<br>当該IPアドレスからのコメントを強制スパム扱いします。", self::DOMAIN ),
|
1398 |
+
$df_spam_limit_minutes, $df_spam_limit_cnt, $df_spam_limit_over_interval ); ?>
|
1399 |
+
<br>
|
1400 |
+
<?php _e( "エラーメッセージは:", self::DOMAIN ); ?><input type="text"
|
1401 |
+
name="tsa_spam_limit_over_interval_error_message"
|
1402 |
+
size="80"
|
1403 |
+
value="<?php echo get_option( 'tsa_spam_limit_over_interval_error_message', $df_spam_limit_over_interval_err_msg ); ?>"><br>
|
1404 |
+
<?php echo sprintf( __( "(初期設定:%s)", self::DOMAIN ), $df_spam_limit_over_interval_err_msg ); ?>
|
1405 |
+
</td>
|
1406 |
+
</tr>
|
1407 |
+
</table>
|
1408 |
+
<a href="#option_setting" class="alignright"><?php _e( '▲ 上へ', self::DOMAIN ); ?></a>
|
1409 |
+
|
1410 |
+
<input type="hidden" name="action" value="update">
|
1411 |
+
<?php /**
|
1412 |
+
* <input
|
1413 |
+
* type="hidden" name="page_options"
|
1414 |
+
* value="tsa_on_flg,tsa_japanese_string_min_count,tsa_back_second,tsa_caution_message,tsa_caution_msg_point,tsa_error_message,tsa_ng_keywords,tsa_ng_key_error_message,tsa_must_keywords,tsa_must_key_error_message,tsa_tb_on_flg,tsa_tb_url_flg,tsa_block_ip_addresses,tsa_ip_block_from_spam_chk_flg,tsa_block_ip_address_error_message,tsa_url_count_on_flg,tsa_ok_url_count,tsa_url_count_over_error_message,tsa_spam_data_save,tsa_spam_limit_flg,tsa_spam_limit_minutes,tsa_spam_limit_count,tsa_spam_limit_over_interval,tsa_spam_limit_over_interval_error_message,tsa_spam_champuru_flg,tsa_spam_keep_day_count,tsa_spam_data_delete_flg,tsa_white_ip_addresses,tsa_dummy_param_field_flg,tsa_memo,tsa_spam_champuru_by_text,tsa_only_whitelist_ip_flg" />
|
1415 |
+
*/ ?>
|
1416 |
+
<p class="submit" id="tsa_submit_button">
|
1417 |
+
<input type="submit" class="button-primary"
|
1418 |
+
value="<?php _e( 'Save Changes' ) ?>">
|
1419 |
+
</p>
|
1420 |
+
<p>Throws SPAM Away version <?php echo $tsa_version; ?></p>
|
1421 |
+
|
1422 |
+
</form>
|
1423 |
+
</div>
|
1424 |
+
<?php
|
1425 |
}
|
1426 |
|
1427 |
+
/**
|
1428 |
+
* トラックバック用メソッド
|
1429 |
+
*
|
1430 |
+
* @param $tb
|
1431 |
+
*
|
1432 |
+
* @return mixed
|
1433 |
+
*/
|
1434 |
function trackback_spam_away( $tb ) {
|
1435 |
global $newThrowsSpamAway;
|
1436 |
+
global $df_spam_data_save;
|
1437 |
|
1438 |
+
$tsa_tb_on_flg = get_option( 'tsa_tb_on_flg' );
|
1439 |
$tsa_tb_url_flg = get_option( 'tsa_tb_url_flg' );
|
1440 |
+
$siteurl = get_option( 'siteurl' );
|
1441 |
// トラックバック OR ピンバック時にフィルタ発動
|
1442 |
+
if ( $tsa_tb_on_flg == "2" || ( $tb['comment_type'] != 'trackback' && $tb['comment_type'] != 'pingback' ) ) {
|
1443 |
+
return $tb;
|
1444 |
+
}
|
1445 |
|
1446 |
// SPAMかどうかフラグ
|
1447 |
+
$tb_val['is_spam'] = false;
|
1448 |
|
1449 |
// コメント判定
|
1450 |
+
$author = $tb["comment_author"];
|
1451 |
$comment = $tb["comment_content"];
|
1452 |
$post_id = $tb["comment_post_ID"];
|
1453 |
// IP系の検査
|
1454 |
$remote_ip = $_SERVER['REMOTE_ADDR'];
|
1455 |
+
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
1456 |
$remote_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
1457 |
+
$ip_array = explode( ",", $remote_ip );
|
1458 |
$remote_ip = $ip_array[0];
|
1459 |
}
|
1460 |
|
1461 |
if ( ! $newThrowsSpamAway->ip_check( $remote_ip ) ) {
|
1462 |
+
$tb_val['is_spam'] = true;
|
1463 |
+
} elseif ( ! $newThrowsSpamAway->validation( $comment, $author, $post_id ) ) { // 検査します!
|
1464 |
+
$tb_val['is_spam'] = true;
|
1465 |
+
} elseif ( $tsa_tb_url_flg == '1' && stripos( $comment, $siteurl ) == false ) { // URL検索する場合、URL包含検査 (このブログのURLを含んでない場合エラー
|
1466 |
+
$tb_val['is_spam'] = true; // スパム扱い
|
|
|
|
|
|
|
|
|
1467 |
}
|
1468 |
// トラックバックスパムがなければ返却・あったら捨てちゃう
|
1469 |
if ( ! $tb_val['is_spam'] ) {
|
1470 |
// トラックバック内に日本語存在(または禁止語句混入なし)
|
1471 |
return $tb;
|
1472 |
} else {
|
1473 |
+
if ( get_option( 'tsa_spam_data_save', $df_spam_data_save ) == '1' ) {
|
1474 |
+
$spam_contents = array();
|
1475 |
$spam_contents['error_type'] = SPAM_TRACKBACK;
|
1476 |
+
$spam_contents['author'] = mb_strcut( strip_tags( $author ), 0, 255 );
|
1477 |
+
$spam_contents['comment'] = mb_strcut( strip_tags( $comment ), 0, 255 );
|
1478 |
|
1479 |
$this->save_post_meta( $post_id, $remote_ip, $spam_contents );
|
1480 |
}
|
1484 |
|
1485 |
/**
|
1486 |
* 当該IPアドレスからの最終投稿日時取得
|
1487 |
+
*
|
1488 |
* @param string ip_address
|
1489 |
+
*
|
1490 |
* @return 最終投稿日時 Y-m-d H:i:s
|
1491 |
*/
|
1492 |
+
function get_last_spam_comment( $ip_address = null ) {
|
1493 |
global $wpdb;
|
1494 |
// IPアドレスがなければNULL返却
|
1495 |
+
if ( $ip_address == null ) {
|
1496 |
+
return null;
|
1497 |
}
|
1498 |
// 最終コメント情報取得
|
1499 |
$qry_str = "SELECT A.post_date, A.post_id, B.error_type, B.author as spam_author, B.comment as spam_comment FROM $this->table_name as A
|
1500 |
INNER JOIN $this->table_name as B ON A.ip_address = B.ip_address AND A.post_date = B.post_date
|
1501 |
+
WHERE A.ip_address = '" . htmlspecialchars( $ip_address ) . "' ORDER BY A.post_date DESC LIMIT 1 ";
|
1502 |
$results = $wpdb->get_results( $qry_str );
|
1503 |
if ( count( $results ) > 0 ) {
|
1504 |
return $results[0];
|
1505 |
}
|
1506 |
+
|
1507 |
+
return null;
|
1508 |
}
|
1509 |
|
1510 |
/**
|
1511 |
* スパムデータベース表示
|
1512 |
+
*
|
1513 |
* @param
|
|
|
1514 |
*/
|
1515 |
+
function spams_list() {
|
1516 |
global $wpdb;
|
1517 |
+
global $lower_spam_keep_day_cnt, $df_spam_keep_day_cnt;
|
1518 |
+
$_saved = false;
|
1519 |
|
1520 |
// ブラックIPリスト
|
1521 |
+
$block_ip_addresses_str = get_option( 'tsa_block_ip_addresses', '' );
|
1522 |
+
$block_ip_addresses = str_replace( "\n", ",", $block_ip_addresses_str );
|
1523 |
+
$ip_list = explode( ",", $block_ip_addresses );
|
1524 |
|
1525 |
+
$act = ( isset( $_POST['act'] ) ? esc_attr( $_POST['act'] ) : null );
|
1526 |
|
1527 |
if ( isset( $_POST['tsa_nonce'] ) ) {
|
1528 |
check_admin_referer( 'tsa_action', 'tsa_nonce' );
|
1530 |
// スパム情報から 特定IPアドレス削除
|
1531 |
if ( $act == "remove_ip" ) {
|
1532 |
$remove_ip_address = @htmlspecialchars( $_POST['ip_address'] );
|
1533 |
+
if ( ! isset( $remove_ip_address ) || strlen( $remove_ip_address ) == 0 ) {
|
1534 |
// N/A
|
1535 |
} else {
|
1536 |
// スパムデータベースから特定IP情報削除
|
1537 |
$wpdb->query(
|
1538 |
+
"DELETE FROM " . $this->table_name . " WHERE ip_address = '" . $remove_ip_address . "' "
|
1539 |
);
|
1540 |
+
$_saved = true;
|
1541 |
+
$message = sprintf( __( "スパムデータから %s のデータを削除しました。", self::DOMAIN ), $remove_ip_address );
|
1542 |
}
|
1543 |
} elseif ( $act == "add_ip" ) {
|
1544 |
$add_ip_address = @htmlspecialchars( $_POST['ip_address'] );
|
1546 |
// N/A
|
1547 |
} else {
|
1548 |
// 対象IPアドレスに一つ追加
|
1549 |
+
$dup_flg = false;
|
1550 |
foreach ( $ip_list as $ip ) {
|
1551 |
+
if ( $ip == trim( $add_ip_address ) ) {
|
1552 |
+
$_saved = true;
|
1553 |
+
$message = sprintf( __( "%s はすでに設定されています。", self::DOMAIN ), $add_ip_address );
|
1554 |
+
$dup_flg = true;
|
1555 |
break;
|
1556 |
}
|
1557 |
}
|
1558 |
+
if ( $dup_flg == false ) {
|
1559 |
+
$added_block_ip_addresses_str = $block_ip_addresses_str . "\n" . $add_ip_address;
|
1560 |
+
update_option( "tsa_block_ip_addresses", $added_block_ip_addresses_str );
|
1561 |
+
$_saved = true;
|
1562 |
+
$message = sprintf( __( "%s を追加設定しました。", self::DOMAIN ), $add_ip_address );
|
1563 |
}
|
1564 |
}
|
1565 |
} elseif ( $act == "truncate" ) {
|
1566 |
// スパムデータテーブルのtruncateを行う
|
1567 |
$result = $wpdb->query(
|
1568 |
+
"TRUNCATE TABLE " . $this->table_name );
|
1569 |
+
if ( $result == true ) {
|
1570 |
+
$_saved = true;
|
1571 |
+
$message = __( "スパムデータをすべて削除しました。", self::DOMAIN );
|
1572 |
} else {
|
1573 |
+
$_saved = true;
|
1574 |
+
$message = __( "スパムデータテーブルへ削除処理を実行しましたが、エラーが発生し処理が完了しませんでした。", self::DOMAIN );
|
1575 |
}
|
1576 |
}
|
1577 |
}
|
1578 |
+
// 日数
|
1579 |
+
$gdays = get_option( 'tsa_spam_keep_day_count', $df_spam_keep_day_cnt );
|
1580 |
+
// wp_tsa_spam の ip_address カラムに存在するIP_ADDRESS投稿は無視するか
|
1581 |
+
$results = $wpdb->get_results(
|
1582 |
+
"SELECT D.cnt as cnt,E.ip_address as ip_address, D.ppd as post_date, E.error_type as error_type, E.author as author, E.comment as comment FROM
|
1583 |
+
((select count(ip_address) as cnt, ip_address, max(post_date) as ppd, error_type, author, comment from $this->table_name
|
1584 |
+
WHERE post_date >= '" . gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gdays ) . "'
|
1585 |
+
GROUP BY ip_address) as D INNER JOIN $this->table_name as E ON D.ip_address = E.ip_address AND D.ppd = E.post_date)
|
1586 |
+
ORDER BY post_date DESC"
|
1587 |
+
);
|
1588 |
?>
|
1589 |
+
<div class="wrap">
|
1590 |
+
<?php
|
1591 |
+
if ( get_option( 'tsa_spam_data_save' ) == '1' ) {
|
1592 |
+
if ( $gdays < $lower_spam_keep_day_cnt ) {
|
1593 |
+
$gdays = $lower_spam_keep_day_cnt;
|
1594 |
+
}
|
1595 |
+
// 表カラー
|
1596 |
+
$unique_color = "#114477";
|
1597 |
+
$web_color = "#3377B6";
|
1598 |
+
?>
|
1599 |
+
<h2><?php _e( "Throws SPAM Away スパムデータ", self::DOMAIN ); ?></h2>
|
1600 |
+
<h3><?php echo sprintf( __( "スパム投稿%d日間の推移", self::DOMAIN ), $gdays ); ?></h3>
|
1601 |
+
<?php if ( $_saved ) { ?>
|
1602 |
+
<div class="updated" style="padding: 10px; width: 50%;"
|
1603 |
+
id="message"><?php esc_attr_e( $message ); ?></div>
|
1604 |
+
<?php } ?>
|
1605 |
+
<div style="background-color: #efefef;">
|
1606 |
+
<table style="width: 100%; border: none;">
|
1607 |
+
<tr>
|
1608 |
+
<?php
|
1609 |
+
$total_qry = "
|
1610 |
SELECT count(ppd) as pageview, ppd
|
1611 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as A
|
1612 |
+
GROUP BY ppd HAVING ppd >= '" . gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gdays ) . "'
|
1613 |
ORDER BY pageview DESC
|
1614 |
LIMIT 1
|
1615 |
";
|
1616 |
+
$qry = $wpdb->get_row( $total_qry );
|
1617 |
+
$maxxday = 0;
|
1618 |
+
if ( $qry ) {
|
1619 |
+
$maxxday = $qry->pageview;
|
1620 |
|
1621 |
+
$total_vis = "
|
1622 |
SELECT count(distinct ip_address) as vis, ppd
|
1623 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as B
|
1624 |
GROUP BY ppd HAVING ppd >= '" . gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gdays ) . "'
|
1625 |
ORDER BY vis DESC
|
1626 |
LIMIT 1
|
1627 |
";
|
1628 |
+
$qry_vis = $wpdb->get_row( $total_vis );
|
1629 |
+
$maxxday += $qry_vis->vis;
|
1630 |
+
}
|
1631 |
+
|
1632 |
+
if ( $maxxday == 0 ) {
|
1633 |
+
$maxxday = 1;
|
1634 |
+
}
|
1635 |
+
|
1636 |
+
// Y
|
1637 |
+
$gd = ( 100 / $gdays ) . '%';
|
1638 |
+
for ( $gg = $gdays - 1; $gg >= 0; $gg -- ) {
|
1639 |
+
// TOTAL SPAM COUNT
|
1640 |
+
$visitor_qry = "
|
1641 |
SELECT count(DISTINCT ip_address) AS total
|
1642 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as B
|
1643 |
+
WHERE ppd = '" . gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gg ) . "'
|
1644 |
";
|
1645 |
+
$qry_visitors = $wpdb->get_row( $visitor_qry );
|
1646 |
+
$px_visitors = round( $qry_visitors->total * 100 / $maxxday );
|
1647 |
+
// TOTAL
|
1648 |
+
$pageview_qry = "
|
1649 |
SELECT count(ppd) as total
|
1650 |
FROM (select ip_address, SUBSTRING(post_date,1,10) as ppd from $this->table_name) as C
|
1651 |
+
WHERE ppd = '" . gmdate( 'Y-m-d', current_time( 'timestamp' ) - 86400 * $gg ) . "'
|
1652 |
";
|
1653 |
+
$qry_pageviews = $wpdb->get_row( $pageview_qry );
|
1654 |
+
$px_pageviews = round( $qry_pageviews->total * 100 / $maxxday );
|
1655 |
+
$px_white = 100 - $px_pageviews - $px_visitors;
|
1656 |
+
if ( $px_white < 0 ) {
|
1657 |
+
$px_white = 0;
|
1658 |
+
}
|
1659 |
+
|
1660 |
+
print "<td width='".$gd."'><div style='float:left;width:100%;font-family:Helvetica;font-size:7pt;text-align:center;border-right:1px solid white;color:black;'>
|
1661 |
+
<div style='background:#ffffff;width:100%;height:" . $px_white . "px;'></div>
|
1662 |
+
<div style='background:$unique_color;width:100%;height:" . $px_visitors . "px;' title='" . $qry_visitors->total . " ip_addresses'></div>
|
1663 |
+
<div style='background:$web_color;width:100%;height:" . $px_pageviews . "px;' title='" . $qry_pageviews->total . " spam comments'></div>
|
1664 |
<div style='background:gray;width:100%;height:1px;'></div>
|
1665 |
+
<br />" . gmdate( 'd', current_time( 'timestamp' ) - 86400 * $gg ) . '<br />' . gmdate( 'M', current_time( 'timestamp' ) - 86400 * $gg ) . "
|
1666 |
+
<div style='background:;width:100%;height:2.2em;'>" . $qry_visitors->total . "<br />" . $qry_pageviews->total . "</div>
|
1667 |
<br clear=\"all\" /></div>
|
1668 |
</td>\n";
|
1669 |
+
} ?>
|
1670 |
+
</tr>
|
1671 |
+
</table>
|
1672 |
+
</div>
|
1673 |
+
<?php _e( " ※ 数値は<上段>がSPAM投稿したユニークIPアドレス数、 <下段>が破棄したスパム投稿数", self::DOMAIN ); ?>
|
1674 |
+
<br>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1675 |
<h4>
|
1676 |
+
<?php echo sprintf( __( "過去%d日間に無視投稿されたIPアドレス", self::DOMAIN ), $gdays ); ?>
|
1677 |
+
</h4>
|
1678 |
+
<p>※IPアドレスをクリックすると特定のホストが存在するか確認し存在する場合は表示されます。</p>
|
1679 |
+
<p>「スパムデータから削除する」ボタンを押しますと該当IPアドレスのスパム投稿データが削除されます。テストしたあとの削除などに使用してください。</p>
|
1680 |
+
<?php if ( count( $results ) > 0 ) {
|
1681 |
+
$p_url = WP_PLUGIN_URL . '/' . str_replace( basename( __FILE__ ), '', plugin_basename( __FILE__ ) );
|
1682 |
+
wp_enqueue_script( 'jquery.tablesorter', $p_url . 'js/jquery.tablesorter.min.js', array( 'jquery' ), false );
|
1683 |
+
wp_enqueue_style( 'jquery.tablesorter', $p_url . 'images/style.css' );
|
1684 |
+
wp_enqueue_style( 'thorows-spam-away-styles', $p_url . 'css/tsa_data_styles.css' );
|
1685 |
+
?>
|
1686 |
+
<script type="text/JavaScript">
|
1687 |
+
<!--
|
1688 |
+
jQuery(function () {
|
1689 |
+
jQuery('#spam_list').tablesorter({
|
1690 |
+
widgets: ['zebra'],
|
1691 |
+
headers: {
|
1692 |
+
0: {id: "ipAddress"},
|
1693 |
+
1: {sorter: "digit"},
|
1694 |
+
2: {sorter: "shortDate"},
|
1695 |
+
3: {sorter: false}
|
1696 |
+
}
|
1697 |
+
});
|
1698 |
+
});
|
1699 |
+
|
1700 |
+
function removeIpAddressOnData(ipAddressStr) {
|
1701 |
+
if (confirm('[' + ipAddressStr + '] <?php _e( "をスパムデータベースから削除します。よろしいですか?この操作は取り消せません", self::DOMAIN ); ?>')) {
|
1702 |
+
jQuery('#remove_ip_address').val(ipAddressStr);
|
1703 |
+
jQuery('#remove').submit();
|
1704 |
+
} else {
|
1705 |
+
return false;
|
1706 |
+
}
|
1707 |
+
}
|
1708 |
+
|
1709 |
+
function addIpAddressOnData(ipAddressStr) {
|
1710 |
+
if (confirm('[' + ipAddressStr + '] <?php _e( "を無視対象に追加します。よろしいですか?削除は設定から行ってください", self::DOMAIN ); ?>')) {
|
1711 |
+
jQuery('#add_ip_address').val(ipAddressStr);
|
1712 |
+
jQuery('#adding').submit();
|
1713 |
+
} else {
|
1714 |
+
return false;
|
1715 |
+
}
|
1716 |
+
}
|
1717 |
+
|
1718 |
+
-->
|
1719 |
+
</script>
|
1720 |
+
<p><strong><?php _e( "投稿内容の判定", self::DOMAIN ); ?></strong></p>
|
1721 |
+
<?php _e( "※最新1件のコメント内容はIPアドレスまたはエラー判定のリンク先を参照してください。", self::DOMAIN ); ?>
|
1722 |
+
<div id="spam_list_container">
|
1723 |
+
<div id="spam_list_div">
|
1724 |
+
<table id="spam_list" class="tablesorter">
|
1725 |
+
<colgroup class="cols0"></colgroup>
|
1726 |
+
<colgroup class="cols1"></colgroup>
|
1727 |
+
<colgroup class="cols2"></colgroup>
|
1728 |
+
<colgroup class="cols3"></colgroup>
|
1729 |
+
<colgroup class="cols4"></colgroup>
|
1730 |
+
<thead>
|
1731 |
+
<tr>
|
1732 |
+
<th class="cols0"><?php _e( "IPアドレス", self::DOMAIN ); ?></th>
|
1733 |
+
<th class="cols1"><?php _e( "投稿数", self::DOMAIN ); ?></th>
|
1734 |
+
<th class="cols2"><?php _e( "最終投稿日時", self::DOMAIN ); ?></th>
|
1735 |
+
<th class="cols3"><?php _e( "スパムIP登録", self::DOMAIN ); ?></th>
|
1736 |
+
<th class="cols4"><?php _e( "エラー判定(最新)", self::DOMAIN ); ?></th>
|
1737 |
+
</tr>
|
1738 |
+
</thead>
|
1739 |
+
<tbody>
|
1740 |
+
<?php
|
1741 |
+
foreach ( $results as $item ) {
|
1742 |
+
$spam_ip = $item->ip_address;
|
1743 |
+
$spam_cnt = $item->cnt;
|
1744 |
+
$last_post_date = $item->post_date;
|
1745 |
+
$spam_error_type = $item->error_type;
|
1746 |
+
$spam_author = strip_tags( $item->author );
|
1747 |
+
$spam_comment = strip_tags( $item->comment );
|
1748 |
+
|
1749 |
+
// エラー変換
|
1750 |
+
$spam_error_type_str = $spam_error_type;
|
1751 |
+
switch ( $spam_error_type ) {
|
1752 |
+
case NOT_JAPANESE:
|
1753 |
+
$spam_error_type_str = __( "日本語以外", self::DOMAIN );
|
1754 |
+
break;
|
1755 |
+
case MUST_WORD:
|
1756 |
+
$spam_error_type_str = __( "必須キーワード無し", self::DOMAIN );
|
1757 |
+
break;
|
1758 |
+
case NG_WORD:
|
1759 |
+
$spam_error_type_str = __( "NGキーワード混入", self::DOMAIN );
|
1760 |
+
break;
|
1761 |
+
case BLOCK_IP:
|
1762 |
+
$spam_error_type_str = __( "ブロック対象IPアドレス", self::DOMAIN );
|
1763 |
+
break;
|
1764 |
+
case SPAM_BLACKLIST:
|
1765 |
+
$spam_error_type_str = __( "スパム拒否リスト", self::DOMAIN );
|
1766 |
+
break;
|
1767 |
+
case SPAM_TRACKBACK:
|
1768 |
+
$spam_error_type_str = __( "トラックバックスパム", self::DOMAIN );
|
1769 |
+
break;
|
1770 |
+
case URL_COUNT_OVER:
|
1771 |
+
$spam_error_type_str = __( "URL文字列混入数オーバー", self::DOMAIN );
|
1772 |
+
break;
|
1773 |
+
case SPAM_LIMIT_OVER:
|
1774 |
+
$spam_error_type_str = __( "一定時間スパム判定エラー", self::DOMAIN );
|
1775 |
+
break;
|
1776 |
+
case DUMMY_FIELD:
|
1777 |
+
$spam_error_type_str = __( "ダミー項目エラー", self::DOMAIN );
|
1778 |
+
break;
|
1779 |
+
case NOT_IN_WHITELIST_IP:
|
1780 |
+
$spam_error_type_str = __( "許可リスト許可IP以外", self::DOMAIN );
|
1781 |
+
break;
|
1782 |
+
}
|
1783 |
+
?>
|
1784 |
+
<tr>
|
1785 |
+
<td>
|
1786 |
+
<b><a href="javascript:void(0);"
|
1787 |
+
onclick="window.open('<?php echo esc_attr( $p_url ); ?>hostbyip.php?ip=<?php esc_attr_e( $spam_ip ); ?>', 'hostbyip', 'width=350,height=500,scrollbars=no,location=no,menubar=no,toolbar=no,directories=no,status=no');"><?php esc_attr_e( $spam_ip ); ?>
|
1788 |
+
</a></b><br clear="all">
|
1789 |
+
<input type="button"
|
1790 |
+
onclick="javascript:removeIpAddressOnData('<?php esc_attr_e( $spam_ip ); ?>');"
|
1791 |
+
value="<?php _e( "スパムデータから削除する", self::DOMAIN ); ?>">
|
1792 |
+
</td>
|
1793 |
+
<td><?php esc_attr_e( $spam_cnt ); ?>回</td>
|
1794 |
+
<td><?php esc_attr_e( $last_post_date ); ?></td>
|
1795 |
+
<td>
|
1796 |
+
<?php // if ( ! in_array( $spam_ip, $ip_list ) ) { ?>
|
1797 |
+
<input type="button"
|
1798 |
+
onclick="javascript:addIpAddressOnData('<?php esc_attr_e( $spam_ip ); ?>');"
|
1799 |
+
value="<?php _e( "ブロック対象IPアドレス追加", self::DOMAIN ); ?>[<?php esc_attr_e( $spam_ip ); ?>]">
|
1800 |
+
<?php /*} else { ?>
|
|
|
1801 |
ブロック対象IP
|
1802 |
<?php } */ ?>
|
1803 |
+
</td>
|
1804 |
+
<td>
|
1805 |
+
<a href="javascript:void(0);"
|
1806 |
+
onclick="window.open('<?php echo esc_attr( $p_url ); ?>hostbyip.php?ip=<?php esc_attr_e( $spam_ip ); ?>', 'hostbyip', 'width=350,height=500,scrollbars=no,location=no,menubar=no,toolbar=no,directories=no,status=no');"><?php esc_attr_e( $spam_error_type_str ); ?>
|
1807 |
+
</a>
|
1808 |
+
</td>
|
1809 |
+
</tr>
|
1810 |
+
<?php
|
1811 |
+
}
|
1812 |
+
?>
|
1813 |
+
</tbody>
|
1814 |
+
</table>
|
1815 |
+
</div>
|
1816 |
+
</div>
|
1817 |
+
<?php } ?>
|
1818 |
+
<?php } else { ?>
|
1819 |
+
<p><?php _e( 'スパムデータベースを使用するにはThrows SPAM Awayのメニュー「設定」から<br>「スパムコメント投稿情報を保存しますか?」項目を<strong>「スパムコメント情報を保存する」</strong>に設定してください', self::DOMAIN ); ?></p>
|
1820 |
+
<?php } ?>
|
1821 |
+
<form method="post" id="remove">
|
1822 |
+
<input type="hidden" name="ip_address" id="remove_ip_address" value="">
|
1823 |
+
<input type="hidden" name="act" value="remove_ip">
|
1824 |
+
<?php wp_nonce_field( 'tsa_action', 'tsa_nonce' ) ?>
|
1825 |
+
</form>
|
1826 |
+
<form method="post" id="adding">
|
1827 |
+
<input type="hidden" name="ip_address" id="add_ip_address" value="">
|
1828 |
+
<input type="hidden" name="act" value="add_ip">
|
1829 |
+
<?php wp_nonce_field( 'tsa_action', 'tsa_nonce' ) ?>
|
1830 |
+
</form>
|
1831 |
+
<p>スパム投稿IPアドレスを参考にアクセス禁止対策を行なってください。</p>
|
1832 |
+
<form method="post" id="adding">
|
1833 |
+
<input type="hidden" name="act" value="truncate">
|
1834 |
+
<?php
|
1835 |
+
$other_attributes = array( 'onclick' => "return confirm('" . __( 'すべてのスパムデータが削除されます。よろしいですか?', self::DOMAIN ) . "');" );
|
1836 |
+
submit_button( __( 'すべてのデータを削除する', self::DOMAIN ), 'delete', 'wpdocs-save-settings', true, $other_attributes );
|
1837 |
+
?>
|
1838 |
+
<?php wp_nonce_field( 'tsa_action', 'tsa_nonce' ) ?>
|
1839 |
+
</form>
|
1840 |
+
</div>
|
1841 |
+
<br clear="all">
|
1842 |
+
<?php
|
|
|
1843 |
}
|
1844 |
|
1845 |
/**
|
1846 |
+
* おすすめ設定ページ
|
1847 |
*/
|
1848 |
function recommend_setting() {
|
1849 |
+
// global $wpdb;
|
1850 |
?>
|
1851 |
+
制作中
|
1852 |
+
<?php
|
1853 |
}
|
1854 |
|
1855 |
}
|
throws_spam_away.php
CHANGED
@@ -4,11 +4,13 @@
|
|
4 |
Plugin URI: https://gti.co.jp/throws-spam-away/
|
5 |
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
-
Version:
|
8 |
Author URI: https://gti.co.jp/
|
9 |
License: GPL2
|
|
|
|
|
10 |
*/
|
11 |
-
/* Copyright
|
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
|
@@ -29,11 +31,15 @@ require_once 'throws_spam_away.class.php';
|
|
29 |
* 設定値一覧
|
30 |
* デフォルト設定
|
31 |
*/
|
|
|
32 |
|
|
|
|
|
|
|
33 |
$tsa_spam_tbl_name = 'tsa_spam';
|
34 |
|
35 |
// Throws SPAM Awayバージョン
|
36 |
-
$tsa_version = '
|
37 |
// スパムデータベースバージョン
|
38 |
$tsa_db_version = 2.6; // 2.6からデータベース変更 [error_type]追加
|
39 |
|
@@ -42,55 +48,55 @@ $tsa_db_version = 2.6; // 2.6からデータベース変更 [error_type]追加
|
|
42 |
* 設定値変更 2.6.2から
|
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 |
-
|
74 |
-
$
|
75 |
|
76 |
-
|
77 |
-
$
|
78 |
|
79 |
-
|
80 |
|
81 |
-
|
82 |
-
$
|
83 |
|
84 |
-
|
85 |
-
$
|
86 |
|
87 |
/** トラックバックへの対応設定 */
|
88 |
|
89 |
-
|
90 |
-
$
|
91 |
|
92 |
-
|
93 |
-
$
|
94 |
|
95 |
/** 投稿IPアドレスによる制御設定 */
|
96 |
/** ver 2.6.5から */
|
@@ -102,47 +108,47 @@ $default_tb_url_flg = '1';
|
|
102 |
|
103 |
//$default_spam_champuru_hosts = array("bsb.spamlookup.net");
|
104 |
|
105 |
-
|
106 |
-
$
|
107 |
|
108 |
-
|
109 |
-
$
|
110 |
|
111 |
/** /2.6.5 */
|
112 |
|
113 |
-
|
114 |
-
$
|
115 |
|
116 |
-
|
117 |
-
$
|
118 |
|
119 |
-
|
120 |
-
|
121 |
-
$
|
122 |
/** /ver.2.8 */
|
123 |
|
124 |
-
|
125 |
|
126 |
-
|
127 |
-
$
|
128 |
|
129 |
-
|
130 |
-
$
|
131 |
|
132 |
-
|
133 |
-
$
|
|
|
134 |
|
135 |
-
|
136 |
-
$
|
137 |
-
|
138 |
-
// ○分以内に○回スパムとなったら○分間そのIPからのコメントははじくかの設定
|
139 |
-
$default_spam_limit_flg = 0; // 1:する Other:しない ※スパム情報保存がデフォルトではないのでこちらも基本はしない方向です。
|
140 |
-
// ※スパム情報保存していないと機能しません。
|
141 |
-
$default_spam_limit_minutes = 10; // 10分以内に・・・
|
142 |
-
$default_spam_limit_count = 2; // 2回までは許そうか。
|
143 |
-
$default_spam_limit_over_interval = 10; // だがそれを超えたら(デフォルト3回目以降)10分はOKコメントでもスパム扱いするんでよろしく!
|
144 |
-
$default_spam_limit_over_interval_error_msg = ''; // そしてその際のエラーメッセージは・・・
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
|
147 |
|
148 |
/** オプションキー */
|
@@ -171,36 +177,41 @@ $default_spam_limit_over_interval_error_msg = ''; // そしてその際のエ
|
|
171 |
// [tsa_block_ip_addresses] 文字列型
|
172 |
// ブロック対象IPアドレスからの投稿時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
173 |
// [tsa_block_ip_address_error_message] 文字列型
|
174 |
-
//
|
175 |
// [tsa_only_whitelist_ip_flg] 1:する その他:しない
|
176 |
// URL(単純に'http'文字列のチェックのみ)文字列数を制限するか [tsa_url_count_on_flg] 1:する その他:しない
|
177 |
// URL(単純に'http'文字列のチェックのみ)文字列の許容数 [tsa_ok_url_count] 数値型
|
178 |
// URL(単純に'http'文字列のチェックのみ)文字列許容数オーバー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
179 |
// [tsa_url_count_over_error_message] 文字列型
|
180 |
|
181 |
-
//
|
182 |
-
//
|
183 |
|
184 |
-
|
185 |
$newThrowsSpamAway = new ThrowsSpamAway;
|
186 |
-
|
187 |
add_filter( 'preprocess_comment', array( &$newThrowsSpamAway, 'trackback_spam_away' ), 1, 1 );
|
188 |
-
|
189 |
-
$dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $
|
190 |
if ( '1' == $dummy_param_field_flg ) {
|
191 |
-
|
192 |
-
|
193 |
}
|
194 |
-
|
195 |
-
|
196 |
-
$comment_disp_point
|
197 |
-
$comment_form_action_point = get_option( 'tsa_caution_msg_point', $
|
198 |
-
|
199 |
if ( '2' == $comment_form_action_point ) {
|
200 |
-
|
|
|
|
|
|
|
|
|
|
|
201 |
}
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
// // コメントチェックフィルター for bbPress
|
206 |
// add_action( 'bbp_new_forum_pre_insert', array( &$newThrowsSpamAway, 'comment_post' ), 1 );
|
4 |
Plugin URI: https://gti.co.jp/throws-spam-away/
|
5 |
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
+
Version: 3.3.2
|
8 |
Author URI: https://gti.co.jp/
|
9 |
License: GPL2
|
10 |
+
Text Domain: throws-spam-away
|
11 |
+
Domain Path: /languages
|
12 |
*/
|
13 |
+
/* Copyright 2021 Takeshi Satoh (https://gti.co.jp/)
|
14 |
|
15 |
This program is free software; you can redistribute it and/or modify
|
16 |
it under the terms of the GNU General Public License, version 2, as
|
31 |
* 設定値一覧
|
32 |
* デフォルト設定
|
33 |
*/
|
34 |
+
$tsa_domain = 'throws-spam-away';
|
35 |
|
36 |
+
/**
|
37 |
+
* Throws SPAM Away で利用するテーブル名
|
38 |
+
*/
|
39 |
$tsa_spam_tbl_name = 'tsa_spam';
|
40 |
|
41 |
// Throws SPAM Awayバージョン
|
42 |
+
$tsa_version = '3.3.2';
|
43 |
// スパムデータベースバージョン
|
44 |
$tsa_db_version = 2.6; // 2.6からデータベース変更 [error_type]追加
|
45 |
|
48 |
* 設定値変更 2.6.2から
|
49 |
*/
|
50 |
|
51 |
+
/** ダミー項目でのスパム判定をするか */
|
52 |
+
$df_dummy_param_field_flg = '1'; // 1: する 2:しない
|
53 |
|
54 |
+
/** 日本語が存在しない場合無視対象とするか */
|
55 |
+
$df_on_flg = 1; // 1:する
|
56 |
|
57 |
+
/** タイトルの文字列はカウントから排除するか since 2.6.4 */
|
58 |
+
$df_without_title_str = 1; // 1:する
|
59 |
|
60 |
+
/** 日本語文字最小含有数 */
|
61 |
+
$df_japanese_string_min_cnt = 3;
|
62 |
|
63 |
+
/** 無視後、元画面に戻る時間 */
|
64 |
+
$df_back_second = 0;
|
65 |
|
66 |
+
/** コメント欄下に表示される注意文言(初期設定) */
|
67 |
+
$df_caution_msg = __( '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)', $tsa_domain );
|
68 |
|
69 |
+
/** コメント欄下に表示する位置(初期設定)1:コメント送信ボタンの上 2:コメント送信フォームの下 */
|
70 |
+
$df_caution_msg_pnt = '1'; //1:"comment_form", 2:"comment_form_after", 3:"comment_form_submit_field"
|
71 |
|
72 |
+
/** エラー時に表示されるエラー文言(初期設定) */
|
73 |
+
$df_err_msg = __( '日本語を規定文字数以上含まない記事は投稿できませんよ。', $tsa_domain );
|
74 |
|
75 |
+
/***** URL文字列除外 設定 ****/
|
76 |
+
/** URL数の制限をするか */
|
77 |
+
$df_url_cnt_chk_flg = '1'; // 1:する
|
78 |
|
79 |
+
/** URL数の制限数 */
|
80 |
+
$df_ok_url_cnt = 3; // 3つまで許容
|
81 |
|
82 |
+
/** URL数制限値オーバーのエラー文言(初期設定) */
|
83 |
+
$df_url_cnt_over_err_msg = '';
|
84 |
|
85 |
+
/***** NGキーワード/必須キーワード 制御設定 ****/
|
86 |
|
87 |
+
/** キーワードNGエラー時に表示されるエラー文言(初期設定) */
|
88 |
+
$df_ng_key_err_msg = __( 'NGキーワードが含まれているため投稿できません。', $tsa_domain );
|
89 |
|
90 |
+
/** 必須キーワードが含まれないエラー文言(初期設定) */
|
91 |
+
$df_must_key_err_msg = __( '必須キーワードが含まれていないため投稿できません。', $tsa_domain );
|
92 |
|
93 |
/** トラックバックへの対応設定 */
|
94 |
|
95 |
+
/** トラックバックへの対応 1: する */
|
96 |
+
$df_tb_on_flg = '1';
|
97 |
|
98 |
+
/** トラックバック記事に当サイトURLがなければ無視するか */
|
99 |
+
$df_tb_url_flg = '1';
|
100 |
|
101 |
/** 投稿IPアドレスによる制御設定 */
|
102 |
/** ver 2.6.5から */
|
108 |
|
109 |
//$default_spam_champuru_hosts = array("bsb.spamlookup.net");
|
110 |
|
111 |
+
/** スパム拒否リスト by テキスト */
|
112 |
+
$df_spam_champuru_by_text = "";
|
113 |
|
114 |
+
/** すぱむちゃんぷるー利用初期設定 */
|
115 |
+
$df_spam_champuru_flg = '2'; // "2":しない
|
116 |
|
117 |
/** /2.6.5 */
|
118 |
|
119 |
+
/** WordPressのcommentsテーブルで「spam」判定されたことがあるIPアドレスからの投稿を無視するか */
|
120 |
+
$df_ip_block_from_spam_chk_flg = '1'; // "1":する
|
121 |
|
122 |
+
/** ブロックIPアドレスからの投稿の場合に表示されるエラー文言(初期設定) */
|
123 |
+
$df_block_ip_address_err_msg = '';
|
124 |
|
125 |
+
/***** ver.2.8から ****/
|
126 |
+
/** 許可リスト以外無視するか */
|
127 |
+
$df_only_whitelist_ip_flg = '2'; // "2":しない
|
128 |
/** /ver.2.8 */
|
129 |
|
130 |
+
/***** スパムデータベース ****/
|
131 |
|
132 |
+
/** スパムデータベース保存するか "0":保存しない */
|
133 |
+
$df_spam_data_save = '0';
|
134 |
|
135 |
+
/** 期間が過ぎたデータを削除するか? "1":する */
|
136 |
+
$df_spam_data_delete_flg = '1';
|
137 |
|
138 |
+
/** スパムデータ保持期間(日) */
|
139 |
+
$df_spam_keep_day_cnt = 15;
|
140 |
+
/** 30 -> 15 */
|
141 |
|
142 |
+
/** 最低保存期間(日) */
|
143 |
+
$lower_spam_keep_day_cnt = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
|
145 |
+
/** ○分以内に○回スパムとなったら○分間そのIPからのコメントははじくかの設定 */
|
146 |
+
$df_spam_limit_flg = 0; // 1:する Other:しない ※スパム情報保存がデフォルトではないのでこちらも基本はしない方向です。
|
147 |
+
/** ※スパム情報保存していないと機能しません。 */
|
148 |
+
$df_spam_limit_minutes = 10; // 10分以内に・・・
|
149 |
+
$df_spam_limit_cnt = 2; // 2回までは許そうか。
|
150 |
+
$df_spam_limit_over_interval = 10; // だがそれを超えたら(デフォルト3回目以降)10分はOKコメントでもスパム扱いするんでよろしく!
|
151 |
+
$df_spam_limit_over_interval_err_msg = ''; // そしてその際のエラーメッセージは・・・
|
152 |
|
153 |
|
154 |
/** オプションキー */
|
177 |
// [tsa_block_ip_addresses] 文字列型
|
178 |
// ブロック対象IPアドレスからの投稿時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
179 |
// [tsa_block_ip_address_error_message] 文字列型
|
180 |
+
// 許可リスト登録IPアドレスのみ許可フラグ
|
181 |
// [tsa_only_whitelist_ip_flg] 1:する その他:しない
|
182 |
// URL(単純に'http'文字列のチェックのみ)文字列数を制限するか [tsa_url_count_on_flg] 1:する その他:しない
|
183 |
// URL(単純に'http'文字列のチェックのみ)文字列の許容数 [tsa_ok_url_count] 数値型
|
184 |
// URL(単純に'http'文字列のチェックのみ)文字列許容数オーバー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
185 |
// [tsa_url_count_over_error_message] 文字列型
|
186 |
|
187 |
+
// スパム拒否リスト [tsa_spam_champuru_hosts] 配列型
|
188 |
+
// スパム拒否リスト by テキスト [tsa_spam_chmapuru_by_text] 文字列型(カンマ区切り)
|
189 |
|
190 |
+
/************ プロセス ***********/
|
191 |
$newThrowsSpamAway = new ThrowsSpamAway;
|
192 |
+
/** トラックバックチェックフィルター */
|
193 |
add_filter( 'preprocess_comment', array( &$newThrowsSpamAway, 'trackback_spam_away' ), 1, 1 );
|
194 |
+
/** ダミーフィールド作成 */
|
195 |
+
$dummy_param_field_flg = get_option( 'tsa_dummy_param_field_flg', $df_dummy_param_field_flg );
|
196 |
if ( '1' == $dummy_param_field_flg ) {
|
197 |
+
add_action( 'wp_head', array( &$newThrowsSpamAway, 'tsa_scripts_init' ), 9997 );
|
198 |
+
add_action( "comment_form", array( &$newThrowsSpamAway, "comment_form_dummy_param_field" ), 9998 );
|
199 |
}
|
200 |
+
/***** 注意文言表示 ****/
|
201 |
+
/** コメントフォーム表示 */
|
202 |
+
$comment_disp_point = 'comment_form';
|
203 |
+
$comment_form_action_point = get_option( 'tsa_caution_msg_point', $df_caution_msg_pnt );
|
204 |
+
/** フォーム内かフォーム外か判断する */
|
205 |
if ( '2' == $comment_form_action_point ) {
|
206 |
+
$comment_disp_point = 'comment_form_after';
|
207 |
+
}
|
208 |
+
if ( '3' == $comment_form_action_point ) {
|
209 |
+
add_action( 'comment_form_submit_field', array( &$newThrowsSpamAway, 'comment_form_submit_field' ), 9999, 2 );
|
210 |
+
} else {
|
211 |
+
add_action( $comment_disp_point, array( &$newThrowsSpamAway, 'comment_form' ), 9999 );
|
212 |
}
|
213 |
+
/** コメントチェックフィルター */
|
214 |
+
add_action( 'preprocess_comment', array( &$newThrowsSpamAway, 'comment_post' ), 2, 1 );
|
215 |
+
|
216 |
+
// // コメントチェックフィルター for bbPress
|
217 |
// add_action( 'bbp_new_forum_pre_insert', array( &$newThrowsSpamAway, 'comment_post' ), 1 );
|
throws_spam_away_comments.php
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* <p>ThrowsSpamAway</p> Comments Class
|
4 |
+
* WordPress's Plugin
|
5 |
+
* @author Takeshi Satoh@GTI Inc. 2022
|
6 |
+
* @version 3.3.2
|
7 |
+
*/
|
8 |
+
|
9 |
+
require_once "throws_spam_away.class.php";
|
10 |
+
|
11 |
+
function tsa_comment_main() {
|
12 |
+
global $wpdb;
|
13 |
+
$nonce = isset( $_POST['_wpnonce'] ) ? $_POST['_wpnonce'] : null;
|
14 |
+
$verified = $nonce && wp_verify_nonce( $nonce );
|
15 |
+
|
16 |
+
$_spam_delete_flg = false;
|
17 |
+
$_pend_delete_flg = false;
|
18 |
+
|
19 |
+
$param_c_all = ! isset( $_POST['c_all'] ) ? "" : $_POST['c_all'];
|
20 |
+
$param_tsa_kind = ! isset( $_POST['tsa_kind'] ) ? "" : $_POST['tsa_kind'];
|
21 |
+
$param_c_pend = ! isset( $_POST['c_pend'] ) ? "" : $_POST['c_pend'];
|
22 |
+
$param_pend = ! isset( $_POST['pend'] ) ? "" : $_POST['pend'];
|
23 |
+
|
24 |
+
|
25 |
+
if ( $verified ) {
|
26 |
+
if ( $param_c_all == 'a' && $param_tsa_kind == 's' ) {
|
27 |
+
$spam_comment_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = 'spam'" );
|
28 |
+
if ( $spam_comment_count == 0 ) {
|
29 |
+
} else {
|
30 |
+
$_spam_delete_flg = $wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_approved = 'spam'" );
|
31 |
+
}
|
32 |
+
}
|
33 |
+
if ( $param_c_pend == 'p' && $param_pend == 'p' ) {
|
34 |
+
$delete_count = $wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_approved = '0'" );
|
35 |
+
$_pend_delete_flg = $delete_count >= 0;
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
$c_all = $wpdb->get_var( "SELECT count( comment_ID ) FROM $wpdb->comments" );
|
40 |
+
$c_pend = $wpdb->get_var( "SELECT count( comment_ID ) FROM $wpdb->comments WHERE comment_approved = '0'" );
|
41 |
+
$s_count = $wpdb->get_var( "SELECT count( comment_ID ) FROM $wpdb->comments WHERE comment_approved = 'spam'" );
|
42 |
+
?>
|
43 |
+
<div class="wrap">
|
44 |
+
<h2>スパムコメント処理</h2>
|
45 |
+
<p>Akismet などのコメントフィルタによって spam マークがついているコメントを削除します。</p>
|
46 |
+
<?php
|
47 |
+
if ( $verified ) {
|
48 |
+
if ( $param_c_all == 'a' && $param_tsa_kind == 's' ) {
|
49 |
+
if ( $s_count == 0 ) {
|
50 |
+
echo "<p style='color:green'><strong>" . __( 'You have no comment spam.', ThrowsSpamAway::DOMAIN ) . "</strong></p>";
|
51 |
+
} else {
|
52 |
+
if ( $_spam_delete_flg != false ) {
|
53 |
+
echo "<p style='color:green'><strong>" . __( 'Spam comments have been deleted.', ThrowsSpamAway::DOMAIN ) . "</strong></p>";
|
54 |
+
} else {
|
55 |
+
echo "<p style='color:red'><strong>" . __( 'Something Went Wrong,Please Try Again!', ThrowsSpamAway::DOMAIN ) . "</strong></p>";
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
}
|
60 |
+
?>
|
61 |
+
<h4><?php _e( 'Number of all Comments', ThrowsSpamAway::DOMAIN ); ?> : <?php echo $c_all; ?></h4>
|
62 |
+
<h4><?php _e( 'Number of Spam Comments', ThrowsSpamAway::DOMAIN ); ?> : <?php echo $s_count; ?></h4>
|
63 |
+
|
64 |
+
<?php if ( $c_all > 0 ) { ?>
|
65 |
+
<form name="dce" method="post">
|
66 |
+
<?php wp_nonce_field(); ?>
|
67 |
+
<input type="hidden" name="c_all" value="a">
|
68 |
+
<label><input type="checkbox" name="tsa_kind"
|
69 |
+
value="s"> <?php _e( 'Delete all spam comments', ThrowsSpamAway::DOMAIN ); ?></label>
|
70 |
+
<p class="submit">
|
71 |
+
<input type="submit" name="Submit"
|
72 |
+
value="<?php _e( 'Delete all spam comments', ThrowsSpamAway::DOMAIN ); ?>"
|
73 |
+
onclick="return confirm('<?php _e( 'I will send. Is it OK?', ThrowsSpamAway::DOMAIN ); ?>');">
|
74 |
+
</p>
|
75 |
+
</form>
|
76 |
+
<?php
|
77 |
+
} else {
|
78 |
+
echo "<p><strong>" . __( 'All comments have been deleted.', ThrowsSpamAway::DOMAIN ) . "</strong></p>";
|
79 |
+
}
|
80 |
+
if ( $param_c_pend == 'p' && $param_pend == 'p' && $verified ) {
|
81 |
+
if ( $_pend_delete_flg === true ) {
|
82 |
+
echo "<p style='color:green'><strong> " . __( 'All Pending comments have been deleted.', ThrowsSpamAway::DOMAIN ) . "</strong></p>";
|
83 |
+
} else {
|
84 |
+
echo "<p style='color:red'><strong>" . __( 'Something Went Wrong,Please Try Again!', ThrowsSpamAway::DOMAIN ) . "</strong></p>";
|
85 |
+
}
|
86 |
+
} else {
|
87 |
+
?>
|
88 |
+
<h4><?php _e( 'Number of Pending Comments', ThrowsSpamAway::DOMAIN ); ?> : <?php echo $c_pend; ?></h4>
|
89 |
+
|
90 |
+
<?php if ( $c_pend > 0 ) { ?>
|
91 |
+
<form name="dcep" method="post"
|
92 |
+
action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI'] ); ?>">
|
93 |
+
<?php wp_nonce_field(); ?>
|
94 |
+
<input type="hidden" name="c_pend" value="p">
|
95 |
+
<label><input type="checkbox" name="pend"
|
96 |
+
value="p"> <?php _e( 'Delete all pending comments', ThrowsSpamAway::DOMAIN ); ?></label>
|
97 |
+
<p class="submit">
|
98 |
+
<input type="submit" name="Submit"
|
99 |
+
value="<?php _e( 'Delete all pending Comments', ThrowsSpamAway::DOMAIN ); ?>">
|
100 |
+
</p>
|
101 |
+
</form>
|
102 |
+
<?php
|
103 |
+
} else {
|
104 |
+
?>
|
105 |
+
<p>
|
106 |
+
<strong><?php _e( 'All pending comments have been deleted.', ThrowsSpamAway::DOMAIN ); ?></strong>
|
107 |
+
</p>
|
108 |
+
<?php
|
109 |
+
}
|
110 |
+
}
|
111 |
+
?>
|
112 |
+
<h4><?php _e( 'Warning : Once Comment Deleted can\'t be restored!', ThrowsSpamAway::DOMAIN ); ?></h4>
|
113 |
+
</div>
|
114 |
+
<?php
|
115 |
+
}
|
116 |
+
|
117 |
+
// プロセス
|
118 |
+
tsa_comment_main();
|