Version Description
- New feature: Add "Block badly-behaved bots and crawlers" in "Front-end target settings" section that validates the frequency of request.
- Improvement: Add a help link to the document for some sections.
- Improvement: Add descriptions on "Target actions" at "Login form" in "Back-end target settings" section.
- Improvement: Add new descriptions "passUA" and "blockUA" for result in Logs to identify the reason when "UA string and qualification" is applied.
- Improvement: AS Number can be handled in "UA string and qualification".
- Improvement: Make WP cron job for "Auto updating" reliably in multisite environment.
- Improvement: Better logout compatibility for redirecting to the previous page after login.
- Improvement: Validate the prefix of IP address CIDR to prevent unexpected fatal error.
- Improvement: Prevent opening a new window on clicking "Visit Site" in the admin bar menu for multi site by multi domain type.
- Bug fix: Fix the issue of failing to retrieve client IP address from Chrome Data Saver.
- Bug fix: Fix the issue of illegal redirection after "Save Changes" on "Settings" => "General Settings" page.
- Bug fix: Fix the issue of unexpected blocking against the requests to plugins/themes area when "Force to load WP core" is enabled on windows server.
- Bug fix: Fix the issue that "Search now" was not available when google map failed to load.
Download this release
Release Info
Developer | tokkonopapa |
Plugin | IP Geo Block |
Version | 3.0.10 |
Comparing to | |
See all releases |
Code changes from version 3.0.9 to 3.0.10
- README.txt +20 -2
- admin/class-ip-geo-block-admin.php +57 -47
- admin/css/admin-icons.css +1 -0
- admin/css/admin-icons.min.css +1 -1
- admin/css/admin.css +28 -1
- admin/css/admin.min.css +1 -1
- admin/css/cidr.min.css +1 -1
- admin/includes/class-admin-ajax.php +23 -17
- admin/includes/tab-accesslog.php +1 -1
- admin/includes/tab-settings.php +61 -17
- admin/js/admin.js +64 -18
- admin/js/admin.min.js +1 -1
- admin/js/authenticate.js +88 -70
- admin/js/authenticate.min.js +1 -1
- admin/js/cidr.min.js +1 -1
- admin/js/gmap.js +3 -0
- admin/js/gmap.min.js +1 -1
- admin/js/whois.js +1 -1
- classes/class-ip-geo-block-actv.php +63 -51
- classes/class-ip-geo-block-apis.php +20 -6
- classes/class-ip-geo-block-cron.php +26 -42
- classes/class-ip-geo-block-lkup.php +6 -13
- classes/class-ip-geo-block-logs.php +69 -69
- classes/class-ip-geo-block-opts.php +17 -6
- classes/class-ip-geo-block-util.php +72 -31
- classes/class-ip-geo-block.php +85 -77
- ip-geo-block.php +1 -1
- languages/ip-geo-block-ja.mo +0 -0
- languages/ip-geo-block-ja.po +326 -236
- languages/ip-geo-block.mo +0 -0
- languages/ip-geo-block.po +315 -232
- languages/ip-geo-block.pot +315 -232
- rewrite.php +4 -4
README.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link:
|
|
4 |
Tags: security, firewall, brute force, vulnerability, login, wp-admin, admin, ajax, xmlrpc, comment, pingback, trackback, spam, IP address, geo, geolocation, buddypress, bbPress
|
5 |
Requires at least: 3.7
|
6 |
Tested up to: 4.9.4
|
7 |
-
Stable tag: 3.0.
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
10 |
|
@@ -35,6 +35,9 @@ After several days of installation, you'll be supprised to find many malicious o
|
|
35 |
* **Prevent malicious down/uploading:**
|
36 |
A malicious request such as exposing `wp-config.php` or uploading malwares via vulnerable plugins/themes can be blocked.
|
37 |
|
|
|
|
|
|
|
38 |
* **Support of BuddyPress and bbPress:**
|
39 |
You can configure this plugin so that a registered user can login as a membership from anywhere, while a request such as a new user registration, lost password, creating a new topic and subscribing comment can be blocked by country. It is suitable for [BuddyPress](https://wordpress.org/plugins/buddypress/ "BuddyPress — WordPress Plugins") and [bbPress](https://wordpress.org/plugins/bbpress/ "WordPress › bbPress « WordPress Plugins") to help reducing spams.
|
40 |
|
@@ -353,8 +356,23 @@ Please refer to "[How can I fix permission troubles?](http://www.ipgeoblock.com/
|
|
353 |
|
354 |
== Changelog ==
|
355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
= 3.0.9 =
|
357 |
-
* **New
|
358 |
* **Improvement:** Avoid blocking by wp-zep when IP address is private or loopback network.
|
359 |
* **Improvement:** Chnage the priority of internal action hook for better compatibility with other plugins/themes.
|
360 |
* **Maintenance:** Change the priority order of local geolocation databases.
|
4 |
Tags: security, firewall, brute force, vulnerability, login, wp-admin, admin, ajax, xmlrpc, comment, pingback, trackback, spam, IP address, geo, geolocation, buddypress, bbPress
|
5 |
Requires at least: 3.7
|
6 |
Tested up to: 4.9.4
|
7 |
+
Stable tag: 3.0.10
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
10 |
|
35 |
* **Prevent malicious down/uploading:**
|
36 |
A malicious request such as exposing `wp-config.php` or uploading malwares via vulnerable plugins/themes can be blocked.
|
37 |
|
38 |
+
* **Block badly-behaved bots and crawlers:**
|
39 |
+
A simple logic may help to reduce the number of rogue bots and crawlers scraping your site.
|
40 |
+
|
41 |
* **Support of BuddyPress and bbPress:**
|
42 |
You can configure this plugin so that a registered user can login as a membership from anywhere, while a request such as a new user registration, lost password, creating a new topic and subscribing comment can be blocked by country. It is suitable for [BuddyPress](https://wordpress.org/plugins/buddypress/ "BuddyPress — WordPress Plugins") and [bbPress](https://wordpress.org/plugins/bbpress/ "WordPress › bbPress « WordPress Plugins") to help reducing spams.
|
43 |
|
356 |
|
357 |
== Changelog ==
|
358 |
|
359 |
+
= 3.0.10 =
|
360 |
+
* **New feature:** Add "Block badly-behaved bots and crawlers" in "Front-end target settings" section that validates the frequency of request.
|
361 |
+
* **Improvement:** Add a help link to the document for some sections.
|
362 |
+
* **Improvement:** Add descriptions on "Target actions" at "Login form" in "Back-end target settings" section.
|
363 |
+
* **Improvement:** Add new descriptions "passUA" and "blockUA" for result in Logs to identify the reason when "UA string and qualification" is applied.
|
364 |
+
* **Improvement:** AS Number can be handled in "UA string and qualification".
|
365 |
+
* **Improvement:** Make WP cron job for "Auto updating" reliably in multisite environment.
|
366 |
+
* **Improvement:** Better logout compatibility for redirecting to the previous page after login.
|
367 |
+
* **Improvement:** Validate the prefix of IP address CIDR to prevent unexpected fatal error.
|
368 |
+
* **Improvement:** Prevent opening a new window on clicking "Visit Site" in the admin bar menu for multi site by multi domain type.
|
369 |
+
* **Bug fix:** Fix the issue of failing to retrieve client IP address from Chrome Data Saver.
|
370 |
+
* **Bug fix:** Fix the issue of illegal redirection after "Save Changes" on "Settings" => "General Settings" page.
|
371 |
+
* **Bug fix:** Fix the issue of unexpected blocking against the requests to plugins/themes area when "Force to load WP core" is enabled on windows server.
|
372 |
+
* **Bug fix:** Fix the issue that "Search now" was not available when google map failed to load.
|
373 |
+
|
374 |
= 3.0.9 =
|
375 |
+
* **New feature:** Add CIDR calculator for IPv4 / IPv6.
|
376 |
* **Improvement:** Avoid blocking by wp-zep when IP address is private or loopback network.
|
377 |
* **Improvement:** Chnage the priority of internal action hook for better compatibility with other plugins/themes.
|
378 |
* **Maintenance:** Change the priority order of local geolocation databases.
|
admin/class-ip-geo-block-admin.php
CHANGED
@@ -55,25 +55,22 @@ class IP_Geo_Block_Admin {
|
|
55 |
*
|
56 |
*/
|
57 |
public function admin_init() {
|
58 |
-
require_once ABSPATH . 'wp-admin/includes/plugin.php'; // is_plugin_active_for_network() @since 3.0.0
|
59 |
-
|
60 |
// Add the options page and menu item.
|
61 |
add_action( 'admin_menu', array( $this, 'setup_admin_page' ) );
|
62 |
add_action( 'admin_post_ip_geo_block', array( $this, 'admin_ajax_callback' ) );
|
63 |
add_action( 'wp_ajax_ip_geo_block', array( $this, 'admin_ajax_callback' ) );
|
64 |
add_filter( 'wp_prepare_revision_for_js', array( $this, 'add_revision_nonce' ), 10, 3 );
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
add_action( 'network_admin_menu', array( $this, 'setup_admin_page' ) );
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
|
74 |
-
|
75 |
-
add_action( 'wpmu_new_blog',
|
76 |
-
add_action( 'delete_blog',
|
77 |
}
|
78 |
|
79 |
// loads a plugin’s translated strings.
|
@@ -106,7 +103,7 @@ class IP_Geo_Block_Admin {
|
|
106 |
*
|
107 |
*/
|
108 |
public function add_redirect_nonce( $location, $status ) {
|
109 |
-
return IP_Geo_Block_Util::rebuild_nonce( $location, $
|
110 |
}
|
111 |
|
112 |
/**
|
@@ -127,10 +124,15 @@ class IP_Geo_Block_Admin {
|
|
127 |
* Verify admin screen without action instead of validating nonce.
|
128 |
*
|
129 |
*/
|
130 |
-
public function
|
131 |
// the request that is intended to show the page without any action follows authentication of core.
|
132 |
-
if ( 'GET' === $_SERVER['REQUEST_METHOD'] && isset( $_GET['page'] )
|
|
|
|
|
|
|
|
|
133 |
$queries[] = $_GET['page'];
|
|
|
134 |
|
135 |
return $queries;
|
136 |
}
|
@@ -140,7 +142,7 @@ class IP_Geo_Block_Admin {
|
|
140 |
*
|
141 |
*/
|
142 |
public function create_blog( $blog_id, $user_id, $domain, $path, $site_id, $meta ) {
|
143 |
-
defined( 'IP_GEO_BLOCK_DEBUG' ) and IP_GEO_BLOCK_DEBUG and assert(
|
144 |
|
145 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-actv.php';
|
146 |
|
@@ -408,14 +410,13 @@ class IP_Geo_Block_Admin {
|
|
408 |
|
409 |
if ( $admin_menu ) {
|
410 |
// `settings-updated` would be added just after settings updated.
|
411 |
-
if ( ! empty( $_REQUEST['settings-updated'] ) && $this->is_network
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
);
|
419 |
exit;
|
420 |
}
|
421 |
|
@@ -437,6 +438,7 @@ class IP_Geo_Block_Admin {
|
|
437 |
'manage_network_options',
|
438 |
IP_Geo_Block::PLUGIN_NAME,
|
439 |
array( $this, 'display_plugin_admin_page' )
|
|
|
440 |
);
|
441 |
add_submenu_page(
|
442 |
IP_Geo_Block::PLUGIN_NAME,
|
@@ -454,7 +456,6 @@ class IP_Geo_Block_Admin {
|
|
454 |
IP_Geo_Block::PLUGIN_NAME . '&tab=5',
|
455 |
array( $this, 'display_plugin_admin_page' )
|
456 |
);
|
457 |
-
|
458 |
wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-icons',
|
459 |
plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
|
460 |
'css/admin-icons.min.css' : 'css/admin-icons.css', __FILE__
|
@@ -628,9 +629,9 @@ class IP_Geo_Block_Admin {
|
|
628 |
// TRUE if open ('o') or FALSE if close ('x')
|
629 |
$stat = empty( $cookie[ $tab ][ $index ] ) || 'x' !== $cookie[ $tab ][ $index ] || $index === $target;
|
630 |
|
631 |
-
echo "\n",
|
632 |
-
'<
|
633 |
-
'<
|
634 |
'</h3></legend>', "\n", '<div class="panel-body',
|
635 |
($stat ? ' ' . IP_Geo_Block::PLUGIN_NAME . '-border"' : '"'),
|
636 |
($stat || (4 === $tab && $index) ? '>' : ' style="display:none">'), "\n";
|
@@ -686,6 +687,8 @@ class IP_Geo_Block_Admin {
|
|
686 |
unset( $tabs[5] ); // Site List
|
687 |
}
|
688 |
} else {
|
|
|
|
|
689 |
$action = 'edit.php?action=' . IP_Geo_Block::PLUGIN_NAME;
|
690 |
|
691 |
if ( $settings['network_wide'] ) {
|
@@ -704,7 +707,7 @@ class IP_Geo_Block_Admin {
|
|
704 |
echo '<a href="?page=', IP_Geo_Block::PLUGIN_NAME, '&tab=', $key, '" class="nav-tab', ($tab === $key ? ' nav-tab-active' : ''), '">', $val, '</a>';
|
705 |
} ?>
|
706 |
</h2>
|
707 |
-
<p
|
708 |
<?php if ( 4 === $tab ) { /* Logs tab */ ?>
|
709 |
<input id="ip-geo-block-live-update" type="checkbox"<?php checked( isset( $cookie[4][1] ) && 'o' === $cookie[4][1] ); disabled( extension_loaded( 'pdo_sqlite' ), FALSE ); ?> /><label for="ip-geo-block-live-update">
|
710 |
<dfn title="<?php _e( 'Independent of “Statistics and Logs settings”, you can see all the requests validated by this plugin in almost real time.', 'ip-geo-block' ); ?>"><?php _e( 'Live update', 'ip-geo-block' ); ?></dfn>
|
@@ -788,7 +791,6 @@ class IP_Geo_Block_Admin {
|
|
788 |
}
|
789 |
|
790 |
switch ( $args['type'] ) {
|
791 |
-
|
792 |
case 'check-provider':
|
793 |
echo "\n<ul class=\"ip-geo-block-list\">\n";
|
794 |
foreach ( $args['providers'] as $key => $val ) {
|
@@ -819,7 +821,7 @@ class IP_Geo_Block_Admin {
|
|
819 |
<input type="checkbox" id="<?php echo $id, $sub_id, '_', $key; ?>" name="<?php echo $name, $sub_name, '[', $key, ']'; ?>" value="<?php echo $key; ?>"<?php
|
820 |
checked( is_array( $args['value'] ) ? ! empty( $args['value'][ $key ] ) : ( $key & $args['value'] ? TRUE : FALSE ) ); ?> />
|
821 |
<label for="<?php echo $id, $sub_id, '_', $key; ?>"><?php
|
822 |
-
if ( isset( $args['desc'][ $key ] ) )
|
823 |
echo '<dfn title="', $args['desc'][ $key ], '">', $val, '</dfn>';
|
824 |
else
|
825 |
echo $val;
|
@@ -875,8 +877,8 @@ class IP_Geo_Block_Admin {
|
|
875 |
break; // disabled @since 3.0
|
876 |
|
877 |
case 'textarea': ?>
|
878 |
-
<textarea class="regular-text code" id="<?php echo $id, $sub_id; ?>" name="<?php echo $name, $sub_name; ?>"<?php
|
879 |
-
disabled( ! empty( $args['disabled'] ), TRUE );
|
880 |
if ( isset( $args['placeholder'] ) ) echo ' placeholder="', esc_html( $args['placeholder'] ), '"'; ?>><?php
|
881 |
echo esc_html( $args['value'] ); ?></textarea>
|
882 |
<?php
|
@@ -915,8 +917,7 @@ class IP_Geo_Block_Admin {
|
|
915 |
|
916 |
// Integrate posted data into current settings because it can be a part of hole data
|
917 |
$input = array_replace_recursive(
|
918 |
-
$output = $this->preprocess_options( $output, $default ),
|
919 |
-
$input
|
920 |
);
|
921 |
|
922 |
// restore the 'signature' that might be transformed to avoid self blocking
|
@@ -1038,9 +1039,7 @@ class IP_Geo_Block_Admin {
|
|
1038 |
foreach ( $input[ $key ][ $sub ] as $k => $v ) {
|
1039 |
$output[ $key ][ $sub ] |= $v;
|
1040 |
}
|
1041 |
-
}
|
1042 |
-
|
1043 |
-
else {
|
1044 |
$output[ $key ][ $sub ] = ( is_int( $default[ $key ][ $sub ] ) ?
|
1045 |
(int)$input[ $key ][ $sub ] :
|
1046 |
IP_Geo_Block_Util::kses( trim( $input[ $key ][ $sub ] ), FALSE )
|
@@ -1085,8 +1084,8 @@ class IP_Geo_Block_Admin {
|
|
1085 |
}
|
1086 |
|
1087 |
// keep disabled checkboxes not in the form
|
1088 |
-
foreach ( array( 'target_pages', 'target_posts', 'target_cates', 'target_tags', 'simulate', 'dnslkup' ) as $key ) {
|
1089 |
-
$output['public'][ $key ] = array();
|
1090 |
}
|
1091 |
|
1092 |
// 3.0.4 AS number, 3.0.6 Auto updating of DB files, 3.0.8 Geolite2
|
@@ -1177,6 +1176,16 @@ class IP_Geo_Block_Admin {
|
|
1177 |
}
|
1178 |
}
|
1179 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1180 |
return $output;
|
1181 |
}
|
1182 |
|
@@ -1244,8 +1253,7 @@ class IP_Geo_Block_Admin {
|
|
1244 |
|
1245 |
// additional configuration
|
1246 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-opts.php';
|
1247 |
-
$file = IP_Geo_Block_Opts::setup_validation_timing( $options )
|
1248 |
-
if ( TRUE !== $file ) {
|
1249 |
$options['validation']['timing'] = 0;
|
1250 |
self::add_admin_notice( 'error', sprintf(
|
1251 |
__( 'Unable to write <code>%s</code>. Please check the permission.', 'ip-geo-block' ), '<code>' . $file . '</code>'
|
@@ -1274,14 +1282,14 @@ class IP_Geo_Block_Admin {
|
|
1274 |
// Go through the posted data and save the targetted options.
|
1275 |
foreach ( $options as $option ) {
|
1276 |
if ( isset( $_POST[ $option ] ) )
|
1277 |
-
$this->
|
1278 |
}
|
1279 |
|
1280 |
// Register a settings error to be displayed to the user
|
1281 |
self::add_admin_notice( 'updated', __( 'Settings saved.' ) );
|
1282 |
|
1283 |
// Redirect in order to back to the settings page.
|
1284 |
-
wp_redirect( esc_url_raw(
|
1285 |
add_query_arg(
|
1286 |
array( 'page' => IP_Geo_Block::PLUGIN_NAME ),
|
1287 |
$this->dashboard_url( ! empty( $_POST[ $option ]['network_wide'] ) )
|
@@ -1295,14 +1303,16 @@ class IP_Geo_Block_Admin {
|
|
1295 |
*
|
1296 |
* @note: This function triggers `validate_settings()` on register_setting() in wp-include/option.php.
|
1297 |
*/
|
1298 |
-
private function
|
1299 |
global $wpdb;
|
1300 |
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
|
1301 |
$ret = TRUE;
|
1302 |
|
1303 |
foreach ( $blog_ids as $id ) {
|
1304 |
switch_to_blog( $id );
|
1305 |
-
$
|
|
|
|
|
1306 |
restore_current_blog();
|
1307 |
}
|
1308 |
|
@@ -1442,8 +1452,8 @@ class IP_Geo_Block_Admin {
|
|
1442 |
}
|
1443 |
}
|
1444 |
|
1445 |
-
if ( $settings['network_wide']
|
1446 |
-
$this->
|
1447 |
else
|
1448 |
update_option( IP_Geo_Block::OPTION_NAME, $settings );
|
1449 |
|
55 |
*
|
56 |
*/
|
57 |
public function admin_init() {
|
|
|
|
|
58 |
// Add the options page and menu item.
|
59 |
add_action( 'admin_menu', array( $this, 'setup_admin_page' ) );
|
60 |
add_action( 'admin_post_ip_geo_block', array( $this, 'admin_ajax_callback' ) );
|
61 |
add_action( 'wp_ajax_ip_geo_block', array( $this, 'admin_ajax_callback' ) );
|
62 |
add_filter( 'wp_prepare_revision_for_js', array( $this, 'add_revision_nonce' ), 10, 3 );
|
63 |
|
64 |
+
if ( IP_Geo_Block_Util::is_user_logged_in() )
|
65 |
+
add_filter( IP_Geo_Block::PLUGIN_NAME . '-bypass-admins', array( $this, 'verify_request' ), 10, 2 );
|
|
|
66 |
|
67 |
+
if ( is_multisite() ) {
|
68 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php'; // is_plugin_active_for_network() @since 3.0.0
|
69 |
+
$this->is_network = is_plugin_active_for_network( IP_GEO_BLOCK_BASE );
|
70 |
|
71 |
+
add_action( 'network_admin_menu', array( $this, 'setup_admin_page' ) );
|
72 |
+
add_action( 'wpmu_new_blog', array( $this, 'create_blog' ), 10, 6 ); // on creating a new blog @since MU
|
73 |
+
add_action( 'delete_blog', array( $this, 'delete_blog' ), 10, 2 ); // on deleting an old blog @since 3.0.0
|
74 |
}
|
75 |
|
76 |
// loads a plugin’s translated strings.
|
103 |
*
|
104 |
*/
|
105 |
public function add_redirect_nonce( $location, $status ) {
|
106 |
+
return IP_Geo_Block_Util::rebuild_nonce( $location, FALSE === strpos( $location, wp_login_url() ) );
|
107 |
}
|
108 |
|
109 |
/**
|
124 |
* Verify admin screen without action instead of validating nonce.
|
125 |
*
|
126 |
*/
|
127 |
+
public function verify_request( $queries, $settings ) {
|
128 |
// the request that is intended to show the page without any action follows authentication of core.
|
129 |
+
if ( 'GET' === $_SERVER['REQUEST_METHOD'] && isset( $_GET['page'] ) ) {
|
130 |
+
foreach ( array( 'action', 'task') as $key ) {
|
131 |
+
if ( ! empty( $_GET[ $key ] ) )
|
132 |
+
return $queries;
|
133 |
+
}
|
134 |
$queries[] = $_GET['page'];
|
135 |
+
}
|
136 |
|
137 |
return $queries;
|
138 |
}
|
142 |
*
|
143 |
*/
|
144 |
public function create_blog( $blog_id, $user_id, $domain, $path, $site_id, $meta ) {
|
145 |
+
defined( 'IP_GEO_BLOCK_DEBUG' ) and IP_GEO_BLOCK_DEBUG and assert( is_main_site(), 'Not main blog.' );
|
146 |
|
147 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-actv.php';
|
148 |
|
410 |
|
411 |
if ( $admin_menu ) {
|
412 |
// `settings-updated` would be added just after settings updated.
|
413 |
+
if ( ! empty( $_REQUEST['settings-updated'] ) && $this->is_network &&
|
414 |
+
! empty( $_REQUEST['page'] ) && IP_Geo_Block::PLUGIN_NAME === $_REQUEST['page'] ) {
|
415 |
+
$this->update_multisite_settings( $settings );
|
416 |
+
wp_safe_redirect( esc_url_raw( add_query_arg(
|
417 |
+
array( 'page' => IP_Geo_Block::PLUGIN_NAME ),
|
418 |
+
$this->dashboard_url( TRUE )
|
419 |
+
) ) );
|
|
|
420 |
exit;
|
421 |
}
|
422 |
|
438 |
'manage_network_options',
|
439 |
IP_Geo_Block::PLUGIN_NAME,
|
440 |
array( $this, 'display_plugin_admin_page' )
|
441 |
+
//'dashicons-admin-site' // or 'data:image/svg+xml;base64...'
|
442 |
);
|
443 |
add_submenu_page(
|
444 |
IP_Geo_Block::PLUGIN_NAME,
|
456 |
IP_Geo_Block::PLUGIN_NAME . '&tab=5',
|
457 |
array( $this, 'display_plugin_admin_page' )
|
458 |
);
|
|
|
459 |
wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-icons',
|
460 |
plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
|
461 |
'css/admin-icons.min.css' : 'css/admin-icons.css', __FILE__
|
629 |
// TRUE if open ('o') or FALSE if close ('x')
|
630 |
$stat = empty( $cookie[ $tab ][ $index ] ) || 'x' !== $cookie[ $tab ][ $index ] || $index === $target;
|
631 |
|
632 |
+
echo "\n", '<fieldset id="', IP_Geo_Block::PLUGIN_NAME, '-section-', $index, '" class="', IP_Geo_Block::PLUGIN_NAME, '-field panel panel-default" data-section="', $index, '">', "\n",
|
633 |
+
'<legend class="panel-heading"><h3 class="', IP_Geo_Block::PLUGIN_NAME, ( $stat ? '-dropdown' : '-dropup' ), '">',
|
634 |
+
is_array( $section['title'] ) ? $section['title'][0] . '<span class="' . IP_Geo_Block::PLUGIN_NAME . '-help-link">[ ' . $section['title'][1] . ' ]</span>' : $section['title'],
|
635 |
'</h3></legend>', "\n", '<div class="panel-body',
|
636 |
($stat ? ' ' . IP_Geo_Block::PLUGIN_NAME . '-border"' : '"'),
|
637 |
($stat || (4 === $tab && $index) ? '>' : ' style="display:none">'), "\n";
|
687 |
unset( $tabs[5] ); // Site List
|
688 |
}
|
689 |
} else {
|
690 |
+
// `edit.php` is an action handler for Multisite administration panels.
|
691 |
+
// `edit.php` ==> do action `network_admin_edit_IP_GEO_BLOCK` ==> `validate_network_settings()`
|
692 |
$action = 'edit.php?action=' . IP_Geo_Block::PLUGIN_NAME;
|
693 |
|
694 |
if ( $settings['network_wide'] ) {
|
707 |
echo '<a href="?page=', IP_Geo_Block::PLUGIN_NAME, '&tab=', $key, '" class="nav-tab', ($tab === $key ? ' nav-tab-active' : ''), '">', $val, '</a>';
|
708 |
} ?>
|
709 |
</h2>
|
710 |
+
<p class="ip-geo-block-navi-link">[ <a id="ip-geo-block-toggle-sections" href="#!"><?php _e( 'Toggle all', 'ip-geo-block' ); ?></a> ]
|
711 |
<?php if ( 4 === $tab ) { /* Logs tab */ ?>
|
712 |
<input id="ip-geo-block-live-update" type="checkbox"<?php checked( isset( $cookie[4][1] ) && 'o' === $cookie[4][1] ); disabled( extension_loaded( 'pdo_sqlite' ), FALSE ); ?> /><label for="ip-geo-block-live-update">
|
713 |
<dfn title="<?php _e( 'Independent of “Statistics and Logs settings”, you can see all the requests validated by this plugin in almost real time.', 'ip-geo-block' ); ?>"><?php _e( 'Live update', 'ip-geo-block' ); ?></dfn>
|
791 |
}
|
792 |
|
793 |
switch ( $args['type'] ) {
|
|
|
794 |
case 'check-provider':
|
795 |
echo "\n<ul class=\"ip-geo-block-list\">\n";
|
796 |
foreach ( $args['providers'] as $key => $val ) {
|
821 |
<input type="checkbox" id="<?php echo $id, $sub_id, '_', $key; ?>" name="<?php echo $name, $sub_name, '[', $key, ']'; ?>" value="<?php echo $key; ?>"<?php
|
822 |
checked( is_array( $args['value'] ) ? ! empty( $args['value'][ $key ] ) : ( $key & $args['value'] ? TRUE : FALSE ) ); ?> />
|
823 |
<label for="<?php echo $id, $sub_id, '_', $key; ?>"><?php
|
824 |
+
if ( isset( $args['desc'][ $key ] ) )
|
825 |
echo '<dfn title="', $args['desc'][ $key ], '">', $val, '</dfn>';
|
826 |
else
|
827 |
echo $val;
|
877 |
break; // disabled @since 3.0
|
878 |
|
879 |
case 'textarea': ?>
|
880 |
+
<textarea class="regular-text code" id="<?php echo $id, $sub_id; ?>" name="<?php echo $name, $sub_name; ?>"<?php
|
881 |
+
disabled( ! empty( $args['disabled'] ), TRUE );
|
882 |
if ( isset( $args['placeholder'] ) ) echo ' placeholder="', esc_html( $args['placeholder'] ), '"'; ?>><?php
|
883 |
echo esc_html( $args['value'] ); ?></textarea>
|
884 |
<?php
|
917 |
|
918 |
// Integrate posted data into current settings because it can be a part of hole data
|
919 |
$input = array_replace_recursive(
|
920 |
+
$output = $this->preprocess_options( $output, $default ), $input
|
|
|
921 |
);
|
922 |
|
923 |
// restore the 'signature' that might be transformed to avoid self blocking
|
1039 |
foreach ( $input[ $key ][ $sub ] as $k => $v ) {
|
1040 |
$output[ $key ][ $sub ] |= $v;
|
1041 |
}
|
1042 |
+
} else {
|
|
|
|
|
1043 |
$output[ $key ][ $sub ] = ( is_int( $default[ $key ][ $sub ] ) ?
|
1044 |
(int)$input[ $key ][ $sub ] :
|
1045 |
IP_Geo_Block_Util::kses( trim( $input[ $key ][ $sub ] ), FALSE )
|
1084 |
}
|
1085 |
|
1086 |
// keep disabled checkboxes not in the form
|
1087 |
+
foreach ( array( 'target_pages', 'target_posts', 'target_cates', 'target_tags', 'simulate', 'dnslkup', 'behavior' ) as $key ) {
|
1088 |
+
$output['public'][ $key ] = is_array( $default['public'][ $key ] ) ? array() : FALSE;
|
1089 |
}
|
1090 |
|
1091 |
// 3.0.4 AS number, 3.0.6 Auto updating of DB files, 3.0.8 Geolite2
|
1176 |
}
|
1177 |
}
|
1178 |
|
1179 |
+
// cron event
|
1180 |
+
$key = wp_next_scheduled( IP_Geo_Block::CRON_NAME, array( FALSE ) );
|
1181 |
+
if ( $output['update']['auto'] && ! $key ) {
|
1182 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-cron.php';
|
1183 |
+
IP_Geo_Block_Cron::start_update_db( $output, FALSE );
|
1184 |
+
} else if ( ! $output['update']['auto'] && $key ){
|
1185 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-cron.php';
|
1186 |
+
IP_Geo_Block_Cron::stop_update_db();
|
1187 |
+
}
|
1188 |
+
|
1189 |
return $output;
|
1190 |
}
|
1191 |
|
1253 |
|
1254 |
// additional configuration
|
1255 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-opts.php';
|
1256 |
+
if ( TRUE !== ( $file = IP_Geo_Block_Opts::setup_validation_timing( $options ) ) ) {
|
|
|
1257 |
$options['validation']['timing'] = 0;
|
1258 |
self::add_admin_notice( 'error', sprintf(
|
1259 |
__( 'Unable to write <code>%s</code>. Please check the permission.', 'ip-geo-block' ), '<code>' . $file . '</code>'
|
1282 |
// Go through the posted data and save the targetted options.
|
1283 |
foreach ( $options as $option ) {
|
1284 |
if ( isset( $_POST[ $option ] ) )
|
1285 |
+
$this->update_multisite_settings( $_POST[ $option ] );
|
1286 |
}
|
1287 |
|
1288 |
// Register a settings error to be displayed to the user
|
1289 |
self::add_admin_notice( 'updated', __( 'Settings saved.' ) );
|
1290 |
|
1291 |
// Redirect in order to back to the settings page.
|
1292 |
+
wp_redirect( esc_url_raw(
|
1293 |
add_query_arg(
|
1294 |
array( 'page' => IP_Geo_Block::PLUGIN_NAME ),
|
1295 |
$this->dashboard_url( ! empty( $_POST[ $option ]['network_wide'] ) )
|
1303 |
*
|
1304 |
* @note: This function triggers `validate_settings()` on register_setting() in wp-include/option.php.
|
1305 |
*/
|
1306 |
+
private function update_multisite_settings( $settings ) {
|
1307 |
global $wpdb;
|
1308 |
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
|
1309 |
$ret = TRUE;
|
1310 |
|
1311 |
foreach ( $blog_ids as $id ) {
|
1312 |
switch_to_blog( $id );
|
1313 |
+
$map = IP_Geo_Block::get_option();
|
1314 |
+
$settings['api_key']['GoogleMap'] = $map['api_key']['GoogleMap'];
|
1315 |
+
$ret &= update_option( IP_Geo_Block::OPTION_NAME, $settings );
|
1316 |
restore_current_blog();
|
1317 |
}
|
1318 |
|
1452 |
}
|
1453 |
}
|
1454 |
|
1455 |
+
if ( $this->is_network && $settings['network_wide'] )
|
1456 |
+
$this->update_multisite_settings( $settings );
|
1457 |
else
|
1458 |
update_option( IP_Geo_Block::OPTION_NAME, $settings );
|
1459 |
|
admin/css/admin-icons.css
CHANGED
@@ -42,6 +42,7 @@
|
|
42 |
font-family: 'icomoon';
|
43 |
content: "\e9c9";
|
44 |
font-size: 18px;
|
|
|
45 |
}
|
46 |
/*#toplevel_page_ip-geo-block .dashicons-admin-generic:after {
|
47 |
font-family: 'icomoon';
|
42 |
font-family: 'icomoon';
|
43 |
content: "\e9c9";
|
44 |
font-size: 18px;
|
45 |
+
margin-left: 2px;
|
46 |
}
|
47 |
/*#toplevel_page_ip-geo-block .dashicons-admin-generic:after {
|
48 |
font-family: 'icomoon';
|
admin/css/admin-icons.min.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
/*! IP Geo Block admin icons */
|
2 |
-
@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?astkh8);src:url(fonts/icomoon.eot?astkh8#iefix) format('embedded-opentype'),url(fonts/icomoon.ttf?astkh8) format('truetype'),url(fonts/icomoon.woff?astkh8) format('woff'),url(fonts/icomoon.svg?astkh8#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" ip-geo-block-icon-"],[class^=ip-geo-block-icon-]{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ip-geo-block-icon-play:before{content:"\ea1c"}.ip-geo-block-icon-pause:before{content:"\ea1d"}.ip-geo-block-icon-stop:before{content:"\ea1e"}.ip-geo-block-icon-warn:before{content:"\ea07";color:#c43322}#toplevel_page_ip-geo-block .dashicons-admin-generic:before{font-family:icomoon;content:"\e9c9";font-size:18px}
|
1 |
/*! IP Geo Block admin icons */
|
2 |
+
@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?astkh8);src:url(fonts/icomoon.eot?astkh8#iefix) format('embedded-opentype'),url(fonts/icomoon.ttf?astkh8) format('truetype'),url(fonts/icomoon.woff?astkh8) format('woff'),url(fonts/icomoon.svg?astkh8#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" ip-geo-block-icon-"],[class^=ip-geo-block-icon-]{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ip-geo-block-icon-play:before{content:"\ea1c"}.ip-geo-block-icon-pause:before{content:"\ea1d"}.ip-geo-block-icon-stop:before{content:"\ea1e"}.ip-geo-block-icon-warn:before{content:"\ea07";color:#c43322}#toplevel_page_ip-geo-block .dashicons-admin-generic:before{font-family:icomoon;content:"\e9c9";font-size:18px;margin-left:2px}
|
admin/css/admin.css
CHANGED
@@ -60,8 +60,29 @@ label {
|
|
60 |
.panel-body:after {
|
61 |
clear: both;
|
62 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
/* style legend and fieldset */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
fieldset.ip-geo-block-field {
|
66 |
/* padding: 0 10px;*/
|
67 |
margin: 1em 0;
|
@@ -424,11 +445,17 @@ table.form-table th .ip-geo-block-cycle span {
|
|
424 |
color: #c43322;
|
425 |
margin-left: 0.25em;
|
426 |
}
|
427 |
-
.ip-geo-block-
|
428 |
color: #c43322;
|
429 |
font-weight: bold;
|
430 |
}
|
431 |
|
|
|
|
|
|
|
|
|
|
|
|
|
432 |
/* Statistics */
|
433 |
.ip-geo-block-top-list {
|
434 |
display: inline-table;
|
60 |
.panel-body:after {
|
61 |
clear: both;
|
62 |
}
|
63 |
+
.ip-geo-block-navi-link {
|
64 |
+
text-align: left;
|
65 |
+
}
|
66 |
+
.ip-geo-block-navi-link label {
|
67 |
+
vertical-align: text-top;
|
68 |
+
}
|
69 |
+
.ip-geo-block-help-link {
|
70 |
+
float: right;
|
71 |
+
font-size: 90%;
|
72 |
+
font-weight: normal;
|
73 |
+
}
|
74 |
+
.ip-geo-block-help-link a {
|
75 |
+
box-shadow: none;
|
76 |
+
}
|
77 |
|
78 |
/* style legend and fieldset */
|
79 |
+
fieldset label {
|
80 |
+
vertical-align: middle;
|
81 |
+
}
|
82 |
+
fieldset label dfn,
|
83 |
+
fieldset li label {
|
84 |
+
vertical-align: text-top;
|
85 |
+
}
|
86 |
fieldset.ip-geo-block-field {
|
87 |
/* padding: 0 10px;*/
|
88 |
margin: 1em 0;
|
445 |
color: #c43322;
|
446 |
margin-left: 0.25em;
|
447 |
}
|
448 |
+
.ip-geo-block-warn {
|
449 |
color: #c43322;
|
450 |
font-weight: bold;
|
451 |
}
|
452 |
|
453 |
+
/* Badly-behaved bots and crawlers */
|
454 |
+
input#ip_geo_block_settings_behavior_view,
|
455 |
+
input#ip_geo_block_settings_behavior_time {
|
456 |
+
width: 3.2em;
|
457 |
+
}
|
458 |
+
|
459 |
/* Statistics */
|
460 |
.ip-geo-block-top-list {
|
461 |
display: inline-table;
|
admin/css/admin.min.css
CHANGED
@@ -3,4 +3,4 @@
|
|
3 |
* Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
* This software is released under the MIT License.
|
5 |
*/
|
6 |
-
dfn{cursor:help;border-bottom:1px dotted #888}.ip-geo-block-icon,svg a,table.dataTable>tbody>tr{cursor:pointer}fieldset,legend{padding:0;margin:0;border:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}fieldset{min-width:0}legend{display:block;line-height:inherit;width:100%}.panel-body,label{display:inline-block}label{max-width:100%}.panel{border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);-moz-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#f5f5f5}.panel-heading{float:left!important;background:#fff}.panel-default>.panel-heading{border-color:inherit}.panel-body{width:100%;padding:0 1em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-body:after{clear:both}fieldset.ip-geo-block-field{margin:1em 0}fieldset.ip-geo-block-field h2,fieldset.ip-geo-block-field h3{padding:0;margin:0;font-size:14px!important}fieldset.ip-geo-block-field h4{margin:.75em 0 .5em}fieldset.ip-geo-block-field legend.panel-heading{padding:10px}fieldset.ip-geo-block-field .ip-geo-block-dropdown,fieldset.ip-geo-block-field .ip-geo-block-dropup{cursor:pointer;position:relative;padding-left:1em}fieldset.ip-geo-block-field .ip-geo-block-dropdown:before,fieldset.ip-geo-block-field .ip-geo-block-dropup:before{content:'';height:0;width:0;border:.4em solid transparent;position:absolute}fieldset.ip-geo-block-field .ip-geo-block-dropup:before{border-left:.4em solid #555;left:2px;top:18%}fieldset.ip-geo-block-field .ip-geo-block-dropdown:before{border-top:.4em solid #555;left:-2px;top:38%}fieldset.ip-geo-block-field .form-table .ip-geo-block-dropdown,fieldset.ip-geo-block-field .form-table .ip-geo-block-dropup{margin-top:.75em}fieldset.ip-geo-block-field ul.ip-geo-block-dropup:before{top:.25em}fieldset.ip-geo-block-field ul.ip-geo-block-dropdown:before{top:.5em}fieldset.ip-geo-block-field table.form-table{margin:0 0 .5em;width:100%}textarea.regular-text{width:25em}fieldset.ip-geo-block-field input.regular-text,fieldset.ip-geo-block-field textarea.regular-text{font-size:95%}.ip-geo-block-settings-folding{margin:.5em 0}.ip-geo-block-settings-folding ul{margin-bottom:0}.ip-geo-block-settings-folding li{margin:.5em 0}.folding-disable{pointer-events:none;opacity:.5}.folding-inactive{opacity:.5;font-style:oblique!important}.ip-geo-block-float li{display:inline-block;width:18em;margin-top:0}.ip-geo-block-checked{list-style-type:disc}.ip-geo-block-ip-addr{display:inline-block;padding-top:5px}.ip-geo-block-hide{display:none}.ip-geo-block-sup{margin-left:.2em;display:inline-block}.ip-geo-block-note{margin-top:1em;list-style:disc inside}.ip-geo-block-border{border-top:inherit}.ip-geo-block-notice{color:#dd3d36}.ip-geo-block-title{width:100px;display:inline-block}.ip-geo-block-result{color:#2786C2;display:inline-block}#ip-geo-block-live-loading,.ip-geo-block-loading{background-size:16px 16px;background-position:center center;background-repeat:no-repeat;height:16px;width:16px;margin-left:1em;margin-top:.2em;display:inline-block;vertical-align:top}.ip-geo-block-loading{background-image:url(data:image/gif;base64,R0lGODlhEAAQAPIGAAAAAMLCwkJCQpKSkmJiYoKCgv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAGACwAAAAAEAAQAAADM2i63P4wyklrC0IEKgAQnAdOmGYFBLExwboQWcG2rlHEwTDQLUsUOd2mBxkUCgNKa+dIAAAh+QQJCgAGACwAAAIACgAOAAADLWgWIqHQCABEVLPe1R4MBOFFRFNsRUNsYDFewTC8iixvQ1EMyxjEvyBLODQkAAAh+QQJCgAGACwAAAAACgAOAAADLWi6IRJrCQCECoU0ag1xxeBARuEQ0UUU5DUM7fK+qTEUYR0EcM3Ev51uB7wAEwAh+QQJCgAGACwAAAAADgAKAAADLWi6URQrLiJEkSaM0eqrkLFtAVEEAgAIylAUQ5SuSqCFNZjhWG3zmB8wOJQkAAAh+QQJCgAGACwCAAAADgAKAAADK2hqMRMrLuekCnCU8gqBDCZ2glBcYkSUxIJJgQdaUVDOtAAAAr3oPN/llgAAIfkECQoABgAsBgAAAAoADgAAAytoEdauiz0Yx5BQFTvN2EMXWNgUFETZFIJQdERLiGgZtKohAIDQ7T0RrpEAACH5BAkKAAYALAYAAgAKAA4AAAMqaKoR+609Fie1K4zhZiibNRSg1XAQUXQPIQgE835voQgAIARqh+ummSUBACH5BAUKAAYALAIABgAOAAoAAAMsaLpsES2+F9mEddEgBFbBMGACAAiMOCrlGRBFWBQD2L0dYYjfUuQZEKynSAAAOw==)}#ip-geo-block-map{height:400px;margin:1em auto}.gm-style-iw{width:18em;height:auto!important;height:100%;min-height:100%:}.gm-style-iw ul{margin:.1em}.gm-style-iw li{margin:.2em}svg a:hover>text{fill:#0096dd}svg a>text{fill:#0073aa;text-decoration:underline}table.ip-geo-block-statistics-table{float:right}table.ip-geo-block-statistics-table td,table.ip-geo-block-statistics-table th{width:12em;margin:0;padding:.2em;text-align:right;line-height:1.5em;word-wrap:break-word}table.ip-geo-block-statistics-table tr:nth-child(even){background-color:#eee}table.ip-geo-block-table{margin:1em 0;white-space:normal;word-wrap:break-word;word-break:break-all}table.ip-geo-block-table td:first-child{min-width:4.3em}@media screen and (max-width:782px){#ip-geo-block-whois .panel-body{padding:0 .5em}}#ip-geo-block-scan-code{vertical-align:middle}#ip-geo-block-code-list{display:none;margin-bottom:0}#ip-geo-block-chart-countries{height:200px}#ip-geo-block-chart-daily{height:240px}#ip_geo_block_settings_validation_mimetype+label{padding-top:.25em}#ip_geo_block_settings_validation_mimetype+label+ul{margin-top:.7em}#ip_geo_block_settings_create_user{margin-bottom:.5em}#ip-geo-block-back-to-top a,#ip-geo-block-toggle-sections{box-shadow:none}#ip-geo-block-wp-info textarea{margin-top:.5em;overflow:auto;width:100%;word-wrap:normal;word-break:normal;white-space:pre}#ip-geo-block-preferred{color:#fff;background:#00838f!important;border-color:#00707a!important;text-shadow:none}#ip-geo-block-preferred:hover{background-color:#00919e!important;border-color:#00525a!important}.ip-geo-block-icon,.ip-geo-block-list-exceptions a.ip-geo-block-icon{background-color:transparent;box-shadow:none;text-decoration:none;outline:0}#ip-geo-block-back-to-top{margin:0;text-align:right}#ip-geo-block-live-update,#ip-geo-block-open-new{margin-left:1em}.ip-geo-block-menu-link{font-size:13px!important}dfn~.ip-geo-block-icon{margin-left:.6em}.ip-geo-block-icon{position:relative}.ip-geo-block-icon:active{top:1px}.ip-geo-block-icon span{height:16px;width:16px;margin:0;border:none;display:inline-block;vertical-align:middle;background-size:16px 16px;background-position:center center;background-repeat:no-repeat}.ip-geo-block-icon-cidr span{vertical-align:text-top}.ip-geo-block-icon-cycle span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAh1BMVEUAda2otLp+rsSHprWHr8IBd7EpfKRGhaNajqeUqrRymKuKoq5yo7prlKgAcqoVe6w8gqQmgq5Tj6wIdqsVdKIshrEMea1Uhp+Anqw0hawDdq4gfKhljqE7hqoLdKYbgbM4jLQygKUGeK8CdawQd6gVeKcad6NKkrSerrZAj7UAc6sAc6rc3NySrVGQAAAALXRSTlP//////////////////////////////////////////////////////////wCl7wv9AAACOklEQVR4Ae2W15rzKgxF9xTZzhTX9B7S/gN6/9ebYqzzGZsw/S7LV3FZgCSIwD/kQ8FVcBU8xatZUczy8luC/ABNOn0DSHEsvyZ4PgLatNCYR3efFxyhTQ8g+qQgJxgv2JefERzJXATRh4LHOUwAHD4S7OGEztRJaN86hAUxtaNWDUf/bRdDBbQMWVDAO8jn89WUhag1MeyCAh6hHofyrliLgZKggDMYgzF3eVAwFq0uCZq5KY0TezjIHDDzC0qqmkwe2ctGDOQVLMkgu+F3/rGXwb4xIPcJ6P3JgkM8wFjmfcFAWfeKQywaAz33BJVuHsUcAt09gVbuLDThAJkdR687ggLmf4gDJLIGV7BydtB8yn3u+fbtuj/LS7G9wZAd1AKK+yxJ1x+aBmibTtgCcEHGHsh0wdbOgNLek4L7lI5BigY8nWuZUQ3qGEXes9JzOKGJztPaGtLslu3lIXJirdxCWkASHGDTMqg7V1DKPplygDG61YJukLHjEErGSXqCSos6xNSOgzP3BDmsQBcchNwkoV8oiNnPA78zIefUgCdJeGIfE7LmFWXsFTCFdzTJ/RlfEMRiSGnFXXbkC7AIeqcKDu4ynseozeouKJiSEYBDwkJyIC1nRUjgblkNWp/e/1vXc2gjoAoLksYgjrrFMi0oDgjEEIDij1scBXMJSH6DAj6RNl7o8MkuLak8Co15/Pk+MRmT0xilQJV/sdWNKg2kTaeroudvNNsDjmejYjSL+e6v2/2r4Cp4BXNajr0H7hRfAAAAAElFTkSuQmCC)}.ip-geo-block-icon-lock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3Ny3y9Zzq8dRmb7M1dlXnsIFdK0AcawAcqwphrYAcKvZ29wAb6oJd680jrqlw9MBcqxmo8MUfbJLl75eoMI7kbzX2ttqp8VSmL1YnL8NeK+Tu89DlL1ImMEOebBNmL4OkqMoAAAAAXRSTlMAQObYZgAAAPlJREFUeAG9kAWyhTAQBIPOsCzufv9TPnf4Ll0CSbpmxXwNy3Yc23rz2fV8kPA99433AIQIiGDTCD0lojiOQPXCDSFJIbF16CMWItkQMkF+inZzSLYhFKLl+a9UKTZaqJTZJYtarZuo40chrv9CqJTN+behVi+Cm7RdDgRld6AMgLxrE/dxBz0BEjwBEmD/uIsWPAOAF9A+CE56ufSryr8oqfOYcBbQJ8YkES7COkFOYzTypqCDOTDo2wljaEw4vp1APYyWKd8WMBozylvCpcvmXeHQ5fCegHia4s1FgZcIVeVFeFx1M4MvYG4eBHdYWufC+addBtf8E3vdjBNhWnVQqAAAAABJRU5ErkJggg==)}.ip-geo-block-icon-unlock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NyzydRzq8dRmb7I09hYnsEFdK0AcawAcqzP1toqhrYAcKvZ29wAb6oMeK8zjbqrxtQBcazBz9Zko8MVfbLF0thMmL07kbtpp8WjwtJSmL1YnL+Tu89DlL1JmMEPebBFV++UAAAAAXRSTlMAQObYZgAAAONJREFUeAG9kAWChDAMAIMmJaTFXf7/ynXflvMbnE5j8DU8Pwh8D1yEUYxEGEchWFEJEjEflESBhTQSQm2MRpIotQhZTmgKgMIg5ZlFKBmrGg7UFXJpEQKW8qIKN7YeikJdBJI2BTtXwfyx0L3XoPphvBEliNU49OoxqEa6g4cTST/OYshvi3hV8+FxSNfluG3jqxG8C6h7gF6jU+AODnTsFGSCA5O4I8wpQDq7I5CUAKWQW+AZYOYtoQPoGDeECWDaioBmWQxeBduoWURso+5WpBdw7R4ENTVDcGE435tJwT+xB+vMEnZRNB0YAAAAAElFTkSuQmCC)}.ip-geo-block-icon-find span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NzS19rD0NWHtMpGk7kYfbAGda0Req+WtcTT1temwM4AcasAcqwAc6wAcKydvMt1pr8Ab6pqpcLX2doggrKoxdNYm7yzw8u/y9HO1tkKdq4th7Td3t6DrcLL0taxyNPGe/YhAAAAAXRSTlMAQObYZgAAARVJREFUeAGtkkeiwyAMRP2xDfxoRjElvd3/lOkNUlZ5u0GPruan/Bnz96Xadr21rvP/7+ujXsAjom78rj4ApCoERIipqfGB1H7wPmYhw1DXjZI6nOel1oJhVAmdUP0tTEDkVC4AYvqIbaDOCqFV6vwRF0tIeYoo6J/X7ICuPAJl9ZynwiIfB5DXxZlRChulbh8xZci0EHZK3TziJFDL504rEOZ+iR5cVj82DoS7XtSshLJpKqaB0Dg3ZjcsQWKaKiF1gVQlITwh/bw2pgKeEeURhE29yKSzUFF03p1V7Wqj2Y7GfrY9X/NirJsPxKsxfBLSSs5GmH8yjAWPSNd8Yoez4f4/G1nIsksqFtGK1i9e39o0P+EAqaoRLlQ+r94AAAAASUVORK5CYII=)}.ip-geo-block-icon-alert span,span.ip-geo-block-icon-alert{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAkFBMVEXc3Nzc2trWl5DHRDTFOyvOgXfc1tXCLBrEMiHEMyLNcmfaxMLDMSDDLx7bu7jRiYHDLhzDMB/LX1PaxsTDLh3YtrHMY1bWmpPJVknSjYXUkYnZuLTMZVnENCPWlI3QhXzENiXXrqrDLRzXsa3Oal7Pe3Hc2NjVn5nNbmPayMbbwb7ay8rUj4fc09Lbw8Db0dDBbRUDAAAAAXRSTlMAQObYZgAAAPVJREFUeAG9ktXWwyAQBonC12brFvff5f2frr4nBredK2DnTFS8Gst2XM8XZmypIGeWcT4PFABaGIXlClfWG1NiC4Ubu705oKRcY32wTAHl2MdTYEqEK8hIiHgHSnSJeaogMyEWO4BijZCvwII2MS9UJ2BXTh+hQidoEttboBOwq3WBnkCNpQlA2iyAhol2hRu71n97p4fw0Z9/ugoPHCfFA+o/iLfCkyBglRJdICBas7uuey+R56fF14wNanj+/QjwY3aX23cBFn6EiHmHNT/ICYxystv/wJy4UHWGlN2cuPB72tFqAq3dP/Hk3zs0E5LZVryGC/hqGNnUa0SVAAAAAElFTkSuQmCC);vertical-align:bottom}table.form-table th .ip-geo-block-cycle span{vertical-align:text-bottom}.ip-geo-block-list{margin-top:0;margin-bottom:.7em}@media screen and (min-width:782px){ul.ip-geo-block-list .code{width:15em}}.ip-geo-block-list-exceptions label{display:inline-block}.ip-geo-block-list-exceptions dfn{border:none}.dataTables_wrapper.no-footer .dataTables_scrollBody,table.dataTable.no-footer,table.dataTable>thead>tr>td,table.dataTable>thead>tr>th{border-bottom:1px solid #ddd}.ip-geo-block-list-exceptions span.dashicons{font-size:14px}.ip-geo-block-list-exceptions a.ip-geo-block-icon{margin-left:.3em}.form-table td p.ip-geo-block-desc,.form-table td p.ip-geo-block-find-desc{color:#666;font-size:13px!important;margin:4px 0 .5em .5em}.ip-geo-block-find-desc{display:none}.ip-geo-block-admin-post{color:#c43322;margin-left:.25em}.ip-geo-block-found{color:#c43322;font-weight:700}.ip-geo-block-top-list{display:inline-table;list-style-position:outside;margin:0 2em .5em 1.75em}.ip-geo-block-top-list h4{margin:1em 0}.ip-geo-block-top-list li code{background:0 0}.ip-geo-block-network{margin-bottom:1em}.ip-geo-block-container{margin:0 auto;padding:0 1em;position:relative;width:100%}.ip-geo-block-row{display:flex;flex-direction:column;align-items:flex-start;align-items:stretch;padding:0;width:100%}.ip-geo-block-row .ip-geo-block-column{display:block;flex:1 1 auto;align-self:flex-start;margin-left:0;max-width:100%;width:100%}.ip-geo-block-row .ip-geo-block-column.column-20{flex:0 0 20%;max-width:20%}.ip-geo-block-row .ip-geo-block-column.column-25{flex:0 0 25%;max-width:25%}.ip-geo-block-row .ip-geo-block-column.column-33{flex:0 0 33.3333%;max-width:33.3333%}.ip-geo-block-row .ip-geo-block-column.column-50{flex:0 0 50%;max-width:50%}@media (min-width:40rem){.ip-geo-block-row{flex-direction:row;margin-left:-2em;width:calc(100% + 2em)}.ip-geo-block-row .ip-geo-block-column{margin-bottom:inherit;padding:0 1em}}table.dataTable{clear:none!important}table.dataTable td,table.dataTable th{text-align:right}table.dataTable td:nth-child(n+2),table.dataTable th:nth-child(n+2){padding-left:0!important}table.dataTable th{white-space:nowrap}table.dataTable>thead>tr{line-height:1.8em}table.dataTable thead td,table.dataTable thead th{padding:10px 16px}#ip-geo-block-statistics-cache td:nth-child(3),#ip-geo-block-validation-logs td:nth-child(4){min-width:1.6em}table.dataTable.nowrap td,table.dataTable>tbody>tr>td span{white-space:normal!important;word-wrap:break-word!important;word-break:break-all!important}table.dataTable>tbody>tr>td span{display:inline-block}table.dataTable input[type=checkbox]{height:16px;width:16px;margin:-4px 1px 0 0}table.dataTable>tbody>tr>td:first-child,table.dataTable>thead>tr>th:first-child{padding:8px 4px 8px 1.4em;text-align:left}table.collapsed>tbody>tr>td.dataTables_empty:first-child::before,table.dataTable>tbody>tr>td.dataTables_empty{border:none;text-align:center}table.dataTable thead>tr>th:first-child.sorting_asc{background-image:none!important}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.display tbody tr:hover>.sorting_1{background-color:inherit!important}table.dataTable.collapsed>tbody>tr>td:first-child{padding:8px 4px 8px 8px!important}table.collapsed>tbody>tr.parent>td:first-child::before,table.collapsed>tbody>tr>td:first-child::before{content:'';height:0;width:0;display:inline-block;border-radius:0;border:5px solid transparent;box-shadow:none;position:relative;background-color:transparent}table.collapsed>tbody>tr>td:first-child::before{border-left:5px solid #555;left:-2px}table.collapsed>tbody>tr.parent>td:first-child::before{border-top:5px solid #555;top:3px;left:-4px}table.collapsed>tbody>tr.child>td:first-child::before{border:none}table.collapsed>tbody>tr.child>td.child>ul li{border:none;padding:0;margin:0;line-height:1.8em}table.collapsed>tbody>tr.child>td.child>ul li span.dtr-data,table.collapsed>tbody>tr.child>td.child>ul li span.dtr-title{font-size:13px!important;display:block;white-space:normal;word-wrap:break-word;word-break:break-all}table.collapsed>tbody>tr.child>td.child>ul li span.dtr-data{margin-left:1.25em;margin-right:.3em}.dataTables_wrapper .dataTables_paginate{float:none;text-align:center;margin-bottom:1em}.dataTables_wrapper .dataTables_paginate a.paginate_button,.dataTables_wrapper .dataTables_paginate a.paginate_button.current,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate a.paginate_button:active,.dataTables_wrapper .dataTables_paginate a.paginate_button:hover,.dataTables_wrapper .dataTables_paginate span.ellipsis{min-width:2em;background:inherit;border-color:#ddd;border-radius:0;border-image:none;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;margin:.5em 0 0;padding:.25em 0;display:inline-block;text-decoration:none}#ip-geo-block-1 #ip-geo-block-section-2 .panel-body,#ip-geo-block-4 #ip-geo-block-section-0 .panel-body,mark{padding:0}.dataTables_wrapper .dataTables_paginate:active>a.paginate_button:first-child,.dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:first-child,.dataTables_wrapper .dataTables_paginate>a.paginate_button:first-child{border-left-width:1px;border-bottom-left-radius:4px;border-top-left-radius:4px}.dataTables_wrapper .dataTables_paginate:active>a.paginate_button:last-child,.dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:last-child,.dataTables_wrapper .dataTables_paginate>a.paginate_button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.dataTables_wrapper .dataTables_paginate a.paginate_button{color:#0073aa!important}.dataTables_wrapper .dataTables_paginate a.paginate_button:hover{color:#0096dd!important;background-color:#fff}.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate span.ellipsis{cursor:default;color:#999!important;background-color:transparent}.dataTables_wrapper .dataTables_paginate a.paginate_button.current,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover{cursor:default;color:#444!important;background-color:#fff!important}#ip-geo-block-1 #ip-geo-block-section-2 table.form-table,#ip-geo-block-4 #ip-geo-block-section-0 table.form-table{margin-left:1em;max-width:95%}#ip-geo-block-live-log,#ip-geo-block-select-duration,#ip-geo-block-select-layout,#ip-geo-block-select-target{margin:0}#ip-geo-block-select-duration li,#ip-geo-block-select-layout li,#ip-geo-block-select-target li{float:left;margin-right:1.5em}#ip-geo-block-select-duration li label,#ip-geo-block-select-target li label{cursor:pointer}#ip_geo_block_settings_search_filter{width:16em;padding-top:3px}table.dataTable.display tbody tr.ip-geo-block-passed{background-color:#edf6ff!important}table.dataTable.display tbody tr.ip-geo-block-blocked{background-color:#ffefef!important}.ip-geo-block-new-passed{animation:ip-geo-block-flash-passed 1s ease-out 0s 1 normal both running}.ip-geo-block-new-blocked{animation:ip-geo-block-flash-blocked 1s ease-out 0s 1 normal both running}@keyframes ip-geo-block-flash-passed{0%{background-color:gold}100%{background-color:#edf6ff}}@keyframes ip-geo-block-flash-blocked{0%{background-color:gold}100%{background-color:#ffefef}}mark{background:gold}#ip-geo-block-live-log li{float:left;margin-right:3em}#ip-geo-block-live-log li:last-child{margin-right:0}#ip-geo-block-live-log li input[type=radio]{visibility:hidden;position:absolute}#ip-geo-block-live-log li input[type=radio]+label{display:inline-block;margin:-2px -2px 0;padding:4px 12px;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-bottom-color:#b3b3b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}#ip-geo-block-live-log li input[type=radio]:checked+label{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#e0e0e0}.ip-geo-block-live-timer{height:1em;width:1em;margin:0;position:relative;top:0;left:0}.ip-geo-block-live-timer:before{content:"";display:block;height:1em;width:1em;background:radial-gradient(#0073aa,#72777c);border-radius:50%;position:absolute;top:0;left:0}.ip-geo-block-live-timer:after{display:none}.ip-geo-block-live-timer>div{position:absolute;width:1em;height:1em;clip:rect(0,1em,1em,.5em)}.ip-geo-block-live-timer>div:before{content:" ";position:absolute;width:1em;height:1em;border-radius:.5em;clip:rect(0,.5em,1em,0);background-color:#f1f1f1;transform:rotate(0)}.ip-geo-block-live-timer>div:first-child:before{animation:30s spin-timer linear forwards}.ip-geo-block-live-timer>div:last-child{transform:rotate(180deg)}.ip-geo-block-live-timer>div:last-child:before{transform:rotate(.00001deg);animation:30s spin-timer linear 30s forwards}@keyframes spin-timer{0%{transform:rotate(0)}100%{transform:rotate(180deg)}}:placeholder-shown{color:#888}::-webkit-input-placeholder{color:#888}:-moz-placeholder{color:#888;opacity:1}::-moz-placeholder{color:#888;opacity:1}:-ms-input-placeholder{color:#888}
|
3 |
* Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
* This software is released under the MIT License.
|
5 |
*/
|
6 |
+
.ip-geo-block-navi-link label,fieldset label dfn,fieldset li label{vertical-align:text-top}dfn{cursor:help;border-bottom:1px dotted #888}.ip-geo-block-icon,svg a,table.dataTable>tbody>tr{cursor:pointer}fieldset,legend{padding:0;margin:0;border:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}fieldset{min-width:0}legend{display:block;line-height:inherit;width:100%}.panel-body,label{display:inline-block}label{max-width:100%}.panel{border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);-moz-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#f5f5f5}#ip-geo-block-back-to-top a,#ip-geo-block-toggle-sections,.ip-geo-block-help-link a{box-shadow:none}.panel-heading{float:left!important;background:#fff}.panel-default>.panel-heading{border-color:inherit}.panel-body{width:100%;padding:0 1em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-body:after{clear:both}.ip-geo-block-navi-link{text-align:left}.ip-geo-block-help-link{float:right;font-size:90%;font-weight:400}fieldset label{vertical-align:middle}fieldset.ip-geo-block-field{margin:1em 0}fieldset.ip-geo-block-field h2,fieldset.ip-geo-block-field h3{padding:0;margin:0;font-size:14px!important}fieldset.ip-geo-block-field h4{margin:.75em 0 .5em}fieldset.ip-geo-block-field legend.panel-heading{padding:10px}fieldset.ip-geo-block-field .ip-geo-block-dropdown,fieldset.ip-geo-block-field .ip-geo-block-dropup{cursor:pointer;position:relative;padding-left:1em}fieldset.ip-geo-block-field .ip-geo-block-dropdown:before,fieldset.ip-geo-block-field .ip-geo-block-dropup:before{content:'';height:0;width:0;border:.4em solid transparent;position:absolute}fieldset.ip-geo-block-field .ip-geo-block-dropup:before{border-left:.4em solid #555;left:2px;top:18%}fieldset.ip-geo-block-field .ip-geo-block-dropdown:before{border-top:.4em solid #555;left:-2px;top:38%}fieldset.ip-geo-block-field .form-table .ip-geo-block-dropdown,fieldset.ip-geo-block-field .form-table .ip-geo-block-dropup{margin-top:.75em}fieldset.ip-geo-block-field ul.ip-geo-block-dropup:before{top:.25em}fieldset.ip-geo-block-field ul.ip-geo-block-dropdown:before{top:.5em}fieldset.ip-geo-block-field table.form-table{margin:0 0 .5em;width:100%}textarea.regular-text{width:25em}fieldset.ip-geo-block-field input.regular-text,fieldset.ip-geo-block-field textarea.regular-text{font-size:95%}.ip-geo-block-settings-folding{margin:.5em 0}.ip-geo-block-settings-folding ul{margin-bottom:0}.ip-geo-block-settings-folding li{margin:.5em 0}.folding-disable{pointer-events:none;opacity:.5}.folding-inactive{opacity:.5;font-style:oblique!important}.ip-geo-block-float li{display:inline-block;width:18em;margin-top:0}.ip-geo-block-checked{list-style-type:disc}.ip-geo-block-ip-addr{display:inline-block;padding-top:5px}.ip-geo-block-hide{display:none}.ip-geo-block-sup{margin-left:.2em;display:inline-block}.ip-geo-block-note{margin-top:1em;list-style:disc inside}.ip-geo-block-border{border-top:inherit}.ip-geo-block-notice{color:#dd3d36}.ip-geo-block-title{width:100px;display:inline-block}.ip-geo-block-result{color:#2786C2;display:inline-block}#ip-geo-block-live-loading,.ip-geo-block-loading{background-size:16px 16px;background-position:center center;background-repeat:no-repeat;height:16px;width:16px;margin-left:1em;margin-top:.2em;display:inline-block;vertical-align:top}.ip-geo-block-loading{background-image:url(data:image/gif;base64,R0lGODlhEAAQAPIGAAAAAMLCwkJCQpKSkmJiYoKCgv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAGACwAAAAAEAAQAAADM2i63P4wyklrC0IEKgAQnAdOmGYFBLExwboQWcG2rlHEwTDQLUsUOd2mBxkUCgNKa+dIAAAh+QQJCgAGACwAAAIACgAOAAADLWgWIqHQCABEVLPe1R4MBOFFRFNsRUNsYDFewTC8iixvQ1EMyxjEvyBLODQkAAAh+QQJCgAGACwAAAAACgAOAAADLWi6IRJrCQCECoU0ag1xxeBARuEQ0UUU5DUM7fK+qTEUYR0EcM3Ev51uB7wAEwAh+QQJCgAGACwAAAAADgAKAAADLWi6URQrLiJEkSaM0eqrkLFtAVEEAgAIylAUQ5SuSqCFNZjhWG3zmB8wOJQkAAAh+QQJCgAGACwCAAAADgAKAAADK2hqMRMrLuekCnCU8gqBDCZ2glBcYkSUxIJJgQdaUVDOtAAAAr3oPN/llgAAIfkECQoABgAsBgAAAAoADgAAAytoEdauiz0Yx5BQFTvN2EMXWNgUFETZFIJQdERLiGgZtKohAIDQ7T0RrpEAACH5BAkKAAYALAYAAgAKAA4AAAMqaKoR+609Fie1K4zhZiibNRSg1XAQUXQPIQgE835voQgAIARqh+ummSUBACH5BAUKAAYALAIABgAOAAoAAAMsaLpsES2+F9mEddEgBFbBMGACAAiMOCrlGRBFWBQD2L0dYYjfUuQZEKynSAAAOw==)}#ip-geo-block-map{height:400px;margin:1em auto}.gm-style-iw{width:18em;height:auto!important;height:100%;min-height:100%:}.gm-style-iw ul{margin:.1em}.gm-style-iw li{margin:.2em}svg a:hover>text{fill:#0096dd}svg a>text{fill:#0073aa;text-decoration:underline}table.ip-geo-block-statistics-table{float:right}table.ip-geo-block-statistics-table td,table.ip-geo-block-statistics-table th{width:12em;margin:0;padding:.2em;text-align:right;line-height:1.5em;word-wrap:break-word}table.ip-geo-block-statistics-table tr:nth-child(even){background-color:#eee}table.ip-geo-block-table{margin:1em 0;white-space:normal;word-wrap:break-word;word-break:break-all}table.ip-geo-block-table td:first-child{min-width:4.3em}@media screen and (max-width:782px){#ip-geo-block-whois .panel-body{padding:0 .5em}}#ip-geo-block-scan-code{vertical-align:middle}#ip-geo-block-code-list{display:none;margin-bottom:0}#ip-geo-block-chart-countries{height:200px}#ip-geo-block-chart-daily{height:240px}#ip_geo_block_settings_validation_mimetype+label{padding-top:.25em}#ip_geo_block_settings_validation_mimetype+label+ul{margin-top:.7em}#ip_geo_block_settings_create_user{margin-bottom:.5em}#ip-geo-block-wp-info textarea{margin-top:.5em;overflow:auto;width:100%;word-wrap:normal;word-break:normal;white-space:pre}#ip-geo-block-preferred{color:#fff;background:#00838f!important;border-color:#00707a!important;text-shadow:none}#ip-geo-block-preferred:hover{background-color:#00919e!important;border-color:#00525a!important}.ip-geo-block-icon,.ip-geo-block-list-exceptions a.ip-geo-block-icon{background-color:transparent;box-shadow:none;text-decoration:none;outline:0}#ip-geo-block-back-to-top{margin:0;text-align:right}#ip-geo-block-live-update,#ip-geo-block-open-new{margin-left:1em}.ip-geo-block-menu-link{font-size:13px!important}dfn~.ip-geo-block-icon{margin-left:.6em}.ip-geo-block-icon{position:relative}.ip-geo-block-icon:active{top:1px}.ip-geo-block-icon span{height:16px;width:16px;margin:0;border:none;display:inline-block;vertical-align:middle;background-size:16px 16px;background-position:center center;background-repeat:no-repeat}.ip-geo-block-icon-cidr span{vertical-align:text-top}.ip-geo-block-icon-cycle span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAh1BMVEUAda2otLp+rsSHprWHr8IBd7EpfKRGhaNajqeUqrRymKuKoq5yo7prlKgAcqoVe6w8gqQmgq5Tj6wIdqsVdKIshrEMea1Uhp+Anqw0hawDdq4gfKhljqE7hqoLdKYbgbM4jLQygKUGeK8CdawQd6gVeKcad6NKkrSerrZAj7UAc6sAc6rc3NySrVGQAAAALXRSTlP//////////////////////////////////////////////////////////wCl7wv9AAACOklEQVR4Ae2W15rzKgxF9xTZzhTX9B7S/gN6/9ebYqzzGZsw/S7LV3FZgCSIwD/kQ8FVcBU8xatZUczy8luC/ABNOn0DSHEsvyZ4PgLatNCYR3efFxyhTQ8g+qQgJxgv2JefERzJXATRh4LHOUwAHD4S7OGEztRJaN86hAUxtaNWDUf/bRdDBbQMWVDAO8jn89WUhag1MeyCAh6hHofyrliLgZKggDMYgzF3eVAwFq0uCZq5KY0TezjIHDDzC0qqmkwe2ctGDOQVLMkgu+F3/rGXwb4xIPcJ6P3JgkM8wFjmfcFAWfeKQywaAz33BJVuHsUcAt09gVbuLDThAJkdR687ggLmf4gDJLIGV7BydtB8yn3u+fbtuj/LS7G9wZAd1AKK+yxJ1x+aBmibTtgCcEHGHsh0wdbOgNLek4L7lI5BigY8nWuZUQ3qGEXes9JzOKGJztPaGtLslu3lIXJirdxCWkASHGDTMqg7V1DKPplygDG61YJukLHjEErGSXqCSos6xNSOgzP3BDmsQBcchNwkoV8oiNnPA78zIefUgCdJeGIfE7LmFWXsFTCFdzTJ/RlfEMRiSGnFXXbkC7AIeqcKDu4ynseozeouKJiSEYBDwkJyIC1nRUjgblkNWp/e/1vXc2gjoAoLksYgjrrFMi0oDgjEEIDij1scBXMJSH6DAj6RNl7o8MkuLak8Co15/Pk+MRmT0xilQJV/sdWNKg2kTaeroudvNNsDjmejYjSL+e6v2/2r4Cp4BXNajr0H7hRfAAAAAElFTkSuQmCC)}.ip-geo-block-icon-lock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3Ny3y9Zzq8dRmb7M1dlXnsIFdK0AcawAcqwphrYAcKvZ29wAb6oJd680jrqlw9MBcqxmo8MUfbJLl75eoMI7kbzX2ttqp8VSmL1YnL8NeK+Tu89DlL1ImMEOebBNmL4OkqMoAAAAAXRSTlMAQObYZgAAAPlJREFUeAG9kAWyhTAQBIPOsCzufv9TPnf4Ll0CSbpmxXwNy3Yc23rz2fV8kPA99433AIQIiGDTCD0lojiOQPXCDSFJIbF16CMWItkQMkF+inZzSLYhFKLl+a9UKTZaqJTZJYtarZuo40chrv9CqJTN+behVi+Cm7RdDgRld6AMgLxrE/dxBz0BEjwBEmD/uIsWPAOAF9A+CE56ufSryr8oqfOYcBbQJ8YkES7COkFOYzTypqCDOTDo2wljaEw4vp1APYyWKd8WMBozylvCpcvmXeHQ5fCegHia4s1FgZcIVeVFeFx1M4MvYG4eBHdYWufC+addBtf8E3vdjBNhWnVQqAAAAABJRU5ErkJggg==)}.ip-geo-block-icon-unlock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NyzydRzq8dRmb7I09hYnsEFdK0AcawAcqzP1toqhrYAcKvZ29wAb6oMeK8zjbqrxtQBcazBz9Zko8MVfbLF0thMmL07kbtpp8WjwtJSmL1YnL+Tu89DlL1JmMEPebBFV++UAAAAAXRSTlMAQObYZgAAAONJREFUeAG9kAWChDAMAIMmJaTFXf7/ynXflvMbnE5j8DU8Pwh8D1yEUYxEGEchWFEJEjEflESBhTQSQm2MRpIotQhZTmgKgMIg5ZlFKBmrGg7UFXJpEQKW8qIKN7YeikJdBJI2BTtXwfyx0L3XoPphvBEliNU49OoxqEa6g4cTST/OYshvi3hV8+FxSNfluG3jqxG8C6h7gF6jU+AODnTsFGSCA5O4I8wpQDq7I5CUAKWQW+AZYOYtoQPoGDeECWDaioBmWQxeBduoWURso+5WpBdw7R4ENTVDcGE435tJwT+xB+vMEnZRNB0YAAAAAElFTkSuQmCC)}.ip-geo-block-icon-find span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NzS19rD0NWHtMpGk7kYfbAGda0Req+WtcTT1temwM4AcasAcqwAc6wAcKydvMt1pr8Ab6pqpcLX2doggrKoxdNYm7yzw8u/y9HO1tkKdq4th7Td3t6DrcLL0taxyNPGe/YhAAAAAXRSTlMAQObYZgAAARVJREFUeAGtkkeiwyAMRP2xDfxoRjElvd3/lOkNUlZ5u0GPruan/Bnz96Xadr21rvP/7+ujXsAjom78rj4ApCoERIipqfGB1H7wPmYhw1DXjZI6nOel1oJhVAmdUP0tTEDkVC4AYvqIbaDOCqFV6vwRF0tIeYoo6J/X7ICuPAJl9ZynwiIfB5DXxZlRChulbh8xZci0EHZK3TziJFDL504rEOZ+iR5cVj82DoS7XtSshLJpKqaB0Dg3ZjcsQWKaKiF1gVQlITwh/bw2pgKeEeURhE29yKSzUFF03p1V7Wqj2Y7GfrY9X/NirJsPxKsxfBLSSs5GmH8yjAWPSNd8Yoez4f4/G1nIsksqFtGK1i9e39o0P+EAqaoRLlQ+r94AAAAASUVORK5CYII=)}.ip-geo-block-icon-alert span,span.ip-geo-block-icon-alert{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAkFBMVEXc3Nzc2trWl5DHRDTFOyvOgXfc1tXCLBrEMiHEMyLNcmfaxMLDMSDDLx7bu7jRiYHDLhzDMB/LX1PaxsTDLh3YtrHMY1bWmpPJVknSjYXUkYnZuLTMZVnENCPWlI3QhXzENiXXrqrDLRzXsa3Oal7Pe3Hc2NjVn5nNbmPayMbbwb7ay8rUj4fc09Lbw8Db0dDBbRUDAAAAAXRSTlMAQObYZgAAAPVJREFUeAG9ktXWwyAQBonC12brFvff5f2frr4nBredK2DnTFS8Gst2XM8XZmypIGeWcT4PFABaGIXlClfWG1NiC4Ubu705oKRcY32wTAHl2MdTYEqEK8hIiHgHSnSJeaogMyEWO4BijZCvwII2MS9UJ2BXTh+hQidoEttboBOwq3WBnkCNpQlA2iyAhol2hRu71n97p4fw0Z9/ugoPHCfFA+o/iLfCkyBglRJdICBas7uuey+R56fF14wNanj+/QjwY3aX23cBFn6EiHmHNT/ICYxystv/wJy4UHWGlN2cuPB72tFqAq3dP/Hk3zs0E5LZVryGC/hqGNnUa0SVAAAAAElFTkSuQmCC);vertical-align:bottom}table.form-table th .ip-geo-block-cycle span{vertical-align:text-bottom}.ip-geo-block-list{margin-top:0;margin-bottom:.7em}@media screen and (min-width:782px){ul.ip-geo-block-list .code{width:15em}}.ip-geo-block-list-exceptions label{display:inline-block}.ip-geo-block-list-exceptions dfn{border:none}.dataTables_wrapper.no-footer .dataTables_scrollBody,table.dataTable.no-footer,table.dataTable>thead>tr>td,table.dataTable>thead>tr>th{border-bottom:1px solid #ddd}.ip-geo-block-list-exceptions span.dashicons{font-size:14px}.ip-geo-block-list-exceptions a.ip-geo-block-icon{margin-left:.3em}.form-table td p.ip-geo-block-desc,.form-table td p.ip-geo-block-find-desc{color:#666;font-size:13px!important;margin:4px 0 .5em .5em}.ip-geo-block-find-desc{display:none}.ip-geo-block-admin-post{color:#c43322;margin-left:.25em}.ip-geo-block-warn{color:#c43322;font-weight:700}input#ip_geo_block_settings_behavior_view,input#ip_geo_block_settings_behavior_time {width:3.2em}.ip-geo-block-top-list{display:inline-table;list-style-position:outside;margin:0 2em .5em 1.75em}.ip-geo-block-top-list h4{margin:1em 0}.ip-geo-block-top-list li code{background:0 0}.ip-geo-block-network{margin-bottom:1em}.ip-geo-block-container{margin:0 auto;padding:0 1em;position:relative;width:100%}.ip-geo-block-row{display:flex;flex-direction:column;align-items:flex-start;align-items:stretch;padding:0;width:100%}.ip-geo-block-row .ip-geo-block-column{display:block;flex:1 1 auto;align-self:flex-start;margin-left:0;max-width:100%;width:100%}.ip-geo-block-row .ip-geo-block-column.column-20{flex:0 0 20%;max-width:20%}.ip-geo-block-row .ip-geo-block-column.column-25{flex:0 0 25%;max-width:25%}.ip-geo-block-row .ip-geo-block-column.column-33{flex:0 0 33.3333%;max-width:33.3333%}.ip-geo-block-row .ip-geo-block-column.column-50{flex:0 0 50%;max-width:50%}@media (min-width:40rem){.ip-geo-block-row{flex-direction:row;margin-left:-2em;width:calc(100% + 2em)}.ip-geo-block-row .ip-geo-block-column{margin-bottom:inherit;padding:0 1em}}table.dataTable{clear:none!important}table.dataTable td,table.dataTable th{text-align:right}table.dataTable td:nth-child(n+2),table.dataTable th:nth-child(n+2){padding-left:0!important}table.dataTable th{white-space:nowrap}table.dataTable>thead>tr{line-height:1.8em}table.dataTable thead td,table.dataTable thead th{padding:10px 16px}#ip-geo-block-statistics-cache td:nth-child(3),#ip-geo-block-validation-logs td:nth-child(4){min-width:1.6em}table.dataTable.nowrap td,table.dataTable>tbody>tr>td span{white-space:normal!important;word-wrap:break-word!important;word-break:break-all!important}table.dataTable>tbody>tr>td span{display:inline-block}table.dataTable input[type=checkbox]{height:16px;width:16px;margin:-4px 1px 0 0}table.dataTable>tbody>tr>td:first-child,table.dataTable>thead>tr>th:first-child{padding:8px 4px 8px 1.4em;text-align:left}table.collapsed>tbody>tr>td.dataTables_empty:first-child::before,table.dataTable>tbody>tr>td.dataTables_empty{border:none;text-align:center}table.dataTable thead>tr>th:first-child.sorting_asc{background-image:none!important}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.display tbody tr:hover>.sorting_1{background-color:inherit!important}table.dataTable.collapsed>tbody>tr>td:first-child{padding:8px 4px 8px 8px!important}table.collapsed>tbody>tr.parent>td:first-child::before,table.collapsed>tbody>tr>td:first-child::before{content:'';height:0;width:0;display:inline-block;border-radius:0;border:5px solid transparent;box-shadow:none;position:relative;background-color:transparent}table.collapsed>tbody>tr>td:first-child::before{border-left:5px solid #555;left:-2px}table.collapsed>tbody>tr.parent>td:first-child::before{border-top:5px solid #555;top:3px;left:-4px}table.collapsed>tbody>tr.child>td:first-child::before{border:none}table.collapsed>tbody>tr.child>td.child>ul li{border:none;padding:0;margin:0;line-height:1.8em}table.collapsed>tbody>tr.child>td.child>ul li span.dtr-data,table.collapsed>tbody>tr.child>td.child>ul li span.dtr-title{font-size:13px!important;display:block;white-space:normal;word-wrap:break-word;word-break:break-all}table.collapsed>tbody>tr.child>td.child>ul li span.dtr-data{margin-left:1.25em;margin-right:.3em}.dataTables_wrapper .dataTables_paginate{float:none;text-align:center;margin-bottom:1em}.dataTables_wrapper .dataTables_paginate a.paginate_button,.dataTables_wrapper .dataTables_paginate a.paginate_button.current,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate a.paginate_button:active,.dataTables_wrapper .dataTables_paginate a.paginate_button:hover,.dataTables_wrapper .dataTables_paginate span.ellipsis{min-width:2em;background:inherit;border-color:#ddd;border-radius:0;border-image:none;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;margin:.5em 0 0;padding:.25em 0;display:inline-block;text-decoration:none}#ip-geo-block-1 #ip-geo-block-section-2 .panel-body,#ip-geo-block-4 #ip-geo-block-section-0 .panel-body,mark{padding:0}.dataTables_wrapper .dataTables_paginate:active>a.paginate_button:first-child,.dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:first-child,.dataTables_wrapper .dataTables_paginate>a.paginate_button:first-child{border-left-width:1px;border-bottom-left-radius:4px;border-top-left-radius:4px}.dataTables_wrapper .dataTables_paginate:active>a.paginate_button:last-child,.dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:last-child,.dataTables_wrapper .dataTables_paginate>a.paginate_button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.dataTables_wrapper .dataTables_paginate a.paginate_button{color:#0073aa!important}.dataTables_wrapper .dataTables_paginate a.paginate_button:hover{color:#0096dd!important;background-color:#fff}.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate span.ellipsis{cursor:default;color:#999!important;background-color:transparent}.dataTables_wrapper .dataTables_paginate a.paginate_button.current,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,.dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover{cursor:default;color:#444!important;background-color:#fff!important}#ip-geo-block-1 #ip-geo-block-section-2 table.form-table,#ip-geo-block-4 #ip-geo-block-section-0 table.form-table{margin-left:1em;max-width:95%}#ip-geo-block-live-log,#ip-geo-block-select-duration,#ip-geo-block-select-layout,#ip-geo-block-select-target{margin:0}#ip-geo-block-select-duration li,#ip-geo-block-select-layout li,#ip-geo-block-select-target li{float:left;margin-right:1.5em}#ip-geo-block-select-duration li label,#ip-geo-block-select-target li label{cursor:pointer}#ip_geo_block_settings_search_filter{width:16em;padding-top:3px}table.dataTable.display tbody tr.ip-geo-block-passed{background-color:#edf6ff!important}table.dataTable.display tbody tr.ip-geo-block-blocked{background-color:#ffefef!important}.ip-geo-block-new-passed{animation:ip-geo-block-flash-passed 1s ease-out 0s 1 normal both running}.ip-geo-block-new-blocked{animation:ip-geo-block-flash-blocked 1s ease-out 0s 1 normal both running}@keyframes ip-geo-block-flash-passed{0%{background-color:gold}100%{background-color:#edf6ff}}@keyframes ip-geo-block-flash-blocked{0%{background-color:gold}100%{background-color:#ffefef}}mark{background:gold}#ip-geo-block-live-log li{float:left;margin-right:3em}#ip-geo-block-live-log li:last-child{margin-right:0}#ip-geo-block-live-log li input[type=radio]{visibility:hidden;position:absolute}#ip-geo-block-live-log li input[type=radio]+label{display:inline-block;margin:-2px -2px 0;padding:4px 12px;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-bottom-color:#b3b3b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}#ip-geo-block-live-log li input[type=radio]:checked+label{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#e0e0e0}.ip-geo-block-live-timer{height:1em;width:1em;margin:0;position:relative;top:0;left:0}.ip-geo-block-live-timer:before{content:"";display:block;height:1em;width:1em;background:radial-gradient(#0073aa,#72777c);border-radius:50%;position:absolute;top:0;left:0}.ip-geo-block-live-timer:after{display:none}.ip-geo-block-live-timer>div{position:absolute;width:1em;height:1em;clip:rect(0,1em,1em,.5em)}.ip-geo-block-live-timer>div:before{content:" ";position:absolute;width:1em;height:1em;border-radius:.5em;clip:rect(0,.5em,1em,0);background-color:#f1f1f1;transform:rotate(0)}.ip-geo-block-live-timer>div:first-child:before{animation:30s spin-timer linear forwards}.ip-geo-block-live-timer>div:last-child{transform:rotate(180deg)}.ip-geo-block-live-timer>div:last-child:before{transform:rotate(.00001deg);animation:30s spin-timer linear 30s forwards}@keyframes spin-timer{0%{transform:rotate(0)}100%{transform:rotate(180deg)}}:placeholder-shown{color:#888}::-webkit-input-placeholder{color:#888}:-moz-placeholder{color:#888;opacity:1}::-moz-placeholder{color:#888;opacity:1}:-ms-input-placeholder{color:#888}
|
admin/css/cidr.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:8xp;font-size:14px;line-height:1.4}#g,textarea{border:1px solid #ccc;font-size:12px;font-family:Consolas,Monaco,monospace}.container{margin:0;padding:0}.clr:after,.col:after,.container:after,.row:after{content:"";display:table;clear:both}.row{padding-bottom:0}#g,fieldset{padding:.5rem}.col{display:block;float:left;width:100%}.span_2{width:8.33333333333%}.span_11{width:45.8333333333%}.span_24,textarea{width:100%}fieldset{border:none;margin:0}textarea{height:4.5rem;resize:horizontal}legend input[type=button]{margin-left:.5rem;vertical-align:middle}#j,#i{display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;justify-content:center;align-items:center}#j{padding:0 .5rem}ul#h{padding:1.5rem 0 0;list-style:none}ul#h li{width:100%;margin:.1rem 0;display:inline-block}ul#h li input{padding:0}#g{text-align:center}
|
admin/includes/class-admin-ajax.php
CHANGED
@@ -15,7 +15,7 @@ class IP_Geo_Block_Admin_Ajax {
|
|
15 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
|
16 |
|
17 |
// check format
|
18 |
-
if ( filter_var( $ip = $_POST['ip'], FILTER_VALIDATE_IP ) ) {
|
19 |
// get option settings and compose request headers
|
20 |
$options = IP_Geo_Block::get_option();
|
21 |
$tmp = IP_Geo_Block::get_request_headers( $options );
|
@@ -485,6 +485,9 @@ endif; // TEST_RESTORE_NETWORK
|
|
485 |
'[public][dnslkup]', // 3.0.3
|
486 |
'[public][response_code]', // 3.0.3
|
487 |
'[public][redirect_uri]', // 3.0.3
|
|
|
|
|
|
|
488 |
'[providers][Geolite2]', // 3.0.8
|
489 |
'[providers][Maxmind]',
|
490 |
'[providers][IP2Location]',
|
@@ -689,6 +692,7 @@ endif; // TEST_RESTORE_NETWORK
|
|
689 |
$result += array( $matches[1] => $which );
|
690 |
}
|
691 |
}
|
|
|
692 |
}
|
693 |
|
694 |
return $result;
|
@@ -782,24 +786,26 @@ endif; // TEST_RESTORE_NETWORK
|
|
782 |
// Blocked self requests
|
783 |
$installed = array_reverse( IP_Geo_Block_Logs::search_logs( IP_Geo_Block::get_ip_address() ) );
|
784 |
foreach ( $installed as $val ) {
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
$
|
794 |
-
|
|
|
795 |
|
796 |
-
|
797 |
-
|
798 |
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
|
|
803 |
}
|
804 |
|
805 |
return $res;
|
15 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
|
16 |
|
17 |
// check format
|
18 |
+
if ( filter_var( $ip = trim( $_POST['ip'] ), FILTER_VALIDATE_IP ) ) {
|
19 |
// get option settings and compose request headers
|
20 |
$options = IP_Geo_Block::get_option();
|
21 |
$tmp = IP_Geo_Block::get_request_headers( $options );
|
485 |
'[public][dnslkup]', // 3.0.3
|
486 |
'[public][response_code]', // 3.0.3
|
487 |
'[public][redirect_uri]', // 3.0.3
|
488 |
+
'[public][behavior]', // 3.0.10
|
489 |
+
'[behavior][time]', // 3.0.10
|
490 |
+
'[behavior][view]', // 3.0.10
|
491 |
'[providers][Geolite2]', // 3.0.8
|
492 |
'[providers][Maxmind]',
|
493 |
'[providers][IP2Location]',
|
692 |
$result += array( $matches[1] => $which );
|
693 |
}
|
694 |
}
|
695 |
+
break;
|
696 |
}
|
697 |
|
698 |
return $result;
|
786 |
// Blocked self requests
|
787 |
$installed = array_reverse( IP_Geo_Block_Logs::search_logs( IP_Geo_Block::get_ip_address() ) );
|
788 |
foreach ( $installed as $val ) {
|
789 |
+
if ( IP_Geo_Block::is_blocked( $val['result'] ) ) {
|
790 |
+
// hide port and nonce
|
791 |
+
$method = preg_replace( '/\[\d+\]/', '', $val['method'] );
|
792 |
+
$method = preg_replace( '/(' . IP_Geo_Block::PLUGIN_NAME . '-auth-nonce)(?:=|%3D)([\w]+)/', '$1=...', $method );
|
793 |
+
|
794 |
+
// add post data
|
795 |
+
$query = array();
|
796 |
+
foreach ( explode( ',', $val['data'] ) as $str ) {
|
797 |
+
if ( FALSE !== strpos( $str, '=' ) )
|
798 |
+
$query[] = $str;
|
799 |
+
}
|
800 |
|
801 |
+
if ( ! empty( $query ) )
|
802 |
+
$method .= '(' . implode( ',', $query ) . ')';
|
803 |
|
804 |
+
$res += array(
|
805 |
+
esc_html( IP_Geo_Block_Util::localdate( $val['time'], 'Y-m-d H:i:s' ) ) =>
|
806 |
+
esc_html( str_pad( $val['result'], 8 ) . $method )
|
807 |
+
);
|
808 |
+
}
|
809 |
}
|
810 |
|
811 |
return $res;
|
admin/includes/tab-accesslog.php
CHANGED
@@ -16,7 +16,7 @@ class IP_Geo_Block_Admin_Tab {
|
|
16 |
*----------------------------------------*/
|
17 |
add_settings_section(
|
18 |
$section = $plugin_slug . '-logs',
|
19 |
-
__( 'Validation logs', 'ip-geo-block' ),
|
20 |
( $options['validation']['reclogs'] ?
|
21 |
array( __CLASS__, 'validation_logs' ) :
|
22 |
array( __CLASS__, 'warn_accesslog' )
|
16 |
*----------------------------------------*/
|
17 |
add_settings_section(
|
18 |
$section = $plugin_slug . '-logs',
|
19 |
+
array( __( 'Validation logs', 'ip-geo-block' ), '<a href="http://www.ipgeoblock.com/codex/record-settings-and-logs.html" title="Record settings and logs | IP Geo Block">' . __( 'Help', 'ip-geo-block' ) . '</a>' ),
|
20 |
( $options['validation']['reclogs'] ?
|
21 |
array( __CLASS__, 'validation_logs' ) :
|
22 |
array( __CLASS__, 'warn_accesslog' )
|
admin/includes/tab-settings.php
CHANGED
@@ -59,7 +59,7 @@ class IP_Geo_Block_Admin_Tab {
|
|
59 |
* @param array $args Additional arguments that are passed to the $callback function.
|
60 |
*/
|
61 |
// Get the country code of client
|
62 |
-
$key = IP_Geo_Block::get_geolocation( $val = IP_Geo_Block::get_ip_address() );
|
63 |
|
64 |
$field = 'ip_client';
|
65 |
add_settings_field(
|
@@ -117,7 +117,7 @@ endif;
|
|
117 |
'<span title="' . __( 'Toggle selection', 'ip-geo-block' ) . '"></span>',
|
118 |
'<span title="' . __( 'Find blocked requests in “Logs“', 'ip-geo-block' ) . '"></span>',
|
119 |
__( 'Before adding as “Exception”, please click on “<a class="ip-geo-block-icon ip-geo-block-icon-alert" title="This button is just a sample."><span></span></a>” button (if exists) attached to the following list to confirm that the blocked request is not malicious.', 'ip-geo-block' ),
|
120 |
-
__( 'Open CIDR calculator for IPv4 / IPv6', 'ip-geo-block' ),
|
121 |
);
|
122 |
|
123 |
// Matching rule
|
@@ -204,8 +204,9 @@ endif;
|
|
204 |
add_settings_field(
|
205 |
$option_name.'_'.$field.'_'.$key,
|
206 |
__( '<dfn title="e.g. “192.0.64.0/18” for Jetpack server, “69.46.36.0/27” for WordFence server or “AS32934” for Facebook.">Whitelist of extra IP addresses prior to country code</dfn>', 'ip-geo-block' ) .
|
207 |
-
' (<a rel="noreferrer" href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing" title="Classless Inter-Domain Routing - Wikipedia">CIDR</a>'.
|
208 |
-
', <a rel="noreferrer" href="https://en.wikipedia.org/wiki/Autonomous_system_(Internet)" title="Autonomous system (Internet) - Wikipedia">ASN</a>)'
|
|
|
209 |
array( $context, 'callback_field' ),
|
210 |
$option_slug,
|
211 |
$section,
|
@@ -216,7 +217,7 @@ endif;
|
|
216 |
'sub-field' => $key,
|
217 |
'value' => $options[ $field ][ $key ],
|
218 |
'placeholder' => '192.168.0.0/16,2001:db8::/96,AS1234',
|
219 |
-
'after' => $comma[1]
|
220 |
)
|
221 |
);
|
222 |
|
@@ -225,8 +226,9 @@ endif;
|
|
225 |
add_settings_field(
|
226 |
$option_name.'_'.$field.'_'.$key,
|
227 |
__( '<dfn title="Server level access control is recommended (e.g. .htaccess).">Blacklist of extra IP addresses prior to country code</dfn>', 'ip-geo-block' ) .
|
228 |
-
' (<a rel="noreferrer" href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing" title="Classless Inter-Domain Routing - Wikipedia">CIDR</a>'.
|
229 |
-
', <a rel="noreferrer" href="https://en.wikipedia.org/wiki/Autonomous_system_(Internet)" title="Autonomous system (Internet) - Wikipedia">ASN</a>)'
|
|
|
230 |
array( $context, 'callback_field' ),
|
231 |
$option_slug,
|
232 |
$section,
|
@@ -237,7 +239,7 @@ endif;
|
|
237 |
'sub-field' => $key,
|
238 |
'value' => $options[ $field ][ $key ],
|
239 |
'placeholder' => '192.168.0.0/16,2001:db8::/96,AS1234',
|
240 |
-
'after' => $comma[1]
|
241 |
)
|
242 |
);
|
243 |
|
@@ -501,11 +503,11 @@ endif;
|
|
501 |
);
|
502 |
|
503 |
$desc = array(
|
504 |
-
'login' => __( 'Log in'
|
505 |
-
'register' => __( 'Register'
|
506 |
-
'resetpass' => __( 'Password Reset'
|
507 |
-
'lostpassword' => __( 'Lost Password'
|
508 |
-
'postpass' => __( 'Password protected' ),
|
509 |
);
|
510 |
|
511 |
$list = '';
|
@@ -759,7 +761,7 @@ endif;
|
|
759 |
*----------------------------------------*/
|
760 |
add_settings_section(
|
761 |
$section = $plugin_slug . '-public',
|
762 |
-
__( 'Front-end target settings', 'ip-geo-block' ),
|
763 |
array( __CLASS__, 'note_public' ),
|
764 |
$option_slug
|
765 |
);
|
@@ -983,6 +985,32 @@ endif;
|
|
983 |
)
|
984 |
);
|
985 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
986 |
// UA string and qualification
|
987 |
$key = 'ua_list';
|
988 |
add_settings_field(
|
@@ -1115,7 +1143,7 @@ endif;
|
|
1115 |
|
1116 |
add_settings_section(
|
1117 |
$section = $plugin_slug . '-database',
|
1118 |
-
__( 'Local database settings', 'ip-geo-block' ),
|
1119 |
array( __CLASS__, 'note_database' ),
|
1120 |
$option_slug
|
1121 |
);
|
@@ -1135,6 +1163,16 @@ endif;
|
|
1135 |
}
|
1136 |
}
|
1137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1138 |
// Auto updating (once a month)
|
1139 |
$field = 'update';
|
1140 |
add_settings_field(
|
@@ -1150,6 +1188,7 @@ endif;
|
|
1150 |
'sub-field' => 'auto',
|
1151 |
'value' => $options[ $field ]['auto'],
|
1152 |
'disabled' => empty( $providers ),
|
|
|
1153 |
)
|
1154 |
);
|
1155 |
|
@@ -1364,6 +1403,10 @@ endif;
|
|
1364 |
)
|
1365 |
);
|
1366 |
|
|
|
|
|
|
|
|
|
1367 |
// Garbage collection period [sec]
|
1368 |
$field = 'cache_time_gc';
|
1369 |
add_settings_field(
|
@@ -1377,6 +1420,7 @@ endif;
|
|
1377 |
'option' => $option_name,
|
1378 |
'field' => $field,
|
1379 |
'value' => $options[ $field ],
|
|
|
1380 |
)
|
1381 |
);
|
1382 |
|
@@ -1544,7 +1588,7 @@ if ( defined( 'IP_GEO_BLOCK_DEBUG' ) && IP_GEO_BLOCK_DEBUG ):
|
|
1544 |
$field = 'delete_table';
|
1545 |
add_settings_field(
|
1546 |
$option_name.'_'.$field,
|
1547 |
-
__( 'Delete DB
|
1548 |
array( $context, 'callback_field' ),
|
1549 |
$option_slug,
|
1550 |
$section,
|
@@ -1560,7 +1604,7 @@ if ( defined( 'IP_GEO_BLOCK_DEBUG' ) && IP_GEO_BLOCK_DEBUG ):
|
|
1560 |
$field = 'create_table';
|
1561 |
add_settings_field(
|
1562 |
$option_name.'_'.$field,
|
1563 |
-
__( 'Create DB
|
1564 |
array( $context, 'callback_field' ),
|
1565 |
$option_slug,
|
1566 |
$section,
|
59 |
* @param array $args Additional arguments that are passed to the $callback function.
|
60 |
*/
|
61 |
// Get the country code of client
|
62 |
+
$key = IP_Geo_Block::get_geolocation( $val = IP_Geo_Block::get_ip_address( $options ) );
|
63 |
|
64 |
$field = 'ip_client';
|
65 |
add_settings_field(
|
117 |
'<span title="' . __( 'Toggle selection', 'ip-geo-block' ) . '"></span>',
|
118 |
'<span title="' . __( 'Find blocked requests in “Logs“', 'ip-geo-block' ) . '"></span>',
|
119 |
__( 'Before adding as “Exception”, please click on “<a class="ip-geo-block-icon ip-geo-block-icon-alert" title="This button is just a sample."><span></span></a>” button (if exists) attached to the following list to confirm that the blocked request is not malicious.', 'ip-geo-block' ),
|
120 |
+
__( 'Open CIDR calculator for IPv4 / IPv6.', 'ip-geo-block' ),
|
121 |
);
|
122 |
|
123 |
// Matching rule
|
204 |
add_settings_field(
|
205 |
$option_name.'_'.$field.'_'.$key,
|
206 |
__( '<dfn title="e.g. “192.0.64.0/18” for Jetpack server, “69.46.36.0/27” for WordFence server or “AS32934” for Facebook.">Whitelist of extra IP addresses prior to country code</dfn>', 'ip-geo-block' ) .
|
207 |
+
' (<a rel="noreferrer" href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing" title="Classless Inter-Domain Routing - Wikipedia">CIDR</a>' .
|
208 |
+
', <a rel="noreferrer" href="https://en.wikipedia.org/wiki/Autonomous_system_(Internet)" title="Autonomous system (Internet) - Wikipedia">ASN</a>)' .
|
209 |
+
'<a class="ip-geo-block-icon ip-geo-block-icon-cidr" title="' . $comma[5] . '"><span class="dashicons dashicons-sos"></span></a>',
|
210 |
array( $context, 'callback_field' ),
|
211 |
$option_slug,
|
212 |
$section,
|
217 |
'sub-field' => $key,
|
218 |
'value' => $options[ $field ][ $key ],
|
219 |
'placeholder' => '192.168.0.0/16,2001:db8::/96,AS1234',
|
220 |
+
'after' => $comma[1],
|
221 |
)
|
222 |
);
|
223 |
|
226 |
add_settings_field(
|
227 |
$option_name.'_'.$field.'_'.$key,
|
228 |
__( '<dfn title="Server level access control is recommended (e.g. .htaccess).">Blacklist of extra IP addresses prior to country code</dfn>', 'ip-geo-block' ) .
|
229 |
+
' (<a rel="noreferrer" href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing" title="Classless Inter-Domain Routing - Wikipedia">CIDR</a>' .
|
230 |
+
', <a rel="noreferrer" href="https://en.wikipedia.org/wiki/Autonomous_system_(Internet)" title="Autonomous system (Internet) - Wikipedia">ASN</a>)' .
|
231 |
+
'<a class="ip-geo-block-icon ip-geo-block-icon-cidr" title="' . $comma[5] . '"><span class="dashicons dashicons-sos"></span></a>',
|
232 |
array( $context, 'callback_field' ),
|
233 |
$option_slug,
|
234 |
$section,
|
239 |
'sub-field' => $key,
|
240 |
'value' => $options[ $field ][ $key ],
|
241 |
'placeholder' => '192.168.0.0/16,2001:db8::/96,AS1234',
|
242 |
+
'after' => $comma[1],
|
243 |
)
|
244 |
);
|
245 |
|
503 |
);
|
504 |
|
505 |
$desc = array(
|
506 |
+
'login' => '<dfn title="' . __( 'Action to login as a registered user.', 'ip-geo-block' ) . '">' . __( 'Log in' ) . '</dfn>',
|
507 |
+
'register' => '<dfn title="' . __( 'Action to register new users.', 'ip-geo-block' ) . '">' . __( 'Register' ) . '</dfn>',
|
508 |
+
'resetpass' => '<dfn title="' . __( 'Action to reset a password to create a new one.', 'ip-geo-block' ) . '">' . __( 'Password Reset' ) . '</dfn>',
|
509 |
+
'lostpassword' => '<dfn title="' . __( 'Action to email a password to a registered user.', 'ip-geo-block' ) . '">' . __( 'Lost Password' ) . '</dfn>',
|
510 |
+
'postpass' => '<dfn title="' . __( 'Action to show prompt to enter a password on password protected post and page.', 'ip-geo-block' ) . '">' . __( 'Password protected' ) . '</dfn>',
|
511 |
);
|
512 |
|
513 |
$list = '';
|
761 |
*----------------------------------------*/
|
762 |
add_settings_section(
|
763 |
$section = $plugin_slug . '-public',
|
764 |
+
array( __( 'Front-end target settings', 'ip-geo-block' ), '<a href="http://www.ipgeoblock.com/codex/overview.html" title="Overview | IP Geo Block">' . __( 'Help', 'ip-geo-block' ) . '</a>'),
|
765 |
array( __CLASS__, 'note_public' ),
|
766 |
$option_slug
|
767 |
);
|
985 |
)
|
986 |
);
|
987 |
|
988 |
+
// Badly-behaved bots and crawlers
|
989 |
+
$exception = '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the frequency of request for certain period of time.">Blocking condition</dfn>', 'ip-geo-block' ) . "\n<li class=\"ip-geo-block-hide\"><ul>\n<li>";
|
990 |
+
$exception .= sprintf(
|
991 |
+
__( 'More than %1$s page view (PV) in %2$s seconds', 'ip-geo-block' ),
|
992 |
+
'<input type="number" id="ip_geo_block_settings_behavior_view" name="ip_geo_block_settings[behavior][view]" class="regular-text code" value="' . (int)$options['behavior']['view'] . '" placeholder="10" min="1" max="99" maxlength="3" />',
|
993 |
+
'<input type="number" id="ip_geo_block_settings_behavior_time" name="ip_geo_block_settings[behavior][time]" class="regular-text code" value="' . (int)$options['behavior']['time'] . '" placeholder="12" min="1" max="99" maxlength="3" /> '
|
994 |
+
);
|
995 |
+
$exception .= "</li>\n</ul></li></ul>\n";
|
996 |
+
|
997 |
+
$key = 'behavior';
|
998 |
+
add_settings_field(
|
999 |
+
$option_name.'_'.$field.'_'.$key,
|
1000 |
+
__( '<dfn title="It will validate the frequency of request.">Block badly-behaved bots and crawlers</dfn>', 'ip-geo-block' ),
|
1001 |
+
array( $context, 'callback_field' ),
|
1002 |
+
$option_slug,
|
1003 |
+
$section,
|
1004 |
+
array(
|
1005 |
+
'type' => 'checkbox',
|
1006 |
+
'option' => $option_name,
|
1007 |
+
'field' => $field,
|
1008 |
+
'sub-field' => $key,
|
1009 |
+
'value' => $options[ $field ][ $key ],
|
1010 |
+
'after' => $exception,
|
1011 |
+
)
|
1012 |
+
);
|
1013 |
+
|
1014 |
// UA string and qualification
|
1015 |
$key = 'ua_list';
|
1016 |
add_settings_field(
|
1143 |
|
1144 |
add_settings_section(
|
1145 |
$section = $plugin_slug . '-database',
|
1146 |
+
array( __( 'Local database settings', 'ip-geo-block' ), '<a href="http://www.ipgeoblock.com/codex/geolocation-api-library.html" title="Geolocation API library | IP Geo Block">' . __( 'Help', 'ip-geo-block' ) . '</a>'),
|
1147 |
array( __CLASS__, 'note_database' ),
|
1148 |
$option_slug
|
1149 |
);
|
1163 |
}
|
1164 |
}
|
1165 |
|
1166 |
+
// Get the next schedule of cron
|
1167 |
+
if ( ! ( $tmp = wp_next_scheduled( IP_Geo_Block::CRON_NAME, array( FALSE ) ) ) ) {
|
1168 |
+
global $wpdb;
|
1169 |
+
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs` ORDER BY `blog_id` ASC" );
|
1170 |
+
switch_to_blog( $blog_ids[0] ); // main blog
|
1171 |
+
$tmp = wp_next_scheduled( IP_Geo_Block::CRON_NAME, array( FALSE ) );
|
1172 |
+
restore_current_blog();
|
1173 |
+
}
|
1174 |
+
$tmp = $tmp ? IP_Geo_Block_Util::localdate( $tmp ) : '<span class="ip-geo-block-warn">' . __( 'Task could not be found in WP-Cron. Please try to deactivate this plugin once and activate again.', 'ip-geo-block' ). '</span>';
|
1175 |
+
|
1176 |
// Auto updating (once a month)
|
1177 |
$field = 'update';
|
1178 |
add_settings_field(
|
1188 |
'sub-field' => 'auto',
|
1189 |
'value' => $options[ $field ]['auto'],
|
1190 |
'disabled' => empty( $providers ),
|
1191 |
+
'after' => $options[ $field ]['auto'] ? '<p class="ip-geo-block-desc">' . sprintf( __( 'Next schedule: %s', 'ip-geo-block'), $tmp ) . '</p>' : '',
|
1192 |
)
|
1193 |
);
|
1194 |
|
1403 |
)
|
1404 |
);
|
1405 |
|
1406 |
+
// Get the next schedule of cron
|
1407 |
+
$tmp = wp_next_scheduled( IP_Geo_Block::CACHE_NAME );
|
1408 |
+
$tmp = $tmp ? IP_Geo_Block_Util::localdate( $tmp ) : '<span class="ip-geo-block-warn">' . __( 'Task could not be found in WP-Cron. Please try to deactivate this plugin once and activate again.', 'ip-geo-block' ). '</span>';
|
1409 |
+
|
1410 |
// Garbage collection period [sec]
|
1411 |
$field = 'cache_time_gc';
|
1412 |
add_settings_field(
|
1420 |
'option' => $option_name,
|
1421 |
'field' => $field,
|
1422 |
'value' => $options[ $field ],
|
1423 |
+
'after' => '<p class="ip-geo-block-desc">' . sprintf( __( 'Next schedule: %s', 'ip-geo-block'), $tmp ) . '</p>',
|
1424 |
)
|
1425 |
);
|
1426 |
|
1588 |
$field = 'delete_table';
|
1589 |
add_settings_field(
|
1590 |
$option_name.'_'.$field,
|
1591 |
+
__( 'Delete DB tables for this plugin', 'ip-geo-block' ),
|
1592 |
array( $context, 'callback_field' ),
|
1593 |
$option_slug,
|
1594 |
$section,
|
1604 |
$field = 'create_table';
|
1605 |
add_settings_field(
|
1606 |
$option_name.'_'.$field,
|
1607 |
+
__( 'Create DB tables for this plugin', 'ip-geo-block' ),
|
1608 |
array( $context, 'callback_field' ),
|
1609 |
$option_slug,
|
1610 |
$section,
|
admin/js/admin.js
CHANGED
@@ -9,7 +9,8 @@
|
|
9 |
'use strict';
|
10 |
|
11 |
// External variables
|
12 |
-
var
|
|
|
13 |
window_width = $(window).width(),
|
14 |
ip_geo_block = IP_GEO_BLOCK,
|
15 |
ip_geo_block_auth = IP_GEO_BLOCK_AUTH;
|
@@ -38,8 +39,12 @@
|
|
38 |
}).replace(/&(#\d{2,4}|\w{4,7});/g, "&$1;"); // revert html character entity
|
39 |
}
|
40 |
|
|
|
|
|
|
|
|
|
41 |
function stripTag(str) {
|
42 |
-
return escapeHTML(str.toString().replace(/(<([^>]+)>)/ig, ''));
|
43 |
}
|
44 |
|
45 |
function onresize(name, callback) {
|
@@ -104,7 +109,9 @@
|
|
104 |
})
|
105 |
|
106 |
.fail(function (jqXHR /*,textStatus, errorThrown*/) {
|
107 |
-
|
|
|
|
|
108 |
})
|
109 |
|
110 |
.always(function () {
|
@@ -174,10 +181,18 @@
|
|
174 |
// checkbox
|
175 |
$this.siblings('input[name^="' + ID('%', 'settings') + '"]:checkbox').prop('disabled', !stat);
|
176 |
|
177 |
-
// folding list
|
178 |
-
$elem
|
179 |
-
|
180 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
}
|
182 |
|
183 |
// Show / Hide Exceptions
|
@@ -233,6 +248,7 @@
|
|
233 |
function set_front_end($this) {
|
234 |
var checked = $this.is(':checked'),
|
235 |
select = $(ID('@', 'public_target_rule')),
|
|
|
236 |
parent = $this.closest('tr').nextAll('tr');
|
237 |
|
238 |
// Enable / Disable descendent items
|
@@ -242,7 +258,12 @@
|
|
242 |
parent.find(ID('.', 'desc')).css('opacity', checked ? 1.0 : 0.5);
|
243 |
|
244 |
// Show / Hide validation target
|
245 |
-
show_descendants($this, select, '1' === select.val() ? true : false);
|
|
|
|
|
|
|
|
|
|
|
246 |
}
|
247 |
|
248 |
/**
|
@@ -481,7 +502,7 @@
|
|
481 |
}
|
482 |
|
483 |
if (0 < (w = $id.width()) &&
|
484 |
-
'undefined' !== typeof chart.dataStacked[id] &&
|
485 |
'undefined' !== typeof chart.viewStacked[id]) {
|
486 |
|
487 |
i = ID('range');
|
@@ -650,7 +671,11 @@
|
|
650 |
var cookie = loadCookie(tabNo);
|
651 |
|
652 |
// Click event handler to show/hide form-table
|
653 |
-
$('form').on('click', 'h2,h3', function (/*event*/) {
|
|
|
|
|
|
|
|
|
654 |
toggleSection($(this), tabNo, cookie);
|
655 |
return false;
|
656 |
});
|
@@ -940,6 +965,12 @@
|
|
940 |
return false;
|
941 |
});
|
942 |
|
|
|
|
|
|
|
|
|
|
|
|
|
943 |
// Register event handler at specific tab
|
944 |
switch (tabNo) {
|
945 |
/*----------------------------------------
|
@@ -1004,10 +1035,10 @@
|
|
1004 |
'<html lang=en>' +
|
1005 |
'<meta charset=utf-8>' +
|
1006 |
'<title>CIDR calculator for IPv4 / IPv6</title>' +
|
1007 |
-
'<link href="' + src + 'css/cidr.min.css" rel=stylesheet>' +
|
1008 |
'<div class="row container"><div class=row id=i><fieldset class="col span_11"><legend>Range <input id=a type=button value=Clear tabindex=1></legend><textarea id=c name=range placeholder="192.168.0.0 - 192.168.255.255" rows=5 wrap=off tabindex=2></textarea></fieldset><ul class="col span_2" id=h><li class=row><input id=e type=button value=→ class="col span_24" tabindex=3><li class=row><input id=f type=button value=← class="col span_24" tabindex=6></ul><fieldset class="col span_11"><legend>CIDR <input id=b type=button value=Clear tabindex=4></legend><textarea id=d name=cidr placeholder=192.168.0.0/16 rows=5 wrap=off tabindex=5></textarea></fieldset></div><div class=row id=j><span class=col id=g> </span></div></div>' +
|
1009 |
/* '<div class="container row"><div class="row" id="top"><fieldset class="col span_11"><legend>Range <input type="button" id="r_clear" value="Clear" tabindex="1" /></legend><textarea name="range" id="r_text" rows="5" wrap="off" placeholder="192.168.0.0 - 192.168.255.255" tabindex="2"></textarea></fieldset><ul class="col span_2" id="b_conv"><li class="row"><input class="col span_24" type="button" id="r_conv" value="→" tabindex="3" /></li><li class="row"><input class="col span_24" type="button" id="c_conv" value="←" tabindex="6" /></li></ul><fieldset class="col span_11"><legend>CIDR <input type="button" id="c_clear" value="Clear" tabindex="4" /></legend><textarea name="cidr" id="c_text" rows="5" wrap="off" placeholder="192.168.0.0/16" tabindex="5"></textarea></fieldset></div><div class="row" id="bottom"><span class="col" id="msg"> </span></div></div>' +*/
|
1010 |
-
'<script src="' + src + 'js/cidr.min.js"></script>'
|
1011 |
);
|
1012 |
win.document.close();
|
1013 |
return false;
|
@@ -1192,7 +1223,7 @@
|
|
1192 |
|
1193 |
// make an anchor tab with search query
|
1194 |
s = 'admin' === target ? (key + '=' + val) : ('/' + key + '/' + val + '/');
|
1195 |
-
s = '<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="' + ip_geo_block_auth.sites[0] + 'options-general.php' + // only main site
|
1196 |
'?page=ip-geo-block&tab=4&s=' + encodeURIComponent(s) + '" title="' + title.replace('%s', s) + '" target="_blank"><span></span></a>';
|
1197 |
|
1198 |
// add a new list when not found in existent key
|
@@ -1218,7 +1249,7 @@
|
|
1218 |
// update status of checkbox
|
1219 |
$(ID('@', 'exception_' + target)).trigger('change');
|
1220 |
$(ID('#', 'find-' + target)).append(
|
1221 |
-
' ' + '<span class="ip-geo-block-
|
1222 |
);
|
1223 |
});
|
1224 |
|
@@ -1249,6 +1280,13 @@
|
|
1249 |
return stopPropergation(event);
|
1250 |
}).change();
|
1251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1252 |
/*---------------------------
|
1253 |
* Local database settings
|
1254 |
*---------------------------*/
|
@@ -1665,10 +1703,10 @@
|
|
1665 |
// animation on update
|
1666 |
new_class = ID(''),
|
1667 |
add_class = function (row, data, prefix) {
|
1668 |
-
if (
|
1669 |
-
$(row).addClass(new_class + prefix + 'passed');
|
1670 |
-
} else {
|
1671 |
$(row).addClass(new_class + prefix + 'blocked');
|
|
|
|
|
1672 |
}
|
1673 |
},
|
1674 |
|
@@ -1784,7 +1822,7 @@
|
|
1784 |
// Search Geolocation
|
1785 |
$(ID('@', 'get_location')).on('click', function (/*event*/) {
|
1786 |
var whois = $(ID('#', 'whois')), obj,
|
1787 |
-
ip = $(ID('@', 'ip_address')).val();
|
1788 |
|
1789 |
if (ip) {
|
1790 |
whois.hide().empty();
|
@@ -1871,6 +1909,14 @@
|
|
1871 |
return false;
|
1872 |
});
|
1873 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1874 |
// Preset IP address
|
1875 |
if ($(ID('@', 'ip_address')).val()) {
|
1876 |
$(ID('@', 'get_location')).click();
|
9 |
'use strict';
|
10 |
|
11 |
// External variables
|
12 |
+
var skip_error = false,
|
13 |
+
timer_stack = [],
|
14 |
window_width = $(window).width(),
|
15 |
ip_geo_block = IP_GEO_BLOCK,
|
16 |
ip_geo_block_auth = IP_GEO_BLOCK_AUTH;
|
39 |
}).replace(/&(#\d{2,4}|\w{4,7});/g, "&$1;"); // revert html character entity
|
40 |
}
|
41 |
|
42 |
+
function is_blocked( result ) {
|
43 |
+
return -1 === result.indexOf('pass');
|
44 |
+
}
|
45 |
+
|
46 |
function stripTag(str) {
|
47 |
+
return str ? escapeHTML(str.toString().replace(/(<([^>]+)>)/ig, '')) : '';
|
48 |
}
|
49 |
|
50 |
function onresize(name, callback) {
|
109 |
})
|
110 |
|
111 |
.fail(function (jqXHR /*,textStatus, errorThrown*/) {
|
112 |
+
if (!skip_error) {
|
113 |
+
warning(jqXHR.status, jqXHR.responseText, request.action);
|
114 |
+
}
|
115 |
})
|
116 |
|
117 |
.always(function () {
|
181 |
// checkbox
|
182 |
$this.siblings('input[name^="' + ID('%', 'settings') + '"]:checkbox').prop('disabled', !stat);
|
183 |
|
184 |
+
// folding the list
|
185 |
+
if ($.isArray($elem)) {
|
186 |
+
$.each($elem, function (i, elm) {
|
187 |
+
$(elm).nextAll(ID('.', 'settings-folding')).each(function (j, obj) {
|
188 |
+
fold_elements($(obj), stat && mask[i]);
|
189 |
+
});
|
190 |
+
});
|
191 |
+
} else {
|
192 |
+
$elem.nextAll(ID('.', 'settings-folding')).each(function (j, obj) {
|
193 |
+
fold_elements($(obj), stat && mask);
|
194 |
+
});
|
195 |
+
}
|
196 |
}
|
197 |
|
198 |
// Show / Hide Exceptions
|
248 |
function set_front_end($this) {
|
249 |
var checked = $this.is(':checked'),
|
250 |
select = $(ID('@', 'public_target_rule')),
|
251 |
+
behave = $(ID('@', 'public_behavior')),
|
252 |
parent = $this.closest('tr').nextAll('tr');
|
253 |
|
254 |
// Enable / Disable descendent items
|
258 |
parent.find(ID('.', 'desc')).css('opacity', checked ? 1.0 : 0.5);
|
259 |
|
260 |
// Show / Hide validation target
|
261 |
+
show_descendants($this, [select, behave], ['1' === select.val() ? true : false, behave.val()]);
|
262 |
+
|
263 |
+
// Render descendant element
|
264 |
+
if (checked) {
|
265 |
+
behave.change();
|
266 |
+
}
|
267 |
}
|
268 |
|
269 |
/**
|
502 |
}
|
503 |
|
504 |
if (0 < (w = $id.width()) &&
|
505 |
+
'undefined' !== typeof chart.dataStacked[id] &&
|
506 |
'undefined' !== typeof chart.viewStacked[id]) {
|
507 |
|
508 |
i = ID('range');
|
671 |
var cookie = loadCookie(tabNo);
|
672 |
|
673 |
// Click event handler to show/hide form-table
|
674 |
+
$('form').on('click', 'h2,h3 a', function (/*event*/) {
|
675 |
+
window.open(this.href, null);
|
676 |
+
return false;
|
677 |
+
})
|
678 |
+
.on('click', 'h2,h3', function (/*event*/) {
|
679 |
toggleSection($(this), tabNo, cookie);
|
680 |
return false;
|
681 |
});
|
965 |
return false;
|
966 |
});
|
967 |
|
968 |
+
// Prevent warning when page transition happens during ajax
|
969 |
+
$(window).on('beforeunload', function(/*event*/) {
|
970 |
+
skip_error = true;
|
971 |
+
return;
|
972 |
+
});
|
973 |
+
|
974 |
// Register event handler at specific tab
|
975 |
switch (tabNo) {
|
976 |
/*----------------------------------------
|
1035 |
'<html lang=en>' +
|
1036 |
'<meta charset=utf-8>' +
|
1037 |
'<title>CIDR calculator for IPv4 / IPv6</title>' +
|
1038 |
+
'<link href="' + src + 'css/cidr.min.css?v=.1" rel=stylesheet>' +
|
1039 |
'<div class="row container"><div class=row id=i><fieldset class="col span_11"><legend>Range <input id=a type=button value=Clear tabindex=1></legend><textarea id=c name=range placeholder="192.168.0.0 - 192.168.255.255" rows=5 wrap=off tabindex=2></textarea></fieldset><ul class="col span_2" id=h><li class=row><input id=e type=button value=→ class="col span_24" tabindex=3><li class=row><input id=f type=button value=← class="col span_24" tabindex=6></ul><fieldset class="col span_11"><legend>CIDR <input id=b type=button value=Clear tabindex=4></legend><textarea id=d name=cidr placeholder=192.168.0.0/16 rows=5 wrap=off tabindex=5></textarea></fieldset></div><div class=row id=j><span class=col id=g> </span></div></div>' +
|
1040 |
/* '<div class="container row"><div class="row" id="top"><fieldset class="col span_11"><legend>Range <input type="button" id="r_clear" value="Clear" tabindex="1" /></legend><textarea name="range" id="r_text" rows="5" wrap="off" placeholder="192.168.0.0 - 192.168.255.255" tabindex="2"></textarea></fieldset><ul class="col span_2" id="b_conv"><li class="row"><input class="col span_24" type="button" id="r_conv" value="→" tabindex="3" /></li><li class="row"><input class="col span_24" type="button" id="c_conv" value="←" tabindex="6" /></li></ul><fieldset class="col span_11"><legend>CIDR <input type="button" id="c_clear" value="Clear" tabindex="4" /></legend><textarea name="cidr" id="c_text" rows="5" wrap="off" placeholder="192.168.0.0/16" tabindex="5"></textarea></fieldset></div><div class="row" id="bottom"><span class="col" id="msg"> </span></div></div>' +*/
|
1041 |
+
'<script src="' + src + 'js/cidr.min.js?v=.1"></script>'
|
1042 |
);
|
1043 |
win.document.close();
|
1044 |
return false;
|
1223 |
|
1224 |
// make an anchor tab with search query
|
1225 |
s = 'admin' === target ? (key + '=' + val) : ('/' + key + '/' + val + '/');
|
1226 |
+
s = '<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="' + ip_geo_block_auth.sites[0] + ip_geo_block_auth.admin + 'options-general.php' + // only main site
|
1227 |
'?page=ip-geo-block&tab=4&s=' + encodeURIComponent(s) + '" title="' + title.replace('%s', s) + '" target="_blank"><span></span></a>';
|
1228 |
|
1229 |
// add a new list when not found in existent key
|
1249 |
// update status of checkbox
|
1250 |
$(ID('@', 'exception_' + target)).trigger('change');
|
1251 |
$(ID('#', 'find-' + target)).append(
|
1252 |
+
' ' + '<span class="ip-geo-block-warn">' + stripTag(ip_geo_block.msg[8].replace('%d', n)) + '</span>'
|
1253 |
);
|
1254 |
});
|
1255 |
|
1280 |
return stopPropergation(event);
|
1281 |
}).change();
|
1282 |
|
1283 |
+
// Badly-behaved bots and crawlers
|
1284 |
+
$(ID('@', 'public_behavior')).on('change', function (event) {
|
1285 |
+
var $this = $(this);
|
1286 |
+
fold_elements($this.siblings('ul'), $this.prop('checked'));
|
1287 |
+
return stopPropergation(event);
|
1288 |
+
}).change();
|
1289 |
+
|
1290 |
/*---------------------------
|
1291 |
* Local database settings
|
1292 |
*---------------------------*/
|
1703 |
// animation on update
|
1704 |
new_class = ID(''),
|
1705 |
add_class = function (row, data, prefix) {
|
1706 |
+
if (is_blocked(data[7 /* result */])) {
|
|
|
|
|
1707 |
$(row).addClass(new_class + prefix + 'blocked');
|
1708 |
+
} else {
|
1709 |
+
$(row).addClass(new_class + prefix + 'passed');
|
1710 |
}
|
1711 |
},
|
1712 |
|
1822 |
// Search Geolocation
|
1823 |
$(ID('@', 'get_location')).on('click', function (/*event*/) {
|
1824 |
var whois = $(ID('#', 'whois')), obj,
|
1825 |
+
ip = $.trim($(ID('@', 'ip_address')).val());
|
1826 |
|
1827 |
if (ip) {
|
1828 |
whois.hide().empty();
|
1909 |
return false;
|
1910 |
});
|
1911 |
|
1912 |
+
// Enter key in textbox
|
1913 |
+
$(ID('@', 'ip_address')).on('keypress', function (event) {
|
1914 |
+
if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) {
|
1915 |
+
$(ID('@', 'get_location')).click();
|
1916 |
+
return false;
|
1917 |
+
}
|
1918 |
+
});
|
1919 |
+
|
1920 |
// Preset IP address
|
1921 |
if ($(ID('@', 'ip_address')).val()) {
|
1922 |
$(ID('@', 'get_location')).click();
|
admin/js/admin.min.js
CHANGED
@@ -3,4 +3,4 @@
|
|
3 |
Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
This software is released under the MIT License.
|
5 |
*/
|
6 |
-
(function(b,f,t){function a(b,a){var c={".":".ip-geo-block-","#":"#ip-geo-block-","@":"#ip_geo_block_settings_",$:"ip-geo-block-","%":"ip_geo_block_","!":"ip_geo_block_settings_"};return"undefined"!==typeof a?c[b]+a:c.$+b}function M(b){return b.toString().replace(/[&<>"']/g,function(b){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[b]}).replace(/&(#\d{2,4}|\w{4,7});/g,"&$1;")}function k(b){return M(b.toString().replace(/(<([^>]+)>)/ig,""))}function E(a,e){var c=b(f).width();c!==F&&(F=c,"undefined"===typeof p[a]&&(p[a]={id:!1,callback:e}),b(f).off("resize").on("resize",function(){!1!==p[a].id&&f.clearTimeout(p[a].id);p[a].time=f.setTimeout(p[a].callback,200);return!1}))}function w(c,e){e?b(a("#",c)).addClass(a("loading")):b(a("#",c)).removeClass(a("loading"))}function x(b,a){f.confirm(k(b))&&a()}function D(b,a,g){f.alert(k(a||d.msg[12].replace("%s",g)+" ("+b+")"))}function J(b,a){-1!==f.location.href.indexOf(b)&&(f.location=k(b)+(a?"&"+k(a):"")+"&ip-geo-block-auth-nonce="+K.nonce)}function m(a,e,g,q){a&&w(a,!0);e.action=d.action;e.nonce=d.nonce;b.post(d.url,e).done(function(b){g&&g(b)}).fail(function(b){D(b.status,b.responseText,e.action)}).always(function(){a&&("object"===typeof q?b.when.apply(b,q).then(function(){w(a,!1)}):w(a,!1))})}function N(b,a){m(b,{cmd:"clear-"+b,which:a},function(b){J(b.page,b.tab)})}function R(b){m(b,{cmd:b},function(b){J(b.page,b.tab)})}function y(b){b.stopImmediatePropagation();return!1}function O(b,e){e?b.removeClass("folding-disable"):(b.children(a(".","hide")).hide(),b.addClass("folding-disable"),b.removeClass(a("dropdown")).addClass(a("dropup")))}function P(c,e,g){var q=0===c.prop("type").indexOf("checkbox")&&c.is(":checked")||0===c.prop("type").indexOf("select")&&"0"!==c.val();c.siblings('input[name^="'+a("%","settings")+'"]:checkbox').prop("disabled",!q);e.nextAll(a(".","settings-folding")).each(function(a,c){O(b(c),q&&g)})}function S(c){var e=a("@","validation_ajax_");O(c.closest("ul").next(),b(e+"1").is(":checked")||b(e+"2").is(":checked"))}function G(b){return String(b).replace(/[a-z]/gi,function(b){return String.fromCharCode(b.charCodeAt(0)+("n">b.toLowerCase()?13:-13))})}function ba(b,a){var c=new f.FileReader;c.onload=function(b){a&&a(b.target.result)};c.onerror=function(b){D("Error",b.target.error.code)};c.readAsText(b)}function T(c){var e=c.is(":checked"),g=b(a("@","public_target_rule")),d=c.closest("tr").nextAll("tr");d.find('[name^="'+a("%","settings")+'"]').prop("disabled",!e);d.find(a(".","desc")).css("opacity",e?1:.5);P(c,g,"1"===g.val()?!0:!1)}function Q(c,e){c&&("string"===typeof c&&(c=JSON.parse(c)),e&&b('input[type="checkbox"]').prop("checked",!1).change(),b(a("#","import")).closest("form").deserialize(c),b(a("@","exception_admin")+","+a("@","validation_mimetype")).change(),b('select[name*="'+a("%","settings")+'"]').change(),b(a("@","validation_login")).change(),T(b(a("@","validation_public"))),S(b(a("@","validation_ajax_1"))),e&&(e=a("%","settings[providers][IPInfoDB]"),b(a("@","providers_IPInfoDB")).prop("checked",c[e]?!0:!1)))}function ca(b,a){var c=Math.ceil(b.length/a),e=[],d;for(d=0;d<c;++d){var l=d*a;e.push(b.slice(l,l+a))}return e}function z(c){"object"===typeof f.google&&(1===c?b(a("#","chart-countries")).length&&(h.drawPie(a("chart-countries")),h.drawLine(a("chart-daily"),"date")):5===c&&b(a(".","network")).each(function(a,c){h.drawStacked(b(c).attr("id"))}))}function U(b){if("object"===typeof f.google){var a=["corechart"];5===b&&a.push("bar");f.google.load("visualization","1",{packages:a,callback:function(){z(b)}});E("draw-chart."+b,function(){z(b)})}}function da(b){var a,c="undefined"!==typeof wpCookies&&wpCookies.getHash("ip-geo-block")||[];for(a in c)c.hasOwnProperty(a)&&(c[a]=c[a].replace(/[^ox\d]/g,"").split(""));"undefined"===typeof c[b]&&(c[b]=[]);return c}function A(a){var c,g,d=[];b.each(a,function(b,a){d[b]="";if("undefined"!==typeof a&&(g=a.length))for(d[b]=a[0]||"o",c=1;c<g;++c)d[b]+=a[c]||"o"});"undefined"!==typeof wpCookies&&wpCookies.setHash("ip-geo-block",d,new Date(Date.now()+2592E6),K.home+K.admin)}function ea(c){var e=da(c);b("form").on("click","h2,h3",function(){var d=b(this),q=d.closest("fieldset").data("section"),f=d.parent().nextAll(".panel-body").toggle();d.toggleClass(a("dropup")).toggleClass(a("dropdown"));(d=d.hasClass(a("dropdown")))?f.addClass(a("border")).trigger(a("show-body")):f.removeClass(a("border"));e[c][q]=d?"o":"x";A(e);z(c);return!1});b(a("#","toggle-sections")).on("click",function(){var d,f=b(a(".","field")).find("h2,h3"),h=[a("dropdown"),a("dropup")],l=f.filter("."+h[0]).length;f.each(function(g){d=b(this);d.removeClass(h.join(" ")).addClass(l?h[1]:h[0]);d=d.parent().nextAll(".panel-body").toggle(l?!1:!0);l?d.removeClass(a("border")):d.addClass(a("border")).trigger("show-body");e[c][g]=l?"x":"o"});A(e);z(c);return!1});return e}function V(c){b("body").append('<div style="display:none"><form method="POST" id="'+a("export-form")+'" action="'+d.url.replace("ajax.php","post.php")+'"><input type="hidden" name="action" value="'+d.action+'" /><input type="hidden" name="nonce" value="'+d.nonce+'" /><input type="hidden" name="cmd" value="'+c+'" /><input type="hidden" name="data" value="" id="'+a("export-data")+'"/><input type="submit" value="submit" /></form><input type="file" name="settings" id="'+a("file-dialog")+'" /></div>')}function W(b,a,d,f){b=b.cloneNode(!1);b.setAttribute("title",k(d));a=a.cloneNode(!1);a.setAttribute("class","dashicons dashicons-"+f);b.appendChild(a);return b}function X(c,e,g){b.extend(!0,b.fn.dataTable.defaults,g,{dom:"tp",serverSide:!1,autoWidth:!1,processing:!0,deferRender:!0,deferLoading:10,info:!1,lengthChange:!1,language:{emptyTable:d.i18n[1],loadingRecords:d.i18n[0],processing:d.i18n[0],zeroRecords:d.i18n[2],paginate:{first:"«",last:"»",next:"›",previous:"‹"}},responsive:{details:{type:"column",target:"td:nth-child(n+2)"}},columnDefs:[{width:"1.25em",targets:0},{orderable:!1,targets:0},{searchable:!1,targets:0},{targets:[0],data:null,defaultContent:'<input type="checkbox">'}],pagingType:"full_numbers",pageLength:10,scroller:!0,scrollY:1E4,scrollCollapse:!0,drawCallback:function(c){var g=b(a("#",e.tableID)).find("td.dataTables_empty");3>c.iDraw?g.html(d.i18n[0]):3===c.iDraw&&(g.html(d.i18n[1]),g=b(a("@","search_filter")),g.val()&&g.trigger("keyup"))}});var h=b(a("#",e.tableID)).DataTable({ajax:{url:d.url,type:"POST",data:{cmd:e.ajaxCMD,action:d.action,nonce:d.nonce}},mark:!0}),k=function(){h.columns.adjust().responsive.recalc().draw(!1)};E("draw-table."+c,k);b(a("#",e.sectionID)).find(".panel-body").off(a("show-body")).on(a("show-body"),function(){k();return!1}).off("change").on("change",'th>input[type="checkbox"]',function(){var c=b(this).prop("checked");b(a("#",e.tableID)).find('td>input[type="checkbox"]').prop("checked",c);return!1});b(a("#","select-target")).off("change").on("change",function(){var c=b(this).find('input[name="'+a("target")+'"]:checked').val();h.columns(e.targetColumn).search("all"!==c?c:"").draw();return!1}).trigger("change");b(a("#","bulk-action")).off("click").on("click",function(){var g=b(this).prev().val(),f=/(<([^>]+)>)/ig,r={IP:[],AS:[]},k,q=b("table.dataTable").find("td>input:checked");if(!g)return!1;if(!q.length)return D(null,d.msg[11]),!1;q.each(function(){k=h.cell(this.parentNode).data();r.IP.push(k[e.columnIP].replace(f,""));r.AS.push(k[e.columnAS].replace(f,""))});r.IP.length&&m("loading",{cmd:g,which:r},function(d){"undefined"!==typeof d.page?J(d.page,"tab="+c):d&&(h.ajax.reload(),b(a("#",e.tableID)).find('th input[type="checkbox"]').prop("checked",!1))});return!1});b(a("@","search_filter")).off("keyup").on("keyup",function(){h.search(this.value,!1,!0,!/[A-Z]/.test(this.value)).draw();return!1});b(a("#","reset-filter")).off("click").on("click",function(){b(a("@","search_filter")).val("");h.search("").draw();return!1});b(a("@","clear_all")).off("click").on("click",function(){x(d.msg[1===c?4:5],function(){N(1===c?"cache":"logs",null)});return!1});b("table.dataTable tbody").on("click","a",function(){var a=f.location.search.slice(1).split("&"),e=a.length,d={},g;for(g=0;g<e;++g){var h=a[g].split("=");d[h[0]]=h[1]}d.tab=1===c?4:2;d.s=b(this).text().replace(/[^\w\.:\*]/,"");h=[];for(g in d)d.hasOwnProperty(g)&&h.push(g+"="+d[g]);f.open(f.location.pathname+"?"+h.join("&"),"_blank");return!1});return h}var p=[],F=b(f).width(),d=IP_GEO_BLOCK,K=IP_GEO_BLOCK_AUTH;b.fn.deserialize=function(a){return this.each(function(){var c,d=this,h={};for(c in a)if(a.hasOwnProperty(c))try{var f=decodeURIComponent(c);var k=decodeURIComponent(a[c]);h.hasOwnProperty(f)||(h[f]=[]);h[f].push(k)}catch(H){}b.each(h,function(a,e){c=b('[name="'+a+'"]:input',d).val(e);"hidden"!==c.attr("type")&&c.before('<span style="color:red">*</span>')})})};var h={dataPie:[],viewPie:[],drawPie:function(a){if("undefined"===typeof h.dataPie[a]){var c=h.dataPie[a]=new f.google.visualization.DataTable;c.addColumn("string","Country");c.addColumn("number","Requests");c=b.parseJSON(b("#"+a).attr("data-"+a));h.dataPie[a].addRows(c)}"undefined"===typeof h.viewPie[a]&&(h.viewPie[a]=new f.google.visualization.PieChart(t.getElementById(a)));"undefined"!==typeof h.dataPie[a]&&"undefined"!==typeof h.viewPie[a]&&0<b("#"+a).width()&&h.viewPie[a].draw(h.dataPie[a],{backgroundColor:{fill:"transparent"},chartArea:{left:0,top:"5%",width:"100%",height:"90%"},sliceVisibilityThreshold:.015})},dataLine:[],viewLine:[],drawLine:function(a,d){if("undefined"===typeof h.dataLine[a]){var c=h.dataLine[a]=new f.google.visualization.DataTable;c.addColumn(d,"Date");c.addColumn("number","comment");c.addColumn("number","xmlrpc");c.addColumn("number","login");c.addColumn("number","admin");c.addColumn("number","public");var e=b.parseJSON(b("#"+a).attr("data-"+a));var k=e.length;for(c=0;c<k;++c)e[c][0]=new Date(1E3*e[c][0]);h.dataLine[a].addRows(e)}"undefined"===typeof h.viewLine[a]&&(h.viewLine[a]=new f.google.visualization.LineChart(t.getElementById(a)));"undefined"!==typeof h.dataLine[a]&&"undefined"!==typeof h.viewLine[a]&&0<(c=b("#"+a).width())&&h.viewLine[a].draw(h.dataLine[a],{legend:{position:"bottom"},backgroundColor:{fill:"transparent"},hAxis:{format:"MM/dd"+("datetime"===d?" HH:mm":"")},vAxis:{textPosition:320<c?"out":"in"},chartArea:{left:320<c?"10%":0,top:"5%",width:"100%",height:"75%"}})},dataStacked:[],viewStacked:[],drawStacked:function(c){var d,g,k=b("#"+c);"undefined"===typeof h.dataStacked[c]&&(g=b.parseJSON(k.attr("data-"+c)))&&(g.unshift(["site","comment","xmlrpc","login","admin","poblic",{role:"link"}]),h.dataStacked[c]=f.google.visualization.arrayToDataTable(g));"undefined"===typeof h.viewStacked[c]&&(h.viewStacked[c]=new f.google.visualization.BarChart(t.getElementById(c)),f.google.visualization.events.addListener(h.viewStacked[c],"animationfinish",function(){var d,e,f,g=[],m=h.dataStacked[c],l=m.getNumberOfRows(),q=b(a("#","open-new")).prop("checked");for(d=0;d<l;d++)g.push({label:m.getValue(d,0),link:m.getValue(d,6)});l="http://www.w3.org/1999/xlink";k.find("text").each(function(b,a){f=a.parentNode;var c;if(c="g"===f.tagName.toLowerCase()){a:{c=a.textContent;var d,h=g.length;c=c.replace("\u2026","");for(d=0;d<h;++d)if(g.hasOwnProperty(d)&&0===g[d].label.indexOf(c)){c=d;break a}c=-1}c=-1!==(b=c)}c&&(e=t.createElementNS("http://www.w3.org/2000/svg","a"),e.setAttributeNS(l,"xlink:href",g[b].link),e.setAttributeNS(l,"title",g[b].label),e.setAttribute("target",q?"_blank":"_self"),e.setAttribute("class","site"),e.appendChild(f.removeChild(a)),f.appendChild(e),g.splice(b,1))})}));if(0<(d=k.width())&&"undefined"!==typeof h.dataStacked[c]&&"undefined"!==typeof h.viewStacked[c]){var m=a("range");var l=b.parseJSON(b("."+m).attr("data-"+m));g=h.dataStacked[c];m=40*g.getNumberOfRows();h.viewStacked[c].draw(g,{width:d,height:m+80,allowHtml:!0,isStacked:!0,legend:{position:"top"},chartArea:{top:50,left:90,width:"100%",height:m},hAxis:{minValue:0,maxValue:l[1]},backgroundColor:{fill:"transparent"},animation:{startup:!0,duration:200,easing:"out"}})}},ajaxStacked:function(c,d,f,k){c=Math.max(0,Math.min(4,c));d=5*Math.max(1,Math.min(5,d));m(null,{cmd:"restore-network",which:c,offset:d*f*k,length:d},function(c){var e,f,g,k,m;c=ca(c,d);b(a(".","network")).each(function(a,l){if("undefined"!==typeof c[a]){k=b(l).attr("id");m=h.dataStacked[k];g=Math.min(d,c[a].length);for(e=0;e<g;++e)for(f=1;5>=f;f++)m.setValue(e,f,c[a][e][f]);h.drawStacked(k)}})})}};b(function(){var c=Number(d.tab)||0,e=ea(c);b(a(".","inhibit")).on("submit",function(){return!1});switch(c){case 0:var g=a("%","settings");b('[id^="'+a("scan-")+'"]').on("click",function(){var c=b(this),d=c.attr("id"),e=c.parent();m(d.replace(/^.*(?:scan)/,"scanning"),{cmd:"scan-code",which:d.replace(a("scan-"),"")},function(b){e.children("ul").length||e.append('<ul id="'+a("code-list")+'"></ul>');e=e.children("ul").empty();for(c in b)if(b.hasOwnProperty(c)){var c=k(c);if("string"===typeof b[c])var d=k(b[c]);else d=k(b[c].code),c='<abbr title="'+k(b[c].type)+'">'+c+"</abbr>";e.append("<li>"+c+' : <span class="'+a("notice")+'">'+d+"</span></li>")}e.show("slow")});return!1});b(a("@","matching_rule")).on("change",function(){var c=this.value;b(a("@","white_list")).closest("tr").toggle("0"===c);b(a("@","black_list")).closest("tr").toggle("1"===c);return!1}).change();b(a(".","icon-cidr")).on("click",function(){var c=b(a("#","admin-styles-css")).get(0).href,d=f.open("about:blank","","width=560,height=170");c=c.slice(0,c.lastIndexOf("css/"));d.document.write('<!DOCTYPE html><html lang=en><meta charset=utf-8><title>CIDR calculator for IPv4 / IPv6</title><link href="'+c+'css/cidr.min.css" rel=stylesheet><div class="row container"><div class=row id=i><fieldset class="col span_11"><legend>Range <input id=a type=button value=Clear tabindex=1></legend><textarea id=c name=range placeholder="192.168.0.0 - 192.168.255.255" rows=5 wrap=off tabindex=2></textarea></fieldset><ul class="col span_2" id=h><li class=row><input id=e type=button value=→ class="col span_24" tabindex=3><li class=row><input id=f type=button value=← class="col span_24" tabindex=6></ul><fieldset class="col span_11"><legend>CIDR <input id=b type=button value=Clear tabindex=4></legend><textarea id=d name=cidr placeholder=192.168.0.0/16 rows=5 wrap=off tabindex=5></textarea></fieldset></div><div class=row id=j><span class=col id=g>\u00a0</span></div></div><script src="'+c+'js/cidr.min.js">\x3c/script>');d.document.close();return!1});b(a("@","validation_mimetype")).on("change",function(c){var d=b(this),n=parseInt(d.val(),10);d.nextAll(a(".","settings-folding")).each(function(a,c){O(b(c),n===a+1||n&&2===a)});return y(c)}).change();b('select[name*="response_code"]').on("change",function(c){var d=b(this),n=parseInt(d.val()/100,10),e=d.closest("tr").nextAll("tr");if(0<=d.attr("name").indexOf("public")&&-1===parseInt(b(a("@","public_matching_rule")).val(),10))return e.each(function(a){1>=a&&b(this).hide()}),y(c);3>=n?e.each(function(a){0===a?b(this).show():1===a&&b(this).hide()}):e.each(function(a){0===a?b(this).hide():1===a&&b(this).show()});return y(c)}).change();b(a("#","decode")).on("click",function(){var c=b(a("@","signature")),d=c.val();-1===d.search(/,/)?c.val(G(f.atob(d))):c.val(f.btoa(G(d)));return!1});b(a("@","validation_login")).on("change",function(a){var c=b(this);P(c,c,g,!0);return y(a)}).change();m(null,{cmd:"get-actions"},function(c){var e,n=b(a("#","list-admin")),f=t.createElement("li"),h=t.createElement("input"),g=t.createElement("label"),l=t.createElement("dfn"),q=t.createElement("span");for(v in c)if(c.hasOwnProperty(v)){var v=k(v);if(!n.find("#"+(e=a("!","exception_admin_"+v))).size()){var p=h.cloneNode(!1);p.setAttribute("id",e);p.setAttribute("value",v);p.setAttribute("type","checkbox");var r=f.cloneNode(!1);r.appendChild(p);p=g.cloneNode(!1);p.setAttribute("for",e);p.appendChild(t.createTextNode(v));r.appendChild(p);1&c[v]&&r.appendChild(W(l,q,d.msg[6],"lock"));2&c[v]&&r.appendChild(W(l,q,d.msg[7],"unlock"));n.append(r)}}b(a(".","icon-unlock")).on("click",function(){b(a("#","list-admin")+">li").filter(function(){return!b(this).find(".dashicons-unlock").length}).toggle();return!1});b(a("@","exception_admin")).on("change",function(c){var d=b.grep(b(this).val().split(","),function(b){return""!==b.replace(/^\s+|\s+$/g,"")});b(a("#","list-admin")).find("input").each(function(){var a=b(this),c=a.val();a.prop("checked",-1!==b.inArray(c,d))});return y(c)}).change();b(a("#","list-admin")).on("click","input",function(){var c=b(this);var d=b(a("@","exception_admin")),e=c.val(),n=b.grep(d.val().split(","),function(b){return""!==b.replace(/^\s+|\s+$/g,"")});c=b.inArray(e,n);-1===c?n.push(e):n.splice(c,1);d.val(n.join(",")).change()});b(a(".","icon-find")).on("click",function(){var c=b(this),e=[],n=0,f,h,C,g,fa=k(d.msg[9]),u=k(c.data("target"));b(a("#","find-"+u)).empty();c.next().children(a(".","find-desc")).show();c=b(a("#","list-"+u));c.children("li").each(function(a,c){e.push(b(c).find("input").val())});m("find-"+u,{cmd:"find-"+u},function(m){for(var l in m)m.hasOwnProperty(l)&&(++n,f=k(m[l]),l=k(l),h=b.inArray(l,e),C=a("!","exception_"+u+"_"+l),g="admin"===u?f+"="+l:"/"+f+"/"+l+"/",g='<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="'+K.sites[0]+"options-general.php?page=ip-geo-block&tab=4&s="+encodeURIComponent(g)+'" title="'+fa.replace("%s",g)+'" target="_blank"><span></span></a>',0>h?(e.push(l),c.prepend('<li><input id="'+C+'" value="'+l+'" type="checkbox" '+("admin"===u?"/>":"name=ip_geo_block_settings[exception]["+u+"]["+l+"] />")+'<label for="'+C+'">'+l+"</lable>"+g+"</li>")):(C=c.find("#"+C).parent(),C.find("a").length||C.append(g)));b(a("@","exception_"+u)).trigger("change");b(a("#","find-"+u)).append(' <span class="ip-geo-block-found">'+k(d.msg[8].replace("%d",n))+"</span>")});return!1})});b('input[id^="'+a("!","validation_ajax_")+'"]').on("change",function(){S(b(this))}).change();b(a("@","validation_public")).on("change",function(a){T(b(this));return y(a)}).change();b(a("@","public_matching_rule")).on("change",function(c){var d=this.value;b(a("@","public_white_list")).closest("tr").toggle("0"===d);b(a("@","public_black_list")).closest("tr").toggle("1"===d);b(a("@","public_response_code")).change().closest("tr").toggle("-1"!==d);return y(c)}).change();b(a("@","update")).on("click",function(){m("download",{cmd:"download"},function(c){var d;for(d in c)if(c.hasOwnProperty(d)){var e=c[d];for(n in e)if(e.hasOwnProperty(n)){var n=k(n);e[n].filename&&b(a("@",d+"_"+n+"_path")).val(k(e[n].filename));e[n].message&&b(a("#",d+"-"+n)).text(k(e[n].message))}}});return!1});b(a("@","save_statistics")).on("change",function(){b(a("@","validation_recdays")).prop("disabled",!b(this).prop("checked"));return!1}).trigger("change");b(a("@","validation_reclogs")).on("change",function(){var a=b(this);a.parent().parent().nextAll().find("input").prop("disabled",0===Number(a.prop("selectedIndex")))}).trigger("change");b(a("@","comment_pos")).on("change",function(){var a=b(this);a.nextAll('input[type="text"]').prop("disabled",0===Number(a.prop("selectedIndex")))}).trigger("change");V("validate");b(a("#","export")).on("click",function(){if("undefined"===typeof JSON)return D(null,k(d.msg[10])),!1;var c=g,e={};b.each(b(this).closest("form").serializeArray(),function(b,a){-1!==a.name.indexOf(c)&&(e[a.name]=a.value)});e[c+="[signature]"]=f.btoa(G(e[c]));b(a("#","export-data")).val(JSON.stringify(e));b(a("#","export-form")).submit();return!1});b(a("#","file-dialog")).on("change",function(a){if("undefined"===typeof f.FileReader)return D(null,k(d.msg[10])),!1;var b;(a=a.target.files[0])&&ba(a,function(a){a=JSON.parse(a);b=g+"[signature]";"undefined"!==typeof a[b]&&(a[b]=f.btoa(G(a[b])));m("export-import",{cmd:"validate",data:JSON.stringify(a)},function(a){Q(a,!0)})});return!1});b(a("#","import")).on("click",function(){b(a("#","file-dialog")).click();return!1});b(a("#","default")).on("click",function(){x(d.msg[0],function(){m("pre-defined",{cmd:"import-default"},function(a){Q(a,!0)})});return!1});b(a("#","preferred")).on("click",function(){x(d.msg[0],function(){m("pre-defined",{cmd:"import-preferred"},function(a){Q(a,!1)})});return!1});b(a("@","reset_live")).on("click",function(){m("reset-live",{cmd:"reset-live"});return!1});b(a("@","create_table")).on("click",function(){x(d.msg[1],function(){R("create-table")});return!1});b(a("@","delete_table")).on("click",function(){x(d.msg[2],function(){R("delete-table")});return!1});b(a("#","show-info")).on("click",function(){b(a("#","wp-info")).empty();m("wp-info",{cmd:"show-info"},function(c){var d,e=[];for(d in c)c.hasOwnProperty(d)&&e.push("- "+d+" "+c[d]);b(a("#","wp-info")).html('<textarea class="regular-text code" rows="'+e.length+'">'+e.join("\n")+"</textarea>").find("textarea").select();return!1})});b('select[name^="'+g+'"]').on("change",function(){var c=b(this),d,e=a(".","desc");c.next(e).empty();(d=c.children("option:selected").data("desc"))&&c.next(e).html(b.parseHTML(d));P(c,c,g,!0);return!1}).change();b(a(".","icon-cycle")).on("click",function(){var c=b(this).nextAll("li"),d=c.find(a("@","exception_admin"));c=c.find("input:checkbox").filter(":visible");var e=c.filter(":checked").length;c.prop("checked",!e);if(d.length)if(e)d.val("");else{var f=[];c.each(function(a,c){f.push(b(c).val())});d.val(f.join(","))}b(this).blur();return!1});b(a(".","settings-folding>dfn")).on("click",function(){var c=a("drop"),d=b(this).parent();d.children(a(".","hide")).toggle();d.toggleClass(c+"up").toggleClass(c+"down");d.hasClass(c+"up")&&d.children("div").hide();return!1});b("#submit").on("click",function(){var c=b(a("@","signature")),d=c.val();-1!==d.indexOf(",")&&c.val(f.btoa(G(d)));return!0});break;case 1:U(c);var q=0;b(a("#","sort-slug")).on("click",function(){var a=b(this).closest("ol"),c=a.children("li");(q=!q)?c.sort(function(a,c){return b(a).text()>b(c).text()}):c.sort(function(a,c){return parseInt(b(a).text().replace(/^.*\((\d+)\)$/,"$1"),10)<=parseInt(b(c).text().replace(/^.*\((\d+)\)$/,"$1"),10)});a.children("li").remove();c.appendTo(a)});b(a("@","clear_statistics")).on("click",function(){x(d.msg[3],function(){N("statistics",null)});return!1});b(a("@","clear_logs")).on("click",function(){x(d.msg[5],function(){N("logs",null)});return!1});X(c,{tableID:"statistics-cache",ajaxCMD:"restore-cache",sectionID:"section-2",targetColumn:4,columnIP:1,columnAS:3},{columns:[{title:'<input type="checkbox">'},{title:d.i18n[3]},{title:d.i18n[4]},{title:d.i18n[5]},{title:d.i18n[6]},{title:d.i18n[7]},{title:d.i18n[8]},{title:d.i18n[9]}],columnDefs:[{responsivePriority:0,targets:0},{responsivePriority:1,targets:1},{responsivePriority:2,targets:2},{responsivePriority:6,targets:3},{responsivePriority:7,targets:4},{responsivePriority:3,targets:5},{responsivePriority:4,targets:6},{responsivePriority:5,targets:7},{className:"all",targets:[0,1,2,5]}]});break;case 4:var p={tableID:"validation-logs",sectionID:"section-0",targetColumn:6,columnIP:3,columnAS:5},l={columns:[{title:'<input type="checkbox">'},{title:""},{title:d.i18n[10]},{title:d.i18n[3]},{title:d.i18n[4]},{title:d.i18n[5]},{title:d.i18n[7]},{title:d.i18n[11]},{title:d.i18n[12]},{title:d.i18n[13]},{title:d.i18n[14]},{title:d.i18n[15]}],columnDefs:[{responsivePriority:11,targets:0},{responsivePriority:0,targets:1},{responsivePriority:1,targets:2},{responsivePriority:2,targets:3},{responsivePriority:3,targets:4},{responsivePriority:6,targets:5},{responsivePriority:4,targets:6},{responsivePriority:5,targets:7},{responsivePriority:7,targets:8},{responsivePriority:8,targets:9},{responsivePriority:9,targets:10},{responsivePriority:10,targets:11},{visible:!1,targets:1},{className:"all",targets:[0,2,3,4]},{className:"none",targets:[8,9,10,11]}]},H=null,r=null,z=b(a("#","live-loading")),I=null,w=function(){H&&(f.clearTimeout(H),H=null);r&&(z.removeClass(a("live-timer")),f.clearTimeout(r),r=null)},E=function(){w();m("live-loading",{cmd:"live-start"},function(a){if(a.error)D(null,a.error);else if(a.data.length){var b,c=a.data.length;for(b=0;b<c;b++)I.row.add(a.data[b]);I.draw(!1)}H=f.setTimeout(E,1E3*d.interval)})},F=function(a,b){w();m(null,{cmd:a||"live-stop",callback:b})},M=function(){F("live-pause",function(){z.addClass(a("live-timer"));r=f.setTimeout(function(){w();b(a("#","live-log-stop")).prop("checked",!0)},1E3*d.timeout)})},B=a(""),Y=function(a,c,d){-1!==c[7].indexOf("passed")?b(a).addClass(B+d+"passed"):b(a).addClass(B+d+"blocked")},Z=b(a("#","live-log")),aa=b(a("#","live-update"));b(a("#","validation-logs")).on("animationend",function(){b(this).find('tr[class*="'+B+'new"]').each(function(){var a=b(this);-1!==a.prop("class").indexOf("passed")?a.addClass(B+"passed").removeClass(B+"new-passed"):a.addClass(B+"blocked").removeClass(B+"new-blocked")});return!1});Z.on("change",function(){switch(b('input[name="'+a("live-log")+'"]:checked').val()){case "start":E();break;case "pause":M();break;case "stop":F()}});aa.on("change",function(){var d=Z.closest("tr"),f=aa.prop("checked");e[c][1]=f?"o":"x";A(e);I&&I.clear().destroy();f?(d.show().next().next().next().nextAll().hide(),p.ajaxCMD="live-stop",l.order=[1,"desc"],l.createdRow=function(a,b){Y(a,b,"new-")}):(d.hide().next().next().next().nextAll().show(),p.ajaxCMD="restore-logs",l.order=[0,""],l.createdRow=function(a,b){Y(a,b,"")});b(a("#","live-log-stop")).trigger("click");I=X(c,p,l);return!1}).trigger("change");V("export-logs");b(a("#","export-logs")).on("click",function(){b(a("#","export-form")).submit();return!1});break;case 2:b(f).on(a("gmap-error"),function(){m(null,{cmd:"gmap-error"},function(a){J(a.page,a.tab)})});var L=b(a("#","map"));"object"===typeof f.google?L.each(function(){b(this).GmapRS()}):L.each(function(){b(this).empty().html('<iframe src="'+d.altgmap+'?output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>')});b('select[id^="'+a("!","service")+'"]').on("change",function(){e[c][3]=b(this).prop("selectedIndex");A(e)}).change();b(a("@","get_location")).on("click",function(){var c=b(a("#","whois")),d=b(a("@","ip_address")).val();if(d){c.hide().empty();var e=b.whois(d,function(d){var e,f="";for(e=0;e<d.length;++e)f+="<tr><td>"+d[e].name+"</td><td>"+d[e].value+"</td></tr>";c.html('<fieldset id="'+a("section-1")+'" class="'+a("field")+' panel panel-default" data-section="1"><legend class="panel-heading"><h3 id="'+a("whois-title")+'" class="'+a("dropdown")+'">Whois</h3></legend><div class="panel-body '+a("border")+'"><table class="'+a("table")+'">'+f+"</table></div></fieldset>").fadeIn("slow");b(a("#","whois-title")).on("click",function(){var c=b(this);c.parent().nextAll().toggle();c.toggleClass(a("dropup")).toggleClass(a("dropdown"));return!1})});m("loading",{cmd:"search",ip:d,which:b(a("@","service")).val()},function(b){var c="",e=k(b.latitude||"0"),g=k(b.longitude||"0"),h=b.latitude||b.longitude?8:2;for(l in b)if(b.hasOwnProperty(l)){var l=k(l);c+='<li><span class="'+a("title")+'">'+l+' : </span><span class="'+a("result")+'">'+k(b[l])+"</span></li>"}"object"===typeof f.google?L.GmapRS("addMarker",{latitude:e,longitude:g,title:d,content:"<ul>"+c+"</ul>",show:!0,zoom:h}):L.css({height:"600px",backgroundColor:"transparent"}).empty().html('<ul style="margin-top:0; margin-left:1em;"><li><span class="'+a("title")+'">IP address : </span><span class="'+a("result")+'">'+k(d)+"</span></li>"+c+'</ul><iframe src="//maps.google.com/maps?q='+e+","+g+"&z="+h+'&output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>')},[e])}return!1});b(a("@","ip_address")).val()&&b(a("@","get_location")).click();break;case 5:U(c),b("input[name="+a("duration")+"]:radio").on("click",function(){var a=b('div[class*="paginate"]').find('a[class*="current"]').text();e[c][2]=b(this).val()||0;e[c][3]=e[c][3]||2;e[c][4]=e[c][4]||1;A(e);h.ajaxStacked(e[c][2],e[c][3],e[c][4],a-1)}),b(a("#","open-new")).on("change",function(){var d=b(this).prop("checked");e[c][1]=d?"o":"x";A(e);b(a("#","section-0 svg")).find("a").each(function(){this.setAttribute("target",d?"_blank":"_self")})}),b(a("#","apply-layout")).on("click",function(){var d=b(a("#","select-layout"));e[c][3]=d.find('select[name="rows"] option:selected').val();e[c][4]=d.find('select[name="cols"] option:selected').val();A(e)}),b("ul.wp-submenu>li.wp-first-item").removeClass("current").next().addClass("current")}})})(jQuery,window,document);
|
3 |
Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
This software is released under the MIT License.
|
5 |
*/
|
6 |
+
(function(a,f,t){function b(a,b){var c={".":".ip-geo-block-","#":"#ip-geo-block-","@":"#ip_geo_block_settings_",$:"ip-geo-block-","%":"ip_geo_block_","!":"ip_geo_block_settings_"};return"undefined"!==typeof b?c[a]+b:c.$+a}function L(a){return a.toString().replace(/[&<>"']/g,function(a){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[a]}).replace(/&(#\d{2,4}|\w{4,7});/g,"&$1;")}function l(a){return a?L(a.toString().replace(/(<([^>]+)>)/ig,"")):""}function D(b,e){var c=a(f).width();c!==E&&(E=c,"undefined"===typeof p[b]&&(p[b]={id:!1,callback:e}),a(f).off("resize").on("resize",function(){!1!==p[b].id&&f.clearTimeout(p[b].id);p[b].time=f.setTimeout(p[b].callback,200);return!1}))}function B(c,e){e?a(b("#",c)).addClass(b("loading")):a(b("#",c)).removeClass(b("loading"))}function y(a,b){f.confirm(l(a))&&b()}function C(a,b,g){f.alert(l(b||d.msg[12].replace("%s",g)+" ("+a+")"))}function J(a,b){-1!==f.location.href.indexOf(a)&&(f.location=l(a)+(b?"&"+l(b):"")+"&ip-geo-block-auth-nonce="+F.nonce)}function q(b,e,g,k){b&&B(b,!0);e.action=d.action;e.nonce=d.nonce;a.post(d.url,e).done(function(a){g&&g(a)}).fail(function(a){R||C(a.status,a.responseText,e.action)}).always(function(){b&&("object"===typeof k?a.when.apply(a,k).then(function(){B(b,!1)}):B(b,!1))})}function M(a,b){q(a,{cmd:"clear-"+a,which:b},function(a){J(a.page,a.tab)})}function S(a){q(a,{cmd:a},function(a){J(a.page,a.tab)})}function v(a){a.stopImmediatePropagation();return!1}function G(a,e){e?a.removeClass("folding-disable"):(a.children(b(".","hide")).hide(),a.addClass("folding-disable"),a.removeClass(b("dropdown")).addClass(b("dropup")))}function N(c,e,g){var k=0===c.prop("type").indexOf("checkbox")&&c.is(":checked")||0===c.prop("type").indexOf("select")&&"0"!==c.val();c.siblings('input[name^="'+b("%","settings")+'"]:checkbox').prop("disabled",!k);a.isArray(e)?a.each(e,function(c,e){a(e).nextAll(b(".","settings-folding")).each(function(b,e){G(a(e),k&&g[c])})}):e.nextAll(b(".","settings-folding")).each(function(b,c){G(a(c),k&&g)})}function T(c){var e=b("@","validation_ajax_");G(c.closest("ul").next(),a(e+"1").is(":checked")||a(e+"2").is(":checked"))}function I(a){return String(a).replace(/[a-z]/gi,function(a){return String.fromCharCode(a.charCodeAt(0)+("n">a.toLowerCase()?13:-13))})}function da(a,b){var c=new f.FileReader;c.onload=function(a){b&&b(a.target.result)};c.onerror=function(a){C("Error",a.target.error.code)};c.readAsText(a)}function U(c){var e=c.is(":checked"),g=a(b("@","public_target_rule")),k=a(b("@","public_behavior")),d=c.closest("tr").nextAll("tr");d.find('[name^="'+b("%","settings")+'"]').prop("disabled",!e);d.find(b(".","desc")).css("opacity",e?1:.5);N(c,[g,k],["1"===g.val()?!0:!1,k.val()]);e&&k.change()}function O(c,e){c&&("string"===typeof c&&(c=JSON.parse(c)),e&&a('input[type="checkbox"]').prop("checked",!1).change(),a(b("#","import")).closest("form").deserialize(c),a(b("@","exception_admin")+","+b("@","validation_mimetype")).change(),a('select[name*="'+b("%","settings")+'"]').change(),a(b("@","validation_login")).change(),U(a(b("@","validation_public"))),T(a(b("@","validation_ajax_1"))),e&&(e=b("%","settings[providers][IPInfoDB]"),a(b("@","providers_IPInfoDB")).prop("checked",c[e]?!0:!1)))}function ea(a,b){var c=Math.ceil(a.length/b),e=[],d;for(d=0;d<c;++d){var m=d*b;e.push(a.slice(m,m+b))}return e}function r(c){"object"===typeof f.google&&(1===c?a(b("#","chart-countries")).length&&(h.drawPie(b("chart-countries")),h.drawLine(b("chart-daily"),"date")):5===c&&a(b(".","network")).each(function(b,c){h.drawStacked(a(c).attr("id"))}))}function V(a){if("object"===typeof f.google){var b=["corechart"];5===a&&b.push("bar");f.google.load("visualization","1",{packages:b,callback:function(){r(a)}});D("draw-chart."+a,function(){r(a)})}}function fa(a){var b,c="undefined"!==typeof wpCookies&&wpCookies.getHash("ip-geo-block")||[];for(b in c)c.hasOwnProperty(b)&&(c[b]=c[b].replace(/[^ox\d]/g,"").split(""));"undefined"===typeof c[a]&&(c[a]=[]);return c}function z(b){var c,g,d=[];a.each(b,function(a,b){d[a]="";if("undefined"!==typeof b&&(g=b.length))for(d[a]=b[0]||"o",c=1;c<g;++c)d[a]+=b[c]||"o"});"undefined"!==typeof wpCookies&&wpCookies.setHash("ip-geo-block",d,new Date(Date.now()+2592E6),F.home+F.admin)}function ha(c){var e=fa(c);a("form").on("click","h2,h3 a",function(){f.open(this.href,null);return!1}).on("click","h2,h3",function(){var d=a(this),k=d.closest("fieldset").data("section"),f=d.parent().nextAll(".panel-body").toggle();d.toggleClass(b("dropup")).toggleClass(b("dropdown"));(d=d.hasClass(b("dropdown")))?f.addClass(b("border")).trigger(b("show-body")):f.removeClass(b("border"));e[c][k]=d?"o":"x";z(e);r(c);return!1});a(b("#","toggle-sections")).on("click",function(){var d,k=a(b(".","field")).find("h2,h3"),f=[b("dropdown"),b("dropup")],m=k.filter("."+f[0]).length;k.each(function(g){d=a(this);d.removeClass(f.join(" ")).addClass(m?f[1]:f[0]);d=d.parent().nextAll(".panel-body").toggle(m?!1:!0);m?d.removeClass(b("border")):d.addClass(b("border")).trigger("show-body");e[c][g]=m?"x":"o"});z(e);r(c);return!1});return e}function W(c){a("body").append('<div style="display:none"><form method="POST" id="'+b("export-form")+'" action="'+d.url.replace("ajax.php","post.php")+'"><input type="hidden" name="action" value="'+d.action+'" /><input type="hidden" name="nonce" value="'+d.nonce+'" /><input type="hidden" name="cmd" value="'+c+'" /><input type="hidden" name="data" value="" id="'+b("export-data")+'"/><input type="submit" value="submit" /></form><input type="file" name="settings" id="'+b("file-dialog")+'" /></div>')}function X(a,b,d,f){a=a.cloneNode(!1);a.setAttribute("title",l(d));b=b.cloneNode(!1);b.setAttribute("class","dashicons dashicons-"+f);a.appendChild(b);return a}function Y(c,e,g){a.extend(!0,a.fn.dataTable.defaults,g,{dom:"tp",serverSide:!1,autoWidth:!1,processing:!0,deferRender:!0,deferLoading:10,info:!1,lengthChange:!1,language:{emptyTable:d.i18n[1],loadingRecords:d.i18n[0],processing:d.i18n[0],zeroRecords:d.i18n[2],paginate:{first:"«",last:"»",next:"›",previous:"‹"}},responsive:{details:{type:"column",target:"td:nth-child(n+2)"}},columnDefs:[{width:"1.25em",targets:0},{orderable:!1,targets:0},{searchable:!1,targets:0},{targets:[0],data:null,defaultContent:'<input type="checkbox">'}],pagingType:"full_numbers",pageLength:10,scroller:!0,scrollY:1E4,scrollCollapse:!0,drawCallback:function(c){var f=a(b("#",e.tableID)).find("td.dataTables_empty");3>c.iDraw?f.html(d.i18n[0]):3===c.iDraw&&(f.html(d.i18n[1]),f=a(b("@","search_filter")),f.val()&&f.trigger("keyup"))}});var k=a(b("#",e.tableID)).DataTable({ajax:{url:d.url,type:"POST",data:{cmd:e.ajaxCMD,action:d.action,nonce:d.nonce}},mark:!0}),h=function(){k.columns.adjust().responsive.recalc().draw(!1)};D("draw-table."+c,h);a(b("#",e.sectionID)).find(".panel-body").off(b("show-body")).on(b("show-body"),function(){h();return!1}).off("change").on("change",'th>input[type="checkbox"]',function(){var c=a(this).prop("checked");a(b("#",e.tableID)).find('td>input[type="checkbox"]').prop("checked",c);return!1});a(b("#","select-target")).off("change").on("change",function(){var c=a(this).find('input[name="'+b("target")+'"]:checked').val();k.columns(e.targetColumn).search("all"!==c?c:"").draw();return!1}).trigger("change");a(b("#","bulk-action")).off("click").on("click",function(){var f=a(this).prev().val(),g=/(<([^>]+)>)/ig,h={IP:[],AS:[]},l,w=a("table.dataTable").find("td>input:checked");if(!f)return!1;if(!w.length)return C(null,d.msg[11]),!1;w.each(function(){l=k.cell(this.parentNode).data();h.IP.push(l[e.columnIP].replace(g,""));h.AS.push(l[e.columnAS].replace(g,""))});h.IP.length&&q("loading",{cmd:f,which:h},function(d){"undefined"!==typeof d.page?J(d.page,"tab="+c):d&&(k.ajax.reload(),a(b("#",e.tableID)).find('th input[type="checkbox"]').prop("checked",!1))});return!1});a(b("@","search_filter")).off("keyup").on("keyup",function(){k.search(this.value,!1,!0,!/[A-Z]/.test(this.value)).draw();return!1});a(b("#","reset-filter")).off("click").on("click",function(){a(b("@","search_filter")).val("");k.search("").draw();return!1});a(b("@","clear_all")).off("click").on("click",function(){y(d.msg[1===c?4:5],function(){M(1===c?"cache":"logs",null)});return!1});a("table.dataTable tbody").on("click","a",function(){var b=f.location.search.slice(1).split("&"),e=b.length,d={},g;for(g=0;g<e;++g){var k=b[g].split("=");d[k[0]]=k[1]}d.tab=1===c?4:2;d.s=a(this).text().replace(/[^\w\.:\*]/,"");k=[];for(g in d)d.hasOwnProperty(g)&&k.push(g+"="+d[g]);f.open(f.location.pathname+"?"+k.join("&"),"_blank");return!1});return k}var R=!1,p=[],E=a(f).width(),d=IP_GEO_BLOCK,F=IP_GEO_BLOCK_AUTH;a.fn.deserialize=function(b){return this.each(function(){var c,d=this,f={};for(c in b)if(b.hasOwnProperty(c))try{var h=decodeURIComponent(c);var l=decodeURIComponent(b[c]);f.hasOwnProperty(h)||(f[h]=[]);f[h].push(l)}catch(H){}a.each(f,function(b,e){c=a('[name="'+b+'"]:input',d).val(e);"hidden"!==c.attr("type")&&c.before('<span style="color:red">*</span>')})})};var h={dataPie:[],viewPie:[],drawPie:function(b){if("undefined"===typeof h.dataPie[b]){var c=h.dataPie[b]=new f.google.visualization.DataTable;c.addColumn("string","Country");c.addColumn("number","Requests");c=a.parseJSON(a("#"+b).attr("data-"+b));h.dataPie[b].addRows(c)}"undefined"===typeof h.viewPie[b]&&(h.viewPie[b]=new f.google.visualization.PieChart(t.getElementById(b)));"undefined"!==typeof h.dataPie[b]&&"undefined"!==typeof h.viewPie[b]&&0<a("#"+b).width()&&h.viewPie[b].draw(h.dataPie[b],{backgroundColor:{fill:"transparent"},chartArea:{left:0,top:"5%",width:"100%",height:"90%"},sliceVisibilityThreshold:.015})},dataLine:[],viewLine:[],drawLine:function(b,d){if("undefined"===typeof h.dataLine[b]){var c=h.dataLine[b]=new f.google.visualization.DataTable;c.addColumn(d,"Date");c.addColumn("number","comment");c.addColumn("number","xmlrpc");c.addColumn("number","login");c.addColumn("number","admin");c.addColumn("number","public");var e=a.parseJSON(a("#"+b).attr("data-"+b));var l=e.length;for(c=0;c<l;++c)e[c][0]=new Date(1E3*e[c][0]);h.dataLine[b].addRows(e)}"undefined"===typeof h.viewLine[b]&&(h.viewLine[b]=new f.google.visualization.LineChart(t.getElementById(b)));"undefined"!==typeof h.dataLine[b]&&"undefined"!==typeof h.viewLine[b]&&0<(c=a("#"+b).width())&&h.viewLine[b].draw(h.dataLine[b],{legend:{position:"bottom"},backgroundColor:{fill:"transparent"},hAxis:{format:"MM/dd"+("datetime"===d?" HH:mm":"")},vAxis:{textPosition:320<c?"out":"in"},chartArea:{left:320<c?"10%":0,top:"5%",width:"100%",height:"75%"}})},dataStacked:[],viewStacked:[],drawStacked:function(c){var d,g,k=a("#"+c);"undefined"===typeof h.dataStacked[c]&&(g=a.parseJSON(k.attr("data-"+c)))&&(g.unshift(["site","comment","xmlrpc","login","admin","poblic",{role:"link"}]),h.dataStacked[c]=f.google.visualization.arrayToDataTable(g));"undefined"===typeof h.viewStacked[c]&&(h.viewStacked[c]=new f.google.visualization.BarChart(t.getElementById(c)),f.google.visualization.events.addListener(h.viewStacked[c],"animationfinish",function(){var d,e,f,g=[],l=h.dataStacked[c],m=l.getNumberOfRows(),q=a(b("#","open-new")).prop("checked");for(d=0;d<m;d++)g.push({label:l.getValue(d,0),link:l.getValue(d,6)});m="http://www.w3.org/1999/xlink";k.find("text").each(function(a,b){f=b.parentNode;var c;if(c="g"===f.tagName.toLowerCase()){a:{c=b.textContent;var d,h=g.length;c=c.replace("\u2026","");for(d=0;d<h;++d)if(g.hasOwnProperty(d)&&0===g[d].label.indexOf(c)){c=d;break a}c=-1}c=-1!==(a=c)}c&&(e=t.createElementNS("http://www.w3.org/2000/svg","a"),e.setAttributeNS(m,"xlink:href",g[a].link),e.setAttributeNS(m,"title",g[a].label),e.setAttribute("target",q?"_blank":"_self"),e.setAttribute("class","site"),e.appendChild(f.removeChild(b)),f.appendChild(e),g.splice(a,1))})}));if(0<(d=k.width())&&"undefined"!==typeof h.dataStacked[c]&&"undefined"!==typeof h.viewStacked[c]){var l=b("range");var m=a.parseJSON(a("."+l).attr("data-"+l));g=h.dataStacked[c];l=40*g.getNumberOfRows();h.viewStacked[c].draw(g,{width:d,height:l+80,allowHtml:!0,isStacked:!0,legend:{position:"top"},chartArea:{top:50,left:90,width:"100%",height:l},hAxis:{minValue:0,maxValue:m[1]},backgroundColor:{fill:"transparent"},animation:{startup:!0,duration:200,easing:"out"}})}},ajaxStacked:function(c,d,f,l){c=Math.max(0,Math.min(4,c));d=5*Math.max(1,Math.min(5,d));q(null,{cmd:"restore-network",which:c,offset:d*f*l,length:d},function(c){var e,f,g,l,k;c=ea(c,d);a(b(".","network")).each(function(b,m){if("undefined"!==typeof c[b]){l=a(m).attr("id");k=h.dataStacked[l];g=Math.min(d,c[b].length);for(e=0;e<g;++e)for(f=1;5>=f;f++)k.setValue(e,f,c[b][e][f]);h.drawStacked(l)}})})}};a(function(){var c=Number(d.tab)||0,e=ha(c);a(b(".","inhibit")).on("submit",function(){return!1});a(f).on("beforeunload",function(){R=!0});switch(c){case 0:var g=b("%","settings");a('[id^="'+b("scan-")+'"]').on("click",function(){var c=a(this),d=c.attr("id"),e=c.parent();q(d.replace(/^.*(?:scan)/,"scanning"),{cmd:"scan-code",which:d.replace(b("scan-"),"")},function(a){e.children("ul").length||e.append('<ul id="'+b("code-list")+'"></ul>');e=e.children("ul").empty();for(c in a)if(a.hasOwnProperty(c)){var c=l(c);if("string"===typeof a[c])var d=l(a[c]);else d=l(a[c].code),c='<abbr title="'+l(a[c].type)+'">'+c+"</abbr>";e.append("<li>"+c+' : <span class="'+b("notice")+'">'+d+"</span></li>")}e.show("slow")});return!1});a(b("@","matching_rule")).on("change",function(){var c=this.value;a(b("@","white_list")).closest("tr").toggle("0"===c);a(b("@","black_list")).closest("tr").toggle("1"===c);return!1}).change();a(b(".","icon-cidr")).on("click",function(){var c=a(b("#","admin-styles-css")).get(0).href,d=f.open("about:blank","","width=560,height=170");c=c.slice(0,c.lastIndexOf("css/"));d.document.write('<!DOCTYPE html><html lang=en><meta charset=utf-8><title>CIDR calculator for IPv4 / IPv6</title><link href="'+c+'css/cidr.min.css?v=.1" rel=stylesheet><div class="row container"><div class=row id=i><fieldset class="col span_11"><legend>Range <input id=a type=button value=Clear tabindex=1></legend><textarea id=c name=range placeholder="192.168.0.0 - 192.168.255.255" rows=5 wrap=off tabindex=2></textarea></fieldset><ul class="col span_2" id=h><li class=row><input id=e type=button value=→ class="col span_24" tabindex=3><li class=row><input id=f type=button value=← class="col span_24" tabindex=6></ul><fieldset class="col span_11"><legend>CIDR <input id=b type=button value=Clear tabindex=4></legend><textarea id=d name=cidr placeholder=192.168.0.0/16 rows=5 wrap=off tabindex=5></textarea></fieldset></div><div class=row id=j><span class=col id=g>\u00a0</span></div></div><script src="'+c+'js/cidr.min.js?v=.1">\x3c/script>');d.document.close();return!1});a(b("@","validation_mimetype")).on("change",function(c){var d=a(this),n=parseInt(d.val(),10);d.nextAll(b(".","settings-folding")).each(function(b,c){G(a(c),n===b+1||n&&2===b)});return v(c)}).change();a('select[name*="response_code"]').on("change",function(c){var d=a(this),n=parseInt(d.val()/100,10),e=d.closest("tr").nextAll("tr");if(0<=d.attr("name").indexOf("public")&&-1===parseInt(a(b("@","public_matching_rule")).val(),10))return e.each(function(b){1>=b&&a(this).hide()}),v(c);3>=n?e.each(function(b){0===b?a(this).show():1===b&&a(this).hide()}):e.each(function(b){0===b?a(this).hide():1===b&&a(this).show()});return v(c)}).change();a(b("#","decode")).on("click",function(){var c=a(b("@","signature")),d=c.val();-1===d.search(/,/)?c.val(I(f.atob(d))):c.val(f.btoa(I(d)));return!1});a(b("@","validation_login")).on("change",function(b){var c=a(this);N(c,c,g,!0);return v(b)}).change();q(null,{cmd:"get-actions"},function(c){var e,n=a(b("#","list-admin")),f=t.createElement("li"),g=t.createElement("input"),h=t.createElement("label"),k=t.createElement("dfn"),m=t.createElement("span");for(x in c)if(c.hasOwnProperty(x)){var x=l(x);if(!n.find("#"+(e=b("!","exception_admin_"+x))).size()){var p=g.cloneNode(!1);p.setAttribute("id",e);p.setAttribute("value",x);p.setAttribute("type","checkbox");var r=f.cloneNode(!1);r.appendChild(p);p=h.cloneNode(!1);p.setAttribute("for",e);p.appendChild(t.createTextNode(x));r.appendChild(p);1&c[x]&&r.appendChild(X(k,m,d.msg[6],"lock"));2&c[x]&&r.appendChild(X(k,m,d.msg[7],"unlock"));n.append(r)}}a(b(".","icon-unlock")).on("click",function(){a(b("#","list-admin")+">li").filter(function(){return!a(this).find(".dashicons-unlock").length}).toggle();return!1});a(b("@","exception_admin")).on("change",function(c){var d=a.grep(a(this).val().split(","),function(a){return""!==a.replace(/^\s+|\s+$/g,"")});a(b("#","list-admin")).find("input").each(function(){var b=a(this),c=b.val();b.prop("checked",-1!==a.inArray(c,d))});return v(c)}).change();a(b("#","list-admin")).on("click","input",function(){var c=a(this);var d=a(b("@","exception_admin")),e=c.val(),n=a.grep(d.val().split(","),function(a){return""!==a.replace(/^\s+|\s+$/g,"")});c=a.inArray(e,n);-1===c?n.push(e):n.splice(c,1);d.val(n.join(",")).change()});a(b(".","icon-find")).on("click",function(){var c=a(this),e=[],n=0,f,ca,g,h,k=l(d.msg[9]),u=l(c.data("target"));a(b("#","find-"+u)).empty();c.next().children(b(".","find-desc")).show();c=a(b("#","list-"+u));c.children("li").each(function(b,c){e.push(a(c).find("input").val())});q("find-"+u,{cmd:"find-"+u},function(Q){for(var m in Q)Q.hasOwnProperty(m)&&(++n,f=l(Q[m]),m=l(m),ca=a.inArray(m,e),g=b("!","exception_"+u+"_"+m),h="admin"===u?f+"="+m:"/"+f+"/"+m+"/",h='<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="'+F.sites[0]+F.admin+"options-general.php?page=ip-geo-block&tab=4&s="+encodeURIComponent(h)+'" title="'+k.replace("%s",h)+'" target="_blank"><span></span></a>',0>ca?(e.push(m),c.prepend('<li><input id="'+g+'" value="'+m+'" type="checkbox" '+("admin"===u?"/>":"name=ip_geo_block_settings[exception]["+u+"]["+m+"] />")+'<label for="'+g+'">'+m+"</lable>"+h+"</li>")):(g=c.find("#"+g).parent(),g.find("a").length||g.append(h)));a(b("@","exception_"+u)).trigger("change");a(b("#","find-"+u)).append(' <span class="ip-geo-block-warn">'+l(d.msg[8].replace("%d",n))+"</span>")});return!1})});a('input[id^="'+b("!","validation_ajax_")+'"]').on("change",function(){T(a(this))}).change();a(b("@","validation_public")).on("change",function(b){U(a(this));return v(b)}).change();a(b("@","public_matching_rule")).on("change",function(c){var d=this.value;a(b("@","public_white_list")).closest("tr").toggle("0"===d);a(b("@","public_black_list")).closest("tr").toggle("1"===d);a(b("@","public_response_code")).change().closest("tr").toggle("-1"!==d);return v(c)}).change();a(b("@","public_behavior")).on("change",function(b){var c=a(this);G(c.siblings("ul"),c.prop("checked"));return v(b)}).change();a(b("@","update")).on("click",function(){q("download",{cmd:"download"},function(c){var d;for(d in c)if(c.hasOwnProperty(d)){var e=c[d];for(n in e)if(e.hasOwnProperty(n)){var n=l(n);e[n].filename&&a(b("@",d+"_"+n+"_path")).val(l(e[n].filename));e[n].message&&a(b("#",d+"-"+n)).text(l(e[n].message))}}});return!1});a(b("@","save_statistics")).on("change",function(){a(b("@","validation_recdays")).prop("disabled",!a(this).prop("checked"));return!1}).trigger("change");a(b("@","validation_reclogs")).on("change",function(){var b=a(this);b.parent().parent().nextAll().find("input").prop("disabled",0===Number(b.prop("selectedIndex")))}).trigger("change");a(b("@","comment_pos")).on("change",function(){var b=a(this);b.nextAll('input[type="text"]').prop("disabled",0===Number(b.prop("selectedIndex")))}).trigger("change");W("validate");a(b("#","export")).on("click",function(){if("undefined"===typeof JSON)return C(null,l(d.msg[10])),!1;var c=g,e={};a.each(a(this).closest("form").serializeArray(),function(a,b){-1!==b.name.indexOf(c)&&(e[b.name]=b.value)});e[c+="[signature]"]=f.btoa(I(e[c]));a(b("#","export-data")).val(JSON.stringify(e));a(b("#","export-form")).submit();return!1});a(b("#","file-dialog")).on("change",function(a){if("undefined"===typeof f.FileReader)return C(null,l(d.msg[10])),!1;var b;(a=a.target.files[0])&&da(a,function(a){a=JSON.parse(a);b=g+"[signature]";"undefined"!==typeof a[b]&&(a[b]=f.btoa(I(a[b])));q("export-import",{cmd:"validate",data:JSON.stringify(a)},function(a){O(a,!0)})});return!1});a(b("#","import")).on("click",function(){a(b("#","file-dialog")).click();return!1});a(b("#","default")).on("click",function(){y(d.msg[0],function(){q("pre-defined",{cmd:"import-default"},function(a){O(a,!0)})});return!1});a(b("#","preferred")).on("click",function(){y(d.msg[0],function(){q("pre-defined",{cmd:"import-preferred"},function(a){O(a,!1)})});return!1});a(b("@","reset_live")).on("click",function(){q("reset-live",{cmd:"reset-live"});return!1});a(b("@","create_table")).on("click",function(){y(d.msg[1],function(){S("create-table")});return!1});a(b("@","delete_table")).on("click",function(){y(d.msg[2],function(){S("delete-table")});return!1});a(b("#","show-info")).on("click",function(){a(b("#","wp-info")).empty();q("wp-info",{cmd:"show-info"},function(c){var d,e=[];for(d in c)c.hasOwnProperty(d)&&e.push("- "+d+" "+c[d]);a(b("#","wp-info")).html('<textarea class="regular-text code" rows="'+e.length+'">'+e.join("\n")+"</textarea>").find("textarea").select();return!1})});a('select[name^="'+g+'"]').on("change",function(){var c=a(this),d,e=b(".","desc");c.next(e).empty();(d=c.children("option:selected").data("desc"))&&c.next(e).html(a.parseHTML(d));N(c,c,g,!0);return!1}).change();a(b(".","icon-cycle")).on("click",function(){var c=a(this).nextAll("li"),d=c.find(b("@","exception_admin"));c=c.find("input:checkbox").filter(":visible");var e=c.filter(":checked").length;c.prop("checked",!e);if(d.length)if(e)d.val("");else{var f=[];c.each(function(b,c){f.push(a(c).val())});d.val(f.join(","))}a(this).blur();return!1});a(b(".","settings-folding>dfn")).on("click",function(){var c=b("drop"),d=a(this).parent();d.children(b(".","hide")).toggle();d.toggleClass(c+"up").toggleClass(c+"down");d.hasClass(c+"up")&&d.children("div").hide();return!1});a("#submit").on("click",function(){var c=a(b("@","signature")),d=c.val();-1!==d.indexOf(",")&&c.val(f.btoa(I(d)));return!0});break;case 1:V(c);var k=0;a(b("#","sort-slug")).on("click",function(){var b=a(this).closest("ol"),c=b.children("li");(k=!k)?c.sort(function(b,c){return a(b).text()>a(c).text()}):c.sort(function(b,c){return parseInt(a(b).text().replace(/^.*\((\d+)\)$/,"$1"),10)<=parseInt(a(c).text().replace(/^.*\((\d+)\)$/,"$1"),10)});b.children("li").remove();c.appendTo(b)});a(b("@","clear_statistics")).on("click",function(){y(d.msg[3],function(){M("statistics",null)});return!1});a(b("@","clear_logs")).on("click",function(){y(d.msg[5],function(){M("logs",null)});return!1});Y(c,{tableID:"statistics-cache",ajaxCMD:"restore-cache",sectionID:"section-2",targetColumn:4,columnIP:1,columnAS:3},{columns:[{title:'<input type="checkbox">'},{title:d.i18n[3]},{title:d.i18n[4]},{title:d.i18n[5]},{title:d.i18n[6]},{title:d.i18n[7]},{title:d.i18n[8]},{title:d.i18n[9]}],columnDefs:[{responsivePriority:0,targets:0},{responsivePriority:1,targets:1},{responsivePriority:2,targets:2},{responsivePriority:6,targets:3},{responsivePriority:7,targets:4},{responsivePriority:3,targets:5},{responsivePriority:4,targets:6},{responsivePriority:5,targets:7},{className:"all",targets:[0,1,2,5]}]});break;case 4:var p={tableID:"validation-logs",sectionID:"section-0",targetColumn:6,columnIP:3,columnAS:5},m={columns:[{title:'<input type="checkbox">'},{title:""},{title:d.i18n[10]},{title:d.i18n[3]},{title:d.i18n[4]},{title:d.i18n[5]},{title:d.i18n[7]},{title:d.i18n[11]},{title:d.i18n[12]},{title:d.i18n[13]},{title:d.i18n[14]},{title:d.i18n[15]}],columnDefs:[{responsivePriority:11,targets:0},{responsivePriority:0,targets:1},{responsivePriority:1,targets:2},{responsivePriority:2,targets:3},{responsivePriority:3,targets:4},{responsivePriority:6,targets:5},{responsivePriority:4,targets:6},{responsivePriority:5,targets:7},{responsivePriority:7,targets:8},{responsivePriority:8,targets:9},{responsivePriority:9,targets:10},{responsivePriority:10,targets:11},{visible:!1,targets:1},{className:"all",targets:[0,2,3,4]},{className:"none",targets:[8,9,10,11]}]},H=null,r=null,B=a(b("#","live-loading")),w=null,P=function(){H&&(f.clearTimeout(H),H=null);r&&(B.removeClass(b("live-timer")),f.clearTimeout(r),r=null)},D=function(){P();q("live-loading",{cmd:"live-start"},function(a){if(a.error)C(null,a.error);else if(a.data.length){var b,c=a.data.length;for(b=0;b<c;b++)w.row.add(a.data[b]);w.draw(!1)}H=f.setTimeout(D,1E3*d.interval)})},E=function(a,b){P();q(null,{cmd:a||"live-stop",callback:b})},L=function(){E("live-pause",function(){B.addClass(b("live-timer"));r=f.setTimeout(function(){P();a(b("#","live-log-stop")).prop("checked",!0)},1E3*d.timeout)})},A=b(""),Z=function(b,c,d){-1===c[7].indexOf("pass")?a(b).addClass(A+d+"blocked"):a(b).addClass(A+d+"passed")},aa=a(b("#","live-log")),ba=a(b("#","live-update"));a(b("#","validation-logs")).on("animationend",function(){a(this).find('tr[class*="'+A+'new"]').each(function(){var b=a(this);-1!==b.prop("class").indexOf("passed")?b.addClass(A+"passed").removeClass(A+"new-passed"):b.addClass(A+"blocked").removeClass(A+"new-blocked")});return!1});aa.on("change",function(){switch(a('input[name="'+b("live-log")+'"]:checked').val()){case "start":D();break;case "pause":L();break;case "stop":E()}});ba.on("change",function(){var d=aa.closest("tr"),f=ba.prop("checked");e[c][1]=f?"o":"x";z(e);w&&w.clear().destroy();f?(d.show().next().next().next().nextAll().hide(),p.ajaxCMD="live-stop",m.order=[1,"desc"],m.createdRow=function(b,a){Z(b,a,"new-")}):(d.hide().next().next().next().nextAll().show(),p.ajaxCMD="restore-logs",m.order=[0,""],m.createdRow=function(b,a){Z(b,a,"")});a(b("#","live-log-stop")).trigger("click");w=Y(c,p,m);return!1}).trigger("change");W("export-logs");a(b("#","export-logs")).on("click",function(){a(b("#","export-form")).submit();return!1});break;case 2:a(f).on(b("gmap-error"),function(){q(null,{cmd:"gmap-error"},function(b){J(b.page,b.tab)})});var K=a(b("#","map"));"object"===typeof f.google?K.each(function(){a(this).GmapRS()}):K.each(function(){a(this).empty().html('<iframe src="'+d.altgmap+'?output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>')});a('select[id^="'+b("!","service")+'"]').on("change",function(){e[c][3]=a(this).prop("selectedIndex");z(e)}).change();a(b("@","get_location")).on("click",function(){var c=a(b("#","whois")),d=a.trim(a(b("@","ip_address")).val());if(d){c.hide().empty();var e=a.whois(d,function(d){var e,f="";for(e=0;e<d.length;++e)f+="<tr><td>"+d[e].name+"</td><td>"+d[e].value+"</td></tr>";c.html('<fieldset id="'+b("section-1")+'" class="'+b("field")+' panel panel-default" data-section="1"><legend class="panel-heading"><h3 id="'+b("whois-title")+'" class="'+b("dropdown")+'">Whois</h3></legend><div class="panel-body '+b("border")+'"><table class="'+b("table")+'">'+f+"</table></div></fieldset>").fadeIn("slow");a(b("#","whois-title")).on("click",function(){var c=a(this);c.parent().nextAll().toggle();c.toggleClass(b("dropup")).toggleClass(b("dropdown"));return!1})});q("loading",{cmd:"search",ip:d,which:a(b("@","service")).val()},function(a){var c="",e=l(a.latitude||"0"),g=l(a.longitude||"0"),h=a.latitude||a.longitude?8:2;for(k in a)if(a.hasOwnProperty(k)){var k=l(k);c+='<li><span class="'+b("title")+'">'+k+' : </span><span class="'+b("result")+'">'+l(a[k])+"</span></li>"}"object"===typeof f.google?K.GmapRS("addMarker",{latitude:e,longitude:g,title:d,content:"<ul>"+c+"</ul>",show:!0,zoom:h}):K.css({height:"600px",backgroundColor:"transparent"}).empty().html('<ul style="margin-top:0; margin-left:1em;"><li><span class="'+b("title")+'">IP address : </span><span class="'+b("result")+'">'+l(d)+"</span></li>"+c+'</ul><iframe src="//maps.google.com/maps?q='+e+","+g+"&z="+h+'&output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>')},[e])}return!1});a(b("@","ip_address")).on("keypress",function(c){if(c.which&&13===c.which||c.keyCode&&13===c.keyCode)return a(b("@","get_location")).click(),!1});a(b("@","ip_address")).val()&&a(b("@","get_location")).click();break;case 5:V(c),a("input[name="+b("duration")+"]:radio").on("click",function(){var b=a('div[class*="paginate"]').find('a[class*="current"]').text();e[c][2]=a(this).val()||0;e[c][3]=e[c][3]||2;e[c][4]=e[c][4]||1;z(e);h.ajaxStacked(e[c][2],e[c][3],e[c][4],b-1)}),a(b("#","open-new")).on("change",function(){var d=a(this).prop("checked");e[c][1]=d?"o":"x";z(e);a(b("#","section-0 svg")).find("a").each(function(){this.setAttribute("target",d?"_blank":"_self")})}),a(b("#","apply-layout")).on("click",function(){var d=a(b("#","select-layout"));e[c][3]=d.find('select[name="rows"] option:selected').val();e[c][4]=d.find('select[name="cols"] option:selected').val();z(e)}),a("ul.wp-submenu>li.wp-first-item").removeClass("current").next().addClass("current")}})})(jQuery,window,document);
|
admin/js/authenticate.js
CHANGED
@@ -9,9 +9,7 @@
|
|
9 |
|
10 |
var auth = IP_GEO_BLOCK_AUTH, wpzep = {
|
11 |
init: false,
|
12 |
-
|
13 |
-
nonce: auth.nonce || '',
|
14 |
-
sites: auth.sites || []
|
15 |
},
|
16 |
|
17 |
// regular expression to find target for is_admin()
|
@@ -209,13 +207,13 @@
|
|
209 |
|
210 |
// remove an old nonce
|
211 |
while (i-- > 0) {
|
212 |
-
if (data[i].indexOf(wpzep.
|
213 |
data.splice(i, 1);
|
214 |
break;
|
215 |
}
|
216 |
}
|
217 |
|
218 |
-
data.push(wpzep.
|
219 |
uri.query = data.join('&');
|
220 |
|
221 |
return compose_uri(uri);
|
@@ -227,10 +225,11 @@
|
|
227 |
}
|
228 |
|
229 |
// Check uri where the nonce is needed
|
|
|
230 |
function is_admin(url) {
|
231 |
// parse uri and get real path
|
232 |
-
|
233 |
-
uri = parse_uri(
|
234 |
|
235 |
// possibly scheme is `javascript` and path is `void(0);`
|
236 |
if (check_uri(uri)) {
|
@@ -244,12 +243,12 @@
|
|
244 |
}
|
245 |
|
246 |
// check if uri includes the target path of zep
|
247 |
-
|
248 |
-
if (
|
249 |
-
if ((0 <=
|
250 |
-
(0 <=
|
251 |
-
(0 <=
|
252 |
-
(0 <=
|
253 |
return 1; // internal for admin
|
254 |
}
|
255 |
}
|
@@ -259,18 +258,34 @@
|
|
259 |
}
|
260 |
|
261 |
// Check if current page is admin area and the target of wp-zep
|
262 |
-
function
|
263 |
-
return (is_admin(window.location.pathname) === 1 || window.location.search.indexOf(wpzep.
|
264 |
}
|
265 |
|
266 |
-
//
|
267 |
-
function
|
268 |
-
var i, n =
|
|
|
269 |
for (i = 0; i < n; ++i) {
|
270 |
-
|
271 |
-
|
|
|
272 |
}
|
273 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
}
|
275 |
/*
|
276 |
$.ajaxSetup({
|
@@ -290,14 +305,14 @@
|
|
290 |
});
|
291 |
*/
|
292 |
// Embed a nonce before an Ajax request is sent
|
293 |
-
//
|
294 |
$.ajaxPrefilter(function (settings /*, original, jqxhr*/) {
|
295 |
// POST to async-upload.php causes an error in https://wordpress.org/plugins/mammoth-docx-converter/
|
296 |
if (is_admin(settings.url) === 1 && !settings.url.match(/async-upload\.php$/)) {
|
297 |
// multipart/form-data (XMLHttpRequest Level 2)
|
298 |
// IE10+, Firefox 4+, Safari 5+, Android 3+
|
299 |
if (typeof window.FormData !== 'undefined' && settings.data instanceof FormData) {
|
300 |
-
settings.data.append(wpzep.
|
301 |
}
|
302 |
|
303 |
// application/x-www-form-urlencoded
|
@@ -309,14 +324,14 @@
|
|
309 |
var data, callback, uri = parse_uri(settings.url);
|
310 |
|
311 |
if (typeof settings.data === 'undefined' || uri.query) {
|
312 |
-
settings.url = add_query_nonce(uri,
|
313 |
} else {
|
314 |
data = settings.data ? settings.data.split('&') : [];
|
315 |
callback = check_ajax(window.location.pathname);
|
316 |
if (callback) {
|
317 |
data = callback(data);
|
318 |
}
|
319 |
-
data.push(wpzep.
|
320 |
settings.data = data.join('&');
|
321 |
}
|
322 |
}
|
@@ -380,52 +395,60 @@
|
|
380 |
var elem = $(document); // `html` or `body` doesn't work with some browsers
|
381 |
|
382 |
elem.onFirst('click contextmenu', 'a', function (event) {
|
383 |
-
//
|
384 |
-
|
385 |
-
href = $this.attr('href'),
|
386 |
-
|
387 |
-
|
388 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
// if context menu then continue and should be checked in check_nonce()
|
390 |
if ('click' !== event.type) {
|
391 |
return;
|
392 |
}
|
393 |
|
394 |
-
// if admin area (except
|
395 |
else if (admin === 1) {
|
396 |
-
$this.attr('href',
|
397 |
-
href, (
|
398 |
-
)
|
399 |
}
|
400 |
|
401 |
// if external then redirect with no referrer not to leak out the nonce
|
402 |
-
else if (admin === -1 &&
|
403 |
// open within the same window
|
404 |
-
if ('_self' === $this.attr('target')) {
|
405 |
-
|
406 |
-
|
|
|
407 |
}
|
408 |
|
409 |
// open a new window
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
|
|
429 |
}
|
430 |
});
|
431 |
|
@@ -435,7 +458,11 @@
|
|
435 |
|
436 |
// if admin area then add the nonce
|
437 |
if (is_admin(action) === 1) {
|
438 |
-
$this.attr('
|
|
|
|
|
|
|
|
|
439 |
}
|
440 |
});
|
441 |
}
|
@@ -447,21 +474,12 @@
|
|
447 |
if (!wpzep.init) {
|
448 |
wpzep.init = true;
|
449 |
|
450 |
-
// avoid conflict with "Open external links in a new window"
|
451 |
-
if (is_backend_nonce()) {
|
452 |
-
$('a').each(function () {
|
453 |
-
if (!this.hasAttribute('onClick') && is_admin(this.getAttribute('href')) === -1) {
|
454 |
-
this.setAttribute('onClick', 'javascript:return false');
|
455 |
-
}
|
456 |
-
});
|
457 |
-
}
|
458 |
-
|
459 |
$('img').each(function (/*index*/) {
|
460 |
var src = $(this).attr('src');
|
461 |
|
462 |
// if admin area
|
463 |
if (is_admin(src) === 1) {
|
464 |
-
$(this).attr('src', add_query_nonce(src,
|
465 |
}
|
466 |
});
|
467 |
|
@@ -471,8 +489,8 @@
|
|
471 |
n = data.length;
|
472 |
|
473 |
for (i = 0; i < n; ++i) {
|
474 |
-
if (-1 === data[i].restoreUrl.indexOf(wpzep.
|
475 |
-
window._wpRevisionsSettings.revisionData[i].restoreUrl = add_query_nonce(data[i].restoreUrl,
|
476 |
}
|
477 |
}
|
478 |
}
|
9 |
|
10 |
var auth = IP_GEO_BLOCK_AUTH, wpzep = {
|
11 |
init: false,
|
12 |
+
name: 'ip-geo-block-auth-nonce'
|
|
|
|
|
13 |
},
|
14 |
|
15 |
// regular expression to find target for is_admin()
|
207 |
|
208 |
// remove an old nonce
|
209 |
while (i-- > 0) {
|
210 |
+
if (data[i].indexOf(wpzep.name) === 0) {
|
211 |
data.splice(i, 1);
|
212 |
break;
|
213 |
}
|
214 |
}
|
215 |
|
216 |
+
data.push(wpzep.name + '=' + encodeURIComponent(nonce));//RFC3986
|
217 |
uri.query = data.join('&');
|
218 |
|
219 |
return compose_uri(uri);
|
225 |
}
|
226 |
|
227 |
// Check uri where the nonce is needed
|
228 |
+
// Note: in case of url in the admin area of different site, it returns 0
|
229 |
function is_admin(url) {
|
230 |
// parse uri and get real path
|
231 |
+
url = url || window.location.pathname; // in case of empty `action` on the form tag
|
232 |
+
var uri = parse_uri(url.toLowerCase());
|
233 |
|
234 |
// possibly scheme is `javascript` and path is `void(0);`
|
235 |
if (check_uri(uri)) {
|
243 |
}
|
244 |
|
245 |
// check if uri includes the target path of zep
|
246 |
+
url = regexp.exec(uri.pathname);
|
247 |
+
if (url) {
|
248 |
+
if ((0 <= url[0].indexOf(auth.admin + 'admin-')) ||
|
249 |
+
(0 <= url[0].indexOf(auth.admin )) ||
|
250 |
+
(0 <= url[0].indexOf(auth.plugins )) ||
|
251 |
+
(0 <= url[0].indexOf(auth.themes ))) {
|
252 |
return 1; // internal for admin
|
253 |
}
|
254 |
}
|
258 |
}
|
259 |
|
260 |
// Check if current page is admin area and the target of wp-zep
|
261 |
+
function is_backend() {
|
262 |
+
return (is_admin(window.location.pathname) === 1 || window.location.search.indexOf(wpzep.name) >= 0);
|
263 |
}
|
264 |
|
265 |
+
// Check if url belongs to multisite
|
266 |
+
function is_multisite(url) {
|
267 |
+
var i, j, n = auth.sites.length;
|
268 |
+
|
269 |
for (i = 0; i < n; ++i) {
|
270 |
+
j = url.indexOf(auth.sites[i] + '/')
|
271 |
+
if (0 <= j && j <= 6) { // from `//` to `https://`
|
272 |
+
return true;
|
273 |
}
|
274 |
}
|
275 |
+
|
276 |
+
return false;
|
277 |
+
}
|
278 |
+
|
279 |
+
// check if the uri does not need a nonce
|
280 |
+
function is_neutral(uri) {
|
281 |
+
// return !uri.query; // without queries
|
282 |
+
// return !uri.query || !$('body').hasClass('wp-core-ui'); // without queries or outside dashboard
|
283 |
+
return /\/$/.test(uri.path); // `/wp-admin/`
|
284 |
+
}
|
285 |
+
|
286 |
+
// check if the link has nofollow
|
287 |
+
function has_nofollow($elem) {
|
288 |
+
return -1 !== ($elem.attr('rel') || '').indexOf('nofollow');
|
289 |
}
|
290 |
/*
|
291 |
$.ajaxSetup({
|
305 |
});
|
306 |
*/
|
307 |
// Embed a nonce before an Ajax request is sent
|
308 |
+
// $(document).ajaxSend(function (event, jqxhr, settings) {
|
309 |
$.ajaxPrefilter(function (settings /*, original, jqxhr*/) {
|
310 |
// POST to async-upload.php causes an error in https://wordpress.org/plugins/mammoth-docx-converter/
|
311 |
if (is_admin(settings.url) === 1 && !settings.url.match(/async-upload\.php$/)) {
|
312 |
// multipart/form-data (XMLHttpRequest Level 2)
|
313 |
// IE10+, Firefox 4+, Safari 5+, Android 3+
|
314 |
if (typeof window.FormData !== 'undefined' && settings.data instanceof FormData) {
|
315 |
+
settings.data.append(wpzep.name, auth.nonce);
|
316 |
}
|
317 |
|
318 |
// application/x-www-form-urlencoded
|
324 |
var data, callback, uri = parse_uri(settings.url);
|
325 |
|
326 |
if (typeof settings.data === 'undefined' || uri.query) {
|
327 |
+
settings.url = add_query_nonce(uri, auth.nonce);
|
328 |
} else {
|
329 |
data = settings.data ? settings.data.split('&') : [];
|
330 |
callback = check_ajax(window.location.pathname);
|
331 |
if (callback) {
|
332 |
data = callback(data);
|
333 |
}
|
334 |
+
data.push(wpzep.name + '=' + encodeURIComponent(auth.nonce));//RFC3986
|
335 |
settings.data = data.join('&');
|
336 |
}
|
337 |
}
|
395 |
var elem = $(document); // `html` or `body` doesn't work with some browsers
|
396 |
|
397 |
elem.onFirst('click contextmenu', 'a', function (event) {
|
398 |
+
var admin = 0, // default: do nothing if href is empty
|
399 |
+
$this = $(this),
|
400 |
+
href = $this.attr('href') || '', // returns 'string' or 'undefined'
|
401 |
+
uri = parse_uri(href);
|
402 |
+
|
403 |
+
// check href has right scheme and path
|
404 |
+
if (check_uri(uri)) {
|
405 |
+
admin = is_admin(href);
|
406 |
+
}
|
407 |
+
/*
|
408 |
+
console.log('href:' + href, uri, 'admin:' + admin, 'is_backend:' + is_backend(), 'is_multisite:' + is_multisite(href));
|
409 |
+
//*/
|
410 |
// if context menu then continue and should be checked in check_nonce()
|
411 |
if ('click' !== event.type) {
|
412 |
return;
|
413 |
}
|
414 |
|
415 |
+
// if admin area (except a link with nofollow in the comment thread) then add a nonce
|
416 |
else if (admin === 1) {
|
417 |
+
$this.attr('href', is_neutral(uri) ? href :
|
418 |
+
add_query_nonce( href, has_nofollow($this) ? 'nofollow' : auth.nonce )
|
419 |
+
);
|
420 |
}
|
421 |
|
422 |
// if external then redirect with no referrer not to leak out the nonce
|
423 |
+
else if (admin === -1 && is_backend()) {
|
424 |
// open within the same window
|
425 |
+
if ('_self' === $this.attr('target') || is_multisite(href)) {
|
426 |
+
$this.attr('href', is_neutral(uri) ? href :
|
427 |
+
add_query_nonce( href, has_nofollow($this) ? 'nofollow' : auth.nonce )
|
428 |
+
);
|
429 |
}
|
430 |
|
431 |
// open a new window
|
432 |
+
else if (!this.hasAttribute('onClick')) {
|
433 |
+
// avoid `url=...;url=javascript:...`
|
434 |
+
href = href.split(';', 2).shift();
|
435 |
+
href = escapeHTML(decodeURIComponent(this.href)); // & => &
|
436 |
+
|
437 |
+
admin = window.open();
|
438 |
+
admin.document.write(
|
439 |
+
'<!DOCTYPE html><html><head>' +
|
440 |
+
'<meta name="referrer" content="never" />' +
|
441 |
+
'<meta name="referrer" content="no-referrer" />' +
|
442 |
+
'<meta http-equiv="refresh" content="0; url=' + href + '" />' +
|
443 |
+
($('body').hasClass('webview') ? '<script>window.location.replace("' + href + '")</script>' : '') +
|
444 |
+
'</head></html>'
|
445 |
+
);
|
446 |
+
admin.document.close();
|
447 |
+
|
448 |
+
// stop event propagation and location transition
|
449 |
+
event.stopImmediatePropagation();
|
450 |
+
return false; // same as event.stopPropagation() and event.preventDefault()
|
451 |
+
}
|
452 |
}
|
453 |
});
|
454 |
|
458 |
|
459 |
// if admin area then add the nonce
|
460 |
if (is_admin(action) === 1) {
|
461 |
+
if ('post' === $this.attr('method').toLowerCase()) {
|
462 |
+
$this.attr('action', add_query_nonce(action, auth.nonce));
|
463 |
+
} else {
|
464 |
+
$this.append('<input type="hidden" name="' + wpzep.name + '" value="' + auth.nonce + '">');
|
465 |
+
}
|
466 |
}
|
467 |
});
|
468 |
}
|
474 |
if (!wpzep.init) {
|
475 |
wpzep.init = true;
|
476 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
477 |
$('img').each(function (/*index*/) {
|
478 |
var src = $(this).attr('src');
|
479 |
|
480 |
// if admin area
|
481 |
if (is_admin(src) === 1) {
|
482 |
+
$(this).attr('src', add_query_nonce(src, auth.nonce));
|
483 |
}
|
484 |
});
|
485 |
|
489 |
n = data.length;
|
490 |
|
491 |
for (i = 0; i < n; ++i) {
|
492 |
+
if (-1 === data[i].restoreUrl.indexOf(wpzep.name)) {
|
493 |
+
window._wpRevisionsSettings.revisionData[i].restoreUrl = add_query_nonce(data[i].restoreUrl, auth.nonce);
|
494 |
}
|
495 |
}
|
496 |
}
|
admin/js/authenticate.min.js
CHANGED
@@ -3,4 +3,4 @@
|
|
3 |
Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
This software is released under the MIT License.
|
5 |
*/
|
6 |
-
(function(h,k
|
3 |
Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
This software is released under the MIT License.
|
5 |
*/
|
6 |
+
(function(g,h,k){function y(a){var b=k.createElement("div");b.appendChild(k.createTextNode(a));a=b.innerHTML.replace(/["']/g,function(a){return{'"':""","'":"'"}[a]});b="";return a}function q(a){a=a?a.toString():"";a=a.match(/^(?:([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/);return{scheme:a[1]||"",relative:a[2]||"",authority:a[3]||"",path:a[4]||"",query:a[5]||"",fragment:a[6]||""}}function m(a,b){"object"!==typeof a&&(a=q(a||h.location.href));for(var e=a.query?a.query.split("&"):[],d=e.length;0<d--;)if(0===e[d].indexOf(l.name)){e.splice(d,1);break}e.push(l.name+"="+encodeURIComponent(b));a.query=e.join("&");return(a.scheme?a.scheme+":":"")+(a.relative+a.path)+(a.query?"?"+a.query:"")+(a.fragment?"#"+a.fragment:"")}function u(a){return(!a.scheme||/^https?$/.test(a.scheme))&&(a.path||a.query)}function n(a){a=a||h.location.pathname;var b=q(a.toLowerCase());if(u(b)){b=z(a);if(b.origin!==h.location.origin)return-1;if((a=A.exec(b.pathname))&&(0<=a[0].indexOf(f.admin+"admin-")||0<=a[0].indexOf(f.admin)||0<=a[0].indexOf(f.plugins)||0<=a[0].indexOf(f.themes)))return 1}return 0}function v(a){return-1!==(a.attr("rel")||"").indexOf("nofollow")}function r(a,b,e){var d=b.split(/\s+/);a.each(function(a){for(a=0;a<d.length;++a){var b=g.trim(d[a]).match(/[^\.]+/i)[0],c=g(this),f=b;b=e;c=g._data(c[0]).events[f];f=b?c.splice(c.delegateCount-1,1)[0]:c.pop();c.splice(b?0:c.delegateCount||0,0,f)}})}function p(){if(!l.init&&(l.init=!0,g("img").each(function(){var a=g(this).attr("src");1===n(a)&&g(this).attr("src",m(a,f.nonce))}),"undefined"!==typeof h._wpRevisionsSettings)){var a,b=h._wpRevisionsSettings.revisionData,e=b.length;for(a=0;a<e;++a)-1===b[a].restoreUrl.indexOf(l.name)&&(h._wpRevisionsSettings.revisionData[a].restoreUrl=m(b[a].restoreUrl,f.nonce))}}var f=IP_GEO_BLOCK_AUTH,l={init:!1,name:"ip-geo-block-auth-nonce"},A=new RegExp("^(?:"+(f.home||"")+f.admin+"|"+(f.home||"")+f.plugins+"|"+(f.home||"")+f.themes+")(?:.*.php|.*/)?$"),w=function(a){for(var b=a.length;0<b--;)if(-1!==a[b].indexOf("request%5Bbrowse%5D=ip-geo-block-auth")){a[b]="request%5Bbrowse%5D=featured";break}return a},x={"upload.php":function(a){for(var b=a.length;0<b--;)if(-1!==a[b].indexOf("query%5Bip-geo-block-auth-nonce%5D=")){delete a[b];break}return a},"theme-install.php":w,"network/theme-install.php":w},z=function(){var a=null;try{new URL("/","http://example.com/")}catch(b){try{a=(new DOMParser).parseFromString("<html><head></head><body></body></html>","text/html")}catch(e){a=k.implementation.createHTMLDocument("")}}return function(b,e){var d=k;b="undefined"!==typeof b?b:h.location.href;if(null===a){"undefined"===typeof e&&(e=h.location.href);try{var c=new URL(b,e)}catch(B){c=new URL(b,h.location.href)}}else{if("undefined"!==typeof e){for(d=a;d.head.firstChild;)d.head.removeChild(d.head.firstChild);c=d.createElement("base");c.setAttribute("href",e);d.head.appendChild(c)}d=d.createElement("a");d.setAttribute("href",b);d.setAttribute("href",d.href);c={protocol:d.protocol,host:d.host,hostname:d.hostname,port:d.port,pathname:d.pathname,search:d.search,hash:d.hash,href:d.href,username:"",password:"",origin:d.origin||null};"http:"===c.protocol&&"80"===c.port?(c.port="",c.host=c.host.replace(/:80$/,"")):"https:"===c.protocol&&"443"===c.port&&(c.port="",c.host=c.host.replace(/:443$/,""));if("http:"===c.protocol||"https:"===c.protocol)c.pathname&&"/"!==c.pathname.charAt(0)&&(c.pathname="/"+c.pathname),c.origin||(c.origin=c.protocol+"//"+c.hostname+(c.port?":"+c.port:""))}if(c.username||c.password)throw new URIError(c.username+":"+c.password);return c}}();g.ajaxPrefilter(function(a){if(1===n(a.url)&&!a.url.match(/async-upload\.php$/))if("undefined"!==typeof h.FormData&&a.data instanceof FormData)a.data.append(l.name,f.nonce);else{var b=q(a.url);if("undefined"===typeof a.data||b.query)a.url=m(b,f.nonce);else{b=a.data?a.data.split("&"):[];var e=h.location.pathname;e=e.replace(f.home+f.admin,"");(e=x.hasOwnProperty(e)?x[e]:null)&&(b=e(b));b.push(l.name+"="+encodeURIComponent(f.nonce));a.data=b.join("&")}}});"undefined"===typeof g.fn.onFirst&&(g.fn.onFirst=function(a,b){var e,d=g(this),c="string"===typeof b;g.fn.on.apply(d,arguments);if("object"===typeof a)for(e in a)a.hasOwnProperty(e)&&r(d,e,c);else"string"===typeof a&&r(d,a,c);return d});g(h).on("error",function(){p(!1)});g(function(){p(!0)});(function(){var a=g(k);a.onFirst("click contextmenu","a",function(a){var b=0,d=g(this),c=d.attr("href")||"",k=q(c);u(k)&&(b=n(c));if("click"===a.type)if(1===b)d.attr("href",/\/$/.test(k.path)?c:m(c,v(d)?"nofollow":f.nonce));else if(-1===b&&(1===n(h.location.pathname)||0<=h.location.search.indexOf(l.name))){if(!(b="_self"===d.attr("target")))a:{b=c;var t,r=f.sites.length;for(t=0;t<r;++t){var p=b.indexOf(f.sites[t]+"/");if(0<=p&&6>=p){b=!0;break a}}b=!1}if(b)d.attr("href",/\/$/.test(k.path)?c:m(c,v(d)?"nofollow":f.nonce));else if(!this.hasAttribute("onClick"))return c.split(";",2).shift(),c=y(decodeURIComponent(this.href)),b=h.open(),b.document.write('<!DOCTYPE html><html><head><meta name="referrer" content="never" /><meta name="referrer" content="no-referrer" /><meta http-equiv="refresh" content="0; url='+c+'" />'+(g("body").hasClass("webview")?'<script>window.location.replace("'+c+'")\x3c/script>':"")+"</head></html>"),b.document.close(),a.stopImmediatePropagation(),!1}});a.onFirst("submit","form",function(){var a=g(this),e=a.attr("action");1===n(e)&&("post"===a.attr("method").toLowerCase()?a.attr("action",m(e,f.nonce)):a.append('<input type="hidden" name="'+l.name+'" value="'+f.nonce+'">'))})})()})(jQuery,window,document);
|
admin/js/cidr.min.js
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
- jQuery (https://jquery.com/)
|
9 |
This software is released under the MIT License.
|
10 |
*/
|
11 |
-
"function"!==typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(u,I){if(null==u)throw Error("Cannot convert undefined or null to object");var m,z,B=Object(u);for(z=1;z<arguments.length;z++){var C=arguments[z];if(null!=C)for(m in C)Object.prototype.hasOwnProperty.call(C,m)&&(B[m]=C[m])}return B},writable:!0,configurable:!0});Array.prototype.forEach||(Array.prototype.forEach=function(u,I){if(null==this)throw Error("this is null or not defined");var m,z,B=Object(this);var C=B.length>>>0;if("[object Function]"!={}.toString.call(u))throw Error(u+" is not a function");I&&(m=I);for(z=0;z<C;){if(z in B){var O=B[z];u.call(m,O,z,B)}z++}});Array.isArray||(Array.isArray=function(u){return"[object Array]"===Object.prototype.toString.call(u)});(function(u,I,m){function z(){function a(c){if(!(this instanceof a))return void 0===c?z():new a(c);if(c instanceof a)this.s=c.s,this.e=c.e,this.c=c.c.slice();else{var b,d;if(0===c&&0>1/c)c="-0";else if(!ha.test(c+=""))throw Error("Invalid number");"-"==c.charAt(0)?(c=c.slice(1),this.s=-1):this.s=1;-1<(b=c.indexOf("."))&&(c=c.replace(".",""));0<(d=c.search(/e/i))?(0>b&&(b=d),b+=+c.slice(d+1),c=c.substring(0,d)):0>b&&(b=c.length);var e=c.length;for(d=0;d<e&&"0"==c.charAt(d);++d);if(d==e)this.c=[this.e=0];else{for(;0<e&&"0"==c.charAt(--e););this.e=b-d-1;this.c=[];for(b=0;d<=e;)this.c[b++]=+c.charAt(d++)}}this.constructor=a}a.prototype=n;a.DP=20;a.RM=1;a.NE=-7;a.PE=21;a.version="5.0.2";return a}function B(a,c,b,d){var e=a.c,f=a.e+c+1;if(f<e.length){if(1===b)d=5<=e[f];else if(2===b)d=5<e[f]||5==e[f]&&(d||0>f||void 0!==e[f+1]||e[f-1]&1);else if(3===b)d=d||void 0!==e[f]||0>f;else if(d=!1,0!==b)throw Error("Invalid rounding mode");if(1>f)e.length=1,d?(a.e=-c,e[0]=1):e[0]=a.e=0;else{e.length=f--;if(d)for(;9<++e[f];)e[f]=0,f--||(++a.e,e.unshift(1));for(f=e.length;!e[--f];)e.pop()}}else if(0>b||3<b||b!==~~b)throw Error("Invalid rounding mode");return a}function C(a,c,b,d){var e=a.constructor,f=!a.c[0];if(void 0!==b){if(b!==~~b||b<(3==c)||1E6<b)throw Error(3==c?"Invalid precision":"Invalid decimal places");a=new e(a);b=d-a.e;a.c.length>++d&&B(a,b,e.RM);for(2==c&&(d=a.e+b+1);a.c.length<d;)a.c.push(0)}var g=a.e;var h=a.c.join("");b=h.length;if(2!=c&&(1==c||3==c&&d<=g||g<=e.NE||g>=e.PE))h=h.charAt(0)+(1<b?"."+h.slice(1):"")+(0>g?"e":"e+")+g;else if(0>g){for(;++g;)h="0"+h;h="0."+h}else if(0<g)if(++g>b)for(g-=b;g--;)h+="0";else g<b&&(h=h.slice(0,g)+"."+h.slice(g));else 1<b&&(h=h.charAt(0)+"."+h.slice(1));return 0>a.s&&(!f||4==c)?"-"+h:h}function O(a){var c=Object.getPrototypeOf,b={},d=b.toString,e=b.hasOwnProperty;b=e.toString;if(!a||"[object Object]"!==d.call(a))return!1;a=c(a);if(!a)return!0;a=e.call(a,"constructor")&&a.constructor;return"function"===typeof a&&b.call(a)===b.call(Object)}function J(){var a,c,b,d=arguments[0]||{},e=1,f=arguments.length,g=!1;"boolean"===typeof d&&(g=d,d=arguments[e]||{},e++);"object"===typeof d||"function"===typeof d&&"number"!==typeof d.nodeType||(d={});e===f&&(d=this,e--);for(;e<f;e++)if(null!=(a=arguments[e]))for(c in a){var h=d[c];var l=a[c];d!==l&&(g&&l&&(O(l)||(b=Array.isArray(l)))?(b?(b=!1,h=h&&Array.isArray(h)?h:[]):h=h&&O(h)?h:{},d[c]=J(g,h,l)):l!==m&&(d[c]=l))}return d}function P(a,c){return x(a).plus(c)}function ba(){var a=/%%|%(?:(\d+)\$)?((?:[-+#0 ]|'[\s\S])*)(\d+)?(?:\.(\d*))?([\s\S])/g,c=arguments,b=0,d=c[b++],e=function(a,c,b,d){b||(b=" ");c=a.length>=c?"":Array(1+c-a.length>>>0).join(b);return d?a+c:c+a},f=function(a,c,b,d,f){var g=d-a.length;0<g&&(a=b||"0"!==f?e(a,d,f,b):[a.slice(0,c.length),e("",g,"0",!0),a.slice(c.length)].join(""));return a},g=function(a,c,b,d,g,h){a=e((a>>>0).toString(c),g||0,"0",!1);return f(a,"",b,d,h)},h=function(a,c,b,d,e){null!==d&&d!==m&&(a=a.slice(0,d));return f(a,"",c,b,e)},l=function(a,d,l,k,r,n){if("%%"===a)return"%";a=" ";var t=!1;var E="";var q;var v=0;for(q=l.length;v<q;v++)switch(l.charAt(v)){case " ":case "0":a=l.charAt(v);break;case "+":E="+";break;case "-":t=!0;break;case "'":v+1<q&&(a=l.charAt(v+1),v++)}k=k?+k:0;if(!isFinite(k))throw Error("Width must be finite");r=r?+r:"d"===n?0:-1<"fFeE".indexOf(n)?6:m;if(d&&0===+d)throw Error("Argument number must be greater than zero");if(d&&+d>=c.length)throw Error("Too few arguments");d=d?c[+d]:c[b++];switch(n){case "%":return"%";case "s":return h(d+"",t,k,r,a);case "c":return h(String.fromCharCode(+d),t,k,r,a);case "b":return g(d,2,t,k,r,a);case "o":return g(d,8,t,k,r,a);case "x":return g(d,16,t,k,r,a);case "X":return g(d,16,t,k,r,a).toUpperCase();case "u":return g(d,10,t,k,r,a);case "i":case "d":return d=+d||0,d=Math.round(d-d%1),E=0>d?"-":E,d=E+e(String(Math.abs(d)),r,"0",!1),t&&"0"===a&&(a=" "),f(d,E,t,k,a);case "e":case "E":case "f":case "F":case "g":case "G":return d=+d,E=0>d?"-":E,l=["toExponential","toFixed","toPrecision"]["efg".indexOf(n.toLowerCase())],n=["toString","toUpperCase"]["eEfFgG".indexOf(n)%2],d=E+Math.abs(d)[l](r),f(d,E,t,k,a)[n]();default:return""}};try{return d.replace(a,l)}catch(E){return!1}}function ca(){var a=arguments,c=a.length,b=0;if(0===c)throw Error("Empty isset");for(;b!==c;){if(a[b]===m||null===a[b])return!1;b++}return!0}function da(a){return("number"===typeof a||"string"===typeof a&&-1===" \n\r\t\f\x0B\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000".indexOf(a.slice(-1)))&&""!==a&&!isNaN(a)}function w(a,c){return a===c?0:a>c?1:-1}function G(a,c,b){a=(a+"").indexOf(c,b||0);return-1===a?!1:a}function L(a,c,b){a+="";var d=a.length;0>c&&(c+=d);b!==m&&(d=0>b?b+d:b+c);return c>=a.length||0>c||c>d?!1:a.slice(c,d)}function U(a,c){var b,d=0;if(null===a||a===m)return 0;if(a.constructor!==Array&&a.constructor!==Object)return 1;"COUNT_RECURSIVE"===c&&(c=1);1!==c&&(c=0);for(b in a)a.hasOwnProperty(b)&&(d++,1!==c||!a[b]||a[b].constructor!==Array&&a[b].constructor!==Object||(d+=U(a[b],1)));return d}function V(a,c){var b="",d="",e="";1===arguments.length&&(c=a,a="");if("object"===typeof c){if("[object Array]"===Object.prototype.toString.call(c))return c.join(a);for(b in c)d+=e+c[b],e=a;return d}return c}function R(a,c,b){if(2>arguments.length||a===m||c===m)return null;if(""===a||!1===a||null===a)return!1;if("function"===typeof a||"object"===typeof a||"function"===typeof c||"object"===typeof c)return{0:""};!0===a&&(a="1");a+="";var d=(c+"").split(a);if(b===m)return d;0===b&&(b=1);if(0<b)return b>=d.length?d:d.slice(0,b-1).concat([d.slice(b-1).join(a)]);if(-b>=d.length)return[];d.splice(d.length+b);return d}function ea(a,c){null===c&&(c=1);if(null===a||1>c)return!1;a+="";for(var b=[],d=0,e=a.length;d<e;)b.push(a.slice(d,d+=c));return b}function H(a,c,b,d){var e="",f=function(a,c){for(var b="";b.length<c;)b+=a;return b=b.substr(0,c)};a+="";b=b!==m?b:" ";0!==d&&1!==d&&2!==d&&(d=1);0<(e=c-a.length)&&(0===d?a=f(b,e)+a:1===d?a+=f(b,e):2===d&&(e=f(b,Math.ceil(e/2)),a=(e+a+e).substr(0,c)));return a}function ia(a){var c="",b="";if(a.hasOwnProperty("length"))return a.length?a.pop():null;for(c in a)a.hasOwnProperty(c)&&(b=c);return b?(c=a[b],delete a[b],c):null}function ja(a){for(var c=arguments.length,b=arguments,d=null,e=a,f=b[1].length,g=0,h=1,l=0,k=[],n=[];g<f;){for(;h<c;)k[l++]=b[h++][g];l=0;h=1;if(a){if("string"===typeof a)e=u[a];else if("object"===typeof a&&a.length){d="string"===typeof a[0]?u[a[0]]:a[0];if(d===m)throw Error("Object not found: "+a[0]);e="string"===typeof a[1]?d[a[1]]:a[1]}n[g++]=e.apply(d,k)}else n[g++]=k;k=[]}return n}function W(a,c){var b="[object Array]"===Object.prototype.toString.call(a),d=c?{}:[];if(b&&!c)return a.slice(0).reverse();if(c){keys=[];for(e in a)keys.push(e);for(b=keys.length;b--;){var e=keys[b];d[e]=a[e]}}else for(e in a)d.unshift(a[e]);return d}function ka(a){a=(a+"").replace(/[^01]/gi,"");return parseInt(a,2)}function la(a){0>a&&(a=4294967295+a+1);return parseInt(a,10).toString(2)}function X(a){var c,b="";a+="";var d=0;for(c=a.length;d<c;d++){var e=a.charCodeAt(d).toString(16);b+=2>e.length?"0"+e:e}return b}function Y(a){a+="";var c=[],b=0,d;for(d=a.length;b<d;b+=2){var e=parseInt(a.substr(b,1),16);var f=parseInt(a.substr(b+1,1),16);if(isNaN(e)||isNaN(f))return!1;c.push(e<<4|f)}return String.fromCharCode.apply(String,c)}function M(a){for(var c=0,b=1,d="",e,f,g,h,l,k,n,Q,u,r,p,t,x,q,v,w,y;c<a.length;){h=a.charAt(c);l="";for(c++;c<a.length&&null!==a.charAt(c).match(/[\d*]/);)l+=a.charAt(c),c++;""===l&&(l="1");switch(h){case "a":case "A":if(arguments[b]===m)throw Error("pack(): Type "+h+": not enough arguments");e=String(arguments[b]);"*"===l&&(l=e.length);for(f=0;f<l;f++)d=e[f]===m?"a"===h?d+String.fromCharCode(0):d+" ":d+e[f];b++;break;case "h":case "H":if(arguments[b]===m)throw Error("pack(): Type "+h+": not enough arguments");e=arguments[b];"*"===l&&(l=e.length);if(l>e.length)throw Error("pack(): Type "+h+": not enough characters in string");for(f=0;f<l;f+=2)k=e[f],k=f+1>=l||e[f+1]===m?k+"0":k+e[f+1],"h"===h&&(k=k[1]+k[0]),d+=String.fromCharCode(parseInt(k,16));b++;break;case "c":case "C":"*"===l&&(l=arguments.length-b);if(l>arguments.length-b)throw Error("pack(): Type "+h+": too few arguments");for(f=0;f<l;f++)d+=String.fromCharCode(arguments[b]),b++;break;case "s":case "S":case "v":"*"===l&&(l=arguments.length-b);if(l>arguments.length-b)throw Error("pack(): Type "+h+": too few arguments");for(f=0;f<l;f++)d+=String.fromCharCode(arguments[b]&255),d+=String.fromCharCode(arguments[b]>>8&255),b++;break;case "n":"*"===l&&(l=arguments.length-b);if(l>arguments.length-b)throw Error("pack(): Type "+h+": too few arguments");for(f=0;f<l;f++)d+=String.fromCharCode(arguments[b]>>8&255),d+=String.fromCharCode(arguments[b]&255),b++;break;case "i":case "I":case "l":case "L":case "V":"*"===l&&(l=arguments.length-b);if(l>arguments.length-b)throw Error("pack(): Type "+h+": too few arguments");for(f=0;f<l;f++)d+=String.fromCharCode(arguments[b]&255),d+=String.fromCharCode(arguments[b]>>8&255),d+=String.fromCharCode(arguments[b]>>16&255),d+=String.fromCharCode(arguments[b]>>24&255),b++;break;case "N":"*"===l&&(l=arguments.length-b);if(l>arguments.length-b)throw Error("pack(): Type "+h+": too few arguments");for(f=0;f<l;f++)d+=String.fromCharCode(arguments[b]>>24&255),d+=String.fromCharCode(arguments[b]>>16&255),d+=String.fromCharCode(arguments[b]>>8&255),d+=String.fromCharCode(arguments[b]&255),b++;break;case "f":case "d":k=23;n=8;"d"===h&&(k=52,n=11);"*"===l&&(l=arguments.length-b);if(l>arguments.length-b)throw Error("pack(): Type "+h+": too few arguments");for(f=0;f<l;f++){e=arguments[b];h=Math.pow(2,n-1)-1;g=-h+1;Q=h;u=isNaN(q=parseFloat(e))||-Infinity===q||Infinity===q?q:0;r=0;p=2*h+1+k+3;t=Array(p);x=0>(q=0!==u?0:q);q=Math.abs(q);v=Math.floor(q);q-=v;for(e=p;e;)t[--e]=0;for(e=h+2;v&&e;)t[--e]=v%2,v=Math.floor(v/2);for(e=h+1;0<q&&e;--q)t[++e]=(1<=(q*=2))-0;for(e=-1;++e<p&&!t[e];);y=(q=k-1+(e=(r=h+1-e)>=g&&r<=Q?e+1:h+1-(r=g-1)))+1;if(t[y]){if(!(w=t[q]))for(y=q+2;!w&&y<p;w=t[y++]);for(y=q+1;w&&0<=--y;(t[y]=!t[y]-0)&&(w=0));}for(e=0>e-2?-1:e-3;++e<p&&!t[e];);(r=h+1-e)>=g&&r<=Q?++e:r<g&&(e=h+1-(r=g-1));if(v||0!==u)r=Q+1,e=h+2,-Infinity===u?x=1:isNaN(u)&&(t[e]=1);q=Math.abs(r+h);h="";for(y=n+1;--y;)h=q%2+h,q=q>>=1;y=q=0;e=(h=(x?"1":"0")+h+t.slice(e,e+k).join("")).length;for(g=[];e;)q+=(1<<y)*h.charAt(--e),7===y&&(g[g.length]=String.fromCharCode(q),q=0),y=(y+1)%8;g[g.length]=q?String.fromCharCode(q):"";d+=g.join("");b++}break;case "x":if("*"===l)throw Error("pack(): Type x: '*' ignored");for(f=0;f<l;f++)d+=String.fromCharCode(0);break;case "X":if("*"===l)throw Error("pack(): Type X: '*' ignored");for(f=0;f<l;f++){if(0===d.length)throw Error("pack(): Type X: outside of string");d=d.substring(0,d.length-1)}break;case "@":if("*"===l)throw Error("pack(): Type X: '*' ignored");if(l>d.length)for(k=l-d.length,f=0;f<k;f++)d+=String.fromCharCode(0);l<d.length&&(d=d.substring(0,l));break;default:throw Error("pack(): Type "+h+": unknown format code");}}if(b<arguments.length)throw Error("pack(): "+(arguments.length-b)+" arguments unused");return d}function N(a,c){c+="";var b,d=c.length,e=[];if("C*"===a){for(b=0;b<d;b++)e[b+1]=c.charCodeAt(b);return e}if("H*hex"===a){e.hex=[];for(b=0;b<d;b++)e.hex[b+1]=((c.charCodeAt(b++)<<8)+c.charCodeAt(b)).toString(16);return e}}function S(a,c,b){return m===b?a.test(c):c.match(a)}function Z(a,c){var b,d=null,e=/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/;"string"===typeof a?"function"===typeof u[a]?b=u[a]:a.match(e)&&(b=(new Function(null,"return "+a))()):"[object Array]"===Object.prototype.toString.call(a)?("string"===typeof a[0]?a[0].match(e)&&(b=eval(a[0]+"['"+a[1]+"']")):b=a[0][a[1]],"string"===typeof a[0]?"function"===typeof u[a[0]]?d=u[a[0]]:a[0].match(e)&&(d=eval(a[0])):"object"===typeof a[0]&&(d=a[0])):"function"===typeof a&&(b=a,d=u);if("function"!==typeof b)throw Error(b+" is not a valid function");return b.apply(d,c)}function aa(a,c,b){var d=/((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/;switch(c){case 275:return b===m?d.test(a):1048576===b?!1!==G(a,"."):!0}return!1}function A(a){a+="";var c=0,b="",d=[];if(4===a.length)return[a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2),a.charCodeAt(3)].join(".");if(16===a.length){for(c=0;16>c;c++)d.push(((a.charCodeAt(c++)<<8)+a.charCodeAt(c)).toString(16));return d.join(":").replace(/((^|:)0(?=:|$))+:?/g,function(a){b=a.length>b.length?a:b;return a}).replace(b||" ","::")}return!1}function ma(a){a+="";var c,b;var d=String.fromCharCode;if(c=a.match(/^(?:\d{1,3}(?:\.|$)){4}/))return c=c[0].split("."),c=d(c[0])+d(c[1])+d(c[2])+d(c[3]),4===c.length?c:!1;if(c=a.match(/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/)){for(b=1;4>b;b++)if(2!==b&&0!==c[b].length){c[b]=c[b].split(":");for(a=0;a<c[b].length;a++){c[b][a]=parseInt(c[b][a],16);if(isNaN(c[b][a]))return!1;c[b][a]=d(c[b][a]>>8)+d(c[b][a]&255)}c[b]=c[b].join("")}d=c[1].length+c[3].length;if(16===d)return c[1]+c[3];if(16>d&&0<c[2].length)return c[1]+Array(16-d+1).join("\x00")+c[3]}return!1}function na(a){var c;a=a.match(/^([1-9]\d*|0[0-7]*|0x[\da-f]+)(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?$/i);if(!a)return!1;a[0]=0;for(c=1;5>c;c+=1)a[0]+=!!(a[c]||"").length,a[c]=parseInt(a[c])||0;a.push(256,256,256,256);a[4+a[0]]*=Math.pow(256,4-a[0]);return a[1]>=a[5]||a[2]>=a[6]||a[3]>=a[7]||a[4]>=a[8]?!1:a[1]*(1===a[0]||16777216)+a[2]*(2>=a[0]||65536)+a[3]*(3>=a[0]||256)+1*a[4]}function k(a){this.__construct(a)}function F(a,c){this.__construct(a,c)}function D(a,c){this.__construct(a,c)}function T(a,c,b){var d=[].slice.call(arguments).slice(3);a&&a.addEventListener?a.addEventListener(c,function(){b.apply(a,d)},!1):a&&a.attachEvent&&a.attachEvent("on"+c,function(){b.apply(a,d)})}function fa(a){return a.trim().replace(",","\n").split("\n").map(function(a){return a.trim()})}function K(a){for(;p.g.firstChild;)p.g.removeChild(p.g.firstChild);p.g.appendChild(a?I.createTextNode(a+""):oa)}var n={},ha=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;n.abs=function(){var a=new this.constructor(this);a.s=1;return a};n.cmp=function(a){var c=this.c,b=(a=new this.constructor(a)).c,d=this.s,e=a.s,f=this.e,g=a.e;if(!c[0]||!b[0])return c[0]?d:b[0]?-e:0;if(d!=e)return d;a=0>d;if(f!=g)return f>g^a?1:-1;e=(f=c.length)<(g=b.length)?f:g;for(d=-1;++d<e;)if(c[d]!=b[d])return c[d]>b[d]^a?1:-1;return f==g?0:f>g^a?1:-1};n.div=function(a){var c=this.constructor,b=this.c,d=(a=new c(a)).c,e=this.s==a.s?1:-1,f=c.DP;if(f!==~~f||0>f||1E6<f)throw Error("Invalid decimal places");if(!d[0])throw Error("Division by zero");if(!b[0])return new c(0*e);var g,h,k=d.slice(),n=g=d.length,u=b.length,m=b.slice(0,g),p=m.length,r=a,w=r.c=[],t=0,x=f+(r.e=this.e-a.e)+1;r.s=e;e=0>x?0:x;for(k.unshift(0);p++<g;)m.push(0);do{for(h=0;10>h;h++){if(g!=(p=m.length))var q=g>p?1:-1;else{var v=-1;for(q=0;++v<g;)if(d[v]!=m[v]){q=d[v]>m[v]?1:-1;break}}if(0>q){for(a=p==g?d:k;p;){if(m[--p]<a[p]){for(v=p;v&&!m[--v];)m[v]=9;--m[v];m[p]+=10}m[p]-=a[p]}for(;!m[0];)m.shift()}else break}w[t++]=q?h:++h;m[0]&&q?m[p]=b[n]||0:m=[b[n]]}while((n++<u||void 0!==m[0])&&e--);w[0]||1==t||(w.shift(),r.e--);t>x&&B(r,f,c.RM,void 0!==m[0]);return r};n.eq=function(a){return!this.cmp(a)};n.gt=function(a){return 0<this.cmp(a)};n.gte=function(a){return-1<this.cmp(a)};n.lt=function(a){return 0>this.cmp(a)};n.lte=function(a){return 1>this.cmp(a)};n.minus=n.sub=function(a){var c=this.constructor;var b=this.s,d=(a=new c(a)).s;if(b!=d)return a.s=-d,this.plus(a);var e=this.c.slice();var f=this.e;var g=a.c,h=a.e;if(!e[0]||!g[0])return g[0]?(a.s=-d,a):new c(e[0]?this:0);if(b=f-h){c=b;0>b?(b=-b,f=e):(h=f,f=g);f.reverse();for(d=b;d--;)f.push(0);f.reverse()}else for(f=((c=e.length<g.length)?e:g).length,b=d=0;d<f;d++)if(e[d]!=g[d]){c=e[d]<g[d];break}c&&(f=e,e=g,g=f,a.s=-a.s);if(0<(d=(f=g.length)-(c=e.length)))for(;d--;)e[c++]=0;for(d=c;f>b;){if(e[--f]<g[f]){for(c=f;c&&!e[--c];)e[c]=9;--e[c];e[f]+=10}e[f]-=g[f]}for(;0===e[--d];)e.pop();for(;0===e[0];)e.shift(),--h;e[0]||(a.s=1,e=[h=0]);a.c=e;a.e=h;return a};n.mod=function(a){var c=this,b=c.constructor,d=c.s,e=(a=new b(a)).s;if(!a.c[0])throw Error("Division by zero");c.s=a.s=1;var f=1==a.cmp(c);c.s=d;a.s=e;if(f)return new b(c);d=b.DP;e=b.RM;b.DP=b.RM=0;c=c.div(a);b.DP=d;b.RM=e;return this.minus(c.times(a))};n.plus=n.add=function(a){var c=this.constructor;var b=this.s,d=(a=new c(a)).s;if(b!=d)return a.s=-d,this.minus(a);d=this.e;var e=this.c,f=a.e,g=a.c;if(!e[0]||!g[0])return g[0]?a:new c(e[0]?this:0*b);e=e.slice();if(b=d-f){0<b?(f=d,c=g):(b=-b,c=e);for(c.reverse();b--;)c.push(0);c.reverse()}0>e.length-g.length&&(c=g,g=e,e=c);b=g.length;for(d=0;b;e[b]%=10)d=(e[--b]=e[b]+g[b]+d)/10|0;d&&(e.unshift(d),++f);for(b=e.length;0===e[--b];)e.pop();a.c=e;a.e=f;return a};n.pow=function(a){var c=this,b=new c.constructor(1),d=b,e=0>a;for(e&&(a=-a);;){a&1&&(d=d.times(c));a>>=1;if(!a)break;c=c.times(c)}return e?b.div(d):d};n.round=function(a,c){var b=this.constructor;if(void 0===a)a=0;else if(a!==~~a||0>a||1E6<a)throw Error("Invalid decimal places");return B(new b(this),a,void 0===c?b.RM:c)};n.sqrt=function(){var a=this.constructor;var c=this.s;var b=this.e,d=new a(.5);if(!this.c[0])return new a(this);if(0>c)throw Error("No square root");c=Math.sqrt(this.toString());0===c||c===1/0?(c=this.c.join(""),c.length+b&1||(c+="0"),c=new a(Math.sqrt(c).toString()),c.e=((b+1)/2|0)-(0>b||b&1)):c=new a(c.toString());b=c.e+(a.DP+=4);do{var e=c;c=d.times(e.plus(this.div(e)))}while(e.c.slice(0,b).join("")!==c.c.slice(0,b).join(""));return B(c,a.DP-=4,a.RM)};n.times=n.mul=function(a){var c=this.constructor;var b=this.c,d=(a=new c(a)).c,e=b.length,f=d.length,g=this.e,h=a.e;a.s=this.s==a.s?1:-1;if(!b[0]||!d[0])return new c(0*a.s);a.e=g+h;e<f&&(c=b,b=d,d=c,h=e,e=f,f=h);for(c=Array(h=e+f);h--;)c[h]=0;for(g=f;g--;){f=0;for(h=e+g;h>g;)f=c[h]+d[g]*b[h-g-1]+f,c[h--]=f%10,f=f/10|0;c[h]=(c[h]+f)%10}f?++a.e:c.shift();for(g=c.length;!c[--g];)c.pop();a.c=c;return a};n.toExponential=function(a){return C(this,1,a,a)};n.toFixed=function(a){return C(this,2,a,this.e+a)};n.toPrecision=function(a){return C(this,3,a,a-1)};n.toString=function(){return C(this)};n.valueOf=n.toJSON=function(){return C(this,4)};var x=z();x["default"]=x.Big=x;u.Big=x;k.prototype={IP_V4:"IPv4",IP_V6:"IPv6",IP_V4_MAX_PREFIX_LENGTH:32,IP_V6_MAX_PREFIX_LENGTH:128,IP_V4_OCTETS:4,IP_V6_OCTETS:16,$in_addr:null,__construct:function(a){if(!aa(a,275))throw Error("Invalid IP address format: `"+a+"`");this.$in_addr=ma(a)},toString:function(){return A(this.$in_addr)},parse:function(a){return 0===G(a,"0x")?(a=L(a,2),this.parseHex(a)):0===G(a,"0b")?(a=L(a,2),this.parseBin(a)):da(a)?this.parseLong(a):new k(a)},parseBin:function(a){if(!S(/^([0-1]{32}|[0-1]{128})$/,a))throw Error("Invalid binary IP address format `"+a+"`");var c="";ja(ka,ea(a,8)).forEach(function(a){c+=M("C*",a)});return new k(A(c))},parseHex:function(a){if(!S(/^([0-9a-fA-F]{8}|[0-9a-fA-F]{32})$/,a))throw Error("Invalid hexadecimal IP address format `"+a+"`");return new k(A(M("H*",a)))},parseLong:function(a,c){if(c===this.IP_V4){var b=a;b=isFinite(b)?[b>>>24,b>>>16&255,b>>>8&255,b&255].join("."):!1;b=new this(b)}else{var d=[];for(b=0;b<this.IP_V6_OCTETS;b++)d.push(x(a).mod(256)),a=x(a).div(256);d=W(d);d[0]="C*";b=new k(A(Z(M,d)))}return b},parseInAddr:function(a){return new k(A(a))},getVersion:function(){return aa(A(this.$in_addr),275,1048576)?this.IP_V4:aa(A(this.$in_addr),275,2097152)?this.IP_V6:!1},getMaxPrefixLength:function(){return this.getVersion()===this.IP_V4?this.IP_V4_MAX_PREFIX_LENGTH:this.IP_V6_MAX_PREFIX_LENGTH},getOctetsCount:function(){return this.getVersion()===this.IP_V4?this.IP_V4_OCTETS:this.IP_V6_OCTETS},getReversePointer:function(){if(this.getVersion()===this.IP_V4){var a=W(R(".",this.toString()));a=V(".",a)+".in-addr.arpa"}else a=N("H*hex",this.$in_addr),a=W(ea(a.hex)),a=V(".",a)+".ip6.arpa";return a},inAddr:function(){return this.$in_addr},toBin:function(){var a=[];N("C*",this.$in_addr).forEach(function(c){a.push(H(la(c),8,"0",0))});return V(a)},toHex:function(){return X(this.$in_addr)},toLong:function(){var a=0;if(this.getVersion()===this.IP_V4)a=ba("%u",na(A(this.$in_addr)));else{var c=this.IP_V6_OCTETS-1;var b=N("C*",this.$in_addr);b.forEach(function(b){var d=a;var f=c--;f=x(256).pow(f);b=x(b).times(f);a=P(d,b,1)})}return a},next:function(a){a=a||1;if(0>a)throw Error("Number must be greater than 0");var c,b,d=N("C*",this.$in_addr);for(c=0;c<a;c++)for(b=U(d);0<=b;--b)if(255>d[b]){d[b]++;break}else d[b]=0;d[0]="C*";return new k(A(Z(M,d)))},prev:function(a){a=a||1;if(0>a)throw Error("Number must be greater than 0");var c,b,d=N("C*",this.$in_addr);for(c=0;c<a;c++)for(b=U(d);0<=b;--b)if(0==d[b])d[b]=255;else{d[b]--;break}d[0]="C*";return new k(A(Z(M,d)))}};F.prototype={$ip:null,$netmask:null,$position:0,__construct:function(a,c){this.setIP(a);this.setNetmask(c)},toString:function(){return this.getCIDR()},parse:function(a){if(G(a,"/")){var c=R("/",a,2);a=c[0];c=c[1];a=k.prototype.parse(a);c=this.prefix2netmask(parseInt(c,10),a.getVersion())}else G(a," ")?(c=R(" ",a,2),a=c[0],c=c[1],a=k.prototype.parse(a),c=k.prototype.parse(c)):(a=k.prototype.parse(a),c=this.prefix2netmask(a.getMaxPrefixLength(),a.getVersion()));return new F(a,c)},prefix2netmask:function(a,c){a:{var b=[k.prototype.IP_V4,k.prototype.IP_V6];var d="";for(d in b)if(b.hasOwnProperty(d)&&b[d]==c){b=!0;break a}b=!1}if(!b)throw Error("Wrong IP version");b=c===k.prototype.IP_V4?k.prototype.IP_V4_MAX_PREFIX_LENGTH:k.prototype.IP_V6_MAX_PREFIX_LENGTH;if(!(da(a)&&0<=a&&a<=b))throw Error("Invalid prefix length");b=H(H("",parseInt(a,10),"1"),b,"0");return k.prototype.parseBin(b)},netmask2prefix:function(a){a=a.toBin();var c="0";c=c?(c+"").replace(/([[\]().?/*{}+$^:])/g,"\\$1"):" \\s\u00a0";return((a+"").replace(new RegExp("["+c+"]+$","g"),"")+"").length},setIP:function(a){if(ca(this.$netmask)&&this.$netmask.getVersion()!==a.getVersion())throw Error("IP version is not same as Netmask version");this.$ip=a},setNetmask:function(a){if(!S(/^1*0*$/,a.toBin()))throw Error("Invalid Netmask address format");if(ca(this.$ip)&&a.getVersion()!==this.$ip.getVersion())throw Error("Netmask version is not same as IP version");this.$netmask=a},setPrefixLength:function(a){this.setNetmask(this.prefix2netmask(parseInt(a,10),this.$ip.getVersion()))},getIP:function(){return this.$ip},getNetmask:function(){return this.$netmask},getNetwork:function(){var a=this.getIP().inAddr()+"",c=this.getNetmask().inAddr()+"",b,d=a.length,e=[];for(b=0;b<d;b++)e.push(H((a.charCodeAt(b)&c.charCodeAt(b)).toString(16),2,"0",0));return new k(A(Y(e.join(""))))},getPrefixLength:function(){return this.netmask2prefix(this.getNetmask())},getCIDR:function(){return ba("%s/%s",this.getNetwork(),this.getPrefixLength())},getWildcard:function(){return new k(A(~this.getNetmask().inAddr()))},getBroadcast:function(){var a=this.getNetwork().inAddr()+"",c=this.getNetmask().inAddr()+"",b,d=a.length,e=[];for(b=0;b<d;b++)e.push(H((a.charCodeAt(b)|~c.charCodeAt(b)&255).toString(16),2,"0",0));return new k(A(Y(e.join(""))))},getFirstIP:function(){return this.getNetwork()},getLastIP:function(){return this.getBroadcast()},getBlockSize:function(){var a=this.$ip.getMaxPrefixLength(),c=this.getPrefixLength();return this.$ip.getVersion()===k.prototype.IP_V6?(a=a-c+"",x("2").pow(a)):Math.pow(2,a-c)},getHosts:function(){var a=this.getNetwork(),c=this.getBroadcast();this.$ip.getVersion()===k.prototype.IP_V4&&2<this.getBlockSize()&&(a=k.prototype.parseBin(L(a.toBin(),0,a.getMaxPrefixLength()-1)+"1"),c=k.prototype.parseBin(L(c.toBin(),0,c.getMaxPrefixLength()-1)+"0"));return new D(a,c)},exclude:function(a){a=this.parse(a);if(0<w(a.getFirstIP().inAddr(),this.getLastIP().inAddr())||0>w(a.getLastIP().inAddr(),this.getFirstIP().inAddr()))throw Error("Exclude subnet not within target network");var c=[],b=this.getPrefixLength()+1;var d=J(!0,{},this);d.setPrefixLength(b);var e=J(!0,{},d);for(e.setIP(d.getLastIP().next());b<=a.getPrefixLength();){var f=new D(d.getFirstIP(),d.getLastIP());if(f.contains(a)){f=d;var g=e}else f=e,g=d;c.push(J(!0,{},g));if(++b>this.getNetwork().getMaxPrefixLength())break;f.setPrefixLength(b);g.setPrefixLength(b);g.setIP(f.getLastIP().next())}return F.prototype.sort(c)},moveTo:function(a){var c=this.$ip.getMaxPrefixLength();if(a<=this.getPrefixLength()||a>c)throw Error("Invalid prefix length");c=this.prefix2netmask(a,this.$ip.getVersion());var b=[];var d=J(!0,{},this);for(d.setPrefixLength(a);d.$ip.inAddr()<this.getLastIP().inAddr();)b.push(d),d=new F(d.getLastIP().next(),c);return b},sort:function(a){return a.sort(function(a,b){a=k.prototype.parse((a+"").split("/").shift()).toHex();b=k.prototype.parse((b+"").split("/").shift()).toHex();return w(a,b)})},current:function(){return this.getFirstIP().next(this.$position)},key:function(){return this.$position},next:function(){++this.$position},rewind:function(){this.$position=0},valid:function(){return 0>=w(this.getFirstIP().next(this.$position).inAddr(),this.getLastIP().inAddr())},count:function(){return parseInt(this.getBlockSize())}};D.prototype={$firstIP:null,$lastIP:null,$position:0,__construct:function(a,c){this.setFirstIP(a);this.setLastIP(c)},parse:function(a){if(G(a,"/")||G(a," ")){a=F.prototype.parse(a);var c=a.getFirstIP();a=a.getLastIP()}else G(a,"*")?(c=k.prototype.parse(a.replace("*","0")),a=k.prototype.parse(a.replace("*","255"))):G(a,"-")?(a=R("-",a,2),c=k.prototype.parse(a[0]),a=k.prototype.parse(a[1])):(c=k.prototype.parse(a),a=J(!0,{},c));return new D(c,a)},contains:function(a){if(a instanceof k)a=0<=w(a.inAddr(),this.$firstIP.inAddr())&&0>=w(a.inAddr(),this.$lastIP.inAddr());else if(a instanceof D||a instanceof F)a=0<=w(a.getFirstIP().inAddr(),this.$firstIP.inAddr())&&0>=w(a.getLastIP().inAddr(),this.$lastIP.inAddr());else throw Error("Invalid type");return a},setFirstIP:function(a){if(this.$lastIP&&0<w(a.inAddr(),this.$lastIP.inAddr()))throw Error("First IP is grater than second");this.$firstIP=a},setLastIP:function(a){if(this.$firstIP&&0>w(a.inAddr(),this.$firstIP.inAddr()))throw Error("Last IP is less than first");this.$lastIP=a},getFirstIP:function(){return this.$firstIP},getLastIP:function(){return this.$lastIP},getNetworks:function(){var a=this.getSpanNetwork(),c=[];if(a.getFirstIP().inAddr()===this.$firstIP.inAddr()&&a.getLastIP().inAddr()===this.$lastIP.inAddr())c.push(a);else{if(a.getFirstIP().inAddr()!==this.$firstIP.inAddr()){var b=a.exclude(this.$firstIP.prev());var d=this.$firstIP.inAddr();b.forEach(function(a){0<=w(a.getFirstIP().inAddr(),d)&&c.push(a)})}a.getLastIP().inAddr()!==this.$lastIP.inAddr()&&(c.length?(b=ia(c),b=b.exclude(this.$lastIP.next())):b=a.exclude(this.$lastIP.next()),d=this.$lastIP.inAddr(),b.forEach(function(a){a.getLastIP().inAddr()<=d&&c.push(a)}))}return F.prototype.sort(c)},getSpanNetwork:function(){var a=this.getFirstIP().inAddr()+"",c=this.getLastIP().inAddr()+"",b,d=a.length,e=[];for(b=0;b<d;b++)e.push(H((a.charCodeAt(b)^c.charCodeAt(b)).toString(16),2,"0",0));c=k.prototype.parseInAddr(Y(e.join("")));a=(S(/^(0*)/,c.toBin(),!0)[1]+"").length;c=k.prototype.parseBin(H(L(this.getFirstIP().toBin(),0,a),c.getMaxPrefixLength(),"0"));return new F(c,F.prototype.prefix2netmask(a,c.getVersion()))},sort:function(a){return a.sort(function(a,b){var c=w(a.getFirstIP().inAddr(),b.getFirstIP().inAddr());return c?c:w(a.getLastIP().inAddr(),b.getLastIP().inAddr())})},merge:function(a){a=D.prototype.sort(a);for(var c=0;c<a.length-1;)0<=w(a[c].getLastIP().next().inAddr(),a[c+1].getFirstIP().inAddr())?(a[c].setLastIP(a[c+1].getLastIP()),a.splice(c+1,1)):++c;return a},current:function(){return this.$firstIP.next(this.$position)},key:function(){return this.$position},next:function(){++this.$position},rewind:function(){this.$position=0},valid:function(){return 0>=w(X(this.$firstIP.next(this.$position).inAddr()),X(this.$lastIP.inAddr()))},count:function(){var a=this.$lastIP.toLong();var c=this.$firstIP.toLong();a=x(a).minus(c);return P(a,1)}};u.IP=k;u.Network=F;u.Range=D;var p={};"abcdefg".split("").map(function(a){p[a]=I.getElementById(a)});var oa=p.g?p.g.firstChild.cloneNode(!1):null;T(p.a,"click",function(a){a.value="";K()},p.c);T(p.b,"click",function(a){a.value="";K()},p.d);T(p.e,"click",function(a,c){var b=fa(a.value);try{var d,e=[];var f=0;for(d=b.length;f<d;++f)b[f]&&(b[f]=b[f].split("-").map(function(a){return a.trim()}),1===b[f].length&&b[f].push(b[f][0]),2===b[f].length&&(b[f][1]=b[f][1]||b[f][0],b[f][0]=b[f][0]||b[f][1],b[f][0]&&b[f][1]&&e.push(new D(new k(b[f][0]),new k(b[f][1])))));e=D.prototype.merge(e);var g=x(0);c.value="";f=0;for(d=e.length;f<d;++f)g=P(g,e[f].count(),1),e[f].getNetworks().forEach(function(a){c.value+=a+"\n"});K(g.gt(x(0))?g:null)}catch(h){K(h.message)}},p.c,p.d);T(p.f,"click",function(a,c){var b=fa(a.value);try{var d,e=[];var f=0;for(d=b.length;f<d;++f)b[f]&&e.push(D.prototype.parse(b[f]));e=D.prototype.merge(e);var g=x(0);c.value="";f=0;for(d=e.length;f<d;++f)g=P(g,e[f].count(),1),c.value+=e[f].getFirstIP()+" - "+e[f].getLastIP()+"\n";K(g.gt(x(0))?g:null)}catch(h){K(h.message)}},p.d,p.c)})(window,document);
|
8 |
- jQuery (https://jquery.com/)
|
9 |
This software is released under the MIT License.
|
10 |
*/
|
11 |
+
(function(B,S,y){function aa(){function a(c){if(!(this instanceof a))return void 0===c?aa():new a(c);if(c instanceof a)this.s=c.s,this.e=c.e,this.c=c.c.slice();else{var b,e;if(0===c&&0>1/c)c="-0";else if(!ia.test(c+=""))throw Error("Invalid number");"-"==c.charAt(0)?(c=c.slice(1),this.s=-1):this.s=1;-1<(b=c.indexOf("."))&&(c=c.replace(".",""));0<(e=c.search(/e/i))?(0>b&&(b=e),b+=+c.slice(e+1),c=c.substring(0,e)):0>b&&(b=c.length);var f=c.length;for(e=0;e<f&&"0"==c.charAt(e);++e);if(e===f)this.c=[this.e=0];else{for(;0<f&&"0"==c.charAt(--f););this.e=b-e-1;this.c=[];for(b=0;e<=f;)this.c[b++]=+c.charAt(e++)}}this.constructor=a}a.prototype=n;a.DP=20;a.RM=1;a.NE=-7;a.PE=21;a.version="5.0.2";return a}function N(a,c,b,e){var f=a.c,g=a.e+c+1;if(g<f.length){if(1===b)e=5<=f[g];else if(2===b)e=5<f[g]||5==f[g]&&(e||0>g||void 0!==f[g+1]||f[g-1]&1);else if(3===b)e=e||void 0!==f[g]||0>g;else if(e=!1,0!==b)throw Error("Invalid rounding mode");if(1>g)f.length=1,e?(a.e=-c,f[0]=1):f[0]=a.e=0;else{f.length=g--;if(e)for(;9<++f[g];)f[g]=0,g--||(++a.e,f.unshift(1));for(g=f.length;!f[--g];)f.pop()}}else if(0>b||3<b||b!==~~b)throw Error("Invalid rounding mode");return a}function J(a,c,b,e){var f=a.constructor,g=!a.c[0];if(void 0!==b){if(b!==~~b||b<(3===c)||1E6<b)throw Error(3===c?"Invalid precision":"Invalid decimal places");a=new f(a);b=e-a.e;a.c.length>++e&&N(a,b,f.RM);for(2===c&&(e=a.e+b+1);a.c.length<e;)a.c.push(0)}var h=a.e;var k=a.c.join("");b=k.length;if(2!==c&&(1===c||3===c&&e<=h||h<=f.NE||h>=f.PE))k=k.charAt(0)+(1<b?"."+k.slice(1):"")+(0>h?"e":"e+")+h;else if(0>h){for(;++h;)k="0"+k;k="0."+k}else if(0<h)if(++h>b)for(h-=b;h--;)k+="0";else h<b&&(k=k.slice(0,h)+"."+k.slice(h));else 1<b&&(k=k.charAt(0)+"."+k.slice(1));return 0>a.s&&(!g||4===c)?"-"+k:k}function ba(a){var c=Object.getPrototypeOf,b={},e=b.toString,f=b.hasOwnProperty;b=f.toString;if(!a||"[object Object]"!==e.call(a))return!1;a=c(a);if(!a)return!0;a=f.call(a,"constructor")&&a.constructor;return"function"===typeof a&&b.call(a)===b.call(Object)}function H(){var a,c,b,e=arguments[0]||{},f=1,g=arguments.length,h=!1;"boolean"===typeof e&&(h=e,e=arguments[f]||{},f++);"object"===typeof e||"function"===typeof e&&"number"!==typeof e.nodeType||(e={});f===g&&(e=this,f--);for(;f<g;f++)if(null!=(a=arguments[f]))for(c in a){var k=e[c];var m=a[c];e!==m&&(h&&m&&(ba(m)||(b=Array.isArray(m)))?(b?(b=!1,k=k&&Array.isArray(k)?k:[]):k=k&&ba(k)?k:{},e[c]=H(h,k,m)):m!==y&&(e[c]=m))}return e}function O(a,c){return p(a).plus(c)}function ca(){var a=/%%|%(?:(\d+)\$)?((?:[-+#0 ]|'[\s\S])*)(\d+)?(?:\.(\d*))?([\s\S])/g,c=arguments,b=0,e=c[b++],f=function(a,b,c,e){c||(c=" ");b=a.length>=b?"":Array(1+b-a.length>>>0).join(c);return e?a+b:b+a},g=function(a,b,c,e,g){var h=e-a.length;0<h&&(a=c||"0"!==g?f(a,e,g,c):[a.slice(0,b.length),f("",h,"0",!0),a.slice(b.length)].join(""));return a},h=function(a,b,c,e,h,k){a=f((a>>>0).toString(b),h||0,"0",!1);return g(a,"",c,e,k)},k=function(a,b,c,e,f){null!==e&&e!==y&&(a=a.slice(0,e));return g(a,"",b,c,f)},m=function(a,e,m,l,n,t){if("%%"===a)return"%";a=" ";var D=!1;var p="";var u;var F=0;for(u=m.length;F<u;F++)switch(m.charAt(F)){case " ":case "0":a=m.charAt(F);break;case "+":p="+";break;case "-":D=!0;break;case "'":F+1<u&&(a=m.charAt(F+1),F++)}l=l?+l:0;if(!isFinite(l))throw Error("Width must be finite");n=n?+n:"d"===t?0:-1<"fFeE".indexOf(t)?6:y;if(e&&0===+e)throw Error("Argument number must be greater than zero");if(e&&+e>=c.length)throw Error("Too few arguments");e=e?c[+e]:c[b++];switch(t){case "%":return"%";case "s":return k(e+"",D,l,n,a);case "c":return k(String.fromCharCode(+e),D,l,n,a);case "b":return h(e,2,D,l,n,a);case "o":return h(e,8,D,l,n,a);case "x":return h(e,16,D,l,n,a);case "X":return h(e,16,D,l,n,a).toUpperCase();case "u":return h(e,10,D,l,n,a);case "i":case "d":return e=+e||0,e=Math.round(e-e%1),p=0>e?"-":p,e=p+f(String(Math.abs(e)),n,"0",!1),D&&"0"===a&&(a=" "),g(e,p,D,l,a);case "e":case "E":case "f":case "F":case "g":case "G":return e=+e,p=0>e?"-":p,m=["toExponential","toFixed","toPrecision"]["efg".indexOf(t.toLowerCase())],t=["toString","toUpperCase"]["eEfFgG".indexOf(t)%2],e=p+Math.abs(e)[m](n),g(e,p,D,l,a)[t]();default:return""}};try{return e.replace(a,m)}catch(D){return!1}}function da(){var a=arguments,c=a.length,b=0;if(0===c)throw Error("Empty isset");for(;b!==c;){if(a[b]===y||null===a[b])return!1;b++}return!0}function ea(a){return("number"===typeof a||"string"===typeof a&&-1===" \n\r\t\f\x0B\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000".indexOf(a.slice(-1)))&&""!==a&&!isNaN(a)}function v(a,c){return a===c?0:a>c?1:-1}function E(a,c,b){a=(a+"").indexOf(c,b||0);return-1===a?!1:a}function K(a,c,b){a+="";var e=a.length;0>c&&(c+=e);b!==y&&(e=0>b?b+e:b+c);return c>=a.length||0>c||c>e?!1:a.slice(c,e)}function T(a,c){var b,e=0;if(null===a||a===y)return 0;if(a.constructor!==Array&&a.constructor!==Object)return 1;"COUNT_RECURSIVE"===c&&(c=1);1!==c&&(c=0);for(b in a)a.hasOwnProperty(b)&&(e++,1!==c||!a[b]||a[b].constructor!==Array&&a[b].constructor!==Object||(e+=T(a[b],1)));return e}function U(a,c){var b="",e="",f="";1===arguments.length&&(c=a,a="");if("object"===typeof c){if("[object Array]"===Object.prototype.toString.call(c))return c.join(a);for(b in c)e+=f+c[b],f=a;return e}return c}function P(a,c,b){if(2>arguments.length||a===y||c===y)return null;if(""===a||!1===a||null===a)return!1;if("function"===typeof a||"object"===typeof a||"function"===typeof c||"object"===typeof c)return{0:""};!0===a&&(a="1");a+="";var e=(c+"").split(a);if(b===y)return e;0===b&&(b=1);if(0<b)return b>=e.length?e:e.slice(0,b-1).concat([e.slice(b-1).join(a)]);if(-b>=e.length)return[];e.splice(e.length+b);return e}function fa(a,c){null===c&&(c=1);if(null===a||1>c)return!1;a+="";for(var b=[],e=0,f=a.length;e<f;)b.push(a.slice(e,e+=c));return b}function G(a,c,b,e){var f="",g=function(a,b){for(var c="";c.length<b;)c+=a;return c=c.substr(0,b)};a+="";b=b!==y?b:" ";0!==e&&1!==e&&2!==e&&(e=1);0<(f=c-a.length)&&(0===e?a=g(b,f)+a:1===e?a+=g(b,f):2===e&&(f=g(b,Math.ceil(f/2)),a=(f+a+f).substr(0,c)));return a}function ja(a){var c="",b="";if(a.hasOwnProperty("length"))return a.length?a.pop():null;for(c in a)a.hasOwnProperty(c)&&(b=c);return b?(c=a[b],delete a[b],c):null}function ka(a){for(var c=arguments.length,b=arguments,e=null,f=a,g=b[1].length,h=0,k=1,m=0,l=[],n=[];h<g;){for(;k<c;)l[m++]=b[k++][h];m=0;k=1;if(a){if("string"===typeof a)f=B[a];else if("object"===typeof a&&a.length){e="string"===typeof a[0]?B[a[0]]:a[0];if(e===y)throw Error("Object not found: "+a[0]);f="string"===typeof a[1]?e[a[1]]:a[1]}n[h++]=f.apply(e,l)}else n[h++]=l;l=[]}return n}function V(a,c){var b="[object Array]"===Object.prototype.toString.call(a),e=c?{}:[];if(b&&!c)return a.slice(0).reverse();if(c){var f=[];for(g in a)f.push(g);for(b=f.length;b--;){var g=f[b];e[g]=a[g]}}else for(g in a)e.unshift(a[g]);return e}function la(a){a=(a+"").replace(/[^01]/gi,"");return parseInt(a,2)}function ma(a){0>a&&(a=4294967295+a+1);return parseInt(a,10).toString(2)}function W(a){var c,b="";a+="";var e=0;for(c=a.length;e<c;e++){var f=a.charCodeAt(e).toString(16);b+=2>f.length?"0"+f:f}return b}function X(a){a+="";var c=[],b=0,e;for(e=a.length;b<e;b+=2){var f=parseInt(a.substr(b,1),16);var g=parseInt(a.substr(b+1,1),16);if(isNaN(f)||isNaN(g))return!1;c.push(f<<4|g)}return String.fromCharCode.apply(String,c)}function L(a){for(var c=0,b=1,e="",f,g,h,k,m,l,n,p,t,v,w,C,B,u,x,A,z;c<a.length;){k=a.charAt(c);m="";for(c++;c<a.length&&null!==a.charAt(c).match(/[\d*]/);)m+=a.charAt(c),c++;""===m&&(m="1");switch(k){case "a":case "A":if(arguments[b]===y)throw Error("pack(): Type "+k+": not enough arguments");f=String(arguments[b]);"*"===m&&(m=f.length);for(g=0;g<m;g++)e=f[g]===y?"a"===k?e+String.fromCharCode(0):e+" ":e+f[g];b++;break;case "h":case "H":if(arguments[b]===y)throw Error("pack(): Type "+k+": not enough arguments");f=arguments[b];"*"===m&&(m=f.length);if(m>f.length)throw Error("pack(): Type "+k+": not enough characters in string");for(g=0;g<m;g+=2)l=f[g],l=g+1>=m||f[g+1]===y?l+"0":l+f[g+1],"h"===k&&(l=l[1]+l[0]),e+=String.fromCharCode(parseInt(l,16));b++;break;case "c":case "C":"*"===m&&(m=arguments.length-b);if(m>arguments.length-b)throw Error("pack(): Type "+k+": too few arguments");for(g=0;g<m;g++)e+=String.fromCharCode(arguments[b]),b++;break;case "s":case "S":case "v":"*"===m&&(m=arguments.length-b);if(m>arguments.length-b)throw Error("pack(): Type "+k+": too few arguments");for(g=0;g<m;g++)e+=String.fromCharCode(arguments[b]&255),e+=String.fromCharCode(arguments[b]>>8&255),b++;break;case "n":"*"===m&&(m=arguments.length-b);if(m>arguments.length-b)throw Error("pack(): Type "+k+": too few arguments");for(g=0;g<m;g++)e+=String.fromCharCode(arguments[b]>>8&255),e+=String.fromCharCode(arguments[b]&255),b++;break;case "i":case "I":case "l":case "L":case "V":"*"===m&&(m=arguments.length-b);if(m>arguments.length-b)throw Error("pack(): Type "+k+": too few arguments");for(g=0;g<m;g++)e+=String.fromCharCode(arguments[b]&255),e+=String.fromCharCode(arguments[b]>>8&255),e+=String.fromCharCode(arguments[b]>>16&255),e+=String.fromCharCode(arguments[b]>>24&255),b++;break;case "N":"*"===m&&(m=arguments.length-b);if(m>arguments.length-b)throw Error("pack(): Type "+k+": too few arguments");for(g=0;g<m;g++)e+=String.fromCharCode(arguments[b]>>24&255),e+=String.fromCharCode(arguments[b]>>16&255),e+=String.fromCharCode(arguments[b]>>8&255),e+=String.fromCharCode(arguments[b]&255),b++;break;case "f":case "d":l=23;n=8;"d"===k&&(l=52,n=11);"*"===m&&(m=arguments.length-b);if(m>arguments.length-b)throw Error("pack(): Type "+k+": too few arguments");for(g=0;g<m;g++){f=arguments[b];k=Math.pow(2,n-1)-1;h=-k+1;p=k;t=isNaN(u=parseFloat(f))||-Infinity===u||Infinity===u?u:0;v=0;w=2*k+1+l+3;C=Array(w);B=0>(u=0!==t?0:u);u=Math.abs(u);x=Math.floor(u);u-=x;for(f=w;f;)C[--f]=0;for(f=k+2;x&&f;)C[--f]=x%2,x=Math.floor(x/2);for(f=k+1;0<u&&f;--u)C[++f]=(1<=(u*=2))-0;for(f=-1;++f<w&&!C[f];);z=(u=l-1+(f=(v=k+1-f)>=h&&v<=p?f+1:k+1-(v=h-1)))+1;if(C[z]){if(!(A=C[u]))for(z=u+2;!A&&z<w;A=C[z++]);for(z=u+1;A&&0<=--z;(C[z]=!C[z]-0)&&(A=0));}for(f=0>f-2?-1:f-3;++f<w&&!C[f];);(v=k+1-f)>=h&&v<=p?++f:v<h&&(f=k+1-(v=h-1));if(x||0!==t)v=p+1,f=k+2,-Infinity===t?B=1:isNaN(t)&&(C[f]=1);u=Math.abs(v+k);k="";for(z=n+1;--z;)k=u%2+k,u=u>>=1;z=u=0;f=(k=(B?"1":"0")+k+C.slice(f,f+l).join("")).length;for(h=[];f;)u+=(1<<z)*k.charAt(--f),7===z&&(h[h.length]=String.fromCharCode(u),u=0),z=(z+1)%8;h[h.length]=u?String.fromCharCode(u):"";e+=h.join("");b++}break;case "x":if("*"===m)throw Error("pack(): Type x: '*' ignored");for(g=0;g<m;g++)e+=String.fromCharCode(0);break;case "X":if("*"===m)throw Error("pack(): Type X: '*' ignored");for(g=0;g<m;g++){if(0===e.length)throw Error("pack(): Type X: outside of string");e=e.substring(0,e.length-1)}break;case "@":if("*"===m)throw Error("pack(): Type X: '*' ignored");if(m>e.length)for(l=m-e.length,g=0;g<l;g++)e+=String.fromCharCode(0);m<e.length&&(e=e.substring(0,m));break;default:throw Error("pack(): Type "+k+": unknown format code");}}if(b<arguments.length)throw Error("pack(): "+(arguments.length-b)+" arguments unused");return e}function M(a,c){c+="";var b,e=c.length,f=[];if("C*"===a){for(b=0;b<e;b++)f[b+1]=c.charCodeAt(b);return f}if("H*hex"===a){f.hex=[];for(b=0;b<e;b++)f.hex[b+1]=((c.charCodeAt(b++)<<8)+c.charCodeAt(b)).toString(16);return f}}function Q(a,c,b){return y===b?a.test(c):c.match(a)}function Y(a,c){var b,e=null,f=/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/;"string"===typeof a?"function"===typeof B[a]?b=B[a]:a.match(f)&&(b=(new Function(null,"return "+a))()):"[object Array]"===Object.prototype.toString.call(a)?("string"===typeof a[0]?a[0].match(f)&&(b=eval(a[0]+"['"+a[1]+"']")):b=a[0][a[1]],"string"===typeof a[0]?"function"===typeof B[a[0]]?e=B[a[0]]:a[0].match(f)&&(e=eval(a[0])):"object"===typeof a[0]&&(e=a[0])):"function"===typeof a&&(b=a,e=B);if("function"!==typeof b)throw Error(b+" is not a valid function");return b.apply(e,c)}function Z(a,c,b){var e=/((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/;switch(c){case 275:return b===y?e.test(a):1048576===b?!1!==E(a,"."):!0}return!1}function w(a){a+="";var c=0,b="",e=[];if(4===a.length)return[a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2),a.charCodeAt(3)].join(".");if(16===a.length){for(c=0;16>c;c++)e.push(((a.charCodeAt(c++)<<8)+a.charCodeAt(c)).toString(16));return e.join(":").replace(/((^|:)0(?=:|$))+:?/g,function(a){b=a.length>b.length?a:b;return a}).replace(b||" ","::")}return!1}function na(a){a+="";var c,b;var e=String.fromCharCode;if(c=a.match(/^(?:\d{1,3}(?:\.|$)){4}/))return c=c[0].split("."),c=e(c[0])+e(c[1])+e(c[2])+e(c[3]),4===c.length?c:!1;if(c=a.match(/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/)){for(b=1;4>b;b++)if(2!==b&&0!==c[b].length){c[b]=c[b].split(":");for(a=0;a<c[b].length;a++){c[b][a]=parseInt(c[b][a],16);if(isNaN(c[b][a]))return!1;c[b][a]=e(c[b][a]>>8)+e(c[b][a]&255)}c[b]=c[b].join("")}e=c[1].length+c[3].length;if(16===e)return c[1]+c[3];if(16>e&&0<c[2].length)return c[1]+Array(16-e+1).join("\x00")+c[3]}return!1}function oa(a){var c;a=a.match(/^([1-9]\d*|0[0-7]*|0x[\da-f]+)(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?$/i);if(!a)return!1;a[0]=0;for(c=1;5>c;c+=1)a[0]+=!!(a[c]||"").length,a[c]=parseInt(a[c])||0;a.push(256,256,256,256);a[4+a[0]]*=Math.pow(256,4-a[0]);return a[1]>=a[5]||a[2]>=a[6]||a[3]>=a[7]||a[4]>=a[8]?!1:a[1]*(1===a[0]||16777216)+a[2]*(2>=a[0]||65536)+a[3]*(3>=a[0]||256)+1*a[4]}function l(a){this.__construct(a)}function A(a,c){this.__construct(a,c)}function x(a,c){this.__construct(a,c)}function R(a,c,b){var e=[].slice.call(arguments).slice(3);a&&a.addEventListener?a.addEventListener(c,function(){b.apply(a,e)},!1):a&&a.attachEvent&&a.attachEvent("on"+c,function(){b.apply(a,e)})}function ha(a){return a.trim().replace(",","\n").split("\n").map(function(a){return a.trim()})}function I(a){for(;t.g.firstChild;)t.g.removeChild(t.g.firstChild);t.g.appendChild(a?S.createTextNode(a+""):pa)}"function"!==typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(a,c){if(null==a)throw Error("Cannot convert undefined or null to object");var b,e,f=Object(a);for(e=1;e<arguments.length;e++){var g=arguments[e];if(null!=g)for(b in g)Object.prototype.hasOwnProperty.call(g,b)&&(f[b]=g[b])}return f},writable:!0,configurable:!0});Array.prototype.forEach||(Array.prototype.forEach=function(a,c){if(null==this)throw Error("this is null or not defined");var b,e,f=Object(this);var g=f.length>>>0;if("[object Function]"!=={}.toString.call(a))throw Error(a+" is not a function");c&&(b=c);for(e=0;e<g;){if(e in f){var h=f[e];a.call(b,h,e,f)}e++}});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});var n={},ia=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;n.abs=function(){var a=new this.constructor(this);a.s=1;return a};n.cmp=function(a){var c=this.c,b=(a=new this.constructor(a)).c,e=this.s,f=a.s,g=this.e,h=a.e;if(!c[0]||!b[0])return c[0]?e:b[0]?-f:0;if(e!==f)return e;a=0>e;if(g!==h)return g>h^a?1:-1;f=(g=c.length)<(h=b.length)?g:h;for(e=-1;++e<f;)if(c[e]!==b[e])return c[e]>b[e]^a?1:-1;return g===h?0:g>h^a?1:-1};n.div=function(a){var c=this.constructor,b=this.c,e=(a=new c(a)).c,f=this.s==a.s?1:-1,g=c.DP;if(g!==~~g||0>g||1E6<g)throw Error("Invalid decimal places");if(!e[0])throw Error("Division by zero");if(!b[0])return new c(0*f);var h,k=e.slice(),l=e.length,n=e.length;al=b.length;r=b.slice(0,n);rl=r.length;q=a;qc=q.c=[];qi=0;d=g+(q.e=this.e-a.e)+1;q.s=f;f=0>d?0:d;for(k.unshift(0);rl++<n;)r.push(0);do{for(h=0;10>h;h++){if(n!=(rl=r.length))var t=n>rl?1:-1;else{var p=-1;for(t=0;++p<n;)if(e[p]!=r[p]){t=e[p]>r[p]?1:-1;break}}if(0>t){for(a=rl==n?e:k;rl;){if(r[--rl]<a[rl]){for(p=rl;p&&!r[--p];)r[p]=9;--r[p];r[rl]+=10}r[rl]-=a[rl]}for(;!r[0];)r.shift()}else break}qc[qi++]=t?h:++h;r[0]&&t?r[rl]=b[l]||0:r=[b[l]]}while((l++<al||void 0!==r[0])&&f--);qc[0]||1==qi||(qc.shift(),q.e--);qi>d&&N(q,g,c.RM,void 0!==r[0]);return q};n.eq=function(a){return!this.cmp(a)};n.gt=function(a){return 0<this.cmp(a)};n.gte=function(a){return-1<this.cmp(a)};n.lt=function(a){return 0>this.cmp(a)};n.lte=function(a){return 1>this.cmp(a)};n.minus=n.sub=function(a){var c=this.constructor;var b=this.s,e=(a=new c(a)).s;if(b!==e)return a.s=-e,this.plus(a);var f=this.c.slice();var g=this.e;var h=a.c,k=a.e;if(!f[0]||!h[0])return h[0]?(a.s=-e,a):new c(f[0]?this:0);if(b=g-k){c=b;0>b?(b=-b,g=f):(k=g,g=h);g.reverse();for(e=b;e--;)g.push(0);g.reverse()}else for(g=((c=f.length<h.length)?f:h).length,b=e=0;e<g;e++)if(f[e]!=h[e]){c=f[e]<h[e];break}c&&(g=f,f=h,h=g,a.s=-a.s);if(0<(e=(g=h.length)-(c=f.length)))for(;e--;)f[c++]=0;for(e=c;g>b;){if(f[--g]<h[g]){for(c=g;c&&!f[--c];)f[c]=9;--f[c];f[g]+=10}f[g]-=h[g]}for(;0===f[--e];)f.pop();for(;0===f[0];)f.shift(),--k;f[0]||(a.s=1,f=[k=0]);a.c=f;a.e=k;return a};n.mod=function(a){var c=this,b=c.constructor,e=c.s,f=(a=new b(a)).s;if(!a.c[0])throw Error("Division by zero");c.s=a.s=1;var g=1===a.cmp(c);c.s=e;a.s=f;if(g)return new b(c);e=b.DP;f=b.RM;b.DP=b.RM=0;c=c.div(a);b.DP=e;b.RM=f;return this.minus(c.times(a))};n.plus=n.add=function(a){var c=this.constructor;var b=this.s,e=(a=new c(a)).s;if(b!==e)return a.s=-e,this.minus(a);e=this.e;var f=this.c,g=a.e,h=a.c;if(!f[0]||!h[0])return h[0]?a:new c(f[0]?this:0*b);f=f.slice();if(b=e-g){0<b?(g=e,c=h):(b=-b,c=f);for(c.reverse();b--;)c.push(0);c.reverse()}0>f.length-h.length&&(c=h,h=f,f=c);b=h.length;for(e=0;b;f[b]%=10)e=(f[--b]=f[b]+h[b]+e)/10|0;e&&(f.unshift(e),++g);for(b=f.length;0===f[--b];)f.pop();a.c=f;a.e=g;return a};n.pow=function(a){var c=this,b=new c.constructor(1),e=b,f=0>a;for(f&&(a=-a);;){a&1&&(e=e.times(c));a>>=1;if(!a)break;c=c.times(c)}return f?b.div(e):e};n.round=function(a,c){var b=this.constructor;if(void 0===a)a=0;else if(a!==~~a||0>a||1E6<a)throw Error("Invalid decimal places");return N(new b(this),a,void 0===c?b.RM:c)};n.sqrt=function(){var a=this.constructor;var c=this.s;var b=this.e,e=new a(.5);if(!this.c[0])return new a(this);if(0>c)throw Error("No square root");c=Math.sqrt(this.toString());0===c||c===1/0?(c=this.c.join(""),c.length+b&1||(c+="0"),c=new a(Math.sqrt(c).toString()),c.e=((b+1)/2|0)-(0>b||b&1)):c=new a(c.toString());b=c.e+(a.DP+=4);do{var f=c;c=e.times(f.plus(this.div(f)))}while(f.c.slice(0,b).join("")!==c.c.slice(0,b).join(""));return N(c,a.DP-=4,a.RM)};n.times=n.mul=function(a){var c=this.constructor;var b=this.c,e=(a=new c(a)).c,f=b.length,g=e.length,h=this.e,k=a.e;a.s=this.s===a.s?1:-1;if(!b[0]||!e[0])return new c(0*a.s);a.e=h+k;f<g&&(c=b,b=e,e=c,k=f,f=g,g=k);for(c=Array(k=f+g);k--;)c[k]=0;for(h=g;h--;){g=0;for(k=f+h;k>h;)g=c[k]+e[h]*b[k-h-1]+g,c[k--]=g%10,g=g/10|0;c[k]=(c[k]+g)%10}g?++a.e:c.shift();for(h=c.length;!c[--h];)c.pop();a.c=c;return a};n.toExponential=function(a){return J(this,1,a,a)};n.toFixed=function(a){return J(this,2,a,this.e+a)};n.toPrecision=function(a){return J(this,3,a,a-1)};n.toString=function(){return J(this)};n.valueOf=n.toJSON=function(){return J(this,4)};var p=aa();p["default"]=p.Big=p;B.Big=p;l.prototype={IP_V4:"IPv4",IP_V6:"IPv6",IP_V4_MAX_PREFIX_LENGTH:32,IP_V6_MAX_PREFIX_LENGTH:128,IP_V4_OCTETS:4,IP_V6_OCTETS:16,$in_addr:null,__construct:function(a){if(!Z(a,275))throw Error("Invalid IP address format: "+a);this.$in_addr=na(a)},toString:function(){return w(this.$in_addr)},parse:function(a){return 0===E(a,"0x")?(a=K(a,2),this.parseHex(a)):0===E(a,"0b")?(a=K(a,2),this.parseBin(a)):ea(a)?this.parseLong(a):new l(a)},parseBin:function(a){if(!Q(/^([0-1]{32}|[0-1]{128})$/,a))throw Error("Invalid binary IP address format: "+a);var c="";ka(la,fa(a,8)).forEach(function(a){c+=L("C*",a)});return new l(w(c))},parseHex:function(a){if(!Q(/^([0-9a-fA-F]{8}|[0-9a-fA-F]{32})$/,a))throw Error("Invalid hexadecimal IP address format: "+a);return new l(w(L("H*",a)))},parseLong:function(a,c){if(c===this.IP_V4){var b=a;b=isFinite(b)?[b>>>24,b>>>16&255,b>>>8&255,b&255].join("."):!1;b=new this(b)}else{var e=[];for(b=0;b<this.IP_V6_OCTETS;b++)e.push(p(a).mod(256)),a=p(a).div(256);e=V(e);e[0]="C*";b=new l(w(Y(L,e)))}return b},parseInAddr:function(a){return new l(w(a))},getVersion:function(){return Z(w(this.$in_addr),275,1048576)?this.IP_V4:Z(w(this.$in_addr),275,2097152)?this.IP_V6:!1},getMaxPrefixLength:function(){return this.getVersion()===this.IP_V4?this.IP_V4_MAX_PREFIX_LENGTH:this.IP_V6_MAX_PREFIX_LENGTH},getOctetsCount:function(){return this.getVersion()===this.IP_V4?this.IP_V4_OCTETS:this.IP_V6_OCTETS},getReversePointer:function(){if(this.getVersion()===this.IP_V4){var a=V(P(".",this.toString()));a=U(".",a)+".in-addr.arpa"}else a=M("H*hex",this.$in_addr),a=V(fa(a.hex)),a=U(".",a)+".ip6.arpa";return a},inAddr:function(){return this.$in_addr},toBin:function(){var a=[];M("C*",this.$in_addr).forEach(function(c){a.push(G(ma(c),8,"0",0))});return U(a)},toHex:function(){return W(this.$in_addr)},toLong:function(){var a=0;if(this.getVersion()===this.IP_V4)a=ca("%u",oa(w(this.$in_addr)));else{var c=this.IP_V6_OCTETS-1;var b=M("C*",this.$in_addr);b.forEach(function(b){var e=a;var g=c--;g=p(256).pow(g);b=p(b).times(g);a=O(e,b,1)})}return a},next:function(a){a=a||1;if(0>a)throw Error("Number must be greater than 0");var c,b,e=M("C*",this.$in_addr);for(c=0;c<a;c++)for(b=T(e);0<=b;--b)if(255>e[b]){e[b]++;break}else e[b]=0;e[0]="C*";return new l(w(Y(L,e)))},prev:function(a){a=a||1;if(0>a)throw Error("Number must be greater than 0");var c,b,e=M("C*",this.$in_addr);for(c=0;c<a;c++)for(b=T(e);0<=b;--b)if(0==e[b])e[b]=255;else{e[b]--;break}e[0]="C*";return new l(w(Y(L,e)))}};A.prototype={$ip:null,$netmask:null,$position:0,__construct:function(a,c){this.setIP(a);this.setNetmask(c)},toString:function(){return this.getCIDR()},parse:function(a){if(E(a,"/")){var c=P("/",a,2);a=c[0];c=c[1];a=l.prototype.parse(a);c=this.prefix2netmask(parseInt(c,10),a.getVersion())}else E(a," ")?(c=P(" ",a,2),a=c[0],c=c[1],a=l.prototype.parse(a),c=l.prototype.parse(c)):(a=l.prototype.parse(a),c=this.prefix2netmask(a.getMaxPrefixLength(),a.getVersion()));return new A(a,c)},prefix2netmask:function(a,c){a:{var b=[l.prototype.IP_V4,l.prototype.IP_V6];var e="";for(e in b)if(b.hasOwnProperty(e)&&b[e]==c){b=!0;break a}b=!1}if(!b)throw Error("Wrong IP version");b=c===l.prototype.IP_V4?l.prototype.IP_V4_MAX_PREFIX_LENGTH:l.prototype.IP_V6_MAX_PREFIX_LENGTH;if(!(ea(a)&&0<=a&&a<=b))throw Error("Invalid prefix length");b=G(G("",parseInt(a,10),"1"),b,"0");return l.prototype.parseBin(b)},netmask2prefix:function(a){a=a.toBin();var c="0";c=c?(c+"").replace(/([[\]().?/*{}+$^:])/g,"\\$1"):" \\s\u00a0";return((a+"").replace(new RegExp("["+c+"]+$","g"),"")+"").length},setIP:function(a){if(da(this.$netmask)&&this.$netmask.getVersion()!==a.getVersion())throw Error("IP version is not same as Netmask version");this.$ip=a},setNetmask:function(a){if(!Q(/^1*0*$/,a.toBin()))throw Error("Invalid Netmask address format");if(da(this.$ip)&&a.getVersion()!==this.$ip.getVersion())throw Error("Netmask version is not same as IP version");this.$netmask=a},setPrefixLength:function(a){this.setNetmask(this.prefix2netmask(parseInt(a,10),this.$ip.getVersion()))},getIP:function(){return this.$ip},getNetmask:function(){return this.$netmask},getNetwork:function(){var a=this.getIP().inAddr()+"",c=this.getNetmask().inAddr()+"",b,e=a.length,f=[];for(b=0;b<e;b++)f.push(G((a.charCodeAt(b)&c.charCodeAt(b)).toString(16),2,"0",0));return new l(w(X(f.join(""))))},getPrefixLength:function(){return this.netmask2prefix(this.getNetmask())},getCIDR:function(){return ca("%s/%s",this.getNetwork(),this.getPrefixLength())},getWildcard:function(){return new l(w(~this.getNetmask().inAddr()))},getBroadcast:function(){var a=this.getNetwork().inAddr()+"",c=this.getNetmask().inAddr()+"",b,e=a.length,f=[];for(b=0;b<e;b++)f.push(G((a.charCodeAt(b)|~c.charCodeAt(b)&255).toString(16),2,"0",0));return new l(w(X(f.join(""))))},getFirstIP:function(){return this.getNetwork()},getLastIP:function(){return this.getBroadcast()},getBlockSize:function(){var a=this.$ip.getMaxPrefixLength(),c=this.getPrefixLength();return this.$ip.getVersion()===l.prototype.IP_V6?(a=a-c+"",p("2").pow(a)):Math.pow(2,a-c)},getHosts:function(){var a=this.getNetwork(),c=this.getBroadcast();this.$ip.getVersion()===l.prototype.IP_V4&&2<this.getBlockSize()&&(a=l.prototype.parseBin(K(a.toBin(),0,a.getMaxPrefixLength()-1)+"1"),c=l.prototype.parseBin(K(c.toBin(),0,c.getMaxPrefixLength()-1)+"0"));return new x(a,c)},exclude:function(a){a=this.parse(a);if(0<v(a.getFirstIP().inAddr(),this.getLastIP().inAddr())||0>v(a.getLastIP().inAddr(),this.getFirstIP().inAddr()))throw Error("Exclude subnet not within target network");var c=[],b=this.getPrefixLength()+1;var e=H(!0,{},this);e.setPrefixLength(b);var f=H(!0,{},e);for(f.setIP(e.getLastIP().next());b<=a.getPrefixLength();){var g=new x(e.getFirstIP(),e.getLastIP());if(g.contains(a)){g=e;var h=f}else g=f,h=e;c.push(H(!0,{},h));if(++b>this.getNetwork().getMaxPrefixLength())break;g.setPrefixLength(b);h.setPrefixLength(b);h.setIP(g.getLastIP().next())}return A.prototype.sort(c)},moveTo:function(a){var c=this.$ip.getMaxPrefixLength();if(a<=this.getPrefixLength()||a>c)throw Error("Invalid prefix length");c=this.prefix2netmask(a,this.$ip.getVersion());var b=[];var e=H(!0,{},this);for(e.setPrefixLength(a);e.$ip.inAddr()<this.getLastIP().inAddr();)b.push(e),e=new A(e.getLastIP().next(),c);return b},sort:function(a){return a.sort(function(a,b){a=l.prototype.parse((a+"").split("/").shift()).toHex();b=l.prototype.parse((b+"").split("/").shift()).toHex();return v(a,b)})},current:function(){return this.getFirstIP().next(this.$position)},key:function(){return this.$position},next:function(){++this.$position},rewind:function(){this.$position=0},valid:function(){return 0>=v(this.getFirstIP().next(this.$position).inAddr(),this.getLastIP().inAddr())},count:function(){return parseInt(this.getBlockSize())}};x.prototype={$firstIP:null,$lastIP:null,$position:0,__construct:function(a,c){this.setFirstIP(a);this.setLastIP(c)},parse:function(a){if(E(a,"/")||E(a," ")){a=A.prototype.parse(a);var c=a.getFirstIP();a=a.getLastIP()}else E(a,"*")?(c=l.prototype.parse(a.replace("*","0")),a=l.prototype.parse(a.replace("*","255"))):E(a,"-")?(a=P("-",a,2),c=l.prototype.parse(a[0]),a=l.prototype.parse(a[1])):(c=l.prototype.parse(a),a=H(!0,{},c));return new x(c,a)},contains:function(a){if(a instanceof l)a=0<=v(a.inAddr(),this.$firstIP.inAddr())&&0>=v(a.inAddr(),this.$lastIP.inAddr());else if(a instanceof x||a instanceof A)a=0<=v(a.getFirstIP().inAddr(),this.$firstIP.inAddr())&&0>=v(a.getLastIP().inAddr(),this.$lastIP.inAddr());else throw Error("Invalid type");return a},setFirstIP:function(a){if(this.$lastIP&&0<v(a.inAddr(),this.$lastIP.inAddr()))throw Error("First IP is grater than second");this.$firstIP=a},setLastIP:function(a){if(this.$firstIP&&0>v(a.inAddr(),this.$firstIP.inAddr()))throw Error("Last IP is less than first");this.$lastIP=a},getFirstIP:function(){return this.$firstIP},getLastIP:function(){return this.$lastIP},getNetworks:function(){var a=this.getSpanNetwork(),c=[];if(a.getFirstIP().inAddr()===this.$firstIP.inAddr()&&a.getLastIP().inAddr()===this.$lastIP.inAddr())c.push(a);else{if(a.getFirstIP().inAddr()!==this.$firstIP.inAddr()){var b=a.exclude(this.$firstIP.prev());var e=this.$firstIP.inAddr();b.forEach(function(a){0<=v(a.getFirstIP().inAddr(),e)&&c.push(a)})}a.getLastIP().inAddr()!==this.$lastIP.inAddr()&&(c.length?(b=ja(c),b=b.exclude(this.$lastIP.next())):b=a.exclude(this.$lastIP.next()),e=this.$lastIP.inAddr(),b.forEach(function(a){a.getLastIP().inAddr()<=e&&c.push(a)}))}return A.prototype.sort(c)},getSpanNetwork:function(){var a=this.getFirstIP().inAddr()+"",c=this.getLastIP().inAddr()+"",b,e=a.length,f=[];for(b=0;b<e;b++)f.push(G((a.charCodeAt(b)^c.charCodeAt(b)).toString(16),2,"0",0));c=l.prototype.parseInAddr(X(f.join("")));a=(Q(/^(0*)/,c.toBin(),!0)[1]+"").length;c=l.prototype.parseBin(G(K(this.getFirstIP().toBin(),0,a),c.getMaxPrefixLength(),"0"));return new A(c,A.prototype.prefix2netmask(a,c.getVersion()))},sort:function(a){return a.sort(function(a,b){var c=v(a.getFirstIP().inAddr(),b.getFirstIP().inAddr());return c?c:v(a.getLastIP().inAddr(),b.getLastIP().inAddr())})},merge:function(a){a=x.prototype.sort(a);for(var c=0;c<a.length-1;)0<=v(a[c].getLastIP().next().inAddr(),a[c+1].getFirstIP().inAddr())?(a[c].setLastIP(a[c+1].getLastIP()),a.splice(c+1,1)):++c;return a},current:function(){return this.$firstIP.next(this.$position)},key:function(){return this.$position},next:function(){++this.$position},rewind:function(){this.$position=0},valid:function(){return 0>=v(W(this.$firstIP.next(this.$position).inAddr()),W(this.$lastIP.inAddr()))},count:function(){var a=this.$lastIP.toLong();var c=this.$firstIP.toLong();a=p(a).minus(c);return O(a,1)}};B.IP=l;B.Network=A;B.Range=x;var t={};"abcdefg".split("").map(function(a){t[a]=S.getElementById(a)});var pa=t.g?t.g.firstChild.cloneNode(!1):null;R(t.a,"click",function(a){a.value="";I()},t.c);R(t.b,"click",function(a){a.value="";I()},t.d);R(t.e,"click",function(a,c){var b=ha(a.value);console.log(b);if(b[0])try{var e,f=[];var g=0;for(e=b.length;g<e;++g)b[g]&&(b[g]=b[g].split("-").map(function(a){return a.trim()}),1===b[g].length&&b[g].push(b[g][0]),2===b[g].length&&(b[g][1]=b[g][1]||b[g][0],b[g][0]=b[g][0]||b[g][1],b[g][0]&&b[g][1]&&f.push(new x(new l(b[g][0]),new l(b[g][1])))));f=x.prototype.merge(f);var h=p(0);c.value="";g=0;for(e=f.length;g<e;++g)h=O(h,f[g].count(),1),f[g].getNetworks().forEach(function(a){c.value+=a+"\n"});I(h.gt(p(0))?h:null)}catch(k){I(k.message)}},t.c,t.d);R(t.f,"click",function(a,c){var b=ha(a.value);console.log(b);if(b[0])try{var e,f=[];var g=0;for(e=b.length;g<e;++g)b[g]&&f.push(x.prototype.parse(b[g]));f=x.prototype.merge(f);var h=p(0);c.value="";g=0;for(e=f.length;g<e;++g)h=O(h,f[g].count(),1),c.value+=f[g].getFirstIP()+" - "+f[g].getLastIP()+"\n";I(h.gt(p(0))?h:null)}catch(k){I(k.message)}},t.d,t.c);S.getElementById("c").focus()})(window,document);
|
admin/js/gmap.js
CHANGED
@@ -14,6 +14,9 @@ function gm_authFailure() {
|
|
14 |
(function ($) {
|
15 |
'use strict';
|
16 |
$(function ($) {
|
|
|
|
|
|
|
17 |
var e = "GmapRS",
|
18 |
d = "plugin_" + e,
|
19 |
b = {
|
14 |
(function ($) {
|
15 |
'use strict';
|
16 |
$(function ($) {
|
17 |
+
if ('undefined' === typeof google) {
|
18 |
+
return;
|
19 |
+
}
|
20 |
var e = "GmapRS",
|
21 |
d = "plugin_" + e,
|
22 |
b = {
|
admin/js/gmap.min.js
CHANGED
@@ -5,4 +5,4 @@
|
|
5 |
Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
6 |
This software is released under the MIT License.
|
7 |
*/
|
8 |
-
function gm_authFailure(){jQuery(window).trigger("ip-geo-block-gmap-error")}(function(f){f(function(
|
5 |
Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
6 |
This software is released under the MIT License.
|
7 |
*/
|
8 |
+
function gm_authFailure(){jQuery(window).trigger("ip-geo-block-gmap-error")}(function(f){f(function(e){if("undefined"!==typeof google){var f={zoom:2,latitude:0,longitude:0},d=google.maps,g=function(a){this.o=e.extend({},f);this.q=[]};g.prototype={init:function(a){e.extend(this.o,a);this.c=new d.LatLng(this.o.latitude,this.o.longitude);this.m=new d.Map(this.e.get(0),{zoom:this.o.zoom,center:this.c,mapTypeId:d.MapTypeId.ROADMAP})},destroy:function(){this.deleteMarkers();this.e.data("plugin_GmapRS",null)},setCenter:function(){if(2<=arguments.length){var a=new d.LatLng(this.o.latitude=arguments[0],this.o.longitude=arguments[1]);delete this.c;this.c=a}this.m.setCenter(this.c);return this.e},setZoom:function(a){this.m.setZoom(a||this.o.zoom);return this.e},showMarker:function(a,b){var c=this.q[a];c&&c.w&&(!1===b?c.w.close():c.w.open(this.m,c.m))},addMarker:function(a){var b=new d.LatLng(a.latitude||this.o.latitude,a.longitude||this.o.longitude);var c=new d.Marker({position:b,map:this.m,title:a.title||""});if(a.content){var e=new d.InfoWindow({content:a.content});d.event.addListener(c,"click",function(){e.open(c.getMap(),c)})}this.q.push({p:b,w:e,m:c});this.m.setCenter(b);this.m.setZoom(a.zoom);a.show&&this.showMarker(this.q.length-1);return this.e},deleteMarkers:function(){var a;for(a in this.q)if(this.q.hasOwnProperty(a)){var b=this.q[a];b.m.setMap(null)}this.q.length=0;return this.e}};e.fn.GmapRS=function(a){this.data("plugin_GmapRS")instanceof g||this.data("plugin_GmapRS",new g(this));var b=this.data("plugin_GmapRS");b.e=this;if("undefined"===typeof a||"object"===typeof a)"function"===typeof b.init&&b.init(a);else{if("string"===typeof a&&"function"===typeof b[a]){var c=Array.prototype.slice.call(arguments,1);return b[a].apply(b,c)}e.error("Method "+a+" does not exist.GmapRS")}}}})})(jQuery);
|
admin/js/whois.js
CHANGED
@@ -70,7 +70,7 @@
|
|
70 |
else if (value.name && value.value) {
|
71 |
/*if (value.link) {
|
72 |
var src = value.link.href.match(/\w+-grs/);
|
73 |
-
value.value = '<a href="' +
|
74 |
app.replace('%SRC%', src[0])
|
75 |
.replace('%KEY%', encodeURI(value['value']))
|
76 |
.replace('%TYPE%', value['referenced-type']) +
|
70 |
else if (value.name && value.value) {
|
71 |
/*if (value.link) {
|
72 |
var src = value.link.href.match(/\w+-grs/);
|
73 |
+
value.value = '<a href="' +
|
74 |
app.replace('%SRC%', src[0])
|
75 |
.replace('%KEY%', encodeURI(value['value']))
|
76 |
.replace('%TYPE%', value['referenced-type']) +
|
classes/class-ip-geo-block-actv.php
CHANGED
@@ -18,72 +18,71 @@ require_once IP_GEO_BLOCK_PATH . 'admin/includes/class-admin-rewrite.php';
|
|
18 |
|
19 |
class IP_Geo_Block_Activate {
|
20 |
|
21 |
-
//
|
22 |
-
private static function
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
IP_Geo_Block_Cron::start_update_db( $settings );
|
28 |
-
IP_Geo_Block_Cron::start_cache_gc( $settings );
|
29 |
-
|
30 |
-
// activate rewrite rules
|
31 |
-
IP_Geo_Block_Admin_Rewrite::activate_rewrite_all( $settings['rewrite'] );
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
36 |
}
|
37 |
|
38 |
-
//
|
39 |
public static function activate_blog() {
|
|
|
40 |
IP_Geo_Block_Logs::create_tables();
|
41 |
IP_Geo_Block_Logs::delete_cache_entry();
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
44 |
|
45 |
/**
|
46 |
* Register options into database table when the plugin is activated.
|
|
|
47 |
* @link https://wordpress.stackexchange.com/questions/181141/how-to-run-an-activation-function-when-plugin-is-network-activated-on-multisite
|
48 |
*/
|
49 |
public static function activate( $network_wide = FALSE ) {
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
self::activate_blog();
|
54 |
|
55 |
-
if ( $network_wide ) {
|
56 |
// Get option of main blog.
|
57 |
-
$
|
58 |
-
|
59 |
-
global $wpdb;
|
60 |
-
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs` ORDER BY `blog_id` ASC" );
|
61 |
|
62 |
-
|
63 |
-
|
|
|
64 |
|
65 |
-
|
66 |
-
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
$opt = IP_Geo_Block::get_option();
|
71 |
-
$option['api_key']['GoogleMap'] = $opt['api_key']['GoogleMap'];
|
72 |
|
73 |
-
|
74 |
-
|
|
|
|
|
|
|
|
|
75 |
|
76 |
-
|
77 |
self::activate_blog();
|
78 |
-
}
|
79 |
|
80 |
-
|
|
|
81 |
}
|
82 |
-
}
|
83 |
|
84 |
-
|
85 |
-
|
86 |
-
self::init_main_blog(); // should be called with high priority
|
87 |
}
|
88 |
|
89 |
/**
|
@@ -91,18 +90,31 @@ class IP_Geo_Block_Activate {
|
|
91 |
*
|
92 |
*/
|
93 |
public static function deactivate( $network_wide = FALSE ) {
|
94 |
-
|
95 |
-
|
96 |
-
IP_Geo_Block_Cron::stop_cache_gc();
|
97 |
|
98 |
-
|
99 |
-
|
100 |
|
101 |
-
|
102 |
-
|
|
|
103 |
|
104 |
-
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
}
|
107 |
|
108 |
}
|
18 |
|
19 |
class IP_Geo_Block_Activate {
|
20 |
|
21 |
+
// Activate and deactivate main blog
|
22 |
+
private static function activate_main_blog( $settings ) {
|
23 |
+
IP_Geo_Block_Cron::start_update_db( $settings );
|
24 |
+
IP_Geo_Block_Opts::setup_validation_timing( $settings );
|
25 |
+
IP_Geo_Block_Admin_Rewrite::activate_rewrite_all( $settings['rewrite'] );
|
26 |
+
}
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
+
private static function deactivate_main_blog() {
|
29 |
+
IP_Geo_Block_Cron::stop_update_db();
|
30 |
+
IP_Geo_Block_Opts::setup_validation_timing();
|
31 |
+
IP_Geo_Block_Admin_Rewrite::deactivate_rewrite_all();
|
32 |
}
|
33 |
|
34 |
+
// Activate and deactivate each blog
|
35 |
public static function activate_blog() {
|
36 |
+
IP_Geo_Block_Opts::upgrade();
|
37 |
IP_Geo_Block_Logs::create_tables();
|
38 |
IP_Geo_Block_Logs::delete_cache_entry();
|
39 |
+
IP_Geo_Block_Cron::start_cache_gc();
|
40 |
+
}
|
41 |
+
|
42 |
+
private static function deactivate_blog() {
|
43 |
+
IP_Geo_Block_Cron::stop_cache_gc();
|
44 |
+
IP_Geo_Block_Logs::delete_cache_entry();
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
* Register options into database table when the plugin is activated.
|
49 |
+
*
|
50 |
* @link https://wordpress.stackexchange.com/questions/181141/how-to-run-an-activation-function-when-plugin-is-network-activated-on-multisite
|
51 |
*/
|
52 |
public static function activate( $network_wide = FALSE ) {
|
53 |
+
if ( did_action( 'init' ) && current_user_can( 'manage_options' ) ) {
|
54 |
+
// Update main blog first.
|
55 |
+
self::activate_blog();
|
|
|
56 |
|
|
|
57 |
// Get option of main blog.
|
58 |
+
$settings = IP_Geo_Block::get_option();
|
|
|
|
|
|
|
59 |
|
60 |
+
if ( is_multisite() && $network_wide ) {
|
61 |
+
global $wpdb;
|
62 |
+
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs` ORDER BY `blog_id` ASC" );
|
63 |
|
64 |
+
// Skip the main blog.
|
65 |
+
array_shift( $blog_ids );
|
66 |
|
67 |
+
foreach ( $blog_ids as $id ) {
|
68 |
+
switch_to_blog( $id );
|
|
|
|
|
69 |
|
70 |
+
if ( $settings['network_wide'] ) {
|
71 |
+
// Copy settings of main site to individual site
|
72 |
+
$map = IP_Geo_Block::get_option();
|
73 |
+
$settings['api_key']['GoogleMap'] = $map['api_key']['GoogleMap'];
|
74 |
+
update_option( IP_Geo_Block::OPTION_NAME, $settings );
|
75 |
+
}
|
76 |
|
77 |
+
// Initialize inidivisual site
|
78 |
self::activate_blog();
|
|
|
79 |
|
80 |
+
restore_current_blog();
|
81 |
+
}
|
82 |
}
|
|
|
83 |
|
84 |
+
self::activate_main_blog( $settings );
|
85 |
+
}
|
|
|
86 |
}
|
87 |
|
88 |
/**
|
90 |
*
|
91 |
*/
|
92 |
public static function deactivate( $network_wide = FALSE ) {
|
93 |
+
add_action( 'shutdown', array( __CLASS__, 'deactivate_plugin' ) );
|
94 |
+
}
|
|
|
95 |
|
96 |
+
public static function deactivate_plugin() {
|
97 |
+
self::deactivate_blog();
|
98 |
|
99 |
+
if ( is_multisite() && is_main_site() ) {
|
100 |
+
global $wpdb;
|
101 |
+
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs` ORDER BY `blog_id` ASC" );
|
102 |
|
103 |
+
// Skip the main blog.
|
104 |
+
array_shift( $blog_ids );
|
105 |
+
|
106 |
+
foreach ( $blog_ids as $id ) {
|
107 |
+
switch_to_blog( $id );
|
108 |
+
|
109 |
+
// Skip when this plugin is still active
|
110 |
+
if ( ! is_plugin_active( IP_GEO_BLOCK_BASE ) )
|
111 |
+
self::deactivate_blog();
|
112 |
+
|
113 |
+
restore_current_blog();
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
self::deactivate_main_blog();
|
118 |
}
|
119 |
|
120 |
}
|
classes/class-ip-geo-block-apis.php
CHANGED
@@ -134,7 +134,7 @@ abstract class IP_Geo_Block_API {
|
|
134 |
$res = array();
|
135 |
foreach ( $template['transform'] as $key => $val ) {
|
136 |
if ( ! empty( $val ) && ! empty( $data[ $val ] ) )
|
137 |
-
$res[ $key ] = is_string( $data[ $val ] ) ?
|
138 |
esc_html( $data[ $val ] ) : $data[ $val ];
|
139 |
}
|
140 |
|
@@ -318,9 +318,9 @@ class IP_Geo_Block_API_Nekudo extends IP_Geo_Block_API {
|
|
318 |
* Class for Xhanch
|
319 |
*
|
320 |
* URL : http://xhanch.com/xhanch-api-ip-get-detail/
|
321 |
-
* Term of use :
|
322 |
* Licence fee : free (donationware)
|
323 |
-
* Rate limit :
|
324 |
* Sample URL : http://api.xhanch.com/ip-get-detail.php?ip=124.83.187.140
|
325 |
* Sample URL : http://api.xhanch.com/ip-get-detail.php?ip=124.83.187.140&m=json
|
326 |
* Input type : IP address (IPv4)
|
@@ -450,31 +450,45 @@ class IP_Geo_Block_API_IPInfoDB extends IP_Geo_Block_API {
|
|
450 |
* Output type : array
|
451 |
*/
|
452 |
class IP_Geo_Block_API_Cache extends IP_Geo_Block_API {
|
453 |
-
|
454 |
// memory cache
|
455 |
protected static $memcache = array();
|
456 |
|
457 |
public static function update_cache( $hook, $validate, $settings ) {
|
|
|
458 |
$cache = self::get_cache( $ip = $validate['ip'] );
|
459 |
|
460 |
if ( $cache ) {
|
461 |
$fail = $cache['fail'] + ( 'failed' === $validate['result'] ? 1 : 0 );
|
462 |
$call = $cache['call'] + ( 'failed' !== $validate['result'] ? 1 : 0 );
|
|
|
|
|
463 |
} else { // if new cache then reset these values
|
464 |
$fail = 0;
|
465 |
$call = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
466 |
}
|
467 |
|
468 |
// update elements
|
469 |
IP_Geo_Block_Logs::update_cache( $cache = array(
|
470 |
-
'time' => $
|
471 |
'ip' => $ip,
|
472 |
-
'asn' => $validate['asn' ], // @since 3.0.4
|
473 |
'hook' => $hook,
|
|
|
474 |
'code' => $validate['code'],
|
475 |
'auth' => $validate['auth'], // get_current_user_id() > 0
|
476 |
'fail' => $validate['auth'] ? 0 : $fail,
|
477 |
'call' => $settings['save_statistics'] ? $call : 0,
|
|
|
|
|
478 |
'host' => isset( $validate['host'] ) ? $validate['host'] : NULL,
|
479 |
) );
|
480 |
|
134 |
$res = array();
|
135 |
foreach ( $template['transform'] as $key => $val ) {
|
136 |
if ( ! empty( $val ) && ! empty( $data[ $val ] ) )
|
137 |
+
$res[ $key ] = is_string( $data[ $val ] ) ?
|
138 |
esc_html( $data[ $val ] ) : $data[ $val ];
|
139 |
}
|
140 |
|
318 |
* Class for Xhanch
|
319 |
*
|
320 |
* URL : http://xhanch.com/xhanch-api-ip-get-detail/
|
321 |
+
* Term of use :
|
322 |
* Licence fee : free (donationware)
|
323 |
+
* Rate limit :
|
324 |
* Sample URL : http://api.xhanch.com/ip-get-detail.php?ip=124.83.187.140
|
325 |
* Sample URL : http://api.xhanch.com/ip-get-detail.php?ip=124.83.187.140&m=json
|
326 |
* Input type : IP address (IPv4)
|
450 |
* Output type : array
|
451 |
*/
|
452 |
class IP_Geo_Block_API_Cache extends IP_Geo_Block_API {
|
|
|
453 |
// memory cache
|
454 |
protected static $memcache = array();
|
455 |
|
456 |
public static function update_cache( $hook, $validate, $settings ) {
|
457 |
+
$time = $_SERVER['REQUEST_TIME'];
|
458 |
$cache = self::get_cache( $ip = $validate['ip'] );
|
459 |
|
460 |
if ( $cache ) {
|
461 |
$fail = $cache['fail'] + ( 'failed' === $validate['result'] ? 1 : 0 );
|
462 |
$call = $cache['call'] + ( 'failed' !== $validate['result'] ? 1 : 0 );
|
463 |
+
$last = $cache['last'];
|
464 |
+
$view = $cache['view'];
|
465 |
} else { // if new cache then reset these values
|
466 |
$fail = 0;
|
467 |
$call = 1;
|
468 |
+
$last = $time;
|
469 |
+
$view = 1;
|
470 |
+
}
|
471 |
+
|
472 |
+
if ( $cache && 'public' === $hook ) {
|
473 |
+
if ( $time - $last > $settings['behavior']['time'] )
|
474 |
+
$view = 1;
|
475 |
+
else
|
476 |
+
++$view;
|
477 |
+
$last = $time;
|
478 |
}
|
479 |
|
480 |
// update elements
|
481 |
IP_Geo_Block_Logs::update_cache( $cache = array(
|
482 |
+
'time' => $time,
|
483 |
'ip' => $ip,
|
|
|
484 |
'hook' => $hook,
|
485 |
+
'asn' => $validate['asn' ], // @since 3.0.4
|
486 |
'code' => $validate['code'],
|
487 |
'auth' => $validate['auth'], // get_current_user_id() > 0
|
488 |
'fail' => $validate['auth'] ? 0 : $fail,
|
489 |
'call' => $settings['save_statistics'] ? $call : 0,
|
490 |
+
'last' => $last,
|
491 |
+
'view' => $view,
|
492 |
'host' => isset( $validate['host'] ) ? $validate['host'] : NULL,
|
493 |
) );
|
494 |
|
classes/class-ip-geo-block-cron.php
CHANGED
@@ -8,6 +8,7 @@
|
|
8 |
* @link http://www.ipgeoblock.com/
|
9 |
* @copyright 2013-2018 tokkonopapa
|
10 |
*/
|
|
|
11 |
|
12 |
class IP_Geo_Block_Cron {
|
13 |
|
@@ -18,7 +19,7 @@ class IP_Geo_Block_Cron {
|
|
18 |
private static function schedule_cron_job( &$update, $db, $immediate = FALSE ) {
|
19 |
wp_clear_scheduled_hook( IP_Geo_Block::CRON_NAME, array( $immediate ) );
|
20 |
|
21 |
-
if ( $update['auto'] ) {
|
22 |
$now = time();
|
23 |
$next = $now + ( $immediate ? 0 : DAY_IN_SECONDS );
|
24 |
|
@@ -59,12 +60,12 @@ class IP_Geo_Block_Cron {
|
|
59 |
* B. Multiple time for each blog when this plugin is individually activated
|
60 |
*/
|
61 |
public static function exec_update_db( $immediate = FALSE ) {
|
62 |
-
$settings = IP_Geo_Block::get_option();
|
63 |
-
$args = IP_Geo_Block::get_request_headers( $settings );
|
64 |
-
|
65 |
// extract ip address from transient API to confirm the request source
|
|
|
66 |
add_filter( IP_Geo_Block::PLUGIN_NAME . '-ip-addr', array( __CLASS__, 'extract_ip' ) );
|
67 |
|
|
|
|
|
68 |
// download database files (higher priority order)
|
69 |
foreach ( $providers = IP_Geo_Block_Provider::get_addons( $settings['providers'] ) as $provider ) {
|
70 |
if ( $geo = IP_Geo_Block_API::get_instance( $provider, $settings ) ) {
|
@@ -82,13 +83,13 @@ class IP_Geo_Block_Cron {
|
|
82 |
|
83 |
// update matching rule immediately
|
84 |
if ( $immediate && 'done' !== get_transient( IP_Geo_Block::CRON_NAME ) ) {
|
85 |
-
$validate = IP_Geo_Block::get_geolocation(
|
86 |
$validate = IP_Geo_Block::validate_country( 'cron', $validate, $settings );
|
87 |
|
88 |
if ( 'ZZ' === $validate['code'] )
|
89 |
continue;
|
90 |
|
91 |
-
// matching rule should be reset when blocking happens
|
92 |
if ( 'passed' !== $validate['result'] )
|
93 |
$settings['matching_rule'] = -1;
|
94 |
|
@@ -96,16 +97,16 @@ class IP_Geo_Block_Cron {
|
|
96 |
if ( -1 === (int)$settings['matching_rule'] ) {
|
97 |
$settings['matching_rule'] = 0; // white list
|
98 |
|
|
|
99 |
if ( FALSE === strpos( $settings['white_list'], $validate['code'] ) )
|
100 |
$settings['white_list'] .= ( $settings['white_list'] ? ',' : '' ) . $validate['code'];
|
101 |
-
|
102 |
-
// update option settings
|
103 |
-
self::update_settings( $settings, array( 'matching_rule', 'white_list' ) );
|
104 |
}
|
105 |
|
|
|
|
|
|
|
106 |
// finished to update matching rule
|
107 |
-
|
108 |
-
set_transient( IP_Geo_Block::CRON_NAME, 'done', 5 * MINUTE_IN_SECONDS );
|
109 |
}
|
110 |
}
|
111 |
}
|
@@ -118,9 +119,7 @@ class IP_Geo_Block_Cron {
|
|
118 |
*
|
119 |
*/
|
120 |
private static function update_settings( $src, $keys = array() ) {
|
121 |
-
|
122 |
-
|
123 |
-
// for multisite (@since 3.0.0 in wp-admin/includes/plugin.php)
|
124 |
if ( is_plugin_active_for_network( IP_GEO_BLOCK_BASE ) ) {
|
125 |
global $wpdb;
|
126 |
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
|
@@ -158,15 +157,15 @@ class IP_Geo_Block_Cron {
|
|
158 |
* Kick off a cron job to download database immediately in background on activation.
|
159 |
*
|
160 |
*/
|
161 |
-
public static function start_update_db( $settings, $
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
set_transient( IP_Geo_Block::CRON_NAME, IP_Geo_Block::get_ip_address(), MINUTE_IN_SECONDS );
|
168 |
-
|
169 |
-
|
170 |
}
|
171 |
|
172 |
public static function stop_update_db() {
|
@@ -178,29 +177,14 @@ class IP_Geo_Block_Cron {
|
|
178 |
*
|
179 |
*/
|
180 |
public static function exec_cache_gc( $settings ) {
|
181 |
-
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
182 |
-
|
183 |
-
if ( is_plugin_active_for_network( IP_GEO_BLOCK_BASE ) ) {
|
184 |
-
global $wpdb;
|
185 |
-
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
|
186 |
-
|
187 |
-
foreach ( $blog_ids as $id ) {
|
188 |
-
switch_to_blog( $id );
|
189 |
-
IP_Geo_Block_Logs::delete_cache_expired( $settings['cache_time'] );
|
190 |
-
restore_current_blog();
|
191 |
-
}
|
192 |
-
}
|
193 |
-
|
194 |
-
// for single site
|
195 |
-
else {
|
196 |
-
IP_Geo_Block_Logs::delete_cache_expired( $settings['cache_time'] );
|
197 |
-
}
|
198 |
-
|
199 |
self::stop_cache_gc();
|
|
|
200 |
self::start_cache_gc( $settings );
|
201 |
}
|
202 |
|
203 |
-
public static function start_cache_gc( $settings ) {
|
|
|
|
|
204 |
if ( ! wp_next_scheduled( IP_Geo_Block::CACHE_NAME ) )
|
205 |
wp_schedule_single_event( time() + $settings['cache_time_gc'], IP_Geo_Block::CACHE_NAME );
|
206 |
}
|
8 |
* @link http://www.ipgeoblock.com/
|
9 |
* @copyright 2013-2018 tokkonopapa
|
10 |
*/
|
11 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php'; // is_plugin_active_for_network() @since 3.0.0
|
12 |
|
13 |
class IP_Geo_Block_Cron {
|
14 |
|
19 |
private static function schedule_cron_job( &$update, $db, $immediate = FALSE ) {
|
20 |
wp_clear_scheduled_hook( IP_Geo_Block::CRON_NAME, array( $immediate ) );
|
21 |
|
22 |
+
if ( $update['auto'] || $immediate ) {
|
23 |
$now = time();
|
24 |
$next = $now + ( $immediate ? 0 : DAY_IN_SECONDS );
|
25 |
|
60 |
* B. Multiple time for each blog when this plugin is individually activated
|
61 |
*/
|
62 |
public static function exec_update_db( $immediate = FALSE ) {
|
|
|
|
|
|
|
63 |
// extract ip address from transient API to confirm the request source
|
64 |
+
$ip = IP_Geo_Block::get_ip_address( $settings = IP_Geo_Block::get_option() );
|
65 |
add_filter( IP_Geo_Block::PLUGIN_NAME . '-ip-addr', array( __CLASS__, 'extract_ip' ) );
|
66 |
|
67 |
+
$args = IP_Geo_Block::get_request_headers( $settings );
|
68 |
+
|
69 |
// download database files (higher priority order)
|
70 |
foreach ( $providers = IP_Geo_Block_Provider::get_addons( $settings['providers'] ) as $provider ) {
|
71 |
if ( $geo = IP_Geo_Block_API::get_instance( $provider, $settings ) ) {
|
83 |
|
84 |
// update matching rule immediately
|
85 |
if ( $immediate && 'done' !== get_transient( IP_Geo_Block::CRON_NAME ) ) {
|
86 |
+
$validate = IP_Geo_Block::get_geolocation( $ip, array( $provider ) );
|
87 |
$validate = IP_Geo_Block::validate_country( 'cron', $validate, $settings );
|
88 |
|
89 |
if ( 'ZZ' === $validate['code'] )
|
90 |
continue;
|
91 |
|
92 |
+
// matching rule should be reset when blocking happens
|
93 |
if ( 'passed' !== $validate['result'] )
|
94 |
$settings['matching_rule'] = -1;
|
95 |
|
97 |
if ( -1 === (int)$settings['matching_rule'] ) {
|
98 |
$settings['matching_rule'] = 0; // white list
|
99 |
|
100 |
+
// when the country code doesn't exist in whitelist, then add it
|
101 |
if ( FALSE === strpos( $settings['white_list'], $validate['code'] ) )
|
102 |
$settings['white_list'] .= ( $settings['white_list'] ? ',' : '' ) . $validate['code'];
|
|
|
|
|
|
|
103 |
}
|
104 |
|
105 |
+
// update option settings
|
106 |
+
self::update_settings( $settings, array( 'matching_rule', 'white_list' ) );
|
107 |
+
|
108 |
// finished to update matching rule
|
109 |
+
set_transient( IP_Geo_Block::CRON_NAME, 'done', 5 * MINUTE_IN_SECONDS );
|
|
|
110 |
}
|
111 |
}
|
112 |
}
|
119 |
*
|
120 |
*/
|
121 |
private static function update_settings( $src, $keys = array() ) {
|
122 |
+
// for multisite
|
|
|
|
|
123 |
if ( is_plugin_active_for_network( IP_GEO_BLOCK_BASE ) ) {
|
124 |
global $wpdb;
|
125 |
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
|
157 |
* Kick off a cron job to download database immediately in background on activation.
|
158 |
*
|
159 |
*/
|
160 |
+
public static function start_update_db( $settings, $immediate = TRUE ) {
|
161 |
+
// updating should be done by main site when this plugin is activated for network
|
162 |
+
if ( is_plugin_active_for_network( IP_GEO_BLOCK_BASE ) && ! is_main_site() )
|
163 |
+
return;
|
164 |
+
|
165 |
+
if ( $immediate ) // update matching rule immediately in exec_update_db() / extract_ip()
|
166 |
+
set_transient( IP_Geo_Block::CRON_NAME, IP_Geo_Block::get_ip_address( $settings ), MINUTE_IN_SECONDS );
|
167 |
+
|
168 |
+
self::schedule_cron_job( $settings['update'], NULL, $immediate );
|
169 |
}
|
170 |
|
171 |
public static function stop_update_db() {
|
177 |
*
|
178 |
*/
|
179 |
public static function exec_cache_gc( $settings ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
self::stop_cache_gc();
|
181 |
+
IP_Geo_Block_Logs::delete_cache_expired( $settings['cache_time'] );
|
182 |
self::start_cache_gc( $settings );
|
183 |
}
|
184 |
|
185 |
+
public static function start_cache_gc( $settings = FALSE ) {
|
186 |
+
$settings or $settings = IP_Geo_Block::get_option();
|
187 |
+
|
188 |
if ( ! wp_next_scheduled( IP_Geo_Block::CACHE_NAME ) )
|
189 |
wp_schedule_single_event( time() + $settings['cache_time_gc'], IP_Geo_Block::CACHE_NAME );
|
190 |
}
|
classes/class-ip-geo-block-lkup.php
CHANGED
@@ -25,7 +25,8 @@ class IP_Geo_Block_Lkup {
|
|
25 |
elseif ( FALSE !== filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
|
26 |
if ( FALSE === strpos( $ip, ':' ) ) {
|
27 |
$ip = pack( 'N', ip2long( $ip ) );
|
28 |
-
}
|
|
|
29 |
$ip = explode( ':', $ip );
|
30 |
$ip = pack( 'N', ip2long( $ip[ count( $ip ) - 1 ] ) );
|
31 |
}
|
@@ -40,12 +41,14 @@ class IP_Geo_Block_Lkup {
|
|
40 |
foreach ( $ip as $seg ) {
|
41 |
if ( $seg != '' ) {
|
42 |
$res .= str_pad( $seg, 4, '0', STR_PAD_LEFT );
|
43 |
-
}
|
|
|
44 |
for ( $i = 0; $i <= $parts; ++$i ) {
|
45 |
$res .= '0000';
|
46 |
}
|
47 |
$replaced = 1;
|
48 |
-
}
|
|
|
49 |
$res .= '0000';
|
50 |
}
|
51 |
}
|
@@ -114,14 +117,4 @@ class IP_Geo_Block_Lkup {
|
|
114 |
return isset( $host ) ? $host : $ip;
|
115 |
}
|
116 |
|
117 |
-
/**
|
118 |
-
* https://codex.wordpress.org/WordPress_Feeds
|
119 |
-
*
|
120 |
-
*/
|
121 |
-
public static function is_feed( $request_uri ) {
|
122 |
-
return isset( $_GET['feed'] ) ?
|
123 |
-
( preg_match( '!(?:comments-)?(?:feed|rss|rss2|rdf|atom)$!', $_GET['feed'] ) ? TRUE : FALSE ) :
|
124 |
-
( preg_match( '!(?:comments/)?(?:feed|rss|rss2|rdf|atom)/?$!', $request_uri ) ? TRUE : FALSE );
|
125 |
-
}
|
126 |
-
|
127 |
}
|
25 |
elseif ( FALSE !== filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
|
26 |
if ( FALSE === strpos( $ip, ':' ) ) {
|
27 |
$ip = pack( 'N', ip2long( $ip ) );
|
28 |
+
}
|
29 |
+
else {
|
30 |
$ip = explode( ':', $ip );
|
31 |
$ip = pack( 'N', ip2long( $ip[ count( $ip ) - 1 ] ) );
|
32 |
}
|
41 |
foreach ( $ip as $seg ) {
|
42 |
if ( $seg != '' ) {
|
43 |
$res .= str_pad( $seg, 4, '0', STR_PAD_LEFT );
|
44 |
+
}
|
45 |
+
elseif ( $replaced == 0 ) {
|
46 |
for ( $i = 0; $i <= $parts; ++$i ) {
|
47 |
$res .= '0000';
|
48 |
}
|
49 |
$replaced = 1;
|
50 |
+
}
|
51 |
+
elseif ( $replaced == 1 ) {
|
52 |
$res .= '0000';
|
53 |
}
|
54 |
}
|
117 |
return isset( $host ) ? $host : $ip;
|
118 |
}
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
classes/class-ip-geo-block-logs.php
CHANGED
@@ -39,52 +39,40 @@ class IP_Geo_Block_Logs {
|
|
39 |
* @internal creating mixed storage engine may cause troubles with some plugins.
|
40 |
*/
|
41 |
public static function create_tables() {
|
42 |
-
|
43 |
-
$result = TRUE;
|
44 |
|
45 |
-
|
46 |
-
$
|
47 |
-
if ( preg_match( '/CHARACTER SET (\w+)/i', $wpdb->get_charset_collate(), $table ) &&
|
48 |
-
FALSE !== strpos( $table[1], 'utf8' ) ) {
|
49 |
-
$charset = $table[1]; // ex) utf8mb4 MySQL 5.5+
|
50 |
-
}
|
51 |
|
52 |
// for logs
|
53 |
$table = $wpdb->prefix . self::TABLE_LOGS;
|
54 |
-
$
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
PRIMARY KEY (
|
68 |
-
KEY
|
69 |
-
KEY
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
// Add column for AS Number @since 3.0.4
|
74 |
-
if ( ! $wpdb->query( "DESCRIBE `$table` `asn`" ) ) {
|
75 |
-
$wpdb->query(
|
76 |
-
"ALTER TABLE `$table` ADD `asn` varchar(8) AFTER `ip`"
|
77 |
-
) or self::error( __LINE__ );
|
78 |
-
}
|
79 |
|
80 |
// for statistics
|
81 |
$table = $wpdb->prefix . self::TABLE_STAT;
|
82 |
-
$
|
83 |
-
|
84 |
-
|
85 |
-
PRIMARY KEY (
|
86 |
-
|
87 |
-
|
88 |
|
89 |
// Create 1 record if not exists
|
90 |
$sql = $wpdb->prepare(
|
@@ -94,30 +82,30 @@ class IP_Geo_Block_Logs {
|
|
94 |
|
95 |
// for IP address cache
|
96 |
$table = $wpdb->prefix . IP_Geo_Block::CACHE_NAME;
|
97 |
-
$
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
//
|
114 |
-
if ( ! $wpdb->query( "DESCRIBE `$table` `
|
115 |
$wpdb->query(
|
116 |
-
"ALTER TABLE `$table` ADD `
|
117 |
) or self::error( __LINE__ );
|
118 |
}
|
119 |
|
120 |
-
return
|
121 |
}
|
122 |
|
123 |
/**
|
@@ -371,7 +359,7 @@ class IP_Geo_Block_Logs {
|
|
371 |
|
372 |
private static function get_post_data( $hook, $validate, $settings ) {
|
373 |
// condition of masking password
|
374 |
-
$mask_pwd = (
|
375 |
|
376 |
// XML-RPC
|
377 |
if ( 'xmlrpc' === $hook ) {
|
@@ -521,7 +509,15 @@ class IP_Geo_Block_Logs {
|
|
521 |
* @param array $settings option settings
|
522 |
* @param boolean $record record logs (TRUE) or not
|
523 |
*/
|
524 |
-
public static function record_logs( $hook, $validate, $settings, $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
525 |
// get data
|
526 |
$agent = self::get_user_agent();
|
527 |
$heads = self::get_http_headers();
|
@@ -739,7 +735,7 @@ class IP_Geo_Block_Logs {
|
|
739 |
$stat['providers'][ $provider ]['count']++; // undefined in auth_fail()
|
740 |
$stat['providers'][ $provider ]['time' ] += (float)( isset( $validate['time'] ) ? $validate['time'] : 0 );
|
741 |
|
742 |
-
if (
|
743 |
// Blocked by type of IP address
|
744 |
if ( filter_var( $validate['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) )
|
745 |
++$stat['IPv4'];
|
@@ -816,23 +812,27 @@ class IP_Geo_Block_Logs {
|
|
816 |
|
817 |
$sql = $wpdb->prepare(
|
818 |
"INSERT INTO `$table`
|
819 |
-
(`time`, `ip`, `
|
820 |
-
VALUES (%d, %s, %s, %s, %d, %
|
821 |
-
ON DUPLICATE KEY UPDATE
|
822 |
`time` = VALUES(`time`),
|
823 |
`hook` = VALUES(`hook`),
|
824 |
`auth` = VALUES(`auth`),
|
825 |
`code` = VALUES(`code`),
|
826 |
`fail` = VALUES(`fail`),
|
827 |
-
`call` = VALUES(`call`)
|
|
|
|
|
828 |
$cache['time'],
|
829 |
$cache['ip' ],
|
830 |
-
$cache['asn' ],
|
831 |
$cache['hook'],
|
832 |
-
$cache['
|
833 |
$cache['code'],
|
|
|
834 |
$cache['fail'],
|
835 |
$cache['call'],
|
|
|
|
|
836 |
$cache['host']
|
837 |
) and $wpdb->query( $sql ) or self::error( __LINE__ );
|
838 |
}
|
@@ -883,7 +883,7 @@ class IP_Geo_Block_Logs {
|
|
883 |
$result = array();
|
884 |
|
885 |
$sql = $wpdb->prepare(
|
886 |
-
"SELECT * FROM `$table` WHERE `result`
|
887 |
) and $result = $wpdb->get_results( $sql, ARRAY_A ) or self::error( __LINE__ );
|
888 |
|
889 |
return $result;
|
39 |
* @internal creating mixed storage engine may cause troubles with some plugins.
|
40 |
*/
|
41 |
public static function create_tables() {
|
42 |
+
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
|
|
43 |
|
44 |
+
global $wpdb;
|
45 |
+
$charset_collate = $wpdb->get_charset_collate(); // @since 3.5.0
|
|
|
|
|
|
|
|
|
46 |
|
47 |
// for logs
|
48 |
$table = $wpdb->prefix . self::TABLE_LOGS;
|
49 |
+
$sql = "CREATE TABLE $table (
|
50 |
+
No bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
51 |
+
time int(10) unsigned NOT NULL DEFAULT 0,
|
52 |
+
ip varchar(40) NOT NULL,
|
53 |
+
asn varchar(8) NULL,
|
54 |
+
hook varchar(8) NOT NULL,
|
55 |
+
auth int(10) unsigned NOT NULL DEFAULT 0,
|
56 |
+
code varchar(2) NOT NULL DEFAULT 'ZZ',
|
57 |
+
result varchar(8) NULL,
|
58 |
+
method varchar(" . IP_GEO_BLOCK_MAX_STR_LEN . ") NOT NULL,
|
59 |
+
user_agent varchar(" . IP_GEO_BLOCK_MAX_STR_LEN . ") NULL,
|
60 |
+
headers varchar(" . IP_GEO_BLOCK_MAX_TXT_LEN . ") NULL,
|
61 |
+
data text DEFAULT NULL,
|
62 |
+
PRIMARY KEY (No),
|
63 |
+
KEY time (time),
|
64 |
+
KEY hook (hook)
|
65 |
+
) $charset_collate";
|
66 |
+
$result = dbDelta( $sql );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
// for statistics
|
69 |
$table = $wpdb->prefix . self::TABLE_STAT;
|
70 |
+
$sql = "CREATE TABLE $table (
|
71 |
+
No tinyint(4) unsigned NOT NULL AUTO_INCREMENT,
|
72 |
+
data longtext DEFAULT NULL,
|
73 |
+
PRIMARY KEY (No)
|
74 |
+
) $charset_collate";
|
75 |
+
$result = dbDelta( $sql );
|
76 |
|
77 |
// Create 1 record if not exists
|
78 |
$sql = $wpdb->prepare(
|
82 |
|
83 |
// for IP address cache
|
84 |
$table = $wpdb->prefix . IP_Geo_Block::CACHE_NAME;
|
85 |
+
$sql = "CREATE TABLE $table (
|
86 |
+
No bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
87 |
+
time int(10) unsigned NOT NULL DEFAULT 0,
|
88 |
+
ip varchar(40) UNIQUE NOT NULL,
|
89 |
+
hook varchar(8) NOT NULL,
|
90 |
+
asn varchar(8) NULL,
|
91 |
+
code varchar(2) NOT NULL DEFAULT 'ZZ',
|
92 |
+
auth int(10) unsigned NOT NULL DEFAULT 0,
|
93 |
+
fail int(10) unsigned NOT NULL DEFAULT 0,
|
94 |
+
last int(10) unsigned NOT NULL DEFAULT 0,
|
95 |
+
view int(10) unsigned NOT NULL DEFAULT 0,
|
96 |
+
host tinytext NOT NULL,
|
97 |
+
PRIMARY KEY (No)
|
98 |
+
) $charset_collate";
|
99 |
+
$result = dbDelta( $sql );
|
100 |
+
|
101 |
+
// dbDelta() parses `call` field as `CALL` statement. So alter it after init @since 3.0.10
|
102 |
+
if ( ! $wpdb->query( "DESCRIBE `$table` `call`" ) ) {
|
103 |
$wpdb->query(
|
104 |
+
"ALTER TABLE `$table` ADD `call` int(10) unsigned AFTER `fail`"
|
105 |
) or self::error( __LINE__ );
|
106 |
}
|
107 |
|
108 |
+
return TRUE;
|
109 |
}
|
110 |
|
111 |
/**
|
359 |
|
360 |
private static function get_post_data( $hook, $validate, $settings ) {
|
361 |
// condition of masking password
|
362 |
+
$mask_pwd = IP_Geo_Block::is_passed( $validate['result'] );
|
363 |
|
364 |
// XML-RPC
|
365 |
if ( 'xmlrpc' === $hook ) {
|
509 |
* @param array $settings option settings
|
510 |
* @param boolean $record record logs (TRUE) or not
|
511 |
*/
|
512 |
+
public static function record_logs( $hook, $validate, $settings, $block = TRUE ) {
|
513 |
+
$record = $settings['validation'][ $hook ] ? apply_filters( IP_Geo_Block::PLUGIN_NAME . '-record-logs', (int)$settings['validation']['reclogs'], $hook, $validate ) : FALSE;
|
514 |
+
$record = ( 1 === $record && $block ) || // blocked
|
515 |
+
( 6 === $record && ( $block || IP_Geo_Block::is_blocked( IP_Geo_Block::validate_country( NULL, $validate, $settings ) ) ) ) || // blocked or qualified
|
516 |
+
( 2 === $record && ! $block ) || // passed
|
517 |
+
( 3 === $record && ! $validate['auth'] ) || // unauthenticated
|
518 |
+
( 4 === $record && $validate['auth'] ) || // authenticated
|
519 |
+
( 5 === $record ); // all
|
520 |
+
|
521 |
// get data
|
522 |
$agent = self::get_user_agent();
|
523 |
$heads = self::get_http_headers();
|
735 |
$stat['providers'][ $provider ]['count']++; // undefined in auth_fail()
|
736 |
$stat['providers'][ $provider ]['time' ] += (float)( isset( $validate['time'] ) ? $validate['time'] : 0 );
|
737 |
|
738 |
+
if ( IP_Geo_Block::is_blocked( $validate['result'] ) ) {
|
739 |
// Blocked by type of IP address
|
740 |
if ( filter_var( $validate['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) )
|
741 |
++$stat['IPv4'];
|
812 |
|
813 |
$sql = $wpdb->prepare(
|
814 |
"INSERT INTO `$table`
|
815 |
+
(`time`, `ip`, `hook`, `asn`, `code`, `auth`, `fail`, `call`, `last`, `view`, `host`)
|
816 |
+
VALUES (%d, %s, %s, %s, %s, %d, %d, %d, %d, %d, %s)
|
817 |
+
ON DUPLICATE KEY UPDATE
|
818 |
`time` = VALUES(`time`),
|
819 |
`hook` = VALUES(`hook`),
|
820 |
`auth` = VALUES(`auth`),
|
821 |
`code` = VALUES(`code`),
|
822 |
`fail` = VALUES(`fail`),
|
823 |
+
`call` = VALUES(`call`),
|
824 |
+
`last` = VALUES(`last`),
|
825 |
+
`view` = VALUES(`view`)",
|
826 |
$cache['time'],
|
827 |
$cache['ip' ],
|
|
|
828 |
$cache['hook'],
|
829 |
+
$cache['asn' ],
|
830 |
$cache['code'],
|
831 |
+
$cache['auth'],
|
832 |
$cache['fail'],
|
833 |
$cache['call'],
|
834 |
+
$cache['last'],
|
835 |
+
$cache['view'],
|
836 |
$cache['host']
|
837 |
) and $wpdb->query( $sql ) or self::error( __LINE__ );
|
838 |
}
|
883 |
$result = array();
|
884 |
|
885 |
$sql = $wpdb->prepare(
|
886 |
+
"SELECT * FROM `$table` WHERE `result` NOT LIKE '%%pass%%' AND `" . $key . "` LIKE '%%%s%%'", $search
|
887 |
) and $result = $wpdb->get_results( $sql, ARRAY_A ) or self::error( __LINE__ );
|
888 |
|
889 |
return $result;
|
classes/class-ip-geo-block-opts.php
CHANGED
@@ -16,7 +16,7 @@ class IP_Geo_Block_Opts {
|
|
16 |
*
|
17 |
*/
|
18 |
private static $option_table = array(
|
19 |
-
'version' => '3.0.
|
20 |
// since version 1.0
|
21 |
'providers' => array(), // List of providers and API keys
|
22 |
'comment' => array( // Message on the comment form
|
@@ -167,6 +167,8 @@ class IP_Geo_Block_Opts {
|
|
167 |
'response_code' => 307, // better for AdSense
|
168 |
'redirect_uri' => NULL, // home
|
169 |
'response_msg' => 'Sorry, your request cannot be accepted.', // message on blocking
|
|
|
|
|
170 |
),
|
171 |
// since version 3.0.3
|
172 |
'mimetype' => array(
|
@@ -179,6 +181,11 @@ class IP_Geo_Block_Opts {
|
|
179 |
'live_update' => array(
|
180 |
'in_memory' => 0, // -1:unavailable, 0:file, 1:memory
|
181 |
),
|
|
|
|
|
|
|
|
|
|
|
182 |
);
|
183 |
|
184 |
/**
|
@@ -240,8 +247,7 @@ class IP_Geo_Block_Opts {
|
|
240 |
$version = $default['version'] = IP_Geo_Block::VERSION;
|
241 |
|
242 |
// create new option table
|
243 |
-
$settings = $default;
|
244 |
-
add_option( IP_Geo_Block::OPTION_NAME, $default );
|
245 |
}
|
246 |
|
247 |
else {
|
@@ -392,6 +398,11 @@ class IP_Geo_Block_Opts {
|
|
392 |
if ( version_compare( $version, '3.0.9' ) < 0 )
|
393 |
$settings['priority'] = $default['priority'];
|
394 |
|
|
|
|
|
|
|
|
|
|
|
395 |
// save package version number
|
396 |
$settings['version'] = IP_Geo_Block::VERSION;
|
397 |
}
|
@@ -401,8 +412,9 @@ class IP_Geo_Block_Opts {
|
|
401 |
if ( empty( $providers ) || ! $settings['api_dir'] || version_compare( $version, '3.0.9' ) < 0 )
|
402 |
$settings['api_dir'] = self::install_api( $settings );
|
403 |
|
404 |
-
// update option table
|
405 |
$settings['request_ua'] = trim( str_replace( array( 'InfiniteWP' ), '', @$_SERVER['HTTP_USER_AGENT'] ) );
|
|
|
|
|
406 |
update_option( IP_Geo_Block::OPTION_NAME, $settings );
|
407 |
|
408 |
// return upgraded settings
|
@@ -449,8 +461,7 @@ class IP_Geo_Block_Opts {
|
|
449 |
|
450 |
if ( ! @is_writable( $dir ) ) {
|
451 |
// wp-content/plugins/ip-geo-block
|
452 |
-
|
453 |
-
$dir = NULL;
|
454 |
}
|
455 |
}
|
456 |
|
16 |
*
|
17 |
*/
|
18 |
private static $option_table = array(
|
19 |
+
'version' => '3.0.10',// Version of this table (not package)
|
20 |
// since version 1.0
|
21 |
'providers' => array(), // List of providers and API keys
|
22 |
'comment' => array( // Message on the comment form
|
167 |
'response_code' => 307, // better for AdSense
|
168 |
'redirect_uri' => NULL, // home
|
169 |
'response_msg' => 'Sorry, your request cannot be accepted.', // message on blocking
|
170 |
+
// since version 3.0.10
|
171 |
+
'behavior' => FALSE // Bad behavior
|
172 |
),
|
173 |
// since version 3.0.3
|
174 |
'mimetype' => array(
|
181 |
'live_update' => array(
|
182 |
'in_memory' => 0, // -1:unavailable, 0:file, 1:memory
|
183 |
),
|
184 |
+
// since version 3.0.10
|
185 |
+
'behavior' => array(
|
186 |
+
'time' => 12, // More than 10 page view in 12 seconds
|
187 |
+
'view' => 10, // More than 10 page view in 12 seconds
|
188 |
+
),
|
189 |
);
|
190 |
|
191 |
/**
|
247 |
$version = $default['version'] = IP_Geo_Block::VERSION;
|
248 |
|
249 |
// create new option table
|
250 |
+
add_option( IP_Geo_Block::OPTION_NAME, $settings = $default );
|
|
|
251 |
}
|
252 |
|
253 |
else {
|
398 |
if ( version_compare( $version, '3.0.9' ) < 0 )
|
399 |
$settings['priority'] = $default['priority'];
|
400 |
|
401 |
+
if ( version_compare( $version, '3.0.10' ) < 0 ) {
|
402 |
+
$settings['behavior'] = $default['behavior'];
|
403 |
+
$settings['public' ]['behavior'] = $default['public']['behavior'];
|
404 |
+
}
|
405 |
+
|
406 |
// save package version number
|
407 |
$settings['version'] = IP_Geo_Block::VERSION;
|
408 |
}
|
412 |
if ( empty( $providers ) || ! $settings['api_dir'] || version_compare( $version, '3.0.9' ) < 0 )
|
413 |
$settings['api_dir'] = self::install_api( $settings );
|
414 |
|
|
|
415 |
$settings['request_ua'] = trim( str_replace( array( 'InfiniteWP' ), '', @$_SERVER['HTTP_USER_AGENT'] ) );
|
416 |
+
|
417 |
+
// update option table
|
418 |
update_option( IP_Geo_Block::OPTION_NAME, $settings );
|
419 |
|
420 |
// return upgraded settings
|
461 |
|
462 |
if ( ! @is_writable( $dir ) ) {
|
463 |
// wp-content/plugins/ip-geo-block
|
464 |
+
$dir = @is_writable( IP_GEO_BLOCK_PATH ) ? IP_GEO_BLOCK_PATH : NULL;
|
|
|
465 |
}
|
466 |
}
|
467 |
|
classes/class-ip-geo-block-util.php
CHANGED
@@ -75,7 +75,7 @@ class IP_Geo_Block_Util {
|
|
75 |
* @see wp-includes/kses.php
|
76 |
*/
|
77 |
public static function kses( $str, $allow_tags = TRUE ) {
|
78 |
-
// wp_kses() is unavailable on advanced-cache.php
|
79 |
return wp_kses( $str, $allow_tags ? $GLOBALS['allowedtags'] : array() );
|
80 |
}
|
81 |
|
@@ -103,28 +103,66 @@ class IP_Geo_Block_Util {
|
|
103 |
}
|
104 |
|
105 |
/**
|
106 |
-
* Retrieve nonce and rebuild query strings.
|
107 |
*
|
108 |
*/
|
109 |
-
public static function rebuild_nonce( $location, $
|
110 |
// check if the location is internal
|
111 |
-
$
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
}
|
123 |
}
|
124 |
|
125 |
return $location;
|
126 |
}
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
/**
|
129 |
* WP alternative function of wp_create_nonce() for mu-plugins
|
130 |
*
|
@@ -179,6 +217,7 @@ class IP_Geo_Block_Util {
|
|
179 |
'logged_in' => LOGGED_IN_KEY . LOGGED_IN_SALT,
|
180 |
'nonce' => NONCE_KEY . NONCE_SALT,
|
181 |
);
|
|
|
182 |
return self::hash_hmac( 'md5', $data, apply_filters( 'salt', $salt[ $scheme ], $scheme ) );
|
183 |
}
|
184 |
|
@@ -255,6 +294,9 @@ class IP_Geo_Block_Util {
|
|
255 |
* @source wp-includes/pluggable.php @since 2.8.0
|
256 |
*/
|
257 |
private static function get_user_by( $field, $value ) {
|
|
|
|
|
|
|
258 |
$userdata = WP_User::get_data_by( $field, $value ); // wp-includes/class-wp-user.php @since 2.0.0
|
259 |
|
260 |
if ( ! $userdata )
|
@@ -435,7 +477,7 @@ class IP_Geo_Block_Util {
|
|
435 |
*/
|
436 |
public static function redirect( $location, $status = 302 ) {
|
437 |
// retrieve nonce from referer and add it to the location
|
438 |
-
$location = self::rebuild_nonce( $location,
|
439 |
$location = self::sanitize_redirect( $location );
|
440 |
|
441 |
if ( $location ) {
|
@@ -724,6 +766,16 @@ class IP_Geo_Block_Util {
|
|
724 |
return preg_replace( array( '/HOST[^,]*?/', '/\*[:#]!?\*,?/' ), array( '*', '' ), $ua_list );
|
725 |
}
|
726 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
727 |
/**
|
728 |
* Whether the server software is IIS or something else
|
729 |
*
|
@@ -733,10 +785,7 @@ class IP_Geo_Block_Util {
|
|
733 |
$_is_apache = ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Apache' ) !== FALSE || strpos( $_SERVER['SERVER_SOFTWARE'], 'LiteSpeed' ) !== FALSE );
|
734 |
$_is_IIS = ! $_is_apache && ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS' ) !== FALSE || strpos( $_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer' ) !== FALSE );
|
735 |
|
736 |
-
|
737 |
-
$_is_IIS = substr( $_SERVER['SERVER_SOFTWARE'], strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/' ) + 14 );
|
738 |
-
|
739 |
-
return $_is_IIS;
|
740 |
}
|
741 |
|
742 |
/**
|
@@ -881,21 +930,13 @@ class IP_Geo_Block_Util {
|
|
881 |
/**
|
882 |
* Get the list of multisite
|
883 |
*
|
|
|
884 |
*/
|
885 |
-
public static function
|
886 |
$sites = array();
|
887 |
|
888 |
-
|
889 |
-
|
890 |
-
foreach ( $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" ) as $id ) {
|
891 |
-
switch_to_blog( $id );
|
892 |
-
$sites[] = admin_url();
|
893 |
-
restore_current_blog();
|
894 |
-
}
|
895 |
-
|
896 |
-
if ( empty( $sites[ $url = network_admin_url() ] ) ) {
|
897 |
-
$sites[] = $url;
|
898 |
-
}
|
899 |
}
|
900 |
|
901 |
return $sites;
|
75 |
* @see wp-includes/kses.php
|
76 |
*/
|
77 |
public static function kses( $str, $allow_tags = TRUE ) {
|
78 |
+
// wp_kses() is unavailable on advanced-cache.php
|
79 |
return wp_kses( $str, $allow_tags ? $GLOBALS['allowedtags'] : array() );
|
80 |
}
|
81 |
|
103 |
}
|
104 |
|
105 |
/**
|
106 |
+
* Retrieve or remove nonce and rebuild query strings.
|
107 |
*
|
108 |
*/
|
109 |
+
public static function rebuild_nonce( $location, $retrieve = TRUE ) {
|
110 |
// check if the location is internal
|
111 |
+
$url = parse_url( $location );
|
112 |
+
$key = IP_Geo_Block::PLUGIN_NAME . '-auth-nonce';
|
113 |
+
|
114 |
+
if ( empty( $url['host'] ) || $url['host'] === parse_url( home_url(), PHP_URL_HOST ) ) {
|
115 |
+
if ( $retrieve ) {
|
116 |
+
// it doesn't care a nonce is valid or not, but must be sanitized
|
117 |
+
if ( $nonce = self::retrieve_nonce( $key ) ) {
|
118 |
+
return esc_url_raw( add_query_arg(
|
119 |
+
array(
|
120 |
+
$key => FALSE, // delete onece
|
121 |
+
$key => $nonce // add again
|
122 |
+
),
|
123 |
+
$location
|
124 |
+
) );
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
else {
|
129 |
+
// remove a nonce from existing query
|
130 |
+
$location = esc_url_raw( add_query_arg( $key, FALSE, $location ) );
|
131 |
+
wp_parse_str( isset( $url['query'] ) ? $url['query'] : '', $query );
|
132 |
+
$args = [];
|
133 |
+
foreach ( $query as $arg => $val ) { // $val is url decoded
|
134 |
+
if ( FALSE !== strpos( $val, $key ) ) {
|
135 |
+
$val = urlencode( add_query_arg( $key, FALSE, $val ) );
|
136 |
+
}
|
137 |
+
$args[] = "$arg=$val";
|
138 |
+
}
|
139 |
+
$url['query'] = implode( '&', $args );
|
140 |
+
return self::unparse_url( $url );
|
141 |
}
|
142 |
}
|
143 |
|
144 |
return $location;
|
145 |
}
|
146 |
|
147 |
+
/**
|
148 |
+
* Convert back to string from a parsed url.
|
149 |
+
*
|
150 |
+
* @source http://php.net/manual/en/function.parse-url.php#106731
|
151 |
+
*/
|
152 |
+
private static function unparse_url( $url ) {
|
153 |
+
$scheme = isset( $url['scheme' ] ) ? $url['scheme' ] . '://' : '';
|
154 |
+
$host = isset( $url['host' ] ) ? $url['host' ] : '';
|
155 |
+
$port = isset( $url['port' ] ) ? ':' . $url['port' ] : '';
|
156 |
+
$user = isset( $url['user' ] ) ? $url['user' ] : '';
|
157 |
+
$pass = isset( $url['pass' ] ) ? ':' . $url['pass' ] : '';
|
158 |
+
$pass = ( $user || $pass ) ? "$pass@" : '';
|
159 |
+
$path = isset( $url['path' ] ) ? $url['path' ] : '';
|
160 |
+
$query = isset( $url['query' ] ) ? '?' . $url['query' ] : '';
|
161 |
+
$fragment = isset( $url['fragment'] ) ? '#' . $url['fragment'] : '';
|
162 |
+
|
163 |
+
return "$scheme$user$pass$host$port$path$query$fragment";
|
164 |
+
}
|
165 |
+
|
166 |
/**
|
167 |
* WP alternative function of wp_create_nonce() for mu-plugins
|
168 |
*
|
217 |
'logged_in' => LOGGED_IN_KEY . LOGGED_IN_SALT,
|
218 |
'nonce' => NONCE_KEY . NONCE_SALT,
|
219 |
);
|
220 |
+
|
221 |
return self::hash_hmac( 'md5', $data, apply_filters( 'salt', $salt[ $scheme ], $scheme ) );
|
222 |
}
|
223 |
|
294 |
* @source wp-includes/pluggable.php @since 2.8.0
|
295 |
*/
|
296 |
private static function get_user_by( $field, $value ) {
|
297 |
+
if ( function_exists( 'get_user_by' ) )
|
298 |
+
return get_user_by( $field, $value );
|
299 |
+
|
300 |
$userdata = WP_User::get_data_by( $field, $value ); // wp-includes/class-wp-user.php @since 2.0.0
|
301 |
|
302 |
if ( ! $userdata )
|
477 |
*/
|
478 |
public static function redirect( $location, $status = 302 ) {
|
479 |
// retrieve nonce from referer and add it to the location
|
480 |
+
$location = self::rebuild_nonce( $location, TRUE );
|
481 |
$location = self::sanitize_redirect( $location );
|
482 |
|
483 |
if ( $location ) {
|
766 |
return preg_replace( array( '/HOST[^,]*?/', '/\*[:#]!?\*,?/' ), array( '*', '' ), $ua_list );
|
767 |
}
|
768 |
|
769 |
+
/**
|
770 |
+
* https://codex.wordpress.org/WordPress_Feeds
|
771 |
+
*
|
772 |
+
*/
|
773 |
+
public static function is_feed( $request_uri ) {
|
774 |
+
return isset( $_GET['feed'] ) ?
|
775 |
+
( preg_match( '!(?:comments-)?(?:feed|rss|rss2|rdf|atom)$!', $_GET['feed'] ) ? TRUE : FALSE ) :
|
776 |
+
( preg_match( '!(?:comments/)?(?:feed|rss|rss2|rdf|atom)/?$!', $request_uri ) ? TRUE : FALSE );
|
777 |
+
}
|
778 |
+
|
779 |
/**
|
780 |
* Whether the server software is IIS or something else
|
781 |
*
|
785 |
$_is_apache = ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Apache' ) !== FALSE || strpos( $_SERVER['SERVER_SOFTWARE'], 'LiteSpeed' ) !== FALSE );
|
786 |
$_is_IIS = ! $_is_apache && ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS' ) !== FALSE || strpos( $_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer' ) !== FALSE );
|
787 |
|
788 |
+
return $_is_IIS ? substr( $_SERVER['SERVER_SOFTWARE'], strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/' ) + 14 ) : FALSE;
|
|
|
|
|
|
|
789 |
}
|
790 |
|
791 |
/**
|
930 |
/**
|
931 |
* Get the list of multisite
|
932 |
*
|
933 |
+
* This function should be called after 'init' hook is fired.
|
934 |
*/
|
935 |
+
public static function get_sites_of_user() {
|
936 |
$sites = array();
|
937 |
|
938 |
+
foreach ( get_blogs_of_user( get_current_user_id(), current_user_can( 'manage_network_options' ) ) as $site ) { // @since 3.0.0
|
939 |
+
$sites[] = preg_replace( '/^https?:/', '', $site->siteurl );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
940 |
}
|
941 |
|
942 |
return $sites;
|
classes/class-ip-geo-block.php
CHANGED
@@ -15,7 +15,7 @@ class IP_Geo_Block {
|
|
15 |
* Unique identifier for this plugin.
|
16 |
*
|
17 |
*/
|
18 |
-
const VERSION = '3.0.
|
19 |
const GEOAPI_NAME = 'ip-geo-api';
|
20 |
const PLUGIN_NAME = 'ip-geo-block';
|
21 |
const OPTION_NAME = 'ip_geo_block_settings';
|
@@ -27,15 +27,15 @@ class IP_Geo_Block {
|
|
27 |
*
|
28 |
*/
|
29 |
private static $instance = NULL;
|
30 |
-
private static $
|
31 |
-
private static $
|
32 |
private $pagenow = NULL;
|
33 |
private $request_uri = NULL;
|
34 |
private $target_type = NULL;
|
35 |
|
36 |
/**
|
37 |
* Initialize the plugin
|
38 |
-
*
|
39 |
*/
|
40 |
private function __construct() {
|
41 |
// Run the loader to execute all of the hooks with WordPress.
|
@@ -57,9 +57,6 @@ class IP_Geo_Block {
|
|
57 |
// include drop in if it exists
|
58 |
file_exists( $key = IP_Geo_Block_Util::unslashit( $settings['api_dir'] ) . '/drop-in.php' ) and include( $key );
|
59 |
|
60 |
-
// get client IP address
|
61 |
-
self::$remote_addr = self::get_ip_address( $settings );
|
62 |
-
|
63 |
// normalize requested uri and page
|
64 |
$key = preg_replace( array( '!\.+/!', '!//+!' ), '/', $_SERVER['REQUEST_URI'] );
|
65 |
$this->request_uri = @parse_url( $key, PHP_URL_PATH ) or $this->request_uri = $key;
|
@@ -113,7 +110,7 @@ class IP_Geo_Block {
|
|
113 |
else {
|
114 |
// public facing pages
|
115 |
if ( $validate['public'] || ( ! empty( $_FILES ) && $validate['mimetype'] ) || $live_log /* && 'index.php' === $this->pagenow */ )
|
116 |
-
$loader->add_action( 'init', array( $this, 'validate_public' ), $priority );
|
117 |
|
118 |
// message text on comment form
|
119 |
if ( $settings['comment']['pos'] ) {
|
@@ -150,7 +147,7 @@ class IP_Geo_Block {
|
|
150 |
|
151 |
// garbage collection for IP address cache, enque script for authentication
|
152 |
add_action( self::CACHE_NAME, array( $this, 'exec_cache_gc' ) );
|
153 |
-
|
154 |
}
|
155 |
|
156 |
// force to redirect on logout to remove nonce, embed a nonce into pages
|
@@ -194,14 +191,14 @@ class IP_Geo_Block {
|
|
194 |
}
|
195 |
|
196 |
/**
|
197 |
-
* Remove the redirecting URL on logout
|
198 |
*
|
199 |
*/
|
200 |
-
public function logout_redirect( $
|
201 |
-
if ( isset( $_REQUEST['action'] ) && 'logout' === $_REQUEST['action'] && FALSE !== stripos( $
|
202 |
-
return
|
203 |
else
|
204 |
-
return $
|
205 |
}
|
206 |
|
207 |
/**
|
@@ -221,7 +218,7 @@ class IP_Geo_Block {
|
|
221 |
*/
|
222 |
public static function enqueue_nonce() {
|
223 |
if ( is_user_logged_in() ) {
|
224 |
-
$args['sites'] = IP_Geo_Block_Util::
|
225 |
$args['nonce'] = IP_Geo_Block_Util::create_nonce( $handle = self::PLUGIN_NAME . '-auth-nonce' );
|
226 |
|
227 |
// authentication
|
@@ -252,16 +249,11 @@ class IP_Geo_Block {
|
|
252 |
*
|
253 |
*/
|
254 |
public static function get_ip_address( $settings = NULL ) {
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
IP_Geo_Block_Util::get_client_ip( $settings['validation']['proxy'] )
|
261 |
-
);
|
262 |
-
}
|
263 |
-
|
264 |
-
return self::$remote_addr;
|
265 |
}
|
266 |
|
267 |
/**
|
@@ -273,6 +265,13 @@ class IP_Geo_Block {
|
|
273 |
echo '<p id="', self::PLUGIN_NAME, '-msg">', IP_Geo_Block_Util::kses( $settings['comment']['msg'] ), '</p>', "\n";
|
274 |
}
|
275 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
/**
|
277 |
* Build a validation result for the current user.
|
278 |
*
|
@@ -300,7 +299,7 @@ class IP_Geo_Block {
|
|
300 |
if ( empty( $providers ) ) // make valid providers list
|
301 |
$providers = IP_Geo_Block_Provider::get_valid_providers( $settings['providers'] );
|
302 |
|
303 |
-
$result = self::_get_geolocation( $ip ? $ip : self::get_ip_address(), $settings, $providers, array(), $callback );
|
304 |
|
305 |
if ( ! empty( $result['countryCode'] ) )
|
306 |
$result['code'] = $result['countryCode'];
|
@@ -434,20 +433,21 @@ class IP_Geo_Block {
|
|
434 |
*/
|
435 |
public function validate_ip( $hook, $settings, $block = TRUE, $die = TRUE, $check_auth = TRUE ) {
|
436 |
// register auxiliary validation functions
|
437 |
-
// priority high
|
438 |
-
//
|
439 |
-
//
|
440 |
-
//
|
441 |
-
//
|
442 |
-
//
|
443 |
-
//
|
|
|
444 |
$var = self::PLUGIN_NAME . '-' . $hook;
|
445 |
-
$settings['validation']['mimetype' ] and add_filter( $var, array( $this, 'check_upload' ),
|
446 |
-
$check_auth
|
447 |
-
$settings['extra_ips'
|
448 |
-
$settings['extra_ips'
|
449 |
-
$settings['extra_ips'
|
450 |
-
$settings['login_fails'] >= 0
|
451 |
|
452 |
// make valid provider name list
|
453 |
$providers = IP_Geo_Block_Provider::get_valid_providers( $settings['providers'] );
|
@@ -460,7 +460,7 @@ class IP_Geo_Block {
|
|
460 |
// 'code' => $code, /* country code or reason of rejection */
|
461 |
// 'result' => $result, /* 'passed', 'blocked' */
|
462 |
// );
|
463 |
-
$ips = IP_Geo_Block_Util::retrieve_ips( array( self::get_ip_address() ), $settings['validation']['proxy'] );
|
464 |
foreach ( $ips as self::$remote_addr ) {
|
465 |
$validate = self::_get_geolocation( self::$remote_addr, $settings, $providers, array( 'cache' => TRUE ) );
|
466 |
$validate = apply_filters( $var, $validate, $settings );
|
@@ -470,23 +470,13 @@ class IP_Geo_Block {
|
|
470 |
$validate = self::validate_country( $hook, $validate, $settings, $block );
|
471 |
|
472 |
// if one of IPs is blocked then stop
|
473 |
-
if (
|
474 |
break;
|
475 |
}
|
476 |
|
477 |
if ( $check_auth ) {
|
478 |
-
// record log (0:no, 1:blocked, 2:passed, 3:unauth, 4:auth, 5:all)
|
479 |
-
$block = ( 'passed' !== $validate['result'] );
|
480 |
-
$var = $settings['validation'][ $hook ] ? (int)apply_filters( self::PLUGIN_NAME . '-record-logs', $settings['validation']['reclogs'], $hook, $validate ) : FALSE;
|
481 |
-
$var = ( 1 === $var && $block ) || // blocked
|
482 |
-
( 6 === $var && ( $block || 'passed' !== self::validate_country( NULL, $validate, $settings ) ) ) || // blocked or qualified
|
483 |
-
( 2 === $var && ! $block ) || // passed
|
484 |
-
( 3 === $var && ! $validate['auth'] ) || // unauthenticated
|
485 |
-
( 4 === $var && $validate['auth'] ) || // authenticated
|
486 |
-
( 5 === $var ); // all
|
487 |
-
|
488 |
// record log and update cache
|
489 |
-
IP_Geo_Block_Logs::record_logs( $hook, $validate, $settings, $
|
490 |
IP_Geo_Block_API_Cache::update_cache( $hook, $validate, $settings );
|
491 |
|
492 |
// update statistics
|
@@ -515,7 +505,7 @@ class IP_Geo_Block {
|
|
515 |
|
516 |
public function validate_front( $can_access = TRUE ) {
|
517 |
$validate = $this->validate_ip( 'comment', self::get_option(), TRUE, FALSE, FALSE );
|
518 |
-
return (
|
519 |
}
|
520 |
|
521 |
/**
|
@@ -526,7 +516,7 @@ class IP_Geo_Block {
|
|
526 |
$settings = self::get_option();
|
527 |
|
528 |
if ( 2 === (int)$settings['validation']['xmlrpc'] ) // Completely close
|
529 |
-
add_filter( self::PLUGIN_NAME . '-xmlrpc', array( $this, 'close_xmlrpc' ),
|
530 |
|
531 |
else // wp-includes/class-wp-xmlrpc-server.php @since 3.5.0
|
532 |
add_filter( 'xmlrpc_login_error', array( $this, 'auth_fail' ), $settings['priority'] );
|
@@ -618,13 +608,13 @@ class IP_Geo_Block {
|
|
618 |
if ( ( 2 & $rule ) && $zep ) {
|
619 |
// redirect if valid nonce in referer, otherwise register WP-ZEP (2: WP-ZEP)
|
620 |
IP_Geo_Block_Util::trace_nonce( self::PLUGIN_NAME . '-auth-nonce' );
|
621 |
-
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_nonce' ),
|
622 |
}
|
623 |
}
|
624 |
|
625 |
// register validation of malicious signature (except in the comment and post)
|
626 |
if ( ! IP_Geo_Block_Util::is_user_logged_in() && ! in_array( $this->pagenow, array( 'comment.php', 'post.php' ), TRUE ) )
|
627 |
-
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_signature' ),
|
628 |
|
629 |
// validate country by IP address (1: Block by country)
|
630 |
$this->validate_ip( 'admin', $settings, 1 & $rule );
|
@@ -658,13 +648,13 @@ class IP_Geo_Block {
|
|
658 |
if ( 2 & $rule ) {
|
659 |
// redirect if valid nonce in referer, otherwise register WP-ZEP (2: WP-ZEP)
|
660 |
IP_Geo_Block_Util::trace_nonce( self::PLUGIN_NAME . '-auth-nonce' );
|
661 |
-
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_nonce' ),
|
662 |
}
|
663 |
}
|
664 |
|
665 |
// register validation of malicious signature
|
666 |
if ( ! IP_Geo_Block_Util::is_user_logged_in() )
|
667 |
-
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_signature' ),
|
668 |
|
669 |
// validate country by IP address (1: Block by country)
|
670 |
$validate = $this->validate_ip( 'admin', $settings, 1 & $rule );
|
@@ -705,10 +695,10 @@ class IP_Geo_Block {
|
|
705 |
$validate = apply_filters( self::PLUGIN_NAME . '-login', $validate, $settings );
|
706 |
|
707 |
// (1) blocked, (3) unauthenticated, (5) all
|
708 |
-
IP_Geo_Block_Logs::record_logs( $hook, $validate, $settings,
|
709 |
|
710 |
// send response code to refuse immediately
|
711 |
-
if (
|
712 |
if ( $settings['save_statistics'] )
|
713 |
IP_Geo_Block_Logs::update_stat( $hook, $validate, $settings );
|
714 |
|
@@ -801,9 +791,9 @@ class IP_Geo_Block {
|
|
801 |
|
802 |
foreach ( IP_Geo_Block_Util::multiexplode( array( ",", "\n" ), $ips ) as $i ) {
|
803 |
$j = explode( '/', $i, 2 );
|
804 |
-
|
805 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
806 |
-
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) && Net_IPv4::ipInNetwork( $ip,
|
807 |
return TRUE;
|
808 |
}
|
809 |
}
|
@@ -813,9 +803,9 @@ class IP_Geo_Block {
|
|
813 |
|
814 |
foreach ( IP_Geo_Block_Util::multiexplode( array( ",", "\n" ), $ips ) as $i ) {
|
815 |
$j = explode( '/', $i, 2 );
|
816 |
-
|
817 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
818 |
-
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) && Net_IPv6::isInNetmask( $ip,
|
819 |
return TRUE;
|
820 |
}
|
821 |
}
|
@@ -860,16 +850,29 @@ class IP_Geo_Block {
|
|
860 |
add_filter( self::PLUGIN_NAME . '-public', array( $this, 'check_page' ), 10, 2 );
|
861 |
}
|
862 |
|
863 |
-
//
|
864 |
-
add_filter( self::PLUGIN_NAME . '-
|
865 |
|
866 |
// validate undesired user agent
|
867 |
-
add_filter( self::PLUGIN_NAME . '-public', array( $this, 'check_ua' ),
|
|
|
|
|
|
|
868 |
|
869 |
// validate country by IP address (block: true, die: false)
|
870 |
$this->validate_ip( 'public', $settings, 1 & $settings['validation']['public'], ! $public['simulate'] );
|
871 |
}
|
872 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
873 |
public function check_page( $validate, $settings ) {
|
874 |
global $pagename, $post;
|
875 |
$public = $settings['public'];
|
@@ -899,18 +902,18 @@ class IP_Geo_Block {
|
|
899 |
}
|
900 |
|
901 |
public function check_ua( $validate, $settings ) {
|
902 |
-
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
|
903 |
-
|
904 |
// mask HOST if DNS lookup is false
|
905 |
if ( empty( $settings['public']['dnslkup'] ) )
|
906 |
$settings['public']['ua_list'] = IP_Geo_Block_Util::mask_qualification( $settings['public']['ua_list'] );
|
907 |
|
908 |
// get the name of host (from the cache if exists)
|
909 |
-
if ( empty( $validate['host'] ) && FALSE !== strpos( $settings['public']['ua_list'], 'HOST' ) )
|
|
|
910 |
$validate['host'] = IP_Geo_Block_Lkup::gethostbyaddr( $validate['ip'] );
|
|
|
911 |
|
912 |
// check requested url
|
913 |
-
$is_feed =
|
914 |
$u_agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
|
915 |
$referer = isset( $_SERVER['HTTP_REFERER' ] ) ? $_SERVER['HTTP_REFERER' ] : '';
|
916 |
|
@@ -924,32 +927,37 @@ class IP_Geo_Block {
|
|
924 |
|
925 |
if ( 'FEED' === $code ) {
|
926 |
if ( $not xor $is_feed )
|
927 |
-
return $validate + array( 'result' => $which ? '
|
928 |
}
|
929 |
|
930 |
elseif ( 'HOST' === $code ) {
|
931 |
if ( $not xor $validate['host'] !== $validate['ip'] )
|
932 |
-
return $validate + array( 'result' => $which ? '
|
933 |
}
|
934 |
|
935 |
elseif ( 0 === strncmp( 'HOST=', $code, 5 ) ) {
|
936 |
if ( $not xor FALSE !== strpos( $validate['host'], substr( $code, 5 ) ) )
|
937 |
-
return $validate + array( 'result' => $which ? '
|
938 |
}
|
939 |
|
940 |
elseif ( 0 === strncmp( 'REF=', $code, 4 ) ) {
|
941 |
if ( $not xor FALSE !== strpos( $referer, substr( $code, 4 ) ) )
|
942 |
-
return $validate + array( 'result' => $which ? '
|
|
|
|
|
|
|
|
|
|
|
943 |
}
|
944 |
|
945 |
elseif ( '*' === $code || 2 === strlen( $code ) ) {
|
946 |
if ( $not xor ( '*' === $code || $validate['code'] === $code ) )
|
947 |
-
return $validate + array( 'result' => $which ? '
|
948 |
}
|
949 |
|
950 |
elseif ( preg_match( '!^[a-f\d\.:/]+$!', $code = substr( $pat, strpos( $pat, $code ) ) ) ) {
|
951 |
if ( $not xor $this->check_ips( $validate, $code ) )
|
952 |
-
return $validate + array( 'result' => $which ? '
|
953 |
}
|
954 |
}
|
955 |
}
|
15 |
* Unique identifier for this plugin.
|
16 |
*
|
17 |
*/
|
18 |
+
const VERSION = '3.0.10';
|
19 |
const GEOAPI_NAME = 'ip-geo-api';
|
20 |
const PLUGIN_NAME = 'ip-geo-block';
|
21 |
const OPTION_NAME = 'ip_geo_block_settings';
|
27 |
*
|
28 |
*/
|
29 |
private static $instance = NULL;
|
30 |
+
private static $wp_path = array();
|
31 |
+
private static $remote_addr = NULL;
|
32 |
private $pagenow = NULL;
|
33 |
private $request_uri = NULL;
|
34 |
private $target_type = NULL;
|
35 |
|
36 |
/**
|
37 |
* Initialize the plugin
|
38 |
+
*
|
39 |
*/
|
40 |
private function __construct() {
|
41 |
// Run the loader to execute all of the hooks with WordPress.
|
57 |
// include drop in if it exists
|
58 |
file_exists( $key = IP_Geo_Block_Util::unslashit( $settings['api_dir'] ) . '/drop-in.php' ) and include( $key );
|
59 |
|
|
|
|
|
|
|
60 |
// normalize requested uri and page
|
61 |
$key = preg_replace( array( '!\.+/!', '!//+!' ), '/', $_SERVER['REQUEST_URI'] );
|
62 |
$this->request_uri = @parse_url( $key, PHP_URL_PATH ) or $this->request_uri = $key;
|
110 |
else {
|
111 |
// public facing pages
|
112 |
if ( $validate['public'] || ( ! empty( $_FILES ) && $validate['mimetype'] ) || $live_log /* && 'index.php' === $this->pagenow */ )
|
113 |
+
defined( 'DOING_CRON' ) or $loader->add_action( 'init', array( $this, 'validate_public' ), $priority );
|
114 |
|
115 |
// message text on comment form
|
116 |
if ( $settings['comment']['pos'] ) {
|
147 |
|
148 |
// garbage collection for IP address cache, enque script for authentication
|
149 |
add_action( self::CACHE_NAME, array( $this, 'exec_cache_gc' ) );
|
150 |
+
add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_nonce' ), $priority ); // @since 2.8.0
|
151 |
}
|
152 |
|
153 |
// force to redirect on logout to remove nonce, embed a nonce into pages
|
191 |
}
|
192 |
|
193 |
/**
|
194 |
+
* Remove a nonce from the redirecting URL on logout to prevent disclosing a nonce.
|
195 |
*
|
196 |
*/
|
197 |
+
public function logout_redirect( $location ) {
|
198 |
+
if ( isset( $_REQUEST['action'] ) && 'logout' === $_REQUEST['action'] && FALSE !== stripos( $location, self::$wp_path['admin'] ) )
|
199 |
+
return IP_Geo_Block_Util::rebuild_nonce( $location, FALSE );
|
200 |
else
|
201 |
+
return $location;
|
202 |
}
|
203 |
|
204 |
/**
|
218 |
*/
|
219 |
public static function enqueue_nonce() {
|
220 |
if ( is_user_logged_in() ) {
|
221 |
+
$args['sites'] = IP_Geo_Block_Util::get_sites_of_user();
|
222 |
$args['nonce'] = IP_Geo_Block_Util::create_nonce( $handle = self::PLUGIN_NAME . '-auth-nonce' );
|
223 |
|
224 |
// authentication
|
249 |
*
|
250 |
*/
|
251 |
public static function get_ip_address( $settings = NULL ) {
|
252 |
+
$settings or $settings = self::get_option();
|
253 |
+
return self::$remote_addr && ! has_filter( self::PLUGIN_NAME . '-ip-addr' ) ? self::$remote_addr : apply_filters(
|
254 |
+
self::PLUGIN_NAME . '-ip-addr',
|
255 |
+
IP_Geo_Block_Util::get_client_ip( $settings['validation']['proxy'] )
|
256 |
+
);
|
|
|
|
|
|
|
|
|
|
|
257 |
}
|
258 |
|
259 |
/**
|
265 |
echo '<p id="', self::PLUGIN_NAME, '-msg">', IP_Geo_Block_Util::kses( $settings['comment']['msg'] ), '</p>', "\n";
|
266 |
}
|
267 |
|
268 |
+
/**
|
269 |
+
* Return true if the validation result is passed.
|
270 |
+
*
|
271 |
+
*/
|
272 |
+
public static function is_passed ( $result ) { return 0 === strncmp( 'pass', $result, 4 ); }
|
273 |
+
public static function is_blocked( $result ) { return 0 !== strncmp( 'pass', $result, 4 ); }
|
274 |
+
|
275 |
/**
|
276 |
* Build a validation result for the current user.
|
277 |
*
|
299 |
if ( empty( $providers ) ) // make valid providers list
|
300 |
$providers = IP_Geo_Block_Provider::get_valid_providers( $settings['providers'] );
|
301 |
|
302 |
+
$result = self::_get_geolocation( $ip ? $ip : self::get_ip_address( $settings ), $settings, $providers, array(), $callback );
|
303 |
|
304 |
if ( ! empty( $result['countryCode'] ) )
|
305 |
$result['code'] = $result['countryCode'];
|
433 |
*/
|
434 |
public function validate_ip( $hook, $settings, $block = TRUE, $die = TRUE, $check_auth = TRUE ) {
|
435 |
// register auxiliary validation functions
|
436 |
+
// priority high 3 close_xmlrpc, close_restapi
|
437 |
+
// 4 check_nonce (high), check_user (low)
|
438 |
+
// 5 check_upload (high), check_signature (low)
|
439 |
+
// 6 check_auth
|
440 |
+
// 7 check_ips_black (high), check_ips_white (low)
|
441 |
+
// 8 check_fail
|
442 |
+
// 9 check_behavior (high), check_ua (low)
|
443 |
+
// priority low 10 check_page (high), validate_country (low)
|
444 |
$var = self::PLUGIN_NAME . '-' . $hook;
|
445 |
+
$settings['validation' ]['mimetype' ] and add_filter( $var, array( $this, 'check_upload' ), 5, 2 );
|
446 |
+
$check_auth and add_filter( $var, array( $this, 'check_auth' ), 6, 2 );
|
447 |
+
$settings['extra_ips' ] = apply_filters( self::PLUGIN_NAME . '-extra-ips', $settings['extra_ips'], $hook );
|
448 |
+
$settings['extra_ips' ]['black_list'] and add_filter( $var, array( $this, 'check_ips_black' ), 7, 2 );
|
449 |
+
$settings['extra_ips' ]['white_list'] and add_filter( $var, array( $this, 'check_ips_white' ), 7, 2 );
|
450 |
+
$settings['login_fails'] >= 0 and add_filter( $var, array( $this, 'check_fail' ), 8, 2 );
|
451 |
|
452 |
// make valid provider name list
|
453 |
$providers = IP_Geo_Block_Provider::get_valid_providers( $settings['providers'] );
|
460 |
// 'code' => $code, /* country code or reason of rejection */
|
461 |
// 'result' => $result, /* 'passed', 'blocked' */
|
462 |
// );
|
463 |
+
$ips = IP_Geo_Block_Util::retrieve_ips( array( self::get_ip_address( $settings ) ), $settings['validation']['proxy'] );
|
464 |
foreach ( $ips as self::$remote_addr ) {
|
465 |
$validate = self::_get_geolocation( self::$remote_addr, $settings, $providers, array( 'cache' => TRUE ) );
|
466 |
$validate = apply_filters( $var, $validate, $settings );
|
470 |
$validate = self::validate_country( $hook, $validate, $settings, $block );
|
471 |
|
472 |
// if one of IPs is blocked then stop
|
473 |
+
if ( self::is_blocked( $validate['result'] ) )
|
474 |
break;
|
475 |
}
|
476 |
|
477 |
if ( $check_auth ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
// record log and update cache
|
479 |
+
IP_Geo_Block_Logs::record_logs( $hook, $validate, $settings, $block = self::is_blocked( $validate['result'] ) );
|
480 |
IP_Geo_Block_API_Cache::update_cache( $hook, $validate, $settings );
|
481 |
|
482 |
// update statistics
|
505 |
|
506 |
public function validate_front( $can_access = TRUE ) {
|
507 |
$validate = $this->validate_ip( 'comment', self::get_option(), TRUE, FALSE, FALSE );
|
508 |
+
return self::is_passed( $validate['result'] ) ? $can_access : FALSE;
|
509 |
}
|
510 |
|
511 |
/**
|
516 |
$settings = self::get_option();
|
517 |
|
518 |
if ( 2 === (int)$settings['validation']['xmlrpc'] ) // Completely close
|
519 |
+
add_filter( self::PLUGIN_NAME . '-xmlrpc', array( $this, 'close_xmlrpc' ), 3, 2 );
|
520 |
|
521 |
else // wp-includes/class-wp-xmlrpc-server.php @since 3.5.0
|
522 |
add_filter( 'xmlrpc_login_error', array( $this, 'auth_fail' ), $settings['priority'] );
|
608 |
if ( ( 2 & $rule ) && $zep ) {
|
609 |
// redirect if valid nonce in referer, otherwise register WP-ZEP (2: WP-ZEP)
|
610 |
IP_Geo_Block_Util::trace_nonce( self::PLUGIN_NAME . '-auth-nonce' );
|
611 |
+
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_nonce' ), 4, 2 );
|
612 |
}
|
613 |
}
|
614 |
|
615 |
// register validation of malicious signature (except in the comment and post)
|
616 |
if ( ! IP_Geo_Block_Util::is_user_logged_in() && ! in_array( $this->pagenow, array( 'comment.php', 'post.php' ), TRUE ) )
|
617 |
+
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_signature' ), 5, 2 );
|
618 |
|
619 |
// validate country by IP address (1: Block by country)
|
620 |
$this->validate_ip( 'admin', $settings, 1 & $rule );
|
648 |
if ( 2 & $rule ) {
|
649 |
// redirect if valid nonce in referer, otherwise register WP-ZEP (2: WP-ZEP)
|
650 |
IP_Geo_Block_Util::trace_nonce( self::PLUGIN_NAME . '-auth-nonce' );
|
651 |
+
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_nonce' ), 4, 2 );
|
652 |
}
|
653 |
}
|
654 |
|
655 |
// register validation of malicious signature
|
656 |
if ( ! IP_Geo_Block_Util::is_user_logged_in() )
|
657 |
+
add_filter( self::PLUGIN_NAME . '-admin', array( $this, 'check_signature' ), 5, 2 );
|
658 |
|
659 |
// validate country by IP address (1: Block by country)
|
660 |
$validate = $this->validate_ip( 'admin', $settings, 1 & $rule );
|
695 |
$validate = apply_filters( self::PLUGIN_NAME . '-login', $validate, $settings );
|
696 |
|
697 |
// (1) blocked, (3) unauthenticated, (5) all
|
698 |
+
IP_Geo_Block_Logs::record_logs( $hook, $validate, $settings, $block = self::is_blocked( $validate['result'] ) );
|
699 |
|
700 |
// send response code to refuse immediately
|
701 |
+
if ( $block ) {
|
702 |
if ( $settings['save_statistics'] )
|
703 |
IP_Geo_Block_Logs::update_stat( $hook, $validate, $settings );
|
704 |
|
791 |
|
792 |
foreach ( IP_Geo_Block_Util::multiexplode( array( ",", "\n" ), $ips ) as $i ) {
|
793 |
$j = explode( '/', $i, 2 );
|
794 |
+
$j[1] = isset( $j[1] ) ? min( 32, max( 0, (int)$j[1] ) ) : 32;
|
795 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
796 |
+
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) && Net_IPv4::ipInNetwork( $ip, $j[0].'/'.$j[1] ) ) )
|
797 |
return TRUE;
|
798 |
}
|
799 |
}
|
803 |
|
804 |
foreach ( IP_Geo_Block_Util::multiexplode( array( ",", "\n" ), $ips ) as $i ) {
|
805 |
$j = explode( '/', $i, 2 );
|
806 |
+
$j[1] = isset( $j[1] ) ? min( 128, max( 0, (int)$j[1] ) ) : 128;
|
807 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
808 |
+
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) && Net_IPv6::isInNetmask( $ip, $j[0].'/'.$j[1] ) ) )
|
809 |
return TRUE;
|
810 |
}
|
811 |
}
|
850 |
add_filter( self::PLUGIN_NAME . '-public', array( $this, 'check_page' ), 10, 2 );
|
851 |
}
|
852 |
|
853 |
+
// validate bad behavior by bots and crawlers
|
854 |
+
$public['behavior'] and add_filter( self::PLUGIN_NAME . '-public', array( $this, 'check_behavior' ), 9, 2 );
|
855 |
|
856 |
// validate undesired user agent
|
857 |
+
add_filter( self::PLUGIN_NAME . '-public', array( $this, 'check_ua' ), 9, 2 );
|
858 |
+
|
859 |
+
// retrieve IP address of visitor via proxy services
|
860 |
+
add_filter( self::PLUGIN_NAME . '-ip-addr', array( 'IP_Geo_Block_Util', 'get_proxy_ip' ), 20, 1 );
|
861 |
|
862 |
// validate country by IP address (block: true, die: false)
|
863 |
$this->validate_ip( 'public', $settings, 1 & $settings['validation']['public'], ! $public['simulate'] );
|
864 |
}
|
865 |
|
866 |
+
public function check_behavior( $validate, $settings ) {
|
867 |
+
// check if page view with a short period time is under the threshold
|
868 |
+
$cache = IP_Geo_Block_API_Cache::get_cache( self::$remote_addr );
|
869 |
+
if ( $cache && $cache['view'] >= $settings['behavior']['view'] && $_SERVER['REQUEST_TIME'] - $cache['last'] <= $settings['behavior']['time'] ) {
|
870 |
+
return $validate + array( 'result' => 'badbot' ); // can't overwrite existing result
|
871 |
+
}
|
872 |
+
|
873 |
+
return $validate;
|
874 |
+
}
|
875 |
+
|
876 |
public function check_page( $validate, $settings ) {
|
877 |
global $pagename, $post;
|
878 |
$public = $settings['public'];
|
902 |
}
|
903 |
|
904 |
public function check_ua( $validate, $settings ) {
|
|
|
|
|
905 |
// mask HOST if DNS lookup is false
|
906 |
if ( empty( $settings['public']['dnslkup'] ) )
|
907 |
$settings['public']['ua_list'] = IP_Geo_Block_Util::mask_qualification( $settings['public']['ua_list'] );
|
908 |
|
909 |
// get the name of host (from the cache if exists)
|
910 |
+
if ( empty( $validate['host'] ) && FALSE !== strpos( $settings['public']['ua_list'], 'HOST' ) ) {
|
911 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
|
912 |
$validate['host'] = IP_Geo_Block_Lkup::gethostbyaddr( $validate['ip'] );
|
913 |
+
}
|
914 |
|
915 |
// check requested url
|
916 |
+
$is_feed = IP_Geo_Block_Util::is_feed( $this->request_uri );
|
917 |
$u_agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
|
918 |
$referer = isset( $_SERVER['HTTP_REFERER' ] ) ? $_SERVER['HTTP_REFERER' ] : '';
|
919 |
|
927 |
|
928 |
if ( 'FEED' === $code ) {
|
929 |
if ( $not xor $is_feed )
|
930 |
+
return $validate + array( 'result' => $which ? 'blockUA' : 'passUA' );
|
931 |
}
|
932 |
|
933 |
elseif ( 'HOST' === $code ) {
|
934 |
if ( $not xor $validate['host'] !== $validate['ip'] )
|
935 |
+
return $validate + array( 'result' => $which ? 'blockUA' : 'passUA' );
|
936 |
}
|
937 |
|
938 |
elseif ( 0 === strncmp( 'HOST=', $code, 5 ) ) {
|
939 |
if ( $not xor FALSE !== strpos( $validate['host'], substr( $code, 5 ) ) )
|
940 |
+
return $validate + array( 'result' => $which ? 'blockUA' : 'passUA' );
|
941 |
}
|
942 |
|
943 |
elseif ( 0 === strncmp( 'REF=', $code, 4 ) ) {
|
944 |
if ( $not xor FALSE !== strpos( $referer, substr( $code, 4 ) ) )
|
945 |
+
return $validate + array( 'result' => $which ? 'blockUA' : 'passUA' );
|
946 |
+
}
|
947 |
+
|
948 |
+
elseif ( 0 === strncmp( 'AS', $code, 2 ) ) {
|
949 |
+
if ( $not xor $validate['asn'] === $code )
|
950 |
+
return $validate + array( 'result' => $which ? 'blockUA' : 'passUA' );
|
951 |
}
|
952 |
|
953 |
elseif ( '*' === $code || 2 === strlen( $code ) ) {
|
954 |
if ( $not xor ( '*' === $code || $validate['code'] === $code ) )
|
955 |
+
return $validate + array( 'result' => $which ? 'blockUA' : 'passUA' );
|
956 |
}
|
957 |
|
958 |
elseif ( preg_match( '!^[a-f\d\.:/]+$!', $code = substr( $pat, strpos( $pat, $code ) ) ) ) {
|
959 |
if ( $not xor $this->check_ips( $validate, $code ) )
|
960 |
+
return $validate + array( 'result' => $which ? 'blockUA' : 'passUA' );
|
961 |
}
|
962 |
}
|
963 |
}
|
ip-geo-block.php
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
* Plugin Name: IP Geo Block
|
14 |
* Plugin URI: http://wordpress.org/plugins/ip-geo-block/
|
15 |
* Description: It blocks any spams, login attempts and malicious access to the admin area posted from outside your nation, and also prevents zero-day exploit.
|
16 |
-
* Version: 3.0.
|
17 |
* Author: tokkonopapa
|
18 |
* Author URI: http://www.ipgeoblock.com/
|
19 |
* Text Domain: ip-geo-block
|
13 |
* Plugin Name: IP Geo Block
|
14 |
* Plugin URI: http://wordpress.org/plugins/ip-geo-block/
|
15 |
* Description: It blocks any spams, login attempts and malicious access to the admin area posted from outside your nation, and also prevents zero-day exploit.
|
16 |
+
* Version: 3.0.10
|
17 |
* Author: tokkonopapa
|
18 |
* Author URI: http://www.ipgeoblock.com/
|
19 |
* Text Domain: ip-geo-block
|
languages/ip-geo-block-ja.mo
CHANGED
Binary file
|
languages/ip-geo-block-ja.po
CHANGED
@@ -4,8 +4,8 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: IP Geo Block 3.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
-
"POT-Creation-Date: 2018-03-
|
8 |
-
"PO-Revision-Date: 2018-03-
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
@@ -28,153 +28,153 @@ msgstr ""
|
|
28 |
"自国以外から投稿されるスパム、ログインフォーム、さらにゼロデイ攻撃を含む管理領"
|
29 |
"域への悪意あるアクセスからサイトを守ります。"
|
30 |
|
31 |
-
#: admin/class-ip-geo-block-admin.php:
|
32 |
msgid "Import settings ?"
|
33 |
msgstr "設定をインポートしますか?"
|
34 |
|
35 |
-
#: admin/class-ip-geo-block-admin.php:
|
36 |
msgid "Create table ?"
|
37 |
msgstr "テーブルを作成しますか?"
|
38 |
|
39 |
-
#: admin/class-ip-geo-block-admin.php:
|
40 |
msgid "Delete table ?"
|
41 |
msgstr "テーブルを削除しますか?"
|
42 |
|
43 |
-
#: admin/class-ip-geo-block-admin.php:
|
44 |
msgid "Clear statistics ?"
|
45 |
msgstr "統計をクリアしますか?"
|
46 |
|
47 |
-
#: admin/class-ip-geo-block-admin.php:
|
48 |
msgid "Clear cache ?"
|
49 |
msgstr "キャッシュをクリアしますか?"
|
50 |
|
51 |
-
#: admin/class-ip-geo-block-admin.php:
|
52 |
msgid "Clear logs ?"
|
53 |
msgstr "ログをクリアしますか?"
|
54 |
|
55 |
-
#: admin/class-ip-geo-block-admin.php:
|
56 |
msgid "ajax for logged-in user"
|
57 |
msgstr "認証済ユーザー用 ajax"
|
58 |
|
59 |
-
#: admin/class-ip-geo-block-admin.php:
|
60 |
msgid "ajax for non logged-in user"
|
61 |
msgstr "未認証ユーザー用 ajax"
|
62 |
|
63 |
-
#: admin/class-ip-geo-block-admin.php:
|
64 |
#, php-format
|
65 |
msgid "[Found: %d]"
|
66 |
msgstr "[見つかった数:%d]"
|
67 |
|
68 |
-
#: admin/class-ip-geo-block-admin.php:
|
69 |
#, php-format
|
70 |
msgid "Find and verify `%s` on “Logs” tab."
|
71 |
msgstr "ログから `%s` を検索し、検証して下さい。"
|
72 |
|
73 |
-
#: admin/class-ip-geo-block-admin.php:
|
74 |
msgid "This feature is available with HTML5 compliant browsers."
|
75 |
msgstr "HTML5準拠のブラウザでのみ機能します。"
|
76 |
|
77 |
-
#: admin/class-ip-geo-block-admin.php:
|
78 |
msgid "The selected row cannot be found in the visible area."
|
79 |
msgstr "可視領域に選択された行が見つかりません。"
|
80 |
|
81 |
-
#: admin/class-ip-geo-block-admin.php:
|
82 |
-
#: admin/class-ip-geo-block-admin.php:
|
83 |
#, php-format
|
84 |
msgid "An error occurred while executing the ajax command `%s`."
|
85 |
msgstr "Ajaxコマンド `%s` の実行中にエラーが発生しました。"
|
86 |
|
87 |
-
#: admin/class-ip-geo-block-admin.php:
|
88 |
msgid "No data available in table"
|
89 |
msgstr "テーブルにデータがありません"
|
90 |
|
91 |
-
#: admin/class-ip-geo-block-admin.php:
|
92 |
msgid "No matching records found"
|
93 |
msgstr "一致するレコードがありません"
|
94 |
|
95 |
-
#: admin/class-ip-geo-block-admin.php:
|
96 |
msgid "IP address"
|
97 |
msgstr "IPアドレス"
|
98 |
|
99 |
-
#: admin/class-ip-geo-block-admin.php:
|
100 |
msgid "Code"
|
101 |
msgstr "国"
|
102 |
|
103 |
-
#: admin/class-ip-geo-block-admin.php:
|
104 |
msgid "ASN"
|
105 |
msgstr "AS番号"
|
106 |
|
107 |
-
#: admin/class-ip-geo-block-admin.php:
|
108 |
msgid "Host name"
|
109 |
msgstr "ホスト名"
|
110 |
|
111 |
-
#: admin/class-ip-geo-block-admin.php:
|
112 |
msgid "Target"
|
113 |
msgstr "検証対象"
|
114 |
|
115 |
-
#: admin/class-ip-geo-block-admin.php:
|
116 |
msgid "Failure / Total"
|
117 |
msgstr "ログイン失敗/総計"
|
118 |
|
119 |
-
#: admin/class-ip-geo-block-admin.php:
|
120 |
msgid "Elapsed[sec]"
|
121 |
msgstr "経過 [秒]"
|
122 |
|
123 |
-
#: admin/class-ip-geo-block-admin.php:
|
124 |
msgid "Time"
|
125 |
msgstr "日時"
|
126 |
|
127 |
-
#: admin/class-ip-geo-block-admin.php:
|
128 |
msgid "Result"
|
129 |
msgstr "検証結果"
|
130 |
|
131 |
-
#: admin/class-ip-geo-block-admin.php:
|
132 |
msgid "Request"
|
133 |
msgstr "リクエスト"
|
134 |
|
135 |
-
#: admin/class-ip-geo-block-admin.php:
|
136 |
msgid "User agent"
|
137 |
msgstr "ユーザー・エージェント"
|
138 |
|
139 |
-
#: admin/class-ip-geo-block-admin.php:
|
140 |
msgid "HTTP headers"
|
141 |
msgstr "HTTP ヘッダー"
|
142 |
|
143 |
-
#: admin/class-ip-geo-block-admin.php:
|
144 |
msgid "$_POST data"
|
145 |
msgstr "$_POST データ"
|
146 |
|
147 |
-
#: admin/class-ip-geo-block-admin.php:
|
148 |
msgid "Contribute on GitHub"
|
149 |
msgstr "開発に参加"
|
150 |
|
151 |
-
#: admin/class-ip-geo-block-admin.php:
|
152 |
-
#: admin/class-ip-geo-block-admin.php:
|
153 |
-
#: admin/class-ip-geo-block-admin.php:
|
154 |
-
#: admin/class-ip-geo-block-admin.php:
|
155 |
msgid "Settings"
|
156 |
msgstr "設定"
|
157 |
|
158 |
-
#: admin/class-ip-geo-block-admin.php:424
|
159 |
#: admin/class-ip-geo-block-admin.php:425
|
160 |
-
#: admin/class-ip-geo-block-admin.php:
|
161 |
#: admin/class-ip-geo-block-admin.php:436
|
162 |
-
#: admin/class-ip-geo-block-admin.php:
|
163 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
164 |
msgid "IP Geo Block"
|
165 |
msgstr "IP Geo Block"
|
166 |
|
167 |
-
#: admin/class-ip-geo-block-admin.php:
|
168 |
-
#: admin/class-ip-geo-block-admin.php:
|
169 |
-
#: admin/class-ip-geo-block-admin.php:
|
170 |
msgid "Site List"
|
171 |
msgstr "サイト一覧"
|
172 |
|
173 |
-
#: admin/class-ip-geo-block-admin.php:
|
174 |
msgid "You need WordPress 3.7+."
|
175 |
msgstr "WordPress 3.7 以上が必要です。"
|
176 |
|
177 |
-
#: admin/class-ip-geo-block-admin.php:
|
178 |
#, php-format
|
179 |
msgid ""
|
180 |
"Now downloading geolocation databases in background. After a little while, "
|
@@ -185,7 +185,7 @@ msgstr ""
|
|
185 |
"た後、あなたの国コードと[<strong>マッチング規則</strong>]を[<a href=\"%s\">"
|
186 |
"検証ルールの設定</a>]で確認して下さい。"
|
187 |
|
188 |
-
#: admin/class-ip-geo-block-admin.php:
|
189 |
#, php-format
|
190 |
msgid ""
|
191 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
@@ -194,11 +194,11 @@ msgstr ""
|
|
194 |
"[<strong>マッチング規則</strong>]が正しく設定されていません。[<a href=\"%s"
|
195 |
"\">検証ルールの設定</a>]を確認して下さい。"
|
196 |
|
197 |
-
#: admin/class-ip-geo-block-admin.php:
|
198 |
msgid "Local database and matching rule have been updated."
|
199 |
msgstr "ローカル・データベースとマッチング規則を更新しました。"
|
200 |
|
201 |
-
#: admin/class-ip-geo-block-admin.php:
|
202 |
msgid ""
|
203 |
"Once you logout, you will be unable to login again because the number of "
|
204 |
"login attempts reaches the limit."
|
@@ -206,7 +206,7 @@ msgstr ""
|
|
206 |
"あなたのIPアドレスのログイン試行可能回数がリミットに達したため、ログアウトする"
|
207 |
"と再びログインする事が出来なくなります。"
|
208 |
|
209 |
-
#: admin/class-ip-geo-block-admin.php:
|
210 |
#, php-format
|
211 |
msgid ""
|
212 |
"Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
|
@@ -215,7 +215,7 @@ msgstr ""
|
|
215 |
"<a href=\"%s\">[統計]タブ</a>の[<strong>キャッシュのクリア</strong>]を実行"
|
216 |
"し、ロックアウトを回避してください。"
|
217 |
|
218 |
-
#: admin/class-ip-geo-block-admin.php:
|
219 |
msgid ""
|
220 |
"Once you logout, you will be unable to login again because your country code "
|
221 |
"or IP address is in the blacklist."
|
@@ -223,7 +223,7 @@ msgstr ""
|
|
223 |
"あなたの国コードまたはIPアドレスがブラックリストに含まれているため、ログアウト"
|
224 |
"すると再びログインする事が出来なくなります。"
|
225 |
|
226 |
-
#: admin/class-ip-geo-block-admin.php:
|
227 |
msgid ""
|
228 |
"Once you logout, you will be unable to login again because your country code "
|
229 |
"or IP address is not in the whitelist."
|
@@ -231,12 +231,12 @@ msgstr ""
|
|
231 |
"あなたの国コードまたはIPアドレスがホワイトリストに含まれていないため、ログアウ"
|
232 |
"トすると再びログインする事が出来なくなります。"
|
233 |
|
234 |
-
#: admin/class-ip-geo-block-admin.php:
|
235 |
#, php-format
|
236 |
msgid "Please check your “%sValidation rule settings%s”."
|
237 |
msgstr "[%s検証ルールの設定%s]を確認して下さい。"
|
238 |
|
239 |
-
#: admin/class-ip-geo-block-admin.php:
|
240 |
#, php-format
|
241 |
msgid ""
|
242 |
"Please confirm your local geolocation databases at “%sLocal database "
|
@@ -246,7 +246,7 @@ msgstr ""
|
|
246 |
"[%sローカル・データベースの設定%s]で位置情報データベースを確認し、[%sキャッ"
|
247 |
"シュの統計%s]でキャッシュされているあなたのIPアドレスを削除して下さい。"
|
248 |
|
249 |
-
#: admin/class-ip-geo-block-admin.php:
|
250 |
msgid ""
|
251 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
252 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
@@ -256,31 +256,31 @@ msgstr ""
|
|
256 |
"されていますが、<strong>IP Geo Allow</strong> と互換性がありません。「“"
|
257 |
"init” アクション・フック」を選択してください。"
|
258 |
|
259 |
-
#: admin/class-ip-geo-block-admin.php:
|
260 |
msgid "Statistics"
|
261 |
msgstr "統計"
|
262 |
|
263 |
-
#: admin/class-ip-geo-block-admin.php:
|
264 |
msgid "Logs"
|
265 |
msgstr "ログ"
|
266 |
|
267 |
-
#: admin/class-ip-geo-block-admin.php:
|
268 |
msgid "Search"
|
269 |
msgstr "検索"
|
270 |
|
271 |
-
#: admin/class-ip-geo-block-admin.php:
|
272 |
msgid "Attribution"
|
273 |
msgstr "リンク"
|
274 |
|
275 |
-
#: admin/class-ip-geo-block-admin.php:
|
276 |
msgid "Network wide"
|
277 |
msgstr "ネットワーク一括管理"
|
278 |
|
279 |
-
#: admin/class-ip-geo-block-admin.php:
|
280 |
msgid "Toggle all"
|
281 |
msgstr "全てを開閉"
|
282 |
|
283 |
-
#: admin/class-ip-geo-block-admin.php:
|
284 |
msgid ""
|
285 |
"Independent of “Statistics and Logs settings”, you can see all "
|
286 |
"the requests validated by this plugin in almost real time."
|
@@ -288,23 +288,23 @@ msgstr ""
|
|
288 |
"[統計とログの設定]にかかわらず、このプラグインによる検証結果のすべてを、ほぼ"
|
289 |
"リアルタイムに表示します。"
|
290 |
|
291 |
-
#: admin/class-ip-geo-block-admin.php:
|
292 |
msgid "Live update"
|
293 |
msgstr "ライブアップデート"
|
294 |
|
295 |
-
#: admin/class-ip-geo-block-admin.php:
|
296 |
msgid "Open a new window on clicking the link in the chart."
|
297 |
msgstr "チャート内のリンクをクリックすると、新しいウィンドウが開きます。"
|
298 |
|
299 |
-
#: admin/class-ip-geo-block-admin.php:
|
300 |
msgid "Open a new window"
|
301 |
msgstr "別窓で開く"
|
302 |
|
303 |
-
#: admin/class-ip-geo-block-admin.php:
|
304 |
msgid "Thanks for providing these great services for free."
|
305 |
msgstr "これらのすばらしいサービスの提供元に、敬意と感謝の意を表します!"
|
306 |
|
307 |
-
#: admin/class-ip-geo-block-admin.php:
|
308 |
msgid ""
|
309 |
"(Most browsers will redirect you to each site <a href=\"http://www."
|
310 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
@@ -314,29 +314,33 @@ msgstr ""
|
|
314 |
"\" title=\"Referer Checker\">参照元を残さずにリンク先にリダイレクトできます</"
|
315 |
"a>。)"
|
316 |
|
317 |
-
#: admin/class-ip-geo-block-admin.php:
|
318 |
msgid "Back to top"
|
319 |
msgstr "トップに戻る"
|
320 |
|
321 |
-
#: admin/class-ip-geo-block-admin.php:
|
322 |
msgid "Enable"
|
323 |
msgstr "有効"
|
324 |
|
325 |
-
#: admin/class-ip-geo-block-admin.php:
|
326 |
msgid "Select one"
|
327 |
msgstr "何れかを選択"
|
328 |
|
329 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
|
|
|
|
330 |
#: admin/includes/class-admin-rewrite.php:194
|
331 |
-
#: classes/class-ip-geo-block-cron.php:
|
332 |
-
#: classes/class-ip-geo-block-cron.php:
|
333 |
-
#: classes/class-ip-geo-block-cron.php:
|
334 |
-
#: classes/class-ip-geo-block-opts.php:
|
335 |
#, php-format
|
336 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
337 |
msgstr "<code>%s</code> に書き込めません。パーミッションをチェックして下さい。"
|
338 |
|
339 |
-
#: admin/class-ip-geo-block-admin.php:
|
340 |
msgid "Settings saved."
|
341 |
msgstr "設定を保存しました。"
|
342 |
|
@@ -356,8 +360,8 @@ msgid ""
|
|
356 |
msgstr "%sは誤ったフォーマットです。該当行を削除し、再実行してください。"
|
357 |
|
358 |
#: admin/includes/class-admin-rewrite.php:168
|
359 |
-
#: classes/class-ip-geo-block-cron.php:
|
360 |
-
#: classes/class-ip-geo-block-cron.php:
|
361 |
#, php-format
|
362 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
363 |
msgstr "<code>%s</code> が読めません。パーミッションをチェックして下さい。"
|
@@ -377,23 +381,28 @@ msgstr "%s で既に「auto_prepend_file」が設定されています。
|
|
377 |
msgid "Validation logs"
|
378 |
msgstr "検証のログ"
|
379 |
|
380 |
-
#: admin/includes/tab-accesslog.php:
|
|
|
|
|
|
|
|
|
|
|
381 |
msgid "Comment post"
|
382 |
msgstr "コメント投稿"
|
383 |
|
384 |
-
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:
|
385 |
msgid "XML-RPC"
|
386 |
msgstr "XML-RPC"
|
387 |
|
388 |
-
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:
|
389 |
msgid "Login form"
|
390 |
msgstr "ログイン・フォーム"
|
391 |
|
392 |
-
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:
|
393 |
msgid "Admin area"
|
394 |
msgstr "管理領域"
|
395 |
|
396 |
-
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:
|
397 |
msgid "Public facing pages"
|
398 |
msgstr "一般公開ページ"
|
399 |
|
@@ -451,7 +460,7 @@ msgstr "全てをクリア"
|
|
451 |
msgid "Export logs"
|
452 |
msgstr "ログをエクスポート"
|
453 |
|
454 |
-
#: admin/includes/tab-accesslog.php:152 admin/includes/tab-settings.php:
|
455 |
msgid "Export to the local file"
|
456 |
msgstr "ローカル・ファイルへエクスポートする"
|
457 |
|
@@ -564,7 +573,8 @@ msgstr "ブラックリスト"
|
|
564 |
#: admin/includes/tab-settings.php:109
|
565 |
msgid ""
|
566 |
"Please select either “Whitelist” or “Blacklist”."
|
567 |
-
msgstr "
|
|
|
568 |
|
569 |
#: admin/includes/tab-settings.php:110
|
570 |
msgid ""
|
@@ -625,10 +635,10 @@ msgstr ""
|
|
625 |
"トに悪意のないことを確認して下さい。"
|
626 |
|
627 |
#: admin/includes/tab-settings.php:120
|
628 |
-
msgid "Open CIDR calculator for IPv4 / IPv6"
|
629 |
-
msgstr "IPv4/IPv6用CIDR
|
630 |
|
631 |
-
#: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:
|
632 |
msgid "Matching rule"
|
633 |
msgstr "マッチング規則"
|
634 |
|
@@ -673,7 +683,7 @@ msgstr ""
|
|
673 |
"サーバー)、AS32934(Facebook)\">国コードに優先して検証するIPアドレスのホワイ"
|
674 |
"トリスト</dfn>"
|
675 |
|
676 |
-
#: admin/includes/tab-settings.php:
|
677 |
msgid ""
|
678 |
"<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
|
679 |
"\">Blacklist of extra IP addresses prior to country code</dfn>"
|
@@ -681,7 +691,7 @@ msgstr ""
|
|
681 |
"<dfn title=\"サーバー・レベルのアクセス制御の使用をお勧めします(例:."
|
682 |
"htaccess)。\">国コードに優先して検証するIPアドレスのブラックリスト</dfn>"
|
683 |
|
684 |
-
#: admin/includes/tab-settings.php:
|
685 |
msgid ""
|
686 |
"<dfn title=\"If your server is placed behind the proxy server or the load "
|
687 |
"balancing server, you need to put the appropriate key such as “"
|
@@ -695,7 +705,7 @@ msgstr ""
|
|
695 |
"を指定してください。\">IPアドレスを追加抽出する $_SERVER のキー"
|
696 |
"</dfn>"
|
697 |
|
698 |
-
#: admin/includes/tab-settings.php:
|
699 |
msgid ""
|
700 |
"<dfn title=\"It validates malicious signatures independently of “Block "
|
701 |
"by country” and “Prevent Zero-day Exploit” for the target "
|
@@ -712,14 +722,14 @@ msgstr ""
|
|
712 |
"block-decode\" title=\"文字化けした場合、クリックして復元して下さ"
|
713 |
"い。\"><span></span></a>)</nobr>"
|
714 |
|
715 |
-
#: admin/includes/tab-settings.php:
|
716 |
msgid ""
|
717 |
"<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
|
718 |
msgstr ""
|
719 |
"<dfn title=\"許可する MIME タイプを指定します。\">許可する"
|
720 |
" MIME タイプのホワイトリスト</dfn>"
|
721 |
|
722 |
-
#: admin/includes/tab-settings.php:
|
723 |
msgid ""
|
724 |
"<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
|
725 |
"extensions</dfn>"
|
@@ -727,7 +737,7 @@ msgstr ""
|
|
727 |
"<dfn title=\"禁止するファイルの拡張子を設定します。\">禁止するファイル拡張子の"
|
728 |
"ブラックリスト</dfn>"
|
729 |
|
730 |
-
#: admin/includes/tab-settings.php:
|
731 |
msgid ""
|
732 |
"<dfn title=\"Specify the capabilities to be verified. Depending on the "
|
733 |
"particular type of uploader, certain capability may be required. Default is "
|
@@ -739,7 +749,7 @@ msgstr ""
|
|
739 |
"(Editor)、投稿者(Author)向けの「upload_files」です。空欄の場合、この検証は"
|
740 |
"スキップされます。\">検証する権限</dfn>"
|
741 |
|
742 |
-
#: admin/includes/tab-settings.php:
|
743 |
msgid ""
|
744 |
"( See “<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
|
745 |
"Roles_and_Capabilities\" title=\"Roles and Capabilities « WordPress "
|
@@ -750,7 +760,7 @@ msgstr ""
|
|
750 |
"title=\"ユーザーの種類と権限 - WordPress Codex 日本語版\">ユーザーの種類と権限"
|
751 |
"</a>“ を参照)"
|
752 |
|
753 |
-
#: admin/includes/tab-settings.php:
|
754 |
msgid ""
|
755 |
"<dfn title=\"It restricts the file types on upload in order to block malware "
|
756 |
"and backdoor via both back-end and front-end. Please consider to select "
|
@@ -764,20 +774,20 @@ msgstr ""
|
|
764 |
"plugins” (ip-geo-block-mu.php)」に設定することを検討してください。\">悪"
|
765 |
"意のあるアップロード防止</dfn>"
|
766 |
|
767 |
-
#: admin/includes/tab-settings.php:
|
768 |
-
#: admin/includes/tab-settings.php:
|
769 |
msgid "Disable"
|
770 |
msgstr "無効"
|
771 |
|
772 |
-
#: admin/includes/tab-settings.php:
|
773 |
msgid "Verify file extension and MIME type"
|
774 |
msgstr "拡張子と MIME タイプを検証"
|
775 |
|
776 |
-
#: admin/includes/tab-settings.php:
|
777 |
msgid "Verify file extension only"
|
778 |
msgstr "ファイル拡張子のみを検証"
|
779 |
|
780 |
-
#: admin/includes/tab-settings.php:
|
781 |
#, php-format
|
782 |
msgid ""
|
783 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
@@ -786,7 +796,7 @@ msgstr ""
|
|
786 |
"<dfn title=\"テーマ・ディレクトリには 403.php など、独自のファイ"
|
787 |
"ルを設置する事が出来ます。\">レスポンス・コード</dfn> %s"
|
788 |
|
789 |
-
#: admin/includes/tab-settings.php:
|
790 |
msgid ""
|
791 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
792 |
"to a public facing page, visitors would not be blocked on the page to "
|
@@ -800,7 +810,7 @@ msgstr ""
|
|
800 |
"ります。空欄の場合、サイトのホームが使用されます。\">リダイレクト先 "
|
801 |
"URL</dfn>"
|
802 |
|
803 |
-
#: admin/includes/tab-settings.php:
|
804 |
msgid ""
|
805 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
806 |
"message</dfn>"
|
@@ -808,7 +818,7 @@ msgstr ""
|
|
808 |
"<dfn title=\"レスポンス・コード 4xx、5xx 用のメッセージを指定し"
|
809 |
"ます。\">レスポンス・メッセージ</dfn>"
|
810 |
|
811 |
-
#: admin/includes/tab-settings.php:
|
812 |
msgid ""
|
813 |
"<dfn title=\"This is applied to “XML-RPC” and “Login "
|
814 |
"form”. Lockout period is defined as expiration time at “Cache "
|
@@ -818,23 +828,23 @@ msgstr ""
|
|
818 |
"間は[キャッシュの設定]の[有効時間]で定義します。\">IPアドレス当たりのログ"
|
819 |
"イン試行可能回数</dfn>"
|
820 |
|
821 |
-
#: admin/includes/tab-settings.php:
|
822 |
msgid "Select when to run the validation."
|
823 |
msgstr "検証を実行するタイミングを選択します。"
|
824 |
|
825 |
-
#: admin/includes/tab-settings.php:
|
826 |
msgid "Validation timing"
|
827 |
msgstr "検証のタイミング"
|
828 |
|
829 |
-
#: admin/includes/tab-settings.php:
|
830 |
msgid "“init” action hook"
|
831 |
msgstr "“init” アクション・フック"
|
832 |
|
833 |
-
#: admin/includes/tab-settings.php:
|
834 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
835 |
msgstr "“mu-plugins” (ip-geo-block-mu.php)"
|
836 |
|
837 |
-
#: admin/includes/tab-settings.php:
|
838 |
msgid ""
|
839 |
"Validate at “init” action hook in the same manner as typical "
|
840 |
"plugins."
|
@@ -842,7 +852,7 @@ msgstr ""
|
|
842 |
"標準的な他のプラグインと同様、init アクション・フックのタイミングで検証を実行"
|
843 |
"します。"
|
844 |
|
845 |
-
#: admin/includes/tab-settings.php:
|
846 |
msgid ""
|
847 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
848 |
"on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
|
@@ -854,52 +864,96 @@ msgstr ""
|
|
854 |
"codex/validation-timing.html' title='Validation timing | IP Geo Block'>幾つか"
|
855 |
"の制限事項</a> が生じます。"
|
856 |
|
857 |
-
#: admin/includes/tab-settings.php:
|
858 |
msgid "Back-end target settings"
|
859 |
msgstr "バックエンドの設定"
|
860 |
|
861 |
-
#: admin/includes/tab-settings.php:
|
862 |
#, php-format
|
863 |
msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
|
864 |
msgstr "<dfn title=\"%s へのリクエストを検証する\">%s</dfn>"
|
865 |
|
866 |
-
#: admin/includes/tab-settings.php:
|
867 |
msgid "Other areas"
|
868 |
msgstr "その他の領域"
|
869 |
|
870 |
-
#: admin/includes/tab-settings.php:
|
871 |
msgid "public facing pages"
|
872 |
msgstr "一般公開ページ"
|
873 |
|
874 |
-
#: admin/includes/tab-settings.php:
|
875 |
-
#: admin/includes/tab-settings.php:
|
876 |
-
#: admin/includes/tab-settings.php:
|
877 |
msgid "Block by country"
|
878 |
msgstr "国コードで遮断"
|
879 |
|
880 |
-
#: admin/includes/tab-settings.php:
|
881 |
msgid "Completely close"
|
882 |
msgstr "完全に閉鎖"
|
883 |
|
884 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
885 |
msgid ""
|
886 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
887 |
"actions</dfn>"
|
888 |
msgstr ""
|
889 |
"<dfn title=\"遮断対象とするアクションを指定します。\">対象アクション</dfn>"
|
890 |
|
891 |
-
#: admin/includes/tab-settings.php:
|
892 |
msgid "Prevent Zero-day Exploit"
|
893 |
msgstr "ゼロデイ攻撃を遮断"
|
894 |
|
895 |
-
#: admin/includes/tab-settings.php:
|
896 |
msgid ""
|
897 |
"It will block a request related to the services for both public facing pages "
|
898 |
"and the dashboard."
|
899 |
msgstr ""
|
900 |
"一般公開ページとダッシュボード向けサービスに関連するリクエストを遮断します。"
|
901 |
|
902 |
-
#: admin/includes/tab-settings.php:
|
903 |
msgid ""
|
904 |
"Regardless of the country code, it will block a malicious request related to "
|
905 |
"the services only for the dashboard."
|
@@ -907,19 +961,19 @@ msgstr ""
|
|
907 |
"国コードに拘らず、ダッシュボード向けサービスだけに関連する悪意のあるリクエスト"
|
908 |
"を遮断します。"
|
909 |
|
910 |
-
#: admin/includes/tab-settings.php:
|
911 |
msgid "admin post for logged-in user"
|
912 |
msgstr "認証済ユーザー用 admin post"
|
913 |
|
914 |
-
#: admin/includes/tab-settings.php:
|
915 |
msgid "admin post for non logged-in user"
|
916 |
msgstr "未認証ユーザー用 admin post"
|
917 |
|
918 |
-
#: admin/includes/tab-settings.php:
|
919 |
msgid "Admin ajax/post"
|
920 |
msgstr "管理領域 ajax/post"
|
921 |
|
922 |
-
#: admin/includes/tab-settings.php:
|
923 |
msgid ""
|
924 |
"Specify the action name (“action=…”) or the page name "
|
925 |
"(“page=…”) to prevent unintended blocking caused by "
|
@@ -932,20 +986,20 @@ msgstr ""
|
|
932 |
"(“page=…” の “…” 部分)を指定し、検証対"
|
933 |
"象から除外します。"
|
934 |
|
935 |
-
#: admin/includes/tab-settings.php:
|
936 |
-
#: admin/includes/tab-settings.php:
|
937 |
msgid "Exceptions"
|
938 |
msgstr "例外"
|
939 |
|
940 |
-
#: admin/includes/tab-settings.php:
|
941 |
msgid "Toggle with non logged-in user"
|
942 |
msgstr "未認証ユーザー用を含む項目に限定して表示する"
|
943 |
|
944 |
-
#: admin/includes/tab-settings.php:
|
945 |
msgid "Candidate actions/pages"
|
946 |
msgstr "候補 アクション/ページ"
|
947 |
|
948 |
-
#: admin/includes/tab-settings.php:
|
949 |
#, php-format
|
950 |
msgid ""
|
951 |
"Regardless of the country code, it will block a malicious request to <code>"
|
@@ -954,7 +1008,7 @@ msgstr ""
|
|
954 |
"国コードに拘らず、<code>%s⋯/*.php</code>への悪意のあるリクエストを遮断し"
|
955 |
"ます。"
|
956 |
|
957 |
-
#: admin/includes/tab-settings.php:
|
958 |
msgid ""
|
959 |
"Select the item which causes unintended blocking in order to exclude from "
|
960 |
"the validation target. Grayed item indicates “INACTIVE”."
|
@@ -962,7 +1016,7 @@ msgstr ""
|
|
962 |
"意図しない遮断の原因となる項目を選択し、検証対象から除外します。灰色で表示され"
|
963 |
"た項目は、「非アクティブ」であることを示しています。"
|
964 |
|
965 |
-
#: admin/includes/tab-settings.php:
|
966 |
#, php-format
|
967 |
msgid ""
|
968 |
"It configures “%s” to validate a request to the PHP file which "
|
@@ -973,31 +1027,31 @@ msgstr ""
|
|
973 |
"に、%s を設定します。ドットで始まる隠しファイルへのアクセス拒否がサーバー側で"
|
974 |
"設定されていることを確認して下さい。"
|
975 |
|
976 |
-
#: admin/includes/tab-settings.php:
|
977 |
msgid "Sorry, but your server type is not supported."
|
978 |
msgstr "このサーバーではサポートされません。"
|
979 |
|
980 |
-
#: admin/includes/tab-settings.php:
|
981 |
msgid "Force to load WP core"
|
982 |
msgstr "WPコアの読み込みを強制"
|
983 |
|
984 |
-
#: admin/includes/tab-settings.php:
|
985 |
msgid "Plugins area"
|
986 |
msgstr "プラグイン領域"
|
987 |
|
988 |
-
#: admin/includes/tab-settings.php:
|
989 |
msgid "Themes area"
|
990 |
msgstr "テーマ領域"
|
991 |
|
992 |
-
#: admin/includes/tab-settings.php:
|
993 |
msgid "Front-end target settings"
|
994 |
msgstr "フロントエンドの設定"
|
995 |
|
996 |
-
#: admin/includes/tab-settings.php:
|
997 |
msgid "Follow “Validation rule settings”"
|
998 |
msgstr "[検証ルールの設定]に従う"
|
999 |
|
1000 |
-
#: admin/includes/tab-settings.php:
|
1001 |
#, php-format
|
1002 |
msgid ""
|
1003 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
@@ -1008,12 +1062,12 @@ msgstr ""
|
|
1008 |
"フィリエイト・プログラムに対する違反を防止するのに役立つでしょう。\">レスポン"
|
1009 |
"ス・コード</dfn> %s"
|
1010 |
|
1011 |
-
#: admin/includes/tab-settings.php:
|
1012 |
msgid ""
|
1013 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1014 |
msgstr "<dfn title=\"特定のページを遮断対象に指定します。\">ページ</dfn>"
|
1015 |
|
1016 |
-
#: admin/includes/tab-settings.php:
|
1017 |
msgid ""
|
1018 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1019 |
"target.\">Post type</dfn>"
|
@@ -1021,7 +1075,7 @@ msgstr ""
|
|
1021 |
"<dfn title=\"特定の投稿タイプのシングルページを遮断対象に指定します。\">投稿タ"
|
1022 |
"イプ</dfn>"
|
1023 |
|
1024 |
-
#: admin/includes/tab-settings.php:
|
1025 |
msgid ""
|
1026 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1027 |
"page as a blocking target.\">Category</dfn>"
|
@@ -1029,7 +1083,7 @@ msgstr ""
|
|
1029 |
"<dfn title=\"特定のカテゴリを含むシングルページかアーカイブページを遮断対象に"
|
1030 |
"指定します。\">カテゴリ</dfn>"
|
1031 |
|
1032 |
-
#: admin/includes/tab-settings.php:
|
1033 |
msgid ""
|
1034 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1035 |
"a blocking target.\">Tag</dfn>"
|
@@ -1037,23 +1091,23 @@ msgstr ""
|
|
1037 |
"<dfn title=\"特定のタグを含むシングルページかアーカイブページを遮断対象に指定"
|
1038 |
"します。\">タグ</dfn>"
|
1039 |
|
1040 |
-
#: admin/includes/tab-settings.php:
|
1041 |
msgid "Specify the validation target on front-end."
|
1042 |
msgstr "フロントエンドの検証対象を設定します。"
|
1043 |
|
1044 |
-
#: admin/includes/tab-settings.php:
|
1045 |
msgid "Validation target"
|
1046 |
msgstr "検証対象"
|
1047 |
|
1048 |
-
#: admin/includes/tab-settings.php:
|
1049 |
msgid "All requests"
|
1050 |
msgstr "全てのリクエスト"
|
1051 |
|
1052 |
-
#: admin/includes/tab-settings.php:
|
1053 |
msgid "Specify the targets"
|
1054 |
msgstr "ターゲットを指定"
|
1055 |
|
1056 |
-
#: admin/includes/tab-settings.php:
|
1057 |
msgid ""
|
1058 |
"Notice that “Validation timing” is deferred till “"
|
1059 |
"wp” action hook. It means that this feature would not be compatible "
|
@@ -1062,7 +1116,26 @@ msgstr ""
|
|
1062 |
"[検証のタイミング]が “wp” アクション・フックまで遅延されます。こ"
|
1063 |
"れにより、ページ・キャッシュとの互換性がなくなることに注意してください。"
|
1064 |
|
1065 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1066 |
msgid ""
|
1067 |
"A part of user agent string and a qualification connected with a separator "
|
1068 |
"that indicates an applicable rule and can be “:” (pass) or "
|
@@ -1076,19 +1149,19 @@ msgstr ""
|
|
1076 |
"コード、または IPアドレス(CIDR記法)が使えます。また否定を表す記号「!」"
|
1077 |
"を「条件」の直前に配置する事が出来ます。"
|
1078 |
|
1079 |
-
#: admin/includes/tab-settings.php:
|
1080 |
msgid "UA string and qualification"
|
1081 |
msgstr "ユーザーエージェント(UA)文字列と条件"
|
1082 |
|
1083 |
-
#: admin/includes/tab-settings.php:
|
1084 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1085 |
msgstr "常に遮断されるアクション名を例外として指定します。"
|
1086 |
|
1087 |
-
#: admin/includes/tab-settings.php:
|
1088 |
msgid "Excluded actions"
|
1089 |
msgstr "除外するアクション"
|
1090 |
|
1091 |
-
#: admin/includes/tab-settings.php:
|
1092 |
msgid ""
|
1093 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1094 |
"server resources. If it is disabled, “HOST” and “"
|
@@ -1099,11 +1172,11 @@ msgstr ""
|
|
1099 |
"ます)。無効にした場合、[ユーザーエージェント文字列と条件]中の「HOST」、"
|
1100 |
"「HOST=…」は常に真となります。"
|
1101 |
|
1102 |
-
#: admin/includes/tab-settings.php:
|
1103 |
msgid "DNS reverse lookup"
|
1104 |
msgstr "DNS 逆引き"
|
1105 |
|
1106 |
-
#: admin/includes/tab-settings.php:
|
1107 |
msgid ""
|
1108 |
"It enables to simulate validation without deployment. The results can be "
|
1109 |
"found at “Public facing pages” in Logs."
|
@@ -1111,15 +1184,15 @@ msgstr ""
|
|
1111 |
"機能を有効にする事なくリクエストの検証をシミュレートします。結果はログで確認す"
|
1112 |
"る事が出来ます。"
|
1113 |
|
1114 |
-
#: admin/includes/tab-settings.php:
|
1115 |
msgid "Simulation mode"
|
1116 |
msgstr "シミュレーション・モード"
|
1117 |
|
1118 |
-
#: admin/includes/tab-settings.php:
|
1119 |
msgid "Geolocation API settings"
|
1120 |
msgstr "位置情報APIの設定"
|
1121 |
|
1122 |
-
#: admin/includes/tab-settings.php:
|
1123 |
msgid ""
|
1124 |
"<dfn title=\"Cache and local database are scanned at the top priority.\">API "
|
1125 |
"selection and key settings</dfn>"
|
@@ -1127,11 +1200,11 @@ msgstr ""
|
|
1127 |
"<dfn title=\"キャッシュとローカルのデータベースが最優先で検索されます。\">API"
|
1128 |
"の選択とキーの設定</dfn>"
|
1129 |
|
1130 |
-
#: admin/includes/tab-settings.php:
|
1131 |
msgid "Timeout for network API [sec]"
|
1132 |
msgstr "ネットワークAPIのタイムアウト[秒]"
|
1133 |
|
1134 |
-
#: admin/includes/tab-settings.php:
|
1135 |
#, php-format
|
1136 |
msgid ""
|
1137 |
"Can not find geolocation API libraries in <code>%s</code>. It seems to have "
|
@@ -1156,76 +1229,89 @@ msgstr ""
|
|
1156 |
"Geo Block\">FAQ</a> を参照し、適切な書き込み権限と共に <code>ip-geo-api</"
|
1157 |
"code> をインストールしてください。"
|
1158 |
|
1159 |
-
#: admin/includes/tab-settings.php:
|
1160 |
msgid "Local database settings"
|
1161 |
msgstr "ローカル・データベースの設定"
|
1162 |
|
1163 |
-
#: admin/includes/tab-settings.php:
|
1164 |
msgid "database"
|
1165 |
msgstr "ファイル"
|
1166 |
|
1167 |
-
#: admin/includes/tab-settings.php:
|
1168 |
#, php-format
|
1169 |
msgid "Last update: %s"
|
1170 |
msgstr "最終更新:%s"
|
1171 |
|
1172 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1173 |
msgid "Auto updating (once a month)"
|
1174 |
msgstr "自動更新(月1回)"
|
1175 |
|
1176 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
1177 |
msgid "Download database"
|
1178 |
msgstr "データベースのダウンロード"
|
1179 |
|
1180 |
-
#: admin/includes/tab-settings.php:
|
1181 |
msgid "Download now"
|
1182 |
msgstr "今すぐダウンロード"
|
1183 |
|
1184 |
-
#: admin/includes/tab-settings.php:
|
1185 |
msgid "Statistics and Logs settings"
|
1186 |
msgstr "統計とログの設定"
|
1187 |
|
1188 |
-
#: admin/includes/tab-settings.php:
|
1189 |
msgid "Record “Statistics”"
|
1190 |
msgstr "検証の統計を記録"
|
1191 |
|
1192 |
-
#: admin/includes/tab-settings.php:
|
1193 |
msgid "Maximum period for “Statistics” (days)"
|
1194 |
msgstr "記録する統計の最大期間(日)"
|
1195 |
|
1196 |
-
#: admin/includes/tab-settings.php:
|
1197 |
msgid "Record “Logs”"
|
1198 |
msgstr "検証のログを記録"
|
1199 |
|
1200 |
-
#: admin/includes/tab-settings.php:
|
1201 |
msgid "When requests blocked"
|
1202 |
msgstr "遮断時に記録"
|
1203 |
|
1204 |
-
#: admin/includes/tab-settings.php:
|
1205 |
msgid "When requests passed"
|
1206 |
msgstr "通過時に記録"
|
1207 |
|
1208 |
-
#: admin/includes/tab-settings.php:
|
1209 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1210 |
msgstr "遮断時または遮断対象国の通過時に記録"
|
1211 |
|
1212 |
-
#: admin/includes/tab-settings.php:
|
1213 |
msgid "Unauthenticated visitor"
|
1214 |
msgstr "未認証の訪問者を記録"
|
1215 |
|
1216 |
-
#: admin/includes/tab-settings.php:
|
1217 |
msgid "Authenticated user"
|
1218 |
msgstr "認証済のユーザーを記録"
|
1219 |
|
1220 |
-
#: admin/includes/tab-settings.php:
|
1221 |
msgid "All the validation"
|
1222 |
msgstr "すべての検証を記録"
|
1223 |
|
1224 |
-
#: admin/includes/tab-settings.php:
|
1225 |
msgid "Maximum entries of “Logs”"
|
1226 |
msgstr "記録するログの最大エントリ数"
|
1227 |
|
1228 |
-
#: admin/includes/tab-settings.php:
|
1229 |
msgid ""
|
1230 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
|
1231 |
"recorded with their values in “Logs”</dfn>"
|
@@ -1233,11 +1319,11 @@ msgstr ""
|
|
1233 |
"<dfn title=\"例)action, comment, log, pwd, FILES\">ログに記録する際に内容を展"
|
1234 |
"開する$_POSTのキー</dfn>"
|
1235 |
|
1236 |
-
#: admin/includes/tab-settings.php:
|
1237 |
msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
|
1238 |
msgstr "<dfn title=\"例)123.456.789.***\">IPアドレスを匿名化する</dfn>"
|
1239 |
|
1240 |
-
#: admin/includes/tab-settings.php:
|
1241 |
msgid ""
|
1242 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1243 |
"“Live update”</dfn>"
|
@@ -1245,19 +1331,19 @@ msgstr ""
|
|
1245 |
"<dfn title=\"SQLiteデータベース・ソースを選択します。\">ライブアップデート用"
|
1246 |
"SQLiteデータベース・ソースの選択</dfn>"
|
1247 |
|
1248 |
-
#: admin/includes/tab-settings.php:
|
1249 |
msgid "Ordinary file"
|
1250 |
msgstr "通常のファイル"
|
1251 |
|
1252 |
-
#: admin/includes/tab-settings.php:
|
1253 |
msgid "In-Memory"
|
1254 |
msgstr "イン・メモリ"
|
1255 |
|
1256 |
-
#: admin/includes/tab-settings.php:
|
1257 |
msgid "PDO_SQLITE driver not available"
|
1258 |
msgstr "PDO_SQLITEドライバが利用出来ません。"
|
1259 |
|
1260 |
-
#: admin/includes/tab-settings.php:
|
1261 |
msgid ""
|
1262 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1263 |
"without conflict with other plugins."
|
@@ -1265,7 +1351,7 @@ msgstr ""
|
|
1265 |
"数十ミリ秒のオーバーヘッドが生じますが、他のプラグインと競合することなく、安全"
|
1266 |
"に使用できます。"
|
1267 |
|
1268 |
-
#: admin/includes/tab-settings.php:
|
1269 |
msgid ""
|
1270 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1271 |
"with other plugins using this method."
|
@@ -1273,19 +1359,19 @@ msgstr ""
|
|
1273 |
"数ミリ秒のオーバーヘッドが生じます。同手法を用いている他のプラグインと競合する"
|
1274 |
"可能性があります。"
|
1275 |
|
1276 |
-
#: admin/includes/tab-settings.php:
|
1277 |
msgid "Reset database source of “Live update”"
|
1278 |
msgstr "ライブアップデートのデータソースをリセットする"
|
1279 |
|
1280 |
-
#: admin/includes/tab-settings.php:
|
1281 |
msgid "Reset now"
|
1282 |
msgstr "今すぐリセット"
|
1283 |
|
1284 |
-
#: admin/includes/tab-settings.php:
|
1285 |
msgid "IP address cache settings"
|
1286 |
msgstr "IPアドレスのキャッシュ設定"
|
1287 |
|
1288 |
-
#: admin/includes/tab-settings.php:
|
1289 |
#, php-format
|
1290 |
msgid ""
|
1291 |
"<dfn title=\"If user authentication fails consecutively %d times, subsequent "
|
@@ -1295,43 +1381,43 @@ msgstr ""
|
|
1295 |
"<dfn title=\"ユーザ認証が連続%d回失敗した場合も、以降のログインがこの期間だけ"
|
1296 |
"(ガベージコレクション周期を含む)禁止されます。\">有効時間 [sec]</dfn>"
|
1297 |
|
1298 |
-
#: admin/includes/tab-settings.php:
|
1299 |
msgid "Garbage collection period [sec]"
|
1300 |
msgstr "ガベージコレクション周期 [秒]"
|
1301 |
|
1302 |
-
#: admin/includes/tab-settings.php:
|
1303 |
msgid "Number of entries to be displayed in cache"
|
1304 |
msgstr "[キャッシュ中のIPアドレス]に表示する最大数"
|
1305 |
|
1306 |
-
#: admin/includes/tab-settings.php:
|
1307 |
msgid "Submission settings"
|
1308 |
msgstr "投稿時の設定"
|
1309 |
|
1310 |
-
#: admin/includes/tab-settings.php:
|
1311 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
1312 |
msgstr "全体が<p>タグで囲われます。使用可能タグ:"
|
1313 |
|
1314 |
-
#: admin/includes/tab-settings.php:
|
1315 |
msgid "Message on comment form"
|
1316 |
msgstr "投稿フォーム上のメッセージ"
|
1317 |
|
1318 |
-
#: admin/includes/tab-settings.php:
|
1319 |
msgid "None"
|
1320 |
msgstr "なし"
|
1321 |
|
1322 |
-
#: admin/includes/tab-settings.php:
|
1323 |
msgid "Top"
|
1324 |
msgstr "上部"
|
1325 |
|
1326 |
-
#: admin/includes/tab-settings.php:
|
1327 |
msgid "Bottom"
|
1328 |
msgstr "下部"
|
1329 |
|
1330 |
-
#: admin/includes/tab-settings.php:
|
1331 |
msgid "Plugin settings"
|
1332 |
msgstr "プラグインの設定"
|
1333 |
|
1334 |
-
#: admin/includes/tab-settings.php:
|
1335 |
msgid ""
|
1336 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1337 |
"settings</dfn>"
|
@@ -1339,11 +1425,11 @@ msgstr ""
|
|
1339 |
"<dfn title=\"全ての設定をネットワーク全体で同期させます。\">ネットワーク一括管"
|
1340 |
"理</dfn>"
|
1341 |
|
1342 |
-
#: admin/includes/tab-settings.php:
|
1343 |
msgid "Remove all settings at uninstallation"
|
1344 |
msgstr "アンインストール時に全設定を削除"
|
1345 |
|
1346 |
-
#: admin/includes/tab-settings.php:
|
1347 |
msgid ""
|
1348 |
"<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
|
1349 |
"dfn>"
|
@@ -1351,7 +1437,7 @@ msgstr ""
|
|
1351 |
"<dfn title=\"Google Maps JavaScript API に有効なキー\">Google Maps API キー</"
|
1352 |
"dfn>"
|
1353 |
|
1354 |
-
#: admin/includes/tab-settings.php:
|
1355 |
msgid ""
|
1356 |
"You need to click the “Save Changes” button for imported "
|
1357 |
"settings to take effect."
|
@@ -1359,37 +1445,37 @@ msgstr ""
|
|
1359 |
"インポートされた設定を有効にするには、[変更を保存]ボタンをクリックする必要が"
|
1360 |
"あります。"
|
1361 |
|
1362 |
-
#: admin/includes/tab-settings.php:
|
1363 |
msgid "Export / Import settings"
|
1364 |
msgstr "設定のエクスポート、インポート"
|
1365 |
|
1366 |
-
#: admin/includes/tab-settings.php:
|
1367 |
msgid "Export settings"
|
1368 |
msgstr "エクスポート"
|
1369 |
|
1370 |
-
#: admin/includes/tab-settings.php:
|
1371 |
msgid "Import from the local file"
|
1372 |
msgstr "ローカル・ファイルからインポートします"
|
1373 |
|
1374 |
-
#: admin/includes/tab-settings.php:
|
1375 |
msgid "Import settings"
|
1376 |
msgstr "インポート"
|
1377 |
|
1378 |
-
#: admin/includes/tab-settings.php:
|
1379 |
msgid "Import pre-defined settings"
|
1380 |
msgstr "プリセットのインポート"
|
1381 |
|
1382 |
-
#: admin/includes/tab-settings.php:
|
1383 |
msgid ""
|
1384 |
"Import the default settings to revert to the “Right after "
|
1385 |
"installing” state"
|
1386 |
msgstr "インストール直後の状態に戻すための設定値をインポートします"
|
1387 |
|
1388 |
-
#: admin/includes/tab-settings.php:
|
1389 |
msgid "Default settings"
|
1390 |
msgstr "初期設定"
|
1391 |
|
1392 |
-
#: admin/includes/tab-settings.php:
|
1393 |
msgid ""
|
1394 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1395 |
"for the “Back-end target settings”"
|
@@ -1397,27 +1483,27 @@ msgstr ""
|
|
1397 |
"「ゼロデイ攻撃の遮断」など、主に[バックエンドの設定]の推奨設定をインポートし"
|
1398 |
"ます。"
|
1399 |
|
1400 |
-
#: admin/includes/tab-settings.php:
|
1401 |
msgid "Best for Back-end"
|
1402 |
msgstr "バックエンドの推奨設定"
|
1403 |
|
1404 |
-
#: admin/includes/tab-settings.php:
|
1405 |
-
msgid "Delete DB
|
1406 |
-
msgstr "
|
1407 |
|
1408 |
-
#: admin/includes/tab-settings.php:
|
1409 |
msgid "Delete now"
|
1410 |
msgstr "今すぐ削除"
|
1411 |
|
1412 |
-
#: admin/includes/tab-settings.php:
|
1413 |
-
msgid "Create DB
|
1414 |
-
msgstr "
|
1415 |
|
1416 |
-
#: admin/includes/tab-settings.php:
|
1417 |
msgid "Create now"
|
1418 |
msgstr "今すぐ作成"
|
1419 |
|
1420 |
-
#: admin/includes/tab-settings.php:
|
1421 |
msgid ""
|
1422 |
"<dfn title=\"When an unexpected blocking has occurred, please press the "
|
1423 |
"button to find the blocked request in the dumped information which may help "
|
@@ -1431,15 +1517,15 @@ msgstr ""
|
|
1431 |
"ip-geo-block\" title=\"WordPress › Support » IP Geo Block\">サポー"
|
1432 |
"ト・フォーラム</a> ]"
|
1433 |
|
1434 |
-
#: admin/includes/tab-settings.php:
|
1435 |
msgid "Please copy & paste when submitting your issue to support forum."
|
1436 |
msgstr "フォーラムに問題を投稿する際、コピーして張り付けてください。"
|
1437 |
|
1438 |
-
#: admin/includes/tab-settings.php:
|
1439 |
msgid "Show information"
|
1440 |
msgstr "情報を表示"
|
1441 |
|
1442 |
-
#: admin/includes/tab-settings.php:
|
1443 |
msgid ""
|
1444 |
"To enhance the protection ability, please refer to “<a rel=\"noreferrer"
|
1445 |
"\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
|
@@ -1451,7 +1537,7 @@ msgstr ""
|
|
1451 |
"\" title=\"The best practice for target settings | IP Geo Block\">The best "
|
1452 |
"practice fortarget settings</a>“ を参照してください。"
|
1453 |
|
1454 |
-
#: admin/includes/tab-settings.php:
|
1455 |
msgid ""
|
1456 |
"If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
|
1457 |
"\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
|
@@ -1465,7 +1551,7 @@ msgstr ""
|
|
1465 |
"com/codex/#faq\" title=\"Codex | IP Geo Block\">Codex</a> の FAQ を参照してく"
|
1466 |
"ださい。"
|
1467 |
|
1468 |
-
#: admin/includes/tab-settings.php:
|
1469 |
msgid ""
|
1470 |
"While Maxmind and IP2Location will fetch the local database, others will "
|
1471 |
"pass an IP address to the APIs via HTTP."
|
@@ -1473,12 +1559,12 @@ msgstr ""
|
|
1473 |
"MaxmindとIP2Locationはローカルのデータベースを検索しますが、他はHTTPを介して"
|
1474 |
"APIにIPアドレスを渡します。"
|
1475 |
|
1476 |
-
#: admin/includes/tab-settings.php:
|
1477 |
msgid ""
|
1478 |
"Please select the appropriate APIs to fit the privacy law in your country."
|
1479 |
msgstr "自国のプライバシー関連法規に合わせ、適切なAPIを選択して下さい。"
|
1480 |
|
1481 |
-
#: admin/includes/tab-settings.php:
|
1482 |
#, php-format
|
1483 |
msgid ""
|
1484 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
@@ -1488,7 +1574,7 @@ msgstr ""
|
|
1488 |
"ジョン 5.4.0 以上と %sPECL phar 2.0.0 以上%sが必要"
|
1489 |
"です。"
|
1490 |
|
1491 |
-
#: admin/includes/tab-settings.php:
|
1492 |
msgid ""
|
1493 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1494 |
"ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
|
@@ -1500,7 +1586,7 @@ msgstr ""
|
|
1500 |
"end\" title=\"Codex | IP Geo Block\">Blocking on front-end</a>” を参照し"
|
1501 |
"てください。"
|
1502 |
|
1503 |
-
#: admin/includes/tab-settings.php:
|
1504 |
msgid ""
|
1505 |
"If you find any issues or have something to suggest, please feel free to "
|
1506 |
"open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
|
@@ -1512,7 +1598,7 @@ msgstr ""
|
|
1512 |
"› Support » IP Geo Block\">サポートフォーラム</a> に投稿をお願いし"
|
1513 |
"ます。"
|
1514 |
|
1515 |
-
#: admin/includes/tab-settings.php:
|
1516 |
msgid ""
|
1517 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1518 |
"ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
|
@@ -1613,7 +1699,7 @@ msgid ""
|
|
1613 |
"statistics."
|
1614 |
msgstr "検証の統計を記録し分析するためには、適切な条件を設定して下さい。"
|
1615 |
|
1616 |
-
#: classes/class-ip-geo-block-apis.php:
|
1617 |
msgid ""
|
1618 |
"You need to select at least one IP geolocation service. Otherwise "
|
1619 |
"<strong>you'll be blocked</strong> after the cache expires."
|
@@ -1621,17 +1707,17 @@ msgstr ""
|
|
1621 |
"少なくとも1つ以上の位置情報サービスを選択して下さい。未選択の場合、キャッシュ"
|
1622 |
"の有効期限切れと共にロックアウトされます。"
|
1623 |
|
1624 |
-
#: classes/class-ip-geo-block-cron.php:
|
1625 |
#, php-format
|
1626 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1627 |
msgstr ""
|
1628 |
"<code>%s</code> をロック出来ません。パーミッションをチェックして下さい。"
|
1629 |
|
1630 |
-
#: classes/class-ip-geo-block-cron.php:
|
1631 |
msgid "Your database file is up-to-date."
|
1632 |
msgstr "データベース・ファイルは最新です。"
|
1633 |
|
1634 |
-
#: classes/class-ip-geo-block-cron.php:
|
1635 |
msgid "gz or zip is not supported on your system."
|
1636 |
msgstr "gz または zip がサポートされていません。"
|
1637 |
|
@@ -1662,7 +1748,7 @@ msgstr ""
|
|
1662 |
"php#WordPress_Upgrade_Constants\" title=\"Editing wp-config.php « "
|
1663 |
"WordPress Codex\">このドキュメント</a>を参照してください。"
|
1664 |
|
1665 |
-
#: classes/class-ip-geo-block-logs.php:
|
1666 |
#, php-format
|
1667 |
msgid ""
|
1668 |
"Creating a DB table %s had failed. Once de-activate this plugin, and then "
|
@@ -1671,11 +1757,15 @@ msgstr ""
|
|
1671 |
"%s 用のテーブルが作成されていません。一旦このプラグインを無効化し、再度有効化"
|
1672 |
"して下さい。"
|
1673 |
|
1674 |
-
#: classes/class-ip-geo-block-logs.php:
|
1675 |
#, php-format
|
1676 |
msgid "The user %s (user ID: %d) is in use."
|
1677 |
msgstr "ユーザー %s(ユーザーID:%d)が使用中です。"
|
1678 |
|
|
|
|
|
|
|
|
|
1679 |
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:151
|
1680 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:144
|
1681 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: IP Geo Block 3.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
+
"POT-Creation-Date: 2018-03-31 12:50+0900\n"
|
8 |
+
"PO-Revision-Date: 2018-03-31 12:51+0900\n"
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
28 |
"自国以外から投稿されるスパム、ログインフォーム、さらにゼロデイ攻撃を含む管理領"
|
29 |
"域への悪意あるアクセスからサイトを守ります。"
|
30 |
|
31 |
+
#: admin/class-ip-geo-block-admin.php:268
|
32 |
msgid "Import settings ?"
|
33 |
msgstr "設定をインポートしますか?"
|
34 |
|
35 |
+
#: admin/class-ip-geo-block-admin.php:269
|
36 |
msgid "Create table ?"
|
37 |
msgstr "テーブルを作成しますか?"
|
38 |
|
39 |
+
#: admin/class-ip-geo-block-admin.php:270
|
40 |
msgid "Delete table ?"
|
41 |
msgstr "テーブルを削除しますか?"
|
42 |
|
43 |
+
#: admin/class-ip-geo-block-admin.php:271
|
44 |
msgid "Clear statistics ?"
|
45 |
msgstr "統計をクリアしますか?"
|
46 |
|
47 |
+
#: admin/class-ip-geo-block-admin.php:272
|
48 |
msgid "Clear cache ?"
|
49 |
msgstr "キャッシュをクリアしますか?"
|
50 |
|
51 |
+
#: admin/class-ip-geo-block-admin.php:273
|
52 |
msgid "Clear logs ?"
|
53 |
msgstr "ログをクリアしますか?"
|
54 |
|
55 |
+
#: admin/class-ip-geo-block-admin.php:274
|
56 |
msgid "ajax for logged-in user"
|
57 |
msgstr "認証済ユーザー用 ajax"
|
58 |
|
59 |
+
#: admin/class-ip-geo-block-admin.php:275
|
60 |
msgid "ajax for non logged-in user"
|
61 |
msgstr "未認証ユーザー用 ajax"
|
62 |
|
63 |
+
#: admin/class-ip-geo-block-admin.php:276
|
64 |
#, php-format
|
65 |
msgid "[Found: %d]"
|
66 |
msgstr "[見つかった数:%d]"
|
67 |
|
68 |
+
#: admin/class-ip-geo-block-admin.php:277
|
69 |
#, php-format
|
70 |
msgid "Find and verify `%s` on “Logs” tab."
|
71 |
msgstr "ログから `%s` を検索し、検証して下さい。"
|
72 |
|
73 |
+
#: admin/class-ip-geo-block-admin.php:278
|
74 |
msgid "This feature is available with HTML5 compliant browsers."
|
75 |
msgstr "HTML5準拠のブラウザでのみ機能します。"
|
76 |
|
77 |
+
#: admin/class-ip-geo-block-admin.php:279
|
78 |
msgid "The selected row cannot be found in the visible area."
|
79 |
msgstr "可視領域に選択された行が見つかりません。"
|
80 |
|
81 |
+
#: admin/class-ip-geo-block-admin.php:280
|
82 |
+
#: admin/class-ip-geo-block-admin.php:1438
|
83 |
#, php-format
|
84 |
msgid "An error occurred while executing the ajax command `%s`."
|
85 |
msgstr "Ajaxコマンド `%s` の実行中にエラーが発生しました。"
|
86 |
|
87 |
+
#: admin/class-ip-geo-block-admin.php:284
|
88 |
msgid "No data available in table"
|
89 |
msgstr "テーブルにデータがありません"
|
90 |
|
91 |
+
#: admin/class-ip-geo-block-admin.php:285
|
92 |
msgid "No matching records found"
|
93 |
msgstr "一致するレコードがありません"
|
94 |
|
95 |
+
#: admin/class-ip-geo-block-admin.php:286 admin/includes/tab-geolocation.php:71
|
96 |
msgid "IP address"
|
97 |
msgstr "IPアドレス"
|
98 |
|
99 |
+
#: admin/class-ip-geo-block-admin.php:287
|
100 |
msgid "Code"
|
101 |
msgstr "国"
|
102 |
|
103 |
+
#: admin/class-ip-geo-block-admin.php:288
|
104 |
msgid "ASN"
|
105 |
msgstr "AS番号"
|
106 |
|
107 |
+
#: admin/class-ip-geo-block-admin.php:289
|
108 |
msgid "Host name"
|
109 |
msgstr "ホスト名"
|
110 |
|
111 |
+
#: admin/class-ip-geo-block-admin.php:290
|
112 |
msgid "Target"
|
113 |
msgstr "検証対象"
|
114 |
|
115 |
+
#: admin/class-ip-geo-block-admin.php:291
|
116 |
msgid "Failure / Total"
|
117 |
msgstr "ログイン失敗/総計"
|
118 |
|
119 |
+
#: admin/class-ip-geo-block-admin.php:292
|
120 |
msgid "Elapsed[sec]"
|
121 |
msgstr "経過 [秒]"
|
122 |
|
123 |
+
#: admin/class-ip-geo-block-admin.php:293
|
124 |
msgid "Time"
|
125 |
msgstr "日時"
|
126 |
|
127 |
+
#: admin/class-ip-geo-block-admin.php:294
|
128 |
msgid "Result"
|
129 |
msgstr "検証結果"
|
130 |
|
131 |
+
#: admin/class-ip-geo-block-admin.php:295
|
132 |
msgid "Request"
|
133 |
msgstr "リクエスト"
|
134 |
|
135 |
+
#: admin/class-ip-geo-block-admin.php:296
|
136 |
msgid "User agent"
|
137 |
msgstr "ユーザー・エージェント"
|
138 |
|
139 |
+
#: admin/class-ip-geo-block-admin.php:297
|
140 |
msgid "HTTP headers"
|
141 |
msgstr "HTTP ヘッダー"
|
142 |
|
143 |
+
#: admin/class-ip-geo-block-admin.php:298
|
144 |
msgid "$_POST data"
|
145 |
msgstr "$_POST データ"
|
146 |
|
147 |
+
#: admin/class-ip-geo-block-admin.php:324
|
148 |
msgid "Contribute on GitHub"
|
149 |
msgstr "開発に参加"
|
150 |
|
151 |
+
#: admin/class-ip-geo-block-admin.php:338
|
152 |
+
#: admin/class-ip-geo-block-admin.php:446
|
153 |
+
#: admin/class-ip-geo-block-admin.php:664
|
154 |
+
#: admin/class-ip-geo-block-admin.php:683
|
155 |
msgid "Settings"
|
156 |
msgstr "設定"
|
157 |
|
|
|
158 |
#: admin/class-ip-geo-block-admin.php:425
|
159 |
+
#: admin/class-ip-geo-block-admin.php:426
|
160 |
#: admin/class-ip-geo-block-admin.php:436
|
161 |
+
#: admin/class-ip-geo-block-admin.php:437
|
162 |
+
#: admin/class-ip-geo-block-admin.php:445
|
163 |
+
#: admin/class-ip-geo-block-admin.php:453
|
164 |
msgid "IP Geo Block"
|
165 |
msgstr "IP Geo Block"
|
166 |
|
167 |
+
#: admin/class-ip-geo-block-admin.php:454
|
168 |
+
#: admin/class-ip-geo-block-admin.php:668
|
169 |
+
#: admin/class-ip-geo-block-admin.php:684
|
170 |
msgid "Site List"
|
171 |
msgstr "サイト一覧"
|
172 |
|
173 |
+
#: admin/class-ip-geo-block-admin.php:483
|
174 |
msgid "You need WordPress 3.7+."
|
175 |
msgstr "WordPress 3.7 以上が必要です。"
|
176 |
|
177 |
+
#: admin/class-ip-geo-block-admin.php:489
|
178 |
#, php-format
|
179 |
msgid ""
|
180 |
"Now downloading geolocation databases in background. After a little while, "
|
185 |
"た後、あなたの国コードと[<strong>マッチング規則</strong>]を[<a href=\"%s\">"
|
186 |
"検証ルールの設定</a>]で確認して下さい。"
|
187 |
|
188 |
+
#: admin/class-ip-geo-block-admin.php:495
|
189 |
#, php-format
|
190 |
msgid ""
|
191 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
194 |
"[<strong>マッチング規則</strong>]が正しく設定されていません。[<a href=\"%s"
|
195 |
"\">検証ルールの設定</a>]を確認して下さい。"
|
196 |
|
197 |
+
#: admin/class-ip-geo-block-admin.php:504
|
198 |
msgid "Local database and matching rule have been updated."
|
199 |
msgstr "ローカル・データベースとマッチング規則を更新しました。"
|
200 |
|
201 |
+
#: admin/class-ip-geo-block-admin.php:515
|
202 |
msgid ""
|
203 |
"Once you logout, you will be unable to login again because the number of "
|
204 |
"login attempts reaches the limit."
|
206 |
"あなたのIPアドレスのログイン試行可能回数がリミットに達したため、ログアウトする"
|
207 |
"と再びログインする事が出来なくなります。"
|
208 |
|
209 |
+
#: admin/class-ip-geo-block-admin.php:517
|
210 |
#, php-format
|
211 |
msgid ""
|
212 |
"Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
|
215 |
"<a href=\"%s\">[統計]タブ</a>の[<strong>キャッシュのクリア</strong>]を実行"
|
216 |
"し、ロックアウトを回避してください。"
|
217 |
|
218 |
+
#: admin/class-ip-geo-block-admin.php:527
|
219 |
msgid ""
|
220 |
"Once you logout, you will be unable to login again because your country code "
|
221 |
"or IP address is in the blacklist."
|
223 |
"あなたの国コードまたはIPアドレスがブラックリストに含まれているため、ログアウト"
|
224 |
"すると再びログインする事が出来なくなります。"
|
225 |
|
226 |
+
#: admin/class-ip-geo-block-admin.php:528
|
227 |
msgid ""
|
228 |
"Once you logout, you will be unable to login again because your country code "
|
229 |
"or IP address is not in the whitelist."
|
231 |
"あなたの国コードまたはIPアドレスがホワイトリストに含まれていないため、ログアウ"
|
232 |
"トすると再びログインする事が出来なくなります。"
|
233 |
|
234 |
+
#: admin/class-ip-geo-block-admin.php:532
|
235 |
#, php-format
|
236 |
msgid "Please check your “%sValidation rule settings%s”."
|
237 |
msgstr "[%s検証ルールの設定%s]を確認して下さい。"
|
238 |
|
239 |
+
#: admin/class-ip-geo-block-admin.php:536
|
240 |
#, php-format
|
241 |
msgid ""
|
242 |
"Please confirm your local geolocation databases at “%sLocal database "
|
246 |
"[%sローカル・データベースの設定%s]で位置情報データベースを確認し、[%sキャッ"
|
247 |
"シュの統計%s]でキャッシュされているあなたのIPアドレスを削除して下さい。"
|
248 |
|
249 |
+
#: admin/class-ip-geo-block-admin.php:549
|
250 |
msgid ""
|
251 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
252 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
256 |
"されていますが、<strong>IP Geo Allow</strong> と互換性がありません。「“"
|
257 |
"init” アクション・フック」を選択してください。"
|
258 |
|
259 |
+
#: admin/class-ip-geo-block-admin.php:665
|
260 |
msgid "Statistics"
|
261 |
msgstr "統計"
|
262 |
|
263 |
+
#: admin/class-ip-geo-block-admin.php:666
|
264 |
msgid "Logs"
|
265 |
msgstr "ログ"
|
266 |
|
267 |
+
#: admin/class-ip-geo-block-admin.php:667
|
268 |
msgid "Search"
|
269 |
msgstr "検索"
|
270 |
|
271 |
+
#: admin/class-ip-geo-block-admin.php:669
|
272 |
msgid "Attribution"
|
273 |
msgstr "リンク"
|
274 |
|
275 |
+
#: admin/class-ip-geo-block-admin.php:697
|
276 |
msgid "Network wide"
|
277 |
msgstr "ネットワーク一括管理"
|
278 |
|
279 |
+
#: admin/class-ip-geo-block-admin.php:710
|
280 |
msgid "Toggle all"
|
281 |
msgstr "全てを開閉"
|
282 |
|
283 |
+
#: admin/class-ip-geo-block-admin.php:713
|
284 |
msgid ""
|
285 |
"Independent of “Statistics and Logs settings”, you can see all "
|
286 |
"the requests validated by this plugin in almost real time."
|
288 |
"[統計とログの設定]にかかわらず、このプラグインによる検証結果のすべてを、ほぼ"
|
289 |
"リアルタイムに表示します。"
|
290 |
|
291 |
+
#: admin/class-ip-geo-block-admin.php:713 admin/includes/tab-accesslog.php:39
|
292 |
msgid "Live update"
|
293 |
msgstr "ライブアップデート"
|
294 |
|
295 |
+
#: admin/class-ip-geo-block-admin.php:717
|
296 |
msgid "Open a new window on clicking the link in the chart."
|
297 |
msgstr "チャート内のリンクをクリックすると、新しいウィンドウが開きます。"
|
298 |
|
299 |
+
#: admin/class-ip-geo-block-admin.php:717
|
300 |
msgid "Open a new window"
|
301 |
msgstr "別窓で開く"
|
302 |
|
303 |
+
#: admin/class-ip-geo-block-admin.php:740
|
304 |
msgid "Thanks for providing these great services for free."
|
305 |
msgstr "これらのすばらしいサービスの提供元に、敬意と感謝の意を表します!"
|
306 |
|
307 |
+
#: admin/class-ip-geo-block-admin.php:741
|
308 |
msgid ""
|
309 |
"(Most browsers will redirect you to each site <a href=\"http://www."
|
310 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
314 |
"\" title=\"Referer Checker\">参照元を残さずにリンク先にリダイレクトできます</"
|
315 |
"a>。)"
|
316 |
|
317 |
+
#: admin/class-ip-geo-block-admin.php:746
|
318 |
msgid "Back to top"
|
319 |
msgstr "トップに戻る"
|
320 |
|
321 |
+
#: admin/class-ip-geo-block-admin.php:842
|
322 |
msgid "Enable"
|
323 |
msgstr "有効"
|
324 |
|
325 |
+
#: admin/class-ip-geo-block-admin.php:857
|
326 |
msgid "Select one"
|
327 |
msgstr "何れかを選択"
|
328 |
|
329 |
+
#: admin/class-ip-geo-block-admin.php:1232
|
330 |
+
msgid "You do not have sufficient permissions to access this page."
|
331 |
+
msgstr "このページにアクセスするための十分な権限がありません。"
|
332 |
+
|
333 |
+
#: admin/class-ip-geo-block-admin.php:1259
|
334 |
#: admin/includes/class-admin-rewrite.php:194
|
335 |
+
#: classes/class-ip-geo-block-cron.php:212
|
336 |
+
#: classes/class-ip-geo-block-cron.php:316
|
337 |
+
#: classes/class-ip-geo-block-cron.php:390
|
338 |
+
#: classes/class-ip-geo-block-opts.php:438
|
339 |
#, php-format
|
340 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
341 |
msgstr "<code>%s</code> に書き込めません。パーミッションをチェックして下さい。"
|
342 |
|
343 |
+
#: admin/class-ip-geo-block-admin.php:1289
|
344 |
msgid "Settings saved."
|
345 |
msgstr "設定を保存しました。"
|
346 |
|
360 |
msgstr "%sは誤ったフォーマットです。該当行を削除し、再実行してください。"
|
361 |
|
362 |
#: admin/includes/class-admin-rewrite.php:168
|
363 |
+
#: classes/class-ip-geo-block-cron.php:207
|
364 |
+
#: classes/class-ip-geo-block-cron.php:385
|
365 |
#, php-format
|
366 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
367 |
msgstr "<code>%s</code> が読めません。パーミッションをチェックして下さい。"
|
381 |
msgid "Validation logs"
|
382 |
msgstr "検証のログ"
|
383 |
|
384 |
+
#: admin/includes/tab-accesslog.php:19 admin/includes/tab-settings.php:764
|
385 |
+
#: admin/includes/tab-settings.php:1146
|
386 |
+
msgid "Help"
|
387 |
+
msgstr "ヘルプ"
|
388 |
+
|
389 |
+
#: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:456
|
390 |
msgid "Comment post"
|
391 |
msgstr "コメント投稿"
|
392 |
|
393 |
+
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:457
|
394 |
msgid "XML-RPC"
|
395 |
msgstr "XML-RPC"
|
396 |
|
397 |
+
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:458
|
398 |
msgid "Login form"
|
399 |
msgstr "ログイン・フォーム"
|
400 |
|
401 |
+
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:459
|
402 |
msgid "Admin area"
|
403 |
msgstr "管理領域"
|
404 |
|
405 |
+
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:461
|
406 |
msgid "Public facing pages"
|
407 |
msgstr "一般公開ページ"
|
408 |
|
460 |
msgid "Export logs"
|
461 |
msgstr "ログをエクスポート"
|
462 |
|
463 |
+
#: admin/includes/tab-accesslog.php:152 admin/includes/tab-settings.php:1563
|
464 |
msgid "Export to the local file"
|
465 |
msgstr "ローカル・ファイルへエクスポートする"
|
466 |
|
573 |
#: admin/includes/tab-settings.php:109
|
574 |
msgid ""
|
575 |
"Please select either “Whitelist” or “Blacklist”."
|
576 |
+
msgstr ""
|
577 |
+
"「ホワイトリスト」または「ブラックリスト」のどちらかを選択してください。"
|
578 |
|
579 |
#: admin/includes/tab-settings.php:110
|
580 |
msgid ""
|
635 |
"トに悪意のないことを確認して下さい。"
|
636 |
|
637 |
#: admin/includes/tab-settings.php:120
|
638 |
+
msgid "Open CIDR calculator for IPv4 / IPv6."
|
639 |
+
msgstr "IPv4/IPv6用CIDR変換プログラムを開きます。"
|
640 |
|
641 |
+
#: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:795
|
642 |
msgid "Matching rule"
|
643 |
msgstr "マッチング規則"
|
644 |
|
683 |
"サーバー)、AS32934(Facebook)\">国コードに優先して検証するIPアドレスのホワイ"
|
684 |
"トリスト</dfn>"
|
685 |
|
686 |
+
#: admin/includes/tab-settings.php:228
|
687 |
msgid ""
|
688 |
"<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
|
689 |
"\">Blacklist of extra IP addresses prior to country code</dfn>"
|
691 |
"<dfn title=\"サーバー・レベルのアクセス制御の使用をお勧めします(例:."
|
692 |
"htaccess)。\">国コードに優先して検証するIPアドレスのブラックリスト</dfn>"
|
693 |
|
694 |
+
#: admin/includes/tab-settings.php:251
|
695 |
msgid ""
|
696 |
"<dfn title=\"If your server is placed behind the proxy server or the load "
|
697 |
"balancing server, you need to put the appropriate key such as “"
|
705 |
"を指定してください。\">IPアドレスを追加抽出する $_SERVER のキー"
|
706 |
"</dfn>"
|
707 |
|
708 |
+
#: admin/includes/tab-settings.php:270
|
709 |
msgid ""
|
710 |
"<dfn title=\"It validates malicious signatures independently of “Block "
|
711 |
"by country” and “Prevent Zero-day Exploit” for the target "
|
722 |
"block-decode\" title=\"文字化けした場合、クリックして復元して下さ"
|
723 |
"い。\"><span></span></a>)</nobr>"
|
724 |
|
725 |
+
#: admin/includes/tab-settings.php:284
|
726 |
msgid ""
|
727 |
"<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
|
728 |
msgstr ""
|
729 |
"<dfn title=\"許可する MIME タイプを指定します。\">許可する"
|
730 |
" MIME タイプのホワイトリスト</dfn>"
|
731 |
|
732 |
+
#: admin/includes/tab-settings.php:295
|
733 |
msgid ""
|
734 |
"<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
|
735 |
"extensions</dfn>"
|
737 |
"<dfn title=\"禁止するファイルの拡張子を設定します。\">禁止するファイル拡張子の"
|
738 |
"ブラックリスト</dfn>"
|
739 |
|
740 |
+
#: admin/includes/tab-settings.php:299
|
741 |
msgid ""
|
742 |
"<dfn title=\"Specify the capabilities to be verified. Depending on the "
|
743 |
"particular type of uploader, certain capability may be required. Default is "
|
749 |
"(Editor)、投稿者(Author)向けの「upload_files」です。空欄の場合、この検証は"
|
750 |
"スキップされます。\">検証する権限</dfn>"
|
751 |
|
752 |
+
#: admin/includes/tab-settings.php:299
|
753 |
msgid ""
|
754 |
"( See “<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
|
755 |
"Roles_and_Capabilities\" title=\"Roles and Capabilities « WordPress "
|
760 |
"title=\"ユーザーの種類と権限 - WordPress Codex 日本語版\">ユーザーの種類と権限"
|
761 |
"</a>“ を参照)"
|
762 |
|
763 |
+
#: admin/includes/tab-settings.php:306
|
764 |
msgid ""
|
765 |
"<dfn title=\"It restricts the file types on upload in order to block malware "
|
766 |
"and backdoor via both back-end and front-end. Please consider to select "
|
774 |
"plugins” (ip-geo-block-mu.php)」に設定することを検討してください。\">悪"
|
775 |
"意のあるアップロード防止</dfn>"
|
776 |
|
777 |
+
#: admin/includes/tab-settings.php:317 admin/includes/tab-settings.php:498
|
778 |
+
#: admin/includes/tab-settings.php:622 admin/includes/tab-settings.php:1272
|
779 |
msgid "Disable"
|
780 |
msgstr "無効"
|
781 |
|
782 |
+
#: admin/includes/tab-settings.php:318
|
783 |
msgid "Verify file extension and MIME type"
|
784 |
msgstr "拡張子と MIME タイプを検証"
|
785 |
|
786 |
+
#: admin/includes/tab-settings.php:319
|
787 |
msgid "Verify file extension only"
|
788 |
msgstr "ファイル拡張子のみを検証"
|
789 |
|
790 |
+
#: admin/includes/tab-settings.php:329
|
791 |
#, php-format
|
792 |
msgid ""
|
793 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
796 |
"<dfn title=\"テーマ・ディレクトリには 403.php など、独自のファイ"
|
797 |
"ルを設置する事が出来ます。\">レスポンス・コード</dfn> %s"
|
798 |
|
799 |
+
#: admin/includes/tab-settings.php:359 admin/includes/tab-settings.php:882
|
800 |
msgid ""
|
801 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
802 |
"to a public facing page, visitors would not be blocked on the page to "
|
810 |
"ります。空欄の場合、サイトのホームが使用されます。\">リダイレクト先 "
|
811 |
"URL</dfn>"
|
812 |
|
813 |
+
#: admin/includes/tab-settings.php:377 admin/includes/tab-settings.php:901
|
814 |
msgid ""
|
815 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
816 |
"message</dfn>"
|
818 |
"<dfn title=\"レスポンス・コード 4xx、5xx 用のメッセージを指定し"
|
819 |
"ます。\">レスポンス・メッセージ</dfn>"
|
820 |
|
821 |
+
#: admin/includes/tab-settings.php:394
|
822 |
msgid ""
|
823 |
"<dfn title=\"This is applied to “XML-RPC” and “Login "
|
824 |
"form”. Lockout period is defined as expiration time at “Cache "
|
828 |
"間は[キャッシュの設定]の[有効時間]で定義します。\">IPアドレス当たりのログ"
|
829 |
"イン試行可能回数</dfn>"
|
830 |
|
831 |
+
#: admin/includes/tab-settings.php:422
|
832 |
msgid "Select when to run the validation."
|
833 |
msgstr "検証を実行するタイミングを選択します。"
|
834 |
|
835 |
+
#: admin/includes/tab-settings.php:422
|
836 |
msgid "Validation timing"
|
837 |
msgstr "検証のタイミング"
|
838 |
|
839 |
+
#: admin/includes/tab-settings.php:433
|
840 |
msgid "“init” action hook"
|
841 |
msgstr "“init” アクション・フック"
|
842 |
|
843 |
+
#: admin/includes/tab-settings.php:434
|
844 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
845 |
msgstr "“mu-plugins” (ip-geo-block-mu.php)"
|
846 |
|
847 |
+
#: admin/includes/tab-settings.php:437
|
848 |
msgid ""
|
849 |
"Validate at “init” action hook in the same manner as typical "
|
850 |
"plugins."
|
852 |
"標準的な他のプラグインと同様、init アクション・フックのタイミングで検証を実行"
|
853 |
"します。"
|
854 |
|
855 |
+
#: admin/includes/tab-settings.php:438
|
856 |
msgid ""
|
857 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
858 |
"on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
|
864 |
"codex/validation-timing.html' title='Validation timing | IP Geo Block'>幾つか"
|
865 |
"の制限事項</a> が生じます。"
|
866 |
|
867 |
+
#: admin/includes/tab-settings.php:448
|
868 |
msgid "Back-end target settings"
|
869 |
msgstr "バックエンドの設定"
|
870 |
|
871 |
+
#: admin/includes/tab-settings.php:454
|
872 |
#, php-format
|
873 |
msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
|
874 |
msgstr "<dfn title=\"%s へのリクエストを検証する\">%s</dfn>"
|
875 |
|
876 |
+
#: admin/includes/tab-settings.php:460
|
877 |
msgid "Other areas"
|
878 |
msgstr "その他の領域"
|
879 |
|
880 |
+
#: admin/includes/tab-settings.php:461
|
881 |
msgid "public facing pages"
|
882 |
msgstr "一般公開ページ"
|
883 |
|
884 |
+
#: admin/includes/tab-settings.php:479 admin/includes/tab-settings.php:499
|
885 |
+
#: admin/includes/tab-settings.php:532 admin/includes/tab-settings.php:538
|
886 |
+
#: admin/includes/tab-settings.php:783
|
887 |
msgid "Block by country"
|
888 |
msgstr "国コードで遮断"
|
889 |
|
890 |
+
#: admin/includes/tab-settings.php:500
|
891 |
msgid "Completely close"
|
892 |
msgstr "完全に閉鎖"
|
893 |
|
894 |
+
#: admin/includes/tab-settings.php:506
|
895 |
+
msgid "Action to login as a registered user."
|
896 |
+
msgstr "登録済みユーザーとしてログインするアクション。"
|
897 |
+
|
898 |
+
#: admin/includes/tab-settings.php:506
|
899 |
+
msgid "Log in"
|
900 |
+
msgstr "ログイン"
|
901 |
+
|
902 |
+
#: admin/includes/tab-settings.php:507
|
903 |
+
msgid "Action to register new users."
|
904 |
+
msgstr "新規ユーザーを登録するアクション。"
|
905 |
+
|
906 |
+
#: admin/includes/tab-settings.php:507
|
907 |
+
msgid "Register"
|
908 |
+
msgstr "登録"
|
909 |
+
|
910 |
+
#: admin/includes/tab-settings.php:508
|
911 |
+
msgid "Action to reset a password to create a new one."
|
912 |
+
msgstr "パスワードをリセットし、新しいパスワードに更新するアクション。"
|
913 |
+
|
914 |
+
#: admin/includes/tab-settings.php:508
|
915 |
+
msgid "Password Reset"
|
916 |
+
msgstr "パスワードのリセット"
|
917 |
+
|
918 |
+
#: admin/includes/tab-settings.php:509
|
919 |
+
msgid "Action to email a password to a registered user."
|
920 |
+
msgstr "登録済みユーザーにパスワードを送付するアクション。"
|
921 |
+
|
922 |
+
#: admin/includes/tab-settings.php:509
|
923 |
+
msgid "Lost Password"
|
924 |
+
msgstr "パスワード紛失"
|
925 |
+
|
926 |
+
#: admin/includes/tab-settings.php:510
|
927 |
+
msgid ""
|
928 |
+
"Action to show prompt to enter a password on password protected post and "
|
929 |
+
"page."
|
930 |
+
msgstr ""
|
931 |
+
"パスワードで保護された投稿とページにパスワードを入力するプロンプトを表示するア"
|
932 |
+
"クション。"
|
933 |
+
|
934 |
+
#: admin/includes/tab-settings.php:510
|
935 |
+
msgid "Password protected"
|
936 |
+
msgstr "パスワード保護"
|
937 |
+
|
938 |
+
#: admin/includes/tab-settings.php:533
|
939 |
msgid ""
|
940 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
941 |
"actions</dfn>"
|
942 |
msgstr ""
|
943 |
"<dfn title=\"遮断対象とするアクションを指定します。\">対象アクション</dfn>"
|
944 |
|
945 |
+
#: admin/includes/tab-settings.php:539
|
946 |
msgid "Prevent Zero-day Exploit"
|
947 |
msgstr "ゼロデイ攻撃を遮断"
|
948 |
|
949 |
+
#: admin/includes/tab-settings.php:543
|
950 |
msgid ""
|
951 |
"It will block a request related to the services for both public facing pages "
|
952 |
"and the dashboard."
|
953 |
msgstr ""
|
954 |
"一般公開ページとダッシュボード向けサービスに関連するリクエストを遮断します。"
|
955 |
|
956 |
+
#: admin/includes/tab-settings.php:544
|
957 |
msgid ""
|
958 |
"Regardless of the country code, it will block a malicious request related to "
|
959 |
"the services only for the dashboard."
|
961 |
"国コードに拘らず、ダッシュボード向けサービスだけに関連する悪意のあるリクエスト"
|
962 |
"を遮断します。"
|
963 |
|
964 |
+
#: admin/includes/tab-settings.php:567
|
965 |
msgid "admin post for logged-in user"
|
966 |
msgstr "認証済ユーザー用 admin post"
|
967 |
|
968 |
+
#: admin/includes/tab-settings.php:568
|
969 |
msgid "admin post for non logged-in user"
|
970 |
msgstr "未認証ユーザー用 admin post"
|
971 |
|
972 |
+
#: admin/includes/tab-settings.php:592
|
973 |
msgid "Admin ajax/post"
|
974 |
msgstr "管理領域 ajax/post"
|
975 |
|
976 |
+
#: admin/includes/tab-settings.php:606
|
977 |
msgid ""
|
978 |
"Specify the action name (“action=…”) or the page name "
|
979 |
"(“page=…”) to prevent unintended blocking caused by "
|
986 |
"(“page=…” の “…” 部分)を指定し、検証対"
|
987 |
"象から除外します。"
|
988 |
|
989 |
+
#: admin/includes/tab-settings.php:606 admin/includes/tab-settings.php:684
|
990 |
+
#: admin/includes/tab-settings.php:745
|
991 |
msgid "Exceptions"
|
992 |
msgstr "例外"
|
993 |
|
994 |
+
#: admin/includes/tab-settings.php:607
|
995 |
msgid "Toggle with non logged-in user"
|
996 |
msgstr "未認証ユーザー用を含む項目に限定して表示する"
|
997 |
|
998 |
+
#: admin/includes/tab-settings.php:610
|
999 |
msgid "Candidate actions/pages"
|
1000 |
msgstr "候補 アクション/ページ"
|
1001 |
|
1002 |
+
#: admin/includes/tab-settings.php:624
|
1003 |
#, php-format
|
1004 |
msgid ""
|
1005 |
"Regardless of the country code, it will block a malicious request to <code>"
|
1008 |
"国コードに拘らず、<code>%s⋯/*.php</code>への悪意のあるリクエストを遮断し"
|
1009 |
"ます。"
|
1010 |
|
1011 |
+
#: admin/includes/tab-settings.php:625
|
1012 |
msgid ""
|
1013 |
"Select the item which causes unintended blocking in order to exclude from "
|
1014 |
"the validation target. Grayed item indicates “INACTIVE”."
|
1016 |
"意図しない遮断の原因となる項目を選択し、検証対象から除外します。灰色で表示され"
|
1017 |
"た項目は、「非アクティブ」であることを示しています。"
|
1018 |
|
1019 |
+
#: admin/includes/tab-settings.php:626
|
1020 |
#, php-format
|
1021 |
msgid ""
|
1022 |
"It configures “%s” to validate a request to the PHP file which "
|
1027 |
"に、%s を設定します。ドットで始まる隠しファイルへのアクセス拒否がサーバー側で"
|
1028 |
"設定されていることを確認して下さい。"
|
1029 |
|
1030 |
+
#: admin/includes/tab-settings.php:627
|
1031 |
msgid "Sorry, but your server type is not supported."
|
1032 |
msgstr "このサーバーではサポートされません。"
|
1033 |
|
1034 |
+
#: admin/includes/tab-settings.php:663 admin/includes/tab-settings.php:724
|
1035 |
msgid "Force to load WP core"
|
1036 |
msgstr "WPコアの読み込みを強制"
|
1037 |
|
1038 |
+
#: admin/includes/tab-settings.php:668
|
1039 |
msgid "Plugins area"
|
1040 |
msgstr "プラグイン領域"
|
1041 |
|
1042 |
+
#: admin/includes/tab-settings.php:729
|
1043 |
msgid "Themes area"
|
1044 |
msgstr "テーマ領域"
|
1045 |
|
1046 |
+
#: admin/includes/tab-settings.php:764
|
1047 |
msgid "Front-end target settings"
|
1048 |
msgstr "フロントエンドの設定"
|
1049 |
|
1050 |
+
#: admin/includes/tab-settings.php:788
|
1051 |
msgid "Follow “Validation rule settings”"
|
1052 |
msgstr "[検証ルールの設定]に従う"
|
1053 |
|
1054 |
+
#: admin/includes/tab-settings.php:850
|
1055 |
#, php-format
|
1056 |
msgid ""
|
1057 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
1062 |
"フィリエイト・プログラムに対する違反を防止するのに役立つでしょう。\">レスポン"
|
1063 |
"ス・コード</dfn> %s"
|
1064 |
|
1065 |
+
#: admin/includes/tab-settings.php:916
|
1066 |
msgid ""
|
1067 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1068 |
msgstr "<dfn title=\"特定のページを遮断対象に指定します。\">ページ</dfn>"
|
1069 |
|
1070 |
+
#: admin/includes/tab-settings.php:928
|
1071 |
msgid ""
|
1072 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1073 |
"target.\">Post type</dfn>"
|
1075 |
"<dfn title=\"特定の投稿タイプのシングルページを遮断対象に指定します。\">投稿タ"
|
1076 |
"イプ</dfn>"
|
1077 |
|
1078 |
+
#: admin/includes/tab-settings.php:940
|
1079 |
msgid ""
|
1080 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1081 |
"page as a blocking target.\">Category</dfn>"
|
1083 |
"<dfn title=\"特定のカテゴリを含むシングルページかアーカイブページを遮断対象に"
|
1084 |
"指定します。\">カテゴリ</dfn>"
|
1085 |
|
1086 |
+
#: admin/includes/tab-settings.php:952
|
1087 |
msgid ""
|
1088 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1089 |
"a blocking target.\">Tag</dfn>"
|
1091 |
"<dfn title=\"特定のタグを含むシングルページかアーカイブページを遮断対象に指定"
|
1092 |
"します。\">タグ</dfn>"
|
1093 |
|
1094 |
+
#: admin/includes/tab-settings.php:967
|
1095 |
msgid "Specify the validation target on front-end."
|
1096 |
msgstr "フロントエンドの検証対象を設定します。"
|
1097 |
|
1098 |
+
#: admin/includes/tab-settings.php:967
|
1099 |
msgid "Validation target"
|
1100 |
msgstr "検証対象"
|
1101 |
|
1102 |
+
#: admin/includes/tab-settings.php:978
|
1103 |
msgid "All requests"
|
1104 |
msgstr "全てのリクエスト"
|
1105 |
|
1106 |
+
#: admin/includes/tab-settings.php:979
|
1107 |
msgid "Specify the targets"
|
1108 |
msgstr "ターゲットを指定"
|
1109 |
|
1110 |
+
#: admin/includes/tab-settings.php:982
|
1111 |
msgid ""
|
1112 |
"Notice that “Validation timing” is deferred till “"
|
1113 |
"wp” action hook. It means that this feature would not be compatible "
|
1116 |
"[検証のタイミング]が “wp” アクション・フックまで遅延されます。こ"
|
1117 |
"れにより、ページ・キャッシュとの互換性がなくなることに注意してください。"
|
1118 |
|
1119 |
+
#: admin/includes/tab-settings.php:989
|
1120 |
+
msgid ""
|
1121 |
+
"<dfn title=\"Specify the frequency of request for certain period of time."
|
1122 |
+
"\">Blocking condition</dfn>"
|
1123 |
+
msgstr "<dfn title=\"特定期間のリクエスト頻度を設定します。\">遮断条件</dfn>"
|
1124 |
+
|
1125 |
+
#: admin/includes/tab-settings.php:991
|
1126 |
+
#, php-format
|
1127 |
+
msgid "More than %1$s page view (PV) in %2$s seconds"
|
1128 |
+
msgstr "%2$s 秒間に %1$s を超えるページビュー (PV)"
|
1129 |
+
|
1130 |
+
#: admin/includes/tab-settings.php:1000
|
1131 |
+
msgid ""
|
1132 |
+
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1133 |
+
"behaved bots and crawlers</dfn>"
|
1134 |
+
msgstr ""
|
1135 |
+
"<dfn title=\"リクエスト頻度を検証します。\">行儀の悪いボットやクローラーを遮断"
|
1136 |
+
"</dfn>"
|
1137 |
+
|
1138 |
+
#: admin/includes/tab-settings.php:1018
|
1139 |
msgid ""
|
1140 |
"A part of user agent string and a qualification connected with a separator "
|
1141 |
"that indicates an applicable rule and can be “:” (pass) or "
|
1149 |
"コード、または IPアドレス(CIDR記法)が使えます。また否定を表す記号「!」"
|
1150 |
"を「条件」の直前に配置する事が出来ます。"
|
1151 |
|
1152 |
+
#: admin/includes/tab-settings.php:1018
|
1153 |
msgid "UA string and qualification"
|
1154 |
msgstr "ユーザーエージェント(UA)文字列と条件"
|
1155 |
|
1156 |
+
#: admin/includes/tab-settings.php:1037
|
1157 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1158 |
msgstr "常に遮断されるアクション名を例外として指定します。"
|
1159 |
|
1160 |
+
#: admin/includes/tab-settings.php:1037
|
1161 |
msgid "Excluded actions"
|
1162 |
msgstr "除外するアクション"
|
1163 |
|
1164 |
+
#: admin/includes/tab-settings.php:1056
|
1165 |
msgid ""
|
1166 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1167 |
"server resources. If it is disabled, “HOST” and “"
|
1172 |
"ます)。無効にした場合、[ユーザーエージェント文字列と条件]中の「HOST」、"
|
1173 |
"「HOST=…」は常に真となります。"
|
1174 |
|
1175 |
+
#: admin/includes/tab-settings.php:1056
|
1176 |
msgid "DNS reverse lookup"
|
1177 |
msgstr "DNS 逆引き"
|
1178 |
|
1179 |
+
#: admin/includes/tab-settings.php:1073
|
1180 |
msgid ""
|
1181 |
"It enables to simulate validation without deployment. The results can be "
|
1182 |
"found at “Public facing pages” in Logs."
|
1184 |
"機能を有効にする事なくリクエストの検証をシミュレートします。結果はログで確認す"
|
1185 |
"る事が出来ます。"
|
1186 |
|
1187 |
+
#: admin/includes/tab-settings.php:1073
|
1188 |
msgid "Simulation mode"
|
1189 |
msgstr "シミュレーション・モード"
|
1190 |
|
1191 |
+
#: admin/includes/tab-settings.php:1091
|
1192 |
msgid "Geolocation API settings"
|
1193 |
msgstr "位置情報APIの設定"
|
1194 |
|
1195 |
+
#: admin/includes/tab-settings.php:1100
|
1196 |
msgid ""
|
1197 |
"<dfn title=\"Cache and local database are scanned at the top priority.\">API "
|
1198 |
"selection and key settings</dfn>"
|
1200 |
"<dfn title=\"キャッシュとローカルのデータベースが最優先で検索されます。\">API"
|
1201 |
"の選択とキーの設定</dfn>"
|
1202 |
|
1203 |
+
#: admin/includes/tab-settings.php:1119
|
1204 |
msgid "Timeout for network API [sec]"
|
1205 |
msgstr "ネットワークAPIのタイムアウト[秒]"
|
1206 |
|
1207 |
+
#: admin/includes/tab-settings.php:1139
|
1208 |
#, php-format
|
1209 |
msgid ""
|
1210 |
"Can not find geolocation API libraries in <code>%s</code>. It seems to have "
|
1229 |
"Geo Block\">FAQ</a> を参照し、適切な書き込み権限と共に <code>ip-geo-api</"
|
1230 |
"code> をインストールしてください。"
|
1231 |
|
1232 |
+
#: admin/includes/tab-settings.php:1146
|
1233 |
msgid "Local database settings"
|
1234 |
msgstr "ローカル・データベースの設定"
|
1235 |
|
1236 |
+
#: admin/includes/tab-settings.php:1160
|
1237 |
msgid "database"
|
1238 |
msgstr "ファイル"
|
1239 |
|
1240 |
+
#: admin/includes/tab-settings.php:1161 classes/class-ip-geo-block-cron.php:414
|
1241 |
#, php-format
|
1242 |
msgid "Last update: %s"
|
1243 |
msgstr "最終更新:%s"
|
1244 |
|
1245 |
+
#: admin/includes/tab-settings.php:1174 admin/includes/tab-settings.php:1408
|
1246 |
+
msgid ""
|
1247 |
+
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1248 |
+
"once and activate again."
|
1249 |
+
msgstr ""
|
1250 |
+
"WP-Cronのタスクが見つかりません。 一旦このプラグインを停止させた後、再度、有効"
|
1251 |
+
"化してみてください。"
|
1252 |
+
|
1253 |
+
#: admin/includes/tab-settings.php:1180
|
1254 |
msgid "Auto updating (once a month)"
|
1255 |
msgstr "自動更新(月1回)"
|
1256 |
|
1257 |
+
#: admin/includes/tab-settings.php:1191 admin/includes/tab-settings.php:1423
|
1258 |
+
#, php-format
|
1259 |
+
msgid "Next schedule: %s"
|
1260 |
+
msgstr "次回日時:%s"
|
1261 |
+
|
1262 |
+
#: admin/includes/tab-settings.php:1198
|
1263 |
msgid "Download database"
|
1264 |
msgstr "データベースのダウンロード"
|
1265 |
|
1266 |
+
#: admin/includes/tab-settings.php:1206
|
1267 |
msgid "Download now"
|
1268 |
msgstr "今すぐダウンロード"
|
1269 |
|
1270 |
+
#: admin/includes/tab-settings.php:1217
|
1271 |
msgid "Statistics and Logs settings"
|
1272 |
msgstr "統計とログの設定"
|
1273 |
|
1274 |
+
#: admin/includes/tab-settings.php:1226
|
1275 |
msgid "Record “Statistics”"
|
1276 |
msgstr "検証の統計を記録"
|
1277 |
|
1278 |
+
#: admin/includes/tab-settings.php:1243
|
1279 |
msgid "Maximum period for “Statistics” (days)"
|
1280 |
msgstr "記録する統計の最大期間(日)"
|
1281 |
|
1282 |
+
#: admin/includes/tab-settings.php:1261
|
1283 |
msgid "Record “Logs”"
|
1284 |
msgstr "検証のログを記録"
|
1285 |
|
1286 |
+
#: admin/includes/tab-settings.php:1273
|
1287 |
msgid "When requests blocked"
|
1288 |
msgstr "遮断時に記録"
|
1289 |
|
1290 |
+
#: admin/includes/tab-settings.php:1274
|
1291 |
msgid "When requests passed"
|
1292 |
msgstr "通過時に記録"
|
1293 |
|
1294 |
+
#: admin/includes/tab-settings.php:1275
|
1295 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1296 |
msgstr "遮断時または遮断対象国の通過時に記録"
|
1297 |
|
1298 |
+
#: admin/includes/tab-settings.php:1276
|
1299 |
msgid "Unauthenticated visitor"
|
1300 |
msgstr "未認証の訪問者を記録"
|
1301 |
|
1302 |
+
#: admin/includes/tab-settings.php:1277
|
1303 |
msgid "Authenticated user"
|
1304 |
msgstr "認証済のユーザーを記録"
|
1305 |
|
1306 |
+
#: admin/includes/tab-settings.php:1278
|
1307 |
msgid "All the validation"
|
1308 |
msgstr "すべての検証を記録"
|
1309 |
|
1310 |
+
#: admin/includes/tab-settings.php:1287
|
1311 |
msgid "Maximum entries of “Logs”"
|
1312 |
msgstr "記録するログの最大エントリ数"
|
1313 |
|
1314 |
+
#: admin/includes/tab-settings.php:1304
|
1315 |
msgid ""
|
1316 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
|
1317 |
"recorded with their values in “Logs”</dfn>"
|
1319 |
"<dfn title=\"例)action, comment, log, pwd, FILES\">ログに記録する際に内容を展"
|
1320 |
"開する$_POSTのキー</dfn>"
|
1321 |
|
1322 |
+
#: admin/includes/tab-settings.php:1322
|
1323 |
msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
|
1324 |
msgstr "<dfn title=\"例)123.456.789.***\">IPアドレスを匿名化する</dfn>"
|
1325 |
|
1326 |
+
#: admin/includes/tab-settings.php:1339
|
1327 |
msgid ""
|
1328 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1329 |
"“Live update”</dfn>"
|
1331 |
"<dfn title=\"SQLiteデータベース・ソースを選択します。\">ライブアップデート用"
|
1332 |
"SQLiteデータベース・ソースの選択</dfn>"
|
1333 |
|
1334 |
+
#: admin/includes/tab-settings.php:1351
|
1335 |
msgid "Ordinary file"
|
1336 |
msgstr "通常のファイル"
|
1337 |
|
1338 |
+
#: admin/includes/tab-settings.php:1352
|
1339 |
msgid "In-Memory"
|
1340 |
msgstr "イン・メモリ"
|
1341 |
|
1342 |
+
#: admin/includes/tab-settings.php:1355
|
1343 |
msgid "PDO_SQLITE driver not available"
|
1344 |
msgstr "PDO_SQLITEドライバが利用出来ません。"
|
1345 |
|
1346 |
+
#: admin/includes/tab-settings.php:1356
|
1347 |
msgid ""
|
1348 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1349 |
"without conflict with other plugins."
|
1351 |
"数十ミリ秒のオーバーヘッドが生じますが、他のプラグインと競合することなく、安全"
|
1352 |
"に使用できます。"
|
1353 |
|
1354 |
+
#: admin/includes/tab-settings.php:1357
|
1355 |
msgid ""
|
1356 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1357 |
"with other plugins using this method."
|
1359 |
"数ミリ秒のオーバーヘッドが生じます。同手法を用いている他のプラグインと競合する"
|
1360 |
"可能性があります。"
|
1361 |
|
1362 |
+
#: admin/includes/tab-settings.php:1366
|
1363 |
msgid "Reset database source of “Live update”"
|
1364 |
msgstr "ライブアップデートのデータソースをリセットする"
|
1365 |
|
1366 |
+
#: admin/includes/tab-settings.php:1374
|
1367 |
msgid "Reset now"
|
1368 |
msgstr "今すぐリセット"
|
1369 |
|
1370 |
+
#: admin/includes/tab-settings.php:1385
|
1371 |
msgid "IP address cache settings"
|
1372 |
msgstr "IPアドレスのキャッシュ設定"
|
1373 |
|
1374 |
+
#: admin/includes/tab-settings.php:1394
|
1375 |
#, php-format
|
1376 |
msgid ""
|
1377 |
"<dfn title=\"If user authentication fails consecutively %d times, subsequent "
|
1381 |
"<dfn title=\"ユーザ認証が連続%d回失敗した場合も、以降のログインがこの期間だけ"
|
1382 |
"(ガベージコレクション周期を含む)禁止されます。\">有効時間 [sec]</dfn>"
|
1383 |
|
1384 |
+
#: admin/includes/tab-settings.php:1414
|
1385 |
msgid "Garbage collection period [sec]"
|
1386 |
msgstr "ガベージコレクション周期 [秒]"
|
1387 |
|
1388 |
+
#: admin/includes/tab-settings.php:1432
|
1389 |
msgid "Number of entries to be displayed in cache"
|
1390 |
msgstr "[キャッシュ中のIPアドレス]に表示する最大数"
|
1391 |
|
1392 |
+
#: admin/includes/tab-settings.php:1450
|
1393 |
msgid "Submission settings"
|
1394 |
msgstr "投稿時の設定"
|
1395 |
|
1396 |
+
#: admin/includes/tab-settings.php:1462
|
1397 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
1398 |
msgstr "全体が<p>タグで囲われます。使用可能タグ:"
|
1399 |
|
1400 |
+
#: admin/includes/tab-settings.php:1462
|
1401 |
msgid "Message on comment form"
|
1402 |
msgstr "投稿フォーム上のメッセージ"
|
1403 |
|
1404 |
+
#: admin/includes/tab-settings.php:1474
|
1405 |
msgid "None"
|
1406 |
msgstr "なし"
|
1407 |
|
1408 |
+
#: admin/includes/tab-settings.php:1475
|
1409 |
msgid "Top"
|
1410 |
msgstr "上部"
|
1411 |
|
1412 |
+
#: admin/includes/tab-settings.php:1476
|
1413 |
msgid "Bottom"
|
1414 |
msgstr "下部"
|
1415 |
|
1416 |
+
#: admin/includes/tab-settings.php:1487
|
1417 |
msgid "Plugin settings"
|
1418 |
msgstr "プラグインの設定"
|
1419 |
|
1420 |
+
#: admin/includes/tab-settings.php:1500
|
1421 |
msgid ""
|
1422 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1423 |
"settings</dfn>"
|
1425 |
"<dfn title=\"全ての設定をネットワーク全体で同期させます。\">ネットワーク一括管"
|
1426 |
"理</dfn>"
|
1427 |
|
1428 |
+
#: admin/includes/tab-settings.php:1518
|
1429 |
msgid "Remove all settings at uninstallation"
|
1430 |
msgstr "アンインストール時に全設定を削除"
|
1431 |
|
1432 |
+
#: admin/includes/tab-settings.php:1536
|
1433 |
msgid ""
|
1434 |
"<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
|
1435 |
"dfn>"
|
1437 |
"<dfn title=\"Google Maps JavaScript API に有効なキー\">Google Maps API キー</"
|
1438 |
"dfn>"
|
1439 |
|
1440 |
+
#: admin/includes/tab-settings.php:1550
|
1441 |
msgid ""
|
1442 |
"You need to click the “Save Changes” button for imported "
|
1443 |
"settings to take effect."
|
1445 |
"インポートされた設定を有効にするには、[変更を保存]ボタンをクリックする必要が"
|
1446 |
"あります。"
|
1447 |
|
1448 |
+
#: admin/includes/tab-settings.php:1556
|
1449 |
msgid "Export / Import settings"
|
1450 |
msgstr "設定のエクスポート、インポート"
|
1451 |
|
1452 |
+
#: admin/includes/tab-settings.php:1563
|
1453 |
msgid "Export settings"
|
1454 |
msgstr "エクスポート"
|
1455 |
|
1456 |
+
#: admin/includes/tab-settings.php:1564
|
1457 |
msgid "Import from the local file"
|
1458 |
msgstr "ローカル・ファイルからインポートします"
|
1459 |
|
1460 |
+
#: admin/includes/tab-settings.php:1564
|
1461 |
msgid "Import settings"
|
1462 |
msgstr "インポート"
|
1463 |
|
1464 |
+
#: admin/includes/tab-settings.php:1573
|
1465 |
msgid "Import pre-defined settings"
|
1466 |
msgstr "プリセットのインポート"
|
1467 |
|
1468 |
+
#: admin/includes/tab-settings.php:1580
|
1469 |
msgid ""
|
1470 |
"Import the default settings to revert to the “Right after "
|
1471 |
"installing” state"
|
1472 |
msgstr "インストール直後の状態に戻すための設定値をインポートします"
|
1473 |
|
1474 |
+
#: admin/includes/tab-settings.php:1580
|
1475 |
msgid "Default settings"
|
1476 |
msgstr "初期設定"
|
1477 |
|
1478 |
+
#: admin/includes/tab-settings.php:1581
|
1479 |
msgid ""
|
1480 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1481 |
"for the “Back-end target settings”"
|
1483 |
"「ゼロデイ攻撃の遮断」など、主に[バックエンドの設定]の推奨設定をインポートし"
|
1484 |
"ます。"
|
1485 |
|
1486 |
+
#: admin/includes/tab-settings.php:1581
|
1487 |
msgid "Best for Back-end"
|
1488 |
msgstr "バックエンドの推奨設定"
|
1489 |
|
1490 |
+
#: admin/includes/tab-settings.php:1591
|
1491 |
+
msgid "Delete DB tables for this plugin"
|
1492 |
+
msgstr "このプラグイン用データベース・テーブルの削除"
|
1493 |
|
1494 |
+
#: admin/includes/tab-settings.php:1599
|
1495 |
msgid "Delete now"
|
1496 |
msgstr "今すぐ削除"
|
1497 |
|
1498 |
+
#: admin/includes/tab-settings.php:1607
|
1499 |
+
msgid "Create DB tables for this plugin"
|
1500 |
+
msgstr "このプラグイン用データベース・テーブルの作成"
|
1501 |
|
1502 |
+
#: admin/includes/tab-settings.php:1615
|
1503 |
msgid "Create now"
|
1504 |
msgstr "今すぐ作成"
|
1505 |
|
1506 |
+
#: admin/includes/tab-settings.php:1625
|
1507 |
msgid ""
|
1508 |
"<dfn title=\"When an unexpected blocking has occurred, please press the "
|
1509 |
"button to find the blocked request in the dumped information which may help "
|
1517 |
"ip-geo-block\" title=\"WordPress › Support » IP Geo Block\">サポー"
|
1518 |
"ト・フォーラム</a> ]"
|
1519 |
|
1520 |
+
#: admin/includes/tab-settings.php:1632
|
1521 |
msgid "Please copy & paste when submitting your issue to support forum."
|
1522 |
msgstr "フォーラムに問題を投稿する際、コピーして張り付けてください。"
|
1523 |
|
1524 |
+
#: admin/includes/tab-settings.php:1632
|
1525 |
msgid "Show information"
|
1526 |
msgstr "情報を表示"
|
1527 |
|
1528 |
+
#: admin/includes/tab-settings.php:1648
|
1529 |
msgid ""
|
1530 |
"To enhance the protection ability, please refer to “<a rel=\"noreferrer"
|
1531 |
"\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
|
1537 |
"\" title=\"The best practice for target settings | IP Geo Block\">The best "
|
1538 |
"practice fortarget settings</a>“ を参照してください。"
|
1539 |
|
1540 |
+
#: admin/includes/tab-settings.php:1649
|
1541 |
msgid ""
|
1542 |
"If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
|
1543 |
"\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
|
1551 |
"com/codex/#faq\" title=\"Codex | IP Geo Block\">Codex</a> の FAQ を参照してく"
|
1552 |
"ださい。"
|
1553 |
|
1554 |
+
#: admin/includes/tab-settings.php:1656
|
1555 |
msgid ""
|
1556 |
"While Maxmind and IP2Location will fetch the local database, others will "
|
1557 |
"pass an IP address to the APIs via HTTP."
|
1559 |
"MaxmindとIP2Locationはローカルのデータベースを検索しますが、他はHTTPを介して"
|
1560 |
"APIにIPアドレスを渡します。"
|
1561 |
|
1562 |
+
#: admin/includes/tab-settings.php:1657
|
1563 |
msgid ""
|
1564 |
"Please select the appropriate APIs to fit the privacy law in your country."
|
1565 |
msgstr "自国のプライバシー関連法規に合わせ、適切なAPIを選択して下さい。"
|
1566 |
|
1567 |
+
#: admin/includes/tab-settings.php:1666
|
1568 |
#, php-format
|
1569 |
msgid ""
|
1570 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1574 |
"ジョン 5.4.0 以上と %sPECL phar 2.0.0 以上%sが必要"
|
1575 |
"です。"
|
1576 |
|
1577 |
+
#: admin/includes/tab-settings.php:1674
|
1578 |
msgid ""
|
1579 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1580 |
"ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
|
1586 |
"end\" title=\"Codex | IP Geo Block\">Blocking on front-end</a>” を参照し"
|
1587 |
"てください。"
|
1588 |
|
1589 |
+
#: admin/includes/tab-settings.php:1675
|
1590 |
msgid ""
|
1591 |
"If you find any issues or have something to suggest, please feel free to "
|
1592 |
"open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
|
1598 |
"› Support » IP Geo Block\">サポートフォーラム</a> に投稿をお願いし"
|
1599 |
"ます。"
|
1600 |
|
1601 |
+
#: admin/includes/tab-settings.php:1682
|
1602 |
msgid ""
|
1603 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1604 |
"ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
|
1699 |
"statistics."
|
1700 |
msgstr "検証の統計を記録し分析するためには、適切な条件を設定して下さい。"
|
1701 |
|
1702 |
+
#: classes/class-ip-geo-block-apis.php:667
|
1703 |
msgid ""
|
1704 |
"You need to select at least one IP geolocation service. Otherwise "
|
1705 |
"<strong>you'll be blocked</strong> after the cache expires."
|
1707 |
"少なくとも1つ以上の位置情報サービスを選択して下さい。未選択の場合、キャッシュ"
|
1708 |
"の有効期限切れと共にロックアウトされます。"
|
1709 |
|
1710 |
+
#: classes/class-ip-geo-block-cron.php:217
|
1711 |
#, php-format
|
1712 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1713 |
msgstr ""
|
1714 |
"<code>%s</code> をロック出来ません。パーミッションをチェックして下さい。"
|
1715 |
|
1716 |
+
#: classes/class-ip-geo-block-cron.php:296
|
1717 |
msgid "Your database file is up-to-date."
|
1718 |
msgstr "データベース・ファイルは最新です。"
|
1719 |
|
1720 |
+
#: classes/class-ip-geo-block-cron.php:395
|
1721 |
msgid "gz or zip is not supported on your system."
|
1722 |
msgstr "gz または zip がサポートされていません。"
|
1723 |
|
1748 |
"php#WordPress_Upgrade_Constants\" title=\"Editing wp-config.php « "
|
1749 |
"WordPress Codex\">このドキュメント</a>を参照してください。"
|
1750 |
|
1751 |
+
#: classes/class-ip-geo-block-logs.php:157
|
1752 |
#, php-format
|
1753 |
msgid ""
|
1754 |
"Creating a DB table %s had failed. Once de-activate this plugin, and then "
|
1757 |
"%s 用のテーブルが作成されていません。一旦このプラグインを無効化し、再度有効化"
|
1758 |
"して下さい。"
|
1759 |
|
1760 |
+
#: classes/class-ip-geo-block-logs.php:635
|
1761 |
#, php-format
|
1762 |
msgid "The user %s (user ID: %d) is in use."
|
1763 |
msgstr "ユーザー %s(ユーザーID:%d)が使用中です。"
|
1764 |
|
1765 |
+
#: classes/class-ip-geo-block.php:417
|
1766 |
+
msgid "Dashboard"
|
1767 |
+
msgstr "ダッシュボード"
|
1768 |
+
|
1769 |
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:151
|
1770 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:144
|
1771 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
languages/ip-geo-block.mo
CHANGED
Binary file
|
languages/ip-geo-block.po
CHANGED
@@ -4,8 +4,8 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: IP Geo Block 3.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
-
"POT-Creation-Date: 2018-
|
8 |
-
"PO-Revision-Date: 2018-
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
@@ -26,153 +26,153 @@ msgid ""
|
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: admin/class-ip-geo-block-admin.php:
|
30 |
msgid "Import settings ?"
|
31 |
msgstr ""
|
32 |
|
33 |
-
#: admin/class-ip-geo-block-admin.php:
|
34 |
msgid "Create table ?"
|
35 |
msgstr ""
|
36 |
|
37 |
-
#: admin/class-ip-geo-block-admin.php:
|
38 |
msgid "Delete table ?"
|
39 |
msgstr ""
|
40 |
|
41 |
-
#: admin/class-ip-geo-block-admin.php:
|
42 |
msgid "Clear statistics ?"
|
43 |
msgstr ""
|
44 |
|
45 |
-
#: admin/class-ip-geo-block-admin.php:
|
46 |
msgid "Clear cache ?"
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: admin/class-ip-geo-block-admin.php:
|
50 |
msgid "Clear logs ?"
|
51 |
msgstr ""
|
52 |
|
53 |
-
#: admin/class-ip-geo-block-admin.php:
|
54 |
msgid "ajax for logged-in user"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: admin/class-ip-geo-block-admin.php:
|
58 |
msgid "ajax for non logged-in user"
|
59 |
msgstr ""
|
60 |
|
61 |
-
#: admin/class-ip-geo-block-admin.php:
|
62 |
#, php-format
|
63 |
msgid "[Found: %d]"
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: admin/class-ip-geo-block-admin.php:
|
67 |
#, php-format
|
68 |
msgid "Find and verify `%s` on “Logs” tab."
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: admin/class-ip-geo-block-admin.php:
|
72 |
msgid "This feature is available with HTML5 compliant browsers."
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: admin/class-ip-geo-block-admin.php:
|
76 |
msgid "The selected row cannot be found in the visible area."
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: admin/class-ip-geo-block-admin.php:
|
80 |
-
#: admin/class-ip-geo-block-admin.php:
|
81 |
#, php-format
|
82 |
msgid "An error occurred while executing the ajax command `%s`."
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: admin/class-ip-geo-block-admin.php:
|
86 |
msgid "No data available in table"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: admin/class-ip-geo-block-admin.php:
|
90 |
msgid "No matching records found"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: admin/class-ip-geo-block-admin.php:
|
94 |
msgid "IP address"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: admin/class-ip-geo-block-admin.php:
|
98 |
msgid "Code"
|
99 |
msgstr ""
|
100 |
|
101 |
-
#: admin/class-ip-geo-block-admin.php:
|
102 |
msgid "ASN"
|
103 |
msgstr ""
|
104 |
|
105 |
-
#: admin/class-ip-geo-block-admin.php:
|
106 |
msgid "Host name"
|
107 |
msgstr ""
|
108 |
|
109 |
-
#: admin/class-ip-geo-block-admin.php:
|
110 |
msgid "Target"
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: admin/class-ip-geo-block-admin.php:
|
114 |
msgid "Failure / Total"
|
115 |
msgstr ""
|
116 |
|
117 |
-
#: admin/class-ip-geo-block-admin.php:
|
118 |
msgid "Elapsed[sec]"
|
119 |
msgstr ""
|
120 |
|
121 |
-
#: admin/class-ip-geo-block-admin.php:
|
122 |
msgid "Time"
|
123 |
msgstr ""
|
124 |
|
125 |
-
#: admin/class-ip-geo-block-admin.php:
|
126 |
msgid "Result"
|
127 |
msgstr ""
|
128 |
|
129 |
-
#: admin/class-ip-geo-block-admin.php:
|
130 |
msgid "Request"
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: admin/class-ip-geo-block-admin.php:
|
134 |
msgid "User agent"
|
135 |
msgstr ""
|
136 |
|
137 |
-
#: admin/class-ip-geo-block-admin.php:
|
138 |
msgid "HTTP headers"
|
139 |
msgstr ""
|
140 |
|
141 |
-
#: admin/class-ip-geo-block-admin.php:
|
142 |
msgid "$_POST data"
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: admin/class-ip-geo-block-admin.php:
|
146 |
msgid "Contribute on GitHub"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: admin/class-ip-geo-block-admin.php:
|
150 |
-
#: admin/class-ip-geo-block-admin.php:
|
151 |
-
#: admin/class-ip-geo-block-admin.php:
|
152 |
-
#: admin/class-ip-geo-block-admin.php:
|
153 |
msgid "Settings"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: admin/class-ip-geo-block-admin.php:424
|
157 |
#: admin/class-ip-geo-block-admin.php:425
|
158 |
-
#: admin/class-ip-geo-block-admin.php:
|
159 |
#: admin/class-ip-geo-block-admin.php:436
|
160 |
-
#: admin/class-ip-geo-block-admin.php:
|
161 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
162 |
msgid "IP Geo Block"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: admin/class-ip-geo-block-admin.php:
|
166 |
-
#: admin/class-ip-geo-block-admin.php:
|
167 |
-
#: admin/class-ip-geo-block-admin.php:
|
168 |
msgid "Site List"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: admin/class-ip-geo-block-admin.php:
|
172 |
msgid "You need WordPress 3.7+."
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: admin/class-ip-geo-block-admin.php:
|
176 |
#, php-format
|
177 |
msgid ""
|
178 |
"Now downloading geolocation databases in background. After a little while, "
|
@@ -180,48 +180,48 @@ msgid ""
|
|
180 |
"strong>” at <a href=\"%s\">Validation rule settings</a>."
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: admin/class-ip-geo-block-admin.php:
|
184 |
#, php-format
|
185 |
msgid ""
|
186 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
187 |
"confirm it at <a href=\"%s\">Validation rule settings</a>."
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: admin/class-ip-geo-block-admin.php:
|
191 |
msgid "Local database and matching rule have been updated."
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: admin/class-ip-geo-block-admin.php:
|
195 |
msgid ""
|
196 |
"Once you logout, you will be unable to login again because the number of "
|
197 |
"login attempts reaches the limit."
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: admin/class-ip-geo-block-admin.php:
|
201 |
#, php-format
|
202 |
msgid ""
|
203 |
"Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
|
204 |
"tab</a> to prevent locking yourself out."
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: admin/class-ip-geo-block-admin.php:
|
208 |
msgid ""
|
209 |
"Once you logout, you will be unable to login again because your country code "
|
210 |
"or IP address is in the blacklist."
|
211 |
msgstr ""
|
212 |
|
213 |
-
#: admin/class-ip-geo-block-admin.php:
|
214 |
msgid ""
|
215 |
"Once you logout, you will be unable to login again because your country code "
|
216 |
"or IP address is not in the whitelist."
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: admin/class-ip-geo-block-admin.php:
|
220 |
#, php-format
|
221 |
msgid "Please check your “%sValidation rule settings%s”."
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: admin/class-ip-geo-block-admin.php:
|
225 |
#, php-format
|
226 |
msgid ""
|
227 |
"Please confirm your local geolocation databases at “%sLocal database "
|
@@ -229,89 +229,93 @@ msgid ""
|
|
229 |
"%sStatistics in cache%s” section."
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: admin/class-ip-geo-block-admin.php:
|
233 |
msgid ""
|
234 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
235 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
236 |
"select “init” action hook."
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: admin/class-ip-geo-block-admin.php:
|
240 |
msgid "Statistics"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: admin/class-ip-geo-block-admin.php:
|
244 |
msgid "Logs"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: admin/class-ip-geo-block-admin.php:
|
248 |
msgid "Search"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: admin/class-ip-geo-block-admin.php:
|
252 |
msgid "Attribution"
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: admin/class-ip-geo-block-admin.php:
|
256 |
msgid "Network wide"
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: admin/class-ip-geo-block-admin.php:
|
260 |
msgid "Toggle all"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: admin/class-ip-geo-block-admin.php:
|
264 |
msgid ""
|
265 |
"Independent of “Statistics and Logs settings”, you can see all "
|
266 |
"the requests validated by this plugin in almost real time."
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: admin/class-ip-geo-block-admin.php:
|
270 |
msgid "Live update"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: admin/class-ip-geo-block-admin.php:
|
274 |
msgid "Open a new window on clicking the link in the chart."
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: admin/class-ip-geo-block-admin.php:
|
278 |
msgid "Open a new window"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: admin/class-ip-geo-block-admin.php:
|
282 |
msgid "Thanks for providing these great services for free."
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: admin/class-ip-geo-block-admin.php:
|
286 |
msgid ""
|
287 |
"(Most browsers will redirect you to each site <a href=\"http://www."
|
288 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
289 |
"when you click the link</a>.)"
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: admin/class-ip-geo-block-admin.php:
|
293 |
msgid "Back to top"
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: admin/class-ip-geo-block-admin.php:
|
297 |
msgid "Enable"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: admin/class-ip-geo-block-admin.php:
|
301 |
msgid "Select one"
|
302 |
msgstr ""
|
303 |
|
304 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
|
|
|
|
305 |
#: admin/includes/class-admin-rewrite.php:194
|
306 |
-
#: classes/class-ip-geo-block-cron.php:
|
307 |
-
#: classes/class-ip-geo-block-cron.php:
|
308 |
-
#: classes/class-ip-geo-block-cron.php:
|
309 |
-
#: classes/class-ip-geo-block-opts.php:
|
310 |
#, php-format
|
311 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: admin/class-ip-geo-block-admin.php:
|
315 |
msgid "Settings saved."
|
316 |
msgstr ""
|
317 |
|
@@ -331,8 +335,8 @@ msgid ""
|
|
331 |
msgstr ""
|
332 |
|
333 |
#: admin/includes/class-admin-rewrite.php:168
|
334 |
-
#: classes/class-ip-geo-block-cron.php:
|
335 |
-
#: classes/class-ip-geo-block-cron.php:
|
336 |
#, php-format
|
337 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
338 |
msgstr ""
|
@@ -352,23 +356,28 @@ msgstr ""
|
|
352 |
msgid "Validation logs"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: admin/includes/tab-accesslog.php:
|
|
|
|
|
|
|
|
|
|
|
356 |
msgid "Comment post"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:
|
360 |
msgid "XML-RPC"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:
|
364 |
msgid "Login form"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:
|
368 |
msgid "Admin area"
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:
|
372 |
msgid "Public facing pages"
|
373 |
msgstr ""
|
374 |
|
@@ -426,7 +435,7 @@ msgstr ""
|
|
426 |
msgid "Export logs"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: admin/includes/tab-accesslog.php:152 admin/includes/tab-settings.php:
|
430 |
msgid "Export to the local file"
|
431 |
msgstr ""
|
432 |
|
@@ -582,10 +591,10 @@ msgid ""
|
|
582 |
msgstr ""
|
583 |
|
584 |
#: admin/includes/tab-settings.php:120
|
585 |
-
msgid "Open CIDR calculator for IPv4 / IPv6"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:
|
589 |
msgid "Matching rule"
|
590 |
msgstr ""
|
591 |
|
@@ -620,13 +629,13 @@ msgid ""
|
|
620 |
"for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: admin/includes/tab-settings.php:
|
624 |
msgid ""
|
625 |
"<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
|
626 |
"\">Blacklist of extra IP addresses prior to country code</dfn>"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: admin/includes/tab-settings.php:
|
630 |
msgid ""
|
631 |
"<dfn title=\"If your server is placed behind the proxy server or the load "
|
632 |
"balancing server, you need to put the appropriate key such as “"
|
@@ -635,7 +644,7 @@ msgid ""
|
|
635 |
"addresses</dfn>"
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: admin/includes/tab-settings.php:
|
639 |
msgid ""
|
640 |
"<dfn title=\"It validates malicious signatures independently of “Block "
|
641 |
"by country” and “Prevent Zero-day Exploit” for the target "
|
@@ -646,18 +655,18 @@ msgid ""
|
|
646 |
"please click to restore.\"><span></span></a>)</nobr>"
|
647 |
msgstr ""
|
648 |
|
649 |
-
#: admin/includes/tab-settings.php:
|
650 |
msgid ""
|
651 |
"<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
|
652 |
msgstr ""
|
653 |
|
654 |
-
#: admin/includes/tab-settings.php:
|
655 |
msgid ""
|
656 |
"<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
|
657 |
"extensions</dfn>"
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: admin/includes/tab-settings.php:
|
661 |
msgid ""
|
662 |
"<dfn title=\"Specify the capabilities to be verified. Depending on the "
|
663 |
"particular type of uploader, certain capability may be required. Default is "
|
@@ -665,14 +674,14 @@ msgid ""
|
|
665 |
"verification will be skipped if empty.\">Capabilities to be verified</dfn>"
|
666 |
msgstr ""
|
667 |
|
668 |
-
#: admin/includes/tab-settings.php:
|
669 |
msgid ""
|
670 |
"( See “<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
|
671 |
"Roles_and_Capabilities\" title=\"Roles and Capabilities « WordPress "
|
672 |
"Codex\">Roles and Capabilities</a>” )"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: admin/includes/tab-settings.php:
|
676 |
msgid ""
|
677 |
"<dfn title=\"It restricts the file types on upload in order to block malware "
|
678 |
"and backdoor via both back-end and front-end. Please consider to select "
|
@@ -681,27 +690,27 @@ msgid ""
|
|
681 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: admin/includes/tab-settings.php:
|
685 |
-
#: admin/includes/tab-settings.php:
|
686 |
msgid "Disable"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: admin/includes/tab-settings.php:
|
690 |
msgid "Verify file extension and MIME type"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: admin/includes/tab-settings.php:
|
694 |
msgid "Verify file extension only"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: admin/includes/tab-settings.php:
|
698 |
#, php-format
|
699 |
msgid ""
|
700 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
701 |
"directory.\">Response code</dfn> %s"
|
702 |
msgstr ""
|
703 |
|
704 |
-
#: admin/includes/tab-settings.php:
|
705 |
msgid ""
|
706 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
707 |
"to a public facing page, visitors would not be blocked on the page to "
|
@@ -710,42 +719,42 @@ msgid ""
|
|
710 |
"\">Redirect URL</dfn>"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: admin/includes/tab-settings.php:
|
714 |
msgid ""
|
715 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
716 |
"message</dfn>"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: admin/includes/tab-settings.php:
|
720 |
msgid ""
|
721 |
"<dfn title=\"This is applied to “XML-RPC” and “Login "
|
722 |
"form”. Lockout period is defined as expiration time at “Cache "
|
723 |
"settings”.\">Max number of failed login attempts per IP address</dfn>"
|
724 |
msgstr ""
|
725 |
|
726 |
-
#: admin/includes/tab-settings.php:
|
727 |
msgid "Select when to run the validation."
|
728 |
msgstr ""
|
729 |
|
730 |
-
#: admin/includes/tab-settings.php:
|
731 |
msgid "Validation timing"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: admin/includes/tab-settings.php:
|
735 |
msgid "“init” action hook"
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: admin/includes/tab-settings.php:
|
739 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: admin/includes/tab-settings.php:
|
743 |
msgid ""
|
744 |
"Validate at “init” action hook in the same manner as typical "
|
745 |
"plugins."
|
746 |
msgstr ""
|
747 |
|
748 |
-
#: admin/includes/tab-settings.php:
|
749 |
msgid ""
|
750 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
751 |
"on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
|
@@ -753,68 +762,110 @@ msgid ""
|
|
753 |
"restrictions</a>."
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: admin/includes/tab-settings.php:
|
757 |
msgid "Back-end target settings"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: admin/includes/tab-settings.php:
|
761 |
#, php-format
|
762 |
msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: admin/includes/tab-settings.php:
|
766 |
msgid "Other areas"
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: admin/includes/tab-settings.php:
|
770 |
msgid "public facing pages"
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: admin/includes/tab-settings.php:
|
774 |
-
#: admin/includes/tab-settings.php:
|
775 |
-
#: admin/includes/tab-settings.php:
|
776 |
msgid "Block by country"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: admin/includes/tab-settings.php:
|
780 |
msgid "Completely close"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
784 |
msgid ""
|
785 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
786 |
"actions</dfn>"
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: admin/includes/tab-settings.php:
|
790 |
msgid "Prevent Zero-day Exploit"
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: admin/includes/tab-settings.php:
|
794 |
msgid ""
|
795 |
"It will block a request related to the services for both public facing pages "
|
796 |
"and the dashboard."
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: admin/includes/tab-settings.php:
|
800 |
msgid ""
|
801 |
"Regardless of the country code, it will block a malicious request related to "
|
802 |
"the services only for the dashboard."
|
803 |
msgstr ""
|
804 |
|
805 |
-
#: admin/includes/tab-settings.php:
|
806 |
msgid "admin post for logged-in user"
|
807 |
msgstr ""
|
808 |
|
809 |
-
#: admin/includes/tab-settings.php:
|
810 |
msgid "admin post for non logged-in user"
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: admin/includes/tab-settings.php:
|
814 |
msgid "Admin ajax/post"
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: admin/includes/tab-settings.php:
|
818 |
msgid ""
|
819 |
"Specify the action name (“action=…”) or the page name "
|
820 |
"(“page=…”) to prevent unintended blocking caused by "
|
@@ -822,33 +873,33 @@ msgid ""
|
|
822 |
"Zero-day Exploit” (for logged-in user)."
|
823 |
msgstr ""
|
824 |
|
825 |
-
#: admin/includes/tab-settings.php:
|
826 |
-
#: admin/includes/tab-settings.php:
|
827 |
msgid "Exceptions"
|
828 |
msgstr ""
|
829 |
|
830 |
-
#: admin/includes/tab-settings.php:
|
831 |
msgid "Toggle with non logged-in user"
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: admin/includes/tab-settings.php:
|
835 |
msgid "Candidate actions/pages"
|
836 |
msgstr ""
|
837 |
|
838 |
-
#: admin/includes/tab-settings.php:
|
839 |
#, php-format
|
840 |
msgid ""
|
841 |
"Regardless of the country code, it will block a malicious request to <code>"
|
842 |
"%s⋯/*.php</code>."
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: admin/includes/tab-settings.php:
|
846 |
msgid ""
|
847 |
"Select the item which causes unintended blocking in order to exclude from "
|
848 |
"the validation target. Grayed item indicates “INACTIVE”."
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: admin/includes/tab-settings.php:
|
852 |
#, php-format
|
853 |
msgid ""
|
854 |
"It configures “%s” to validate a request to the PHP file which "
|
@@ -856,31 +907,31 @@ msgid ""
|
|
856 |
"files beginning with a dot by the server's configuration."
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: admin/includes/tab-settings.php:
|
860 |
msgid "Sorry, but your server type is not supported."
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: admin/includes/tab-settings.php:
|
864 |
msgid "Force to load WP core"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: admin/includes/tab-settings.php:
|
868 |
msgid "Plugins area"
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: admin/includes/tab-settings.php:
|
872 |
msgid "Themes area"
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: admin/includes/tab-settings.php:
|
876 |
msgid "Front-end target settings"
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: admin/includes/tab-settings.php:
|
880 |
msgid "Follow “Validation rule settings”"
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: admin/includes/tab-settings.php:
|
884 |
#, php-format
|
885 |
msgid ""
|
886 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
@@ -888,53 +939,70 @@ msgid ""
|
|
888 |
"\">Response code</dfn> %s"
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: admin/includes/tab-settings.php:
|
892 |
msgid ""
|
893 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: admin/includes/tab-settings.php:
|
897 |
msgid ""
|
898 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
899 |
"target.\">Post type</dfn>"
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: admin/includes/tab-settings.php:
|
903 |
msgid ""
|
904 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
905 |
"page as a blocking target.\">Category</dfn>"
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: admin/includes/tab-settings.php:
|
909 |
msgid ""
|
910 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
911 |
"a blocking target.\">Tag</dfn>"
|
912 |
msgstr ""
|
913 |
|
914 |
-
#: admin/includes/tab-settings.php:
|
915 |
msgid "Specify the validation target on front-end."
|
916 |
msgstr ""
|
917 |
|
918 |
-
#: admin/includes/tab-settings.php:
|
919 |
msgid "Validation target"
|
920 |
msgstr ""
|
921 |
|
922 |
-
#: admin/includes/tab-settings.php:
|
923 |
msgid "All requests"
|
924 |
msgstr ""
|
925 |
|
926 |
-
#: admin/includes/tab-settings.php:
|
927 |
msgid "Specify the targets"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#: admin/includes/tab-settings.php:
|
931 |
msgid ""
|
932 |
"Notice that “Validation timing” is deferred till “"
|
933 |
"wp” action hook. It means that this feature would not be compatible "
|
934 |
"with any page caching."
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
938 |
msgid ""
|
939 |
"A part of user agent string and a qualification connected with a separator "
|
940 |
"that indicates an applicable rule and can be “:” (pass) or "
|
@@ -944,19 +1012,19 @@ msgid ""
|
|
944 |
"qualification”."
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: admin/includes/tab-settings.php:
|
948 |
msgid "UA string and qualification"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: admin/includes/tab-settings.php:
|
952 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: admin/includes/tab-settings.php:
|
956 |
msgid "Excluded actions"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: admin/includes/tab-settings.php:
|
960 |
msgid ""
|
961 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
962 |
"server resources. If it is disabled, “HOST” and “"
|
@@ -964,35 +1032,35 @@ msgid ""
|
|
964 |
"return “true”."
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: admin/includes/tab-settings.php:
|
968 |
msgid "DNS reverse lookup"
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: admin/includes/tab-settings.php:
|
972 |
msgid ""
|
973 |
"It enables to simulate validation without deployment. The results can be "
|
974 |
"found at “Public facing pages” in Logs."
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: admin/includes/tab-settings.php:
|
978 |
msgid "Simulation mode"
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: admin/includes/tab-settings.php:
|
982 |
msgid "Geolocation API settings"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: admin/includes/tab-settings.php:
|
986 |
msgid ""
|
987 |
"<dfn title=\"Cache and local database are scanned at the top priority.\">API "
|
988 |
"selection and key settings</dfn>"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: admin/includes/tab-settings.php:
|
992 |
msgid "Timeout for network API [sec]"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: admin/includes/tab-settings.php:
|
996 |
#, php-format
|
997 |
msgid ""
|
998 |
"Can not find geolocation API libraries in <code>%s</code>. It seems to have "
|
@@ -1007,128 +1075,139 @@ msgid ""
|
|
1007 |
"troubles? | IP Geo Block\">this instruction</a>."
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: admin/includes/tab-settings.php:
|
1011 |
msgid "Local database settings"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: admin/includes/tab-settings.php:
|
1015 |
msgid "database"
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: admin/includes/tab-settings.php:
|
1019 |
#, php-format
|
1020 |
msgid "Last update: %s"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1024 |
msgid "Auto updating (once a month)"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
1028 |
msgid "Download database"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: admin/includes/tab-settings.php:
|
1032 |
msgid "Download now"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
#: admin/includes/tab-settings.php:
|
1036 |
msgid "Statistics and Logs settings"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
-
#: admin/includes/tab-settings.php:
|
1040 |
msgid "Record “Statistics”"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: admin/includes/tab-settings.php:
|
1044 |
msgid "Maximum period for “Statistics” (days)"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
-
#: admin/includes/tab-settings.php:
|
1048 |
msgid "Record “Logs”"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
-
#: admin/includes/tab-settings.php:
|
1052 |
msgid "When requests blocked"
|
1053 |
msgstr ""
|
1054 |
|
1055 |
-
#: admin/includes/tab-settings.php:
|
1056 |
msgid "When requests passed"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: admin/includes/tab-settings.php:
|
1060 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
-
#: admin/includes/tab-settings.php:
|
1064 |
msgid "Unauthenticated visitor"
|
1065 |
msgstr ""
|
1066 |
|
1067 |
-
#: admin/includes/tab-settings.php:
|
1068 |
msgid "Authenticated user"
|
1069 |
msgstr ""
|
1070 |
|
1071 |
-
#: admin/includes/tab-settings.php:
|
1072 |
msgid "All the validation"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
-
#: admin/includes/tab-settings.php:
|
1076 |
msgid "Maximum entries of “Logs”"
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: admin/includes/tab-settings.php:
|
1080 |
msgid ""
|
1081 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
|
1082 |
"recorded with their values in “Logs”</dfn>"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: admin/includes/tab-settings.php:
|
1086 |
msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: admin/includes/tab-settings.php:
|
1090 |
msgid ""
|
1091 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1092 |
"“Live update”</dfn>"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: admin/includes/tab-settings.php:
|
1096 |
msgid "Ordinary file"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: admin/includes/tab-settings.php:
|
1100 |
msgid "In-Memory"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: admin/includes/tab-settings.php:
|
1104 |
msgid "PDO_SQLITE driver not available"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
-
#: admin/includes/tab-settings.php:
|
1108 |
msgid ""
|
1109 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1110 |
"without conflict with other plugins."
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: admin/includes/tab-settings.php:
|
1114 |
msgid ""
|
1115 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1116 |
"with other plugins using this method."
|
1117 |
msgstr ""
|
1118 |
|
1119 |
-
#: admin/includes/tab-settings.php:
|
1120 |
msgid "Reset database source of “Live update”"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: admin/includes/tab-settings.php:
|
1124 |
msgid "Reset now"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
-
#: admin/includes/tab-settings.php:
|
1128 |
msgid "IP address cache settings"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
-
#: admin/includes/tab-settings.php:
|
1132 |
#, php-format
|
1133 |
msgid ""
|
1134 |
"<dfn title=\"If user authentication fails consecutively %d times, subsequent "
|
@@ -1136,121 +1215,121 @@ msgid ""
|
|
1136 |
"\">Expiration time [sec]</dfn>"
|
1137 |
msgstr ""
|
1138 |
|
1139 |
-
#: admin/includes/tab-settings.php:
|
1140 |
msgid "Garbage collection period [sec]"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
-
#: admin/includes/tab-settings.php:
|
1144 |
msgid "Number of entries to be displayed in cache"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
-
#: admin/includes/tab-settings.php:
|
1148 |
msgid "Submission settings"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
-
#: admin/includes/tab-settings.php:
|
1152 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
1153 |
msgstr ""
|
1154 |
|
1155 |
-
#: admin/includes/tab-settings.php:
|
1156 |
msgid "Message on comment form"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
#: admin/includes/tab-settings.php:
|
1160 |
msgid "None"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
-
#: admin/includes/tab-settings.php:
|
1164 |
msgid "Top"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
-
#: admin/includes/tab-settings.php:
|
1168 |
msgid "Bottom"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
-
#: admin/includes/tab-settings.php:
|
1172 |
msgid "Plugin settings"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
-
#: admin/includes/tab-settings.php:
|
1176 |
msgid ""
|
1177 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1178 |
"settings</dfn>"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
-
#: admin/includes/tab-settings.php:
|
1182 |
msgid "Remove all settings at uninstallation"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
-
#: admin/includes/tab-settings.php:
|
1186 |
msgid ""
|
1187 |
"<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
|
1188 |
"dfn>"
|
1189 |
msgstr ""
|
1190 |
|
1191 |
-
#: admin/includes/tab-settings.php:
|
1192 |
msgid ""
|
1193 |
"You need to click the “Save Changes” button for imported "
|
1194 |
"settings to take effect."
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: admin/includes/tab-settings.php:
|
1198 |
msgid "Export / Import settings"
|
1199 |
msgstr ""
|
1200 |
|
1201 |
-
#: admin/includes/tab-settings.php:
|
1202 |
msgid "Export settings"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#: admin/includes/tab-settings.php:
|
1206 |
msgid "Import from the local file"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: admin/includes/tab-settings.php:
|
1210 |
msgid "Import settings"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: admin/includes/tab-settings.php:
|
1214 |
msgid "Import pre-defined settings"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: admin/includes/tab-settings.php:
|
1218 |
msgid ""
|
1219 |
"Import the default settings to revert to the “Right after "
|
1220 |
"installing” state"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
-
#: admin/includes/tab-settings.php:
|
1224 |
msgid "Default settings"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: admin/includes/tab-settings.php:
|
1228 |
msgid ""
|
1229 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1230 |
"for the “Back-end target settings”"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: admin/includes/tab-settings.php:
|
1234 |
msgid "Best for Back-end"
|
1235 |
msgstr ""
|
1236 |
|
1237 |
-
#: admin/includes/tab-settings.php:
|
1238 |
-
msgid "Delete DB
|
1239 |
msgstr ""
|
1240 |
|
1241 |
-
#: admin/includes/tab-settings.php:
|
1242 |
msgid "Delete now"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: admin/includes/tab-settings.php:
|
1246 |
-
msgid "Create DB
|
1247 |
msgstr ""
|
1248 |
|
1249 |
-
#: admin/includes/tab-settings.php:
|
1250 |
msgid "Create now"
|
1251 |
msgstr ""
|
1252 |
|
1253 |
-
#: admin/includes/tab-settings.php:
|
1254 |
msgid ""
|
1255 |
"<dfn title=\"When an unexpected blocking has occurred, please press the "
|
1256 |
"button to find the blocked request in the dumped information which may help "
|
@@ -1259,15 +1338,15 @@ msgid ""
|
|
1259 |
"› Support » IP Geo Block\">support forum</a> ]"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: admin/includes/tab-settings.php:
|
1263 |
msgid "Please copy & paste when submitting your issue to support forum."
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: admin/includes/tab-settings.php:
|
1267 |
msgid "Show information"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: admin/includes/tab-settings.php:
|
1271 |
msgid ""
|
1272 |
"To enhance the protection ability, please refer to “<a rel=\"noreferrer"
|
1273 |
"\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
|
@@ -1275,7 +1354,7 @@ msgid ""
|
|
1275 |
"\">The best practice for target settings</a>”."
|
1276 |
msgstr ""
|
1277 |
|
1278 |
-
#: admin/includes/tab-settings.php:
|
1279 |
msgid ""
|
1280 |
"If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
|
1281 |
"\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
|
@@ -1284,25 +1363,25 @@ msgid ""
|
|
1284 |
"\">Codex</a>."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: admin/includes/tab-settings.php:
|
1288 |
msgid ""
|
1289 |
"While Maxmind and IP2Location will fetch the local database, others will "
|
1290 |
"pass an IP address to the APIs via HTTP."
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
#: admin/includes/tab-settings.php:
|
1294 |
msgid ""
|
1295 |
"Please select the appropriate APIs to fit the privacy law in your country."
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: admin/includes/tab-settings.php:
|
1299 |
#, php-format
|
1300 |
msgid ""
|
1301 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1302 |
"2.0.0+%s."
|
1303 |
msgstr ""
|
1304 |
|
1305 |
-
#: admin/includes/tab-settings.php:
|
1306 |
msgid ""
|
1307 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1308 |
"ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
|
@@ -1310,7 +1389,7 @@ msgid ""
|
|
1310 |
"cache plugin."
|
1311 |
msgstr ""
|
1312 |
|
1313 |
-
#: admin/includes/tab-settings.php:
|
1314 |
msgid ""
|
1315 |
"If you find any issues or have something to suggest, please feel free to "
|
1316 |
"open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
|
@@ -1318,7 +1397,7 @@ msgid ""
|
|
1318 |
"\">support forum</a>."
|
1319 |
msgstr ""
|
1320 |
|
1321 |
-
#: admin/includes/tab-settings.php:
|
1322 |
msgid ""
|
1323 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1324 |
"ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
|
@@ -1416,22 +1495,22 @@ msgid ""
|
|
1416 |
"statistics."
|
1417 |
msgstr ""
|
1418 |
|
1419 |
-
#: classes/class-ip-geo-block-apis.php:
|
1420 |
msgid ""
|
1421 |
"You need to select at least one IP geolocation service. Otherwise "
|
1422 |
"<strong>you'll be blocked</strong> after the cache expires."
|
1423 |
msgstr ""
|
1424 |
|
1425 |
-
#: classes/class-ip-geo-block-cron.php:
|
1426 |
#, php-format
|
1427 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1428 |
msgstr ""
|
1429 |
|
1430 |
-
#: classes/class-ip-geo-block-cron.php:
|
1431 |
msgid "Your database file is up-to-date."
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: classes/class-ip-geo-block-cron.php:
|
1435 |
msgid "gz or zip is not supported on your system."
|
1436 |
msgstr ""
|
1437 |
|
@@ -1453,18 +1532,22 @@ msgid ""
|
|
1453 |
"details."
|
1454 |
msgstr ""
|
1455 |
|
1456 |
-
#: classes/class-ip-geo-block-logs.php:
|
1457 |
#, php-format
|
1458 |
msgid ""
|
1459 |
"Creating a DB table %s had failed. Once de-activate this plugin, and then "
|
1460 |
"activate again."
|
1461 |
msgstr ""
|
1462 |
|
1463 |
-
#: classes/class-ip-geo-block-logs.php:
|
1464 |
#, php-format
|
1465 |
msgid "The user %s (user ID: %d) is in use."
|
1466 |
msgstr ""
|
1467 |
|
|
|
|
|
|
|
|
|
1468 |
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:151
|
1469 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:144
|
1470 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: IP Geo Block 3.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
+
"POT-Creation-Date: 2018-04-02 08:16+0900\n"
|
8 |
+
"PO-Revision-Date: 2018-04-02 08:17+0900\n"
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: admin/class-ip-geo-block-admin.php:268
|
30 |
msgid "Import settings ?"
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: admin/class-ip-geo-block-admin.php:269
|
34 |
msgid "Create table ?"
|
35 |
msgstr ""
|
36 |
|
37 |
+
#: admin/class-ip-geo-block-admin.php:270
|
38 |
msgid "Delete table ?"
|
39 |
msgstr ""
|
40 |
|
41 |
+
#: admin/class-ip-geo-block-admin.php:271
|
42 |
msgid "Clear statistics ?"
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: admin/class-ip-geo-block-admin.php:272
|
46 |
msgid "Clear cache ?"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: admin/class-ip-geo-block-admin.php:273
|
50 |
msgid "Clear logs ?"
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: admin/class-ip-geo-block-admin.php:274
|
54 |
msgid "ajax for logged-in user"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: admin/class-ip-geo-block-admin.php:275
|
58 |
msgid "ajax for non logged-in user"
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: admin/class-ip-geo-block-admin.php:276
|
62 |
#, php-format
|
63 |
msgid "[Found: %d]"
|
64 |
msgstr ""
|
65 |
|
66 |
+
#: admin/class-ip-geo-block-admin.php:277
|
67 |
#, php-format
|
68 |
msgid "Find and verify `%s` on “Logs” tab."
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: admin/class-ip-geo-block-admin.php:278
|
72 |
msgid "This feature is available with HTML5 compliant browsers."
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: admin/class-ip-geo-block-admin.php:279
|
76 |
msgid "The selected row cannot be found in the visible area."
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: admin/class-ip-geo-block-admin.php:280
|
80 |
+
#: admin/class-ip-geo-block-admin.php:1438
|
81 |
#, php-format
|
82 |
msgid "An error occurred while executing the ajax command `%s`."
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: admin/class-ip-geo-block-admin.php:284
|
86 |
msgid "No data available in table"
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: admin/class-ip-geo-block-admin.php:285
|
90 |
msgid "No matching records found"
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: admin/class-ip-geo-block-admin.php:286 admin/includes/tab-geolocation.php:71
|
94 |
msgid "IP address"
|
95 |
msgstr ""
|
96 |
|
97 |
+
#: admin/class-ip-geo-block-admin.php:287
|
98 |
msgid "Code"
|
99 |
msgstr ""
|
100 |
|
101 |
+
#: admin/class-ip-geo-block-admin.php:288
|
102 |
msgid "ASN"
|
103 |
msgstr ""
|
104 |
|
105 |
+
#: admin/class-ip-geo-block-admin.php:289
|
106 |
msgid "Host name"
|
107 |
msgstr ""
|
108 |
|
109 |
+
#: admin/class-ip-geo-block-admin.php:290
|
110 |
msgid "Target"
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: admin/class-ip-geo-block-admin.php:291
|
114 |
msgid "Failure / Total"
|
115 |
msgstr ""
|
116 |
|
117 |
+
#: admin/class-ip-geo-block-admin.php:292
|
118 |
msgid "Elapsed[sec]"
|
119 |
msgstr ""
|
120 |
|
121 |
+
#: admin/class-ip-geo-block-admin.php:293
|
122 |
msgid "Time"
|
123 |
msgstr ""
|
124 |
|
125 |
+
#: admin/class-ip-geo-block-admin.php:294
|
126 |
msgid "Result"
|
127 |
msgstr ""
|
128 |
|
129 |
+
#: admin/class-ip-geo-block-admin.php:295
|
130 |
msgid "Request"
|
131 |
msgstr ""
|
132 |
|
133 |
+
#: admin/class-ip-geo-block-admin.php:296
|
134 |
msgid "User agent"
|
135 |
msgstr ""
|
136 |
|
137 |
+
#: admin/class-ip-geo-block-admin.php:297
|
138 |
msgid "HTTP headers"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: admin/class-ip-geo-block-admin.php:298
|
142 |
msgid "$_POST data"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: admin/class-ip-geo-block-admin.php:324
|
146 |
msgid "Contribute on GitHub"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: admin/class-ip-geo-block-admin.php:338
|
150 |
+
#: admin/class-ip-geo-block-admin.php:446
|
151 |
+
#: admin/class-ip-geo-block-admin.php:664
|
152 |
+
#: admin/class-ip-geo-block-admin.php:683
|
153 |
msgid "Settings"
|
154 |
msgstr ""
|
155 |
|
|
|
156 |
#: admin/class-ip-geo-block-admin.php:425
|
157 |
+
#: admin/class-ip-geo-block-admin.php:426
|
158 |
#: admin/class-ip-geo-block-admin.php:436
|
159 |
+
#: admin/class-ip-geo-block-admin.php:437
|
160 |
+
#: admin/class-ip-geo-block-admin.php:445
|
161 |
+
#: admin/class-ip-geo-block-admin.php:453
|
162 |
msgid "IP Geo Block"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: admin/class-ip-geo-block-admin.php:454
|
166 |
+
#: admin/class-ip-geo-block-admin.php:668
|
167 |
+
#: admin/class-ip-geo-block-admin.php:684
|
168 |
msgid "Site List"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: admin/class-ip-geo-block-admin.php:483
|
172 |
msgid "You need WordPress 3.7+."
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: admin/class-ip-geo-block-admin.php:489
|
176 |
#, php-format
|
177 |
msgid ""
|
178 |
"Now downloading geolocation databases in background. After a little while, "
|
180 |
"strong>” at <a href=\"%s\">Validation rule settings</a>."
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: admin/class-ip-geo-block-admin.php:495
|
184 |
#, php-format
|
185 |
msgid ""
|
186 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
187 |
"confirm it at <a href=\"%s\">Validation rule settings</a>."
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: admin/class-ip-geo-block-admin.php:504
|
191 |
msgid "Local database and matching rule have been updated."
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: admin/class-ip-geo-block-admin.php:515
|
195 |
msgid ""
|
196 |
"Once you logout, you will be unable to login again because the number of "
|
197 |
"login attempts reaches the limit."
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: admin/class-ip-geo-block-admin.php:517
|
201 |
#, php-format
|
202 |
msgid ""
|
203 |
"Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
|
204 |
"tab</a> to prevent locking yourself out."
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: admin/class-ip-geo-block-admin.php:527
|
208 |
msgid ""
|
209 |
"Once you logout, you will be unable to login again because your country code "
|
210 |
"or IP address is in the blacklist."
|
211 |
msgstr ""
|
212 |
|
213 |
+
#: admin/class-ip-geo-block-admin.php:528
|
214 |
msgid ""
|
215 |
"Once you logout, you will be unable to login again because your country code "
|
216 |
"or IP address is not in the whitelist."
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: admin/class-ip-geo-block-admin.php:532
|
220 |
#, php-format
|
221 |
msgid "Please check your “%sValidation rule settings%s”."
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: admin/class-ip-geo-block-admin.php:536
|
225 |
#, php-format
|
226 |
msgid ""
|
227 |
"Please confirm your local geolocation databases at “%sLocal database "
|
229 |
"%sStatistics in cache%s” section."
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: admin/class-ip-geo-block-admin.php:549
|
233 |
msgid ""
|
234 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
235 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
236 |
"select “init” action hook."
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: admin/class-ip-geo-block-admin.php:665
|
240 |
msgid "Statistics"
|
241 |
msgstr ""
|
242 |
|
243 |
+
#: admin/class-ip-geo-block-admin.php:666
|
244 |
msgid "Logs"
|
245 |
msgstr ""
|
246 |
|
247 |
+
#: admin/class-ip-geo-block-admin.php:667
|
248 |
msgid "Search"
|
249 |
msgstr ""
|
250 |
|
251 |
+
#: admin/class-ip-geo-block-admin.php:669
|
252 |
msgid "Attribution"
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: admin/class-ip-geo-block-admin.php:697
|
256 |
msgid "Network wide"
|
257 |
msgstr ""
|
258 |
|
259 |
+
#: admin/class-ip-geo-block-admin.php:710
|
260 |
msgid "Toggle all"
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: admin/class-ip-geo-block-admin.php:713
|
264 |
msgid ""
|
265 |
"Independent of “Statistics and Logs settings”, you can see all "
|
266 |
"the requests validated by this plugin in almost real time."
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: admin/class-ip-geo-block-admin.php:713 admin/includes/tab-accesslog.php:39
|
270 |
msgid "Live update"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: admin/class-ip-geo-block-admin.php:717
|
274 |
msgid "Open a new window on clicking the link in the chart."
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: admin/class-ip-geo-block-admin.php:717
|
278 |
msgid "Open a new window"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: admin/class-ip-geo-block-admin.php:740
|
282 |
msgid "Thanks for providing these great services for free."
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: admin/class-ip-geo-block-admin.php:741
|
286 |
msgid ""
|
287 |
"(Most browsers will redirect you to each site <a href=\"http://www."
|
288 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
289 |
"when you click the link</a>.)"
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: admin/class-ip-geo-block-admin.php:746
|
293 |
msgid "Back to top"
|
294 |
msgstr ""
|
295 |
|
296 |
+
#: admin/class-ip-geo-block-admin.php:842
|
297 |
msgid "Enable"
|
298 |
msgstr ""
|
299 |
|
300 |
+
#: admin/class-ip-geo-block-admin.php:857
|
301 |
msgid "Select one"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: admin/class-ip-geo-block-admin.php:1232
|
305 |
+
msgid "You do not have sufficient permissions to access this page."
|
306 |
+
msgstr ""
|
307 |
+
|
308 |
+
#: admin/class-ip-geo-block-admin.php:1259
|
309 |
#: admin/includes/class-admin-rewrite.php:194
|
310 |
+
#: classes/class-ip-geo-block-cron.php:212
|
311 |
+
#: classes/class-ip-geo-block-cron.php:316
|
312 |
+
#: classes/class-ip-geo-block-cron.php:390
|
313 |
+
#: classes/class-ip-geo-block-opts.php:438
|
314 |
#, php-format
|
315 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: admin/class-ip-geo-block-admin.php:1289
|
319 |
msgid "Settings saved."
|
320 |
msgstr ""
|
321 |
|
335 |
msgstr ""
|
336 |
|
337 |
#: admin/includes/class-admin-rewrite.php:168
|
338 |
+
#: classes/class-ip-geo-block-cron.php:207
|
339 |
+
#: classes/class-ip-geo-block-cron.php:385
|
340 |
#, php-format
|
341 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
342 |
msgstr ""
|
356 |
msgid "Validation logs"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: admin/includes/tab-accesslog.php:19 admin/includes/tab-settings.php:764
|
360 |
+
#: admin/includes/tab-settings.php:1146
|
361 |
+
msgid "Help"
|
362 |
+
msgstr ""
|
363 |
+
|
364 |
+
#: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:456
|
365 |
msgid "Comment post"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:457
|
369 |
msgid "XML-RPC"
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:458
|
373 |
msgid "Login form"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:459
|
377 |
msgid "Admin area"
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:461
|
381 |
msgid "Public facing pages"
|
382 |
msgstr ""
|
383 |
|
435 |
msgid "Export logs"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: admin/includes/tab-accesslog.php:152 admin/includes/tab-settings.php:1563
|
439 |
msgid "Export to the local file"
|
440 |
msgstr ""
|
441 |
|
591 |
msgstr ""
|
592 |
|
593 |
#: admin/includes/tab-settings.php:120
|
594 |
+
msgid "Open CIDR calculator for IPv4 / IPv6."
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:795
|
598 |
msgid "Matching rule"
|
599 |
msgstr ""
|
600 |
|
629 |
"for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: admin/includes/tab-settings.php:228
|
633 |
msgid ""
|
634 |
"<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
|
635 |
"\">Blacklist of extra IP addresses prior to country code</dfn>"
|
636 |
msgstr ""
|
637 |
|
638 |
+
#: admin/includes/tab-settings.php:251
|
639 |
msgid ""
|
640 |
"<dfn title=\"If your server is placed behind the proxy server or the load "
|
641 |
"balancing server, you need to put the appropriate key such as “"
|
644 |
"addresses</dfn>"
|
645 |
msgstr ""
|
646 |
|
647 |
+
#: admin/includes/tab-settings.php:270
|
648 |
msgid ""
|
649 |
"<dfn title=\"It validates malicious signatures independently of “Block "
|
650 |
"by country” and “Prevent Zero-day Exploit” for the target "
|
655 |
"please click to restore.\"><span></span></a>)</nobr>"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: admin/includes/tab-settings.php:284
|
659 |
msgid ""
|
660 |
"<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: admin/includes/tab-settings.php:295
|
664 |
msgid ""
|
665 |
"<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
|
666 |
"extensions</dfn>"
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: admin/includes/tab-settings.php:299
|
670 |
msgid ""
|
671 |
"<dfn title=\"Specify the capabilities to be verified. Depending on the "
|
672 |
"particular type of uploader, certain capability may be required. Default is "
|
674 |
"verification will be skipped if empty.\">Capabilities to be verified</dfn>"
|
675 |
msgstr ""
|
676 |
|
677 |
+
#: admin/includes/tab-settings.php:299
|
678 |
msgid ""
|
679 |
"( See “<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
|
680 |
"Roles_and_Capabilities\" title=\"Roles and Capabilities « WordPress "
|
681 |
"Codex\">Roles and Capabilities</a>” )"
|
682 |
msgstr ""
|
683 |
|
684 |
+
#: admin/includes/tab-settings.php:306
|
685 |
msgid ""
|
686 |
"<dfn title=\"It restricts the file types on upload in order to block malware "
|
687 |
"and backdoor via both back-end and front-end. Please consider to select "
|
690 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: admin/includes/tab-settings.php:317 admin/includes/tab-settings.php:498
|
694 |
+
#: admin/includes/tab-settings.php:622 admin/includes/tab-settings.php:1272
|
695 |
msgid "Disable"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: admin/includes/tab-settings.php:318
|
699 |
msgid "Verify file extension and MIME type"
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: admin/includes/tab-settings.php:319
|
703 |
msgid "Verify file extension only"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: admin/includes/tab-settings.php:329
|
707 |
#, php-format
|
708 |
msgid ""
|
709 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
710 |
"directory.\">Response code</dfn> %s"
|
711 |
msgstr ""
|
712 |
|
713 |
+
#: admin/includes/tab-settings.php:359 admin/includes/tab-settings.php:882
|
714 |
msgid ""
|
715 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
716 |
"to a public facing page, visitors would not be blocked on the page to "
|
719 |
"\">Redirect URL</dfn>"
|
720 |
msgstr ""
|
721 |
|
722 |
+
#: admin/includes/tab-settings.php:377 admin/includes/tab-settings.php:901
|
723 |
msgid ""
|
724 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
725 |
"message</dfn>"
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: admin/includes/tab-settings.php:394
|
729 |
msgid ""
|
730 |
"<dfn title=\"This is applied to “XML-RPC” and “Login "
|
731 |
"form”. Lockout period is defined as expiration time at “Cache "
|
732 |
"settings”.\">Max number of failed login attempts per IP address</dfn>"
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: admin/includes/tab-settings.php:422
|
736 |
msgid "Select when to run the validation."
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: admin/includes/tab-settings.php:422
|
740 |
msgid "Validation timing"
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: admin/includes/tab-settings.php:433
|
744 |
msgid "“init” action hook"
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: admin/includes/tab-settings.php:434
|
748 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: admin/includes/tab-settings.php:437
|
752 |
msgid ""
|
753 |
"Validate at “init” action hook in the same manner as typical "
|
754 |
"plugins."
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: admin/includes/tab-settings.php:438
|
758 |
msgid ""
|
759 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
760 |
"on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
|
762 |
"restrictions</a>."
|
763 |
msgstr ""
|
764 |
|
765 |
+
#: admin/includes/tab-settings.php:448
|
766 |
msgid "Back-end target settings"
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: admin/includes/tab-settings.php:454
|
770 |
#, php-format
|
771 |
msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
|
772 |
msgstr ""
|
773 |
|
774 |
+
#: admin/includes/tab-settings.php:460
|
775 |
msgid "Other areas"
|
776 |
msgstr ""
|
777 |
|
778 |
+
#: admin/includes/tab-settings.php:461
|
779 |
msgid "public facing pages"
|
780 |
msgstr ""
|
781 |
|
782 |
+
#: admin/includes/tab-settings.php:479 admin/includes/tab-settings.php:499
|
783 |
+
#: admin/includes/tab-settings.php:532 admin/includes/tab-settings.php:538
|
784 |
+
#: admin/includes/tab-settings.php:783
|
785 |
msgid "Block by country"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: admin/includes/tab-settings.php:500
|
789 |
msgid "Completely close"
|
790 |
msgstr ""
|
791 |
|
792 |
+
#: admin/includes/tab-settings.php:506
|
793 |
+
msgid "Action to login as a registered user."
|
794 |
+
msgstr ""
|
795 |
+
|
796 |
+
#: admin/includes/tab-settings.php:506
|
797 |
+
msgid "Log in"
|
798 |
+
msgstr ""
|
799 |
+
|
800 |
+
#: admin/includes/tab-settings.php:507
|
801 |
+
msgid "Action to register new users."
|
802 |
+
msgstr ""
|
803 |
+
|
804 |
+
#: admin/includes/tab-settings.php:507
|
805 |
+
msgid "Register"
|
806 |
+
msgstr ""
|
807 |
+
|
808 |
+
#: admin/includes/tab-settings.php:508
|
809 |
+
msgid "Action to reset a password to create a new one."
|
810 |
+
msgstr ""
|
811 |
+
|
812 |
+
#: admin/includes/tab-settings.php:508
|
813 |
+
msgid "Password Reset"
|
814 |
+
msgstr ""
|
815 |
+
|
816 |
+
#: admin/includes/tab-settings.php:509
|
817 |
+
msgid "Action to email a password to a registered user."
|
818 |
+
msgstr ""
|
819 |
+
|
820 |
+
#: admin/includes/tab-settings.php:509
|
821 |
+
msgid "Lost Password"
|
822 |
+
msgstr ""
|
823 |
+
|
824 |
+
#: admin/includes/tab-settings.php:510
|
825 |
+
msgid ""
|
826 |
+
"Action to show prompt to enter a password on password protected post and "
|
827 |
+
"page."
|
828 |
+
msgstr ""
|
829 |
+
|
830 |
+
#: admin/includes/tab-settings.php:510
|
831 |
+
msgid "Password protected"
|
832 |
+
msgstr ""
|
833 |
+
|
834 |
+
#: admin/includes/tab-settings.php:533
|
835 |
msgid ""
|
836 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
837 |
"actions</dfn>"
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: admin/includes/tab-settings.php:539
|
841 |
msgid "Prevent Zero-day Exploit"
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: admin/includes/tab-settings.php:543
|
845 |
msgid ""
|
846 |
"It will block a request related to the services for both public facing pages "
|
847 |
"and the dashboard."
|
848 |
msgstr ""
|
849 |
|
850 |
+
#: admin/includes/tab-settings.php:544
|
851 |
msgid ""
|
852 |
"Regardless of the country code, it will block a malicious request related to "
|
853 |
"the services only for the dashboard."
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: admin/includes/tab-settings.php:567
|
857 |
msgid "admin post for logged-in user"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: admin/includes/tab-settings.php:568
|
861 |
msgid "admin post for non logged-in user"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: admin/includes/tab-settings.php:592
|
865 |
msgid "Admin ajax/post"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: admin/includes/tab-settings.php:606
|
869 |
msgid ""
|
870 |
"Specify the action name (“action=…”) or the page name "
|
871 |
"(“page=…”) to prevent unintended blocking caused by "
|
873 |
"Zero-day Exploit” (for logged-in user)."
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: admin/includes/tab-settings.php:606 admin/includes/tab-settings.php:684
|
877 |
+
#: admin/includes/tab-settings.php:745
|
878 |
msgid "Exceptions"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: admin/includes/tab-settings.php:607
|
882 |
msgid "Toggle with non logged-in user"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: admin/includes/tab-settings.php:610
|
886 |
msgid "Candidate actions/pages"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: admin/includes/tab-settings.php:624
|
890 |
#, php-format
|
891 |
msgid ""
|
892 |
"Regardless of the country code, it will block a malicious request to <code>"
|
893 |
"%s⋯/*.php</code>."
|
894 |
msgstr ""
|
895 |
|
896 |
+
#: admin/includes/tab-settings.php:625
|
897 |
msgid ""
|
898 |
"Select the item which causes unintended blocking in order to exclude from "
|
899 |
"the validation target. Grayed item indicates “INACTIVE”."
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: admin/includes/tab-settings.php:626
|
903 |
#, php-format
|
904 |
msgid ""
|
905 |
"It configures “%s” to validate a request to the PHP file which "
|
907 |
"files beginning with a dot by the server's configuration."
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: admin/includes/tab-settings.php:627
|
911 |
msgid "Sorry, but your server type is not supported."
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: admin/includes/tab-settings.php:663 admin/includes/tab-settings.php:724
|
915 |
msgid "Force to load WP core"
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: admin/includes/tab-settings.php:668
|
919 |
msgid "Plugins area"
|
920 |
msgstr ""
|
921 |
|
922 |
+
#: admin/includes/tab-settings.php:729
|
923 |
msgid "Themes area"
|
924 |
msgstr ""
|
925 |
|
926 |
+
#: admin/includes/tab-settings.php:764
|
927 |
msgid "Front-end target settings"
|
928 |
msgstr ""
|
929 |
|
930 |
+
#: admin/includes/tab-settings.php:788
|
931 |
msgid "Follow “Validation rule settings”"
|
932 |
msgstr ""
|
933 |
|
934 |
+
#: admin/includes/tab-settings.php:850
|
935 |
#, php-format
|
936 |
msgid ""
|
937 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
939 |
"\">Response code</dfn> %s"
|
940 |
msgstr ""
|
941 |
|
942 |
+
#: admin/includes/tab-settings.php:916
|
943 |
msgid ""
|
944 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
945 |
msgstr ""
|
946 |
|
947 |
+
#: admin/includes/tab-settings.php:928
|
948 |
msgid ""
|
949 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
950 |
"target.\">Post type</dfn>"
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: admin/includes/tab-settings.php:940
|
954 |
msgid ""
|
955 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
956 |
"page as a blocking target.\">Category</dfn>"
|
957 |
msgstr ""
|
958 |
|
959 |
+
#: admin/includes/tab-settings.php:952
|
960 |
msgid ""
|
961 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
962 |
"a blocking target.\">Tag</dfn>"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: admin/includes/tab-settings.php:967
|
966 |
msgid "Specify the validation target on front-end."
|
967 |
msgstr ""
|
968 |
|
969 |
+
#: admin/includes/tab-settings.php:967
|
970 |
msgid "Validation target"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: admin/includes/tab-settings.php:978
|
974 |
msgid "All requests"
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: admin/includes/tab-settings.php:979
|
978 |
msgid "Specify the targets"
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: admin/includes/tab-settings.php:982
|
982 |
msgid ""
|
983 |
"Notice that “Validation timing” is deferred till “"
|
984 |
"wp” action hook. It means that this feature would not be compatible "
|
985 |
"with any page caching."
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: admin/includes/tab-settings.php:989
|
989 |
+
msgid ""
|
990 |
+
"<dfn title=\"Specify the frequency of request for certain period of time."
|
991 |
+
"\">Blocking condition</dfn>"
|
992 |
+
msgstr ""
|
993 |
+
|
994 |
+
#: admin/includes/tab-settings.php:991
|
995 |
+
#, php-format
|
996 |
+
msgid "More than %1$s page view (PV) in %2$s seconds"
|
997 |
+
msgstr ""
|
998 |
+
|
999 |
+
#: admin/includes/tab-settings.php:1000
|
1000 |
+
msgid ""
|
1001 |
+
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1002 |
+
"behaved bots and crawlers</dfn>"
|
1003 |
+
msgstr ""
|
1004 |
+
|
1005 |
+
#: admin/includes/tab-settings.php:1018
|
1006 |
msgid ""
|
1007 |
"A part of user agent string and a qualification connected with a separator "
|
1008 |
"that indicates an applicable rule and can be “:” (pass) or "
|
1012 |
"qualification”."
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: admin/includes/tab-settings.php:1018
|
1016 |
msgid "UA string and qualification"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: admin/includes/tab-settings.php:1037
|
1020 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: admin/includes/tab-settings.php:1037
|
1024 |
msgid "Excluded actions"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: admin/includes/tab-settings.php:1056
|
1028 |
msgid ""
|
1029 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1030 |
"server resources. If it is disabled, “HOST” and “"
|
1032 |
"return “true”."
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: admin/includes/tab-settings.php:1056
|
1036 |
msgid "DNS reverse lookup"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
+
#: admin/includes/tab-settings.php:1073
|
1040 |
msgid ""
|
1041 |
"It enables to simulate validation without deployment. The results can be "
|
1042 |
"found at “Public facing pages” in Logs."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: admin/includes/tab-settings.php:1073
|
1046 |
msgid "Simulation mode"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: admin/includes/tab-settings.php:1091
|
1050 |
msgid "Geolocation API settings"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: admin/includes/tab-settings.php:1100
|
1054 |
msgid ""
|
1055 |
"<dfn title=\"Cache and local database are scanned at the top priority.\">API "
|
1056 |
"selection and key settings</dfn>"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: admin/includes/tab-settings.php:1119
|
1060 |
msgid "Timeout for network API [sec]"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
+
#: admin/includes/tab-settings.php:1139
|
1064 |
#, php-format
|
1065 |
msgid ""
|
1066 |
"Can not find geolocation API libraries in <code>%s</code>. It seems to have "
|
1075 |
"troubles? | IP Geo Block\">this instruction</a>."
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: admin/includes/tab-settings.php:1146
|
1079 |
msgid "Local database settings"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: admin/includes/tab-settings.php:1160
|
1083 |
msgid "database"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: admin/includes/tab-settings.php:1161 classes/class-ip-geo-block-cron.php:414
|
1087 |
#, php-format
|
1088 |
msgid "Last update: %s"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: admin/includes/tab-settings.php:1174 admin/includes/tab-settings.php:1408
|
1092 |
+
msgid ""
|
1093 |
+
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1094 |
+
"once and activate again."
|
1095 |
+
msgstr ""
|
1096 |
+
|
1097 |
+
#: admin/includes/tab-settings.php:1180
|
1098 |
msgid "Auto updating (once a month)"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
+
#: admin/includes/tab-settings.php:1191 admin/includes/tab-settings.php:1423
|
1102 |
+
#, php-format
|
1103 |
+
msgid "Next schedule: %s"
|
1104 |
+
msgstr ""
|
1105 |
+
|
1106 |
+
#: admin/includes/tab-settings.php:1198
|
1107 |
msgid "Download database"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
#: admin/includes/tab-settings.php:1206
|
1111 |
msgid "Download now"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: admin/includes/tab-settings.php:1217
|
1115 |
msgid "Statistics and Logs settings"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: admin/includes/tab-settings.php:1226
|
1119 |
msgid "Record “Statistics”"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: admin/includes/tab-settings.php:1243
|
1123 |
msgid "Maximum period for “Statistics” (days)"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
#: admin/includes/tab-settings.php:1261
|
1127 |
msgid "Record “Logs”"
|
1128 |
msgstr ""
|
1129 |
|
1130 |
+
#: admin/includes/tab-settings.php:1273
|
1131 |
msgid "When requests blocked"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: admin/includes/tab-settings.php:1274
|
1135 |
msgid "When requests passed"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: admin/includes/tab-settings.php:1275
|
1139 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: admin/includes/tab-settings.php:1276
|
1143 |
msgid "Unauthenticated visitor"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: admin/includes/tab-settings.php:1277
|
1147 |
msgid "Authenticated user"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: admin/includes/tab-settings.php:1278
|
1151 |
msgid "All the validation"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: admin/includes/tab-settings.php:1287
|
1155 |
msgid "Maximum entries of “Logs”"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: admin/includes/tab-settings.php:1304
|
1159 |
msgid ""
|
1160 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
|
1161 |
"recorded with their values in “Logs”</dfn>"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
+
#: admin/includes/tab-settings.php:1322
|
1165 |
msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
+
#: admin/includes/tab-settings.php:1339
|
1169 |
msgid ""
|
1170 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1171 |
"“Live update”</dfn>"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
+
#: admin/includes/tab-settings.php:1351
|
1175 |
msgid "Ordinary file"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: admin/includes/tab-settings.php:1352
|
1179 |
msgid "In-Memory"
|
1180 |
msgstr ""
|
1181 |
|
1182 |
+
#: admin/includes/tab-settings.php:1355
|
1183 |
msgid "PDO_SQLITE driver not available"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
+
#: admin/includes/tab-settings.php:1356
|
1187 |
msgid ""
|
1188 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1189 |
"without conflict with other plugins."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
+
#: admin/includes/tab-settings.php:1357
|
1193 |
msgid ""
|
1194 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1195 |
"with other plugins using this method."
|
1196 |
msgstr ""
|
1197 |
|
1198 |
+
#: admin/includes/tab-settings.php:1366
|
1199 |
msgid "Reset database source of “Live update”"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
+
#: admin/includes/tab-settings.php:1374
|
1203 |
msgid "Reset now"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
+
#: admin/includes/tab-settings.php:1385
|
1207 |
msgid "IP address cache settings"
|
1208 |
msgstr ""
|
1209 |
|
1210 |
+
#: admin/includes/tab-settings.php:1394
|
1211 |
#, php-format
|
1212 |
msgid ""
|
1213 |
"<dfn title=\"If user authentication fails consecutively %d times, subsequent "
|
1215 |
"\">Expiration time [sec]</dfn>"
|
1216 |
msgstr ""
|
1217 |
|
1218 |
+
#: admin/includes/tab-settings.php:1414
|
1219 |
msgid "Garbage collection period [sec]"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: admin/includes/tab-settings.php:1432
|
1223 |
msgid "Number of entries to be displayed in cache"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: admin/includes/tab-settings.php:1450
|
1227 |
msgid "Submission settings"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: admin/includes/tab-settings.php:1462
|
1231 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: admin/includes/tab-settings.php:1462
|
1235 |
msgid "Message on comment form"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
+
#: admin/includes/tab-settings.php:1474
|
1239 |
msgid "None"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: admin/includes/tab-settings.php:1475
|
1243 |
msgid "Top"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
+
#: admin/includes/tab-settings.php:1476
|
1247 |
msgid "Bottom"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
+
#: admin/includes/tab-settings.php:1487
|
1251 |
msgid "Plugin settings"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
#: admin/includes/tab-settings.php:1500
|
1255 |
msgid ""
|
1256 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1257 |
"settings</dfn>"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: admin/includes/tab-settings.php:1518
|
1261 |
msgid "Remove all settings at uninstallation"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: admin/includes/tab-settings.php:1536
|
1265 |
msgid ""
|
1266 |
"<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
|
1267 |
"dfn>"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
+
#: admin/includes/tab-settings.php:1550
|
1271 |
msgid ""
|
1272 |
"You need to click the “Save Changes” button for imported "
|
1273 |
"settings to take effect."
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: admin/includes/tab-settings.php:1556
|
1277 |
msgid "Export / Import settings"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: admin/includes/tab-settings.php:1563
|
1281 |
msgid "Export settings"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
#: admin/includes/tab-settings.php:1564
|
1285 |
msgid "Import from the local file"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
+
#: admin/includes/tab-settings.php:1564
|
1289 |
msgid "Import settings"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: admin/includes/tab-settings.php:1573
|
1293 |
msgid "Import pre-defined settings"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: admin/includes/tab-settings.php:1580
|
1297 |
msgid ""
|
1298 |
"Import the default settings to revert to the “Right after "
|
1299 |
"installing” state"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
+
#: admin/includes/tab-settings.php:1580
|
1303 |
msgid "Default settings"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
+
#: admin/includes/tab-settings.php:1581
|
1307 |
msgid ""
|
1308 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1309 |
"for the “Back-end target settings”"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: admin/includes/tab-settings.php:1581
|
1313 |
msgid "Best for Back-end"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: admin/includes/tab-settings.php:1591
|
1317 |
+
msgid "Delete DB tables for this plugin"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: admin/includes/tab-settings.php:1599
|
1321 |
msgid "Delete now"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: admin/includes/tab-settings.php:1607
|
1325 |
+
msgid "Create DB tables for this plugin"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: admin/includes/tab-settings.php:1615
|
1329 |
msgid "Create now"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: admin/includes/tab-settings.php:1625
|
1333 |
msgid ""
|
1334 |
"<dfn title=\"When an unexpected blocking has occurred, please press the "
|
1335 |
"button to find the blocked request in the dumped information which may help "
|
1338 |
"› Support » IP Geo Block\">support forum</a> ]"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
+
#: admin/includes/tab-settings.php:1632
|
1342 |
msgid "Please copy & paste when submitting your issue to support forum."
|
1343 |
msgstr ""
|
1344 |
|
1345 |
+
#: admin/includes/tab-settings.php:1632
|
1346 |
msgid "Show information"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
+
#: admin/includes/tab-settings.php:1648
|
1350 |
msgid ""
|
1351 |
"To enhance the protection ability, please refer to “<a rel=\"noreferrer"
|
1352 |
"\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
|
1354 |
"\">The best practice for target settings</a>”."
|
1355 |
msgstr ""
|
1356 |
|
1357 |
+
#: admin/includes/tab-settings.php:1649
|
1358 |
msgid ""
|
1359 |
"If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
|
1360 |
"\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
|
1363 |
"\">Codex</a>."
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: admin/includes/tab-settings.php:1656
|
1367 |
msgid ""
|
1368 |
"While Maxmind and IP2Location will fetch the local database, others will "
|
1369 |
"pass an IP address to the APIs via HTTP."
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: admin/includes/tab-settings.php:1657
|
1373 |
msgid ""
|
1374 |
"Please select the appropriate APIs to fit the privacy law in your country."
|
1375 |
msgstr ""
|
1376 |
|
1377 |
+
#: admin/includes/tab-settings.php:1666
|
1378 |
#, php-format
|
1379 |
msgid ""
|
1380 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1381 |
"2.0.0+%s."
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: admin/includes/tab-settings.php:1674
|
1385 |
msgid ""
|
1386 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1387 |
"ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
|
1389 |
"cache plugin."
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: admin/includes/tab-settings.php:1675
|
1393 |
msgid ""
|
1394 |
"If you find any issues or have something to suggest, please feel free to "
|
1395 |
"open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
|
1397 |
"\">support forum</a>."
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: admin/includes/tab-settings.php:1682
|
1401 |
msgid ""
|
1402 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1403 |
"ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
|
1495 |
"statistics."
|
1496 |
msgstr ""
|
1497 |
|
1498 |
+
#: classes/class-ip-geo-block-apis.php:667
|
1499 |
msgid ""
|
1500 |
"You need to select at least one IP geolocation service. Otherwise "
|
1501 |
"<strong>you'll be blocked</strong> after the cache expires."
|
1502 |
msgstr ""
|
1503 |
|
1504 |
+
#: classes/class-ip-geo-block-cron.php:217
|
1505 |
#, php-format
|
1506 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1507 |
msgstr ""
|
1508 |
|
1509 |
+
#: classes/class-ip-geo-block-cron.php:296
|
1510 |
msgid "Your database file is up-to-date."
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: classes/class-ip-geo-block-cron.php:395
|
1514 |
msgid "gz or zip is not supported on your system."
|
1515 |
msgstr ""
|
1516 |
|
1532 |
"details."
|
1533 |
msgstr ""
|
1534 |
|
1535 |
+
#: classes/class-ip-geo-block-logs.php:157
|
1536 |
#, php-format
|
1537 |
msgid ""
|
1538 |
"Creating a DB table %s had failed. Once de-activate this plugin, and then "
|
1539 |
"activate again."
|
1540 |
msgstr ""
|
1541 |
|
1542 |
+
#: classes/class-ip-geo-block-logs.php:635
|
1543 |
#, php-format
|
1544 |
msgid "The user %s (user ID: %d) is in use."
|
1545 |
msgstr ""
|
1546 |
|
1547 |
+
#: classes/class-ip-geo-block.php:417
|
1548 |
+
msgid "Dashboard"
|
1549 |
+
msgstr ""
|
1550 |
+
|
1551 |
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:151
|
1552 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:144
|
1553 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
languages/ip-geo-block.pot
CHANGED
@@ -4,8 +4,8 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: IP Geo Block 3.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
-
"POT-Creation-Date: 2018-
|
8 |
-
"PO-Revision-Date: 2018-
|
9 |
"Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
|
10 |
"Language-Team: \n"
|
11 |
"Language: en_001\n"
|
@@ -26,153 +26,153 @@ msgid ""
|
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: admin/class-ip-geo-block-admin.php:
|
30 |
msgid "Import settings ?"
|
31 |
msgstr ""
|
32 |
|
33 |
-
#: admin/class-ip-geo-block-admin.php:
|
34 |
msgid "Create table ?"
|
35 |
msgstr ""
|
36 |
|
37 |
-
#: admin/class-ip-geo-block-admin.php:
|
38 |
msgid "Delete table ?"
|
39 |
msgstr ""
|
40 |
|
41 |
-
#: admin/class-ip-geo-block-admin.php:
|
42 |
msgid "Clear statistics ?"
|
43 |
msgstr ""
|
44 |
|
45 |
-
#: admin/class-ip-geo-block-admin.php:
|
46 |
msgid "Clear cache ?"
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: admin/class-ip-geo-block-admin.php:
|
50 |
msgid "Clear logs ?"
|
51 |
msgstr ""
|
52 |
|
53 |
-
#: admin/class-ip-geo-block-admin.php:
|
54 |
msgid "ajax for logged-in user"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: admin/class-ip-geo-block-admin.php:
|
58 |
msgid "ajax for non logged-in user"
|
59 |
msgstr ""
|
60 |
|
61 |
-
#: admin/class-ip-geo-block-admin.php:
|
62 |
#, php-format
|
63 |
msgid "[Found: %d]"
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: admin/class-ip-geo-block-admin.php:
|
67 |
#, php-format
|
68 |
msgid "Find and verify `%s` on “Logs” tab."
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: admin/class-ip-geo-block-admin.php:
|
72 |
msgid "This feature is available with HTML5 compliant browsers."
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: admin/class-ip-geo-block-admin.php:
|
76 |
msgid "The selected row cannot be found in the visible area."
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: admin/class-ip-geo-block-admin.php:
|
80 |
-
#: admin/class-ip-geo-block-admin.php:
|
81 |
#, php-format
|
82 |
msgid "An error occurred while executing the ajax command `%s`."
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: admin/class-ip-geo-block-admin.php:
|
86 |
msgid "No data available in table"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: admin/class-ip-geo-block-admin.php:
|
90 |
msgid "No matching records found"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: admin/class-ip-geo-block-admin.php:
|
94 |
msgid "IP address"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: admin/class-ip-geo-block-admin.php:
|
98 |
msgid "Code"
|
99 |
msgstr ""
|
100 |
|
101 |
-
#: admin/class-ip-geo-block-admin.php:
|
102 |
msgid "ASN"
|
103 |
msgstr ""
|
104 |
|
105 |
-
#: admin/class-ip-geo-block-admin.php:
|
106 |
msgid "Host name"
|
107 |
msgstr ""
|
108 |
|
109 |
-
#: admin/class-ip-geo-block-admin.php:
|
110 |
msgid "Target"
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: admin/class-ip-geo-block-admin.php:
|
114 |
msgid "Failure / Total"
|
115 |
msgstr ""
|
116 |
|
117 |
-
#: admin/class-ip-geo-block-admin.php:
|
118 |
msgid "Elapsed[sec]"
|
119 |
msgstr ""
|
120 |
|
121 |
-
#: admin/class-ip-geo-block-admin.php:
|
122 |
msgid "Time"
|
123 |
msgstr ""
|
124 |
|
125 |
-
#: admin/class-ip-geo-block-admin.php:
|
126 |
msgid "Result"
|
127 |
msgstr ""
|
128 |
|
129 |
-
#: admin/class-ip-geo-block-admin.php:
|
130 |
msgid "Request"
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: admin/class-ip-geo-block-admin.php:
|
134 |
msgid "User agent"
|
135 |
msgstr ""
|
136 |
|
137 |
-
#: admin/class-ip-geo-block-admin.php:
|
138 |
msgid "HTTP headers"
|
139 |
msgstr ""
|
140 |
|
141 |
-
#: admin/class-ip-geo-block-admin.php:
|
142 |
msgid "$_POST data"
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: admin/class-ip-geo-block-admin.php:
|
146 |
msgid "Contribute on GitHub"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: admin/class-ip-geo-block-admin.php:
|
150 |
-
#: admin/class-ip-geo-block-admin.php:
|
151 |
-
#: admin/class-ip-geo-block-admin.php:
|
152 |
-
#: admin/class-ip-geo-block-admin.php:
|
153 |
msgid "Settings"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: admin/class-ip-geo-block-admin.php:424
|
157 |
#: admin/class-ip-geo-block-admin.php:425
|
158 |
-
#: admin/class-ip-geo-block-admin.php:
|
159 |
#: admin/class-ip-geo-block-admin.php:436
|
160 |
-
#: admin/class-ip-geo-block-admin.php:
|
161 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
162 |
msgid "IP Geo Block"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: admin/class-ip-geo-block-admin.php:
|
166 |
-
#: admin/class-ip-geo-block-admin.php:
|
167 |
-
#: admin/class-ip-geo-block-admin.php:
|
168 |
msgid "Site List"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: admin/class-ip-geo-block-admin.php:
|
172 |
msgid "You need WordPress 3.7+."
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: admin/class-ip-geo-block-admin.php:
|
176 |
#, php-format
|
177 |
msgid ""
|
178 |
"Now downloading geolocation databases in background. After a little while, "
|
@@ -180,48 +180,48 @@ msgid ""
|
|
180 |
"strong>” at <a href=\"%s\">Validation rule settings</a>."
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: admin/class-ip-geo-block-admin.php:
|
184 |
#, php-format
|
185 |
msgid ""
|
186 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
187 |
"confirm it at <a href=\"%s\">Validation rule settings</a>."
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: admin/class-ip-geo-block-admin.php:
|
191 |
msgid "Local database and matching rule have been updated."
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: admin/class-ip-geo-block-admin.php:
|
195 |
msgid ""
|
196 |
"Once you logout, you will be unable to login again because the number of "
|
197 |
"login attempts reaches the limit."
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: admin/class-ip-geo-block-admin.php:
|
201 |
#, php-format
|
202 |
msgid ""
|
203 |
"Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
|
204 |
"tab</a> to prevent locking yourself out."
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: admin/class-ip-geo-block-admin.php:
|
208 |
msgid ""
|
209 |
"Once you logout, you will be unable to login again because your country code "
|
210 |
"or IP address is in the blacklist."
|
211 |
msgstr ""
|
212 |
|
213 |
-
#: admin/class-ip-geo-block-admin.php:
|
214 |
msgid ""
|
215 |
"Once you logout, you will be unable to login again because your country code "
|
216 |
"or IP address is not in the whitelist."
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: admin/class-ip-geo-block-admin.php:
|
220 |
#, php-format
|
221 |
msgid "Please check your “%sValidation rule settings%s”."
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: admin/class-ip-geo-block-admin.php:
|
225 |
#, php-format
|
226 |
msgid ""
|
227 |
"Please confirm your local geolocation databases at “%sLocal database "
|
@@ -229,89 +229,93 @@ msgid ""
|
|
229 |
"%sStatistics in cache%s” section."
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: admin/class-ip-geo-block-admin.php:
|
233 |
msgid ""
|
234 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
235 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
236 |
"select “init” action hook."
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: admin/class-ip-geo-block-admin.php:
|
240 |
msgid "Statistics"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: admin/class-ip-geo-block-admin.php:
|
244 |
msgid "Logs"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: admin/class-ip-geo-block-admin.php:
|
248 |
msgid "Search"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: admin/class-ip-geo-block-admin.php:
|
252 |
msgid "Attribution"
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: admin/class-ip-geo-block-admin.php:
|
256 |
msgid "Network wide"
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: admin/class-ip-geo-block-admin.php:
|
260 |
msgid "Toggle all"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: admin/class-ip-geo-block-admin.php:
|
264 |
msgid ""
|
265 |
"Independent of “Statistics and Logs settings”, you can see all "
|
266 |
"the requests validated by this plugin in almost real time."
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: admin/class-ip-geo-block-admin.php:
|
270 |
msgid "Live update"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: admin/class-ip-geo-block-admin.php:
|
274 |
msgid "Open a new window on clicking the link in the chart."
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: admin/class-ip-geo-block-admin.php:
|
278 |
msgid "Open a new window"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: admin/class-ip-geo-block-admin.php:
|
282 |
msgid "Thanks for providing these great services for free."
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: admin/class-ip-geo-block-admin.php:
|
286 |
msgid ""
|
287 |
"(Most browsers will redirect you to each site <a href=\"http://www."
|
288 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
289 |
"when you click the link</a>.)"
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: admin/class-ip-geo-block-admin.php:
|
293 |
msgid "Back to top"
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: admin/class-ip-geo-block-admin.php:
|
297 |
msgid "Enable"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: admin/class-ip-geo-block-admin.php:
|
301 |
msgid "Select one"
|
302 |
msgstr ""
|
303 |
|
304 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
|
|
|
|
305 |
#: admin/includes/class-admin-rewrite.php:194
|
306 |
-
#: classes/class-ip-geo-block-cron.php:
|
307 |
-
#: classes/class-ip-geo-block-cron.php:
|
308 |
-
#: classes/class-ip-geo-block-cron.php:
|
309 |
-
#: classes/class-ip-geo-block-opts.php:
|
310 |
#, php-format
|
311 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: admin/class-ip-geo-block-admin.php:
|
315 |
msgid "Settings saved."
|
316 |
msgstr ""
|
317 |
|
@@ -331,8 +335,8 @@ msgid ""
|
|
331 |
msgstr ""
|
332 |
|
333 |
#: admin/includes/class-admin-rewrite.php:168
|
334 |
-
#: classes/class-ip-geo-block-cron.php:
|
335 |
-
#: classes/class-ip-geo-block-cron.php:
|
336 |
#, php-format
|
337 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
338 |
msgstr ""
|
@@ -352,23 +356,28 @@ msgstr ""
|
|
352 |
msgid "Validation logs"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: admin/includes/tab-accesslog.php:
|
|
|
|
|
|
|
|
|
|
|
356 |
msgid "Comment post"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:
|
360 |
msgid "XML-RPC"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:
|
364 |
msgid "Login form"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:
|
368 |
msgid "Admin area"
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:
|
372 |
msgid "Public facing pages"
|
373 |
msgstr ""
|
374 |
|
@@ -426,7 +435,7 @@ msgstr ""
|
|
426 |
msgid "Export logs"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: admin/includes/tab-accesslog.php:152 admin/includes/tab-settings.php:
|
430 |
msgid "Export to the local file"
|
431 |
msgstr ""
|
432 |
|
@@ -582,10 +591,10 @@ msgid ""
|
|
582 |
msgstr ""
|
583 |
|
584 |
#: admin/includes/tab-settings.php:120
|
585 |
-
msgid "Open CIDR calculator for IPv4 / IPv6"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:
|
589 |
msgid "Matching rule"
|
590 |
msgstr ""
|
591 |
|
@@ -620,13 +629,13 @@ msgid ""
|
|
620 |
"for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: admin/includes/tab-settings.php:
|
624 |
msgid ""
|
625 |
"<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
|
626 |
"\">Blacklist of extra IP addresses prior to country code</dfn>"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: admin/includes/tab-settings.php:
|
630 |
msgid ""
|
631 |
"<dfn title=\"If your server is placed behind the proxy server or the load "
|
632 |
"balancing server, you need to put the appropriate key such as “"
|
@@ -635,7 +644,7 @@ msgid ""
|
|
635 |
"addresses</dfn>"
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: admin/includes/tab-settings.php:
|
639 |
msgid ""
|
640 |
"<dfn title=\"It validates malicious signatures independently of “Block "
|
641 |
"by country” and “Prevent Zero-day Exploit” for the target "
|
@@ -646,18 +655,18 @@ msgid ""
|
|
646 |
"please click to restore.\"><span></span></a>)</nobr>"
|
647 |
msgstr ""
|
648 |
|
649 |
-
#: admin/includes/tab-settings.php:
|
650 |
msgid ""
|
651 |
"<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
|
652 |
msgstr ""
|
653 |
|
654 |
-
#: admin/includes/tab-settings.php:
|
655 |
msgid ""
|
656 |
"<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
|
657 |
"extensions</dfn>"
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: admin/includes/tab-settings.php:
|
661 |
msgid ""
|
662 |
"<dfn title=\"Specify the capabilities to be verified. Depending on the "
|
663 |
"particular type of uploader, certain capability may be required. Default is "
|
@@ -665,14 +674,14 @@ msgid ""
|
|
665 |
"verification will be skipped if empty.\">Capabilities to be verified</dfn>"
|
666 |
msgstr ""
|
667 |
|
668 |
-
#: admin/includes/tab-settings.php:
|
669 |
msgid ""
|
670 |
"( See “<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
|
671 |
"Roles_and_Capabilities\" title=\"Roles and Capabilities « WordPress "
|
672 |
"Codex\">Roles and Capabilities</a>” )"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: admin/includes/tab-settings.php:
|
676 |
msgid ""
|
677 |
"<dfn title=\"It restricts the file types on upload in order to block malware "
|
678 |
"and backdoor via both back-end and front-end. Please consider to select "
|
@@ -681,27 +690,27 @@ msgid ""
|
|
681 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: admin/includes/tab-settings.php:
|
685 |
-
#: admin/includes/tab-settings.php:
|
686 |
msgid "Disable"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: admin/includes/tab-settings.php:
|
690 |
msgid "Verify file extension and MIME type"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: admin/includes/tab-settings.php:
|
694 |
msgid "Verify file extension only"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: admin/includes/tab-settings.php:
|
698 |
#, php-format
|
699 |
msgid ""
|
700 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
701 |
"directory.\">Response code</dfn> %s"
|
702 |
msgstr ""
|
703 |
|
704 |
-
#: admin/includes/tab-settings.php:
|
705 |
msgid ""
|
706 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
707 |
"to a public facing page, visitors would not be blocked on the page to "
|
@@ -710,42 +719,42 @@ msgid ""
|
|
710 |
"\">Redirect URL</dfn>"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: admin/includes/tab-settings.php:
|
714 |
msgid ""
|
715 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
716 |
"message</dfn>"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: admin/includes/tab-settings.php:
|
720 |
msgid ""
|
721 |
"<dfn title=\"This is applied to “XML-RPC” and “Login "
|
722 |
"form”. Lockout period is defined as expiration time at “Cache "
|
723 |
"settings”.\">Max number of failed login attempts per IP address</dfn>"
|
724 |
msgstr ""
|
725 |
|
726 |
-
#: admin/includes/tab-settings.php:
|
727 |
msgid "Select when to run the validation."
|
728 |
msgstr ""
|
729 |
|
730 |
-
#: admin/includes/tab-settings.php:
|
731 |
msgid "Validation timing"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: admin/includes/tab-settings.php:
|
735 |
msgid "“init” action hook"
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: admin/includes/tab-settings.php:
|
739 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: admin/includes/tab-settings.php:
|
743 |
msgid ""
|
744 |
"Validate at “init” action hook in the same manner as typical "
|
745 |
"plugins."
|
746 |
msgstr ""
|
747 |
|
748 |
-
#: admin/includes/tab-settings.php:
|
749 |
msgid ""
|
750 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
751 |
"on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
|
@@ -753,68 +762,110 @@ msgid ""
|
|
753 |
"restrictions</a>."
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: admin/includes/tab-settings.php:
|
757 |
msgid "Back-end target settings"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: admin/includes/tab-settings.php:
|
761 |
#, php-format
|
762 |
msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: admin/includes/tab-settings.php:
|
766 |
msgid "Other areas"
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: admin/includes/tab-settings.php:
|
770 |
msgid "public facing pages"
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: admin/includes/tab-settings.php:
|
774 |
-
#: admin/includes/tab-settings.php:
|
775 |
-
#: admin/includes/tab-settings.php:
|
776 |
msgid "Block by country"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: admin/includes/tab-settings.php:
|
780 |
msgid "Completely close"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
784 |
msgid ""
|
785 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
786 |
"actions</dfn>"
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: admin/includes/tab-settings.php:
|
790 |
msgid "Prevent Zero-day Exploit"
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: admin/includes/tab-settings.php:
|
794 |
msgid ""
|
795 |
"It will block a request related to the services for both public facing pages "
|
796 |
"and the dashboard."
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: admin/includes/tab-settings.php:
|
800 |
msgid ""
|
801 |
"Regardless of the country code, it will block a malicious request related to "
|
802 |
"the services only for the dashboard."
|
803 |
msgstr ""
|
804 |
|
805 |
-
#: admin/includes/tab-settings.php:
|
806 |
msgid "admin post for logged-in user"
|
807 |
msgstr ""
|
808 |
|
809 |
-
#: admin/includes/tab-settings.php:
|
810 |
msgid "admin post for non logged-in user"
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: admin/includes/tab-settings.php:
|
814 |
msgid "Admin ajax/post"
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: admin/includes/tab-settings.php:
|
818 |
msgid ""
|
819 |
"Specify the action name (“action=…”) or the page name "
|
820 |
"(“page=…”) to prevent unintended blocking caused by "
|
@@ -822,33 +873,33 @@ msgid ""
|
|
822 |
"Zero-day Exploit” (for logged-in user)."
|
823 |
msgstr ""
|
824 |
|
825 |
-
#: admin/includes/tab-settings.php:
|
826 |
-
#: admin/includes/tab-settings.php:
|
827 |
msgid "Exceptions"
|
828 |
msgstr ""
|
829 |
|
830 |
-
#: admin/includes/tab-settings.php:
|
831 |
msgid "Toggle with non logged-in user"
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: admin/includes/tab-settings.php:
|
835 |
msgid "Candidate actions/pages"
|
836 |
msgstr ""
|
837 |
|
838 |
-
#: admin/includes/tab-settings.php:
|
839 |
#, php-format
|
840 |
msgid ""
|
841 |
"Regardless of the country code, it will block a malicious request to <code>"
|
842 |
"%s⋯/*.php</code>."
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: admin/includes/tab-settings.php:
|
846 |
msgid ""
|
847 |
"Select the item which causes unintended blocking in order to exclude from "
|
848 |
"the validation target. Grayed item indicates “INACTIVE”."
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: admin/includes/tab-settings.php:
|
852 |
#, php-format
|
853 |
msgid ""
|
854 |
"It configures “%s” to validate a request to the PHP file which "
|
@@ -856,31 +907,31 @@ msgid ""
|
|
856 |
"files beginning with a dot by the server's configuration."
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: admin/includes/tab-settings.php:
|
860 |
msgid "Sorry, but your server type is not supported."
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: admin/includes/tab-settings.php:
|
864 |
msgid "Force to load WP core"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: admin/includes/tab-settings.php:
|
868 |
msgid "Plugins area"
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: admin/includes/tab-settings.php:
|
872 |
msgid "Themes area"
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: admin/includes/tab-settings.php:
|
876 |
msgid "Front-end target settings"
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: admin/includes/tab-settings.php:
|
880 |
msgid "Follow “Validation rule settings”"
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: admin/includes/tab-settings.php:
|
884 |
#, php-format
|
885 |
msgid ""
|
886 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
@@ -888,53 +939,70 @@ msgid ""
|
|
888 |
"\">Response code</dfn> %s"
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: admin/includes/tab-settings.php:
|
892 |
msgid ""
|
893 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: admin/includes/tab-settings.php:
|
897 |
msgid ""
|
898 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
899 |
"target.\">Post type</dfn>"
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: admin/includes/tab-settings.php:
|
903 |
msgid ""
|
904 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
905 |
"page as a blocking target.\">Category</dfn>"
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: admin/includes/tab-settings.php:
|
909 |
msgid ""
|
910 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
911 |
"a blocking target.\">Tag</dfn>"
|
912 |
msgstr ""
|
913 |
|
914 |
-
#: admin/includes/tab-settings.php:
|
915 |
msgid "Specify the validation target on front-end."
|
916 |
msgstr ""
|
917 |
|
918 |
-
#: admin/includes/tab-settings.php:
|
919 |
msgid "Validation target"
|
920 |
msgstr ""
|
921 |
|
922 |
-
#: admin/includes/tab-settings.php:
|
923 |
msgid "All requests"
|
924 |
msgstr ""
|
925 |
|
926 |
-
#: admin/includes/tab-settings.php:
|
927 |
msgid "Specify the targets"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#: admin/includes/tab-settings.php:
|
931 |
msgid ""
|
932 |
"Notice that “Validation timing” is deferred till “"
|
933 |
"wp” action hook. It means that this feature would not be compatible "
|
934 |
"with any page caching."
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
938 |
msgid ""
|
939 |
"A part of user agent string and a qualification connected with a separator "
|
940 |
"that indicates an applicable rule and can be “:” (pass) or "
|
@@ -944,19 +1012,19 @@ msgid ""
|
|
944 |
"qualification”."
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: admin/includes/tab-settings.php:
|
948 |
msgid "UA string and qualification"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: admin/includes/tab-settings.php:
|
952 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: admin/includes/tab-settings.php:
|
956 |
msgid "Excluded actions"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: admin/includes/tab-settings.php:
|
960 |
msgid ""
|
961 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
962 |
"server resources. If it is disabled, “HOST” and “"
|
@@ -964,35 +1032,35 @@ msgid ""
|
|
964 |
"return “true”."
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: admin/includes/tab-settings.php:
|
968 |
msgid "DNS reverse lookup"
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: admin/includes/tab-settings.php:
|
972 |
msgid ""
|
973 |
"It enables to simulate validation without deployment. The results can be "
|
974 |
"found at “Public facing pages” in Logs."
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: admin/includes/tab-settings.php:
|
978 |
msgid "Simulation mode"
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: admin/includes/tab-settings.php:
|
982 |
msgid "Geolocation API settings"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: admin/includes/tab-settings.php:
|
986 |
msgid ""
|
987 |
"<dfn title=\"Cache and local database are scanned at the top priority.\">API "
|
988 |
"selection and key settings</dfn>"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: admin/includes/tab-settings.php:
|
992 |
msgid "Timeout for network API [sec]"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: admin/includes/tab-settings.php:
|
996 |
#, php-format
|
997 |
msgid ""
|
998 |
"Can not find geolocation API libraries in <code>%s</code>. It seems to have "
|
@@ -1007,128 +1075,139 @@ msgid ""
|
|
1007 |
"troubles? | IP Geo Block\">this instruction</a>."
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: admin/includes/tab-settings.php:
|
1011 |
msgid "Local database settings"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: admin/includes/tab-settings.php:
|
1015 |
msgid "database"
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: admin/includes/tab-settings.php:
|
1019 |
#, php-format
|
1020 |
msgid "Last update: %s"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1024 |
msgid "Auto updating (once a month)"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
1028 |
msgid "Download database"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: admin/includes/tab-settings.php:
|
1032 |
msgid "Download now"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
#: admin/includes/tab-settings.php:
|
1036 |
msgid "Statistics and Logs settings"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
-
#: admin/includes/tab-settings.php:
|
1040 |
msgid "Record “Statistics”"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: admin/includes/tab-settings.php:
|
1044 |
msgid "Maximum period for “Statistics” (days)"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
-
#: admin/includes/tab-settings.php:
|
1048 |
msgid "Record “Logs”"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
-
#: admin/includes/tab-settings.php:
|
1052 |
msgid "When requests blocked"
|
1053 |
msgstr ""
|
1054 |
|
1055 |
-
#: admin/includes/tab-settings.php:
|
1056 |
msgid "When requests passed"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: admin/includes/tab-settings.php:
|
1060 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
-
#: admin/includes/tab-settings.php:
|
1064 |
msgid "Unauthenticated visitor"
|
1065 |
msgstr ""
|
1066 |
|
1067 |
-
#: admin/includes/tab-settings.php:
|
1068 |
msgid "Authenticated user"
|
1069 |
msgstr ""
|
1070 |
|
1071 |
-
#: admin/includes/tab-settings.php:
|
1072 |
msgid "All the validation"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
-
#: admin/includes/tab-settings.php:
|
1076 |
msgid "Maximum entries of “Logs”"
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: admin/includes/tab-settings.php:
|
1080 |
msgid ""
|
1081 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
|
1082 |
"recorded with their values in “Logs”</dfn>"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: admin/includes/tab-settings.php:
|
1086 |
msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: admin/includes/tab-settings.php:
|
1090 |
msgid ""
|
1091 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1092 |
"“Live update”</dfn>"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: admin/includes/tab-settings.php:
|
1096 |
msgid "Ordinary file"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: admin/includes/tab-settings.php:
|
1100 |
msgid "In-Memory"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: admin/includes/tab-settings.php:
|
1104 |
msgid "PDO_SQLITE driver not available"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
-
#: admin/includes/tab-settings.php:
|
1108 |
msgid ""
|
1109 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1110 |
"without conflict with other plugins."
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: admin/includes/tab-settings.php:
|
1114 |
msgid ""
|
1115 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1116 |
"with other plugins using this method."
|
1117 |
msgstr ""
|
1118 |
|
1119 |
-
#: admin/includes/tab-settings.php:
|
1120 |
msgid "Reset database source of “Live update”"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: admin/includes/tab-settings.php:
|
1124 |
msgid "Reset now"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
-
#: admin/includes/tab-settings.php:
|
1128 |
msgid "IP address cache settings"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
-
#: admin/includes/tab-settings.php:
|
1132 |
#, php-format
|
1133 |
msgid ""
|
1134 |
"<dfn title=\"If user authentication fails consecutively %d times, subsequent "
|
@@ -1136,121 +1215,121 @@ msgid ""
|
|
1136 |
"\">Expiration time [sec]</dfn>"
|
1137 |
msgstr ""
|
1138 |
|
1139 |
-
#: admin/includes/tab-settings.php:
|
1140 |
msgid "Garbage collection period [sec]"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
-
#: admin/includes/tab-settings.php:
|
1144 |
msgid "Number of entries to be displayed in cache"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
-
#: admin/includes/tab-settings.php:
|
1148 |
msgid "Submission settings"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
-
#: admin/includes/tab-settings.php:
|
1152 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
1153 |
msgstr ""
|
1154 |
|
1155 |
-
#: admin/includes/tab-settings.php:
|
1156 |
msgid "Message on comment form"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
#: admin/includes/tab-settings.php:
|
1160 |
msgid "None"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
-
#: admin/includes/tab-settings.php:
|
1164 |
msgid "Top"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
-
#: admin/includes/tab-settings.php:
|
1168 |
msgid "Bottom"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
-
#: admin/includes/tab-settings.php:
|
1172 |
msgid "Plugin settings"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
-
#: admin/includes/tab-settings.php:
|
1176 |
msgid ""
|
1177 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1178 |
"settings</dfn>"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
-
#: admin/includes/tab-settings.php:
|
1182 |
msgid "Remove all settings at uninstallation"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
-
#: admin/includes/tab-settings.php:
|
1186 |
msgid ""
|
1187 |
"<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
|
1188 |
"dfn>"
|
1189 |
msgstr ""
|
1190 |
|
1191 |
-
#: admin/includes/tab-settings.php:
|
1192 |
msgid ""
|
1193 |
"You need to click the “Save Changes” button for imported "
|
1194 |
"settings to take effect."
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: admin/includes/tab-settings.php:
|
1198 |
msgid "Export / Import settings"
|
1199 |
msgstr ""
|
1200 |
|
1201 |
-
#: admin/includes/tab-settings.php:
|
1202 |
msgid "Export settings"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#: admin/includes/tab-settings.php:
|
1206 |
msgid "Import from the local file"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: admin/includes/tab-settings.php:
|
1210 |
msgid "Import settings"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: admin/includes/tab-settings.php:
|
1214 |
msgid "Import pre-defined settings"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: admin/includes/tab-settings.php:
|
1218 |
msgid ""
|
1219 |
"Import the default settings to revert to the “Right after "
|
1220 |
"installing” state"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
-
#: admin/includes/tab-settings.php:
|
1224 |
msgid "Default settings"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: admin/includes/tab-settings.php:
|
1228 |
msgid ""
|
1229 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1230 |
"for the “Back-end target settings”"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: admin/includes/tab-settings.php:
|
1234 |
msgid "Best for Back-end"
|
1235 |
msgstr ""
|
1236 |
|
1237 |
-
#: admin/includes/tab-settings.php:
|
1238 |
-
msgid "Delete DB
|
1239 |
msgstr ""
|
1240 |
|
1241 |
-
#: admin/includes/tab-settings.php:
|
1242 |
msgid "Delete now"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: admin/includes/tab-settings.php:
|
1246 |
-
msgid "Create DB
|
1247 |
msgstr ""
|
1248 |
|
1249 |
-
#: admin/includes/tab-settings.php:
|
1250 |
msgid "Create now"
|
1251 |
msgstr ""
|
1252 |
|
1253 |
-
#: admin/includes/tab-settings.php:
|
1254 |
msgid ""
|
1255 |
"<dfn title=\"When an unexpected blocking has occurred, please press the "
|
1256 |
"button to find the blocked request in the dumped information which may help "
|
@@ -1259,15 +1338,15 @@ msgid ""
|
|
1259 |
"› Support » IP Geo Block\">support forum</a> ]"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: admin/includes/tab-settings.php:
|
1263 |
msgid "Please copy & paste when submitting your issue to support forum."
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: admin/includes/tab-settings.php:
|
1267 |
msgid "Show information"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: admin/includes/tab-settings.php:
|
1271 |
msgid ""
|
1272 |
"To enhance the protection ability, please refer to “<a rel=\"noreferrer"
|
1273 |
"\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
|
@@ -1275,7 +1354,7 @@ msgid ""
|
|
1275 |
"\">The best practice for target settings</a>”."
|
1276 |
msgstr ""
|
1277 |
|
1278 |
-
#: admin/includes/tab-settings.php:
|
1279 |
msgid ""
|
1280 |
"If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
|
1281 |
"\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
|
@@ -1284,25 +1363,25 @@ msgid ""
|
|
1284 |
"\">Codex</a>."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: admin/includes/tab-settings.php:
|
1288 |
msgid ""
|
1289 |
"While Maxmind and IP2Location will fetch the local database, others will "
|
1290 |
"pass an IP address to the APIs via HTTP."
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
#: admin/includes/tab-settings.php:
|
1294 |
msgid ""
|
1295 |
"Please select the appropriate APIs to fit the privacy law in your country."
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: admin/includes/tab-settings.php:
|
1299 |
#, php-format
|
1300 |
msgid ""
|
1301 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1302 |
"2.0.0+%s."
|
1303 |
msgstr ""
|
1304 |
|
1305 |
-
#: admin/includes/tab-settings.php:
|
1306 |
msgid ""
|
1307 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1308 |
"ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
|
@@ -1310,7 +1389,7 @@ msgid ""
|
|
1310 |
"cache plugin."
|
1311 |
msgstr ""
|
1312 |
|
1313 |
-
#: admin/includes/tab-settings.php:
|
1314 |
msgid ""
|
1315 |
"If you find any issues or have something to suggest, please feel free to "
|
1316 |
"open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
|
@@ -1318,7 +1397,7 @@ msgid ""
|
|
1318 |
"\">support forum</a>."
|
1319 |
msgstr ""
|
1320 |
|
1321 |
-
#: admin/includes/tab-settings.php:
|
1322 |
msgid ""
|
1323 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1324 |
"ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
|
@@ -1416,22 +1495,22 @@ msgid ""
|
|
1416 |
"statistics."
|
1417 |
msgstr ""
|
1418 |
|
1419 |
-
#: classes/class-ip-geo-block-apis.php:
|
1420 |
msgid ""
|
1421 |
"You need to select at least one IP geolocation service. Otherwise "
|
1422 |
"<strong>you'll be blocked</strong> after the cache expires."
|
1423 |
msgstr ""
|
1424 |
|
1425 |
-
#: classes/class-ip-geo-block-cron.php:
|
1426 |
#, php-format
|
1427 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1428 |
msgstr ""
|
1429 |
|
1430 |
-
#: classes/class-ip-geo-block-cron.php:
|
1431 |
msgid "Your database file is up-to-date."
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: classes/class-ip-geo-block-cron.php:
|
1435 |
msgid "gz or zip is not supported on your system."
|
1436 |
msgstr ""
|
1437 |
|
@@ -1453,18 +1532,22 @@ msgid ""
|
|
1453 |
"details."
|
1454 |
msgstr ""
|
1455 |
|
1456 |
-
#: classes/class-ip-geo-block-logs.php:
|
1457 |
#, php-format
|
1458 |
msgid ""
|
1459 |
"Creating a DB table %s had failed. Once de-activate this plugin, and then "
|
1460 |
"activate again."
|
1461 |
msgstr ""
|
1462 |
|
1463 |
-
#: classes/class-ip-geo-block-logs.php:
|
1464 |
#, php-format
|
1465 |
msgid "The user %s (user ID: %d) is in use."
|
1466 |
msgstr ""
|
1467 |
|
|
|
|
|
|
|
|
|
1468 |
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:151
|
1469 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:144
|
1470 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: IP Geo Block 3.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
+
"POT-Creation-Date: 2018-04-02 08:16+0900\n"
|
8 |
+
"PO-Revision-Date: 2018-04-02 08:16+0900\n"
|
9 |
"Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
|
10 |
"Language-Team: \n"
|
11 |
"Language: en_001\n"
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: admin/class-ip-geo-block-admin.php:268
|
30 |
msgid "Import settings ?"
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: admin/class-ip-geo-block-admin.php:269
|
34 |
msgid "Create table ?"
|
35 |
msgstr ""
|
36 |
|
37 |
+
#: admin/class-ip-geo-block-admin.php:270
|
38 |
msgid "Delete table ?"
|
39 |
msgstr ""
|
40 |
|
41 |
+
#: admin/class-ip-geo-block-admin.php:271
|
42 |
msgid "Clear statistics ?"
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: admin/class-ip-geo-block-admin.php:272
|
46 |
msgid "Clear cache ?"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: admin/class-ip-geo-block-admin.php:273
|
50 |
msgid "Clear logs ?"
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: admin/class-ip-geo-block-admin.php:274
|
54 |
msgid "ajax for logged-in user"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: admin/class-ip-geo-block-admin.php:275
|
58 |
msgid "ajax for non logged-in user"
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: admin/class-ip-geo-block-admin.php:276
|
62 |
#, php-format
|
63 |
msgid "[Found: %d]"
|
64 |
msgstr ""
|
65 |
|
66 |
+
#: admin/class-ip-geo-block-admin.php:277
|
67 |
#, php-format
|
68 |
msgid "Find and verify `%s` on “Logs” tab."
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: admin/class-ip-geo-block-admin.php:278
|
72 |
msgid "This feature is available with HTML5 compliant browsers."
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: admin/class-ip-geo-block-admin.php:279
|
76 |
msgid "The selected row cannot be found in the visible area."
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: admin/class-ip-geo-block-admin.php:280
|
80 |
+
#: admin/class-ip-geo-block-admin.php:1438
|
81 |
#, php-format
|
82 |
msgid "An error occurred while executing the ajax command `%s`."
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: admin/class-ip-geo-block-admin.php:284
|
86 |
msgid "No data available in table"
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: admin/class-ip-geo-block-admin.php:285
|
90 |
msgid "No matching records found"
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: admin/class-ip-geo-block-admin.php:286 admin/includes/tab-geolocation.php:71
|
94 |
msgid "IP address"
|
95 |
msgstr ""
|
96 |
|
97 |
+
#: admin/class-ip-geo-block-admin.php:287
|
98 |
msgid "Code"
|
99 |
msgstr ""
|
100 |
|
101 |
+
#: admin/class-ip-geo-block-admin.php:288
|
102 |
msgid "ASN"
|
103 |
msgstr ""
|
104 |
|
105 |
+
#: admin/class-ip-geo-block-admin.php:289
|
106 |
msgid "Host name"
|
107 |
msgstr ""
|
108 |
|
109 |
+
#: admin/class-ip-geo-block-admin.php:290
|
110 |
msgid "Target"
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: admin/class-ip-geo-block-admin.php:291
|
114 |
msgid "Failure / Total"
|
115 |
msgstr ""
|
116 |
|
117 |
+
#: admin/class-ip-geo-block-admin.php:292
|
118 |
msgid "Elapsed[sec]"
|
119 |
msgstr ""
|
120 |
|
121 |
+
#: admin/class-ip-geo-block-admin.php:293
|
122 |
msgid "Time"
|
123 |
msgstr ""
|
124 |
|
125 |
+
#: admin/class-ip-geo-block-admin.php:294
|
126 |
msgid "Result"
|
127 |
msgstr ""
|
128 |
|
129 |
+
#: admin/class-ip-geo-block-admin.php:295
|
130 |
msgid "Request"
|
131 |
msgstr ""
|
132 |
|
133 |
+
#: admin/class-ip-geo-block-admin.php:296
|
134 |
msgid "User agent"
|
135 |
msgstr ""
|
136 |
|
137 |
+
#: admin/class-ip-geo-block-admin.php:297
|
138 |
msgid "HTTP headers"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: admin/class-ip-geo-block-admin.php:298
|
142 |
msgid "$_POST data"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: admin/class-ip-geo-block-admin.php:324
|
146 |
msgid "Contribute on GitHub"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: admin/class-ip-geo-block-admin.php:338
|
150 |
+
#: admin/class-ip-geo-block-admin.php:446
|
151 |
+
#: admin/class-ip-geo-block-admin.php:664
|
152 |
+
#: admin/class-ip-geo-block-admin.php:683
|
153 |
msgid "Settings"
|
154 |
msgstr ""
|
155 |
|
|
|
156 |
#: admin/class-ip-geo-block-admin.php:425
|
157 |
+
#: admin/class-ip-geo-block-admin.php:426
|
158 |
#: admin/class-ip-geo-block-admin.php:436
|
159 |
+
#: admin/class-ip-geo-block-admin.php:437
|
160 |
+
#: admin/class-ip-geo-block-admin.php:445
|
161 |
+
#: admin/class-ip-geo-block-admin.php:453
|
162 |
msgid "IP Geo Block"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: admin/class-ip-geo-block-admin.php:454
|
166 |
+
#: admin/class-ip-geo-block-admin.php:668
|
167 |
+
#: admin/class-ip-geo-block-admin.php:684
|
168 |
msgid "Site List"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: admin/class-ip-geo-block-admin.php:483
|
172 |
msgid "You need WordPress 3.7+."
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: admin/class-ip-geo-block-admin.php:489
|
176 |
#, php-format
|
177 |
msgid ""
|
178 |
"Now downloading geolocation databases in background. After a little while, "
|
180 |
"strong>” at <a href=\"%s\">Validation rule settings</a>."
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: admin/class-ip-geo-block-admin.php:495
|
184 |
#, php-format
|
185 |
msgid ""
|
186 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
187 |
"confirm it at <a href=\"%s\">Validation rule settings</a>."
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: admin/class-ip-geo-block-admin.php:504
|
191 |
msgid "Local database and matching rule have been updated."
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: admin/class-ip-geo-block-admin.php:515
|
195 |
msgid ""
|
196 |
"Once you logout, you will be unable to login again because the number of "
|
197 |
"login attempts reaches the limit."
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: admin/class-ip-geo-block-admin.php:517
|
201 |
#, php-format
|
202 |
msgid ""
|
203 |
"Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
|
204 |
"tab</a> to prevent locking yourself out."
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: admin/class-ip-geo-block-admin.php:527
|
208 |
msgid ""
|
209 |
"Once you logout, you will be unable to login again because your country code "
|
210 |
"or IP address is in the blacklist."
|
211 |
msgstr ""
|
212 |
|
213 |
+
#: admin/class-ip-geo-block-admin.php:528
|
214 |
msgid ""
|
215 |
"Once you logout, you will be unable to login again because your country code "
|
216 |
"or IP address is not in the whitelist."
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: admin/class-ip-geo-block-admin.php:532
|
220 |
#, php-format
|
221 |
msgid "Please check your “%sValidation rule settings%s”."
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: admin/class-ip-geo-block-admin.php:536
|
225 |
#, php-format
|
226 |
msgid ""
|
227 |
"Please confirm your local geolocation databases at “%sLocal database "
|
229 |
"%sStatistics in cache%s” section."
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: admin/class-ip-geo-block-admin.php:549
|
233 |
msgid ""
|
234 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
235 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
236 |
"select “init” action hook."
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: admin/class-ip-geo-block-admin.php:665
|
240 |
msgid "Statistics"
|
241 |
msgstr ""
|
242 |
|
243 |
+
#: admin/class-ip-geo-block-admin.php:666
|
244 |
msgid "Logs"
|
245 |
msgstr ""
|
246 |
|
247 |
+
#: admin/class-ip-geo-block-admin.php:667
|
248 |
msgid "Search"
|
249 |
msgstr ""
|
250 |
|
251 |
+
#: admin/class-ip-geo-block-admin.php:669
|
252 |
msgid "Attribution"
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: admin/class-ip-geo-block-admin.php:697
|
256 |
msgid "Network wide"
|
257 |
msgstr ""
|
258 |
|
259 |
+
#: admin/class-ip-geo-block-admin.php:710
|
260 |
msgid "Toggle all"
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: admin/class-ip-geo-block-admin.php:713
|
264 |
msgid ""
|
265 |
"Independent of “Statistics and Logs settings”, you can see all "
|
266 |
"the requests validated by this plugin in almost real time."
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: admin/class-ip-geo-block-admin.php:713 admin/includes/tab-accesslog.php:39
|
270 |
msgid "Live update"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: admin/class-ip-geo-block-admin.php:717
|
274 |
msgid "Open a new window on clicking the link in the chart."
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: admin/class-ip-geo-block-admin.php:717
|
278 |
msgid "Open a new window"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: admin/class-ip-geo-block-admin.php:740
|
282 |
msgid "Thanks for providing these great services for free."
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: admin/class-ip-geo-block-admin.php:741
|
286 |
msgid ""
|
287 |
"(Most browsers will redirect you to each site <a href=\"http://www."
|
288 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
289 |
"when you click the link</a>.)"
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: admin/class-ip-geo-block-admin.php:746
|
293 |
msgid "Back to top"
|
294 |
msgstr ""
|
295 |
|
296 |
+
#: admin/class-ip-geo-block-admin.php:842
|
297 |
msgid "Enable"
|
298 |
msgstr ""
|
299 |
|
300 |
+
#: admin/class-ip-geo-block-admin.php:857
|
301 |
msgid "Select one"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: admin/class-ip-geo-block-admin.php:1232
|
305 |
+
msgid "You do not have sufficient permissions to access this page."
|
306 |
+
msgstr ""
|
307 |
+
|
308 |
+
#: admin/class-ip-geo-block-admin.php:1259
|
309 |
#: admin/includes/class-admin-rewrite.php:194
|
310 |
+
#: classes/class-ip-geo-block-cron.php:212
|
311 |
+
#: classes/class-ip-geo-block-cron.php:316
|
312 |
+
#: classes/class-ip-geo-block-cron.php:390
|
313 |
+
#: classes/class-ip-geo-block-opts.php:438
|
314 |
#, php-format
|
315 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: admin/class-ip-geo-block-admin.php:1289
|
319 |
msgid "Settings saved."
|
320 |
msgstr ""
|
321 |
|
335 |
msgstr ""
|
336 |
|
337 |
#: admin/includes/class-admin-rewrite.php:168
|
338 |
+
#: classes/class-ip-geo-block-cron.php:207
|
339 |
+
#: classes/class-ip-geo-block-cron.php:385
|
340 |
#, php-format
|
341 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
342 |
msgstr ""
|
356 |
msgid "Validation logs"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: admin/includes/tab-accesslog.php:19 admin/includes/tab-settings.php:764
|
360 |
+
#: admin/includes/tab-settings.php:1146
|
361 |
+
msgid "Help"
|
362 |
+
msgstr ""
|
363 |
+
|
364 |
+
#: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:456
|
365 |
msgid "Comment post"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:457
|
369 |
msgid "XML-RPC"
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:458
|
373 |
msgid "Login form"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:459
|
377 |
msgid "Admin area"
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:461
|
381 |
msgid "Public facing pages"
|
382 |
msgstr ""
|
383 |
|
435 |
msgid "Export logs"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: admin/includes/tab-accesslog.php:152 admin/includes/tab-settings.php:1563
|
439 |
msgid "Export to the local file"
|
440 |
msgstr ""
|
441 |
|
591 |
msgstr ""
|
592 |
|
593 |
#: admin/includes/tab-settings.php:120
|
594 |
+
msgid "Open CIDR calculator for IPv4 / IPv6."
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:795
|
598 |
msgid "Matching rule"
|
599 |
msgstr ""
|
600 |
|
629 |
"for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: admin/includes/tab-settings.php:228
|
633 |
msgid ""
|
634 |
"<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
|
635 |
"\">Blacklist of extra IP addresses prior to country code</dfn>"
|
636 |
msgstr ""
|
637 |
|
638 |
+
#: admin/includes/tab-settings.php:251
|
639 |
msgid ""
|
640 |
"<dfn title=\"If your server is placed behind the proxy server or the load "
|
641 |
"balancing server, you need to put the appropriate key such as “"
|
644 |
"addresses</dfn>"
|
645 |
msgstr ""
|
646 |
|
647 |
+
#: admin/includes/tab-settings.php:270
|
648 |
msgid ""
|
649 |
"<dfn title=\"It validates malicious signatures independently of “Block "
|
650 |
"by country” and “Prevent Zero-day Exploit” for the target "
|
655 |
"please click to restore.\"><span></span></a>)</nobr>"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: admin/includes/tab-settings.php:284
|
659 |
msgid ""
|
660 |
"<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: admin/includes/tab-settings.php:295
|
664 |
msgid ""
|
665 |
"<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
|
666 |
"extensions</dfn>"
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: admin/includes/tab-settings.php:299
|
670 |
msgid ""
|
671 |
"<dfn title=\"Specify the capabilities to be verified. Depending on the "
|
672 |
"particular type of uploader, certain capability may be required. Default is "
|
674 |
"verification will be skipped if empty.\">Capabilities to be verified</dfn>"
|
675 |
msgstr ""
|
676 |
|
677 |
+
#: admin/includes/tab-settings.php:299
|
678 |
msgid ""
|
679 |
"( See “<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
|
680 |
"Roles_and_Capabilities\" title=\"Roles and Capabilities « WordPress "
|
681 |
"Codex\">Roles and Capabilities</a>” )"
|
682 |
msgstr ""
|
683 |
|
684 |
+
#: admin/includes/tab-settings.php:306
|
685 |
msgid ""
|
686 |
"<dfn title=\"It restricts the file types on upload in order to block malware "
|
687 |
"and backdoor via both back-end and front-end. Please consider to select "
|
690 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: admin/includes/tab-settings.php:317 admin/includes/tab-settings.php:498
|
694 |
+
#: admin/includes/tab-settings.php:622 admin/includes/tab-settings.php:1272
|
695 |
msgid "Disable"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: admin/includes/tab-settings.php:318
|
699 |
msgid "Verify file extension and MIME type"
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: admin/includes/tab-settings.php:319
|
703 |
msgid "Verify file extension only"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: admin/includes/tab-settings.php:329
|
707 |
#, php-format
|
708 |
msgid ""
|
709 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
710 |
"directory.\">Response code</dfn> %s"
|
711 |
msgstr ""
|
712 |
|
713 |
+
#: admin/includes/tab-settings.php:359 admin/includes/tab-settings.php:882
|
714 |
msgid ""
|
715 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
716 |
"to a public facing page, visitors would not be blocked on the page to "
|
719 |
"\">Redirect URL</dfn>"
|
720 |
msgstr ""
|
721 |
|
722 |
+
#: admin/includes/tab-settings.php:377 admin/includes/tab-settings.php:901
|
723 |
msgid ""
|
724 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
725 |
"message</dfn>"
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: admin/includes/tab-settings.php:394
|
729 |
msgid ""
|
730 |
"<dfn title=\"This is applied to “XML-RPC” and “Login "
|
731 |
"form”. Lockout period is defined as expiration time at “Cache "
|
732 |
"settings”.\">Max number of failed login attempts per IP address</dfn>"
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: admin/includes/tab-settings.php:422
|
736 |
msgid "Select when to run the validation."
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: admin/includes/tab-settings.php:422
|
740 |
msgid "Validation timing"
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: admin/includes/tab-settings.php:433
|
744 |
msgid "“init” action hook"
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: admin/includes/tab-settings.php:434
|
748 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: admin/includes/tab-settings.php:437
|
752 |
msgid ""
|
753 |
"Validate at “init” action hook in the same manner as typical "
|
754 |
"plugins."
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: admin/includes/tab-settings.php:438
|
758 |
msgid ""
|
759 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
760 |
"on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
|
762 |
"restrictions</a>."
|
763 |
msgstr ""
|
764 |
|
765 |
+
#: admin/includes/tab-settings.php:448
|
766 |
msgid "Back-end target settings"
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: admin/includes/tab-settings.php:454
|
770 |
#, php-format
|
771 |
msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
|
772 |
msgstr ""
|
773 |
|
774 |
+
#: admin/includes/tab-settings.php:460
|
775 |
msgid "Other areas"
|
776 |
msgstr ""
|
777 |
|
778 |
+
#: admin/includes/tab-settings.php:461
|
779 |
msgid "public facing pages"
|
780 |
msgstr ""
|
781 |
|
782 |
+
#: admin/includes/tab-settings.php:479 admin/includes/tab-settings.php:499
|
783 |
+
#: admin/includes/tab-settings.php:532 admin/includes/tab-settings.php:538
|
784 |
+
#: admin/includes/tab-settings.php:783
|
785 |
msgid "Block by country"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: admin/includes/tab-settings.php:500
|
789 |
msgid "Completely close"
|
790 |
msgstr ""
|
791 |
|
792 |
+
#: admin/includes/tab-settings.php:506
|
793 |
+
msgid "Action to login as a registered user."
|
794 |
+
msgstr ""
|
795 |
+
|
796 |
+
#: admin/includes/tab-settings.php:506
|
797 |
+
msgid "Log in"
|
798 |
+
msgstr ""
|
799 |
+
|
800 |
+
#: admin/includes/tab-settings.php:507
|
801 |
+
msgid "Action to register new users."
|
802 |
+
msgstr ""
|
803 |
+
|
804 |
+
#: admin/includes/tab-settings.php:507
|
805 |
+
msgid "Register"
|
806 |
+
msgstr ""
|
807 |
+
|
808 |
+
#: admin/includes/tab-settings.php:508
|
809 |
+
msgid "Action to reset a password to create a new one."
|
810 |
+
msgstr ""
|
811 |
+
|
812 |
+
#: admin/includes/tab-settings.php:508
|
813 |
+
msgid "Password Reset"
|
814 |
+
msgstr ""
|
815 |
+
|
816 |
+
#: admin/includes/tab-settings.php:509
|
817 |
+
msgid "Action to email a password to a registered user."
|
818 |
+
msgstr ""
|
819 |
+
|
820 |
+
#: admin/includes/tab-settings.php:509
|
821 |
+
msgid "Lost Password"
|
822 |
+
msgstr ""
|
823 |
+
|
824 |
+
#: admin/includes/tab-settings.php:510
|
825 |
+
msgid ""
|
826 |
+
"Action to show prompt to enter a password on password protected post and "
|
827 |
+
"page."
|
828 |
+
msgstr ""
|
829 |
+
|
830 |
+
#: admin/includes/tab-settings.php:510
|
831 |
+
msgid "Password protected"
|
832 |
+
msgstr ""
|
833 |
+
|
834 |
+
#: admin/includes/tab-settings.php:533
|
835 |
msgid ""
|
836 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
837 |
"actions</dfn>"
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: admin/includes/tab-settings.php:539
|
841 |
msgid "Prevent Zero-day Exploit"
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: admin/includes/tab-settings.php:543
|
845 |
msgid ""
|
846 |
"It will block a request related to the services for both public facing pages "
|
847 |
"and the dashboard."
|
848 |
msgstr ""
|
849 |
|
850 |
+
#: admin/includes/tab-settings.php:544
|
851 |
msgid ""
|
852 |
"Regardless of the country code, it will block a malicious request related to "
|
853 |
"the services only for the dashboard."
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: admin/includes/tab-settings.php:567
|
857 |
msgid "admin post for logged-in user"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: admin/includes/tab-settings.php:568
|
861 |
msgid "admin post for non logged-in user"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: admin/includes/tab-settings.php:592
|
865 |
msgid "Admin ajax/post"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: admin/includes/tab-settings.php:606
|
869 |
msgid ""
|
870 |
"Specify the action name (“action=…”) or the page name "
|
871 |
"(“page=…”) to prevent unintended blocking caused by "
|
873 |
"Zero-day Exploit” (for logged-in user)."
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: admin/includes/tab-settings.php:606 admin/includes/tab-settings.php:684
|
877 |
+
#: admin/includes/tab-settings.php:745
|
878 |
msgid "Exceptions"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: admin/includes/tab-settings.php:607
|
882 |
msgid "Toggle with non logged-in user"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: admin/includes/tab-settings.php:610
|
886 |
msgid "Candidate actions/pages"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: admin/includes/tab-settings.php:624
|
890 |
#, php-format
|
891 |
msgid ""
|
892 |
"Regardless of the country code, it will block a malicious request to <code>"
|
893 |
"%s⋯/*.php</code>."
|
894 |
msgstr ""
|
895 |
|
896 |
+
#: admin/includes/tab-settings.php:625
|
897 |
msgid ""
|
898 |
"Select the item which causes unintended blocking in order to exclude from "
|
899 |
"the validation target. Grayed item indicates “INACTIVE”."
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: admin/includes/tab-settings.php:626
|
903 |
#, php-format
|
904 |
msgid ""
|
905 |
"It configures “%s” to validate a request to the PHP file which "
|
907 |
"files beginning with a dot by the server's configuration."
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: admin/includes/tab-settings.php:627
|
911 |
msgid "Sorry, but your server type is not supported."
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: admin/includes/tab-settings.php:663 admin/includes/tab-settings.php:724
|
915 |
msgid "Force to load WP core"
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: admin/includes/tab-settings.php:668
|
919 |
msgid "Plugins area"
|
920 |
msgstr ""
|
921 |
|
922 |
+
#: admin/includes/tab-settings.php:729
|
923 |
msgid "Themes area"
|
924 |
msgstr ""
|
925 |
|
926 |
+
#: admin/includes/tab-settings.php:764
|
927 |
msgid "Front-end target settings"
|
928 |
msgstr ""
|
929 |
|
930 |
+
#: admin/includes/tab-settings.php:788
|
931 |
msgid "Follow “Validation rule settings”"
|
932 |
msgstr ""
|
933 |
|
934 |
+
#: admin/includes/tab-settings.php:850
|
935 |
#, php-format
|
936 |
msgid ""
|
937 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
939 |
"\">Response code</dfn> %s"
|
940 |
msgstr ""
|
941 |
|
942 |
+
#: admin/includes/tab-settings.php:916
|
943 |
msgid ""
|
944 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
945 |
msgstr ""
|
946 |
|
947 |
+
#: admin/includes/tab-settings.php:928
|
948 |
msgid ""
|
949 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
950 |
"target.\">Post type</dfn>"
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: admin/includes/tab-settings.php:940
|
954 |
msgid ""
|
955 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
956 |
"page as a blocking target.\">Category</dfn>"
|
957 |
msgstr ""
|
958 |
|
959 |
+
#: admin/includes/tab-settings.php:952
|
960 |
msgid ""
|
961 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
962 |
"a blocking target.\">Tag</dfn>"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: admin/includes/tab-settings.php:967
|
966 |
msgid "Specify the validation target on front-end."
|
967 |
msgstr ""
|
968 |
|
969 |
+
#: admin/includes/tab-settings.php:967
|
970 |
msgid "Validation target"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: admin/includes/tab-settings.php:978
|
974 |
msgid "All requests"
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: admin/includes/tab-settings.php:979
|
978 |
msgid "Specify the targets"
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: admin/includes/tab-settings.php:982
|
982 |
msgid ""
|
983 |
"Notice that “Validation timing” is deferred till “"
|
984 |
"wp” action hook. It means that this feature would not be compatible "
|
985 |
"with any page caching."
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: admin/includes/tab-settings.php:989
|
989 |
+
msgid ""
|
990 |
+
"<dfn title=\"Specify the frequency of request for certain period of time."
|
991 |
+
"\">Blocking condition</dfn>"
|
992 |
+
msgstr ""
|
993 |
+
|
994 |
+
#: admin/includes/tab-settings.php:991
|
995 |
+
#, php-format
|
996 |
+
msgid "More than %1$s page view (PV) in %2$s seconds"
|
997 |
+
msgstr ""
|
998 |
+
|
999 |
+
#: admin/includes/tab-settings.php:1000
|
1000 |
+
msgid ""
|
1001 |
+
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1002 |
+
"behaved bots and crawlers</dfn>"
|
1003 |
+
msgstr ""
|
1004 |
+
|
1005 |
+
#: admin/includes/tab-settings.php:1018
|
1006 |
msgid ""
|
1007 |
"A part of user agent string and a qualification connected with a separator "
|
1008 |
"that indicates an applicable rule and can be “:” (pass) or "
|
1012 |
"qualification”."
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: admin/includes/tab-settings.php:1018
|
1016 |
msgid "UA string and qualification"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: admin/includes/tab-settings.php:1037
|
1020 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: admin/includes/tab-settings.php:1037
|
1024 |
msgid "Excluded actions"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: admin/includes/tab-settings.php:1056
|
1028 |
msgid ""
|
1029 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1030 |
"server resources. If it is disabled, “HOST” and “"
|
1032 |
"return “true”."
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: admin/includes/tab-settings.php:1056
|
1036 |
msgid "DNS reverse lookup"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
+
#: admin/includes/tab-settings.php:1073
|
1040 |
msgid ""
|
1041 |
"It enables to simulate validation without deployment. The results can be "
|
1042 |
"found at “Public facing pages” in Logs."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: admin/includes/tab-settings.php:1073
|
1046 |
msgid "Simulation mode"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: admin/includes/tab-settings.php:1091
|
1050 |
msgid "Geolocation API settings"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: admin/includes/tab-settings.php:1100
|
1054 |
msgid ""
|
1055 |
"<dfn title=\"Cache and local database are scanned at the top priority.\">API "
|
1056 |
"selection and key settings</dfn>"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: admin/includes/tab-settings.php:1119
|
1060 |
msgid "Timeout for network API [sec]"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
+
#: admin/includes/tab-settings.php:1139
|
1064 |
#, php-format
|
1065 |
msgid ""
|
1066 |
"Can not find geolocation API libraries in <code>%s</code>. It seems to have "
|
1075 |
"troubles? | IP Geo Block\">this instruction</a>."
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: admin/includes/tab-settings.php:1146
|
1079 |
msgid "Local database settings"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: admin/includes/tab-settings.php:1160
|
1083 |
msgid "database"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: admin/includes/tab-settings.php:1161 classes/class-ip-geo-block-cron.php:414
|
1087 |
#, php-format
|
1088 |
msgid "Last update: %s"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: admin/includes/tab-settings.php:1174 admin/includes/tab-settings.php:1408
|
1092 |
+
msgid ""
|
1093 |
+
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1094 |
+
"once and activate again."
|
1095 |
+
msgstr ""
|
1096 |
+
|
1097 |
+
#: admin/includes/tab-settings.php:1180
|
1098 |
msgid "Auto updating (once a month)"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
+
#: admin/includes/tab-settings.php:1191 admin/includes/tab-settings.php:1423
|
1102 |
+
#, php-format
|
1103 |
+
msgid "Next schedule: %s"
|
1104 |
+
msgstr ""
|
1105 |
+
|
1106 |
+
#: admin/includes/tab-settings.php:1198
|
1107 |
msgid "Download database"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
#: admin/includes/tab-settings.php:1206
|
1111 |
msgid "Download now"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: admin/includes/tab-settings.php:1217
|
1115 |
msgid "Statistics and Logs settings"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: admin/includes/tab-settings.php:1226
|
1119 |
msgid "Record “Statistics”"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: admin/includes/tab-settings.php:1243
|
1123 |
msgid "Maximum period for “Statistics” (days)"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
#: admin/includes/tab-settings.php:1261
|
1127 |
msgid "Record “Logs”"
|
1128 |
msgstr ""
|
1129 |
|
1130 |
+
#: admin/includes/tab-settings.php:1273
|
1131 |
msgid "When requests blocked"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: admin/includes/tab-settings.php:1274
|
1135 |
msgid "When requests passed"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: admin/includes/tab-settings.php:1275
|
1139 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: admin/includes/tab-settings.php:1276
|
1143 |
msgid "Unauthenticated visitor"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: admin/includes/tab-settings.php:1277
|
1147 |
msgid "Authenticated user"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: admin/includes/tab-settings.php:1278
|
1151 |
msgid "All the validation"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: admin/includes/tab-settings.php:1287
|
1155 |
msgid "Maximum entries of “Logs”"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: admin/includes/tab-settings.php:1304
|
1159 |
msgid ""
|
1160 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
|
1161 |
"recorded with their values in “Logs”</dfn>"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
+
#: admin/includes/tab-settings.php:1322
|
1165 |
msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
+
#: admin/includes/tab-settings.php:1339
|
1169 |
msgid ""
|
1170 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1171 |
"“Live update”</dfn>"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
+
#: admin/includes/tab-settings.php:1351
|
1175 |
msgid "Ordinary file"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: admin/includes/tab-settings.php:1352
|
1179 |
msgid "In-Memory"
|
1180 |
msgstr ""
|
1181 |
|
1182 |
+
#: admin/includes/tab-settings.php:1355
|
1183 |
msgid "PDO_SQLITE driver not available"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
+
#: admin/includes/tab-settings.php:1356
|
1187 |
msgid ""
|
1188 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1189 |
"without conflict with other plugins."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
+
#: admin/includes/tab-settings.php:1357
|
1193 |
msgid ""
|
1194 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1195 |
"with other plugins using this method."
|
1196 |
msgstr ""
|
1197 |
|
1198 |
+
#: admin/includes/tab-settings.php:1366
|
1199 |
msgid "Reset database source of “Live update”"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
+
#: admin/includes/tab-settings.php:1374
|
1203 |
msgid "Reset now"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
+
#: admin/includes/tab-settings.php:1385
|
1207 |
msgid "IP address cache settings"
|
1208 |
msgstr ""
|
1209 |
|
1210 |
+
#: admin/includes/tab-settings.php:1394
|
1211 |
#, php-format
|
1212 |
msgid ""
|
1213 |
"<dfn title=\"If user authentication fails consecutively %d times, subsequent "
|
1215 |
"\">Expiration time [sec]</dfn>"
|
1216 |
msgstr ""
|
1217 |
|
1218 |
+
#: admin/includes/tab-settings.php:1414
|
1219 |
msgid "Garbage collection period [sec]"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: admin/includes/tab-settings.php:1432
|
1223 |
msgid "Number of entries to be displayed in cache"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: admin/includes/tab-settings.php:1450
|
1227 |
msgid "Submission settings"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: admin/includes/tab-settings.php:1462
|
1231 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: admin/includes/tab-settings.php:1462
|
1235 |
msgid "Message on comment form"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
+
#: admin/includes/tab-settings.php:1474
|
1239 |
msgid "None"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: admin/includes/tab-settings.php:1475
|
1243 |
msgid "Top"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
+
#: admin/includes/tab-settings.php:1476
|
1247 |
msgid "Bottom"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
+
#: admin/includes/tab-settings.php:1487
|
1251 |
msgid "Plugin settings"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
#: admin/includes/tab-settings.php:1500
|
1255 |
msgid ""
|
1256 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1257 |
"settings</dfn>"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: admin/includes/tab-settings.php:1518
|
1261 |
msgid "Remove all settings at uninstallation"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: admin/includes/tab-settings.php:1536
|
1265 |
msgid ""
|
1266 |
"<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
|
1267 |
"dfn>"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
+
#: admin/includes/tab-settings.php:1550
|
1271 |
msgid ""
|
1272 |
"You need to click the “Save Changes” button for imported "
|
1273 |
"settings to take effect."
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: admin/includes/tab-settings.php:1556
|
1277 |
msgid "Export / Import settings"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: admin/includes/tab-settings.php:1563
|
1281 |
msgid "Export settings"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
#: admin/includes/tab-settings.php:1564
|
1285 |
msgid "Import from the local file"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
+
#: admin/includes/tab-settings.php:1564
|
1289 |
msgid "Import settings"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: admin/includes/tab-settings.php:1573
|
1293 |
msgid "Import pre-defined settings"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: admin/includes/tab-settings.php:1580
|
1297 |
msgid ""
|
1298 |
"Import the default settings to revert to the “Right after "
|
1299 |
"installing” state"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
+
#: admin/includes/tab-settings.php:1580
|
1303 |
msgid "Default settings"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
+
#: admin/includes/tab-settings.php:1581
|
1307 |
msgid ""
|
1308 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1309 |
"for the “Back-end target settings”"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: admin/includes/tab-settings.php:1581
|
1313 |
msgid "Best for Back-end"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: admin/includes/tab-settings.php:1591
|
1317 |
+
msgid "Delete DB tables for this plugin"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: admin/includes/tab-settings.php:1599
|
1321 |
msgid "Delete now"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: admin/includes/tab-settings.php:1607
|
1325 |
+
msgid "Create DB tables for this plugin"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: admin/includes/tab-settings.php:1615
|
1329 |
msgid "Create now"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: admin/includes/tab-settings.php:1625
|
1333 |
msgid ""
|
1334 |
"<dfn title=\"When an unexpected blocking has occurred, please press the "
|
1335 |
"button to find the blocked request in the dumped information which may help "
|
1338 |
"› Support » IP Geo Block\">support forum</a> ]"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
+
#: admin/includes/tab-settings.php:1632
|
1342 |
msgid "Please copy & paste when submitting your issue to support forum."
|
1343 |
msgstr ""
|
1344 |
|
1345 |
+
#: admin/includes/tab-settings.php:1632
|
1346 |
msgid "Show information"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
+
#: admin/includes/tab-settings.php:1648
|
1350 |
msgid ""
|
1351 |
"To enhance the protection ability, please refer to “<a rel=\"noreferrer"
|
1352 |
"\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
|
1354 |
"\">The best practice for target settings</a>”."
|
1355 |
msgstr ""
|
1356 |
|
1357 |
+
#: admin/includes/tab-settings.php:1649
|
1358 |
msgid ""
|
1359 |
"If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
|
1360 |
"\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
|
1363 |
"\">Codex</a>."
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: admin/includes/tab-settings.php:1656
|
1367 |
msgid ""
|
1368 |
"While Maxmind and IP2Location will fetch the local database, others will "
|
1369 |
"pass an IP address to the APIs via HTTP."
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: admin/includes/tab-settings.php:1657
|
1373 |
msgid ""
|
1374 |
"Please select the appropriate APIs to fit the privacy law in your country."
|
1375 |
msgstr ""
|
1376 |
|
1377 |
+
#: admin/includes/tab-settings.php:1666
|
1378 |
#, php-format
|
1379 |
msgid ""
|
1380 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1381 |
"2.0.0+%s."
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: admin/includes/tab-settings.php:1674
|
1385 |
msgid ""
|
1386 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1387 |
"ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
|
1389 |
"cache plugin."
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: admin/includes/tab-settings.php:1675
|
1393 |
msgid ""
|
1394 |
"If you find any issues or have something to suggest, please feel free to "
|
1395 |
"open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
|
1397 |
"\">support forum</a>."
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: admin/includes/tab-settings.php:1682
|
1401 |
msgid ""
|
1402 |
"Please refer to the document “<a rel=\"noreferrer\" href=\"http://www."
|
1403 |
"ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
|
1495 |
"statistics."
|
1496 |
msgstr ""
|
1497 |
|
1498 |
+
#: classes/class-ip-geo-block-apis.php:667
|
1499 |
msgid ""
|
1500 |
"You need to select at least one IP geolocation service. Otherwise "
|
1501 |
"<strong>you'll be blocked</strong> after the cache expires."
|
1502 |
msgstr ""
|
1503 |
|
1504 |
+
#: classes/class-ip-geo-block-cron.php:217
|
1505 |
#, php-format
|
1506 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1507 |
msgstr ""
|
1508 |
|
1509 |
+
#: classes/class-ip-geo-block-cron.php:296
|
1510 |
msgid "Your database file is up-to-date."
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: classes/class-ip-geo-block-cron.php:395
|
1514 |
msgid "gz or zip is not supported on your system."
|
1515 |
msgstr ""
|
1516 |
|
1532 |
"details."
|
1533 |
msgstr ""
|
1534 |
|
1535 |
+
#: classes/class-ip-geo-block-logs.php:157
|
1536 |
#, php-format
|
1537 |
msgid ""
|
1538 |
"Creating a DB table %s had failed. Once de-activate this plugin, and then "
|
1539 |
"activate again."
|
1540 |
msgstr ""
|
1541 |
|
1542 |
+
#: classes/class-ip-geo-block-logs.php:635
|
1543 |
#, php-format
|
1544 |
msgid "The user %s (user ID: %d) is in use."
|
1545 |
msgstr ""
|
1546 |
|
1547 |
+
#: classes/class-ip-geo-block.php:417
|
1548 |
+
msgid "Dashboard"
|
1549 |
+
msgstr ""
|
1550 |
+
|
1551 |
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:151
|
1552 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:144
|
1553 |
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
rewrite.php
CHANGED
@@ -49,7 +49,7 @@ class IP_Geo_Block_Rewrite {
|
|
49 |
$path = str_replace( $site, '', $path );
|
50 |
}
|
51 |
|
52 |
-
return realpath( $path );
|
53 |
}
|
54 |
|
55 |
/**
|
@@ -74,11 +74,11 @@ class IP_Geo_Block_Rewrite {
|
|
74 |
*/
|
75 |
private static function abort( $context, $validate, $settings, $exist ) {
|
76 |
|
77 |
-
// mark as malicious
|
78 |
-
$validate['result'] = '
|
79 |
|
80 |
// (1) blocked, unknown, (3) unauthenticated, (5) all
|
81 |
-
IP_Geo_Block_Logs::record_logs( 'admin', $validate, $settings,
|
82 |
|
83 |
// update statistics
|
84 |
if ( $settings['save_statistics'] )
|
49 |
$path = str_replace( $site, '', $path );
|
50 |
}
|
51 |
|
52 |
+
return self::normalize_path( realpath( $path ) );
|
53 |
}
|
54 |
|
55 |
/**
|
74 |
*/
|
75 |
private static function abort( $context, $validate, $settings, $exist ) {
|
76 |
|
77 |
+
// mark as malicious path
|
78 |
+
$validate['result'] = 'badpath';
|
79 |
|
80 |
// (1) blocked, unknown, (3) unauthenticated, (5) all
|
81 |
+
IP_Geo_Block_Logs::record_logs( 'admin', $validate, $settings, TRUE );
|
82 |
|
83 |
// update statistics
|
84 |
if ( $settings['save_statistics'] )
|