IP Geo Block - Version 3.0.6.1

Version Description

Sorry for frequent update but the following bug should be fixed. * Bug fix: Fix the bug that "Candidate actions/pages" at "Exceptions" in "Admin ajax/post" were not displayed.

Download this release

Release Info

Developer tokkonopapa
Plugin Icon 128x128 IP Geo Block
Version 3.0.6.1
Comparing to
See all releases

Code changes from version 3.0.5 to 3.0.6.1

Files changed (47) hide show
  1. README.md +0 -58
  2. README.txt +17 -2
  3. admin/class-ip-geo-block-admin.php +55 -45
  4. admin/css/admin-icons.css +20 -8
  5. admin/css/admin-icons.min.css +1 -1
  6. admin/css/admin.css +148 -150
  7. admin/css/admin.min.css +2 -2
  8. admin/css/fonts/icomoon.eot +0 -0
  9. admin/css/fonts/icomoon.svg +1 -1
  10. admin/css/fonts/icomoon.ttf +0 -0
  11. admin/css/fonts/icomoon.woff +0 -0
  12. admin/images/alert.png +0 -0
  13. admin/images/find.png +0 -0
  14. admin/includes/class-admin-ajax.php +91 -7
  15. admin/includes/class-admin-rewrite.php +73 -17
  16. admin/includes/tab-accesslog.php +3 -3
  17. admin/includes/tab-settings.php +66 -40
  18. admin/includes/tab-statistics.php +25 -24
  19. admin/js/admin.js +180 -88
  20. admin/js/admin.min.js +2 -2
  21. admin/js/authenticate.js +25 -25
  22. admin/js/authenticate.min.js +2 -2
  23. admin/js/gmap.js +1 -1
  24. admin/js/gmap.min.js +1 -1
  25. classes/class-ip-geo-block-actv.php +1 -1
  26. classes/class-ip-geo-block-apis.php +1 -1
  27. classes/class-ip-geo-block-cron.php +1 -1
  28. classes/class-ip-geo-block-file.php +7 -9
  29. classes/class-ip-geo-block-lkup.php +1 -1
  30. classes/class-ip-geo-block-load.php +1 -1
  31. classes/class-ip-geo-block-logs.php +27 -7
  32. classes/class-ip-geo-block-opts.php +2 -2
  33. classes/class-ip-geo-block-util.php +4 -4
  34. classes/class-ip-geo-block.php +21 -19
  35. ip-geo-block.php +2 -2
  36. languages/ip-geo-block-ja.mo +0 -0
  37. languages/ip-geo-block-ja.po +308 -269
  38. languages/ip-geo-block.mo +0 -0
  39. languages/ip-geo-block.po +281 -244
  40. languages/ip-geo-block.pot +284 -245
  41. rewrite-ini.php +75 -0
  42. rewrite.php +2 -2
  43. samples.php +3 -4
  44. uninstall.php +1 -1
  45. wp-content/ip-geo-api/ip2location/class-ip2location.php +1 -1
  46. wp-content/ip-geo-api/maxmind/class-maxmind.php +1 -1
  47. wp-content/mu-plugins/ip-geo-block-mu.php +1 -1
README.md DELETED
@@ -1,58 +0,0 @@
1
- IP Geo Block
2
- ==============
3
-
4
- ### Description:
5
-
6
- It blocks any spams, login attempts and malicious access to the admin area
7
- posted from the specific countries, and also prevents zero-day exploit.
8
-
9
- See more detail at [WordPress.org][IPGB].
10
-
11
- ### Dependency:
12
-
13
- [IP Geo API 1.1.6][IPGeoAPI]
14
-
15
- ### Requirement:
16
-
17
- - WordPress 3.7+
18
-
19
- ### Attribution:
20
-
21
- This package includes GeoLite data created by MaxMind, available from
22
- [MaxMind][MaxMind],
23
- and also includes IP2Location open source libraries available from
24
- [IP2Location][IP2Loc].
25
-
26
- Also thanks for providing the following great services and REST APIs for free.
27
-
28
- Provider | Supported type | Licence
29
- ---------------------------------------|----------------|--------
30
- [http://freegeoip.net/] [freegeoip] | IPv4, IPv6 | free
31
- [http://ipinfo.io/] [ipinfo] | IPv4, IPv6 | free
32
- [http://geoip.nekudo.com/] [Nekudo] | IPv4, IPv6 | free
33
- [http://xhanch.com/] [Xhanch] | IPv4 | free
34
- [http://www.geoplugin.com/][geoplugin] | IPv4, IPv6 | free, need an attribution link
35
- [http://geoiplookup.net/] [geoiplkup] | IPv4, IPv6 | free
36
- [http://ip-api.com/] [ipapi] | IPv4, IPv6 | free for non-commercial use
37
- [http://ipinfodb.com/] [IPInfoDB] | IPv4, IPv6 | free for registered user
38
-
39
- ### License:
40
-
41
- This plugin is licensed under the GPL v2 or later.
42
-
43
- [IPGB]: https://wordpress.org/plugins/ip-geo-block/ "IP Geo Block — WordPress Plugins"
44
- [freegeoip]: http://freegeoip.net/ "freegeoip.net: FREE IP Geolocation Web Service"
45
- [ipinfo]: http://ipinfo.io/ "ipinfo.io - ip address information including geolocation, hostname and network details"
46
- [Telize]: http://www.telize.com/ "Telize - JSON IP and GeoIP REST API"
47
- [IPJson]: http://ip-json.rhcloud.com/ "Free IP Geolocation Web Service"
48
- [Pycox]: http://ip.pycox.com/ "Free IP Geolocation Web Service"
49
- [Nekudo]: http://geoip.nekudo.com/ "eoip.nekudo.com | Free IP geolocation API"
50
- [Xhanch]: http://xhanch.com/xhanch-api-ip-get-detail/ "Xhanch API - IP Get Detail | Xhanch Studio"
51
- [geoplugin]: http://www.geoplugin.com/ "geoPlugin to geolocate your visitors"
52
- [ipapi]: http://ip-api.com/ "IP-API.com - Free Geolocation API"
53
- [IPInfoDB]: http://ipinfodb.com/ "IPInfoDB | Free IP Address Geolocation Tools"
54
- [MaxMind]: http://www.maxmind.com "MaxMind - IP Geolocation and Online Fraud Prevention"
55
- [IP2Loc]: http://www.ip2location.com "IP Address Geolocation to Identify Website Visitor's Geographical Location"
56
- [Cache]: http://www.designbombs.com/top-wordpress-caching-plugins-compared/ "Top 6 Fastest WordPress Caching Plugins Compared (2016 Edition)"
57
- [IPGeoAPI]: https://github.com/tokkonopapa/WordPress-IP-Geo-API "GitHub - tokkonopapa/WordPress-IP-Geo-API: A class library combined with WordPress plugin IP Geo Block to handle geo-location database of Maxmind and IP2Location."
58
- [geoiplkup]: http://geoiplookup.net/ "What Is My IP Address | GeoIP Lookup"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: tokkonopapa
3
  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
7
- Stable tag: 3.0.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -352,6 +352,21 @@ Please refer to "[How can I fix permission troubles?](http://www.ipgeoblock.com/
352
 
353
  == Changelog ==
354
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
  = 3.0.5 =
356
  * **New feature:** Add "Live update" mode on "Logs" tab.
357
  * **Improvement:** List all the IP addresses in cache are now displayed and manageable on "Statistics" tab.
3
  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.1
7
+ Stable tag: 3.0.6.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
352
 
353
  == Changelog ==
354
 
355
+ = 3.0.6.1 =
356
+ Sorry for frequent update but the following bug should be fixed.
357
+ * **Bug fix:** Fix the bug that "Candidate actions/pages" at "Exceptions" in "Admin ajax/post" were not displayed.
358
+
359
+ = 3.0.6 =
360
+ * **New feature:** Add "Find blocked requests in Logs" button at "Exceptions". This helps to find a solution related to the incompatibility with unwanted blocking.
361
+ * **Improvement:** Support nginx for "Force to load WP core" at "Plugins area" / "Themes area".
362
+ * **Improvement:** Improve the extraction ability and verifiability of "Slug in back-end".
363
+ * **Improvement:** Add a new result "UAlist" that indicate a request is blocked by "UA string and qualification" in "Front-end target settings" section.
364
+ * **Improvement:** Improve responsiveness of live update control button on windows system.
365
+ * **Bug fix:** Fix the bug using php short open tag on "Logs" tab.
366
+ * **Bug fix:** Fix the bug related to absolute path in filesystem on windows system.
367
+ * **Bug fix:** Fix the issue that "Auto updating (once a month)" could not be disabled.
368
+ * See [3.0.6 release note](http://www.ipgeoblock.com/changelog/release-3.0.6.html "3.0.6 Release Note | IP Geo Block") for some details.
369
+
370
  = 3.0.5 =
371
  * **New feature:** Add "Live update" mode on "Logs" tab.
372
  * **Improvement:** List all the IP addresses in cache are now displayed and manageable on "Statistics" tab.
admin/class-ip-geo-block-admin.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Admin {
@@ -178,14 +178,14 @@ class IP_Geo_Block_Admin {
178
  * @see https://developers.google.com/maps/faq#china_ws_access
179
  */
180
  public function enqueue_admin_assets() {
 
 
181
  $footer = TRUE;
182
  $dependency = array( 'jquery' );
183
- $version = ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
184
- IP_Geo_Block::VERSION :
185
- max(
186
- filemtime( plugin_dir_path( __FILE__ ) . 'css/admin.css' ),
187
- filemtime( plugin_dir_path( __FILE__ ) . 'js/admin.js' )
188
- );
189
 
190
  switch ( $this->admin_tab ) {
191
  case 1: /* Statistics */
@@ -217,9 +217,7 @@ class IP_Geo_Block_Admin {
217
  $settings = IP_Geo_Block::get_option();
218
  if ( $key = $settings['api_key']['GoogleMap'] ) {
219
  wp_enqueue_script( IP_Geo_Block::PLUGIN_NAME . '-gmap-js',
220
- plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
221
- 'js/gmap.min.js' : 'js/gmap.js', __FILE__
222
- ),
223
  $dependency, IP_Geo_Block::VERSION, $footer
224
  );
225
  wp_enqueue_script( IP_Geo_Block::PLUGIN_NAME . '-google-map',
@@ -229,34 +227,25 @@ class IP_Geo_Block_Admin {
229
  );
230
  }
231
  wp_enqueue_script( IP_Geo_Block::PLUGIN_NAME . '-whois-js',
232
- plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
233
- 'js/whois.min.js' : 'js/whois.js', __FILE__
234
- ),
235
  $dependency, IP_Geo_Block::VERSION, $footer
236
  );
237
- break;
238
  }
239
 
240
  // css for option page
241
  wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-icons',
242
- plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
243
- 'css/admin-icons.min.css' : 'css/admin-icons.css', __FILE__
244
- ),
245
  array(), IP_Geo_Block::VERSION
246
  );
247
  wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-styles',
248
- plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
249
- 'css/admin.min.css' : 'css/admin.css', __FILE__
250
- ),
251
  array(), $version
252
  );
253
 
254
  // js for IP Geo Block admin page
255
  wp_register_script(
256
  $handle = IP_Geo_Block::PLUGIN_NAME . '-admin-script',
257
- plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
258
- 'js/admin.min.js' : 'js/admin.js', __FILE__
259
- ),
260
  $dependency + ( isset( $addon ) ? array( $addon ) : array() ),
261
  $version, $footer
262
  );
@@ -276,8 +265,11 @@ class IP_Geo_Block_Admin {
276
  /* [ 5] */ __( 'Clear logs ?', 'ip-geo-block' ),
277
  /* [ 6] */ __( 'ajax for logged-in user', 'ip-geo-block' ),
278
  /* [ 7] */ __( 'ajax for non logged-in user', 'ip-geo-block' ),
279
- /* [ 8] */ __( 'This feature is available with HTML5 compliant browsers.', 'ip-geo-block' ),
280
- /* [ 9] */ __( 'The selected row cannot be found in the visible area.', 'ip-geo-block' ),
 
 
 
281
  ),
282
  'i18n' => array(
283
  /* [ 0] */ '<div class="ip-geo-block-loading"></div>',
@@ -299,6 +291,7 @@ class IP_Geo_Block_Admin {
299
  ),
300
  'interval' => self::INTERVAL_LIVE_UPDATE, // interval for live update [sec]
301
  'timeout' => self::TIMEOUT_LIVE_UPDATE, // timeout of pausing live update [sec]
 
302
  )
303
  );
304
  wp_enqueue_script( $handle );
@@ -400,8 +393,8 @@ class IP_Geo_Block_Admin {
400
  }
401
 
402
  if ( $admin_menu ) {
403
- // `settings-updated` would be added when `network_wide` is saved as TRUE
404
- if ( $this->is_network && isset( $_REQUEST['settings-updated'] ) ) {
405
  $this->sync_multisite_option( $settings );
406
  wp_safe_redirect(
407
  esc_url_raw( add_query_arg(
@@ -660,7 +653,7 @@ class IP_Geo_Block_Admin {
660
 
661
  if ( $this->is_network ) {
662
  unset( $tabs[0], $tabs[5] ); // Settings, Site List
663
- $title .= ' <span class="ip-geo-block-title-link">';
664
  $title .= ' [ <a href="' . esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 0 ), $this->dashboard_url( TRUE ) ) ) . '" target="_self">' . __( 'Settings', 'ip-geo-block' ) . '</a> ]';
665
  $title .= ' [ <a href="' . esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 5 ), $this->dashboard_url( TRUE ) ) ) . '" target="_self">' . __( 'Site List', 'ip-geo-block' ) . '</a> ]';
666
  $title .= '</span>';
@@ -672,7 +665,7 @@ class IP_Geo_Block_Admin {
672
 
673
  if ( $settings['network_wide'] ) {
674
  unset( $tabs[1], $tabs[4], $tabs[2], $tabs[3] ); // Statistics, Logs, Search, Attribution
675
- $title .= ' <span class="ip-geo-block-title-link">';
676
  $title .= '[ ' . __( 'Network wide', 'ip-geo-block' ) . ' ]';
677
  $title .= '</span>';
678
  }
@@ -688,11 +681,11 @@ class IP_Geo_Block_Admin {
688
  </h2>
689
  <p style="text-align:left">[ <a id="ip-geo-block-toggle-sections" href="#!"><?php _e( 'Toggle all', 'ip-geo-block' ); ?></a> ]
690
  <?php if ( 4 === $tab ) { /* Logs tab */ ?>
691
- <input id="ip-geo-block-live-update" type="checkbox"<? checked( isset( $cookie[4][1] ) && 'o' === $cookie[4][1] ); disabled( extension_loaded( 'pdo_sqlite' ), FALSE ); ?> /><label for="ip-geo-block-live-update">
692
  <dfn title="<?php _e( 'Independent of &#8220;Statistics and Logs settings&#8221;, 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>
693
  </label>
694
  <?php } elseif (5 === $tab ) { /* Site List tab */ ?>
695
- <input id="ip-geo-block-open-new" type="checkbox"<? checked( isset( $cookie[5][1] ) && 'o' === $cookie[5][1] );?> /><label for="ip-geo-block-open-new">
696
  <dfn title="<?php _e( 'Open a new window on clicking the link in the chart.', 'ip-geo-block' ); ?>"><?php _e( 'Open a new window', 'ip-geo-block' ); ?></dfn>
697
  </label>
698
  <?php } ?></p>
@@ -1069,8 +1062,8 @@ class IP_Geo_Block_Admin {
1069
  $output['public'][ $key ] = array();
1070
  }
1071
 
1072
- // 3.0.4 AS number
1073
- $output['Maxmind']['use_asn'] = FALSE;
1074
 
1075
  // 3.0.5 Live update
1076
  $output['live_update']['in_memory'] = 0;
@@ -1288,9 +1281,12 @@ class IP_Geo_Block_Admin {
1288
 
1289
  require_once IP_GEO_BLOCK_PATH . 'admin/includes/class-admin-ajax.php';
1290
 
 
1291
  $settings = IP_Geo_Block::get_option();
1292
  $which = isset( $_POST['which'] ) ? $_POST['which'] : NULL;
1293
- switch ( isset( $_POST['cmd' ] ) ? $_POST['cmd' ] : NULL ) {
 
 
1294
  case 'download':
1295
  $res = IP_Geo_Block::get_instance();
1296
  $res = $res->exec_update_db();
@@ -1326,8 +1322,6 @@ class IP_Geo_Block_Admin {
1326
 
1327
  case 'clear-logs':
1328
  // Delete logs in MySQL DB
1329
- $hook = array( 'comment', 'login', 'admin', 'xmlrpc', 'public' );
1330
- $which = in_array( $which, $hook ) ? $which : NULL;
1331
  IP_Geo_Block_Logs::clear_logs( $which );
1332
  $res = array(
1333
  'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME,
@@ -1382,6 +1376,11 @@ class IP_Geo_Block_Admin {
1382
  $res = IP_Geo_Block_Util::get_registered_actions( TRUE );
1383
  break;
1384
 
 
 
 
 
 
1385
  case 'restore-cache':
1386
  // Restore cache from database and format for DataTables
1387
  $res = IP_Geo_Block_Admin_Ajax::restore_cache( $which );
@@ -1389,7 +1388,7 @@ class IP_Geo_Block_Admin {
1389
 
1390
  case 'bulk-action-remove':
1391
  // Delete specified IP addresses from cache
1392
- $res = IP_Geo_Block_Logs::delete_cache_entry( $which['IP'] );
1393
  break;
1394
 
1395
  case 'bulk-action-ip-white':
@@ -1397,21 +1396,25 @@ class IP_Geo_Block_Admin {
1397
  case 'bulk-action-as-white':
1398
  case 'bulk-action-as-black':
1399
  // Bulk actions for registration of settings
1400
- $src = ( FALSE !== strpos( $_POST['cmd'], '-ip-' ) ? 'IP' : 'AS' );
1401
- $dst = ( FALSE !== strpos( $_POST['cmd'], '-white' ) ? 'white_list' : 'black_list' );
1402
 
1403
- if ( empty( $which[ $src ] ) )
 
1404
  break;
 
1405
 
1406
- foreach ( array_unique( $which[ $src ] ) as $val ) {
1407
  // replace anonymized IP address with CIDR (IPv4:256, IPv6:4096)
1408
  $val = preg_replace(
1409
- array( '!\.\*\*\*!', '!\*\*\*!', '![^\w\.:/]!' ),
1410
- array( '.0/24', '000/116', '' ),
1411
  $val
1412
  );
1413
- if ( FALSE === strpos( $settings['extra_ips'][ $dst ], $val ) )
 
1414
  $settings['extra_ips'][ $dst ] .= "\n" . $val;
 
1415
  }
1416
 
1417
  if ( $settings['network_wide'] && is_plugin_active_for_network( IP_GEO_BLOCK_BASE ) )
@@ -1458,10 +1461,17 @@ class IP_Geo_Block_Admin {
1458
  $res = IP_Geo_Block_Admin_Ajax::reset_live_log();
1459
  break;
1460
 
 
 
 
 
 
 
 
1461
  case 'create-table':
1462
  case 'delete-table':
1463
  // Need to define `IP_GEO_BLOCK_DEBUG` to true
1464
- if ( 'create-table' === $_POST['cmd'] )
1465
  IP_Geo_Block_Logs::create_tables();
1466
  else
1467
  IP_Geo_Block_Logs::delete_tables();
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Admin {
178
  * @see https://developers.google.com/maps/faq#china_ws_access
179
  */
180
  public function enqueue_admin_assets() {
181
+ $release = ( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG );
182
+
183
  $footer = TRUE;
184
  $dependency = array( 'jquery' );
185
+ $version = $release ? IP_Geo_Block::VERSION : max(
186
+ filemtime( plugin_dir_path( __FILE__ ) . 'css/admin.css' ),
187
+ filemtime( plugin_dir_path( __FILE__ ) . 'js/admin.js' )
188
+ );
 
 
189
 
190
  switch ( $this->admin_tab ) {
191
  case 1: /* Statistics */
217
  $settings = IP_Geo_Block::get_option();
218
  if ( $key = $settings['api_key']['GoogleMap'] ) {
219
  wp_enqueue_script( IP_Geo_Block::PLUGIN_NAME . '-gmap-js',
220
+ plugins_url( $release ? 'js/gmap.min.js' : 'js/gmap.js', __FILE__ ),
 
 
221
  $dependency, IP_Geo_Block::VERSION, $footer
222
  );
223
  wp_enqueue_script( IP_Geo_Block::PLUGIN_NAME . '-google-map',
227
  );
228
  }
229
  wp_enqueue_script( IP_Geo_Block::PLUGIN_NAME . '-whois-js',
230
+ plugins_url( $release ? 'js/whois.min.js' : 'js/whois.js', __FILE__ ),
 
 
231
  $dependency, IP_Geo_Block::VERSION, $footer
232
  );
 
233
  }
234
 
235
  // css for option page
236
  wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-icons',
237
+ plugins_url( $release ? 'css/admin-icons.min.css' : 'css/admin-icons.css', __FILE__ ),
 
 
238
  array(), IP_Geo_Block::VERSION
239
  );
240
  wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-styles',
241
+ plugins_url( $release ? 'css/admin.min.css' : 'css/admin.css', __FILE__ ),
 
 
242
  array(), $version
243
  );
244
 
245
  // js for IP Geo Block admin page
246
  wp_register_script(
247
  $handle = IP_Geo_Block::PLUGIN_NAME . '-admin-script',
248
+ plugins_url( $release ? 'js/admin.min.js' : 'js/admin.js', __FILE__ ),
 
 
249
  $dependency + ( isset( $addon ) ? array( $addon ) : array() ),
250
  $version, $footer
251
  );
265
  /* [ 5] */ __( 'Clear logs ?', 'ip-geo-block' ),
266
  /* [ 6] */ __( 'ajax for logged-in user', 'ip-geo-block' ),
267
  /* [ 7] */ __( 'ajax for non logged-in user', 'ip-geo-block' ),
268
+ /* [ 8] */ __( '[Found: %d]', 'ip-geo-block' ),
269
+ /* [ 9] */ __( 'Find and verify `%s` on &#8220;Logs&#8221; tab.', 'ip-geo-block' ),
270
+ /* [10] */ __( 'This feature is available with HTML5 compliant browsers.', 'ip-geo-block' ),
271
+ /* [11] */ __( 'The selected row cannot be found in the visible area.', 'ip-geo-block' ),
272
+ /* [12] */ __( 'An error occurred while executing the ajax command `%s`.', 'ip-geo-block' ),
273
  ),
274
  'i18n' => array(
275
  /* [ 0] */ '<div class="ip-geo-block-loading"></div>',
291
  ),
292
  'interval' => self::INTERVAL_LIVE_UPDATE, // interval for live update [sec]
293
  'timeout' => self::TIMEOUT_LIVE_UPDATE, // timeout of pausing live update [sec]
294
+ 'altgmap' => apply_filters( 'google-maps-nokey', '//maps.google.com/maps' ),
295
  )
296
  );
297
  wp_enqueue_script( $handle );
393
  }
394
 
395
  if ( $admin_menu ) {
396
+ // `settings-updated` would be added just after settings updated.
397
+ if ( ! empty( $_REQUEST['settings-updated'] ) && $this->is_network ) {
398
  $this->sync_multisite_option( $settings );
399
  wp_safe_redirect(
400
  esc_url_raw( add_query_arg(
653
 
654
  if ( $this->is_network ) {
655
  unset( $tabs[0], $tabs[5] ); // Settings, Site List
656
+ $title .= ' <span class="ip-geo-block-menu-link">';
657
  $title .= ' [ <a href="' . esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 0 ), $this->dashboard_url( TRUE ) ) ) . '" target="_self">' . __( 'Settings', 'ip-geo-block' ) . '</a> ]';
658
  $title .= ' [ <a href="' . esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 5 ), $this->dashboard_url( TRUE ) ) ) . '" target="_self">' . __( 'Site List', 'ip-geo-block' ) . '</a> ]';
659
  $title .= '</span>';
665
 
666
  if ( $settings['network_wide'] ) {
667
  unset( $tabs[1], $tabs[4], $tabs[2], $tabs[3] ); // Statistics, Logs, Search, Attribution
668
+ $title .= ' <span class="ip-geo-block-menu-link">';
669
  $title .= '[ ' . __( 'Network wide', 'ip-geo-block' ) . ' ]';
670
  $title .= '</span>';
671
  }
681
  </h2>
682
  <p style="text-align:left">[ <a id="ip-geo-block-toggle-sections" href="#!"><?php _e( 'Toggle all', 'ip-geo-block' ); ?></a> ]
683
  <?php if ( 4 === $tab ) { /* Logs tab */ ?>
684
+ <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">
685
  <dfn title="<?php _e( 'Independent of &#8220;Statistics and Logs settings&#8221;, 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>
686
  </label>
687
  <?php } elseif (5 === $tab ) { /* Site List tab */ ?>
688
+ <input id="ip-geo-block-open-new" type="checkbox"<?php checked( isset( $cookie[5][1] ) && 'o' === $cookie[5][1] );?> /><label for="ip-geo-block-open-new">
689
  <dfn title="<?php _e( 'Open a new window on clicking the link in the chart.', 'ip-geo-block' ); ?>"><?php _e( 'Open a new window', 'ip-geo-block' ); ?></dfn>
690
  </label>
691
  <?php } ?></p>
1062
  $output['public'][ $key ] = array();
1063
  }
1064
 
1065
+ // 3.0.4 AS number, 3.0.6 Auto updating of DB files
1066
+ $output['Maxmind']['use_asn'] = $output['update']['auto'] = FALSE;
1067
 
1068
  // 3.0.5 Live update
1069
  $output['live_update']['in_memory'] = 0;
1281
 
1282
  require_once IP_GEO_BLOCK_PATH . 'admin/includes/class-admin-ajax.php';
1283
 
1284
+ // `$which` and `$cmd` should be restricted by whitelist in each function
1285
  $settings = IP_Geo_Block::get_option();
1286
  $which = isset( $_POST['which'] ) ? $_POST['which'] : NULL;
1287
+ $cmd = isset( $_POST['cmd' ] ) ? $_POST['cmd' ] : NULL;
1288
+
1289
+ switch ( $cmd ) {
1290
  case 'download':
1291
  $res = IP_Geo_Block::get_instance();
1292
  $res = $res->exec_update_db();
1322
 
1323
  case 'clear-logs':
1324
  // Delete logs in MySQL DB
 
 
1325
  IP_Geo_Block_Logs::clear_logs( $which );
1326
  $res = array(
1327
  'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME,
1376
  $res = IP_Geo_Block_Util::get_registered_actions( TRUE );
1377
  break;
1378
 
1379
+ case 'get-blocked':
1380
+ // Get blocked actions and pages
1381
+ $res = IP_Geo_Block_Admin_Ajax::get_blocked_queries( $which );
1382
+ break;
1383
+
1384
  case 'restore-cache':
1385
  // Restore cache from database and format for DataTables
1386
  $res = IP_Geo_Block_Admin_Ajax::restore_cache( $which );
1388
 
1389
  case 'bulk-action-remove':
1390
  // Delete specified IP addresses from cache
1391
+ $res = IP_Geo_Block_Logs::delete_cache_entry( @$which['IP'] );
1392
  break;
1393
 
1394
  case 'bulk-action-ip-white':
1396
  case 'bulk-action-as-white':
1397
  case 'bulk-action-as-black':
1398
  // Bulk actions for registration of settings
1399
+ $src = ( FALSE !== strpos( $cmd, '-ip-' ) ? 'IP' : 'AS' );
1400
+ $dst = ( FALSE !== strpos( $cmd, '-white' ) ? 'white_list' : 'black_list' );
1401
 
1402
+ if ( empty( $which[ $src ] ) ) {
1403
+ $res = array( 'error' => sprintf( __( 'An error occurred while executing the ajax command `%s`.', 'ip-geo-block' ), $cmd ) );
1404
  break;
1405
+ }
1406
 
1407
+ foreach ( array_unique( (array)$which[ $src ] ) as $val ) {
1408
  // replace anonymized IP address with CIDR (IPv4:256, IPv6:4096)
1409
  $val = preg_replace(
1410
+ array( '!\.\*\*\*$!', '!\*\*\*$!' ),
1411
+ array( '.0/24', '000/116' ),
1412
  $val
1413
  );
1414
+ if ( ( filter_var( preg_replace( '!/\d+$!', '', $val ), FILTER_VALIDATE_IP ) || preg_match( '^AS\d+$', $val ) ) &&
1415
+ ( FALSE === strpos( $settings['extra_ips'][ $dst ], $val ) ) ) {
1416
  $settings['extra_ips'][ $dst ] .= "\n" . $val;
1417
+ }
1418
  }
1419
 
1420
  if ( $settings['network_wide'] && is_plugin_active_for_network( IP_GEO_BLOCK_BASE ) )
1461
  $res = IP_Geo_Block_Admin_Ajax::reset_live_log();
1462
  break;
1463
 
1464
+ case 'find-admin':
1465
+ case 'find-plugins':
1466
+ case 'find-themes':
1467
+ // Get slug in blocked requests for exceptions
1468
+ $res = IP_Geo_Block_Admin_Ajax::find_exceptions( $cmd );
1469
+ break;
1470
+
1471
  case 'create-table':
1472
  case 'delete-table':
1473
  // Need to define `IP_GEO_BLOCK_DEBUG` to true
1474
+ if ( 'create-table' === $cmd )
1475
  IP_Geo_Block_Logs::create_tables();
1476
  else
1477
  IP_Geo_Block_Logs::delete_tables();
admin/css/admin-icons.css CHANGED
@@ -1,11 +1,11 @@
1
  /*! IP Geo Block admin icons */
2
  @font-face {
3
  font-family: 'icomoon';
4
- src: url('fonts/icomoon.eot?9y580b');
5
- src: url('fonts/icomoon.eot?9y580b#iefix') format('embedded-opentype'),
6
- url('fonts/icomoon.ttf?9y580b') format('truetype'),
7
- url('fonts/icomoon.woff?9y580b') format('woff'),
8
- url('fonts/icomoon.svg?9y580b#icomoon') format('svg');
9
  font-weight: normal;
10
  font-style: normal;
11
  }
@@ -24,18 +24,30 @@
24
  -moz-osx-font-smoothing: grayscale;
25
  }
26
 
27
- .ip-geo-block-icon-play3:before {
28
  content: "\ea1c";
29
  }
30
- .ip-geo-block-icon-pause2:before {
31
  content: "\ea1d";
32
  }
33
- .ip-geo-block-icon-stop2:before {
34
  content: "\ea1e";
35
  }
 
 
 
 
36
 
37
  #toplevel_page_ip-geo-block .dashicons-admin-generic:before {
38
  font-family: 'icomoon';
39
  content: "\e9c9";
40
  font-size: 18px;
41
  }
 
 
 
 
 
 
 
 
1
  /*! IP Geo Block admin icons */
2
  @font-face {
3
  font-family: 'icomoon';
4
+ src: url('fonts/icomoon.eot?astkh8');
5
+ src: url('fonts/icomoon.eot?astkh8#iefix') format('embedded-opentype'),
6
+ url('fonts/icomoon.ttf?astkh8') format('truetype'),
7
+ url('fonts/icomoon.woff?astkh8') format('woff'),
8
+ url('fonts/icomoon.svg?astkh8#icomoon') format('svg');
9
  font-weight: normal;
10
  font-style: normal;
11
  }
24
  -moz-osx-font-smoothing: grayscale;
25
  }
26
 
27
+ .ip-geo-block-icon-play:before {
28
  content: "\ea1c";
29
  }
30
+ .ip-geo-block-icon-pause:before {
31
  content: "\ea1d";
32
  }
33
+ .ip-geo-block-icon-stop:before {
34
  content: "\ea1e";
35
  }
36
+ .ip-geo-block-icon-warn:before {
37
+ content: "\ea07";
38
+ color: #c43322;
39
+ }
40
 
41
  #toplevel_page_ip-geo-block .dashicons-admin-generic:before {
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';
48
+ content: "\e9b4";
49
+ font-size: 10px;
50
+ position: absolute;
51
+ top: 1.4em;
52
+ left: 2em;
53
+ }*/
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?9y580b);src:url(fonts/icomoon.eot?9y580b#iefix) format('embedded-opentype'),url(fonts/icomoon.ttf?9y580b) format('truetype'),url(fonts/icomoon.woff?9y580b) format('woff'),url(fonts/icomoon.svg?9y580b#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-play3:before{content:"\ea1c"}.ip-geo-block-icon-pause2:before{content:"\ea1d"}.ip-geo-block-icon-stop2:before{content:"\ea1e"}#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}
admin/css/admin.css CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Project: WordPress IP Geo Block
3
- * Copyright (c) 2015-2017 tokkonopapa (tokkonopapa@yahoo.com)
4
  * This software is released under the MIT License.
5
  */
6
  dfn {
@@ -72,6 +72,9 @@ fieldset.ip-geo-block-field h3 {
72
  margin: 0;
73
  font-size: 14px !important;
74
  }
 
 
 
75
  fieldset.ip-geo-block-field legend.panel-heading {
76
  padding: 10px;
77
  }
@@ -100,34 +103,39 @@ fieldset.ip-geo-block-field .ip-geo-block-dropdown:before {
100
  left: -2px;
101
  top: 38%;
102
  }
 
 
 
 
103
  fieldset.ip-geo-block-field ul.ip-geo-block-dropup:before {
104
  top: 0.25em;
105
  }
106
  fieldset.ip-geo-block-field ul.ip-geo-block-dropdown:before {
107
- top: 0.45em;
108
  }
109
  fieldset.ip-geo-block-field table.form-table {
110
  margin: 0 0 0.5em;
111
  width: 100%;
112
  }
113
- fieldset.ip-geo-block-field .ip-geo-block-desc {
114
- color: #666;
115
- font-size: 13px !important;
116
- /* font-style: italic;*/
117
- }
118
 
 
119
  textarea.regular-text {
120
  width: 25em;
121
  }
 
 
 
 
122
 
123
- ul.ip-geo-block-settings-folding {
 
124
  margin: 0.5em 0;
125
  }
126
- ul.ip-geo-block-settings-folding ul {
127
  margin-bottom: 0;
128
  }
129
- ul.ip-geo-block-settings-folding li:first-child {
130
- margin-top: 0.5em;
131
  }
132
  .folding-disable {
133
  pointer-events: none;
@@ -138,52 +146,46 @@ ul.ip-geo-block-settings-folding li:first-child {
138
  font-style:oblique !important;
139
  }
140
 
141
- ul.ip-geo-block-float li {
 
142
  display: inline-block;
143
  width: 18em;
144
- }
145
-
146
- ul#ip-geo-block-actions dfn {
147
- border: none;
148
- }
149
- ul#ip-geo-block-actions span.dashicons {
150
- font-size: 14px;
151
  }
152
  .ip-geo-block-checked {
153
  list-style-type: disc;
154
  }
155
-
156
  .ip-geo-block-ip-addr {
157
  display: inline-block;
158
  padding-top: 5px;
159
  }
160
-
161
  .ip-geo-block-hide {
162
  display: none;
163
  }
164
-
165
  .ip-geo-block-sup {
166
  margin-left: 0.2em;
167
  display: inline-block;
168
  }
169
-
170
- ul.ip-geo-block-note {
171
  margin-top: 1em;
172
  list-style: disc inside;
173
  }
174
- ul.ip-geo-block-list {
175
- margin-top: 0.25em;
176
- margin-bottom: 0.25em;
177
  }
178
- ul.ip-geo-block-list label {
 
 
 
 
179
  display: inline-block;
180
  }
181
- @media screen and (min-width:782px) {
182
- ul.ip-geo-block-list .code {
183
- width: 15em;
184
- }
185
  }
186
 
 
187
  .ip-geo-block-loading,
188
  #ip-geo-block-live-loading {
189
  background-size: 16px 16px;
@@ -194,36 +196,17 @@ ul.ip-geo-block-list label {
194
  margin-left: 1em;
195
  margin-top: 0.2em;
196
  display: inline-block;
197
- vertical-align: middle;
198
  }
199
  .ip-geo-block-loading {
200
  background-image: url(data:image/gif;base64,R0lGODlhEAAQAPIGAAAAAMLCwkJCQpKSkmJiYoKCgv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAGACwAAAAAEAAQAAADM2i63P4wyklrC0IEKgAQnAdOmGYFBLExwboQWcG2rlHEwTDQLUsUOd2mBxkUCgNKa+dIAAAh+QQJCgAGACwAAAIACgAOAAADLWgWIqHQCABEVLPe1R4MBOFFRFNsRUNsYDFewTC8iixvQ1EMyxjEvyBLODQkAAAh+QQJCgAGACwAAAAACgAOAAADLWi6IRJrCQCECoU0ag1xxeBARuEQ0UUU5DUM7fK+qTEUYR0EcM3Ev51uB7wAEwAh+QQJCgAGACwAAAAADgAKAAADLWi6URQrLiJEkSaM0eqrkLFtAVEEAgAIylAUQ5SuSqCFNZjhWG3zmB8wOJQkAAAh+QQJCgAGACwCAAAADgAKAAADK2hqMRMrLuekCnCU8gqBDCZ2glBcYkSUxIJJgQdaUVDOtAAAAr3oPN/llgAAIfkECQoABgAsBgAAAAoADgAAAytoEdauiz0Yx5BQFTvN2EMXWNgUFETZFIJQdERLiGgZtKohAIDQ7T0RrpEAACH5BAkKAAYALAYAAgAKAA4AAAMqaKoR+609Fie1K4zhZiibNRSg1XAQUXQPIQgE835voQgAIARqh+ummSUBACH5BAUKAAYALAIABgAOAAoAAAMsaLpsES2+F9mEddEgBFbBMGACAAiMOCrlGRBFWBQD2L0dYYjfUuQZEKynSAAAOw==);
201
  }
202
 
203
- .ip-geo-block-border {
204
- border-top: inherit;
205
- }
206
-
207
- .ip-geo-block-notice {
208
- color: #dd3d36;
209
- }
210
-
211
- .ip-geo-block-title {
212
- width: 100px;
213
- display: inline-block;
214
- }
215
-
216
- .ip-geo-block-result {
217
- color: #2786C2;
218
- display: inline-block;
219
- }
220
-
221
  #ip-geo-block-map {
222
  height: 400px;
223
  margin: 1em auto;
224
  }
225
-
226
- /* google map infomation window */
227
  .gm-style-iw {
228
  width: 18em;
229
  height: auto !important;
@@ -237,11 +220,13 @@ ul.ip-geo-block-list label {
237
  margin: 0.2em;
238
  }
239
 
240
- ul.ip-geo-block-statistics-countries li {
241
- width: 12em;
242
- float: left;
243
- text-align: right;
244
- padding: 0.2em;
 
 
245
  }
246
 
247
  /* table */
@@ -272,7 +257,7 @@ table.ip-geo-block-table td:first-child {
272
  min-width: 4.3em;
273
  }
274
 
275
- /* for whois */
276
  @media screen and (max-width:782px) {
277
  #ip-geo-block-whois .panel-body {
278
  padding: 0 0.5em;
@@ -288,7 +273,7 @@ table.ip-geo-block-table td:first-child {
288
  margin-bottom: 0;
289
  }
290
 
291
- /* for google chart */
292
  #ip-geo-block-chart-countries {
293
  height: 200px;
294
  }
@@ -301,10 +286,6 @@ table.ip-geo-block-table td:first-child {
301
  #ip_geo_block_settings_validation_mimetype + label + ul {
302
  margin-top: 0.7em;
303
  }
304
- #ip_geo_block_settings_validation_plugins,
305
- #ip_geo_block_settings_validation_themes {
306
- margin-top: 0.7em;
307
- }
308
  #ip_geo_block_settings_create_user {
309
  margin-bottom: 0.5em;
310
  }
@@ -330,35 +311,36 @@ table.ip-geo-block-table td:first-child {
330
  background-color: #00919e !important;
331
  border-color: #00525a !important;
332
  }
 
 
 
 
 
 
 
 
333
 
334
- span.ip-geo-block-title-link {
 
335
  font-size: 13px !important;
336
  }
337
- /*span.ip-geo-block-title-link a {
338
- box-shadow: none;
339
- }*/
340
 
341
- dfn ~ .ip-geo-block-cycle,
342
- dfn ~ .ip-geo-block-lock,
343
- dfn ~ .ip-geo-block-unlock {
344
  margin-left: 0.6em;
345
  }
346
- .ip-geo-block-cycle,
347
- .ip-geo-block-lock,
348
- .ip-geo-block-unlock {
349
  cursor: pointer;
 
350
  box-shadow: none;
351
  text-decoration: none;
 
352
  }
353
- .ip-geo-block-cycle:active,
354
- .ip-geo-block-lock:active,
355
- .ip-geo-block-unlock:active {
356
  position: relative;
357
  top: 1px;
358
  }
359
- .ip-geo-block-cycle span,
360
- .ip-geo-block-lock span,
361
- .ip-geo-block-unlock span {
362
  height: 16px;
363
  width: 16px;
364
  margin: 0;
@@ -369,79 +351,94 @@ dfn ~ .ip-geo-block-unlock {
369
  background-position: center center;
370
  background-repeat: no-repeat;
371
  }
372
- .ip-geo-block-cycle span {
373
  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);
374
  }
375
- .ip-geo-block-lock span {
376
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3Ny3y9Zzq8dRmb7M1dlXnsIFdK0AcawAcqwphrYAcKvZ29wAb6oJd680jrqlw9MBcqxmo8MUfbJLl75eoMI7kbzX2ttqp8VSmL1YnL8NeK+Tu89DlL1ImMEOebBNmL4OkqMoAAAAAXRSTlMAQObYZgAAAPlJREFUeAG9kAWyhTAQBIPOsCzufv9TPnf4Ll0CSbpmxXwNy3Yc23rz2fV8kPA99433AIQIiGDTCD0lojiOQPXCDSFJIbF16CMWItkQMkF+inZzSLYhFKLl+a9UKTZaqJTZJYtarZuo40chrv9CqJTN+behVi+Cm7RdDgRld6AMgLxrE/dxBz0BEjwBEmD/uIsWPAOAF9A+CE56ufSryr8oqfOYcBbQJ8YkES7COkFOYzTypqCDOTDo2wljaEw4vp1APYyWKd8WMBozylvCpcvmXeHQ5fCegHia4s1FgZcIVeVFeFx1M4MvYG4eBHdYWufC+addBtf8E3vdjBNhWnVQqAAAAABJRU5ErkJggg==);
377
  }
378
- .ip-geo-block-unlock span {
379
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NyzydRzq8dRmb7I09hYnsEFdK0AcawAcqzP1toqhrYAcKvZ29wAb6oMeK8zjbqrxtQBcazBz9Zko8MVfbLF0thMmL07kbtpp8WjwtJSmL1YnL+Tu89DlL1JmMEPebBFV++UAAAAAXRSTlMAQObYZgAAAONJREFUeAG9kAWChDAMAIMmJaTFXf7/ynXflvMbnE5j8DU8Pwh8D1yEUYxEGEchWFEJEjEflESBhTQSQm2MRpIotQhZTmgKgMIg5ZlFKBmrGg7UFXJpEQKW8qIKN7YeikJdBJI2BTtXwfyx0L3XoPphvBEliNU49OoxqEa6g4cTST/OYshvi3hV8+FxSNfluG3jqxG8C6h7gF6jU+AODnTsFGSCA5O4I8wpQDq7I5CUAKWQW+AZYOYtoQPoGDeECWDaioBmWQxeBduoWURso+5WpBdw7R4ENTVDcGE435tJwT+xB+vMEnZRNB0YAAAAAElFTkSuQmCC);
380
  }
 
 
 
 
 
 
 
 
 
381
  table.form-table th .ip-geo-block-cycle span {
382
  vertical-align: text-bottom;
383
  }
384
 
385
- /* https://developer.wordpress.org/resource/dashicons/ for WordPress 3.8
386
- .ip-geo-block-cycle span:before {
387
- background: none;
388
- content: "\f463";
389
- display: inline-block;
390
- font: normal 16px/20px dashicons;
391
- speak: none;
392
- height: 1em;
393
- width: 1em;
394
- text-align: center;
395
- vertical-align: text-top;
396
- -webkit-font-smoothing: antialiased;
397
- -moz-osx-font-smoothing: grayscale;
398
- }*/
399
- #ip-geo-block-back-to-top {
400
- margin:0;
401
- text-align:right;
402
  }
403
- #ip-geo-block-open-new,
404
- #ip-geo-block-live-update {
405
- margin-left: 1em;
 
406
  }
407
 
408
- /* embeded data for network site list */
409
- .ip-geo-block-network {
410
- margin-bottom: 1em;
411
  }
412
-
413
- /* for statistics */
414
- ol.ip-geo-block-top-list {
415
- display: inline-table;
416
- list-style-position: outside;
417
- margin: 0 2em 0.5em 1.75em;
418
  }
419
- ol.ip-geo-block-top-list h4 {
420
- margin: 1em 0;
421
  }
422
- ol.ip-geo-block-top-list li code {
423
- background: none;
 
 
 
 
424
  }
425
 
426
- /* icon for top level menu ... this must be included in every admin page */
427
- #adminmenu #toplevel_page_ip-geo-block .wp-menu-image img {
428
- height: 20px !important;
429
- width: 20px !important;
 
 
 
 
 
430
  }
431
 
432
- /* action for admin post */
433
  .ip-geo-block-admin-post {
434
  color: #c43322;
435
  margin-left: 0.25em;
436
  }
 
 
 
 
437
 
438
- /* SVG in google chart */
439
- svg a > text {
440
- fill: #0073aa;
441
- text-decoration: underline;
 
442
  }
443
- svg a:hover > text {
444
- fill: #0096dd;
 
 
 
 
 
 
 
 
445
  }
446
 
447
  /*------------------------------------------------------------
@@ -556,11 +553,11 @@ table.dataTable > tbody > tr > td span {
556
  table.dataTable input[type="checkbox"] {
557
  height: 16px;
558
  width: 16px;
559
- margin: 0;
560
  }
561
  table.dataTable > thead > tr > th:first-child,
562
  table.dataTable > tbody > tr > td:first-child {
563
- padding: 8px 4px 8px 18px;
564
  text-align: left;
565
  }
566
 
@@ -599,12 +596,11 @@ table.collapsed > tbody > tr.parent > td:first-child::before {
599
  }
600
  table.collapsed > tbody > tr > td:first-child::before {
601
  border-left: 5px solid #555;
602
- top: 1px;
603
  left: -2px;
604
  }
605
  table.collapsed > tbody > tr.parent > td:first-child::before {
606
  border-top: 5px solid #555;
607
- top: 4px;
608
  left: -4px;
609
  }
610
  table.collapsed > tbody > tr.child > td:first-child::before {
@@ -706,24 +702,24 @@ table.collapsed > tbody > tr.child > td.child > ul li span.dtr-data {
706
  }
707
 
708
  /* Select target / Period to extract */
709
- ul#ip-geo-block-select-target,
710
- ul#ip-geo-block-select-layout,
711
- ul#ip-geo-block-select-duration {
712
  margin: 0;
713
  }
714
- ul#ip-geo-block-select-target li,
715
- ul#ip-geo-block-select-layout li,
716
- ul#ip-geo-block-select-duration li {
717
  float: left;
718
  margin-right: 1.5em;
719
  }
720
- ul#ip-geo-block-select-target li label,
721
- ul#ip-geo-block-select-duration li label {
722
  cursor: pointer;
723
  }
724
 
725
  /* Filter */
726
- input#ip_geo_block_settings_search_filter {
727
  width: 16em;
728
  padding-top: 3px;
729
  }
@@ -757,20 +753,21 @@ mark {
757
  }
758
 
759
  /* Live update log */
760
- ul#ip-geo-block-live-log {
761
  margin: 0;
762
  }
763
- ul#ip-geo-block-live-log li {
764
  float: left;
765
  margin-right: 3em;
766
  }
767
- ul#ip-geo-block-live-log li:last-child {
768
  margin-right: 0;
769
  }
770
- ul#ip-geo-block-live-log li input[type=radio] {
771
- display: none;
 
772
  }
773
- ul#ip-geo-block-live-log li input[type=radio] + label {
774
  display:inline-block;
775
  margin:-2px;
776
  padding: 4px 12px;
@@ -799,7 +796,7 @@ ul#ip-geo-block-live-log li input[type=radio] + label {
799
  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
800
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
801
  }
802
- ul#ip-geo-block-live-log li input[type=radio]:checked + label {
803
  background-image: none;
804
  outline: 0;
805
  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
@@ -814,9 +811,10 @@ ul#ip-geo-block-live-log li input[type=radio]:checked + label {
814
  .ip-geo-block-live-timer {
815
  height: 1em;
816
  width: 1em;
817
- position: relative;
818
- top: -0.1em;
819
  margin: 0;
 
 
 
820
  }
821
  .ip-geo-block-live-timer:before {
822
  content: "";
@@ -824,8 +822,8 @@ ul#ip-geo-block-live-log li input[type=radio]:checked + label {
824
  height: 1em;
825
  width: 1em;
826
  background: radial-gradient(#0073aa, #72777c);
827
- position: absolute;
828
  border-radius: 50%;
 
829
  top: 0;
830
  left: 0;
831
  }
1
  /*!
2
  * Project: WordPress IP Geo Block
3
+ * Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
4
  * This software is released under the MIT License.
5
  */
6
  dfn {
72
  margin: 0;
73
  font-size: 14px !important;
74
  }
75
+ fieldset.ip-geo-block-field h4 {
76
+ margin: 0.75em 0 0.5em 0;
77
+ }
78
  fieldset.ip-geo-block-field legend.panel-heading {
79
  padding: 10px;
80
  }
103
  left: -2px;
104
  top: 38%;
105
  }
106
+ fieldset.ip-geo-block-field .form-table .ip-geo-block-dropup,
107
+ fieldset.ip-geo-block-field .form-table .ip-geo-block-dropdown {
108
+ margin-top: 0.75em;
109
+ }
110
  fieldset.ip-geo-block-field ul.ip-geo-block-dropup:before {
111
  top: 0.25em;
112
  }
113
  fieldset.ip-geo-block-field ul.ip-geo-block-dropdown:before {
114
+ top: 0.5em;
115
  }
116
  fieldset.ip-geo-block-field table.form-table {
117
  margin: 0 0 0.5em;
118
  width: 100%;
119
  }
 
 
 
 
 
120
 
121
+ /* Text */
122
  textarea.regular-text {
123
  width: 25em;
124
  }
125
+ fieldset.ip-geo-block-field input.regular-text,
126
+ fieldset.ip-geo-block-field textarea.regular-text {
127
+ font-size: 95%;
128
+ }
129
 
130
+ /* Folding */
131
+ .ip-geo-block-settings-folding {
132
  margin: 0.5em 0;
133
  }
134
+ .ip-geo-block-settings-folding ul {
135
  margin-bottom: 0;
136
  }
137
+ .ip-geo-block-settings-folding li {
138
+ margin: 0.5em 0;
139
  }
140
  .folding-disable {
141
  pointer-events: none;
146
  font-style:oblique !important;
147
  }
148
 
149
+ /* Etc */
150
+ .ip-geo-block-float li {
151
  display: inline-block;
152
  width: 18em;
153
+ margin-top: 0;
 
 
 
 
 
 
154
  }
155
  .ip-geo-block-checked {
156
  list-style-type: disc;
157
  }
 
158
  .ip-geo-block-ip-addr {
159
  display: inline-block;
160
  padding-top: 5px;
161
  }
 
162
  .ip-geo-block-hide {
163
  display: none;
164
  }
 
165
  .ip-geo-block-sup {
166
  margin-left: 0.2em;
167
  display: inline-block;
168
  }
169
+ .ip-geo-block-note {
 
170
  margin-top: 1em;
171
  list-style: disc inside;
172
  }
173
+ .ip-geo-block-border {
174
+ border-top: inherit;
 
175
  }
176
+ .ip-geo-block-notice {
177
+ color: #dd3d36;
178
+ }
179
+ .ip-geo-block-title {
180
+ width: 100px;
181
  display: inline-block;
182
  }
183
+ .ip-geo-block-result {
184
+ color: #2786C2;
185
+ display: inline-block;
 
186
  }
187
 
188
+ /* Loading image */
189
  .ip-geo-block-loading,
190
  #ip-geo-block-live-loading {
191
  background-size: 16px 16px;
196
  margin-left: 1em;
197
  margin-top: 0.2em;
198
  display: inline-block;
199
+ vertical-align: top;
200
  }
201
  .ip-geo-block-loading {
202
  background-image: url(data:image/gif;base64,R0lGODlhEAAQAPIGAAAAAMLCwkJCQpKSkmJiYoKCgv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAGACwAAAAAEAAQAAADM2i63P4wyklrC0IEKgAQnAdOmGYFBLExwboQWcG2rlHEwTDQLUsUOd2mBxkUCgNKa+dIAAAh+QQJCgAGACwAAAIACgAOAAADLWgWIqHQCABEVLPe1R4MBOFFRFNsRUNsYDFewTC8iixvQ1EMyxjEvyBLODQkAAAh+QQJCgAGACwAAAAACgAOAAADLWi6IRJrCQCECoU0ag1xxeBARuEQ0UUU5DUM7fK+qTEUYR0EcM3Ev51uB7wAEwAh+QQJCgAGACwAAAAADgAKAAADLWi6URQrLiJEkSaM0eqrkLFtAVEEAgAIylAUQ5SuSqCFNZjhWG3zmB8wOJQkAAAh+QQJCgAGACwCAAAADgAKAAADK2hqMRMrLuekCnCU8gqBDCZ2glBcYkSUxIJJgQdaUVDOtAAAAr3oPN/llgAAIfkECQoABgAsBgAAAAoADgAAAytoEdauiz0Yx5BQFTvN2EMXWNgUFETZFIJQdERLiGgZtKohAIDQ7T0RrpEAACH5BAkKAAYALAYAAgAKAA4AAAMqaKoR+609Fie1K4zhZiibNRSg1XAQUXQPIQgE835voQgAIARqh+ummSUBACH5BAUKAAYALAIABgAOAAoAAAMsaLpsES2+F9mEddEgBFbBMGACAAiMOCrlGRBFWBQD2L0dYYjfUuQZEKynSAAAOw==);
203
  }
204
 
205
+ /* Google Map infomation window */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  #ip-geo-block-map {
207
  height: 400px;
208
  margin: 1em auto;
209
  }
 
 
210
  .gm-style-iw {
211
  width: 18em;
212
  height: auto !important;
220
  margin: 0.2em;
221
  }
222
 
223
+ /* SVG in google chart */
224
+ svg a > text {
225
+ fill: #0073aa;
226
+ text-decoration: underline;
227
+ }
228
+ svg a:hover > text {
229
+ fill: #0096dd;
230
  }
231
 
232
  /* table */
257
  min-width: 4.3em;
258
  }
259
 
260
+ /* Whois */
261
  @media screen and (max-width:782px) {
262
  #ip-geo-block-whois .panel-body {
263
  padding: 0 0.5em;
273
  margin-bottom: 0;
274
  }
275
 
276
+ /* Google Chart */
277
  #ip-geo-block-chart-countries {
278
  height: 200px;
279
  }
286
  #ip_geo_block_settings_validation_mimetype + label + ul {
287
  margin-top: 0.7em;
288
  }
 
 
 
 
289
  #ip_geo_block_settings_create_user {
290
  margin-bottom: 0.5em;
291
  }
311
  background-color: #00919e !important;
312
  border-color: #00525a !important;
313
  }
314
+ #ip-geo-block-back-to-top {
315
+ margin:0;
316
+ text-align:right;
317
+ }
318
+ #ip-geo-block-open-new,
319
+ #ip-geo-block-live-update {
320
+ margin-left: 1em;
321
+ }
322
 
323
+ /* Top menu link */
324
+ .ip-geo-block-menu-link {
325
  font-size: 13px !important;
326
  }
 
 
 
327
 
328
+ /* Icons */
329
+ dfn ~ .ip-geo-block-icon {
 
330
  margin-left: 0.6em;
331
  }
332
+ .ip-geo-block-icon {
 
 
333
  cursor: pointer;
334
+ outline: none;
335
  box-shadow: none;
336
  text-decoration: none;
337
+ background-color: transparent;
338
  }
339
+ .ip-geo-block-icon:active {
 
 
340
  position: relative;
341
  top: 1px;
342
  }
343
+ .ip-geo-block-icon span {
 
 
344
  height: 16px;
345
  width: 16px;
346
  margin: 0;
351
  background-position: center center;
352
  background-repeat: no-repeat;
353
  }
354
+ .ip-geo-block-icon-cycle span {
355
  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);
356
  }
357
+ .ip-geo-block-icon-lock span {
358
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3Ny3y9Zzq8dRmb7M1dlXnsIFdK0AcawAcqwphrYAcKvZ29wAb6oJd680jrqlw9MBcqxmo8MUfbJLl75eoMI7kbzX2ttqp8VSmL1YnL8NeK+Tu89DlL1ImMEOebBNmL4OkqMoAAAAAXRSTlMAQObYZgAAAPlJREFUeAG9kAWyhTAQBIPOsCzufv9TPnf4Ll0CSbpmxXwNy3Yc23rz2fV8kPA99433AIQIiGDTCD0lojiOQPXCDSFJIbF16CMWItkQMkF+inZzSLYhFKLl+a9UKTZaqJTZJYtarZuo40chrv9CqJTN+behVi+Cm7RdDgRld6AMgLxrE/dxBz0BEjwBEmD/uIsWPAOAF9A+CE56ufSryr8oqfOYcBbQJ8YkES7COkFOYzTypqCDOTDo2wljaEw4vp1APYyWKd8WMBozylvCpcvmXeHQ5fCegHia4s1FgZcIVeVFeFx1M4MvYG4eBHdYWufC+addBtf8E3vdjBNhWnVQqAAAAABJRU5ErkJggg==);
359
  }
360
+ .ip-geo-block-icon-unlock span {
361
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NyzydRzq8dRmb7I09hYnsEFdK0AcawAcqzP1toqhrYAcKvZ29wAb6oMeK8zjbqrxtQBcazBz9Zko8MVfbLF0thMmL07kbtpp8WjwtJSmL1YnL+Tu89DlL1JmMEPebBFV++UAAAAAXRSTlMAQObYZgAAAONJREFUeAG9kAWChDAMAIMmJaTFXf7/ynXflvMbnE5j8DU8Pwh8D1yEUYxEGEchWFEJEjEflESBhTQSQm2MRpIotQhZTmgKgMIg5ZlFKBmrGg7UFXJpEQKW8qIKN7YeikJdBJI2BTtXwfyx0L3XoPphvBEliNU49OoxqEa6g4cTST/OYshvi3hV8+FxSNfluG3jqxG8C6h7gF6jU+AODnTsFGSCA5O4I8wpQDq7I5CUAKWQW+AZYOYtoQPoGDeECWDaioBmWQxeBduoWURso+5WpBdw7R4ENTVDcGE435tJwT+xB+vMEnZRNB0YAAAAAElFTkSuQmCC);
362
  }
363
+ .ip-geo-block-icon-find span {
364
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NzS19rD0NWHtMpGk7kYfbAGda0Req+WtcTT1temwM4AcasAcqwAc6wAcKydvMt1pr8Ab6pqpcLX2doggrKoxdNYm7yzw8u/y9HO1tkKdq4th7Td3t6DrcLL0taxyNPGe/YhAAAAAXRSTlMAQObYZgAAARVJREFUeAGtkkeiwyAMRP2xDfxoRjElvd3/lOkNUlZ5u0GPruan/Bnz96Xadr21rvP/7+ujXsAjom78rj4ApCoERIipqfGB1H7wPmYhw1DXjZI6nOel1oJhVAmdUP0tTEDkVC4AYvqIbaDOCqFV6vwRF0tIeYoo6J/X7ICuPAJl9ZynwiIfB5DXxZlRChulbh8xZci0EHZK3TziJFDL504rEOZ+iR5cVj82DoS7XtSshLJpKqaB0Dg3ZjcsQWKaKiF1gVQlITwh/bw2pgKeEeURhE29yKSzUFF03p1V7Wqj2Y7GfrY9X/NirJsPxKsxfBLSSs5GmH8yjAWPSNd8Yoez4f4/G1nIsksqFtGK1i9e39o0P+EAqaoRLlQ+r94AAAAASUVORK5CYII=);
365
+ }
366
+ span.ip-geo-block-icon-alert,
367
+ .ip-geo-block-icon-alert span {
368
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAkFBMVEXc3Nzc2trWl5DHRDTFOyvOgXfc1tXCLBrEMiHEMyLNcmfaxMLDMSDDLx7bu7jRiYHDLhzDMB/LX1PaxsTDLh3YtrHMY1bWmpPJVknSjYXUkYnZuLTMZVnENCPWlI3QhXzENiXXrqrDLRzXsa3Oal7Pe3Hc2NjVn5nNbmPayMbbwb7ay8rUj4fc09Lbw8Db0dDBbRUDAAAAAXRSTlMAQObYZgAAAPVJREFUeAG9ktXWwyAQBonC12brFvff5f2frr4nBredK2DnTFS8Gst2XM8XZmypIGeWcT4PFABaGIXlClfWG1NiC4Ubu705oKRcY32wTAHl2MdTYEqEK8hIiHgHSnSJeaogMyEWO4BijZCvwII2MS9UJ2BXTh+hQidoEttboBOwq3WBnkCNpQlA2iyAhol2hRu71n97p4fw0Z9/ugoPHCfFA+o/iLfCkyBglRJdICBas7uuey+R56fF14wNanj+/QjwY3aX23cBFn6EiHmHNT/ICYxystv/wJy4UHWGlN2cuPB72tFqAq3dP/Hk3zs0E5LZVryGC/hqGNnUa0SVAAAAAElFTkSuQmCC);
369
+ vertical-align: bottom;
370
+ }
371
+
372
  table.form-table th .ip-geo-block-cycle span {
373
  vertical-align: text-bottom;
374
  }
375
 
376
+ /* Option list */
377
+ .ip-geo-block-list {
378
+ margin-top: 0;
379
+ margin-bottom: 0.7em;
 
 
 
 
 
 
 
 
 
 
 
 
 
380
  }
381
+ @media screen and (min-width:782px) {
382
+ ul.ip-geo-block-list .code {
383
+ width: 15em;
384
+ }
385
  }
386
 
387
+ /* Exceptions */
388
+ .ip-geo-block-list-exceptions label {
389
+ display: inline-block;
390
  }
391
+ .ip-geo-block-list-exceptions dfn {
392
+ border: none;
 
 
 
 
393
  }
394
+ .ip-geo-block-list-exceptions span.dashicons {
395
+ font-size: 14px;
396
  }
397
+ .ip-geo-block-list-exceptions a.ip-geo-block-icon {
398
+ margin-left: 0.3em;
399
+ outline: none;
400
+ box-shadow: none;
401
+ text-decoration: none;
402
+ background-color: transparent;
403
  }
404
 
405
+ /* Description */
406
+ .form-table td p.ip-geo-block-desc,
407
+ .form-table td p.ip-geo-block-find-desc {
408
+ color: #666;
409
+ font-size: 13px !important;
410
+ margin: 4px 0 0.5em 0.5em;
411
+ }
412
+ .ip-geo-block-find-desc {
413
+ display: none;
414
  }
415
 
416
+ /* Action for admin post */
417
  .ip-geo-block-admin-post {
418
  color: #c43322;
419
  margin-left: 0.25em;
420
  }
421
+ .ip-geo-block-found {
422
+ color: #c43322;
423
+ font-weight: bold;
424
+ }
425
 
426
+ /* Statistics */
427
+ .ip-geo-block-top-list {
428
+ display: inline-table;
429
+ list-style-position: outside;
430
+ margin: 0 2em 0.5em 1.75em;
431
  }
432
+ .ip-geo-block-top-list h4 {
433
+ margin: 1em 0;
434
+ }
435
+ .ip-geo-block-top-list li code {
436
+ background: none;
437
+ }
438
+
439
+ /* Embeded data for network site list */
440
+ .ip-geo-block-network {
441
+ margin-bottom: 1em;
442
  }
443
 
444
  /*------------------------------------------------------------
553
  table.dataTable input[type="checkbox"] {
554
  height: 16px;
555
  width: 16px;
556
+ margin: -4px 1px 0 0;
557
  }
558
  table.dataTable > thead > tr > th:first-child,
559
  table.dataTable > tbody > tr > td:first-child {
560
+ padding: 8px 4px 8px 1.4em;
561
  text-align: left;
562
  }
563
 
596
  }
597
  table.collapsed > tbody > tr > td:first-child::before {
598
  border-left: 5px solid #555;
 
599
  left: -2px;
600
  }
601
  table.collapsed > tbody > tr.parent > td:first-child::before {
602
  border-top: 5px solid #555;
603
+ top: 3px;
604
  left: -4px;
605
  }
606
  table.collapsed > tbody > tr.child > td:first-child::before {
702
  }
703
 
704
  /* Select target / Period to extract */
705
+ #ip-geo-block-select-target,
706
+ #ip-geo-block-select-layout,
707
+ #ip-geo-block-select-duration {
708
  margin: 0;
709
  }
710
+ #ip-geo-block-select-target li,
711
+ #ip-geo-block-select-layout li,
712
+ #ip-geo-block-select-duration li {
713
  float: left;
714
  margin-right: 1.5em;
715
  }
716
+ #ip-geo-block-select-target li label,
717
+ #ip-geo-block-select-duration li label {
718
  cursor: pointer;
719
  }
720
 
721
  /* Filter */
722
+ #ip_geo_block_settings_search_filter {
723
  width: 16em;
724
  padding-top: 3px;
725
  }
753
  }
754
 
755
  /* Live update log */
756
+ #ip-geo-block-live-log {
757
  margin: 0;
758
  }
759
+ #ip-geo-block-live-log li {
760
  float: left;
761
  margin-right: 3em;
762
  }
763
+ #ip-geo-block-live-log li:last-child {
764
  margin-right: 0;
765
  }
766
+ #ip-geo-block-live-log li input[type=radio] {
767
+ visibility: hidden;
768
+ position: absolute;
769
  }
770
+ #ip-geo-block-live-log li input[type=radio] + label {
771
  display:inline-block;
772
  margin:-2px;
773
  padding: 4px 12px;
796
  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
797
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
798
  }
799
+ #ip-geo-block-live-log li input[type=radio]:checked + label {
800
  background-image: none;
801
  outline: 0;
802
  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
811
  .ip-geo-block-live-timer {
812
  height: 1em;
813
  width: 1em;
 
 
814
  margin: 0;
815
+ position: relative;
816
+ top: 0;
817
+ left: 0;
818
  }
819
  .ip-geo-block-live-timer:before {
820
  content: "";
822
  height: 1em;
823
  width: 1em;
824
  background: radial-gradient(#0073aa, #72777c);
 
825
  border-radius: 50%;
826
+ position: absolute;
827
  top: 0;
828
  left: 0;
829
  }
admin/css/admin.min.css CHANGED
@@ -1,6 +1,6 @@
1
  /*
2
  Project: WordPress IP Geo Block
3
- Copyright (c) 2015-2017 tokkonopapa (tokkonopapa@yahoo.com)
4
  This software is released under the MIT License.
5
  */
6
- dfn{cursor:help;border-bottom:1px dotted #888}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 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 ul.ip-geo-block-dropup:before{top:.25em}fieldset.ip-geo-block-field ul.ip-geo-block-dropdown:before{top:.45em}fieldset.ip-geo-block-field table.form-table{margin:0 0 .5em;width:100%}fieldset.ip-geo-block-field .ip-geo-block-desc{color:#666;font-size:13px!important}textarea.regular-text{width:25em}ul.ip-geo-block-settings-folding{margin:.5em 0}ul.ip-geo-block-settings-folding ul{margin-bottom:0}ul.ip-geo-block-settings-folding li:first-child{margin-top:.5em}.folding-disable{pointer-events:none;opacity:.5}.folding-inactive{opacity:.5;font-style:oblique!important}ul.ip-geo-block-float li{display:inline-block;width:18em}ul#ip-geo-block-actions dfn{border:none}ul#ip-geo-block-actions span.dashicons{font-size:14px}.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-result,.ip-geo-block-sup,.ip-geo-block-title,ul.ip-geo-block-list label{display:inline-block}.ip-geo-block-sup{margin-left:.2em}ul.ip-geo-block-note{margin-top:1em;list-style:disc inside}ul.ip-geo-block-list{margin-top:.25em;margin-bottom:.25em}@media screen and (min-width:782px){ul.ip-geo-block-list .code{width:15em}}#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:middle}.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-border{border-top:inherit}.ip-geo-block-notice{color:#dd3d36}.ip-geo-block-title{width:100px}.ip-geo-block-result{color:#2786C2}#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}ul.ip-geo-block-statistics-countries li{width:12em;float:left;text-align:right;padding:.2em}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,#ip_geo_block_settings_validation_plugins,#ip_geo_block_settings_validation_themes{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}span.ip-geo-block-title-link{font-size:13px!important}dfn~.ip-geo-block-cycle,dfn~.ip-geo-block-lock,dfn~.ip-geo-block-unlock{margin-left:.6em}.ip-geo-block-cycle,.ip-geo-block-lock,.ip-geo-block-unlock{cursor:pointer;box-shadow:none;text-decoration:none}.ip-geo-block-cycle:active,.ip-geo-block-lock:active,.ip-geo-block-unlock:active{position:relative;top:1px}.ip-geo-block-cycle span,.ip-geo-block-lock span,.ip-geo-block-unlock 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}.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-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-lock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3Ny3y9Zzq8dRmb7M1dlXnsIFdK0AcawAcqwphrYAcKvZ29wAb6oJd680jrqlw9MBcqxmo8MUfbJLl75eoMI7kbzX2ttqp8VSmL1YnL8NeK+Tu89DlL1ImMEOebBNmL4OkqMoAAAAAXRSTlMAQObYZgAAAPlJREFUeAG9kAWyhTAQBIPOsCzufv9TPnf4Ll0CSbpmxXwNy3Yc23rz2fV8kPA99433AIQIiGDTCD0lojiOQPXCDSFJIbF16CMWItkQMkF+inZzSLYhFKLl+a9UKTZaqJTZJYtarZuo40chrv9CqJTN+behVi+Cm7RdDgRld6AMgLxrE/dxBz0BEjwBEmD/uIsWPAOAF9A+CE56ufSryr8oqfOYcBbQJ8YkES7COkFOYzTypqCDOTDo2wljaEw4vp1APYyWKd8WMBozylvCpcvmXeHQ5fCegHia4s1FgZcIVeVFeFx1M4MvYG4eBHdYWufC+addBtf8E3vdjBNhWnVQqAAAAABJRU5ErkJggg==)}.ip-geo-block-unlock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NyzydRzq8dRmb7I09hYnsEFdK0AcawAcqzP1toqhrYAcKvZ29wAb6oMeK8zjbqrxtQBcazBz9Zko8MVfbLF0thMmL07kbtpp8WjwtJSmL1YnL+Tu89DlL1JmMEPebBFV++UAAAAAXRSTlMAQObYZgAAAONJREFUeAG9kAWChDAMAIMmJaTFXf7/ynXflvMbnE5j8DU8Pwh8D1yEUYxEGEchWFEJEjEflESBhTQSQm2MRpIotQhZTmgKgMIg5ZlFKBmrGg7UFXJpEQKW8qIKN7YeikJdBJI2BTtXwfyx0L3XoPphvBEliNU49OoxqEa6g4cTST/OYshvi3hV8+FxSNfluG3jqxG8C6h7gF6jU+AODnTsFGSCA5O4I8wpQDq7I5CUAKWQW+AZYOYtoQPoGDeECWDaioBmWQxeBduoWURso+5WpBdw7R4ENTVDcGE435tJwT+xB+vMEnZRNB0YAAAAAElFTkSuQmCC)}table.form-table th .ip-geo-block-cycle span{vertical-align:text-bottom}#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-network{margin-bottom:1em}ol.ip-geo-block-top-list{display:inline-table;list-style-position:outside;margin:0 2em .5em 1.75em}ol.ip-geo-block-top-list h4{margin:1em 0}ol.ip-geo-block-top-list li code{background:0 0}#adminmenu #toplevel_page_ip-geo-block .wp-menu-image img{height:20px!important;width:20px!important}.ip-geo-block-admin-post{color:#c43322;margin-left:.25em}svg a>text{fill:#0073aa;text-decoration:underline}svg a:hover>text{fill:#0096dd}.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>tbody>tr{cursor:pointer}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:0}table.dataTable>tbody>tr>td:first-child,table.dataTable>thead>tr>th:first-child{padding:8px 4px 8px 18px;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;top:1px;left:-2px}table.collapsed>tbody>tr.parent>td:first-child::before{border-top:5px solid #555;top:4px;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%}ul#ip-geo-block-live-log,ul#ip-geo-block-select-duration,ul#ip-geo-block-select-layout,ul#ip-geo-block-select-target{margin:0}ul#ip-geo-block-select-duration li,ul#ip-geo-block-select-layout li,ul#ip-geo-block-select-target li{float:left;margin-right:1.5em}ul#ip-geo-block-select-duration li label,ul#ip-geo-block-select-target li label{cursor:pointer}input#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}ul#ip-geo-block-live-log li{float:left;margin-right:3em}ul#ip-geo-block-live-log li:last-child{margin-right:0}ul#ip-geo-block-live-log li input[type=radio]{display:none}ul#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)}ul#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;position:relative;top:-.1em;margin:0}.ip-geo-block-live-timer:before{content:"";display:block;height:1em;width:1em;background:radial-gradient(#0073aa,#72777c);position:absolute;border-radius:50%;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)}}
1
  /*
2
  Project: WordPress IP Geo Block
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,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>text{fill:#0073aa;text-decoration:underline}svg a:hover>text{fill:#0096dd}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:active{position:relative;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-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)}}
admin/css/fonts/icomoon.eot CHANGED
Binary file
admin/css/fonts/icomoon.svg CHANGED
@@ -7,11 +7,11 @@
7
  <font-face units-per-em="1024" ascent="960" descent="-64" />
8
  <missing-glyph horiz-adv-x="1024" />
9
  <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
 
10
  <glyph unicode="&#xe933;" glyph-name="folder-download" d="M576 704l-128 128h-448v-832h1024v704h-448zM512 96l-224 224h160v256h128v-256h160l-224-224z" />
11
  <glyph unicode="&#xe948;" glyph-name="location2" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 444c-108.248 0-196 87.752-196 196s87.752 196 196 196 196-87.752 196-196-87.752-196-196-196zM388 640c0 68.483 55.517 124 124 124s124-55.517 124-124c0-68.483-55.517-124-124-124s-124 55.517-124 124z" />
12
  <glyph unicode="&#xe94b;" glyph-name="map" d="M0 768l320 128v-768l-320-128zM384 928l320-192v-736l-320 160zM768 736l256 192v-768l-256-192z" />
13
  <glyph unicode="&#xe964;" glyph-name="database" d="M512 960c-282.77 0-512-71.634-512-160v-128c0-88.366 229.23-160 512-160s512 71.634 512 160v128c0 88.366-229.23 160-512 160zM512 416c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160zM512 128c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160z" />
14
- <glyph unicode="&#xe97b;" glyph-name="spinner2" d="M1024 448c-1.278 66.862-15.784 133.516-42.576 194.462-26.704 61-65.462 116.258-113.042 161.92-47.552 45.696-103.944 81.82-164.984 105.652-61.004 23.924-126.596 35.352-191.398 33.966-64.81-1.282-129.332-15.374-188.334-41.356-59.048-25.896-112.542-63.47-156.734-109.576-44.224-46.082-79.16-100.708-102.186-159.798-23.114-59.062-34.128-122.52-32.746-185.27 1.286-62.76 14.964-125.148 40.134-182.206 25.088-57.1 61.476-108.828 106.11-151.548 44.61-42.754 97.472-76.504 154.614-98.72 57.118-22.304 118.446-32.902 179.142-31.526 60.708 1.29 120.962 14.554 176.076 38.914 55.15 24.282 105.116 59.48 146.366 102.644 41.282 43.14 73.844 94.236 95.254 149.43 13.034 33.458 21.88 68.4 26.542 103.798 1.246-0.072 2.498-0.12 3.762-0.12 35.346 0 64 28.652 64 64 0 1.796-0.094 3.572-0.238 5.332h0.238zM922.306 278.052c-23.472-53.202-57.484-101.4-99.178-141.18-41.67-39.81-91-71.186-144.244-91.79-53.228-20.678-110.29-30.452-166.884-29.082-56.604 1.298-112.596 13.736-163.82 36.474-51.25 22.666-97.684 55.49-135.994 95.712-38.338 40.198-68.528 87.764-88.322 139.058-19.87 51.284-29.228 106.214-27.864 160.756 1.302 54.552 13.328 108.412 35.254 157.69 21.858 49.3 53.498 93.97 92.246 130.81 38.73 36.868 84.53 65.87 133.874 84.856 49.338 19.060 102.136 28.006 154.626 26.644 52.5-1.306 104.228-12.918 151.562-34.034 47.352-21.050 90.256-51.502 125.624-88.782 35.396-37.258 63.21-81.294 81.39-128.688 18.248-47.392 26.782-98.058 25.424-148.496h0.238c-0.144-1.76-0.238-3.536-0.238-5.332 0-33.012 24.992-60.174 57.086-63.624-6.224-34.822-16.53-68.818-30.78-100.992z" />
15
  <glyph unicode="&#xe985;" glyph-name="binoculars" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
16
  <glyph unicode="&#xe986;" glyph-name="search" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256z" />
17
  <glyph unicode="&#xe98d;" glyph-name="key" d="M704 960c-176.73 0-320-143.268-320-320 0-20.026 1.858-39.616 5.376-58.624l-389.376-389.376v-192c0-35.346 28.654-64 64-64h64v64h128v128h128v128h128l83.042 83.042c34.010-12.316 70.696-19.042 108.958-19.042 176.73 0 320 143.268 320 320s-143.27 320-320 320zM799.874 639.874c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" />
7
  <font-face units-per-em="1024" ascent="960" descent="-64" />
8
  <missing-glyph horiz-adv-x="1024" />
9
  <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
+ <glyph unicode="&#xe900;" glyph-name="warning" d="M1010.432 121.248l-383.968 768c-21.664 43.36-65.952 70.752-114.464 70.752s-92.8-27.392-114.464-70.752l-383.968-768c-19.84-39.68-17.728-86.816 5.6-124.576 23.328-37.696 64.512-60.672 108.864-60.672h767.904c44.384 0 85.568 22.976 108.864 60.672 23.328 37.76 25.44 84.896 5.632 124.576zM575.936 96c0-17.696-14.304-32-32-32h-64c-17.696 0-32 14.304-32 32v64c0 17.696 14.304 32 32 32h64c17.696 0 32-14.304 32-32v-64zM575.936 352c0-17.696-14.304-32-32-32h-64c-17.696 0-32 14.304-32 32v320c0 17.664 14.304 32 32 32h64c17.696 0 32-14.336 32-32v-320z" />
11
  <glyph unicode="&#xe933;" glyph-name="folder-download" d="M576 704l-128 128h-448v-832h1024v704h-448zM512 96l-224 224h160v256h128v-256h160l-224-224z" />
12
  <glyph unicode="&#xe948;" glyph-name="location2" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 444c-108.248 0-196 87.752-196 196s87.752 196 196 196 196-87.752 196-196-87.752-196-196-196zM388 640c0 68.483 55.517 124 124 124s124-55.517 124-124c0-68.483-55.517-124-124-124s-124 55.517-124 124z" />
13
  <glyph unicode="&#xe94b;" glyph-name="map" d="M0 768l320 128v-768l-320-128zM384 928l320-192v-736l-320 160zM768 736l256 192v-768l-256-192z" />
14
  <glyph unicode="&#xe964;" glyph-name="database" d="M512 960c-282.77 0-512-71.634-512-160v-128c0-88.366 229.23-160 512-160s512 71.634 512 160v128c0 88.366-229.23 160-512 160zM512 416c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160zM512 128c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160z" />
 
15
  <glyph unicode="&#xe985;" glyph-name="binoculars" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
16
  <glyph unicode="&#xe986;" glyph-name="search" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256z" />
17
  <glyph unicode="&#xe98d;" glyph-name="key" d="M704 960c-176.73 0-320-143.268-320-320 0-20.026 1.858-39.616 5.376-58.624l-389.376-389.376v-192c0-35.346 28.654-64 64-64h64v64h128v128h128v128h128l83.042 83.042c34.010-12.316 70.696-19.042 108.958-19.042 176.73 0 320 143.268 320 320s-143.27 320-320 320zM799.874 639.874c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" />
admin/css/fonts/icomoon.ttf CHANGED
Binary file
admin/css/fonts/icomoon.woff CHANGED
Binary file
admin/images/alert.png ADDED
Binary file
admin/images/find.png ADDED
Binary file
admin/includes/class-admin-ajax.php CHANGED
@@ -9,7 +9,7 @@ class IP_Geo_Block_Admin_Ajax {
9
  /**
10
  * Admin ajax sub functions
11
  *
12
- * @param string $which name of the geolocation api provider
13
  */
14
  public static function search_ip( $which ) {
15
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
@@ -53,7 +53,7 @@ class IP_Geo_Block_Admin_Ajax {
53
  /**
54
  * Get country code from providers
55
  *
56
- * @param string $which 'ip_client' or 'ip_server'
57
  */
58
  public static function scan_country( $which ) {
59
  // scan all the country code using selected APIs
@@ -642,6 +642,87 @@ endif; // TEST_RESTORE_NETWORK
642
  );
643
  }
644
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
645
  public static function get_wp_info() {
646
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
647
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
@@ -656,15 +737,19 @@ endif; // TEST_RESTORE_NETWORK
656
  $res = array(
657
  'Server:' => $_SERVER['SERVER_SOFTWARE'],
658
  'PHP:' => PHP_VERSION,
 
659
  'WordPress:' => $GLOBALS['wp_version'],
660
  'Multisite:' => is_multisite() ? 'yes' : 'no',
661
  'File system:' => $fs->get_method(),
 
 
662
  'Zlib:' => function_exists( 'gzopen' ) ? 'yes' : 'no',
663
  'ZipArchive:' => class_exists( 'ZipArchive', FALSE ) ? 'yes' : 'no',
664
  'BC Math:' => (extension_loaded('gmp') ? 'gmp ' : '') . (function_exists('bcadd') ? 'yes' : 'no'),
665
  'mb_strcut:' => function_exists( 'mb_strcut' ) ? 'yes' : 'no',
666
- 'SQLite(PDO):' => extension_loaded('pdo_sqlite') ? 'yes' : 'no',
667
  'DNS lookup:' => ('8.8.8.8' !== $val ? 'available' : 'n/a') . sprintf( ' [%.1f msec]', $key * 1000.0 ),
 
668
  );
669
 
670
  // Child and parent themes
@@ -690,10 +775,9 @@ endif; // TEST_RESTORE_NETWORK
690
  }
691
  }
692
 
693
- // Logs (hook, time, ip, code, result, method, user_agent, headers, data)
694
- $installed = IP_Geo_Block_Logs::search_logs( IP_Geo_Block::get_ip_address() );
695
-
696
- foreach ( array_reverse( $installed ) as $val ) {
697
  // hide port and nonce
698
  $method = preg_replace( '/\[\d+\]/', '', $val['method'] );
699
  $method = preg_replace( '/(' . IP_Geo_Block::PLUGIN_NAME . '-auth-nonce)(?:=|%3D)([\w]+)/', '$1=...', $method );
9
  /**
10
  * Admin ajax sub functions
11
  *
12
+ * @param string $which name of the geolocation api provider (should be validated by whitelist)
13
  */
14
  public static function search_ip( $which ) {
15
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
53
  /**
54
  * Get country code from providers
55
  *
56
+ * @param string $which 'ip_client' or 'ip_server' (not in use)
57
  */
58
  public static function scan_country( $which ) {
59
  // scan all the country code using selected APIs
642
  );
643
  }
644
 
645
+ /**
646
+ * Get blocked action and pages
647
+ *
648
+ * @param string $which 'page', 'action', 'plugin', 'theme'
649
+ * @return array of the name of action/page, plugin or theme
650
+ */
651
+ private static function get_blocked_queries( $which ) {
652
+ $result = array();
653
+
654
+ switch ( $which ) {
655
+ case 'page':
656
+ case 'action':
657
+ $dir = admin_url();
658
+ $dir = preg_replace( '!https?://.+?/!', '/', IP_Geo_Block_Util::slashit( $dir ) );
659
+
660
+ foreach ( IP_Geo_Block_Logs::search_blocked_logs( 'method', $dir ) as $log ) {
661
+ foreach ( array( 'method', 'data' ) as $key ) {
662
+ if ( preg_match( '!' . $which . '=([\-\w]+)!', $log[ $key ], $matches ) ) {
663
+ $result += array( $matches[1] => $which );
664
+ }
665
+ }
666
+ }
667
+ break;
668
+
669
+ case 'plugins':
670
+ case 'themes':
671
+ // make a list of installed plugins/themes
672
+ if ( 'plugins' === $which ) {
673
+ $key = array();
674
+ foreach ( get_plugins() as $pat => $log ) {
675
+ $pat = explode( '/', $pat, 2 );
676
+ $key[] = $pat[0];
677
+ }
678
+ } else {
679
+ $key = wp_get_themes();
680
+ }
681
+
682
+ $dir = 'plugins' === $which ? plugins_url() : get_theme_root_uri();
683
+ $dir = preg_replace( '!https?://.+?/!', '/', IP_Geo_Block_Util::slashit( $dir ) );
684
+ $pat = preg_quote( $dir, '!' ); // `/wp-content/[plugins|themes]/`
685
+
686
+ foreach ( IP_Geo_Block_Logs::search_blocked_logs( 'method', $dir ) as $log ) {
687
+ if ( preg_match( '!' . $pat . '(.+?)/!', $log['method'], $matches ) && in_array( $matches[1], $key, TRUE ) ) {
688
+ $result += array( $matches[1] => $which );
689
+ }
690
+ }
691
+ }
692
+
693
+ return $result;
694
+ }
695
+
696
+ /**
697
+ * Get slug in blocked requests for exceptions
698
+ *
699
+ */
700
+ public static function find_exceptions( $target ) {
701
+ $res = array();
702
+
703
+ switch ( $target ) {
704
+ case 'find-admin':
705
+ foreach ( array( 'action', 'page' ) as $which ) {
706
+ $res += self::get_blocked_queries( $which );
707
+ }
708
+ break;
709
+
710
+ case 'find-plugins':
711
+ $res = self::get_blocked_queries( 'plugins' );
712
+ break;
713
+
714
+ case 'find-themes':
715
+ $res = self::get_blocked_queries( 'themes' );
716
+ break;
717
+ }
718
+
719
+ return $res;
720
+ }
721
+
722
+ /**
723
+ * Get debug information related to WordPress
724
+ *
725
+ */
726
  public static function get_wp_info() {
727
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
728
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
737
  $res = array(
738
  'Server:' => $_SERVER['SERVER_SOFTWARE'],
739
  'PHP:' => PHP_VERSION,
740
+ 'PHP SAPI:' => php_sapi_name(),
741
  'WordPress:' => $GLOBALS['wp_version'],
742
  'Multisite:' => is_multisite() ? 'yes' : 'no',
743
  'File system:' => $fs->get_method(),
744
+ 'Temp folder:' => get_temp_dir(),
745
+ 'Umask:' => sprintf( '%o', umask() ^ 511 /*0777*/ ),
746
  'Zlib:' => function_exists( 'gzopen' ) ? 'yes' : 'no',
747
  'ZipArchive:' => class_exists( 'ZipArchive', FALSE ) ? 'yes' : 'no',
748
  'BC Math:' => (extension_loaded('gmp') ? 'gmp ' : '') . (function_exists('bcadd') ? 'yes' : 'no'),
749
  'mb_strcut:' => function_exists( 'mb_strcut' ) ? 'yes' : 'no',
750
+ 'SQLite(PDO):' => extension_loaded( 'pdo_sqlite' ) ? 'yes' : 'no',
751
  'DNS lookup:' => ('8.8.8.8' !== $val ? 'available' : 'n/a') . sprintf( ' [%.1f msec]', $key * 1000.0 ),
752
+ 'User agent:' => $_SERVER['HTTP_USER_AGENT'],
753
  );
754
 
755
  // Child and parent themes
775
  }
776
  }
777
 
778
+ // Blocked self requests
779
+ $installed = array_reverse( IP_Geo_Block_Logs::search_logs( IP_Geo_Block::get_ip_address() ) );
780
+ foreach ( $installed as $val ) {
 
781
  // hide port and nonce
782
  $method = preg_replace( '/\[\d+\]/', '', $val['method'] );
783
  $method = preg_replace( '/(' . IP_Geo_Block::PLUGIN_NAME . '-auth-nonce)(?:=|%3D)([\w]+)/', '$1=...', $method );
admin/includes/class-admin-rewrite.php CHANGED
@@ -37,13 +37,13 @@ class IP_Geo_Block_Admin_Rewrite {
37
  ),
38
  '.user.ini' => array(
39
  'plugins' => array(
40
- '; BEGIN IP Geo Block',
41
- 'auto_prepend_file = "%ABSPATH%wp-load.php"',
42
  '; END IP Geo Block',
43
  ),
44
  'themes' => array(
45
- '; BEGIN IP Geo Block',
46
- 'auto_prepend_file = "%ABSPATH%wp-load.php"',
47
  '; END IP Geo Block',
48
  ),
49
  ),
@@ -53,13 +53,13 @@ class IP_Geo_Block_Admin_Rewrite {
53
  // '# BEGIN IP Geo Block',
54
  // 'location ~ %REWRITE_BASE%rewrite.php$ {}',
55
  // 'location %WP_CONTENT_DIR%/plugins/ {',
56
- // ' rewrite ^%WP_CONTENT_DIR%/plugins/.*/.*\.php$ %REWRITE_BASE%rewrite.php break;',
57
  // '}',
58
  // '# END IP Geo Block',
59
  // 'themes' => array(
60
  // '# BEGIN IP Geo Block',
61
  // 'location %WP_CONTENT_DIR%/themes/ {',
62
- // ' rewrite ^%WP_CONTENT_DIR%/themes/.*/.*\.php$ %REWRITE_BASE%rewrite.php break;',
63
  // '}',
64
  // '# END IP Geo Block',
65
  // ),
@@ -68,11 +68,11 @@ class IP_Geo_Block_Admin_Rewrite {
68
 
69
  private function __construct() {
70
  // http://stackoverflow.com/questions/25017381/setting-php-document-root-on-webserver
71
- $this->doc_root = str_replace( $_SERVER['SCRIPT_NAME'], '', $_SERVER['SCRIPT_FILENAME'] );
72
- $this->base_uri = str_replace( $this->doc_root, '', IP_GEO_BLOCK_PATH );
73
 
74
  // target directories
75
- $path = str_replace( $this->doc_root, '', WP_CONTENT_DIR );
76
  $this->wp_dirs = array(
77
  'plugins' => $path . '/plugins/',
78
  'themes' => $path . '/themes/',
@@ -80,12 +80,12 @@ class IP_Geo_Block_Admin_Rewrite {
80
 
81
  // Apache in wp-includes/vars.php
82
  global $is_apache;
83
- if ( $is_apache )
84
  $this->config_file = '.htaccess';
85
 
86
  // CGI/FastCGI SAPI (cgi, cgi-fcgi, fpm-fcgi)
87
- // elseif ( version_compare( PHP_VERSION, '5.3' ) >= 0 && FALSE !== strpos( php_sapi_name(), 'cgi' ) )
88
- // $this->config_file = ini_get( 'user_ini.filename' );
89
  }
90
 
91
  /**
@@ -96,6 +96,32 @@ class IP_Geo_Block_Admin_Rewrite {
96
  return self::$instance ? self::$instance : ( self::$instance = new self );
97
  }
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  /**
100
  * Extract the block of rewrite rule
101
  *
@@ -104,8 +130,7 @@ class IP_Geo_Block_Admin_Rewrite {
104
  */
105
  private function find_rewrite_block( $content ) {
106
  return preg_grep(
107
- '/^\s*?[#;]\s*?(?:BEGIN|END)\s*?IP Geo Block\s*?$/i',
108
- (array)$content
109
  );
110
  }
111
 
@@ -173,6 +198,7 @@ class IP_Geo_Block_Admin_Rewrite {
173
  }
174
 
175
  // if content is empty then remove file
 
176
  return empty( $content ) ? $fs->delete( $file ) : TRUE;
177
  }
178
 
@@ -251,15 +277,45 @@ class IP_Geo_Block_Admin_Rewrite {
251
  */
252
  private function append_rewrite_block( $which, $content ) {
253
  if ( $type = $this->config_file ) {
254
- // in case `.user.ini` is configured differently
255
  if ( '.htaccess' !== $type && '.user.ini' !== $type )
256
  $type = '.user.ini';
257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  return array_merge(
259
  $content,
260
  str_replace(
261
- array( '%REWRITE_BASE%', '%WP_CONTENT_DIR%', '%ABSPATH%' ),
262
- array( $this->base_uri, WP_CONTENT_DIR, ABSPATH ),
263
  $this->rewrite_rule[ $type ][ $which ]
264
  )
265
  );
37
  ),
38
  '.user.ini' => array(
39
  'plugins' => array(
40
+ '; BEGIN IP Geo Block%ADDITIONAL%',
41
+ 'auto_prepend_file = "%IP_GEO_BLOCK_PATH%rewrite-ini.php"',
42
  '; END IP Geo Block',
43
  ),
44
  'themes' => array(
45
+ '; BEGIN IP Geo Block%ADDITIONAL%',
46
+ 'auto_prepend_file = "%IP_GEO_BLOCK_PATH%rewrite-ini.php"',
47
  '; END IP Geo Block',
48
  ),
49
  ),
53
  // '# BEGIN IP Geo Block',
54
  // 'location ~ %REWRITE_BASE%rewrite.php$ {}',
55
  // 'location %WP_CONTENT_DIR%/plugins/ {',
56
+ // ' rewrite ^%WP_CONTENT_DIR%/plugins/.*\.php$ %REWRITE_BASE%rewrite.php break;',
57
  // '}',
58
  // '# END IP Geo Block',
59
  // 'themes' => array(
60
  // '# BEGIN IP Geo Block',
61
  // 'location %WP_CONTENT_DIR%/themes/ {',
62
+ // ' rewrite ^%WP_CONTENT_DIR%/themes/.*\.php$ %REWRITE_BASE%rewrite.php break;',
63
  // '}',
64
  // '# END IP Geo Block',
65
  // ),
68
 
69
  private function __construct() {
70
  // http://stackoverflow.com/questions/25017381/setting-php-document-root-on-webserver
71
+ $this->doc_root = str_replace( DIRECTORY_SEPARATOR, '/', str_replace( $_SERVER['SCRIPT_NAME'], '', $_SERVER['SCRIPT_FILENAME'] ) );
72
+ $this->base_uri = str_replace( $this->doc_root, '', str_replace( DIRECTORY_SEPARATOR, '/', IP_GEO_BLOCK_PATH ) );
73
 
74
  // target directories
75
+ $path = str_replace( $this->doc_root, '', str_replace( '\\', '/', WP_CONTENT_DIR ) );
76
  $this->wp_dirs = array(
77
  'plugins' => $path . '/plugins/',
78
  'themes' => $path . '/themes/',
80
 
81
  // Apache in wp-includes/vars.php
82
  global $is_apache;
83
+ if ( ! empty( $is_apache ) )
84
  $this->config_file = '.htaccess';
85
 
86
  // CGI/FastCGI SAPI (cgi, cgi-fcgi, fpm-fcgi)
87
+ elseif ( version_compare( PHP_VERSION, '5.3' ) >= 0 && FALSE !== strpos( php_sapi_name(), 'cgi' ) )
88
+ $this->config_file = ini_get( 'user_ini.filename' );
89
  }
90
 
91
  /**
96
  return self::$instance ? self::$instance : ( self::$instance = new self );
97
  }
98
 
99
+ /**
100
+ * Remove empty element from the array
101
+ *
102
+ * @param array contents of configuration file
103
+ * @return array updated array of contents
104
+ */
105
+ private function remove_empty( $content ) {
106
+ while ( FALSE !== ( $tmp = reset( $content ) ) ) {
107
+ if ( strlen( trim( $tmp ) ) ) {
108
+ break;
109
+ } else {
110
+ array_shift( $content );
111
+ }
112
+ }
113
+
114
+ while ( FALSE !== ( $tmp = end( $content ) ) ) {
115
+ if ( strlen( trim( $tmp ) ) ) {
116
+ break;
117
+ } else {
118
+ array_pop( $content );
119
+ }
120
+ }
121
+
122
+ return $content;
123
+ }
124
+
125
  /**
126
  * Extract the block of rewrite rule
127
  *
130
  */
131
  private function find_rewrite_block( $content ) {
132
  return preg_grep(
133
+ '/^\s*?[#;]\s*?(?:BEGIN|END)\s*?IP Geo Block\s*?$/i', (array)$content
 
134
  );
135
  }
136
 
198
  }
199
 
200
  // if content is empty then remove file
201
+ $content = $this->remove_empty( $content );
202
  return empty( $content ) ? $fs->delete( $file ) : TRUE;
203
  }
204
 
277
  */
278
  private function append_rewrite_block( $which, $content ) {
279
  if ( $type = $this->config_file ) {
280
+ // in case that `.user.ini` is configured differently
281
  if ( '.htaccess' !== $type && '.user.ini' !== $type )
282
  $type = '.user.ini';
283
 
284
+ // in case that another `.user.ini` in ascendant directory
285
+ $additional = '';
286
+ if ( '.user.ini' === $type ) {
287
+ require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
288
+ $fs = IP_Geo_Block_FS::init( 'append_rewrite_block' );
289
+
290
+ $dir = dirname( IP_GEO_BLOCK_PATH ); // `/wp-content/plugins`
291
+ $ini = $this->config_file;
292
+ $doc = $this->doc_root;
293
+
294
+ do {
295
+ // avoid loop just in case
296
+ if ( ( $next = dirname( $dir ) ) !== $dir )
297
+ $dir = $next;
298
+ else
299
+ break;
300
+
301
+ if ( $fs->exists( "$dir/$ini" ) ) {
302
+ $tmp = $fs->get_contents_array( "$dir/$ini" );
303
+ $tmp = preg_replace( '/^\s*(auto_prepend_file.*)$/', '; $1', $tmp );
304
+ $tmp = $this->remove_empty( $tmp );
305
+
306
+ if ( ! empty( $tmp ) )
307
+ $additional = PHP_EOL . PHP_EOL . implode( PHP_EOL, $tmp ) . PHP_EOL;
308
+
309
+ break;
310
+ }
311
+ } while ( $dir !== $doc );
312
+ }
313
+
314
  return array_merge(
315
  $content,
316
  str_replace(
317
+ array( '%REWRITE_BASE%', '%WP_CONTENT_DIR%', '%IP_GEO_BLOCK_PATH%', '%ADDITIONAL%' ),
318
+ array( $this->base_uri, WP_CONTENT_DIR, IP_GEO_BLOCK_PATH, $additional ),
319
  $this->rewrite_rule[ $type ][ $which ]
320
  )
321
  );
admin/includes/tab-accesslog.php CHANGED
@@ -25,9 +25,9 @@ class IP_Geo_Block_Admin_Tab {
25
  );
26
 
27
  $html = '<ul id="ip-geo-block-live-log">';
28
- $html .= '<li><input type="radio" name="ip-geo-block-live-log" id="ip-geo-block-live-log-start" value="start"><label for="ip-geo-block-live-log-start" title="Start"><span class="ip-geo-block-icon-play3"></span></label></li>';
29
- $html .= '<li><input type="radio" name="ip-geo-block-live-log" id="ip-geo-block-live-log-pause" value="pause"><label for="ip-geo-block-live-log-pause" title="Pause"><span class="ip-geo-block-icon-pause2"></span></label></li>';
30
- $html .= '<li><input type="radio" name="ip-geo-block-live-log" id="ip-geo-block-live-log-stop" value="stop" checked><label for="ip-geo-block-live-log-stop" title="Stop"><span class="ip-geo-block-icon-stop2"></span></label></li>';
31
  $html .= '</ul>';
32
 
33
  // Live update
25
  );
26
 
27
  $html = '<ul id="ip-geo-block-live-log">';
28
+ $html .= '<li><input type="radio" name="ip-geo-block-live-log" id="ip-geo-block-live-log-start" value="start"><label for="ip-geo-block-live-log-start" title="Start"><span class="ip-geo-block-icon-play"></span></label></li>';
29
+ $html .= '<li><input type="radio" name="ip-geo-block-live-log" id="ip-geo-block-live-log-pause" value="pause"><label for="ip-geo-block-live-log-pause" title="Pause"><span class="ip-geo-block-icon-pause"></span></label></li>';
30
+ $html .= '<li><input type="radio" name="ip-geo-block-live-log" id="ip-geo-block-live-log-stop" value="stop" checked><label for="ip-geo-block-live-log-stop" title="Stop"><span class="ip-geo-block-icon-stop"></span></label></li>';
31
  $html .= '</ul>';
32
 
33
  // Live update
admin/includes/tab-settings.php CHANGED
@@ -116,6 +116,8 @@ endif;
116
  '<span class="ip-geo-block-sup">' . __( '(comma separated)', 'ip-geo-block' ) . '</span>',
117
  '<span class="ip-geo-block-sup">' . __( '(comma or RET separated)', 'ip-geo-block' ) . '</span>',
118
  '<span title="' . __( 'Toggle selection', 'ip-geo-block' ) . '"></span>',
 
 
119
  );
120
 
121
  // Matching rule
@@ -261,7 +263,7 @@ endif;
261
  $field = 'signature';
262
  add_settings_field(
263
  $option_name.'_'.$field,
264
- __( '<dfn title="It validates malicious signatures independently of &#8220;Block by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target &#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins area&#8221; and &#8220;Themes area&#8221;.">Bad signatures in query</dfn> <nobr>(<a class="ip-geo-block-cycle" id="ip-geo-block-decode" title="When you find ugly character string in the text area, please click to restore."><span></span></a>)</nobr>', 'ip-geo-block' ),
265
  array( $context, 'callback_field' ),
266
  $option_slug,
267
  $section,
@@ -275,7 +277,7 @@ endif;
275
  );
276
 
277
  // Prevent malicious upload - white list of file extention and MIME type
278
- $list = '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Select allowed MIME type.">Whitelist of allowed MIME type</dfn>', 'ip-geo-block' ) . "<a class=\"ip-geo-block-cycle ip-geo-block-hide\">" . $comma[2] . "</a>\n<li class=\"ip-geo-block-hide\"><ul class=\"ip-geo-block-float\">\n";
279
 
280
  // get_allowed_mime_types() in wp-includes/functions.php @since 2.8.6
281
  foreach ( IP_Geo_Block_Util::get_allowed_mime_types() as $key => $val ) {
@@ -283,9 +285,9 @@ endif;
283
  $val = esc_attr( $val );
284
  $list .= '<li><input type="checkbox" id="ip_geo_block_settings_mimetype_white_list' . $key . '" name="ip_geo_block_settings[mimetype][white_list][' . $key . ']" value="' . $val . '"' . checked( isset( $options['mimetype']['white_list'][ $key ] ), TRUE, FALSE ) . '><label for="ip_geo_block_settings_mimetype_white_list' . $key . '"><dfn title="' . $val . '">' . $key . '</dfn></label></li>' . "\n";
285
  }
286
- $list .= "</ul></li></ul>\n";
287
 
288
  // Prevent malicious upload - black list of file extension
 
289
  $list .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Put forbidden file extensions.">Blacklist of forbidden file extensions</dfn>', 'ip-geo-block' ) . "\n" . '<li class="ip-geo-block-hide"><ul><li><input type="text" class="regular-text code" id="ip_geo_block_settings_mimetype_black_list" name="ip_geo_block_settings[mimetype][black_list]" value="' . esc_attr( $options['mimetype']['black_list'] ) . '"/></li>';
290
  $list .= "</ul></li></ul>\n";
291
 
@@ -524,7 +526,7 @@ endif;
524
  'sub-field' => $key,
525
  'value' => $options[ $field ][ $key ],
526
  'text' => __( 'Block by country', 'ip-geo-block' ),
527
- 'after' => '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual action as a blocking target.">Target actions</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n" . $list . "</ul></li></ul>\n",
528
  )
529
  );
530
 
@@ -557,23 +559,22 @@ endif;
557
  )
558
  );
559
 
560
- // Get all the admin-post actions
561
- $installed = IP_Geo_Block_Util::get_registered_actions( FALSE );
562
-
563
  $tmp = array(
564
  __( 'admin post for logged-in user', 'ip-geo-block' ),
565
  __( 'admin post for non logged-in user', 'ip-geo-block' ),
566
  );
567
 
 
568
  $exception = '';
 
569
  foreach ( $installed as $key => $val ) {
570
  $val = '';
571
  $val .= $installed[ $key ] & 1 ? '<dfn title="' . $tmp[0] . '"><span class="ip-geo-block-admin-post dashicons dashicons-lock">*</span></dfn>' : '';
572
  $val .= $installed[ $key ] & 2 ? '<dfn title="' . $tmp[1] . '"><span class="ip-geo-block-admin-post dashicons dashicons-unlock">*</span></dfn>' : '';
573
  $key = esc_attr( $key );
574
  $exception .= '<li>'
575
- . '<input id="ip_geo_block_' . $key . '" type="checkbox" value="1"' . checked( in_array( $key, $options['exception']['admin'] ), TRUE, FALSE ) . ' />'
576
- . '<label for="ip_geo_block_' . $key . '">' . $key . '</label>' . $val
577
  . '</li>' . "\n";
578
  }
579
 
@@ -596,23 +597,29 @@ endif;
596
  'value' => $options[ $field ][ $key ],
597
  'list' => $list,
598
  'desc' => $desc,
599
- 'after' => '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">'
600
- . __( '<dfn title="Specify the page name (&#8220;page=&hellip;&#8221;) or the action name (&#8220;action=&hellip;&#8221;) to prevent undesired blocking caused by &#8220;Block by country&#8221; for non logged-in user and &#8220;Prevent Zero-day Exploit&#8221; for logged-in user.">Exceptions</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-unlock ip-geo-block-hide"><span title="' . __( 'Toggle with non logged-in user', 'ip-geo-block' ) . '"></span></a><a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>'
601
- . "\n<li class=\"ip-geo-block-hide\"><ul><li>\n"
602
- . '<input class="regular-text code" id="ip_geo_block_settings_exception_admin" name="ip_geo_block_settings[exception][admin]" type="text" value="' . esc_attr( implode( ',', $options['exception']['admin'] ) ) . '">' . "\n"
603
- . $comma[0]
604
- . '</li><li><ul id="ip-geo-block-actions">'
605
- . '<h4>' . __( 'Candidate actions', 'ip-geo-block' ) . '</h4>'
606
- . $exception
607
- . '</ul></li></ul></li></ul>' . "\n",
 
 
 
 
 
 
608
  )
609
  );
610
 
611
  array_unshift( $list, __( 'Disable', 'ip-geo-block' ) );
612
  $desc = array(
613
  __( 'Regardless of the country code, it will block a malicious request to <code>%s&ctdot;/*.php</code>.', 'ip-geo-block' ),
614
- __( '<dfn title="Select the item which causes undesired blocking in order to exclude from the validation target. Grayed item indicates &#8220;INACTIVE&#8221;.">Exceptions</dfn>', 'ip-geo-block' ),
615
- __( 'It configures &#8220;%s&#8221; to validate a request to the PHP file which does not load WordPress core.', 'ip-geo-block' ),
616
  __( 'Sorry, but your server type is not supported.', 'ip-geo-block' ),
617
  );
618
 
@@ -623,7 +630,6 @@ endif;
623
  // Get all the plugins
624
  $exception = '';
625
  $installed = get_plugins(); // @since 1.5.0
626
- unset( $installed[ IP_GEO_BLOCK_BASE ] ); // exclude myself
627
 
628
  $activated = get_site_option( 'active_sitewide_plugins' ); // @since 2.8.0
629
  ! is_array( $activated ) and $activated = array();
@@ -636,7 +642,7 @@ endif;
636
  $key = esc_attr( $key[0] );
637
  $exception .= '<li><input type="checkbox" id="ip_geo_block_settings_exception_plugins_' . $key
638
  . '" name="ip_geo_block_settings[exception][plugins][' . $key
639
- . ']" value="1"' . checked( in_array( $key, $options['exception']['plugins'] ), TRUE, FALSE )
640
  . ' /><label for="ip_geo_block_settings_exception_plugins_' . $key
641
  . ($active ? '">' : '" class="folding-inactive">') . esc_html( $val['Name'] ) . "</label></li>\n";
642
  }
@@ -669,15 +675,26 @@ endif;
669
  'desc' => array(
670
  2 => sprintf( $desc[0], $val ),
671
  ),
672
- 'before' => $tmp,
673
- 'after' => '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . $desc[1] . '<a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n" . $exception . "</ul></li></ul>\n",
 
 
 
 
 
 
 
 
 
 
 
674
  )
675
  );
676
 
677
  // Get all the themes
678
  $exception = '';
679
- $installed = wp_get_themes( NULL ); // @since 3.4.0
680
- $activated = wp_get_theme(); // @since 3.4.0
681
  $activated = $activated->get( 'Name' );
682
 
683
  // List of installed themes
@@ -686,7 +703,7 @@ endif;
686
  $active = ( ( $val = $val->get( 'Name' ) ) === $activated );
687
  $exception .= '<li><input type="checkbox" id="ip_geo_block_settings_exception_themes_' . $key
688
  . '" name="ip_geo_block_settings[exception][themes][' . $key
689
- . ']" value="1"' . checked( in_array( $key, $options['exception']['themes'] ), TRUE, FALSE )
690
  . ' /><label for="ip_geo_block_settings_exception_themes_' . $key
691
  . ($active ? '">' : '" class="folding-inactive">') . esc_html( $val ) . "</label></li>\n";
692
  }
@@ -719,8 +736,19 @@ endif;
719
  'desc' => array(
720
  2 => sprintf( $desc[0], $val ),
721
  ),
722
- 'before' => $tmp,
723
- 'after' => '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . $desc[1] . '<a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n" . $exception . "</ul></li></ul>\n",
 
 
 
 
 
 
 
 
 
 
 
724
  )
725
  );
726
 
@@ -881,7 +909,7 @@ endif;
881
  );
882
 
883
  // List of page
884
- $exception = '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual page as a blocking target.">Page</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
885
  $tmp = get_pages();
886
  if ( ! empty( $tmp ) ) {
887
  foreach ( $tmp as $key ) {
@@ -893,7 +921,7 @@ endif;
893
  $exception .= '</ul></li></ul>' . "\n";
894
 
895
  // List of post type
896
- $exception .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual post type on a single page as a blocking target.">Post type</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
897
  $tmp = get_post_types( array( 'public' => TRUE ) );
898
  if ( ! empty( $tmp ) ) {
899
  foreach ( $tmp as $key ) {
@@ -905,7 +933,7 @@ endif;
905
  $exception .= '</ul></li></ul>' . "\n";
906
 
907
  // List of category
908
- $exception .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual category on a single page or archive page as a blocking target.">Category</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
909
  $tmp = get_categories( array( 'hide_empty' => FALSE ) );
910
  if ( ! empty( $tmp ) ) {
911
  foreach ( $tmp as $key ) {
@@ -917,7 +945,7 @@ endif;
917
  $exception .= '</ul></li></ul>' . "\n";
918
 
919
  // List of tag
920
- $exception .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual tag on a single page or archive page as a blocking target.">Tag</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
921
  $tmp = get_tags( array( 'hide_empty' => FALSE ) );
922
  if ( ! empty( $tmp ) ) {
923
  foreach ( $tmp as $key ) {
@@ -1077,12 +1105,10 @@ endif;
1077
  // Local DBs for each API
1078
  $providers = IP_Geo_Block_Provider::get_addons();
1079
  if ( empty( $providers ) ) {
1080
- $context->add_admin_notice( 'error',
1081
- sprintf(
1082
- __( 'Can not find geolocation API libraries in <code>%s</code>. It seems to have failed downloading <a rel="noreferrer" href="https://github.com/tokkonopapa/WordPress-IP-Geo-API/archive/master.zip" title="Download the contents of tokkonopapa/WordPress-IP-Geo-API as a zip file">ZIP file</a> from <a rel="noreferrer" href="https://github.com/tokkonopapa/WordPress-IP-Geo-API" title="tokkonopapa/WordPress-IP-Geo-API - GitHub">WordPress-IP-Geo-API</a>. Please install <code>ip-geo-api</code> with write permission according to <a rel="noreferrer" href="http://www.ipgeoblock.com/codex/how-to-fix-permission-troubles.html" title="How can I fix permission troubles? | IP Geo Block">this instruction</a>.', 'ip-geo-block' ),
1083
- apply_filters( 'ip-geo-block-api-dir', basename( WP_CONTENT_DIR ) )
1084
- )
1085
- );
1086
  }
1087
 
1088
  add_settings_section(
@@ -1205,7 +1231,7 @@ endif;
1205
  0 => __( 'Disable', 'ip-geo-block' ),
1206
  1 => __( 'When requests blocked', 'ip-geo-block' ),
1207
  2 => __( 'When requests passed', 'ip-geo-block' ),
1208
- 6 => __( 'When blocked or passed from undesired country', 'ip-geo-block' ),
1209
  3 => __( 'Unauthenticated visitor', 'ip-geo-block' ),
1210
  4 => __( 'Authenticated user', 'ip-geo-block' ),
1211
  5 => __( 'All the validation', 'ip-geo-block' ),
116
  '<span class="ip-geo-block-sup">' . __( '(comma separated)', 'ip-geo-block' ) . '</span>',
117
  '<span class="ip-geo-block-sup">' . __( '(comma or RET separated)', 'ip-geo-block' ) . '</span>',
118
  '<span title="' . __( 'Toggle selection', 'ip-geo-block' ) . '"></span>',
119
+ '<span title="' . __( 'Find blocked requests in &#8220;Logs&#8220;', 'ip-geo-block' ) . '"></span>',
120
+ __( 'Before adding as &#8220;Exception&#8221;, please click on &#8220;<a class="ip-geo-block-icon ip-geo-block-icon-alert" title="This button is just a sample."><span></span></a>&#8221; button (if exists) attached to the following list to confirm that the blocked request is not malicious.', 'ip-geo-block' ),
121
  );
122
 
123
  // Matching rule
263
  $field = 'signature';
264
  add_settings_field(
265
  $option_name.'_'.$field,
266
+ __( '<dfn title="It validates malicious signatures independently of &#8220;Block by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target &#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins area&#8221; and &#8220;Themes area&#8221;.">Bad signatures in query</dfn> <nobr>(<a class="ip-geo-block-icon ip-geo-block-icon-cycle" id="ip-geo-block-decode" title="When you find ugly character string in the text area, please click to restore."><span></span></a>)</nobr>', 'ip-geo-block' ),
267
  array( $context, 'callback_field' ),
268
  $option_slug,
269
  $section,
277
  );
278
 
279
  // Prevent malicious upload - white list of file extention and MIME type
280
+ $list = '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Select allowed MIME type.">Whitelist of allowed MIME type</dfn>', 'ip-geo-block' ) . "<a class=\"ip-geo-block-icon ip-geo-block-icon-cycle ip-geo-block-hide\">" . $comma[2] . "</a>\n<li class=\"ip-geo-block-hide\"><ul class=\"ip-geo-block-float\">\n";
281
 
282
  // get_allowed_mime_types() in wp-includes/functions.php @since 2.8.6
283
  foreach ( IP_Geo_Block_Util::get_allowed_mime_types() as $key => $val ) {
285
  $val = esc_attr( $val );
286
  $list .= '<li><input type="checkbox" id="ip_geo_block_settings_mimetype_white_list' . $key . '" name="ip_geo_block_settings[mimetype][white_list][' . $key . ']" value="' . $val . '"' . checked( isset( $options['mimetype']['white_list'][ $key ] ), TRUE, FALSE ) . '><label for="ip_geo_block_settings_mimetype_white_list' . $key . '"><dfn title="' . $val . '">' . $key . '</dfn></label></li>' . "\n";
287
  }
 
288
 
289
  // Prevent malicious upload - black list of file extension
290
+ $list .= "</ul></li></ul>\n";
291
  $list .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Put forbidden file extensions.">Blacklist of forbidden file extensions</dfn>', 'ip-geo-block' ) . "\n" . '<li class="ip-geo-block-hide"><ul><li><input type="text" class="regular-text code" id="ip_geo_block_settings_mimetype_black_list" name="ip_geo_block_settings[mimetype][black_list]" value="' . esc_attr( $options['mimetype']['black_list'] ) . '"/></li>';
292
  $list .= "</ul></li></ul>\n";
293
 
526
  'sub-field' => $key,
527
  'value' => $options[ $field ][ $key ],
528
  'text' => __( 'Block by country', 'ip-geo-block' ),
529
+ 'after' => '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual action as a blocking target.">Target actions</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-icon ip-geo-block-icon-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n" . $list . "</ul></li></ul>\n",
530
  )
531
  );
532
 
559
  )
560
  );
561
 
 
 
 
562
  $tmp = array(
563
  __( 'admin post for logged-in user', 'ip-geo-block' ),
564
  __( 'admin post for non logged-in user', 'ip-geo-block' ),
565
  );
566
 
567
+ // Get all the admin-post actions
568
  $exception = '';
569
+ $installed = IP_Geo_Block_Util::get_registered_actions( FALSE );
570
  foreach ( $installed as $key => $val ) {
571
  $val = '';
572
  $val .= $installed[ $key ] & 1 ? '<dfn title="' . $tmp[0] . '"><span class="ip-geo-block-admin-post dashicons dashicons-lock">*</span></dfn>' : '';
573
  $val .= $installed[ $key ] & 2 ? '<dfn title="' . $tmp[1] . '"><span class="ip-geo-block-admin-post dashicons dashicons-unlock">*</span></dfn>' : '';
574
  $key = esc_attr( $key );
575
  $exception .= '<li>'
576
+ . '<input id="ip_geo_block_settings_exception_admin_' . $key . '" type="checkbox" value="' . $key . '"' . checked( in_array( $key, $options['exception']['admin'] ), TRUE, FALSE ) . ' />'
577
+ . '<label for="ip_geo_block_settings_exception_admin_' . $key . '">' . $key . '</label>' . $val
578
  . '</li>' . "\n";
579
  }
580
 
597
  'value' => $options[ $field ][ $key ],
598
  'list' => $list,
599
  'desc' => $desc,
600
+ 'after' =>
601
+ '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . "\n" .
602
+ ' <dfn title="' . __( 'Specify the action name (&#8220;action=&hellip;&#8221;) or the page name (&#8220;page=&hellip;&#8221;) to prevent unintended blocking caused by &#8220;Block by country&#8221; (for non logged-in user) and &#8220;Prevent Zero-day Exploit&#8221; (for logged-in user).', 'ip-geo-block' ) . '">' . __( 'Exceptions', 'ip-geo-block' ) . "</dfn>\n" .
603
+ ' <a class="ip-geo-block-hide ip-geo-block-icon ip-geo-block-icon-unlock"><span title="' . __( 'Toggle with non logged-in user', 'ip-geo-block' ) . '"></span></a><a class="ip-geo-block-icon ip-geo-block-icon-cycle ip-geo-block-hide" data-target="admin">' . $comma[2] . '</a><a class="ip-geo-block-icon ip-geo-block-icon-find ip-geo-block-hide" data-target="admin">' . $comma[3] . "</a>\n" .
604
+ ' <li class="ip-geo-block-hide">' . "\n" .
605
+ ' <input class="regular-text code" id="ip_geo_block_settings_exception_admin" name="ip_geo_block_settings[exception][admin]" type="text" value="' . esc_attr( implode( ',', $options['exception']['admin'] ) ) . '">' . $comma[0] . "\n" .
606
+ ' <h4>' . __( 'Candidate actions/pages', 'ip-geo-block' ) . "</h4>\n" .
607
+ ' <p class="ip-geo-block-find-desc">' . $comma[4] . '<span id="ip-geo-block-find-admin"></span></p>' . "\n" .
608
+ ' </li>' . "\n" .
609
+ ' <li class="ip-geo-block-hide">' . "\n" .
610
+ ' <ul class="ip-geo-block-list-exceptions" id="ip-geo-block-list-admin">' . "\n" .
611
+ $exception .
612
+ ' </ul>' . "\n" .
613
+ ' </li>' . "\n" .
614
+ '</ul>'
615
  )
616
  );
617
 
618
  array_unshift( $list, __( 'Disable', 'ip-geo-block' ) );
619
  $desc = array(
620
  __( 'Regardless of the country code, it will block a malicious request to <code>%s&ctdot;/*.php</code>.', 'ip-geo-block' ),
621
+ __( 'Select the item which causes unintended blocking in order to exclude from the validation target. Grayed item indicates &#8220;INACTIVE&#8221;.', 'ip-geo-block' ),
622
+ __( 'It configures &#8220;%s&#8221; to validate a request to the PHP file which does not load WordPress core. Make sure to deny direct access to the hidden files beginning with a dot by the server\'s configuration.', 'ip-geo-block' ),
623
  __( 'Sorry, but your server type is not supported.', 'ip-geo-block' ),
624
  );
625
 
630
  // Get all the plugins
631
  $exception = '';
632
  $installed = get_plugins(); // @since 1.5.0
 
633
 
634
  $activated = get_site_option( 'active_sitewide_plugins' ); // @since 2.8.0
635
  ! is_array( $activated ) and $activated = array();
642
  $key = esc_attr( $key[0] );
643
  $exception .= '<li><input type="checkbox" id="ip_geo_block_settings_exception_plugins_' . $key
644
  . '" name="ip_geo_block_settings[exception][plugins][' . $key
645
+ . ']" value="' . $key . '"' . checked( in_array( $key, $options['exception']['plugins'] ), TRUE, FALSE )
646
  . ' /><label for="ip_geo_block_settings_exception_plugins_' . $key
647
  . ($active ? '">' : '" class="folding-inactive">') . esc_html( $val['Name'] ) . "</label></li>\n";
648
  }
675
  'desc' => array(
676
  2 => sprintf( $desc[0], $val ),
677
  ),
678
+ 'after' => $tmp .
679
+ '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . "\n" .
680
+ ' <dfn title="' . $desc[1] . '">' . __( 'Exceptions', 'ip-geo-block' ) . "</dfn>\n" .
681
+ ' <a class="ip-geo-block-hide ip-geo-block-icon ip-geo-block-icon-cycle">' . $comma[2] . '</a><a class="ip-geo-block-icon ip-geo-block-icon-find ip-geo-block-hide" data-target="plugins">' . $comma[3] . "</a>\n" .
682
+ ' <li class="ip-geo-block-hide">' . "\n" .
683
+ ' <p class="ip-geo-block-find-desc">' . $comma[4] . '<span id="ip-geo-block-find-plugins"></span></p>' . "\n" .
684
+ ' </li>' . "\n" .
685
+ ' <li class="ip-geo-block-hide">' . "\n" .
686
+ ' <ul class="ip-geo-block-list-exceptions" id="ip-geo-block-list-plugins">' . "\n" .
687
+ $exception .
688
+ ' </ul>' . "\n" .
689
+ ' </li>' . "\n" .
690
+ '</ul>'
691
  )
692
  );
693
 
694
  // Get all the themes
695
  $exception = '';
696
+ $installed = wp_get_themes(); // @since 3.4.0
697
+ $activated = wp_get_theme(); // @since 3.4.0
698
  $activated = $activated->get( 'Name' );
699
 
700
  // List of installed themes
703
  $active = ( ( $val = $val->get( 'Name' ) ) === $activated );
704
  $exception .= '<li><input type="checkbox" id="ip_geo_block_settings_exception_themes_' . $key
705
  . '" name="ip_geo_block_settings[exception][themes][' . $key
706
+ . ']" value="' . $key . '"' . checked( in_array( $key, $options['exception']['themes'] ), TRUE, FALSE )
707
  . ' /><label for="ip_geo_block_settings_exception_themes_' . $key
708
  . ($active ? '">' : '" class="folding-inactive">') . esc_html( $val ) . "</label></li>\n";
709
  }
736
  'desc' => array(
737
  2 => sprintf( $desc[0], $val ),
738
  ),
739
+ 'after' => $tmp .
740
+ '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . "\n" .
741
+ ' <dfn title="' . $desc[1] . '">' . __( 'Exceptions', 'ip-geo-block' ) . "</dfn>\n" .
742
+ ' <a class="ip-geo-block-hide ip-geo-block-icon ip-geo-block-icon-cycle">' . $comma[2] . '</a><a class="ip-geo-block-icon ip-geo-block-icon-find ip-geo-block-hide" data-target="themes">' . $comma[3] . "</a>\n" .
743
+ ' <li class="ip-geo-block-hide">' . "\n" .
744
+ ' <p class="ip-geo-block-find-desc">' . $comma[4] . '<span id="ip-geo-block-find-themes"></span></p>' . "\n" .
745
+ ' </li>' . "\n" .
746
+ ' <li class="ip-geo-block-hide">' . "\n" .
747
+ ' <ul class="ip-geo-block-list-exceptions" id="ip-geo-block-list-themes">' . "\n" .
748
+ $exception .
749
+ ' </ul>' . "\n" .
750
+ ' </li>' . "\n" .
751
+ '</ul>'
752
  )
753
  );
754
 
909
  );
910
 
911
  // List of page
912
+ $exception = '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual page as a blocking target.">Page</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-icon ip-geo-block-icon-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
913
  $tmp = get_pages();
914
  if ( ! empty( $tmp ) ) {
915
  foreach ( $tmp as $key ) {
921
  $exception .= '</ul></li></ul>' . "\n";
922
 
923
  // List of post type
924
+ $exception .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual post type on a single page as a blocking target.">Post type</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-icon ip-geo-block-icon-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
925
  $tmp = get_post_types( array( 'public' => TRUE ) );
926
  if ( ! empty( $tmp ) ) {
927
  foreach ( $tmp as $key ) {
933
  $exception .= '</ul></li></ul>' . "\n";
934
 
935
  // List of category
936
+ $exception .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual category on a single page or archive page as a blocking target.">Category</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-icon ip-geo-block-icon-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
937
  $tmp = get_categories( array( 'hide_empty' => FALSE ) );
938
  if ( ! empty( $tmp ) ) {
939
  foreach ( $tmp as $key ) {
945
  $exception .= '</ul></li></ul>' . "\n";
946
 
947
  // List of tag
948
+ $exception .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the individual tag on a single page or archive page as a blocking target.">Tag</dfn>', 'ip-geo-block' ) . '<a class="ip-geo-block-icon ip-geo-block-icon-cycle ip-geo-block-hide">' . $comma[2] . '</a>' . "\n<li class=\"ip-geo-block-hide\"><ul>\n";
949
  $tmp = get_tags( array( 'hide_empty' => FALSE ) );
950
  if ( ! empty( $tmp ) ) {
951
  foreach ( $tmp as $key ) {
1105
  // Local DBs for each API
1106
  $providers = IP_Geo_Block_Provider::get_addons();
1107
  if ( empty( $providers ) ) {
1108
+ $context->add_admin_notice( 'error', sprintf(
1109
+ __( 'Can not find geolocation API libraries in <code>%s</code>. It seems to have failed downloading <a rel="noreferrer" href="https://github.com/tokkonopapa/WordPress-IP-Geo-API/archive/master.zip" title="Download the contents of tokkonopapa/WordPress-IP-Geo-API as a zip file">ZIP file</a> from <a rel="noreferrer" href="https://github.com/tokkonopapa/WordPress-IP-Geo-API" title="tokkonopapa/WordPress-IP-Geo-API - GitHub">WordPress-IP-Geo-API</a>. Please install <code>ip-geo-api</code> with write permission according to <a rel="noreferrer" href="http://www.ipgeoblock.com/codex/how-to-fix-permission-troubles.html" title="How can I fix permission troubles? | IP Geo Block">this instruction</a>.', 'ip-geo-block' ),
1110
+ apply_filters( 'ip-geo-block-api-dir', basename( WP_CONTENT_DIR ) )
1111
+ ) );
 
 
1112
  }
1113
 
1114
  add_settings_section(
1231
  0 => __( 'Disable', 'ip-geo-block' ),
1232
  1 => __( 'When requests blocked', 'ip-geo-block' ),
1233
  2 => __( 'When requests passed', 'ip-geo-block' ),
1234
+ 6 => __( 'When &#8220;blocked&#8221; or &#8220;passed (not in whitelist)&#8221;', 'ip-geo-block' ),
1235
  3 => __( 'Unauthenticated visitor', 'ip-geo-block' ),
1236
  4 => __( 'Authenticated user', 'ip-geo-block' ),
1237
  5 => __( 'All the validation', 'ip-geo-block' ),
admin/includes/tab-statistics.php CHANGED
@@ -182,7 +182,7 @@ endif;
182
  *----------------------------------------*/
183
  add_settings_section(
184
  $section = $plugin_slug . '-stat-logs',
185
- __( 'Statistics in logs', 'ip-geo-block' ),
186
  ( $options['validation']['reclogs'] ?
187
  array( __CLASS__, 'statistics_logs' ) :
188
  array( __CLASS__, 'warn_validation' )
@@ -282,9 +282,6 @@ endif;
282
  *
283
  */
284
  public static function statistics_logs() {
285
- // array of ( `time`, `ip`, `hook`, `code`, `method`, `data` )
286
- $logs = IP_Geo_Block_Logs::get_recent_logs( YEAR_IN_SECONDS );
287
-
288
  // Count by key
289
  $count = array();
290
  $keys = array(
@@ -294,61 +291,65 @@ endif;
294
  'slug' => __( 'Slug in back-end', 'ip-geo-block' ),
295
  );
296
 
297
- // Make list of top 10
298
- foreach( $logs as $val ) {
299
- $val['ip'] = '[' . $val['code'] . '] ' . $val['ip'];
300
- $key = $val['method'] . ' ' . $val['data'];
301
 
302
  // <methodName>...</methodName>
303
  if ( preg_match( '#<methodName>(.*?)</methodName>#', $key, $matches ) ) {
304
- $val['slug'] = '/xmlrpc.php ' . $matches[1];
305
  }
306
 
307
  // /wp-content/(plugins|themes)/...
308
  elseif ( preg_match( '#(/wp-content/(?:plugins|themes)/.*?/)#', $key, $matches ) ) {
309
- $val['slug'] = $matches[1];
310
  }
311
 
312
  // /wp-admin/admin*.php?action=...
313
- elseif ( preg_match( '#(/wp-admin/admin.*?\.php).*((?:page|action)=[\w-]+)#', $key, $matches ) ) {
314
- $val['slug'] = $matches[1] . (isset( $matches[2] ) ? ' ' . $matches[2] : '');
315
  }
316
 
317
  // /wp-admin/*.php
318
  elseif ( preg_match( '#(/wp-admin/(?!admin).*?\.php)#', $key, $matches ) ) {
319
- $val['slug'] = $matches[1];
320
  }
321
 
322
  // file uploading *.(zip|tar|rar|gz|php|...)
323
  elseif ( preg_match( '#(\[name\]\s*?=>.*\.\w+?)\b#', $key, $matches ) ) {
324
- $val['slug'] = $matches[1];
325
  }
326
 
327
- // /*.php
328
- elseif ( preg_match( '#^\w+?\[\d+?\]:(/[^/]+?\.php)#', $key, $matches ) ) {
329
- $val['slug'] = $matches[1];
330
  }
331
 
332
  foreach ( array_keys( $keys ) as $key ) {
333
- if ( ! empty( $val[ $key ] ) ) {
334
- $count[ $key ][] = $val[ $key ];
335
  }
336
  }
337
  }
338
 
339
  $options = IP_Geo_Block::get_option();
340
 
341
- foreach ( $keys as $slug => $val ) {
342
- echo '<ol class="ip-geo-block-top-list"><h4>', esc_html( $val ), '</h4>';
 
 
 
 
343
 
344
  if ( isset( $count[ $slug ] ) ) {
345
  $logs = array_count_values( $count[ $slug ] );
346
  arsort( $logs );
347
 
348
  if ( 'slug' !== $slug )
349
- $logs = array_slice( $logs, 0, 10 );
350
 
351
- foreach ( $logs as $key => $val ) {
352
  $link = explode( ' ', $key );
353
  $link = esc_html( end( $link ) );
354
  $key = esc_html( $key );
@@ -367,7 +368,7 @@ endif;
367
  '" target=_blank>' . $link . '</a>',
368
  $key
369
  );
370
- echo '</code> (', (int)$val, ')</li>', "\n";
371
  }
372
  }
373
 
182
  *----------------------------------------*/
183
  add_settings_section(
184
  $section = $plugin_slug . '-stat-logs',
185
+ __( 'Statistics in Logs', 'ip-geo-block' ),
186
  ( $options['validation']['reclogs'] ?
187
  array( __CLASS__, 'statistics_logs' ) :
188
  array( __CLASS__, 'warn_validation' )
282
  *
283
  */
284
  public static function statistics_logs() {
 
 
 
285
  // Count by key
286
  $count = array();
287
  $keys = array(
291
  'slug' => __( 'Slug in back-end', 'ip-geo-block' ),
292
  );
293
 
294
+ // Count by keys ($log: `time`, `ip`, `hook`, `code`, `method`, `data`)
295
+ foreach( IP_Geo_Block_Logs::get_recent_logs( YEAR_IN_SECONDS ) as $log ) {
296
+ $log['ip'] = '[' . $log['code'] . '] ' . $log['ip'];
297
+ $key = $log['method'] . ' ' . $log['data'];
298
 
299
  // <methodName>...</methodName>
300
  if ( preg_match( '#<methodName>(.*?)</methodName>#', $key, $matches ) ) {
301
+ $log['slug'] = '/xmlrpc.php ' . $matches[1];
302
  }
303
 
304
  // /wp-content/(plugins|themes)/...
305
  elseif ( preg_match( '#(/wp-content/(?:plugins|themes)/.*?/)#', $key, $matches ) ) {
306
+ $log['slug'] = $matches[1];
307
  }
308
 
309
  // /wp-admin/admin*.php?action=...
310
+ elseif ( preg_match( '#(/wp-admin/admin.*?\.php).*((?:page|action)=[-\w]+)#', $key, $matches ) ) {
311
+ $log['slug'] = $matches[1] . ' ' . $matches[2];
312
  }
313
 
314
  // /wp-admin/*.php
315
  elseif ( preg_match( '#(/wp-admin/(?!admin).*?\.php)#', $key, $matches ) ) {
316
+ $log['slug'] = $matches[1];
317
  }
318
 
319
  // file uploading *.(zip|tar|rar|gz|php|...)
320
  elseif ( preg_match( '#(\[name\]\s*?=>.*\.\w+?)\b#', $key, $matches ) ) {
321
+ $log['slug'] = $matches[1];
322
  }
323
 
324
+ // other *.php file with or without query string
325
+ elseif ( preg_match( '#(/[^/]*\.php)[^/\w]#', $key, $matches ) && FALSE === strpos( $key, '/wp-admin/' ) ) {
326
+ $log['slug'] = $matches[1];
327
  }
328
 
329
  foreach ( array_keys( $keys ) as $key ) {
330
+ if ( ! empty( $log[ $key ] ) ) {
331
+ $count[ $key ][] = $log[ $key ];
332
  }
333
  }
334
  }
335
 
336
  $options = IP_Geo_Block::get_option();
337
 
338
+ // Statistics by keys
339
+ foreach ( $keys as $slug => $log ) {
340
+ if ( 'slug' !== $slug )
341
+ echo '<ol class="ip-geo-block-top-list"><h4>', esc_html( $log ), '</h4>';
342
+ else
343
+ echo '<ol class="ip-geo-block-top-list"><h4>', esc_html( $log ), ' <a class="ip-geo-block-icon ip-geo-block-icon-cycle" id="ip-geo-block-sort-slug" title="', __( 'Toggle sorting order', 'ip-geo-block' ) ,'"><span></span></a></h4>';
344
 
345
  if ( isset( $count[ $slug ] ) ) {
346
  $logs = array_count_values( $count[ $slug ] );
347
  arsort( $logs );
348
 
349
  if ( 'slug' !== $slug )
350
+ $logs = array_slice( $logs, 0, 10 ); // Make list of top 10
351
 
352
+ foreach ( $logs as $key => $log ) {
353
  $link = explode( ' ', $key );
354
  $link = esc_html( end( $link ) );
355
  $key = esc_html( $key );
368
  '" target=_blank>' . $link . '</a>',
369
  $key
370
  );
371
+ echo '</code> (', (int)$log, ')</li>', "\n";
372
  }
373
  }
374
 
admin/js/admin.js CHANGED
@@ -2,7 +2,7 @@
2
  /*eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"]*/
3
  /*!
4
  * Project: WordPress IP Geo Block
5
- * Copyright (c) 2015-2017 tokkonopapa (tokkonopapa@yahoo.com)
6
  * This software is released under the MIT License.
7
  */
8
  (function ($, window, document) {
@@ -10,7 +10,7 @@
10
 
11
  // External variables
12
  var timer_stack = [],
13
- window_width = $(window).width(),
14
  ip_geo_block = IP_GEO_BLOCK,
15
  ip_geo_block_auth = IP_GEO_BLOCK_AUTH;
16
 
@@ -27,7 +27,7 @@
27
  }
28
 
29
  function escapeHTML(str) {
30
- return str ? str.toString().replace(/[&<>"']/g, function (match) {
31
  return {
32
  '&': '&amp;',
33
  '<': '&lt;',
@@ -35,11 +35,11 @@
35
  '"': '&quot;',
36
  "'": '&#39;'
37
  }[match];
38
- }) : '';
39
  }
40
 
41
  function stripTag(str) {
42
- return str.replace(/(<([^>]+)>)/ig, '');
43
  }
44
 
45
  function onresize(name, callback) {
@@ -68,22 +68,22 @@
68
  }
69
 
70
  function confirm(msg, callback) {
71
- if (window.confirm(stripTag(msg))) {
72
  callback();
73
  }
74
  }
75
 
76
- function warning(status, msg) {
77
- window.alert(stripTag(status ? status + ': ' + msg : msg));
78
  }
79
 
80
  function notice_html5() {
81
- warning(null, ip_geo_block.msg[8]);
82
  }
83
 
84
  function redirect(page, tab) {
85
  if (-1 !== window.location.href.indexOf(page)) {
86
- window.location = escapeHTML(page) + (tab ? '&' + escapeHTML(tab) : '') + '&ip-geo-block-auth-nonce=' + ip_geo_block_auth.nonce;
87
  }
88
  }
89
 
@@ -103,13 +103,13 @@
103
  }
104
  })
105
 
106
- .fail(function (jqXHR, textStatus/*, errorThrown*/) {
107
- warning(textStatus, jqXHR.responseText);
108
  })
109
 
110
  .always(function () {
111
  if (id) {
112
- if (objs) {
113
  $.when.apply($, objs).then(function () {
114
  loading(id, false);
115
  });
@@ -160,18 +160,22 @@
160
  if (stat) {
161
  obj.removeClass('folding-disable');
162
  } else {
163
- obj.children('li,a').hide();
164
  obj.addClass('folding-disable');
165
  obj.removeClass(ID('dropdown')).addClass(ID('dropup'));
166
  }
167
  }
168
 
169
- // Show/Hide folding list
170
- function show_folding_list($this, element, mask) {
171
  var stat = (0 === $this.prop('type').indexOf('checkbox') && $this.is(':checked')) ||
172
  (0 === $this.prop('type').indexOf('select' ) && '0' !== $this.val());
173
 
174
- element.nextAll(ID('.', 'settings-folding')).each(function (i, obj) {
 
 
 
 
175
  fold_elements($(obj), stat && mask);
176
  });
177
  }
@@ -238,7 +242,7 @@
238
  parent.find(ID('.', 'desc')).css('opacity', checked ? 1.0 : 0.5);
239
 
240
  // Show / Hide validation target
241
- show_folding_list($this, select, '1' === select.val() ? true : false);
242
  }
243
 
244
  /**
@@ -701,7 +705,7 @@
701
  function add_icon(dfn, span, title, icon) {
702
  var i, j;
703
  i = dfn.cloneNode(false);
704
- i.setAttribute('title', title);
705
  j = span.cloneNode(false);
706
  j.setAttribute('class', 'dashicons dashicons-' + icon);
707
  i.appendChild(j);
@@ -845,7 +849,7 @@
845
  if (!cmd) {
846
  return false;
847
  } else if (!cells.length) {
848
- warning(null, ip_geo_block.msg[9]);
849
  return false;
850
  }
851
 
@@ -964,12 +968,12 @@
964
  var key, val;
965
  for (key in data) {
966
  if (data.hasOwnProperty(key)) {
967
- key = escapeHTML(key);
968
  if ('string' === typeof data[key]) {
969
- val = escapeHTML(data[key]);
970
  } else {
971
- val = escapeHTML(data[key].code);
972
- key = '<abbr title="' + escapeHTML(data[key].type) + '">' + key + '</abbr>';
973
  }
974
  parent.append('<li>' + key + ' : <span class="' + ID('notice') + '">' + val + '</span></li>');
975
  }
@@ -1048,7 +1052,7 @@
1048
  // Show/Hide folding list at Login form
1049
  $(ID('@', 'validation_login')).on('change', function (event) {
1050
  var $this = $(this);
1051
- show_folding_list($this, $this, name, true);
1052
  return stopPropergation(event);
1053
  }).change();
1054
 
@@ -1061,59 +1065,71 @@
1061
  ajax_post(null, {
1062
  cmd: 'get-actions'
1063
  }, function (data) {
1064
- var i, j, id, key, $this = $(ID('#', 'actions')),
1065
  li = document.createElement('li' ),
1066
  input = document.createElement('input'),
1067
  label = document.createElement('label'),
1068
  dfn = document.createElement('dfn' ),
1069
  span = document.createElement('span' );
 
1070
  for (key in data) {
1071
- if (data.hasOwnProperty(key) && ! $this.find('#' + (id = ID('%', key))).size()) {
1072
- i = input.cloneNode(false);
1073
- i.setAttribute('id', id);
1074
- i.setAttribute('value', '1');
1075
- i.setAttribute('type', 'checkbox');
1076
- j = li.cloneNode(false);
1077
- j.appendChild(i);
1078
-
1079
- i = label.cloneNode(false);
1080
- i.setAttribute('for', id);
1081
- i.appendChild(document.createTextNode(key));
1082
- j.appendChild(i);
1083
-
1084
- if (1 & data[key]) {
1085
- j.appendChild(add_icon(dfn, span, ip_geo_block.msg[6], 'lock'));
1086
- }
1087
- if (2 & data[key]) {
1088
- j.appendChild(add_icon(dfn, span, ip_geo_block.msg[7], 'unlock'));
1089
- }
 
 
1090
 
1091
- $this.append(j);
 
1092
  }
1093
  }
1094
 
1095
- // Handle text field for actions
 
 
 
 
 
 
 
 
1096
  $(ID('@', 'exception_admin')).on('change', function (event) {
1097
  var actions = $.grep($(this).val().split(','), function (e){
1098
  return '' !== e.replace(/^\s+|\s+$/g, ''); // remove empty element
1099
  });
1100
 
1101
- $(ID('#', 'actions')).find('input').each(function (/*i, obj*/) {
1102
  var $this = $(this),
1103
- action = $this.attr('id').replace(ID('%', ''), '');
1104
  $this.prop('checked', -1 !== $.inArray(action, actions));
1105
  });
1106
 
1107
  return stopPropergation(event);
1108
  }).change();
1109
 
1110
- // Candidate actions
1111
- $(ID('#', 'actions')).on('click', 'input', function (/*event*/) {
1112
  var i,
1113
  $this = $(this),
1114
- $admin = $(ID('@', 'exception_admin')),
1115
- action = $this.attr('id').replace(ID('%', ''), ''),
1116
- actions = $.grep($admin.val().split(','), function (e){
1117
  return '' !== e.replace(/^\s+|\s+$/g, ''); // remove empty element
1118
  });
1119
 
@@ -1126,11 +1142,75 @@
1126
  actions.splice(i, 1);
1127
  }
1128
 
1129
- $admin.val(actions.join(',')).change();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1130
  });
1131
  });
1132
 
1133
- // Enable / Disable Exceptions
1134
  $('input[id^="' + ID('!', 'validation_ajax_') + '"]').on('change', function (/*event*/) {
1135
  show_folding_ajax($(this));
1136
  }).change();
@@ -1167,12 +1247,12 @@
1167
  data = res[api];
1168
  for (key in data) { // key: ipv4, ipv6
1169
  if (data.hasOwnProperty(key)) {
1170
- key = escapeHTML(key);
1171
  if (data[key].filename) {
1172
- $(ID('@', api + '_' + key + '_path')).val(escapeHTML(data[key].filename));
1173
  }
1174
  if (data[key].message) {
1175
- $(ID('#', api + '-' + key)).text(escapeHTML(data[key].message));
1176
  }
1177
  }
1178
  }
@@ -1323,7 +1403,7 @@
1323
  }
1324
 
1325
  // response should be escaped at server side
1326
- $(ID('#', 'wp-info')).html('<textarea rows="' + res.length + '">' + /*escapeHTML*/(res.join("\n")) + '</textarea>').find('textarea').select();
1327
  return false;
1328
  });
1329
  });
@@ -1335,16 +1415,16 @@
1335
  $('select[name^="' + name + '"]').on('change', function (/*event*/) {
1336
  var $this = $(this);
1337
  show_description($this);
1338
- show_folding_list($this, $this, name, true);
1339
  return false;
1340
  }).change();
1341
 
1342
  // Toggle checkbox
1343
- $(ID('.', 'cycle')).on('click', function (/*event*/) {
1344
- var regex, $that = $(this).nextAll('li'), actions,
1345
- text = $that.find(ID('@', 'exception_admin')),
1346
- cbox = $that.find('input:checkbox').filter(':visible'),
1347
- stat = cbox.filter(':checked').length;
1348
 
1349
  cbox.prop('checked', !stat);
1350
 
@@ -1352,10 +1432,9 @@
1352
  if (stat) {
1353
  text.val('');
1354
  } else {
1355
- regex = new RegExp(ID('%', ''));
1356
  actions = [];
1357
- cbox.each(function (i) {
1358
- actions[i] = $(this).attr('id').replace(regex, '');
1359
  });
1360
  text.val(actions.join(','));
1361
  }
@@ -1365,25 +1444,15 @@
1365
  return false;
1366
  });
1367
 
1368
- // Show/Hide logged in user only
1369
- $(ID('.', 'unlock')).on('click', function (/*event*/) {
1370
- $(this).nextAll('li').find('h4').nextAll('li').filter(function (/*i, elm*/) {
1371
- return ! $(this).find('.dashicons-unlock').length;
1372
- }).toggle();
1373
- return false;
1374
- });
1375
-
1376
  // Folding list
1377
  $(ID('.', 'settings-folding>dfn')).on('click', function (/*event*/) {
1378
  var drop = ID('drop'),
1379
  $this = $(this).parent();
1380
- $this.children('li').toggle();
1381
  $this.toggleClass(drop + 'up').toggleClass(drop + 'down');
1382
 
1383
- if ($this.hasClass(drop + 'down')) {
1384
- $this.children('a').show();
1385
- } else {
1386
- $this.children('a').hide();
1387
  }
1388
 
1389
  return false;
@@ -1407,6 +1476,28 @@
1407
  // https://developers.google.com/loader/#Dynamic
1408
  initChart(tabNo);
1409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1410
  // Statistics of validation
1411
  $(ID('@', 'clear_statistics')).on('click', function (/*event*/) {
1412
  confirm(ip_geo_block.msg[3], function () {
@@ -1629,6 +1720,7 @@
1629
  // Re-initialize DataTables
1630
  $(ID('#', 'live-log-stop')).trigger('click');
1631
  table = initTable(tabNo, control, options);
 
1632
  }).trigger('change');
1633
 
1634
  // Export / Import settings
@@ -1662,7 +1754,7 @@
1662
  } else {
1663
  map.each(function () {
1664
  $(this).empty().html(
1665
- '<iframe src="//maps.google.com/maps?output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>'
1666
  );
1667
  });
1668
  }
@@ -1714,17 +1806,17 @@
1714
  which: $(ID('@', 'service')).val()
1715
  }, function (data) {
1716
  var key, info = '',
1717
- latitude = escapeHTML(data.latitude || '0'),
1718
- longitude = escapeHTML(data.longitude || '0'),
1719
  zoom = (data.latitude || data.longitude) ? 8 : 2;
1720
 
1721
  for (key in data) {
1722
  if (data.hasOwnProperty(key)) {
1723
- key = escapeHTML(key);
1724
  info +=
1725
  '<li>' +
1726
  '<span class="' + ID('title' ) + '">' + key + ' : </span>' +
1727
- '<span class="' + ID('result') + '">' + escapeHTML(data[key]) + '</span>' +
1728
  '</li>';
1729
  }
1730
  }
@@ -1746,7 +1838,7 @@
1746
  '<ul style="margin-top:0; margin-left:1em;">' +
1747
  '<li>' +
1748
  '<span class="' + ID('title' ) + '">' + 'IP address' + ' : </span>' +
1749
- '<span class="' + ID('result') + '">' + escapeHTML(ip) + '</span>' +
1750
  '</li>' +
1751
  info +
1752
  /*'<li>' +
2
  /*eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"]*/
3
  /*!
4
  * Project: WordPress IP Geo Block
5
+ * Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
6
  * This software is released under the MIT License.
7
  */
8
  (function ($, window, document) {
10
 
11
  // External variables
12
  var timer_stack = [],
13
+ window_width = $(window).width(),
14
  ip_geo_block = IP_GEO_BLOCK,
15
  ip_geo_block_auth = IP_GEO_BLOCK_AUTH;
16
 
27
  }
28
 
29
  function escapeHTML(str) {
30
+ return str.toString().replace(/[&<>"']/g, function (match) {
31
  return {
32
  '&': '&amp;',
33
  '<': '&lt;',
35
  '"': '&quot;',
36
  "'": '&#39;'
37
  }[match];
38
+ }).replace(/&amp;(#\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) {
68
  }
69
 
70
  function confirm(msg, callback) {
71
+ if (window.confirm(msg)) {
72
  callback();
73
  }
74
  }
75
 
76
+ function warning(status, msg, cmd) {
77
+ window.alert(msg || ip_geo_block.msg[12].replace('%s', cmd) + ' (' + status + ')');
78
  }
79
 
80
  function notice_html5() {
81
+ warning(null, ip_geo_block.msg[10]);
82
  }
83
 
84
  function redirect(page, tab) {
85
  if (-1 !== window.location.href.indexOf(page)) {
86
+ window.location = stripTag(page) + (tab ? '&' + stripTag(tab) : '') + '&ip-geo-block-auth-nonce=' + ip_geo_block_auth.nonce;
87
  }
88
  }
89
 
103
  }
104
  })
105
 
106
+ .fail(function (jqXHR /*,textStatus, errorThrown*/) {
107
+ warning(jqXHR.status, jqXHR.responseText, request.action);
108
  })
109
 
110
  .always(function () {
111
  if (id) {
112
+ if ('object' === typeof objs) { // deferred object
113
  $.when.apply($, objs).then(function () {
114
  loading(id, false);
115
  });
160
  if (stat) {
161
  obj.removeClass('folding-disable');
162
  } else {
163
+ obj.children(ID('.', 'hide')).hide();
164
  obj.addClass('folding-disable');
165
  obj.removeClass(ID('dropdown')).addClass(ID('dropup'));
166
  }
167
  }
168
 
169
+ // Show/Hide descendant elements
170
+ function show_descendants($this, $elem, mask) {
171
  var stat = (0 === $this.prop('type').indexOf('checkbox') && $this.is(':checked')) ||
172
  (0 === $this.prop('type').indexOf('select' ) && '0' !== $this.val());
173
 
174
+ // checkbox
175
+ $this.siblings('input[name^="' + ID('%', 'settings') + '"]:checkbox').prop('disabled', !stat);
176
+
177
+ // folding list
178
+ $elem.nextAll(ID('.', 'settings-folding')).each(function (i, obj) {
179
  fold_elements($(obj), stat && mask);
180
  });
181
  }
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
  /**
705
  function add_icon(dfn, span, title, icon) {
706
  var i, j;
707
  i = dfn.cloneNode(false);
708
+ i.setAttribute('title', stripTag(title));
709
  j = span.cloneNode(false);
710
  j.setAttribute('class', 'dashicons dashicons-' + icon);
711
  i.appendChild(j);
849
  if (!cmd) {
850
  return false;
851
  } else if (!cells.length) {
852
+ warning(null, ip_geo_block.msg[11]);
853
  return false;
854
  }
855
 
968
  var key, val;
969
  for (key in data) {
970
  if (data.hasOwnProperty(key)) {
971
+ key = stripTag(key);
972
  if ('string' === typeof data[key]) {
973
+ val = stripTag(data[key]);
974
  } else {
975
+ val = stripTag(data[key].code);
976
+ key = '<abbr title="' + stripTag(data[key].type) + '">' + key + '</abbr>';
977
  }
978
  parent.append('<li>' + key + ' : <span class="' + ID('notice') + '">' + val + '</span></li>');
979
  }
1052
  // Show/Hide folding list at Login form
1053
  $(ID('@', 'validation_login')).on('change', function (event) {
1054
  var $this = $(this);
1055
+ show_descendants($this, $this, name, true);
1056
  return stopPropergation(event);
1057
  }).change();
1058
 
1065
  ajax_post(null, {
1066
  cmd: 'get-actions'
1067
  }, function (data) {
1068
+ var i, j, id, key, $this = $(ID('#', 'list-admin')),
1069
  li = document.createElement('li' ),
1070
  input = document.createElement('input'),
1071
  label = document.createElement('label'),
1072
  dfn = document.createElement('dfn' ),
1073
  span = document.createElement('span' );
1074
+
1075
  for (key in data) {
1076
+ if (data.hasOwnProperty(key)) {
1077
+ key = stripTag(key);
1078
+ if (!$this.find('#' + (id = ID('%', key))).size()) {
1079
+ i = input.cloneNode(false);
1080
+ i.setAttribute('id', id);
1081
+ i.setAttribute('value', key);
1082
+ i.setAttribute('type', 'checkbox');
1083
+ j = li.cloneNode(false);
1084
+ j.appendChild(i);
1085
+
1086
+ i = label.cloneNode(false);
1087
+ i.setAttribute('for', id);
1088
+ i.appendChild(document.createTextNode(key));
1089
+ j.appendChild(i);
1090
+
1091
+ if (1 & data[key]) {
1092
+ j.appendChild(add_icon(dfn, span, ip_geo_block.msg[6], 'lock'));
1093
+ }
1094
+ if (2 & data[key]) {
1095
+ j.appendChild(add_icon(dfn, span, ip_geo_block.msg[7], 'unlock'));
1096
+ }
1097
 
1098
+ $this.append(j);
1099
+ }
1100
  }
1101
  }
1102
 
1103
+ // Admin ajax/post: `Toggle non logged-in user` at `Exceptions`
1104
+ $(ID('.', 'icon-unlock')).on('click', function (/*event*/) {
1105
+ $(ID('#', 'list-admin') + '>li').filter(function (/*i, elm*/) {
1106
+ return ! $(this).find('.dashicons-unlock').length;
1107
+ }).toggle();
1108
+ return false;
1109
+ });
1110
+
1111
+ // Admin ajax/post: Handle text field for actions
1112
  $(ID('@', 'exception_admin')).on('change', function (event) {
1113
  var actions = $.grep($(this).val().split(','), function (e){
1114
  return '' !== e.replace(/^\s+|\s+$/g, ''); // remove empty element
1115
  });
1116
 
1117
+ $(ID('#', 'list-admin')).find('input').each(function (/*i, obj*/) {
1118
  var $this = $(this),
1119
+ action = $this.val();
1120
  $this.prop('checked', -1 !== $.inArray(action, actions));
1121
  });
1122
 
1123
  return stopPropergation(event);
1124
  }).change();
1125
 
1126
+ // Admin ajax/post: Candidate actions
1127
+ $(ID('#', 'list-admin')).on('click', 'input', function (/*event*/) {
1128
  var i,
1129
  $this = $(this),
1130
+ $text = $(ID('@', 'exception_admin')),
1131
+ action = $this.val(),
1132
+ actions = $.grep($text.val().split(','), function (e) {
1133
  return '' !== e.replace(/^\s+|\s+$/g, ''); // remove empty element
1134
  });
1135
 
1142
  actions.splice(i, 1);
1143
  }
1144
 
1145
+ $text.val(actions.join(',')).change();
1146
+ });
1147
+
1148
+ // Admin ajax/post: Find the blocked request in logs
1149
+ $(ID('.', 'icon-find')).on('click', function (/*event*/) {
1150
+ var $this = $(this),
1151
+ list = [], n = 0, key, ext, id, s,
1152
+ title = stripTag(ip_geo_block.msg[9]),
1153
+ target = stripTag($this.data('target')); // `admin`, `plugins`, `themes`
1154
+
1155
+ // show description
1156
+ $(ID('#', 'find-' + target)).empty();
1157
+ $this.next().children(ID('.', 'find-desc')).show();
1158
+
1159
+ // make list of target
1160
+ $this = $(ID('#', 'list-' + target));
1161
+ $this.children('li').each(function (i, obj) {
1162
+ list.push($(obj).find('input').val());
1163
+ });
1164
+
1165
+ ajax_post('find-' + target, {
1166
+ cmd: 'find-' + target
1167
+ }, function (data) {
1168
+ var val;
1169
+ for (val in data) {
1170
+ if (data.hasOwnProperty(val)) {
1171
+ ++n;
1172
+ key = stripTag(data[val]); // page, action, plugins, themes
1173
+ val = stripTag(val); // slug of target
1174
+ ext = $.inArray(val, list); // slug already exists
1175
+ id = ID('!', 'exception_' + target + '_' + val);
1176
+
1177
+ // make an anchor tab with search query
1178
+ s = 'admin' === target ? key + '=' + val : '/' + key + '/' + val + '/';
1179
+ s = '<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="?page=ip-geo-block&tab=4&s='
1180
+ + encodeURIComponent(s) + '" title="' + title.replace('%s', s) + '" target="_blank"><span></span></a>';
1181
+
1182
+ // add a new list when not found in existent key
1183
+ if (ext < 0) {
1184
+ list.push(val);
1185
+ $this.prepend(
1186
+ '<li><input id="' + id + '" value="' + val + '" type="checkbox" '
1187
+ + ('admin' === target ? '/>' : 'name=ip_geo_block_settings[exception][' + target + '][' + val + '] />')
1188
+ + '<label for="' + id + '">'+ val + '</lable>' + s + '</li>'
1189
+ );
1190
+ }
1191
+
1192
+ // append button when found in existent key
1193
+ else {
1194
+ id = $this.find('#' + id).parent();
1195
+ if (!id.find('a').length) {
1196
+ id.append(s);
1197
+ }
1198
+ }
1199
+ }
1200
+ }
1201
+
1202
+ // update status of checkbox
1203
+ $(ID('@', 'exception_' + target)).trigger('change');
1204
+ $(ID('#', 'find-' + target)).append(
1205
+ ' ' + '<span class="ip-geo-block-found">' + stripTag(ip_geo_block.msg[8].replace('%d', n)) + '</span>'
1206
+ );
1207
+ });
1208
+
1209
+ return false;
1210
  });
1211
  });
1212
 
1213
+ // Admin ajax/post: Enable / Disable Exceptions
1214
  $('input[id^="' + ID('!', 'validation_ajax_') + '"]').on('change', function (/*event*/) {
1215
  show_folding_ajax($(this));
1216
  }).change();
1247
  data = res[api];
1248
  for (key in data) { // key: ipv4, ipv6
1249
  if (data.hasOwnProperty(key)) {
1250
+ key = stripTag(key);
1251
  if (data[key].filename) {
1252
+ $(ID('@', api + '_' + key + '_path')).val(stripTag(data[key].filename));
1253
  }
1254
  if (data[key].message) {
1255
+ $(ID('#', api + '-' + key)).text(stripTag(data[key].message));
1256
  }
1257
  }
1258
  }
1403
  }
1404
 
1405
  // response should be escaped at server side
1406
+ $(ID('#', 'wp-info')).html('<textarea class="regular-text code" rows="' + res.length + '">' + /*stripTag*/(res.join("\n")) + '</textarea>').find('textarea').select();
1407
  return false;
1408
  });
1409
  });
1415
  $('select[name^="' + name + '"]').on('change', function (/*event*/) {
1416
  var $this = $(this);
1417
  show_description($this);
1418
+ show_descendants($this, $this, name, true);
1419
  return false;
1420
  }).change();
1421
 
1422
  // Toggle checkbox
1423
+ $(ID('.', 'icon-cycle')).on('click', function (/*event*/) {
1424
+ var $that = $(this).nextAll('li'), actions,
1425
+ text = $that.find(ID('@', 'exception_admin')),
1426
+ cbox = $that.find('input:checkbox').filter(':visible'),
1427
+ stat = cbox.filter(':checked').length;
1428
 
1429
  cbox.prop('checked', !stat);
1430
 
1432
  if (stat) {
1433
  text.val('');
1434
  } else {
 
1435
  actions = [];
1436
+ cbox.each(function (i, obj) {
1437
+ actions.push($(obj).val());
1438
  });
1439
  text.val(actions.join(','));
1440
  }
1444
  return false;
1445
  });
1446
 
 
 
 
 
 
 
 
 
1447
  // Folding list
1448
  $(ID('.', 'settings-folding>dfn')).on('click', function (/*event*/) {
1449
  var drop = ID('drop'),
1450
  $this = $(this).parent();
1451
+ $this.children(ID('.', 'hide')).toggle();
1452
  $this.toggleClass(drop + 'up').toggleClass(drop + 'down');
1453
 
1454
+ if ($this.hasClass(drop + 'up')) {
1455
+ $this.children('div').hide();
 
 
1456
  }
1457
 
1458
  return false;
1476
  // https://developers.google.com/loader/#Dynamic
1477
  initChart(tabNo);
1478
 
1479
+ // Toggle sorting order
1480
+ var order = 0;
1481
+ $(ID('#', 'sort-slug')).on('click', function (/*event*/) {
1482
+ var $ol = $(this).closest('ol'),
1483
+ $li = $ol.children('li');
1484
+
1485
+ // toggle sorting
1486
+ order = !order;
1487
+ if (order) {
1488
+ $li.sort(function (a, b) {
1489
+ return $(a).text() > $(b).text();
1490
+ });
1491
+ } else {
1492
+ $li.sort(function (a, b) {
1493
+ return parseInt($(a).text().replace(/^.*\((\d+)\)$/, '$1'), 10) <= parseInt($(b).text().replace(/^.*\((\d+)\)$/, '$1'), 10);
1494
+ });
1495
+ }
1496
+
1497
+ $ol.children('li').remove();
1498
+ $li.appendTo($ol);
1499
+ });
1500
+
1501
  // Statistics of validation
1502
  $(ID('@', 'clear_statistics')).on('click', function (/*event*/) {
1503
  confirm(ip_geo_block.msg[3], function () {
1720
  // Re-initialize DataTables
1721
  $(ID('#', 'live-log-stop')).trigger('click');
1722
  table = initTable(tabNo, control, options);
1723
+ return false;
1724
  }).trigger('change');
1725
 
1726
  // Export / Import settings
1754
  } else {
1755
  map.each(function () {
1756
  $(this).empty().html(
1757
+ '<iframe src="' + ip_geo_block.altgmap + '?output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>'
1758
  );
1759
  });
1760
  }
1806
  which: $(ID('@', 'service')).val()
1807
  }, function (data) {
1808
  var key, info = '',
1809
+ latitude = stripTag(data.latitude || '0'),
1810
+ longitude = stripTag(data.longitude || '0'),
1811
  zoom = (data.latitude || data.longitude) ? 8 : 2;
1812
 
1813
  for (key in data) {
1814
  if (data.hasOwnProperty(key)) {
1815
+ key = stripTag(key);
1816
  info +=
1817
  '<li>' +
1818
  '<span class="' + ID('title' ) + '">' + key + ' : </span>' +
1819
+ '<span class="' + ID('result') + '">' + stripTag(data[key]) + '</span>' +
1820
  '</li>';
1821
  }
1822
  }
1838
  '<ul style="margin-top:0; margin-left:1em;">' +
1839
  '<li>' +
1840
  '<span class="' + ID('title' ) + '">' + 'IP address' + ' : </span>' +
1841
+ '<span class="' + ID('result') + '">' + stripTag(ip) + '</span>' +
1842
  '</li>' +
1843
  info +
1844
  /*'<li>' +
admin/js/admin.min.js CHANGED
@@ -1,6 +1,6 @@
1
  /*
2
  Project: WordPress IP Geo Block
3
- Copyright (c) 2015-2017 tokkonopapa (tokkonopapa@yahoo.com)
4
  This software is released under the MIT License.
5
  */
6
- (function(b,g,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 q(b){return b?b.toString().replace(/[&<>"']/g,function(b){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[b]}):""}function C(c,a){var e=b(g).width();e!==D&&(D=e,"undefined"===typeof r[c]&&(r[c]={id:!1,callback:a}),b(g).off("resize").on("resize",function(){!1!==r[c].id&&g.clearTimeout(r[c].id);r[c].time=g.setTimeout(r[c].callback,200);return!1}))}function v(c,e){e?b(a("#",c)).addClass(a("loading")):b(a("#",c)).removeClass(a("loading"))}function w(b,a){g.confirm(b.replace(/(<([^>]+)>)/ig,""))&&a()}function B(b,a){g.alert((b?b+": "+a:a).replace(/(<([^>]+)>)/ig,""))}function F(b,a){-1!==g.location.href.indexOf(b)&&(g.location=q(b)+(a?"&"+q(a):"")+"&ip-geo-block-auth-nonce="+G.nonce)}function m(a,e,f,k){a&&v(a,!0);e.action=d.action;e.nonce=d.nonce;b.post(d.url,e).done(function(b){f&&f(b)}).fail(function(b,a){B(a,b.responseText)}).always(function(){a&&(k?b.when.apply(b,k).then(function(){v(a,!1)}):v(a,!1))})}function I(b,a){m(b,{cmd:"clear-"+b,which:a},function(b){F(b.page,b.tab)})}function N(b){m(b,{cmd:b},function(b){F(b.page,b.tab)})}function x(b){b.stopImmediatePropagation();return!1}function J(b,e){e?b.removeClass("folding-disable"):(b.children("li,a").hide(),b.addClass("folding-disable"),b.removeClass(a("dropdown")).addClass(a("dropup")))}function K(c,e,f){var k=0===c.prop("type").indexOf("checkbox")&&c.is(":checked")||0===c.prop("type").indexOf("select")&&"0"!==c.val();e.nextAll(a(".","settings-folding")).each(function(a,c){J(b(c),k&&f)})}function O(c){var e=a("@","validation_ajax_");J(c.closest("ul").next(),b(e+"1").is(":checked")||b(e+"2").is(":checked"))}function E(b){return String(b).replace(/[a-z]/gi,function(b){return String.fromCharCode(b.charCodeAt(0)+("n">b.toLowerCase()?13:-13))})}function X(b,a){var c=new g.FileReader;c.onload=function(b){a&&a(b.target.result)};c.onerror=function(b){B("Error",b.target.error.code)};c.readAsText(b)}function P(c){var e=c.is(":checked"),f=b(a("@","public_target_rule")),k=c.closest("tr").nextAll("tr");k.find('[name^="'+a("%","settings")+'"]').prop("disabled",!e);k.find(a(".","desc")).css("opacity",e?1:.5);K(c,f,"1"===f.val()?!0:!1)}function L(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(),P(b(a("@","validation_public"))),O(b(a("@","validation_ajax_1"))),e&&(e=a("%","settings[providers][IPInfoDB]"),b(a("@","providers_IPInfoDB")).prop("checked",c[e]?!0:!1)))}function M(b,a){var c=Math.ceil(b.length/a),e=[],d;for(d=0;d<c;++d){var p=d*a;e.push(b.slice(p,p+a))}return e}function y(c){"object"===typeof g.google&&(1===c?(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 Q(b){if("object"===typeof g.google){var a=["corechart"];5===b&&a.push("bar");g.google.load("visualization","1",{packages:a,callback:function(){y(b)}});C("draw-chart."+b,function(){y(b)})}}function Y(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 z(a){var c,f,d=[];b.each(a,function(b,a){d[b]="";if("undefined"!==typeof a&&(f=a.length))for(d[b]=a[0]||"o",c=1;c<f;++c)d[b]+=a[c]||"o"});"undefined"!==typeof wpCookies&&wpCookies.setHash("ip-geo-block",d,new Date(Date.now()+2592E6),G.home+G.admin)}function Z(c){var e=Y(c);b("form").on("click","h2,h3",function(){var f=b(this),d=f.closest("fieldset").data("section"),g=f.parent().nextAll(".panel-body").toggle();f.toggleClass(a("dropup")).toggleClass(a("dropdown"));(f=f.hasClass(a("dropdown")))?g.addClass(a("border")).trigger(a("show-body")):g.removeClass(a("border"));e[c][d]=f?"o":"x";z(e);y(c);return!1});b(a("#","toggle-sections")).on("click",function(){var d,k=b(a(".","field")).find("h2,h3"),g=[a("dropdown"),a("dropup")],p=k.filter("."+g[0]).length;k.each(function(f){d=b(this);d.removeClass(g.join(" ")).addClass(p?g[1]:g[0]);d=d.parent().nextAll(".panel-body").toggle(p?!1:!0);p?d.removeClass(a("border")):d.addClass(a("border")).trigger("show-body");e[c][f]=p?"x":"o"});z(e);y(c);return!1});return e}function R(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 S(b,a,d,g){b=b.cloneNode(!1);b.setAttribute("title",d);a=a.cloneNode(!1);a.setAttribute("class","dashicons dashicons-"+g);b.appendChild(a);return b}function T(c,e,f){b.extend(!0,b.fn.dataTable.defaults,f,{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:"&laquo;",last:"&raquo;",next:"&rsaquo;",previous:"&lsaquo;"}},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=b(a("#",e.tableID)).find("td.dataTables_empty");3>c.iDraw?f.html(d.i18n[0]):3===c.iDraw&&(f.html(d.i18n[1]),f=b(a("@","search_filter")),f.val()&&f.trigger("keyup"))}});var k=b(a("#",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)};C("draw-table."+c,h);b(a("#",e.sectionID)).find(".panel-body").off(a("show-body")).on(a("show-body"),function(){h();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();k.columns(e.targetColumn).search("all"!==c?c:"").draw();return!1}).trigger("change");b(a("#","bulk-action")).off("click").on("click",function(){var f=b(this).prev().val(),g=/(<([^>]+)>)/ig,h={IP:[],AS:[]},u,n=b("table.dataTable").find("td>input:checked");if(!f)return!1;if(!n.length)return B(null,d.msg[9]),!1;n.each(function(){u=k.cell(this.parentNode).data();h.IP.push(u[e.columnIP].replace(g,""));h.AS.push(u[e.columnAS].replace(g,""))});h.IP.length&&m("loading",{cmd:f,which:h},function(d){"undefined"!==typeof d.page?F(d.page,"tab="+c):d&&(k.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(){k.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("");k.search("").draw();return!1});b(a("@","clear_all")).off("click").on("click",function(){w(d.msg[1===c?4:5],function(){I(1===c?"cache":"logs",null)});return!1});b("table.dataTable tbody").on("click","a",function(){var a=g.location.search.slice(1).split("&"),e=a.length,d={},f;for(f=0;f<e;++f){var h=a[f].split("=");d[h[0]]=h[1]}d.tab=1===c?4:2;d.s=b(this).text().replace(/[^\w\.:\*]/,"");h=[];for(f in d)d.hasOwnProperty(f)&&h.push(f+"="+d[f]);g.open(g.location.pathname+"?"+h.join("&"),"_blank");return!1});return k}var r=[],D=b(g).width(),d=IP_GEO_BLOCK,G=IP_GEO_BLOCK_AUTH;b.fn.deserialize=function(a){return this.each(function(){var c,d=this,g={};for(c in a)if(a.hasOwnProperty(c))try{var h=decodeURIComponent(c);var p=decodeURIComponent(a[c]);g.hasOwnProperty(h)||(g[h]=[]);g[h].push(p)}catch(aa){}b.each(g,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 g.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 g.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 g.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 n=e.length;for(c=0;c<n;++c)e[c][0]=new Date(1E3*e[c][0]);h.dataLine[a].addRows(e)}"undefined"===typeof h.viewLine[a]&&(h.viewLine[a]=new g.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,f,k=b("#"+c);"undefined"===typeof h.dataStacked[c]&&(f=b.parseJSON(k.attr("data-"+c)))&&(f.unshift(["site","comment","xmlrpc","login","admin","poblic",{role:"link"}]),h.dataStacked[c]=g.google.visualization.arrayToDataTable(f));"undefined"===typeof h.viewStacked[c]&&(h.viewStacked[c]=new g.google.visualization.BarChart(t.getElementById(c)),g.google.visualization.events.addListener(h.viewStacked[c],"animationfinish",function(){var d,e,g,f=[],n=h.dataStacked[c],p=n.getNumberOfRows(),m=b(a("#","open-new")).prop("checked");for(d=0;d<p;d++)f.push({label:n.getValue(d,0),link:n.getValue(d,6)});p="http://www.w3.org/1999/xlink";k.find("text").each(function(b,a){g=a.parentNode;var c;if(c="g"===g.tagName.toLowerCase()){a:{c=a.textContent;var d,h=f.length;c=c.replace("\u2026","");for(d=0;d<h;++d)if(f.hasOwnProperty(d)&&0===f[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(p,"xlink:href",f[b].link),e.setAttributeNS(p,"title",f[b].label),e.setAttribute("target",m?"_blank":"_self"),e.setAttribute("class","site"),e.appendChild(g.removeChild(a)),g.appendChild(e),f.splice(b,1))})}));if(0<(d=k.width())&&"undefined"!==typeof h.dataStacked[c]&&"undefined"!==typeof h.viewStacked[c]){var n=a("range");var p=b.parseJSON(b("."+n).attr("data-"+n));f=h.dataStacked[c];n=40*f.getNumberOfRows();h.viewStacked[c].draw(f,{width:d,height:n+80,allowHtml:!0,isStacked:!0,legend:{position:"top"},chartArea:{top:50,left:90,width:"100%",height:n},hAxis:{minValue:0,maxValue:p[1]},backgroundColor:{fill:"transparent"},animation:{startup:!0,duration:200,easing:"out"}})}},ajaxStacked:function(c,d,f,g){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*g,length:d},function(c){var e,f,g,k,n;c=M(c,d);b(a(".","network")).each(function(a,p){if("undefined"!==typeof c[a]){k=b(p).attr("id");n=h.dataStacked[k];g=Math.min(d,c[a].length);for(e=0;e<g;++e)for(f=1;5>=f;f++)n.setValue(e,f,c[a][e][f]);h.drawStacked(k)}})})}};b(function(){var c=Number(d.tab)||0,e=Z(c);b(a(".","inhibit")).on("submit",function(){return!1});switch(c){case 0:var f=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=q(c);if("string"===typeof b[c])var d=q(b[c]);else d=q(b[c].code),c='<abbr title="'+q(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("@","validation_mimetype")).on("change",function(c){var d=b(this),l=parseInt(d.val(),10);d.nextAll(a(".","settings-folding")).each(function(a,c){J(b(c),l===a+1||l&&2===a)});return x(c)}).change();b('select[name*="response_code"]').on("change",function(c){var d=b(this),l=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()}),x(c);3>=l?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 x(c)}).change();b(a("#","decode")).on("click",function(){var c=b(a("@","signature")),d=c.val();-1===d.search(/,/)?c.val(E(g.atob(d))):c.val(g.btoa(E(d)));return!1});b(a("@","validation_login")).on("change",function(a){var c=b(this);K(c,c,f,!0);return x(a)}).change();b(a("@","validation_admin_2")).on("change",function(){G.zep.admin=!0});m(null,{cmd:"get-actions"},function(c){var e,l,f=b(a("#","actions")),g=t.createElement("li"),h=t.createElement("input"),k=t.createElement("label"),n=t.createElement("dfn"),p=t.createElement("span");for(l in c)if(c.hasOwnProperty(l)&&!f.find("#"+(e=a("%",l))).size()){var m=h.cloneNode(!1);m.setAttribute("id",e);m.setAttribute("value","1");m.setAttribute("type","checkbox");var q=g.cloneNode(!1);q.appendChild(m);m=k.cloneNode(!1);m.setAttribute("for",e);m.appendChild(t.createTextNode(l));q.appendChild(m);1&c[l]&&q.appendChild(S(n,p,d.msg[6],"lock"));2&c[l]&&q.appendChild(S(n,p,d.msg[7],"unlock"));f.append(q)}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("#","actions")).find("input").each(function(){var c=b(this),e=c.attr("id").replace(a("%",""),"");c.prop("checked",-1!==b.inArray(e,d))});return x(c)}).change();b(a("#","actions")).on("click","input",function(){var c=b(this);var d=b(a("@","exception_admin")),e=c.attr("id").replace(a("%",""),""),l=b.grep(d.val().split(","),function(b){return""!==b.replace(/^\s+|\s+$/g,"")});c=b.inArray(e,l);-1===c?l.push(e):l.splice(c,1);d.val(l.join(",")).change()})});b('input[id^="'+a("!","validation_ajax_")+'"]').on("change",function(){O(b(this))}).change();b(a("@","validation_public")).on("change",function(a){P(b(this));return x(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 x(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(l in e)if(e.hasOwnProperty(l)){var l=q(l);e[l].filename&&b(a("@",d+"_"+l+"_path")).val(q(e[l].filename));e[l].message&&b(a("#",d+"-"+l)).text(q(e[l].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");R("validate");b(a("#","export")).on("click",function(){if("undefined"===typeof JSON)return B(null,d.msg[8]),!1;var c=f,e={};b.each(b(this).closest("form").serializeArray(),function(b,a){-1!==a.name.indexOf(c)&&(e[a.name]=a.value)});e[c+="[signature]"]=g.btoa(E(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 g.FileReader)return B(null,d.msg[8]),!1;var b;(a=a.target.files[0])&&X(a,function(a){a=JSON.parse(a);b=f+"[signature]";"undefined"!==typeof a[b]&&(a[b]=g.btoa(E(a[b])));m("export-import",{cmd:"validate",data:JSON.stringify(a)},function(a){L(a,!0)})});return!1});b(a("#","import")).on("click",function(){b(a("#","file-dialog")).click();return!1});b(a("#","default")).on("click",function(){w(d.msg[0],function(){m("pre-defined",{cmd:"import-default"},function(a){L(a,!0)})});return!1});b(a("#","preferred")).on("click",function(){w(d.msg[0],function(){m("pre-defined",{cmd:"import-preferred"},function(a){L(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(){w(d.msg[1],function(){N("create-table")});return!1});b(a("@","delete_table")).on("click",function(){w(d.msg[2],function(){N("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 rows="'+e.length+'">'+e.join("\n")+"</textarea>").find("textarea").select();return!1})});b('select[name^="'+f+'"]').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));K(c,c,f,!0);return!1}).change();b(a(".","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=new RegExp(a("%",""));var g=[];c.each(function(a){g[a]=b(this).attr("id").replace(f,"")});d.val(g.join(","))}b(this).blur();return!1});b(a(".","unlock")).on("click",function(){b(this).nextAll("li").find("h4").nextAll("li").filter(function(){return!b(this).find(".dashicons-unlock").length}).toggle();return!1});b(a(".","settings-folding>dfn")).on("click",function(){var c=a("drop"),d=b(this).parent();d.children("li").toggle();d.toggleClass(c+"up").toggleClass(c+"down");d.hasClass(c+"down")?d.children("a").show():d.children("a").hide();return!1});b("#submit").on("click",function(){var c=b(a("@","signature")),d=c.val();-1!==d.indexOf(",")&&c.val(g.btoa(E(d)));return!0});break;case 1:Q(c);b(a("@","clear_statistics")).on("click",function(){w(d.msg[3],function(){I("statistics",null)});return!1});b(a("@","clear_logs")).on("click",function(){w(d.msg[5],function(){I("logs",null)});return!1});T(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 k={tableID:"validation-logs",sectionID:"section-0",targetColumn:6,columnIP:3,columnAS:5},n={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]}]},p=null,r=null,y=b(a("#","live-loading")),u=null,v=function(){p&&(g.clearTimeout(p),p=null);r&&(y.removeClass(a("live-timer")),g.clearTimeout(r),r=null)},C=function(){v();m("live-loading",{cmd:"live-start"},function(a){if(a.error)B(null,a.error);else if(a.data.length){var b,c=a.data.length;for(b=0;b<c;b++)u.row.add(a.data[b]);u.draw(!1)}p=g.setTimeout(C,1E3*d.interval)})},D=function(a,b){v();m(null,{cmd:a||"live-stop",callback:b})},M=function(){D("live-pause",function(){y.addClass(a("live-timer"));r=g.setTimeout(function(){v();b(a("#","live-log-stop")).prop("checked",!0)},1E3*d.timeout)})},A=a(""),U=function(a,c,d){-1!==c[7].indexOf("passed")?b(a).addClass(A+d+"passed"):b(a).addClass(A+d+"blocked")},V=b(a("#","live-log")),W=b(a("#","live-update"));b(a("#","validation-logs")).on("animationend",function(){b(this).find('tr[class*="'+A+'new"]').each(function(){var a=b(this);-1!==a.prop("class").indexOf("passed")?a.addClass(A+"passed").removeClass(A+"new-passed"):a.addClass(A+"blocked").removeClass(A+"new-blocked")});return!1});V.on("change",function(){switch(b('input[name="'+a("live-log")+'"]:checked').val()){case "start":C();break;case "pause":M();break;case "stop":D()}});W.on("change",function(){var d=V.closest("tr"),f=W.prop("checked");e[c][1]=f?"o":"x";z(e);u&&u.clear().destroy();f?(d.show().next().next().next().nextAll().hide(),k.ajaxCMD="live-stop",n.order=[1,"desc"],n.createdRow=function(a,b){U(a,b,"new-")}):(d.hide().next().next().next().nextAll().show(),k.ajaxCMD="restore-logs",n.order=[0,""],n.createdRow=function(a,b){U(a,b,"")});b(a("#","live-log-stop")).trigger("click");u=T(c,k,n)}).trigger("change");R("export-logs");b(a("#","export-logs")).on("click",function(){b(a("#","export-form")).submit();return!1});break;case 2:b(g).on(a("gmap-error"),function(){m(null,{cmd:"gmap-error"},function(a){F(a.page,a.tab)})});var H=b(a("#","map"));"object"===typeof g.google?H.each(function(){b(this).GmapRS()}):H.each(function(){b(this).empty().html('<iframe src="//maps.google.com/maps?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");z(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=q(b.latitude||"0"),f=q(b.longitude||"0"),h=b.latitude||b.longitude?8:2;for(l in b)if(b.hasOwnProperty(l)){var l=q(l);c+='<li><span class="'+a("title")+'">'+l+' : </span><span class="'+a("result")+'">'+q(b[l])+"</span></li>"}"object"===typeof g.google?H.GmapRS("addMarker",{latitude:e,longitude:f,title:d,content:"<ul>"+c+"</ul>",show:!0,zoom:h}):H.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")+'">'+q(d)+"</span></li>"+c+'</ul><iframe src="//maps.google.com/maps?q='+e+","+f+"&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:Q(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;z(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";z(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();z(e)}),b("ul.wp-submenu>li.wp-first-item").removeClass("current").next().addClass("current")}})})(jQuery,window,document);
1
  /*
2
  Project: WordPress IP Geo Block
3
+ Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
4
  This software is released under the MIT License.
5
  */
6
+ (function(b,f,u){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 L(b){return b.toString().replace(/[&<>"']/g,function(b){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[b]}).replace(/&amp;(#\d{2,4}|\w{4,7});/g,"&$1;")}function l(b){return L(b.toString().replace(/(<([^>]+)>)/ig,""))}function F(a,e){var c=b(f).width();c!==G&&(G=c,"undefined"===typeof q[a]&&(q[a]={id:!1,callback:e}),b(f).off("resize").on("resize",function(){!1!==q[a].id&&f.clearTimeout(q[a].id);q[a].time=f.setTimeout(q[a].callback,200);return!1}))}function x(c,e){e?b(a("#",c)).addClass(a("loading")):b(a("#",c)).removeClass(a("loading"))}function y(b,a){f.confirm(b)&&a()}function D(b,a,h){f.alert(a||d.msg[12].replace("%s",h)+" ("+b+")")}function I(b,a){-1!==f.location.href.indexOf(b)&&(f.location=l(b)+(a?"&"+l(a):"")+"&ip-geo-block-auth-nonce="+J.nonce)}function p(a,e,h,k){a&&x(a,!0);e.action=d.action;e.nonce=d.nonce;b.post(d.url,e).done(function(b){h&&h(b)}).fail(function(b){D(b.status,b.responseText,e.action)}).always(function(){a&&("object"===typeof k?b.when.apply(b,k).then(function(){x(a,!1)}):x(a,!1))})}function M(b,a){p(b,{cmd:"clear-"+b,which:a},function(b){I(b.page,b.tab)})}function Q(b){p(b,{cmd:b},function(b){I(b.page,b.tab)})}function z(b){b.stopImmediatePropagation();return!1}function N(b,e){e?b.removeClass("folding-disable"):(b.children(a(".","hide")).hide(),b.addClass("folding-disable"),b.removeClass(a("dropdown")).addClass(a("dropup")))}function O(c,e,h){var k=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",!k);e.nextAll(a(".","settings-folding")).each(function(a,c){N(b(c),k&&h)})}function R(c){var e=a("@","validation_ajax_");N(c.closest("ul").next(),b(e+"1").is(":checked")||b(e+"2").is(":checked"))}function H(b){return String(b).replace(/[a-z]/gi,function(b){return String.fromCharCode(b.charCodeAt(0)+("n">b.toLowerCase()?13:-13))})}function aa(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 S(c){var e=c.is(":checked"),h=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);O(c,h,"1"===h.val()?!0:!1)}function P(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(),S(b(a("@","validation_public"))),R(b(a("@","validation_ajax_1"))),e&&(e=a("%","settings[providers][IPInfoDB]"),b(a("@","providers_IPInfoDB")).prop("checked",c[e]?!0:!1)))}function ba(b,a){var c=Math.ceil(b.length/a),e=[],d;for(d=0;d<c;++d){var m=d*a;e.push(b.slice(m,m+a))}return e}function A(c){"object"===typeof f.google&&(1===c?(g.drawPie(a("chart-countries")),g.drawLine(a("chart-daily"),"date")):5===c&&b(a(".","network")).each(function(a,c){g.drawStacked(b(c).attr("id"))}))}function T(b){if("object"===typeof f.google){var a=["corechart"];5===b&&a.push("bar");f.google.load("visualization","1",{packages:a,callback:function(){A(b)}});F("draw-chart."+b,function(){A(b)})}}function ca(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 B(a){var c,h,d=[];b.each(a,function(b,a){d[b]="";if("undefined"!==typeof a&&(h=a.length))for(d[b]=a[0]||"o",c=1;c<h;++c)d[b]+=a[c]||"o"});"undefined"!==typeof wpCookies&&wpCookies.setHash("ip-geo-block",d,new Date(Date.now()+2592E6),J.home+J.admin)}function da(c){var e=ca(c);b("form").on("click","h2,h3",function(){var d=b(this),k=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][k]=d?"o":"x";B(e);A(c);return!1});b(a("#","toggle-sections")).on("click",function(){var d,f=b(a(".","field")).find("h2,h3"),g=[a("dropdown"),a("dropup")],m=f.filter("."+g[0]).length;f.each(function(h){d=b(this);d.removeClass(g.join(" ")).addClass(m?g[1]:g[0]);d=d.parent().nextAll(".panel-body").toggle(m?!1:!0);m?d.removeClass(a("border")):d.addClass(a("border")).trigger("show-body");e[c][h]=m?"x":"o"});B(e);A(c);return!1});return e}function U(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 V(b,a,d,f){b=b.cloneNode(!1);b.setAttribute("title",l(d));a=a.cloneNode(!1);a.setAttribute("class","dashicons dashicons-"+f);b.appendChild(a);return b}function W(c,e,h){b.extend(!0,b.fn.dataTable.defaults,h,{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:"&laquo;",last:"&raquo;",next:"&rsaquo;",previous:"&lsaquo;"}},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 h=b(a("#",e.tableID)).find("td.dataTables_empty");3>c.iDraw?h.html(d.i18n[0]):3===c.iDraw&&(h.html(d.i18n[1]),h=b(a("@","search_filter")),h.val()&&h.trigger("keyup"))}});var g=b(a("#",e.tableID)).DataTable({ajax:{url:d.url,type:"POST",data:{cmd:e.ajaxCMD,action:d.action,nonce:d.nonce}},mark:!0}),r=function(){g.columns.adjust().responsive.recalc().draw(!1)};F("draw-table."+c,r);b(a("#",e.sectionID)).find(".panel-body").off(a("show-body")).on(a("show-body"),function(){r();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();g.columns(e.targetColumn).search("all"!==c?c:"").draw();return!1}).trigger("change");b(a("#","bulk-action")).off("click").on("click",function(){var h=b(this).prev().val(),f=/(<([^>]+)>)/ig,t={IP:[],AS:[]},k,w=b("table.dataTable").find("td>input:checked");if(!h)return!1;if(!w.length)return D(null,d.msg[11]),!1;w.each(function(){k=g.cell(this.parentNode).data();t.IP.push(k[e.columnIP].replace(f,""));t.AS.push(k[e.columnAS].replace(f,""))});t.IP.length&&p("loading",{cmd:h,which:t},function(d){"undefined"!==typeof d.page?I(d.page,"tab="+c):d&&(g.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(){g.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("");g.search("").draw();return!1});b(a("@","clear_all")).off("click").on("click",function(){y(d.msg[1===c?4:5],function(){M(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={},h;for(h=0;h<e;++h){var g=a[h].split("=");d[g[0]]=g[1]}d.tab=1===c?4:2;d.s=b(this).text().replace(/[^\w\.:\*]/,"");g=[];for(h in d)d.hasOwnProperty(h)&&g.push(h+"="+d[h]);f.open(f.location.pathname+"?"+g.join("&"),"_blank");return!1});return g}var q=[],G=b(f).width(),d=IP_GEO_BLOCK,J=IP_GEO_BLOCK_AUTH;b.fn.deserialize=function(a){return this.each(function(){var c,d=this,g={};for(c in a)if(a.hasOwnProperty(c))try{var f=decodeURIComponent(c);var m=decodeURIComponent(a[c]);g.hasOwnProperty(f)||(g[f]=[]);g[f].push(m)}catch(fa){}b.each(g,function(a,e){c=b('[name="'+a+'"]:input',d).val(e);"hidden"!==c.attr("type")&&c.before('<span style="color:red">*</span>')})})};var g={dataPie:[],viewPie:[],drawPie:function(a){if("undefined"===typeof g.dataPie[a]){var c=g.dataPie[a]=new f.google.visualization.DataTable;c.addColumn("string","Country");c.addColumn("number","Requests");c=b.parseJSON(b("#"+a).attr("data-"+a));g.dataPie[a].addRows(c)}"undefined"===typeof g.viewPie[a]&&(g.viewPie[a]=new f.google.visualization.PieChart(u.getElementById(a)));"undefined"!==typeof g.dataPie[a]&&"undefined"!==typeof g.viewPie[a]&&0<b("#"+a).width()&&g.viewPie[a].draw(g.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 g.dataLine[a]){var c=g.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 l=e.length;for(c=0;c<l;++c)e[c][0]=new Date(1E3*e[c][0]);g.dataLine[a].addRows(e)}"undefined"===typeof g.viewLine[a]&&(g.viewLine[a]=new f.google.visualization.LineChart(u.getElementById(a)));"undefined"!==typeof g.dataLine[a]&&"undefined"!==typeof g.viewLine[a]&&0<(c=b("#"+a).width())&&g.viewLine[a].draw(g.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,h,l=b("#"+c);"undefined"===typeof g.dataStacked[c]&&(h=b.parseJSON(l.attr("data-"+c)))&&(h.unshift(["site","comment","xmlrpc","login","admin","poblic",{role:"link"}]),g.dataStacked[c]=f.google.visualization.arrayToDataTable(h));"undefined"===typeof g.viewStacked[c]&&(g.viewStacked[c]=new f.google.visualization.BarChart(u.getElementById(c)),f.google.visualization.events.addListener(g.viewStacked[c],"animationfinish",function(){var d,e,f,h=[],m=g.dataStacked[c],r=m.getNumberOfRows(),p=b(a("#","open-new")).prop("checked");for(d=0;d<r;d++)h.push({label:m.getValue(d,0),link:m.getValue(d,6)});r="http://www.w3.org/1999/xlink";l.find("text").each(function(b,a){f=a.parentNode;var c;if(c="g"===f.tagName.toLowerCase()){a:{c=a.textContent;var d,g=h.length;c=c.replace("\u2026","");for(d=0;d<g;++d)if(h.hasOwnProperty(d)&&0===h[d].label.indexOf(c)){c=d;break a}c=-1}c=-1!==(b=c)}c&&(e=u.createElementNS("http://www.w3.org/2000/svg","a"),e.setAttributeNS(r,"xlink:href",h[b].link),e.setAttributeNS(r,"title",h[b].label),e.setAttribute("target",p?"_blank":"_self"),e.setAttribute("class","site"),e.appendChild(f.removeChild(a)),f.appendChild(e),h.splice(b,1))})}));if(0<(d=l.width())&&"undefined"!==typeof g.dataStacked[c]&&"undefined"!==typeof g.viewStacked[c]){var r=a("range");var m=b.parseJSON(b("."+r).attr("data-"+r));h=g.dataStacked[c];r=40*h.getNumberOfRows();g.viewStacked[c].draw(h,{width:d,height:r+80,allowHtml:!0,isStacked:!0,legend:{position:"top"},chartArea:{top:50,left:90,width:"100%",height:r},hAxis:{minValue:0,maxValue:m[1]},backgroundColor:{fill:"transparent"},animation:{startup:!0,duration:200,easing:"out"}})}},ajaxStacked:function(c,d,h,f){c=Math.max(0,Math.min(4,c));d=5*Math.max(1,Math.min(5,d));p(null,{cmd:"restore-network",which:c,offset:d*h*f,length:d},function(c){var e,f,h,l,p;c=ba(c,d);b(a(".","network")).each(function(a,m){if("undefined"!==typeof c[a]){l=b(m).attr("id");p=g.dataStacked[l];h=Math.min(d,c[a].length);for(e=0;e<h;++e)for(f=1;5>=f;f++)p.setValue(e,f,c[a][e][f]);g.drawStacked(l)}})})}};b(function(){var c=Number(d.tab)||0,e=da(c);b(a(".","inhibit")).on("submit",function(){return!1});switch(c){case 0:var h=a("%","settings");b('[id^="'+a("scan-")+'"]').on("click",function(){var c=b(this),d=c.attr("id"),e=c.parent();p(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=l(c);if("string"===typeof b[c])var d=l(b[c]);else d=l(b[c].code),c='<abbr title="'+l(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("@","validation_mimetype")).on("change",function(c){var d=b(this),n=parseInt(d.val(),10);d.nextAll(a(".","settings-folding")).each(function(a,c){N(b(c),n===a+1||n&&2===a)});return z(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()}),z(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 z(c)}).change();b(a("#","decode")).on("click",function(){var c=b(a("@","signature")),d=c.val();-1===d.search(/,/)?c.val(H(f.atob(d))):c.val(f.btoa(H(d)));return!1});b(a("@","validation_login")).on("change",function(a){var c=b(this);O(c,c,h,!0);return z(a)}).change();b(a("@","validation_admin_2")).on("change",function(){J.zep.admin=!0});p(null,{cmd:"get-actions"},function(c){var e,n=b(a("#","list-admin")),f=u.createElement("li"),h=u.createElement("input"),g=u.createElement("label"),m=u.createElement("dfn"),r=u.createElement("span");for(k in c)if(c.hasOwnProperty(k)){var k=l(k);if(!n.find("#"+(e=a("%",k))).size()){var q=h.cloneNode(!1);q.setAttribute("id",e);q.setAttribute("value",k);q.setAttribute("type","checkbox");var t=f.cloneNode(!1);t.appendChild(q);q=g.cloneNode(!1);q.setAttribute("for",e);q.appendChild(u.createTextNode(k));t.appendChild(q);1&c[k]&&t.appendChild(V(m,r,d.msg[6],"lock"));2&c[k]&&t.appendChild(V(m,r,d.msg[7],"unlock"));n.append(t)}}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 z(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,g,E,ea=l(d.msg[9]),v=l(c.data("target"));b(a("#","find-"+v)).empty();c.next().children(a(".","find-desc")).show();c=b(a("#","list-"+v));c.children("li").each(function(a,c){e.push(b(c).find("input").val())});p("find-"+v,{cmd:"find-"+v},function(m){for(var k in m)m.hasOwnProperty(k)&&(++n,f=l(m[k]),k=l(k),h=b.inArray(k,e),g=a("!","exception_"+v+"_"+k),E="admin"===v?f+"="+k:"/"+f+"/"+k+"/",E='<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="?page=ip-geo-block&tab=4&s='+encodeURIComponent(E)+'" title="'+ea.replace("%s",E)+'" target="_blank"><span></span></a>',0>h?(e.push(k),c.prepend('<li><input id="'+g+'" value="'+k+'" type="checkbox" '+("admin"===v?"/>":"name=ip_geo_block_settings[exception]["+v+"]["+k+"] />")+'<label for="'+g+'">'+k+"</lable>"+E+"</li>")):(g=c.find("#"+g).parent(),g.find("a").length||g.append(E)));b(a("@","exception_"+v)).trigger("change");b(a("#","find-"+v)).append(' <span class="ip-geo-block-found">'+l(d.msg[8].replace("%d",n))+"</span>")});return!1})});b('input[id^="'+a("!","validation_ajax_")+'"]').on("change",function(){R(b(this))}).change();b(a("@","validation_public")).on("change",function(a){S(b(this));return z(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 z(c)}).change();b(a("@","update")).on("click",function(){p("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&&b(a("@",d+"_"+n+"_path")).val(l(e[n].filename));e[n].message&&b(a("#",d+"-"+n)).text(l(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");U("validate");b(a("#","export")).on("click",function(){if("undefined"===typeof JSON)return D(null,d.msg[10]),!1;var c=h,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(H(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,d.msg[10]),!1;var b;(a=a.target.files[0])&&aa(a,function(a){a=JSON.parse(a);b=h+"[signature]";"undefined"!==typeof a[b]&&(a[b]=f.btoa(H(a[b])));p("export-import",{cmd:"validate",data:JSON.stringify(a)},function(a){P(a,!0)})});return!1});b(a("#","import")).on("click",function(){b(a("#","file-dialog")).click();return!1});b(a("#","default")).on("click",function(){y(d.msg[0],function(){p("pre-defined",{cmd:"import-default"},function(a){P(a,!0)})});return!1});b(a("#","preferred")).on("click",function(){y(d.msg[0],function(){p("pre-defined",{cmd:"import-preferred"},function(a){P(a,!1)})});return!1});b(a("@","reset_live")).on("click",function(){p("reset-live",{cmd:"reset-live"});return!1});b(a("@","create_table")).on("click",function(){y(d.msg[1],function(){Q("create-table")});return!1});b(a("@","delete_table")).on("click",function(){y(d.msg[2],function(){Q("delete-table")});return!1});b(a("#","show-info")).on("click",function(){b(a("#","wp-info")).empty();p("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^="'+h+'"]').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));O(c,c,h,!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(H(d)));return!0});break;case 1:T(c);var k=0;b(a("#","sort-slug")).on("click",function(){var a=b(this).closest("ol"),c=a.children("li");(k=!k)?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(){y(d.msg[3],function(){M("statistics",null)});return!1});b(a("@","clear_logs")).on("click",function(){y(d.msg[5],function(){M("logs",null)});return!1});W(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 r={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]}]},q=null,t=null,A=b(a("#","live-loading")),w=null,x=function(){q&&(f.clearTimeout(q),q=null);t&&(A.removeClass(a("live-timer")),f.clearTimeout(t),t=null)},F=function(){x();p("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++)w.row.add(a.data[b]);w.draw(!1)}q=f.setTimeout(F,1E3*d.interval)})},G=function(a,b){x();p(null,{cmd:a||"live-stop",callback:b})},L=function(){G("live-pause",function(){A.addClass(a("live-timer"));t=f.setTimeout(function(){x();b(a("#","live-log-stop")).prop("checked",!0)},1E3*d.timeout)})},C=a(""),X=function(a,c,d){-1!==c[7].indexOf("passed")?b(a).addClass(C+d+"passed"):b(a).addClass(C+d+"blocked")},Y=b(a("#","live-log")),Z=b(a("#","live-update"));b(a("#","validation-logs")).on("animationend",function(){b(this).find('tr[class*="'+C+'new"]').each(function(){var a=b(this);-1!==a.prop("class").indexOf("passed")?a.addClass(C+"passed").removeClass(C+"new-passed"):a.addClass(C+"blocked").removeClass(C+"new-blocked")});return!1});Y.on("change",function(){switch(b('input[name="'+a("live-log")+'"]:checked').val()){case "start":F();break;case "pause":L();break;case "stop":G()}});Z.on("change",function(){var d=Y.closest("tr"),f=Z.prop("checked");e[c][1]=f?"o":"x";B(e);w&&w.clear().destroy();f?(d.show().next().next().next().nextAll().hide(),r.ajaxCMD="live-stop",m.order=[1,"desc"],m.createdRow=function(a,b){X(a,b,"new-")}):(d.hide().next().next().next().nextAll().show(),r.ajaxCMD="restore-logs",m.order=[0,""],m.createdRow=function(a,b){X(a,b,"")});b(a("#","live-log-stop")).trigger("click");w=W(c,r,m);return!1}).trigger("change");U("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(){p(null,{cmd:"gmap-error"},function(a){I(a.page,a.tab)})});var K=b(a("#","map"));"object"===typeof f.google?K.each(function(){b(this).GmapRS()}):K.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");B(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})});p("loading",{cmd:"search",ip:d,which:b(a("@","service")).val()},function(b){var c="",e=l(b.latitude||"0"),g=l(b.longitude||"0"),h=b.latitude||b.longitude?8:2;for(k in b)if(b.hasOwnProperty(k)){var k=l(k);c+='<li><span class="'+a("title")+'">'+k+' : </span><span class="'+a("result")+'">'+l(b[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="'+a("title")+'">IP address : </span><span class="'+a("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});b(a("@","ip_address")).val()&&b(a("@","get_location")).click();break;case 5:T(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;B(e);g.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";B(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();B(e)}),b("ul.wp-submenu>li.wp-first-item").removeClass("current").next().addClass("current")}})})(jQuery,window,document);
admin/js/authenticate.js CHANGED
@@ -1,24 +1,24 @@
1
  /*jslint white: true */
2
  /*!
3
  * Project: WP-ZEP - Zero-day exploit Prevention for wp-admin
4
- * Copyright (c) 2015-2017 tokkonopapa (tokkonopapa@yahoo.com)
5
  * This software is released under the MIT License.
6
  */
7
  (function ($, window, document) {
8
  'use strict';
9
 
10
- var wpzep = {
11
  init: false,
12
  auth: 'ip-geo-block-auth-nonce',
13
- nonce: IP_GEO_BLOCK_AUTH.nonce || '',
14
- sites: IP_GEO_BLOCK_AUTH.sites || []
15
  },
16
 
17
  // regular expression to find target for is_admin()
18
  regexp = new RegExp(
19
- '^(?:' + (IP_GEO_BLOCK_AUTH.home || '') + IP_GEO_BLOCK_AUTH.admin
20
- + '|' + (IP_GEO_BLOCK_AUTH.home || '') + IP_GEO_BLOCK_AUTH.plugins
21
- + '|' + (IP_GEO_BLOCK_AUTH.home || '') + IP_GEO_BLOCK_AUTH.themes
22
  + ')(?:.*\.php|.*\/)?$'
23
  ),
24
 
@@ -55,7 +55,7 @@
55
 
56
  // Check path that should be excluded
57
  function check_ajax(path) {
58
- path = path.replace(IP_GEO_BLOCK_AUTH.home + IP_GEO_BLOCK_AUTH.admin, '');
59
  return ajax_links.hasOwnProperty(path) ? ajax_links[path] : null;
60
  }
61
 
@@ -124,15 +124,15 @@
124
 
125
  return function (url, base) {
126
  var d = document, baseElm, aElm, result;
127
- url = typeof url !== 'undefined' ? url : location.href;
128
  if (null === doc) {
129
  if (typeof base === 'undefined') {
130
- base = location.href; // based on current url
131
  }
132
  try {
133
  result = new URL(url, base); // base must be valid
134
  } catch (e) {
135
- result = new URL(url, location.href);
136
  }
137
  } else {
138
  // use anchor element to resolve url
@@ -201,7 +201,7 @@
201
  // Append the nonce as query strings to the uri
202
  function add_query_nonce(uri, nonce) {
203
  if (typeof uri !== 'object') { // `string` or `undefined`
204
- uri = parse_uri(uri || location.href);
205
  }
206
 
207
  var data = uri.query ? uri.query.split('&') : [],
@@ -229,7 +229,7 @@
229
  // Check uri where the nonce is needed
230
  function is_admin(url) {
231
  // parse uri and get real path
232
- var uri = url || location.pathname; // in case of empty `action` on the form tag
233
  uri = parse_uri(uri.toLowerCase());
234
 
235
  // possibly scheme is `javascript` and path is `void(0);`
@@ -239,17 +239,17 @@
239
 
240
  // external domain (`http://example` or `www.example`)
241
  // https://tools.ietf.org/html/rfc6454#section-4
242
- if (uri.origin !== location.origin) {
243
  return -1; // external
244
  }
245
 
246
  // check if uri includes the target path of zep
247
  uri = regexp.exec(uri.pathname);
248
  if (uri) {
249
- if ((IP_GEO_BLOCK_AUTH.zep.ajax && 0 <= uri[0].indexOf(IP_GEO_BLOCK_AUTH.admin + 'admin-')) ||
250
- (IP_GEO_BLOCK_AUTH.zep.admin && 0 <= uri[0].indexOf(IP_GEO_BLOCK_AUTH.admin )) ||
251
- (IP_GEO_BLOCK_AUTH.zep.plugins && 0 <= uri[0].indexOf(IP_GEO_BLOCK_AUTH.plugins )) ||
252
- (IP_GEO_BLOCK_AUTH.zep.themes && 0 <= uri[0].indexOf(IP_GEO_BLOCK_AUTH.themes ))) {
253
  return 1; // internal for admin
254
  }
255
  }
@@ -260,7 +260,7 @@
260
 
261
  // Check if current page is admin area and the target of wp-zep
262
  function is_backend_nonce() {
263
- return (is_admin(location.pathname) === 1 || location.search.indexOf(wpzep.auth) >= 0);
264
  }
265
 
266
  // Redirect if current page is admin area and the target of wp-zep
@@ -291,7 +291,7 @@
291
  */
292
  // Embed a nonce before an Ajax request is sent
293
  // $(document).ajaxSend(function (event, jqxhr, settings) {
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)
@@ -312,7 +312,7 @@
312
  settings.url = add_query_nonce(uri, wpzep.nonce);
313
  } else {
314
  data = settings.data ? settings.data.split('&') : [];
315
- callback = check_ajax(location.pathname);
316
  if (callback) {
317
  data = callback(data);
318
  }
@@ -427,7 +427,7 @@
427
  }
428
  });
429
 
430
- elem.onFirst('submit', 'form', function (event) {
431
  var $this = $(this),
432
  action = $this.attr('action'); // possibly 'undefined'
433
 
@@ -441,7 +441,7 @@
441
  /*--------------------------------
442
  * Something after document ready
443
  *--------------------------------*/
444
- function attach_ready(stat) {
445
  if (!wpzep.init) {
446
  wpzep.init = true;
447
 
@@ -454,7 +454,7 @@
454
  });
455
  }
456
 
457
- $('img').each(function (index) {
458
  var src = $(this).attr('src');
459
 
460
  // if admin area
@@ -477,7 +477,7 @@
477
  }
478
  }
479
 
480
- $(window).on('error', function (event) { // event.originalEvent.message
481
  attach_ready(false); // fallback on error
482
  });
483
 
1
  /*jslint white: true */
2
  /*!
3
  * Project: WP-ZEP - Zero-day exploit Prevention for wp-admin
4
+ * Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
5
  * This software is released under the MIT License.
6
  */
7
  (function ($, window, document) {
8
  'use strict';
9
 
10
+ var auth = IP_GEO_BLOCK_AUTH, wpzep = {
11
  init: false,
12
  auth: 'ip-geo-block-auth-nonce',
13
+ nonce: auth.nonce || '',
14
+ sites: auth.sites || []
15
  },
16
 
17
  // regular expression to find target for is_admin()
18
  regexp = new RegExp(
19
+ '^(?:' + (auth.home || '') + auth.admin
20
+ + '|' + (auth.home || '') + auth.plugins
21
+ + '|' + (auth.home || '') + auth.themes
22
  + ')(?:.*\.php|.*\/)?$'
23
  ),
24
 
55
 
56
  // Check path that should be excluded
57
  function check_ajax(path) {
58
+ path = path.replace(auth.home + auth.admin, '');
59
  return ajax_links.hasOwnProperty(path) ? ajax_links[path] : null;
60
  }
61
 
124
 
125
  return function (url, base) {
126
  var d = document, baseElm, aElm, result;
127
+ url = typeof url !== 'undefined' ? url : window.location.href;
128
  if (null === doc) {
129
  if (typeof base === 'undefined') {
130
+ base = window.location.href; // based on current url
131
  }
132
  try {
133
  result = new URL(url, base); // base must be valid
134
  } catch (e) {
135
+ result = new URL(url, window.location.href);
136
  }
137
  } else {
138
  // use anchor element to resolve url
201
  // Append the nonce as query strings to the uri
202
  function add_query_nonce(uri, nonce) {
203
  if (typeof uri !== 'object') { // `string` or `undefined`
204
+ uri = parse_uri(uri || window.location.href);
205
  }
206
 
207
  var data = uri.query ? uri.query.split('&') : [],
229
  // Check uri where the nonce is needed
230
  function is_admin(url) {
231
  // parse uri and get real path
232
+ var uri = url || window.location.pathname; // in case of empty `action` on the form tag
233
  uri = parse_uri(uri.toLowerCase());
234
 
235
  // possibly scheme is `javascript` and path is `void(0);`
239
 
240
  // external domain (`http://example` or `www.example`)
241
  // https://tools.ietf.org/html/rfc6454#section-4
242
+ if (uri.origin !== window.location.origin) {
243
  return -1; // external
244
  }
245
 
246
  // check if uri includes the target path of zep
247
  uri = regexp.exec(uri.pathname);
248
  if (uri) {
249
+ if ((auth.zep.ajax && 0 <= uri[0].indexOf(auth.admin + 'admin-')) ||
250
+ (auth.zep.admin && 0 <= uri[0].indexOf(auth.admin )) ||
251
+ (auth.zep.plugins && 0 <= uri[0].indexOf(auth.plugins )) ||
252
+ (auth.zep.themes && 0 <= uri[0].indexOf(auth.themes ))) {
253
  return 1; // internal for admin
254
  }
255
  }
260
 
261
  // Check if current page is admin area and the target of wp-zep
262
  function is_backend_nonce() {
263
+ return (is_admin(window.location.pathname) === 1 || window.location.search.indexOf(wpzep.auth) >= 0);
264
  }
265
 
266
  // Redirect if current page is admin area and the target of wp-zep
291
  */
292
  // Embed a nonce before an Ajax request is sent
293
  // $(document).ajaxSend(function (event, jqxhr, settings) {
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)
312
  settings.url = add_query_nonce(uri, wpzep.nonce);
313
  } else {
314
  data = settings.data ? settings.data.split('&') : [];
315
+ callback = check_ajax(window.location.pathname);
316
  if (callback) {
317
  data = callback(data);
318
  }
427
  }
428
  });
429
 
430
+ elem.onFirst('submit', 'form', function (/*event*/) {
431
  var $this = $(this),
432
  action = $this.attr('action'); // possibly 'undefined'
433
 
441
  /*--------------------------------
442
  * Something after document ready
443
  *--------------------------------*/
444
+ function attach_ready(/*stat*/) {
445
  if (!wpzep.init) {
446
  wpzep.init = true;
447
 
454
  });
455
  }
456
 
457
+ $('img').each(function (/*index*/) {
458
  var src = $(this).attr('src');
459
 
460
  // if admin area
477
  }
478
  }
479
 
480
+ $(window).on('error', function (/*event*/) { // event.originalEvent.message
481
  attach_ready(false); // fallback on error
482
  });
483
 
admin/js/authenticate.min.js CHANGED
@@ -1,6 +1,6 @@
1
  /*
2
  Project: WP-ZEP - Zero-day exploit Prevention for wp-admin
3
- Copyright (c) 2015-2017 tokkonopapa (tokkonopapa@yahoo.com)
4
  This software is released under the MIT License.
5
  */
6
- (function(g,h,n){function x(a){var b=n.createElement("div");b.appendChild(n.createTextNode(a));a=b.innerHTML.replace(/["']/g,function(a){return{'"':"&quot;","'":"&#39;"}[a]});b="";return a}function p(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 k(a,b){"object"!==typeof a&&(a=p(a||location.href));for(var e=a.query?a.query.split("&"):[],d=e.length;0<d--;)if(0===e[d].indexOf(f.auth)){e.splice(d,1);break}e.push(f.auth+"="+encodeURIComponent(b));a.query=e.join("&");return(a.scheme?a.scheme+":":"")+(a.relative+a.path)+(a.query?"?"+a.query:"")+(a.fragment?"#"+a.fragment:"")}function q(a){return(!a.scheme||/^https?$/.test(a.scheme))&&(a.path||a.query)}function l(a){var b=a||location.pathname;b=p(b.toLowerCase());if(q(b)){b=y(a);if(b.origin!==location.origin)return-1;if((b=z.exec(b.pathname))&&(IP_GEO_BLOCK_AUTH.zep.ajax&&0<=b[0].indexOf(IP_GEO_BLOCK_AUTH.admin+"admin-")||IP_GEO_BLOCK_AUTH.zep.admin&&0<=b[0].indexOf(IP_GEO_BLOCK_AUTH.admin)||IP_GEO_BLOCK_AUTH.zep.plugins&&0<=b[0].indexOf(IP_GEO_BLOCK_AUTH.plugins)||IP_GEO_BLOCK_AUTH.zep.themes&&0<=b[0].indexOf(IP_GEO_BLOCK_AUTH.themes)))return 1}return 0}function r(){return 1===l(location.pathname)||0<=location.search.indexOf(f.auth)}function t(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 u(a){if(!f.init&&(f.init=!0,r()&&g("a").each(function(){this.hasAttribute("onClick")||-1!==l(this.getAttribute("href"))||this.setAttribute("onClick","javascript:return false")}),g("img").each(function(a){a=g(this).attr("src");1===l(a)&&g(this).attr("src",k(a,f.nonce))}),"undefined"!==typeof h._wpRevisionsSettings)){var b=h._wpRevisionsSettings.revisionData,e=b.length;for(a=0;a<e;++a)-1===b[a].restoreUrl.indexOf(f.auth)&&(h._wpRevisionsSettings.revisionData[a].restoreUrl=k(b[a].restoreUrl,f.nonce))}}var f={init:!1,auth:"ip-geo-block-auth-nonce",nonce:IP_GEO_BLOCK_AUTH.nonce||"",sites:IP_GEO_BLOCK_AUTH.sites||[]},z=new RegExp("^(?:"+(IP_GEO_BLOCK_AUTH.home||"")+IP_GEO_BLOCK_AUTH.admin+"|"+(IP_GEO_BLOCK_AUTH.home||"")+IP_GEO_BLOCK_AUTH.plugins+"|"+(IP_GEO_BLOCK_AUTH.home||"")+IP_GEO_BLOCK_AUTH.themes+")(?:.*.php|.*/)?$"),v=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},w={"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":v,"network/theme-install.php":v},y=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=n.implementation.createHTMLDocument("")}}return function(b,e){var d=n;b="undefined"!==typeof b?b:location.href;if(null===a){"undefined"===typeof e&&(e=location.href);try{var c=new URL(b,e)}catch(m){c=new URL(b,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,b,e){1!==l(a.url)||a.url.match(/async-upload\.php$/)||("undefined"!==typeof h.FormData&&a.data instanceof FormData?a.data.append(f.auth,f.nonce):(b=p(a.url),"undefined"===typeof a.data||b.query?a.url=k(b,f.nonce):(b=a.data?a.data.split("&"):[],e=location.pathname,e=e.replace(IP_GEO_BLOCK_AUTH.home+IP_GEO_BLOCK_AUTH.admin,""),(e=w.hasOwnProperty(e)?w[e]:null)&&(b=e(b)),b.push(f.auth+"="+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)&&t(d,e,c);else"string"===typeof a&&t(d,a,c);return d});g(h).on("error",function(a){u(!1)});g(function(){u(!0)});(function(){var a=g(n);a.onFirst("click contextmenu","a",function(a){var b=g(this),d=b.attr("href"),c=b.attr("rel"),m=q(p(d))?l(d):0;if("click"===a.type)if(1===m)b.attr("href",k(d,!c||0>c.indexOf("nofollow")?f.nonce:"nofollow"));else if(-1===m&&r())if("_self"===b.attr("target"))for(a=d,d=f.sites.length,b=0;b<d;++b)a&&0<=a.indexOf(f.sites[b])&&f.nonce&&(h.location=k(a,f.nonce));else return d=x(decodeURIComponent(this.href)),d=d.split(";",2).shift(),m=h.open(),m.document.write('<!DOCTYPE html><html><head><meta name="referrer" content="never" /><meta name="referrer" content="no-referrer" /><meta http-equiv="refresh" content="0; url='+d+'" />'+(g("body").hasClass("webview")?'<script>window.location.replace("'+d+'")\x3c/script>':"")+"</head></html>"),m.document.close(),a.stopImmediatePropagation(),!1});a.onFirst("submit","form",function(a){a=g(this);var b=a.attr("action");1===l(b)&&a.attr("action",k(b,f.nonce))})})()})(jQuery,window,document);
1
  /*
2
  Project: WP-ZEP - Zero-day exploit Prevention for wp-admin
3
+ Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
4
  This software is released under the MIT License.
5
  */
6
+ (function(h,k,n){function x(a){var b=n.createElement("div");b.appendChild(n.createTextNode(a));a=b.innerHTML.replace(/["']/g,function(a){return{'"':"&quot;","'":"&#39;"}[a]});b="";return a}function p(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 l(a,b){"object"!==typeof a&&(a=p(a||k.location.href));for(var e=a.query?a.query.split("&"):[],d=e.length;0<d--;)if(0===e[d].indexOf(g.auth)){e.splice(d,1);break}e.push(g.auth+"="+encodeURIComponent(b));a.query=e.join("&");return(a.scheme?a.scheme+":":"")+(a.relative+a.path)+(a.query?"?"+a.query:"")+(a.fragment?"#"+a.fragment:"")}function q(a){return(!a.scheme||/^https?$/.test(a.scheme))&&(a.path||a.query)}function m(a){var b=a||k.location.pathname;b=p(b.toLowerCase());if(q(b)){b=y(a);if(b.origin!==k.location.origin)return-1;if((b=z.exec(b.pathname))&&(f.zep.ajax&&0<=b[0].indexOf(f.admin+"admin-")||f.zep.admin&&0<=b[0].indexOf(f.admin)||f.zep.plugins&&0<=b[0].indexOf(f.plugins)||f.zep.themes&&0<=b[0].indexOf(f.themes)))return 1}return 0}function r(){return 1===m(k.location.pathname)||0<=k.location.search.indexOf(g.auth)}function t(a,b,e){var d=b.split(/\s+/);a.each(function(a){for(a=0;a<d.length;++a){var b=h.trim(d[a]).match(/[^\.]+/i)[0],c=h(this),g=b;b=e;c=h._data(c[0]).events[g];g=b?c.splice(c.delegateCount-1,1)[0]:c.pop();c.splice(b?0:c.delegateCount||0,0,g)}})}function u(){if(!g.init&&(g.init=!0,r()&&h("a").each(function(){this.hasAttribute("onClick")||-1!==m(this.getAttribute("href"))||this.setAttribute("onClick","javascript:return false")}),h("img").each(function(){var a=h(this).attr("src");1===m(a)&&h(this).attr("src",l(a,g.nonce))}),"undefined"!==typeof k._wpRevisionsSettings)){var a,b=k._wpRevisionsSettings.revisionData,e=b.length;for(a=0;a<e;++a)-1===b[a].restoreUrl.indexOf(g.auth)&&(k._wpRevisionsSettings.revisionData[a].restoreUrl=l(b[a].restoreUrl,g.nonce))}}var f=IP_GEO_BLOCK_AUTH,g={init:!1,auth:"ip-geo-block-auth-nonce",nonce:f.nonce||"",sites:f.sites||[]},z=new RegExp("^(?:"+(f.home||"")+f.admin+"|"+(f.home||"")+f.plugins+"|"+(f.home||"")+f.themes+")(?:.*.php|.*/)?$"),v=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},w={"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":v,"network/theme-install.php":v},y=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=n.implementation.createHTMLDocument("")}}return function(b,e){var d=n;b="undefined"!==typeof b?b:k.location.href;if(null===a){"undefined"===typeof e&&(e=k.location.href);try{var c=new URL(b,e)}catch(A){c=new URL(b,k.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}}();h.ajaxPrefilter(function(a){if(1===m(a.url)&&!a.url.match(/async-upload\.php$/))if("undefined"!==typeof k.FormData&&a.data instanceof FormData)a.data.append(g.auth,g.nonce);else{var b=p(a.url);if("undefined"===typeof a.data||b.query)a.url=l(b,g.nonce);else{b=a.data?a.data.split("&"):[];var e=k.location.pathname;e=e.replace(f.home+f.admin,"");(e=w.hasOwnProperty(e)?w[e]:null)&&(b=e(b));b.push(g.auth+"="+encodeURIComponent(g.nonce));a.data=b.join("&")}}});"undefined"===typeof h.fn.onFirst&&(h.fn.onFirst=function(a,b){var e,d=h(this),c="string"===typeof b;h.fn.on.apply(d,arguments);if("object"===typeof a)for(e in a)a.hasOwnProperty(e)&&t(d,e,c);else"string"===typeof a&&t(d,a,c);return d});h(k).on("error",function(){u(!1)});h(function(){u(!0)});(function(){var a=h(n);a.onFirst("click contextmenu","a",function(a){var b=h(this),d=b.attr("href"),c=b.attr("rel"),f=q(p(d))?m(d):0;if("click"===a.type)if(1===f)b.attr("href",l(d,!c||0>c.indexOf("nofollow")?g.nonce:"nofollow"));else if(-1===f&&r())if("_self"===b.attr("target"))for(a=d,d=g.sites.length,b=0;b<d;++b)a&&0<=a.indexOf(g.sites[b])&&g.nonce&&(k.location=l(a,g.nonce));else return d=x(decodeURIComponent(this.href)),d=d.split(";",2).shift(),f=k.open(),f.document.write('<!DOCTYPE html><html><head><meta name="referrer" content="never" /><meta name="referrer" content="no-referrer" /><meta http-equiv="refresh" content="0; url='+d+'" />'+(h("body").hasClass("webview")?'<script>window.location.replace("'+d+'")\x3c/script>':"")+"</head></html>"),f.document.close(),a.stopImmediatePropagation(),!1});a.onFirst("submit","form",function(){var a=h(this),e=a.attr("action");1===m(e)&&a.attr("action",l(e,g.nonce))})})()})(jQuery,window,document);
admin/js/gmap.js CHANGED
@@ -2,7 +2,7 @@
2
  * Project: GmapRS - google map for WordPress IP Geo Block
3
  * Description: A really simple google map plugin based on jQuery-boilerplate.
4
  * Version: 0.2.4
5
- * Copyright (c) 2013-2017 tokkonopapa (tokkonopapa@yahoo.com)
6
  * This software is released under the MIT License.
7
  */
8
  // https://developers.google.com/maps/documentation/javascript/events?hl=en#auth-errors
2
  * Project: GmapRS - google map for WordPress IP Geo Block
3
  * Description: A really simple google map plugin based on jQuery-boilerplate.
4
  * Version: 0.2.4
5
+ * Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
6
  * This software is released under the MIT License.
7
  */
8
  // https://developers.google.com/maps/documentation/javascript/events?hl=en#auth-errors
admin/js/gmap.min.js CHANGED
@@ -2,7 +2,7 @@
2
  Project: GmapRS - google map for WordPress IP Geo Block
3
  Description: A really simple google map plugin based on jQuery-boilerplate.
4
  Version: 0.2.4
5
- Copyright (c) 2013-2017 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(d){var f={zoom:2,latitude:0,longitude:0},e=google.maps,g=function(a){this.o=d.extend({},f);this.q=[]};g.prototype={init:function(a){d.extend(this.o,a);this.c=new e.LatLng(this.o.latitude,this.o.longitude);this.m=new e.Map(this.e.get(0),{zoom:this.o.zoom,center:this.c,mapTypeId:e.MapTypeId.ROADMAP})},destroy:function(){this.deleteMarkers();this.e.data("plugin_GmapRS",null)},setCenter:function(){if(2<=arguments.length){var a=new e.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,c){var b=this.q[a];b&&b.w&&(!1===c?b.w.close():b.w.open(this.m,b.m))},addMarker:function(a){var c,b,d;c=new e.LatLng(a.latitude||this.o.latitude,a.longitude||this.o.longitude);b=new e.Marker({position:c,map:this.m,title:a.title||""});a.content&&(d=new e.InfoWindow({content:a.content}),e.event.addListener(b,"click",function(){d.open(b.getMap(),b)}));this.q.push({p:c,w:d,m:b});this.m.setCenter(c);this.m.setZoom(a.zoom);a.show&&this.showMarker(this.q.length-1);return this.e},deleteMarkers:function(){var a,c;for(a in this.q)this.q.hasOwnProperty(a)&&(c=this.q[a],c.m.setMap(null));this.q.length=0;return this.e}};d.fn.GmapRS=function(a){var c,b;this.data("plugin_GmapRS")instanceof g||this.data("plugin_GmapRS",new g(this));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])return c=Array.prototype.slice.call(arguments,1),b[a].apply(b,c);d.error("Method "+a+" does not exist.GmapRS")}}})})(jQuery);
2
  Project: GmapRS - google map for WordPress IP Geo Block
3
  Description: A really simple google map plugin based on jQuery-boilerplate.
4
  Version: 0.2.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(d){var f={zoom:2,latitude:0,longitude:0},e=google.maps,g=function(a){this.o=d.extend({},f);this.q=[]};g.prototype={init:function(a){d.extend(this.o,a);this.c=new e.LatLng(this.o.latitude,this.o.longitude);this.m=new e.Map(this.e.get(0),{zoom:this.o.zoom,center:this.c,mapTypeId:e.MapTypeId.ROADMAP})},destroy:function(){this.deleteMarkers();this.e.data("plugin_GmapRS",null)},setCenter:function(){if(2<=arguments.length){var a=new e.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,c){var b=this.q[a];b&&b.w&&(!1===c?b.w.close():b.w.open(this.m,b.m))},addMarker:function(a){var c,b,d;c=new e.LatLng(a.latitude||this.o.latitude,a.longitude||this.o.longitude);b=new e.Marker({position:c,map:this.m,title:a.title||""});a.content&&(d=new e.InfoWindow({content:a.content}),e.event.addListener(b,"click",function(){d.open(b.getMap(),b)}));this.q.push({p:c,w:d,m:b});this.m.setCenter(c);this.m.setZoom(a.zoom);a.show&&this.showMarker(this.q.length-1);return this.e},deleteMarkers:function(){var a,c;for(a in this.q)this.q.hasOwnProperty(a)&&(c=this.q[a],c.m.setMap(null));this.q.length=0;return this.e}};d.fn.GmapRS=function(a){var c,b;this.data("plugin_GmapRS")instanceof g||this.data("plugin_GmapRS",new g(this));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])return c=Array.prototype.slice.call(arguments,1),b[a].apply(b,c);d.error("Method "+a+" does not exist.GmapRS")}}})})(jQuery);
classes/class-ip-geo-block-actv.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2017 tokkonopapa
10
  */
11
 
12
  // Stuff for resources
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  // Stuff for resources
classes/class-ip-geo-block-apis.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  /**
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  /**
classes/class-ip-geo-block-cron.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Cron {
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Cron {
classes/class-ip-geo-block-file.php CHANGED
@@ -7,7 +7,7 @@
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
  * @link https://codex.wordpress.org/Filesystem_API
10
- * @copyright 2017 tokkonopapa
11
  */
12
 
13
  class IP_Geo_Block_FS {
@@ -81,11 +81,9 @@ if (0) {
81
 
82
  // Get absolute path.
83
  private function absolute_path( $file ) {
84
- if ( 'direct' !== self::$method ) {
85
- global $wp_filesystem;
86
- $path = str_replace( ABSPATH, $wp_filesystem->abspath(), dirname( $file ) );
87
- $file = $this->slashit( $path ) . basename( $file );
88
- }
89
 
90
  return $file;
91
  }
@@ -241,7 +239,7 @@ if (0) {
241
  return FALSE;
242
 
243
  if ( 'direct' === self::$method )
244
- return @file_put_contents( $file, $contents, LOCK_EX );
245
  else
246
  return $wp_filesystem->put_contents( $this->absolute_path( $file ), $contents, $mode );
247
  }
@@ -260,7 +258,7 @@ if (0) {
260
  return FALSE;
261
 
262
  if ( 'direct' === self::$method )
263
- return @file_get_contents( $file );
264
  else
265
  return $wp_filesystem->get_contents( $this->absolute_path( $file ) );
266
  }
@@ -280,7 +278,7 @@ if (0) {
280
  @ini_set( 'auto_detect_line_endings', TRUE );
281
 
282
  if ( 'direct' === self::$method )
283
- return @file( $file, FILE_IGNORE_NEW_LINES );
284
 
285
  $file = $wp_filesystem->get_contents_array( $this->absolute_path( $file ) );
286
  return FALSE !== $file ? array_map( 'rtrim', $file ) : FALSE;
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
  * @link https://codex.wordpress.org/Filesystem_API
10
+ * @copyright 2013-2018 tokkonopapa
11
  */
12
 
13
  class IP_Geo_Block_FS {
81
 
82
  // Get absolute path.
83
  private function absolute_path( $file ) {
84
+ global $wp_filesystem;
85
+ $path = str_replace( ABSPATH, $wp_filesystem->abspath(), dirname( $file ) );
86
+ $file = $this->slashit( $path ) . basename( $file );
 
 
87
 
88
  return $file;
89
  }
239
  return FALSE;
240
 
241
  if ( 'direct' === self::$method )
242
+ return @file_put_contents( $this->absolute_path( $file ), $contents, LOCK_EX );
243
  else
244
  return $wp_filesystem->put_contents( $this->absolute_path( $file ), $contents, $mode );
245
  }
258
  return FALSE;
259
 
260
  if ( 'direct' === self::$method )
261
+ return @file_get_contents( $this->absolute_path( $file ) );
262
  else
263
  return $wp_filesystem->get_contents( $this->absolute_path( $file ) );
264
  }
278
  @ini_set( 'auto_detect_line_endings', TRUE );
279
 
280
  if ( 'direct' === self::$method )
281
+ return @file( $this->absolute_path( $file ), FILE_IGNORE_NEW_LINES );
282
 
283
  $file = $wp_filesystem->get_contents_array( $this->absolute_path( $file ) );
284
  return FALSE !== $file ? array_map( 'rtrim', $file ) : FALSE;
classes/class-ip-geo-block-lkup.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2016-2017 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Lkup {
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2016-2018 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Lkup {
classes/class-ip-geo-block-load.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2016-2017 tokkonopapa
10
  */
11
 
12
  /**
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2016-2018 tokkonopapa
10
  */
11
 
12
  /**
classes/class-ip-geo-block-logs.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  // varchar can not be exceeded over 255 before MySQL-5.0.3.
@@ -183,7 +183,7 @@ class IP_Geo_Block_Logs {
183
  global $wpdb;
184
  $table = $wpdb->prefix . self::TABLE_LOGS;
185
 
186
- if ( $hook )
187
  $sql = $wpdb->prepare(
188
  "DELETE FROM `$table` WHERE `hook` = '%s'", $hook
189
  ) and $wpdb->query( $sql ) or self::error( __LINE__ );
@@ -693,10 +693,10 @@ class IP_Geo_Block_Logs {
693
 
694
  $sql = "SELECT `hook`, `time`, `ip`, `code`, `result`, `asn`, `method`, `user_agent`, `headers`, `data` FROM `$table`";
695
 
696
- if ( ! $hook )
697
- $sql .= " ORDER BY `time` DESC"; // " ORDER BY `hook`, `time` DESC";
698
- else
699
  $sql .= $wpdb->prepare( " WHERE `hook` = '%s' ORDER BY `time` DESC", $hook );
 
 
700
 
701
  return $sql ? $wpdb->get_results( $sql, ARRAY_N ) : array();
702
  }
@@ -847,8 +847,10 @@ class IP_Geo_Block_Logs {
847
  $result = TRUE;
848
 
849
  foreach ( $entry as $ip ) {
850
- $sql = $wpdb->prepare( "DELETE FROM `$table` WHERE `ip` = %s", $ip )
851
- and $result &= ( FALSE !== $wpdb->query( $sql ) ) or self::error( __LINE__ );
 
 
852
  }
853
 
854
  return $result;
@@ -869,6 +871,24 @@ class IP_Geo_Block_Logs {
869
  return $result;
870
  }
871
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
872
  /**
873
  * SQL Error handling
874
  *
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  // varchar can not be exceeded over 255 before MySQL-5.0.3.
183
  global $wpdb;
184
  $table = $wpdb->prefix . self::TABLE_LOGS;
185
 
186
+ if ( in_array( $hook, array( 'comment', 'login', 'admin', 'xmlrpc', 'public' ), TRUE ) )
187
  $sql = $wpdb->prepare(
188
  "DELETE FROM `$table` WHERE `hook` = '%s'", $hook
189
  ) and $wpdb->query( $sql ) or self::error( __LINE__ );
693
 
694
  $sql = "SELECT `hook`, `time`, `ip`, `code`, `result`, `asn`, `method`, `user_agent`, `headers`, `data` FROM `$table`";
695
 
696
+ if ( in_array( $hook, array( 'comment', 'login', 'admin', 'xmlrpc', 'public' ), TRUE ) )
 
 
697
  $sql .= $wpdb->prepare( " WHERE `hook` = '%s' ORDER BY `time` DESC", $hook );
698
+ else
699
+ $sql .= " ORDER BY `time` DESC"; // " ORDER BY `hook`, `time` DESC";
700
 
701
  return $sql ? $wpdb->get_results( $sql, ARRAY_N ) : array();
702
  }
847
  $result = TRUE;
848
 
849
  foreach ( $entry as $ip ) {
850
+ if ( filter_var( $ip, FILTER_VALIDATE_IP ) ) {
851
+ $sql = $wpdb->prepare( "DELETE FROM `$table` WHERE `ip` = %s", $ip )
852
+ and $result &= ( FALSE !== $wpdb->query( $sql ) ) or self::error( __LINE__ );
853
+ }
854
  }
855
 
856
  return $result;
871
  return $result;
872
  }
873
 
874
+ /**
875
+ * Search blocked requests
876
+ *
877
+ * @param string $key 'method' or 'data'
878
+ */
879
+ public static function search_blocked_logs( $key, $search ) {
880
+ global $wpdb;
881
+ $table = $wpdb->prefix . self::TABLE_LOGS;
882
+
883
+ $result = array();
884
+
885
+ $sql = $wpdb->prepare(
886
+ "SELECT * FROM `$table` WHERE `result` != 'passed' AND `" . $key . "` LIKE '%%%s%%'", $search
887
+ ) and $result = $wpdb->get_results( $sql, ARRAY_A ) or self::error( __LINE__ );
888
+
889
+ return $result;
890
+ }
891
+
892
  /**
893
  * SQL Error handling
894
  *
classes/class-ip-geo-block-opts.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Opts {
@@ -65,7 +65,7 @@ class IP_Geo_Block_Opts {
65
  'mimetype' => 0, // 0:disable, 1:white_list, 2:black_list
66
  ),
67
  'update' => array( // Updating IP address DB
68
- 'auto' => TRUE, // Auto updating of DB file
69
  'retry' => 0, // Number of retry to download
70
  'cycle' => 30, // Updating cycle (days)
71
  ),
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Opts {
65
  'mimetype' => 0, // 0:disable, 1:white_list, 2:black_list
66
  ),
67
  'update' => array( // Updating IP address DB
68
+ 'auto' => TRUE, // Auto updating of DB files
69
  'retry' => 0, // Number of retry to download
70
  'cycle' => 30, // Updating cycle (days)
71
  ),
classes/class-ip-geo-block-util.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Util {
@@ -66,7 +66,7 @@ class IP_Geo_Block_Util {
66
  *
67
  */
68
  public static function multiexplode ( $delimiters, $string ) {
69
- return array_filter( explode( $delimiters[0], str_replace( $delimiters, $delimiters[0], $string ) ) );
70
  }
71
 
72
  /**
@@ -332,10 +332,10 @@ class IP_Geo_Block_Util {
332
  * WP alternative function for mu-plugins
333
  *
334
  * Get the time-dependent variable for nonce creation.
335
- * @source wp-includes/pluggable.php
336
  */
337
  private static function nonce_tick() {
338
- return ceil( time() / ( DAY_IN_SECONDS / 2 ) );
339
  }
340
 
341
  /**
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block_Util {
66
  *
67
  */
68
  public static function multiexplode ( $delimiters, $string ) {
69
+ return is_array( $string ) ? $string : array_filter( explode( $delimiters[0], str_replace( $delimiters, $delimiters[0], $string ) ) );
70
  }
71
 
72
  /**
332
  * WP alternative function for mu-plugins
333
  *
334
  * Get the time-dependent variable for nonce creation.
335
+ * @source wp_nonce_tick() in wp-includes/pluggable.php
336
  */
337
  private static function nonce_tick() {
338
+ return ceil( time() / ( apply_filters( 'nonce_life', DAY_IN_SECONDS ) / 2 ) );
339
  }
340
 
341
  /**
classes/class-ip-geo-block.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block {
@@ -15,7 +15,7 @@ class IP_Geo_Block {
15
  * Unique identifier for this plugin.
16
  *
17
  */
18
- const VERSION = '3.0.5';
19
  const GEOAPI_NAME = 'ip-geo-api';
20
  const PLUGIN_NAME = 'ip-geo-block';
21
  const OPTION_NAME = 'ip_geo_block_settings';
@@ -788,16 +788,10 @@ class IP_Geo_Block {
788
  /**
789
  * Verify specific ip addresses with CIDR.
790
  *
 
 
791
  */
792
- public function check_ips_white( $validate, $settings ) {
793
- return $this->check_ips( $validate, $settings['extra_ips']['white_list'] ) ? $validate + array( 'result' => 'passed' ) : $validate;
794
- }
795
-
796
- public function check_ips_black( $validate, $settings ) {
797
- return $this->check_ips( $validate, $settings['extra_ips']['black_list'] ) ? $validate + array( 'result' => 'extra' ) : $validate;
798
- }
799
-
800
- private function check_ips( $validate, $ips ) {
801
  if ( filter_var( $ip = $validate['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
802
  require_once IP_GEO_BLOCK_PATH . 'includes/Net/IPv4.php';
803
 
@@ -825,6 +819,14 @@ class IP_Geo_Block {
825
  return FALSE;
826
  }
827
 
 
 
 
 
 
 
 
 
828
  /**
829
  * Validate on public facing pages.
830
  *
@@ -858,7 +860,7 @@ class IP_Geo_Block {
858
  add_filter( self::PLUGIN_NAME . '-ip-addr', array( 'IP_Geo_Block_Util', 'get_proxy_ip' ), 20, 1 );
859
 
860
  // validate undesired user agent
861
- add_filter( self::PLUGIN_NAME . '-public', array( $this, 'check_bots' ), 6, 2 );
862
 
863
  // validate country by IP address (block: true, die: false)
864
  $this->validate_ip( 'public', $settings, 1 & $settings['validation']['public'], ! $public['simulate'] );
@@ -892,7 +894,7 @@ class IP_Geo_Block {
892
  return $validate + array( 'result' => 'passed' ); // provide content
893
  }
894
 
895
- public function check_bots( $validate, $settings ) {
896
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
897
 
898
  // mask HOST if DNS lookup is false
@@ -918,32 +920,32 @@ class IP_Geo_Block {
918
 
919
  if ( 'FEED' === $code ) {
920
  if ( $not xor $is_feed )
921
- return $validate + array( 'result' => $which ? 'blocked' : 'passed' );
922
  }
923
 
924
  elseif ( 'HOST' === $code ) {
925
  if ( $not xor $validate['host'] !== $validate['ip'] )
926
- return $validate + array( 'result' => $which ? 'blocked' : 'passed' );
927
  }
928
 
929
  elseif ( 0 === strncmp( 'HOST=', $code, 5 ) ) {
930
  if ( $not xor FALSE !== strpos( $validate['host'], substr( $code, 5 ) ) )
931
- return $validate + array( 'result' => $which ? 'blocked' : 'passed' );
932
  }
933
 
934
  elseif ( 0 === strncmp( 'REF=', $code, 4 ) ) {
935
  if ( $not xor FALSE !== strpos( $referer, substr( $code, 4 ) ) )
936
- return $validate + array( 'result' => $which ? 'blocked' : 'passed' );
937
  }
938
 
939
  elseif ( '*' === $code || 2 === strlen( $code ) ) {
940
  if ( $not xor ( '*' === $code || $validate['code'] === $code ) )
941
- return $validate + array( 'result' => $which ? 'blocked' : 'passed' );
942
  }
943
 
944
  elseif ( preg_match( '!^[a-f\d\.:/]+$!', $code = substr( $pat, strpos( $pat, $code ) ) ) ) {
945
  if ( $not xor $this->check_ips( $validate, $code ) )
946
- return $validate + array( 'result' => $which ? 'blocked' : 'passed' );
947
  }
948
  }
949
  }
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  class IP_Geo_Block {
15
  * Unique identifier for this plugin.
16
  *
17
  */
18
+ const VERSION = '3.0.6.1';
19
  const GEOAPI_NAME = 'ip-geo-api';
20
  const PLUGIN_NAME = 'ip-geo-block';
21
  const OPTION_NAME = 'ip_geo_block_settings';
788
  /**
789
  * Verify specific ip addresses with CIDR.
790
  *
791
+ * @param array $validate `ip`, `auth`, `code`, `asn`, `result`
792
+ * @param array or string $ips the list of IP addresses with CIDR notation
793
  */
794
+ public static function check_ips( $validate, $ips ) {
 
 
 
 
 
 
 
 
795
  if ( filter_var( $ip = $validate['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
796
  require_once IP_GEO_BLOCK_PATH . 'includes/Net/IPv4.php';
797
 
819
  return FALSE;
820
  }
821
 
822
+ public function check_ips_white( $validate, $settings ) {
823
+ return self::check_ips( $validate, $settings['extra_ips']['white_list'] ) ? $validate + array( 'result' => 'passed' ) : $validate;
824
+ }
825
+
826
+ public function check_ips_black( $validate, $settings ) {
827
+ return self::check_ips( $validate, $settings['extra_ips']['black_list'] ) ? $validate + array( 'result' => 'extra' ) : $validate;
828
+ }
829
+
830
  /**
831
  * Validate on public facing pages.
832
  *
860
  add_filter( self::PLUGIN_NAME . '-ip-addr', array( 'IP_Geo_Block_Util', 'get_proxy_ip' ), 20, 1 );
861
 
862
  // validate undesired user agent
863
+ add_filter( self::PLUGIN_NAME . '-public', array( $this, 'check_ua' ), 6, 2 );
864
 
865
  // validate country by IP address (block: true, die: false)
866
  $this->validate_ip( 'public', $settings, 1 & $settings['validation']['public'], ! $public['simulate'] );
894
  return $validate + array( 'result' => 'passed' ); // provide content
895
  }
896
 
897
+ public function check_ua( $validate, $settings ) {
898
  require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
899
 
900
  // mask HOST if DNS lookup is false
920
 
921
  if ( 'FEED' === $code ) {
922
  if ( $not xor $is_feed )
923
+ return $validate + array( 'result' => $which ? 'UAlist' : 'passed' );
924
  }
925
 
926
  elseif ( 'HOST' === $code ) {
927
  if ( $not xor $validate['host'] !== $validate['ip'] )
928
+ return $validate + array( 'result' => $which ? 'UAlist' : 'passed' );
929
  }
930
 
931
  elseif ( 0 === strncmp( 'HOST=', $code, 5 ) ) {
932
  if ( $not xor FALSE !== strpos( $validate['host'], substr( $code, 5 ) ) )
933
+ return $validate + array( 'result' => $which ? 'UAlist' : 'passed' );
934
  }
935
 
936
  elseif ( 0 === strncmp( 'REF=', $code, 4 ) ) {
937
  if ( $not xor FALSE !== strpos( $referer, substr( $code, 4 ) ) )
938
+ return $validate + array( 'result' => $which ? 'UAlist' : 'passed' );
939
  }
940
 
941
  elseif ( '*' === $code || 2 === strlen( $code ) ) {
942
  if ( $not xor ( '*' === $code || $validate['code'] === $code ) )
943
+ return $validate + array( 'result' => $which ? 'UAlist' : 'passed' );
944
  }
945
 
946
  elseif ( preg_match( '!^[a-f\d\.:/]+$!', $code = substr( $pat, strpos( $pat, $code ) ) ) ) {
947
  if ( $not xor $this->check_ips( $validate, $code ) )
948
+ return $validate + array( 'result' => $which ? 'UAlist' : 'passed' );
949
  }
950
  }
951
  }
ip-geo-block.php CHANGED
@@ -8,12 +8,12 @@
8
  * @author tokkonopapa <tokkonopapa@yahoo.com>
9
  * @license GPL-2.0+
10
  * @link http://www.ipgeoblock.com/
11
- * @copyright 2013-2017 tokkonopapa
12
  *
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.5
17
  * Author: tokkonopapa
18
  * Author URI: http://www.ipgeoblock.com/
19
  * Text Domain: ip-geo-block
8
  * @author tokkonopapa <tokkonopapa@yahoo.com>
9
  * @license GPL-2.0+
10
  * @link http://www.ipgeoblock.com/
11
+ * @copyright 2013-2018 tokkonopapa
12
  *
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.6.1
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
@@ -1,11 +1,11 @@
1
- # Copyright (C) 2013-2017 tokkonopapa
2
  # This file is distributed under the same license as the IP Geo Block package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: IP Geo Block 3.0.5\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
7
- "POT-Creation-Date: 2017-11-29 01:33+0900\n"
8
- "PO-Revision-Date: 2017-11-29 01:36+0900\n"
9
  "Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
10
  "Language-Team: \n"
11
  "MIME-Version: 1.0\n"
@@ -30,8 +30,8 @@ msgstr ""
30
  #: classes/class-ip-geo-block-opts.php:409
31
  #: classes/class-ip-geo-block-cron.php:273
32
  #: classes/class-ip-geo-block-cron.php:305
33
- #: admin/class-ip-geo-block-admin.php:1217
34
- #: admin/includes/class-admin-rewrite.php:169
35
  #, php-format
36
  msgid "Unable to write <code>%s</code>. Please check the permission."
37
  msgstr "<code>%s</code> に書き込めません。パーミッションをチェックして下さい。"
@@ -42,7 +42,7 @@ msgstr "データベース・ファイルは最新です。"
42
 
43
  #: classes/class-ip-geo-block-cron.php:268
44
  #: classes/class-ip-geo-block-cron.php:300
45
- #: admin/includes/class-admin-rewrite.php:143
46
  #, php-format
47
  msgid "Unable to read <code>%s</code>. Please check the permission."
48
  msgstr "<code>%s</code> を読み込めません。パーミッションをチェックして下さい。"
@@ -58,7 +58,7 @@ msgid "gz or zip is not supported on your system."
58
  msgstr "gz または zip がサポートされていません。"
59
 
60
  #: classes/class-ip-geo-block-cron.php:334
61
- #: admin/includes/tab-settings.php:1105
62
  #, php-format
63
  msgid "Last update: %s"
64
  msgstr "最終更新:%s"
@@ -112,138 +112,154 @@ msgstr ""
112
  "少なくとも1つ以上の位置情報サービスを選択して下さい。未選択の場合、キャッシュ"
113
  "の有効期限切れと共にロックアウトされます。"
114
 
115
- #: admin/class-ip-geo-block-admin.php:271
116
  msgid "Import settings ?"
117
  msgstr "設定をインポートしますか?"
118
 
119
- #: admin/class-ip-geo-block-admin.php:272
120
  msgid "Create table ?"
121
  msgstr "テーブルを作成しますか?"
122
 
123
- #: admin/class-ip-geo-block-admin.php:273
124
  msgid "Delete table ?"
125
  msgstr "テーブルを削除しますか?"
126
 
127
- #: admin/class-ip-geo-block-admin.php:274
128
  msgid "Clear statistics ?"
129
  msgstr "統計をクリアしますか?"
130
 
131
- #: admin/class-ip-geo-block-admin.php:275
132
  msgid "Clear cache ?"
133
  msgstr "キャッシュをクリアしますか?"
134
 
135
- #: admin/class-ip-geo-block-admin.php:276
136
  msgid "Clear logs ?"
137
  msgstr "ログをクリアしますか?"
138
 
139
- #: admin/class-ip-geo-block-admin.php:277
140
  msgid "ajax for logged-in user"
141
  msgstr "認証済ユーザー用 ajax"
142
 
143
- #: admin/class-ip-geo-block-admin.php:278
144
  msgid "ajax for non logged-in user"
145
  msgstr "未認証ユーザー用 ajax"
146
 
147
- #: admin/class-ip-geo-block-admin.php:279
 
 
 
 
 
 
 
 
 
 
148
  msgid "This feature is available with HTML5 compliant browsers."
149
  msgstr "HTML5準拠のブラウザでのみ機能します。"
150
 
151
- #: admin/class-ip-geo-block-admin.php:280
152
  msgid "The selected row cannot be found in the visible area."
153
  msgstr "可視領域に選択された行が見つかりません。"
154
 
155
- #: admin/class-ip-geo-block-admin.php:284
 
 
 
 
 
 
156
  msgid "No data available in table"
157
  msgstr "テーブルにデータがありません"
158
 
159
- #: admin/class-ip-geo-block-admin.php:285
160
  msgid "No matching records found"
161
  msgstr "一致するレコードがありません"
162
 
163
- #: admin/class-ip-geo-block-admin.php:286
164
  #: admin/includes/tab-geolocation.php:71
165
  msgid "IP address"
166
  msgstr "IPアドレス"
167
 
168
- #: admin/class-ip-geo-block-admin.php:287
169
  msgid "Code"
170
  msgstr "国"
171
 
172
- #: admin/class-ip-geo-block-admin.php:288
173
  msgid "ASN"
174
  msgstr "AS番号"
175
 
176
- #: admin/class-ip-geo-block-admin.php:289
177
  msgid "Host name"
178
  msgstr "ホスト名"
179
 
180
- #: admin/class-ip-geo-block-admin.php:290
181
  msgid "Target"
182
  msgstr "検証対象"
183
 
184
- #: admin/class-ip-geo-block-admin.php:291
185
  msgid "Failure / Total"
186
  msgstr "ログイン失敗/総計"
187
 
188
- #: admin/class-ip-geo-block-admin.php:292
189
  msgid "Elapsed[sec]"
190
  msgstr "経過 [秒]"
191
 
192
- #: admin/class-ip-geo-block-admin.php:293
193
  msgid "Time"
194
  msgstr "日時"
195
 
196
- #: admin/class-ip-geo-block-admin.php:294
197
  msgid "Result"
198
  msgstr "検証結果"
199
 
200
- #: admin/class-ip-geo-block-admin.php:295
201
  msgid "Request"
202
  msgstr "リクエスト"
203
 
204
- #: admin/class-ip-geo-block-admin.php:296
205
  msgid "User agent"
206
  msgstr "ユーザー・エージェント"
207
 
208
- #: admin/class-ip-geo-block-admin.php:297
209
  msgid "HTTP headers"
210
  msgstr "HTTP ヘッダー"
211
 
212
- #: admin/class-ip-geo-block-admin.php:298
213
  msgid "$_POST data"
214
  msgstr "$_POST データ"
215
 
216
- #: admin/class-ip-geo-block-admin.php:315
217
  msgid "Contribute on GitHub"
218
  msgstr "開発に参加"
219
 
220
- #: admin/class-ip-geo-block-admin.php:329
221
- #: admin/class-ip-geo-block-admin.php:437
222
- #: admin/class-ip-geo-block-admin.php:645
223
- #: admin/class-ip-geo-block-admin.php:664
224
  msgid "Settings"
225
  msgstr "設定"
226
 
227
- #: admin/class-ip-geo-block-admin.php:417
228
- #: admin/class-ip-geo-block-admin.php:418
229
- #: admin/class-ip-geo-block-admin.php:428
 
230
  #: admin/class-ip-geo-block-admin.php:429
231
- #: admin/class-ip-geo-block-admin.php:436
232
- #: admin/class-ip-geo-block-admin.php:444
233
  msgid "IP Geo Block"
234
  msgstr "IP Geo Block"
235
 
236
- #: admin/class-ip-geo-block-admin.php:445
237
- #: admin/class-ip-geo-block-admin.php:649
238
- #: admin/class-ip-geo-block-admin.php:665
239
  msgid "Site List"
240
  msgstr "サイト一覧"
241
 
242
- #: admin/class-ip-geo-block-admin.php:474
243
  msgid "You need WordPress 3.7+."
244
  msgstr "WordPress 3.7&thinsp;以上が必要です。"
245
 
246
- #: admin/class-ip-geo-block-admin.php:480
247
  #, php-format
248
  msgid ""
249
  "Now downloading geolocation databases in background. After a little while, "
@@ -254,7 +270,7 @@ msgstr ""
254
  "いた後、あなたの国コードと「<strong>マッチング規則</strong>」を「<a href=\"%s"
255
  "\">検証ルールの設定</a>」で確認して下さい。"
256
 
257
- #: admin/class-ip-geo-block-admin.php:486
258
  #, php-format
259
  msgid ""
260
  "The &#8220;<strong>Matching rule</strong>&#8221; is not set properly. Please "
@@ -263,11 +279,11 @@ msgstr ""
263
  "「<strong>マッチング規則</strong>」が正しく設定されていません。「<a href=\"%s"
264
  "\">検証ルールの設定</a>」を確認して下さい。"
265
 
266
- #: admin/class-ip-geo-block-admin.php:495
267
  msgid "Local database and matching rule have been updated."
268
  msgstr "ローカル・データベースとマッチング規則を更新しました。"
269
 
270
- #: admin/class-ip-geo-block-admin.php:506
271
  msgid ""
272
  "Once you logout, you will be unable to login again because the number of "
273
  "login attempts reaches the limit."
@@ -275,7 +291,7 @@ msgstr ""
275
  "あなたのIPアドレスのログイン試行可能回数がリミットに達したため、ログアウトす"
276
  "ると再びログインする事が出来なくなります。"
277
 
278
- #: admin/class-ip-geo-block-admin.php:508
279
  #, php-format
280
  msgid ""
281
  "Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
@@ -284,7 +300,7 @@ msgstr ""
284
  "<a href=\"%s\">「統計」タブ</a>の \"<strong>キャッシュのクリア</strong>\" を"
285
  "実行し、ロックアウトを回避してください。"
286
 
287
- #: admin/class-ip-geo-block-admin.php:518
288
  msgid ""
289
  "Once you logout, you will be unable to login again because your country code "
290
  "or IP address is in the blacklist."
@@ -292,7 +308,7 @@ msgstr ""
292
  "あなたの国コードまたはIPアドレスがブラックリストに含まれているため、ログアウ"
293
  "トすると再びログインする事が出来なくなります。"
294
 
295
- #: admin/class-ip-geo-block-admin.php:519
296
  msgid ""
297
  "Once you logout, you will be unable to login again because your country code "
298
  "or IP address is not in the whitelist."
@@ -300,12 +316,12 @@ msgstr ""
300
  "あなたの国コードまたはIPアドレスがホワイトリストに含まれていないため、ログア"
301
  "ウトすると再びログインする事が出来なくなります。"
302
 
303
- #: admin/class-ip-geo-block-admin.php:522
304
  #, php-format
305
  msgid "Please check your <a href=\"%s\">Validation rule settings</a>."
306
  msgstr "「<a href=\"%s\">検証ルールの設定</a>」を確認して下さい。"
307
 
308
- #: admin/class-ip-geo-block-admin.php:533
309
  msgid ""
310
  "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php) at &#8220;Validation "
311
  "timing&#8221; is imcompatible with <strong>IP Geo Allow</strong>. Please "
@@ -315,31 +331,31 @@ msgstr ""
315
  "択されていますが、<strong>IP Geo Allow</strong> と互換性がありません。"
316
  "「&#8220;init&#8221; アクション・フック」を選択してください。"
317
 
318
- #: admin/class-ip-geo-block-admin.php:646
319
  msgid "Statistics"
320
  msgstr "統計"
321
 
322
- #: admin/class-ip-geo-block-admin.php:647
323
  msgid "Logs"
324
  msgstr "ログ"
325
 
326
- #: admin/class-ip-geo-block-admin.php:648
327
  msgid "Search"
328
  msgstr "検索"
329
 
330
- #: admin/class-ip-geo-block-admin.php:650
331
  msgid "Attribution"
332
  msgstr "リンク"
333
 
334
- #: admin/class-ip-geo-block-admin.php:676
335
  msgid "Network wide"
336
  msgstr "ネットワーク一括管理"
337
 
338
- #: admin/class-ip-geo-block-admin.php:689
339
  msgid "Toggle all"
340
  msgstr "全てを開閉"
341
 
342
- #: admin/class-ip-geo-block-admin.php:692
343
  msgid ""
344
  "Independent of &#8220;Statistics and Logs settings&#8221;, you can see all "
345
  "the requests validated by this plugin in almost real time."
@@ -347,23 +363,23 @@ msgstr ""
347
  "[統計とログの設定]にかかわらず、このプラグインによる検証結果のすべてを、ほ"
348
  "ぼリアルタイムに表示します。"
349
 
350
- #: admin/class-ip-geo-block-admin.php:692 admin/includes/tab-accesslog.php:37
351
  msgid "Live update"
352
  msgstr "ライブアップデート"
353
 
354
- #: admin/class-ip-geo-block-admin.php:696
355
  msgid "Open a new window on clicking the link in the chart."
356
  msgstr "チャート内のリンクをクリックすると、新しいウィンドウが開きます。"
357
 
358
- #: admin/class-ip-geo-block-admin.php:696
359
  msgid "Open a new window"
360
  msgstr "別窓で開く"
361
 
362
- #: admin/class-ip-geo-block-admin.php:719
363
  msgid "Thanks for providing these great services for free."
364
  msgstr "これらのすばらしいサービスの提供元に、敬意と感謝の意を表します!"
365
 
366
- #: admin/class-ip-geo-block-admin.php:720
367
  msgid ""
368
  "(Most browsers will redirect you to each site <a href=\"http://www."
369
  "ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
@@ -373,19 +389,19 @@ msgstr ""
373
  "html\" title=\"Referer Checker\">参照元を残さずにリンク先にリダイレクトできま"
374
  "す</a>。)"
375
 
376
- #: admin/class-ip-geo-block-admin.php:725
377
  msgid "Back to top"
378
  msgstr "トップに戻る"
379
 
380
- #: admin/class-ip-geo-block-admin.php:822
381
  msgid "Enable"
382
  msgstr "有効"
383
 
384
- #: admin/class-ip-geo-block-admin.php:837
385
  msgid "Select one"
386
  msgstr "何れかを選択"
387
 
388
- #: admin/class-ip-geo-block-admin.php:1247
389
  msgid "Settings saved."
390
  msgstr "設定を保存しました。"
391
 
@@ -393,23 +409,23 @@ msgstr "設定を保存しました。"
393
  msgid "Validation logs"
394
  msgstr "検証のログ"
395
 
396
- #: admin/includes/tab-accesslog.php:52 admin/includes/tab-settings.php:450
397
  msgid "Comment post"
398
  msgstr "コメント投稿"
399
 
400
- #: admin/includes/tab-accesslog.php:53 admin/includes/tab-settings.php:451
401
  msgid "XML-RPC"
402
  msgstr "XML-RPC"
403
 
404
- #: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:452
405
  msgid "Login form"
406
  msgstr "ログイン・フォーム"
407
 
408
- #: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:453
409
  msgid "Admin area"
410
  msgstr "管理領域"
411
 
412
- #: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:455
413
  msgid "Public facing pages"
414
  msgstr "一般公開ページ"
415
 
@@ -467,7 +483,7 @@ msgstr "全てをクリア"
467
  msgid "Export logs"
468
  msgstr "ログをエクスポート"
469
 
470
- #: admin/includes/tab-accesslog.php:150 admin/includes/tab-settings.php:1491
471
  msgid "Export to the local file"
472
  msgstr "ローカル・ファイルへエクスポートする"
473
 
@@ -476,7 +492,7 @@ msgid "Export csv"
476
  msgstr "CSVへエクスポート"
477
 
478
  #: admin/includes/tab-accesslog.php:167 admin/includes/tab-network.php:112
479
- #: admin/includes/tab-statistics.php:396
480
  msgid ""
481
  "[<strong>Record validation logs</strong>] on [<strong>Settings</strong>] tab "
482
  "is [<strong>Disable</strong>]."
@@ -583,11 +599,27 @@ msgstr "(カンマ、改行区切り)"
583
  msgid "Toggle selection"
584
  msgstr "選択を切り替える"
585
 
586
- #: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:763
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
  msgid "Matching rule"
588
  msgstr "マッチング規則"
589
 
590
- #: admin/includes/tab-settings.php:137
591
  msgid ""
592
  "A request from which the country code or IP address is <strong>NOT</strong> "
593
  "in the whitelist will be blocked."
@@ -595,7 +627,7 @@ msgstr ""
595
  "国コードまたはIPアドレスがホワイトリストに<strong>含まれていない</strong>リク"
596
  "エストを遮断します。"
597
 
598
- #: admin/includes/tab-settings.php:138
599
  msgid ""
600
  "A request from which the country code or IP address is in the blacklist will "
601
  "be blocked."
@@ -603,7 +635,7 @@ msgstr ""
603
  "国コードまたはIPアドレスがブラックリストに<strong>含まれている</strong>リクエ"
604
  "ストを遮断します。"
605
 
606
- #: admin/includes/tab-settings.php:184
607
  msgid ""
608
  "<dfn title=\"It enables utilizing &#8220;AS number&#8221; in the &#8220;"
609
  "Whitelist/Blacklist of extra IP addresses&#8221; to specify a group of IP "
@@ -613,13 +645,13 @@ msgstr ""
613
  "ネットワークのグループを代表する「AS番号」の指定を可能にします。\">AS番号を使"
614
  "用可能にする</dfn>"
615
 
616
- #: admin/includes/tab-settings.php:195
617
  #, php-format
618
  msgid ""
619
  "Some useful tools for investigating ASN are introduced in &#8220;%s&#8221;."
620
  msgstr "AS番号の検索に役立つツールを「%s」に紹介しています。"
621
 
622
- #: admin/includes/tab-settings.php:204
623
  msgid ""
624
  "<dfn title=\"e.g. &#8220;192.0.64.0/18&#8221; for Jetpack server, "
625
  "&#8220;69.46.36.0/27&#8221; for WordFence server or &#8220;AS32934&#8221; "
@@ -629,7 +661,7 @@ msgstr ""
629
  "サーバー)、AS32934(Facebook)\">国コードに優先して検証するIPアドレスのホワ"
630
  "イトリスト</dfn>"
631
 
632
- #: admin/includes/tab-settings.php:224
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>"
@@ -637,7 +669,7 @@ msgstr ""
637
  "<dfn title=\"サーバー・レベルのアクセス制御の使用をお勧めします(例:."
638
  "htaccess)。\">国コードに優先して検証するIPアドレスのブラックリスト</dfn>"
639
 
640
- #: admin/includes/tab-settings.php:245
641
  msgid ""
642
  "<dfn title=\"If your server is placed behind the proxy server or the load "
643
  "balancing server, you need to put the appropriate key such as &#8220;"
@@ -651,31 +683,31 @@ msgstr ""
651
  "キーを指定してください。\">IPアドレスを追加抽出する&thinsp;$_SERVER&thinsp;の"
652
  "キー</dfn>"
653
 
654
- #: admin/includes/tab-settings.php:264
655
  msgid ""
656
  "<dfn title=\"It validates malicious signatures independently of &#8220;Block "
657
  "by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target "
658
  "&#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins "
659
  "area&#8221; and &#8220;Themes area&#8221;.\">Bad signatures in query</dfn> "
660
- "<nobr>(<a class=\"ip-geo-block-cycle\" id=\"ip-geo-block-decode\" title="
661
- "\"When you find ugly character string in the text area, please click to "
662
- "restore.\"><span></span></a>)</nobr>"
663
  msgstr ""
664
  "<dfn title=\"「国コードで遮断」および「ゼロデイ攻撃を遮断」とは独立に、「管理"
665
  "領域」、「管理領域 ajax/post」、「プラグイン領域」、「テーマ領域」をターゲッ"
666
  "トとした悪意のあるシグネチャを検証します。\">悪意のあるシグネチャ</dfn> "
667
- "<nobr>(<a class=\"ip-geo-block-cycle\" id=\"ip-geo-block-decode\" title=\""
668
- "字化けした場合、クリックして復元して下さい。\"><span id=\"ip-geo-block-cycle"
669
- "\"></span></a>)</nobr>"
670
 
671
- #: admin/includes/tab-settings.php:278
672
  msgid ""
673
  "<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
674
  msgstr ""
675
  "<dfn title=\"許可する&thinsp;MIME&thinsp;タイプを指定します。\">許可する"
676
  "&thinsp;MIME&thinsp;タイプのホワイトリスト</dfn>"
677
 
678
- #: admin/includes/tab-settings.php:289
679
  msgid ""
680
  "<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
681
  "extensions</dfn>"
@@ -683,7 +715,7 @@ msgstr ""
683
  "<dfn title=\"禁止するファイルの拡張子を設定します。\">禁止するファイル拡張子"
684
  "のブラックリスト</dfn>"
685
 
686
- #: admin/includes/tab-settings.php:293
687
  msgid ""
688
  "<dfn title=\"Specify the capabilities to be verified. Depending on the "
689
  "particular type of uploader, certain capability may be required. Default is "
@@ -695,7 +727,7 @@ msgstr ""
695
  "(Editor)、投稿者(Author)向けの「upload_files」です。空欄の場合、この検証"
696
  "はスキップされます。\">検証する権限</dfn>"
697
 
698
- #: admin/includes/tab-settings.php:293
699
  msgid ""
700
  "(&thinsp;See &#8220;<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
701
  "Roles_and_Capabilities\" title=\"Roles and Capabilities &laquo; WordPress "
@@ -706,7 +738,7 @@ msgstr ""
706
  "title=\"ユーザーの種類と権限 - WordPress Codex 日本語版\">ユーザーの種類と権"
707
  "限</a>」を参照)"
708
 
709
- #: admin/includes/tab-settings.php:300
710
  msgid ""
711
  "<dfn title=\"It restricts the file types on upload in order to block malware "
712
  "and backdoor via both back-end and front-end. Please consider to select "
@@ -720,22 +752,20 @@ msgstr ""
720
  "plugins&#8221; (ip-geo-block-mu.php)」に設定することを検討してください。\">悪"
721
  "意のあるアップロード防止</dfn>"
722
 
723
- #: admin/includes/tab-settings.php:311 admin/includes/tab-settings.php:492
724
- #: admin/includes/tab-settings.php:611 admin/includes/tab-settings.php:1205
725
  msgid "Disable"
726
  msgstr "無効"
727
 
728
- #: admin/includes/tab-settings.php:312
729
  msgid "Verify file extension and MIME type"
730
- msgstr ""
731
- "<dfn title=\"拡張子と&thinsp;MIME&thinsp;タイプの整合性を検証します。\">拡張"
732
- "子と&thinsp;MIME&thinsp;タイプを検証</dfn>"
733
 
734
- #: admin/includes/tab-settings.php:313
735
  msgid "Verify file extension only"
736
  msgstr "ファイル拡張子のみを検証"
737
 
738
- #: admin/includes/tab-settings.php:323
739
  #, php-format
740
  msgid ""
741
  "<dfn title=\"You can put your original 403.php and so on into your theme "
@@ -744,7 +774,7 @@ msgstr ""
744
  "<dfn title=\"テーマ・ディレクトリには&thinsp;403.php&thinsp;など、独自のファ"
745
  "イルを設置する事が出来ます。\">レスポンス・コード</dfn> %s"
746
 
747
- #: admin/includes/tab-settings.php:353 admin/includes/tab-settings.php:850
748
  msgid ""
749
  "<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
750
  "to a public facing page, visitors would not be blocked on the page to "
@@ -758,7 +788,7 @@ msgstr ""
758
  "ります。空欄の場合、サイトのホームが使用されます。\">リダイレクト先&thinsp;"
759
  "URL</dfn>"
760
 
761
- #: admin/includes/tab-settings.php:371 admin/includes/tab-settings.php:869
762
  msgid ""
763
  "<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
764
  "message</dfn>"
@@ -766,33 +796,33 @@ msgstr ""
766
  "<dfn title=\"レスポンス・コード&thinsp;4xx、5xx&thinsp;用のメッセージを指定し"
767
  "ます。\">レスポンス・メッセージ</dfn>"
768
 
769
- #: admin/includes/tab-settings.php:388
770
  msgid ""
771
  "<dfn title=\"This is applied to &#8220;XML-RPC&#8221; and &#8220;Login "
772
  "form&#8221;. Lockout period is defined as expiration time at &#8220;Cache "
773
  "settings&#8221;.\">Max number of failed login attempts per IP address</dfn>"
774
  msgstr ""
775
  "<dfn title=\"「XML-RPC」と「ログイン・フォーム」に適用されます。ロックアウト"
776
- "時間は「キャッシュの設定」の「有効時間」で定義されます。\">IPアドレス当たりの"
777
- "ログイン試行可能回数</dfn>"
778
 
779
- #: admin/includes/tab-settings.php:416
780
  msgid "Select when to run the validation."
781
  msgstr "検証を実行するタイミングを選択します。"
782
 
783
- #: admin/includes/tab-settings.php:416
784
  msgid "Validation timing"
785
  msgstr "検証のタイミング"
786
 
787
- #: admin/includes/tab-settings.php:427
788
  msgid "&#8220;init&#8221; action hook"
789
  msgstr "&#8220;init&#8221; アクション・フック"
790
 
791
- #: admin/includes/tab-settings.php:428
792
  msgid "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
793
  msgstr "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
794
 
795
- #: admin/includes/tab-settings.php:431
796
  msgid ""
797
  "Validate at &#8220;init&#8221; action hook in the same manner as typical "
798
  "plugins."
@@ -800,7 +830,7 @@ msgstr ""
800
  "標準的な他のプラグインと同様、init アクション・フックのタイミングで検証を実行"
801
  "します。"
802
 
803
- #: admin/includes/tab-settings.php:432
804
  msgid ""
805
  "Validate at an earlier phase than other typical plugins. It can reduce load "
806
  "on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
@@ -812,52 +842,52 @@ msgstr ""
812
  "com/codex/validation-timing.html' title='Validation timing | IP Geo Block'>幾"
813
  "つかの制限事項</a>&thinsp;が生じます。"
814
 
815
- #: admin/includes/tab-settings.php:442
816
  msgid "Back-end target settings"
817
  msgstr "バックエンドの設定"
818
 
819
- #: admin/includes/tab-settings.php:448
820
  #, php-format
821
  msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
822
  msgstr "<dfn title=\"%s へのリクエストを検証する\">%s</dfn>"
823
 
824
- #: admin/includes/tab-settings.php:454
825
  msgid "Other areas"
826
- msgstr "その他の"
827
 
828
- #: admin/includes/tab-settings.php:455
829
  msgid "public facing pages"
830
  msgstr "一般公開ページ"
831
 
832
- #: admin/includes/tab-settings.php:473 admin/includes/tab-settings.php:493
833
- #: admin/includes/tab-settings.php:526 admin/includes/tab-settings.php:532
834
- #: admin/includes/tab-settings.php:751
835
  msgid "Block by country"
836
  msgstr "国コードで遮断"
837
 
838
- #: admin/includes/tab-settings.php:494
839
  msgid "Completely close"
840
  msgstr "完全に閉鎖"
841
 
842
- #: admin/includes/tab-settings.php:527
843
  msgid ""
844
  "<dfn title=\"Specify the individual action as a blocking target.\">Target "
845
  "actions</dfn>"
846
  msgstr ""
847
  "<dfn title=\"遮断対象とするアクションを指定します。\">対象アクション</dfn>"
848
 
849
- #: admin/includes/tab-settings.php:533
850
  msgid "Prevent Zero-day Exploit"
851
  msgstr "ゼロデイ攻撃を遮断"
852
 
853
- #: admin/includes/tab-settings.php:537
854
  msgid ""
855
  "It will block a request related to the services for both public facing pages "
856
  "and the dashboard."
857
  msgstr ""
858
  "一般公開ページとダッシュボード向けサービスに関連するリクエストを遮断します。"
859
 
860
- #: admin/includes/tab-settings.php:538
861
  msgid ""
862
  "Regardless of the country code, it will block a malicious request related to "
863
  "the services only for the dashboard."
@@ -865,92 +895,97 @@ msgstr ""
865
  "国コードに拘らず、ダッシュボード向けサービスだけに関連する悪意のあるリクエス"
866
  "トを遮断します。"
867
 
868
- #: admin/includes/tab-settings.php:564
869
  msgid "admin post for logged-in user"
870
  msgstr "認証済ユーザー用 admin post"
871
 
872
- #: admin/includes/tab-settings.php:565
873
  msgid "admin post for non logged-in user"
874
  msgstr "未認証ユーザー用 admin post"
875
 
876
- #: admin/includes/tab-settings.php:587
877
  msgid "Admin ajax/post"
878
  msgstr "管理領域&thinsp;ajax/post"
879
 
880
- #: admin/includes/tab-settings.php:600
881
  msgid ""
882
- "<dfn title=\"Specify the page name (&#8220;page=&hellip;&#8221;) or the "
883
- "action name (&#8220;action=&hellip;&#8221;) to prevent undesired blocking "
884
- "caused by &#8220;Block by country&#8221; for non logged-in user and &#8220;"
885
- "Prevent Zero-day Exploit&#8221; for logged-in user.\">Exceptions</dfn>"
886
  msgstr ""
887
- "<dfn title=\"「国コードで遮断」または「ゼロデイ攻撃を遮断」が、それぞれ認証済"
888
- "みユーザー、認証済ユーザーを意図せず遮断する場合、検証対象から除外するリクエ"
889
- "ストを特定するために、ページ名(&#8220;page=&hellip;&#8221; の &#8220;"
890
- "&hellip;&#8221; 部分)、またはアクション名(&#8220;action=&hellip;&#8221; "
891
- "&#8220;&hellip;&#8221; 部分)を指定してください。\">除外する項目</dfn>"
892
 
893
- #: admin/includes/tab-settings.php:600
 
 
 
 
 
894
  msgid "Toggle with non logged-in user"
895
- msgstr "未認証ユーザー用を含む項目に限定して表示"
896
 
897
- #: admin/includes/tab-settings.php:605
898
- msgid "Candidate actions"
899
- msgstr "候補アクション"
900
 
901
- #: admin/includes/tab-settings.php:613
902
  #, php-format
903
  msgid ""
904
  "Regardless of the country code, it will block a malicious request to <code>"
905
  "%s&ctdot;/*.php</code>."
906
  msgstr ""
907
- "国コードに拘らず、<code>%s&hellip;/*.php</code>への悪意のあるリクエストを遮断"
908
  "します。"
909
 
910
- #: admin/includes/tab-settings.php:614
911
  msgid ""
912
- "<dfn title=\"Select the item which causes undesired blocking in order to "
913
- "exclude from the validation target. Grayed item indicates &#8220;"
914
- "INACTIVE&#8221;.\">Exceptions</dfn>"
915
  msgstr ""
916
- "<dfn title=\"意図しない遮断の原因となる項目を選択し、検証対象から除外します。"
917
- "灰色で表示された項目は、「非アクティブ」であることを示しています。\">除外する"
918
- "項目</dfn>"
919
 
920
- #: admin/includes/tab-settings.php:615
921
  #, php-format
922
  msgid ""
923
  "It configures &#8220;%s&#8221; to validate a request to the PHP file which "
924
- "does not load WordPress core."
 
925
  msgstr ""
926
  "WordPressコアを読み込まないPHPファイルへのリクエストを検証対象とするため"
927
- "に、%s を設定します。"
 
928
 
929
- #: admin/includes/tab-settings.php:616
930
  msgid "Sorry, but your server type is not supported."
931
  msgstr "このサーバーではサポートされません。"
932
 
933
- #: admin/includes/tab-settings.php:653 admin/includes/tab-settings.php:703
934
  msgid "Force to load WP core"
935
  msgstr "WPコアの読み込みを強制"
936
 
937
- #: admin/includes/tab-settings.php:658
938
  msgid "Plugins area"
939
  msgstr "プラグイン領域"
940
 
941
- #: admin/includes/tab-settings.php:708
942
  msgid "Themes area"
943
  msgstr "テーマ領域"
944
 
945
- #: admin/includes/tab-settings.php:732
946
  msgid "Front-end target settings"
947
  msgstr "フロントエンドの設定"
948
 
949
- #: admin/includes/tab-settings.php:756
950
  msgid "Follow &#8220;Validation rule settings&#8221;"
951
  msgstr "「検証ルールの設定」に従う"
952
 
953
- #: admin/includes/tab-settings.php:818
954
  #, php-format
955
  msgid ""
956
  "<dfn title=\"You can configure a different response code from the Back-end. "
@@ -958,15 +993,15 @@ msgid ""
958
  "\">Response code</dfn> %s"
959
  msgstr ""
960
  "<dfn title=\"バックエンドと異なるレスポンス・コードを設定できます。これは、ア"
961
- "フィリエイト・プログラムに対する違反を防止するのに役立つでしょ"
962
- "う。\">Response code</dfn> %s"
963
 
964
- #: admin/includes/tab-settings.php:884
965
  msgid ""
966
  "<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
967
  msgstr "<dfn title=\"特定のページを遮断対象に指定します。\">ページ</dfn>"
968
 
969
- #: admin/includes/tab-settings.php:896
970
  msgid ""
971
  "<dfn title=\"Specify the individual post type on a single page as a blocking "
972
  "target.\">Post type</dfn>"
@@ -974,7 +1009,7 @@ msgstr ""
974
  "<dfn title=\"特定の投稿タイプのシングルページを遮断対象に指定します。\">投稿"
975
  "タイプ</dfn>"
976
 
977
- #: admin/includes/tab-settings.php:908
978
  msgid ""
979
  "<dfn title=\"Specify the individual category on a single page or archive "
980
  "page as a blocking target.\">Category</dfn>"
@@ -982,7 +1017,7 @@ msgstr ""
982
  "<dfn title=\"特定のカテゴリを含むシングルページかアーカイブページを遮断対象に"
983
  "指定します。\">カテゴリ</dfn>"
984
 
985
- #: admin/includes/tab-settings.php:920
986
  msgid ""
987
  "<dfn title=\"Specify the individual tag on a single page or archive page as "
988
  "a blocking target.\">Tag</dfn>"
@@ -990,23 +1025,23 @@ msgstr ""
990
  "<dfn title=\"特定のタグを含むシングルページかアーカイブページを遮断対象に指定"
991
  "します。\">タグ</dfn>"
992
 
993
- #: admin/includes/tab-settings.php:935
994
  msgid "Specify the validation target on front-end."
995
  msgstr "フロントエンドの検証対象を設定します。"
996
 
997
- #: admin/includes/tab-settings.php:935
998
  msgid "Validation target"
999
  msgstr "検証対象"
1000
 
1001
- #: admin/includes/tab-settings.php:946
1002
  msgid "All requests"
1003
  msgstr "全てのリクエスト"
1004
 
1005
- #: admin/includes/tab-settings.php:947
1006
  msgid "Specify the targets"
1007
  msgstr "ターゲットを指定"
1008
 
1009
- #: admin/includes/tab-settings.php:950
1010
  msgid ""
1011
  "Notice that &#8220;Validation timing&#8221; is deferred till &#8220;"
1012
  "wp&#8221; action hook. It means that this feature would not be compatible "
@@ -1015,7 +1050,7 @@ msgstr ""
1015
  "「検証のタイミング」が &#8220;wp&#8221; アクション・フックまで遅延されます。"
1016
  "これにより、ページ・キャッシュとの互換性がなくなることに注意してください。"
1017
 
1018
- #: admin/includes/tab-settings.php:960
1019
  msgid ""
1020
  "A part of user agent string and a qualification connected with a separator "
1021
  "that indicates an applicable rule and can be &#8220;:&#8221; (pass) or "
@@ -1029,19 +1064,19 @@ msgstr ""
1029
  "国コード、または&nbsp;IPアドレス(CIDR記法)が使えます。また否定を表す記号"
1030
  "「!」を「条件」の直前に配置する事が出来ます。"
1031
 
1032
- #: admin/includes/tab-settings.php:960
1033
  msgid "UA string and qualification"
1034
  msgstr "ユーザーエージェント(UA)文字列と条件"
1035
 
1036
- #: admin/includes/tab-settings.php:979
1037
  msgid "Specify the name of action that is invariably blocked."
1038
  msgstr "遮断されるアクション名を指定します。"
1039
 
1040
- #: admin/includes/tab-settings.php:979
1041
  msgid "Excluded actions"
1042
  msgstr "除外するアクション"
1043
 
1044
- #: admin/includes/tab-settings.php:998
1045
  msgid ""
1046
  "It enables to verify the host by reverse DNS lookup which would spend some "
1047
  "server resources. If it is disabled, &#8220;HOST&#8221; and &#8220;"
@@ -1052,11 +1087,11 @@ msgstr ""
1052
  "ます)。無効にした場合、「ユーザーエージェント文字列と条件」中の「HOST」、"
1053
  "「HOST=&hellip;」は常に真となります。"
1054
 
1055
- #: admin/includes/tab-settings.php:998
1056
  msgid "DNS reverse lookup"
1057
  msgstr "DNS&thinsp;逆引き"
1058
 
1059
- #: admin/includes/tab-settings.php:1015
1060
  msgid ""
1061
  "It enables to simulate validation without deployment. The results can be "
1062
  "found at &#8220;Public facing pages&#8221; in Logs."
@@ -1064,15 +1099,15 @@ msgstr ""
1064
  "機能を有効にする事なくリクエストの検証をシミュレートします。結果はログで確認"
1065
  "する事が出来ます。"
1066
 
1067
- #: admin/includes/tab-settings.php:1015
1068
  msgid "Simulation mode"
1069
  msgstr "シミュレーション・モード"
1070
 
1071
- #: admin/includes/tab-settings.php:1033
1072
  msgid "Geolocation API settings"
1073
  msgstr "位置情報APIの設定"
1074
 
1075
- #: admin/includes/tab-settings.php:1042
1076
  msgid ""
1077
  "<dfn title=\"Cache and local database are scanned at the top priority.\">API "
1078
  "selection and key settings</dfn>"
@@ -1080,11 +1115,11 @@ msgstr ""
1080
  "<dfn title=\"キャッシュとローカルのデータベースが最優先で検索されます。\">API"
1081
  "の選択とキーの設定</dfn>"
1082
 
1083
- #: admin/includes/tab-settings.php:1061
1084
  msgid "Timeout for network API [sec]"
1085
  msgstr "ネットワークAPIのタイムアウト[秒]"
1086
 
1087
- #: admin/includes/tab-settings.php:1082
1088
  #, php-format
1089
  msgid ""
1090
  "Can not find geolocation API libraries in <code>%s</code>. It seems to have "
@@ -1109,71 +1144,71 @@ msgstr ""
1109
  "IP Geo Block\">FAQ</a> を参照し、適切な書き込み権限と共に <code>ip-geo-api</"
1110
  "code> をインストールしてください。"
1111
 
1112
- #: admin/includes/tab-settings.php:1090
1113
  msgid "Local database settings"
1114
  msgstr "ローカル・データベースの設定"
1115
 
1116
- #: admin/includes/tab-settings.php:1104
1117
  msgid "database"
1118
  msgstr "ファイル"
1119
 
1120
- #: admin/includes/tab-settings.php:1114
1121
  msgid "Auto updating (once a month)"
1122
  msgstr "自動更新(月1回)"
1123
 
1124
- #: admin/includes/tab-settings.php:1131
1125
  msgid "Download database"
1126
  msgstr "データベースのダウンロード"
1127
 
1128
- #: admin/includes/tab-settings.php:1139
1129
  msgid "Download now"
1130
  msgstr "今すぐダウンロード"
1131
 
1132
- #: admin/includes/tab-settings.php:1150
1133
  msgid "Statistics and Logs settings"
1134
  msgstr "統計とログの設定"
1135
 
1136
- #: admin/includes/tab-settings.php:1159
1137
  msgid "Record &#8220;Statistics&#8221;"
1138
  msgstr "検証の統計を記録"
1139
 
1140
- #: admin/includes/tab-settings.php:1176
1141
  msgid "Maximum period for &#8220;Statistics&#8221; (days)"
1142
  msgstr "記録する統計の最大期間(日)"
1143
 
1144
- #: admin/includes/tab-settings.php:1194
1145
  msgid "Record &#8220;Logs&#8221;"
1146
  msgstr "検証のログを記録"
1147
 
1148
- #: admin/includes/tab-settings.php:1206
1149
  msgid "When requests blocked"
1150
  msgstr "遮断時に記録"
1151
 
1152
- #: admin/includes/tab-settings.php:1207
1153
  msgid "When requests passed"
1154
  msgstr "通過時に記録"
1155
 
1156
- #: admin/includes/tab-settings.php:1208
1157
- msgid "When blocked or passed from undesired country"
1158
  msgstr "遮断時または遮断対象国の通過時に記録"
1159
 
1160
- #: admin/includes/tab-settings.php:1209
1161
  msgid "Unauthenticated visitor"
1162
  msgstr "未認証の訪問者を記録"
1163
 
1164
- #: admin/includes/tab-settings.php:1210
1165
  msgid "Authenticated user"
1166
  msgstr "認証済のユーザーを記録"
1167
 
1168
- #: admin/includes/tab-settings.php:1211
1169
  msgid "All the validation"
1170
  msgstr "すべての検証を記録"
1171
 
1172
- #: admin/includes/tab-settings.php:1220
1173
  msgid "Maximum entries of &#8220;Logs&#8221;"
1174
  msgstr "記録するログの最大エントリ数"
1175
 
1176
- #: admin/includes/tab-settings.php:1237
1177
  msgid ""
1178
  "<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
1179
  "recorded with their values in &#8220;Logs&#8221;</dfn>"
@@ -1181,11 +1216,11 @@ msgstr ""
1181
  "<dfn title=\"例)action, comment, log, pwd, FILES\">ログに記録する際に内容を"
1182
  "展開する$_POSTのキー</dfn>"
1183
 
1184
- #: admin/includes/tab-settings.php:1255
1185
  msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
1186
  msgstr "<dfn title=\"例)123.456.789.***\">IPアドレスを匿名化する</dfn>"
1187
 
1188
- #: admin/includes/tab-settings.php:1272
1189
  msgid ""
1190
  "<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
1191
  "&#8220;Live update&#8221;</dfn>"
@@ -1193,19 +1228,19 @@ msgstr ""
1193
  "<dfn title=\"SQLiteデータベース・ソースを選択します。\">ライブアップデート用"
1194
  "SQLiteデータベース・ソースの選択</dfn>"
1195
 
1196
- #: admin/includes/tab-settings.php:1284
1197
  msgid "Ordinary file"
1198
  msgstr "通常のファイル"
1199
 
1200
- #: admin/includes/tab-settings.php:1285
1201
  msgid "In-Memory"
1202
  msgstr "イン・メモリ"
1203
 
1204
- #: admin/includes/tab-settings.php:1288
1205
  msgid "PDO_SQLITE driver not available"
1206
  msgstr "PDO_SQLITEドライバが利用出来ません。"
1207
 
1208
- #: admin/includes/tab-settings.php:1289
1209
  msgid ""
1210
  "It takes a few tens of milliseconds as overhead. It can be safely used "
1211
  "without conflict with other plugins."
@@ -1213,7 +1248,7 @@ msgstr ""
1213
  "数十ミリ秒のオーバーヘッドがかかります。他のプラグインと競合することなく、安"
1214
  "全に使用できます。"
1215
 
1216
- #: admin/includes/tab-settings.php:1290
1217
  msgid ""
1218
  "It takes a few milliseconds as overhead. There is a possibility of conflict "
1219
  "with other plugins using this method."
@@ -1221,19 +1256,19 @@ msgstr ""
1221
  "数ミリ秒のオーバーヘッドがかかります。同手法を用いている他のプラグインと競合"
1222
  "する可能性があります。"
1223
 
1224
- #: admin/includes/tab-settings.php:1299
1225
  msgid "Reset database source of &#8220;Live update&#8221;"
1226
  msgstr "ライブアップデートのデータソースをリセットする"
1227
 
1228
- #: admin/includes/tab-settings.php:1307
1229
  msgid "Reset now"
1230
  msgstr "今すぐリセット"
1231
 
1232
- #: admin/includes/tab-settings.php:1318
1233
  msgid "IP address cache settings"
1234
  msgstr "IPアドレスのキャッシュ設定"
1235
 
1236
- #: admin/includes/tab-settings.php:1327
1237
  #, php-format
1238
  msgid ""
1239
  "<dfn title=\"If user authentication fails consecutively %d times, subsequent "
@@ -1243,43 +1278,43 @@ msgstr ""
1243
  "<dfn title=\"ユーザ認証が連続%d回失敗した場合も、以降のログインがこの期間だけ"
1244
  "(ガベージコレクション周期を含む)禁止されます。\">有効時間 [sec]</dfn>"
1245
 
1246
- #: admin/includes/tab-settings.php:1343
1247
  msgid "Garbage collection period [sec]"
1248
  msgstr "ガベージコレクション周期 [秒]"
1249
 
1250
- #: admin/includes/tab-settings.php:1360
1251
  msgid "Number of entries to be displayed in cache"
1252
  msgstr "「キャッシュ中のIPアドレス」に表示する最大数"
1253
 
1254
- #: admin/includes/tab-settings.php:1378
1255
  msgid "Submission settings"
1256
  msgstr "投稿時の設定"
1257
 
1258
- #: admin/includes/tab-settings.php:1390
1259
  msgid "The whole will be wrapped by &lt;p&gt; tag. Allowed tags: "
1260
  msgstr "全体が&lt;p&gt;タグで囲われます。使用可能タグ:"
1261
 
1262
- #: admin/includes/tab-settings.php:1390
1263
  msgid "Message on comment form"
1264
  msgstr "投稿フォーム上のメッセージ"
1265
 
1266
- #: admin/includes/tab-settings.php:1402
1267
  msgid "None"
1268
  msgstr "なし"
1269
 
1270
- #: admin/includes/tab-settings.php:1403
1271
  msgid "Top"
1272
  msgstr "上部"
1273
 
1274
- #: admin/includes/tab-settings.php:1404
1275
  msgid "Bottom"
1276
  msgstr "下部"
1277
 
1278
- #: admin/includes/tab-settings.php:1415
1279
  msgid "Plugin settings"
1280
  msgstr "プラグインの設定"
1281
 
1282
- #: admin/includes/tab-settings.php:1428
1283
  msgid ""
1284
  "<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
1285
  "settings</dfn>"
@@ -1287,11 +1322,11 @@ msgstr ""
1287
  "<dfn title=\"全ての設定をネットワーク全体で同期させます。\">ネットワークの一"
1288
  "括設定</dfn>"
1289
 
1290
- #: admin/includes/tab-settings.php:1446
1291
  msgid "Remove all settings at uninstallation"
1292
  msgstr "アンインストール時に全設定を削除"
1293
 
1294
- #: admin/includes/tab-settings.php:1464
1295
  msgid ""
1296
  "<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
1297
  "dfn>"
@@ -1299,7 +1334,7 @@ msgstr ""
1299
  "<dfn title=\"Google Maps JavaScript API に有効なキー\">Google Maps API キー</"
1300
  "dfn>"
1301
 
1302
- #: admin/includes/tab-settings.php:1478
1303
  msgid ""
1304
  "You need to click the &#8220;Save Changes&#8221; button for imported "
1305
  "settings to take effect."
@@ -1307,65 +1342,65 @@ msgstr ""
1307
  "インポートされた設定を有効にするには、「変更を保存」ボタンをクリックする必要"
1308
  "があります。"
1309
 
1310
- #: admin/includes/tab-settings.php:1484
1311
  msgid "Export / Import settings"
1312
  msgstr "設定のエクスポート、インポート"
1313
 
1314
- #: admin/includes/tab-settings.php:1491
1315
  msgid "Export settings"
1316
  msgstr "エクスポート"
1317
 
1318
- #: admin/includes/tab-settings.php:1492
1319
  msgid "Import from the local file"
1320
  msgstr "ローカル・ファイルからインポートします"
1321
 
1322
- #: admin/includes/tab-settings.php:1492
1323
  msgid "Import settings"
1324
  msgstr "インポート"
1325
 
1326
- #: admin/includes/tab-settings.php:1501
1327
  msgid "Import pre-defined settings"
1328
  msgstr "プリセットのインポート"
1329
 
1330
- #: admin/includes/tab-settings.php:1508
1331
  msgid ""
1332
  "Import the default settings to revert to the &#8220;Right after "
1333
  "installing&#8221; state"
1334
  msgstr "インストール直後の状態に戻すための設定値をインポートします"
1335
 
1336
- #: admin/includes/tab-settings.php:1508
1337
  msgid "Default settings"
1338
  msgstr "初期設定"
1339
 
1340
- #: admin/includes/tab-settings.php:1509
1341
  msgid ""
1342
  "Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
1343
  "for the &#8220;Back-end target settings&#8221;"
1344
  msgstr ""
1345
- "「ゼロデイ攻撃の遮断」など、主に「バックエンドの設定」に推奨される設定をイン"
1346
- "ポートします。"
1347
 
1348
- #: admin/includes/tab-settings.php:1509
1349
  msgid "Best for Back-end"
1350
  msgstr "バックエンドの推奨設定"
1351
 
1352
- #: admin/includes/tab-settings.php:1519
1353
  msgid "Delete DB table for validation logs"
1354
  msgstr "検証のログ用データベース・テーブルの削除"
1355
 
1356
- #: admin/includes/tab-settings.php:1527
1357
  msgid "Delete now"
1358
  msgstr "今すぐ削除"
1359
 
1360
- #: admin/includes/tab-settings.php:1535
1361
  msgid "Create DB table for validation logs"
1362
  msgstr "検証のログ用データベース・テーブルの作成"
1363
 
1364
- #: admin/includes/tab-settings.php:1543
1365
  msgid "Create now"
1366
  msgstr "今すぐ作成"
1367
 
1368
- #: admin/includes/tab-settings.php:1553
1369
  msgid ""
1370
  "<dfn title=\"When an unexpected blocking has occurred, please press the "
1371
  "button to find the blocked request in the dumped information which may help "
@@ -1379,15 +1414,15 @@ msgstr ""
1379
  "plugin/ip-geo-block\" title=\"WordPress &#8250; Support &raquo; IP Geo Block"
1380
  "\">サポート・フォーラム</a> ]"
1381
 
1382
- #: admin/includes/tab-settings.php:1560
1383
  msgid "Please copy &amp; paste when submitting your issue to support forum."
1384
  msgstr "フォーラムに問題を投稿する際、コピーして張り付けてください。"
1385
 
1386
- #: admin/includes/tab-settings.php:1560
1387
  msgid "Show information"
1388
  msgstr "情報を表示"
1389
 
1390
- #: admin/includes/tab-settings.php:1576
1391
  msgid ""
1392
  "To enhance the protection ability, please refer to &#8220;<a rel=\"noreferrer"
1393
  "\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
@@ -1399,7 +1434,7 @@ msgstr ""
1399
  "\" title=\"The best practice for target settings | IP Geo Block\">The best "
1400
  "practice fortarget settings</a>&#8220;&thinsp;を参照してください。"
1401
 
1402
- #: admin/includes/tab-settings.php:1577
1403
  msgid ""
1404
  "If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
1405
  "\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
@@ -1413,7 +1448,7 @@ msgstr ""
1413
  "com/codex/#faq\" title=\"Codex | IP Geo Block\">Codex</a> の FAQ を参照してく"
1414
  "ださい。"
1415
 
1416
- #: admin/includes/tab-settings.php:1584
1417
  msgid ""
1418
  "While Maxmind and IP2Location will fetch the local database, others will "
1419
  "pass an IP address to the APIs via HTTP."
@@ -1421,12 +1456,12 @@ msgstr ""
1421
  "MaxmindとIP2Locationはローカルのデータベースを検索しますが、他はHTTPを介して"
1422
  "APIにIPアドレスを渡します。"
1423
 
1424
- #: admin/includes/tab-settings.php:1585
1425
  msgid ""
1426
  "Please select the appropriate APIs to fit the privacy law in your country."
1427
  msgstr "自国のプライバシー関連法規に合わせ、適切なAPIを選択して下さい。"
1428
 
1429
- #: admin/includes/tab-settings.php:1592
1430
  msgid ""
1431
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1432
  "ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
@@ -1438,7 +1473,7 @@ msgstr ""
1438
  "end\" title=\"Codex | IP Geo Block\">Blocking on front-end</a>&#8221; を参照"
1439
  "してください。"
1440
 
1441
- #: admin/includes/tab-settings.php:1593
1442
  msgid ""
1443
  "If you find any issues or have something to suggest, please feel free to "
1444
  "open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
@@ -1450,7 +1485,7 @@ msgstr ""
1450
  "&#8250; Support &raquo; IP Geo Block\">サポートフォーラム</a> に投稿をお願い"
1451
  "します。"
1452
 
1453
- #: admin/includes/tab-settings.php:1600
1454
  msgid ""
1455
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1456
  "ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
@@ -1460,13 +1495,13 @@ msgstr ""
1460
  "record-settings-and-logs.html\" title=\"Codex | IP Geo Block\">Record "
1461
  "settings and logs</a>&#8221; を参照ください。"
1462
 
1463
- #: admin/includes/class-admin-rewrite.php:144
1464
- #: admin/includes/class-admin-rewrite.php:170
1465
  #, php-format
1466
  msgid "Or please refer to %s to set it manually."
1467
  msgstr "あるいは %s を参照し、手動で設定して下さい。"
1468
 
1469
- #: admin/includes/class-admin-rewrite.php:208
1470
  #, php-format
1471
  msgid "&#8220;auto_prepend_file&#8221; already defined in %s."
1472
  msgstr "%s&thinsp;で既に「auto_prepend_file」が設定されています。"
@@ -1544,7 +1579,7 @@ msgid "Clear statistics"
1544
  msgstr "統計のクリア"
1545
 
1546
  #: admin/includes/tab-statistics.php:185
1547
- msgid "Statistics in logs"
1548
  msgstr "ログの統計"
1549
 
1550
  #: admin/includes/tab-statistics.php:217
@@ -1563,23 +1598,27 @@ msgstr "キャッシュから取り除く"
1563
  msgid "Clear cache"
1564
  msgstr "キャッシュのクリア"
1565
 
1566
- #: admin/includes/tab-statistics.php:291
1567
  msgid "Country (Top 10)"
1568
  msgstr "国(トップ10)"
1569
 
1570
- #: admin/includes/tab-statistics.php:292
1571
  msgid "AS number (Top 10)"
1572
  msgstr "AS番号(トップ10)"
1573
 
1574
- #: admin/includes/tab-statistics.php:293
1575
  msgid "IP address (Top 10)"
1576
  msgstr "IPアドレス(トップ10)"
1577
 
1578
- #: admin/includes/tab-statistics.php:294
1579
  msgid "Slug in back-end"
1580
  msgstr "バックエンドのスラッグ"
1581
 
1582
- #: admin/includes/tab-statistics.php:391
 
 
 
 
1583
  msgid ""
1584
  "[<strong>Record validation statistics</strong>] on [<strong>Settings</"
1585
  "strong>] tab is not selected as [<strong>Enable</strong>]."
@@ -1587,13 +1626,13 @@ msgstr ""
1587
  "[<strong>設定</strong>]タブの[<strong>検証の統計を記録</strong>]に"
1588
  "[<strong>有効</strong>]が選択されていません。"
1589
 
1590
- #: admin/includes/tab-statistics.php:392
1591
  msgid ""
1592
  "Please set the proper condition to record and analyze the validation "
1593
  "statistics."
1594
  msgstr "検証の統計を記録し分析するためには、適切な条件を設定して下さい。"
1595
 
1596
- #: admin/includes/tab-statistics.php:397
1597
  msgid ""
1598
  "Please set the proper condition to record and analyze the validation logs."
1599
  msgstr "検証のログを記録し分析するためには、適切な条件を設定して下さい。"
1
+ # Copyright (C) 2013-2018 tokkonopapa
2
  # This file is distributed under the same license as the IP Geo Block package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: IP Geo Block 3.0.6\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
7
+ "POT-Creation-Date: 2018-01-08 21:11+0900\n"
8
+ "PO-Revision-Date: 2018-01-08 23:59+0900\n"
9
  "Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
10
  "Language-Team: \n"
11
  "MIME-Version: 1.0\n"
30
  #: classes/class-ip-geo-block-opts.php:409
31
  #: classes/class-ip-geo-block-cron.php:273
32
  #: classes/class-ip-geo-block-cron.php:305
33
+ #: admin/class-ip-geo-block-admin.php:1210
34
+ #: admin/includes/class-admin-rewrite.php:194
35
  #, php-format
36
  msgid "Unable to write <code>%s</code>. Please check the permission."
37
  msgstr "<code>%s</code> に書き込めません。パーミッションをチェックして下さい。"
42
 
43
  #: classes/class-ip-geo-block-cron.php:268
44
  #: classes/class-ip-geo-block-cron.php:300
45
+ #: admin/includes/class-admin-rewrite.php:168
46
  #, php-format
47
  msgid "Unable to read <code>%s</code>. Please check the permission."
48
  msgstr "<code>%s</code> を読み込めません。パーミッションをチェックして下さい。"
58
  msgstr "gz または zip がサポートされていません。"
59
 
60
  #: classes/class-ip-geo-block-cron.php:334
61
+ #: admin/includes/tab-settings.php:1131
62
  #, php-format
63
  msgid "Last update: %s"
64
  msgstr "最終更新:%s"
112
  "少なくとも1つ以上の位置情報サービスを選択して下さい。未選択の場合、キャッシュ"
113
  "の有効期限切れと共にロックアウトされます。"
114
 
115
+ #: admin/class-ip-geo-block-admin.php:260
116
  msgid "Import settings ?"
117
  msgstr "設定をインポートしますか?"
118
 
119
+ #: admin/class-ip-geo-block-admin.php:261
120
  msgid "Create table ?"
121
  msgstr "テーブルを作成しますか?"
122
 
123
+ #: admin/class-ip-geo-block-admin.php:262
124
  msgid "Delete table ?"
125
  msgstr "テーブルを削除しますか?"
126
 
127
+ #: admin/class-ip-geo-block-admin.php:263
128
  msgid "Clear statistics ?"
129
  msgstr "統計をクリアしますか?"
130
 
131
+ #: admin/class-ip-geo-block-admin.php:264
132
  msgid "Clear cache ?"
133
  msgstr "キャッシュをクリアしますか?"
134
 
135
+ #: admin/class-ip-geo-block-admin.php:265
136
  msgid "Clear logs ?"
137
  msgstr "ログをクリアしますか?"
138
 
139
+ #: admin/class-ip-geo-block-admin.php:266
140
  msgid "ajax for logged-in user"
141
  msgstr "認証済ユーザー用 ajax"
142
 
143
+ #: admin/class-ip-geo-block-admin.php:267
144
  msgid "ajax for non logged-in user"
145
  msgstr "未認証ユーザー用 ajax"
146
 
147
+ #: admin/class-ip-geo-block-admin.php:268
148
+ #, php-format
149
+ msgid "[Found: %d]"
150
+ msgstr "[&thinsp;見つかった数:%d&thinsp;]"
151
+
152
+ #: admin/class-ip-geo-block-admin.php:269
153
+ #, php-format
154
+ msgid "Find and verify `%s` on &#8220;Logs&#8221; tab."
155
+ msgstr "ログから `%s` を検索し、検証して下さい。"
156
+
157
+ #: admin/class-ip-geo-block-admin.php:270
158
  msgid "This feature is available with HTML5 compliant browsers."
159
  msgstr "HTML5準拠のブラウザでのみ機能します。"
160
 
161
+ #: admin/class-ip-geo-block-admin.php:271
162
  msgid "The selected row cannot be found in the visible area."
163
  msgstr "可視領域に選択された行が見つかりません。"
164
 
165
+ #: admin/class-ip-geo-block-admin.php:272
166
+ #: admin/class-ip-geo-block-admin.php:1403
167
+ #, php-format
168
+ msgid "An error occurred while executing the ajax command `%s`."
169
+ msgstr "Ajaxコマンド `%s` の実行中にエラーが発生しました。"
170
+
171
+ #: admin/class-ip-geo-block-admin.php:276
172
  msgid "No data available in table"
173
  msgstr "テーブルにデータがありません"
174
 
175
+ #: admin/class-ip-geo-block-admin.php:277
176
  msgid "No matching records found"
177
  msgstr "一致するレコードがありません"
178
 
179
+ #: admin/class-ip-geo-block-admin.php:278
180
  #: admin/includes/tab-geolocation.php:71
181
  msgid "IP address"
182
  msgstr "IPアドレス"
183
 
184
+ #: admin/class-ip-geo-block-admin.php:279
185
  msgid "Code"
186
  msgstr "国"
187
 
188
+ #: admin/class-ip-geo-block-admin.php:280
189
  msgid "ASN"
190
  msgstr "AS番号"
191
 
192
+ #: admin/class-ip-geo-block-admin.php:281
193
  msgid "Host name"
194
  msgstr "ホスト名"
195
 
196
+ #: admin/class-ip-geo-block-admin.php:282
197
  msgid "Target"
198
  msgstr "検証対象"
199
 
200
+ #: admin/class-ip-geo-block-admin.php:283
201
  msgid "Failure / Total"
202
  msgstr "ログイン失敗/総計"
203
 
204
+ #: admin/class-ip-geo-block-admin.php:284
205
  msgid "Elapsed[sec]"
206
  msgstr "経過 [秒]"
207
 
208
+ #: admin/class-ip-geo-block-admin.php:285
209
  msgid "Time"
210
  msgstr "日時"
211
 
212
+ #: admin/class-ip-geo-block-admin.php:286
213
  msgid "Result"
214
  msgstr "検証結果"
215
 
216
+ #: admin/class-ip-geo-block-admin.php:287
217
  msgid "Request"
218
  msgstr "リクエスト"
219
 
220
+ #: admin/class-ip-geo-block-admin.php:288
221
  msgid "User agent"
222
  msgstr "ユーザー・エージェント"
223
 
224
+ #: admin/class-ip-geo-block-admin.php:289
225
  msgid "HTTP headers"
226
  msgstr "HTTP ヘッダー"
227
 
228
+ #: admin/class-ip-geo-block-admin.php:290
229
  msgid "$_POST data"
230
  msgstr "$_POST データ"
231
 
232
+ #: admin/class-ip-geo-block-admin.php:308
233
  msgid "Contribute on GitHub"
234
  msgstr "開発に参加"
235
 
236
+ #: admin/class-ip-geo-block-admin.php:322
237
+ #: admin/class-ip-geo-block-admin.php:430
238
+ #: admin/class-ip-geo-block-admin.php:638
239
+ #: admin/class-ip-geo-block-admin.php:657
240
  msgid "Settings"
241
  msgstr "設定"
242
 
243
+ #: admin/class-ip-geo-block-admin.php:410
244
+ #: admin/class-ip-geo-block-admin.php:411
245
+ #: admin/class-ip-geo-block-admin.php:421
246
+ #: admin/class-ip-geo-block-admin.php:422
247
  #: admin/class-ip-geo-block-admin.php:429
248
+ #: admin/class-ip-geo-block-admin.php:437
 
249
  msgid "IP Geo Block"
250
  msgstr "IP Geo Block"
251
 
252
+ #: admin/class-ip-geo-block-admin.php:438
253
+ #: admin/class-ip-geo-block-admin.php:642
254
+ #: admin/class-ip-geo-block-admin.php:658
255
  msgid "Site List"
256
  msgstr "サイト一覧"
257
 
258
+ #: admin/class-ip-geo-block-admin.php:467
259
  msgid "You need WordPress 3.7+."
260
  msgstr "WordPress 3.7&thinsp;以上が必要です。"
261
 
262
+ #: admin/class-ip-geo-block-admin.php:473
263
  #, php-format
264
  msgid ""
265
  "Now downloading geolocation databases in background. After a little while, "
270
  "いた後、あなたの国コードと「<strong>マッチング規則</strong>」を「<a href=\"%s"
271
  "\">検証ルールの設定</a>」で確認して下さい。"
272
 
273
+ #: admin/class-ip-geo-block-admin.php:479
274
  #, php-format
275
  msgid ""
276
  "The &#8220;<strong>Matching rule</strong>&#8221; is not set properly. Please "
279
  "「<strong>マッチング規則</strong>」が正しく設定されていません。「<a href=\"%s"
280
  "\">検証ルールの設定</a>」を確認して下さい。"
281
 
282
+ #: admin/class-ip-geo-block-admin.php:488
283
  msgid "Local database and matching rule have been updated."
284
  msgstr "ローカル・データベースとマッチング規則を更新しました。"
285
 
286
+ #: admin/class-ip-geo-block-admin.php:499
287
  msgid ""
288
  "Once you logout, you will be unable to login again because the number of "
289
  "login attempts reaches the limit."
291
  "あなたのIPアドレスのログイン試行可能回数がリミットに達したため、ログアウトす"
292
  "ると再びログインする事が出来なくなります。"
293
 
294
+ #: admin/class-ip-geo-block-admin.php:501
295
  #, php-format
296
  msgid ""
297
  "Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
300
  "<a href=\"%s\">「統計」タブ</a>の \"<strong>キャッシュのクリア</strong>\" を"
301
  "実行し、ロックアウトを回避してください。"
302
 
303
+ #: admin/class-ip-geo-block-admin.php:511
304
  msgid ""
305
  "Once you logout, you will be unable to login again because your country code "
306
  "or IP address is in the blacklist."
308
  "あなたの国コードまたはIPアドレスがブラックリストに含まれているため、ログアウ"
309
  "トすると再びログインする事が出来なくなります。"
310
 
311
+ #: admin/class-ip-geo-block-admin.php:512
312
  msgid ""
313
  "Once you logout, you will be unable to login again because your country code "
314
  "or IP address is not in the whitelist."
316
  "あなたの国コードまたはIPアドレスがホワイトリストに含まれていないため、ログア"
317
  "ウトすると再びログインする事が出来なくなります。"
318
 
319
+ #: admin/class-ip-geo-block-admin.php:515
320
  #, php-format
321
  msgid "Please check your <a href=\"%s\">Validation rule settings</a>."
322
  msgstr "「<a href=\"%s\">検証ルールの設定</a>」を確認して下さい。"
323
 
324
+ #: admin/class-ip-geo-block-admin.php:526
325
  msgid ""
326
  "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php) at &#8220;Validation "
327
  "timing&#8221; is imcompatible with <strong>IP Geo Allow</strong>. Please "
331
  "択されていますが、<strong>IP Geo Allow</strong> と互換性がありません。"
332
  "「&#8220;init&#8221; アクション・フック」を選択してください。"
333
 
334
+ #: admin/class-ip-geo-block-admin.php:639
335
  msgid "Statistics"
336
  msgstr "統計"
337
 
338
+ #: admin/class-ip-geo-block-admin.php:640
339
  msgid "Logs"
340
  msgstr "ログ"
341
 
342
+ #: admin/class-ip-geo-block-admin.php:641
343
  msgid "Search"
344
  msgstr "検索"
345
 
346
+ #: admin/class-ip-geo-block-admin.php:643
347
  msgid "Attribution"
348
  msgstr "リンク"
349
 
350
+ #: admin/class-ip-geo-block-admin.php:669
351
  msgid "Network wide"
352
  msgstr "ネットワーク一括管理"
353
 
354
+ #: admin/class-ip-geo-block-admin.php:682
355
  msgid "Toggle all"
356
  msgstr "全てを開閉"
357
 
358
+ #: admin/class-ip-geo-block-admin.php:685
359
  msgid ""
360
  "Independent of &#8220;Statistics and Logs settings&#8221;, you can see all "
361
  "the requests validated by this plugin in almost real time."
363
  "[統計とログの設定]にかかわらず、このプラグインによる検証結果のすべてを、ほ"
364
  "ぼリアルタイムに表示します。"
365
 
366
+ #: admin/class-ip-geo-block-admin.php:685 admin/includes/tab-accesslog.php:37
367
  msgid "Live update"
368
  msgstr "ライブアップデート"
369
 
370
+ #: admin/class-ip-geo-block-admin.php:689
371
  msgid "Open a new window on clicking the link in the chart."
372
  msgstr "チャート内のリンクをクリックすると、新しいウィンドウが開きます。"
373
 
374
+ #: admin/class-ip-geo-block-admin.php:689
375
  msgid "Open a new window"
376
  msgstr "別窓で開く"
377
 
378
+ #: admin/class-ip-geo-block-admin.php:712
379
  msgid "Thanks for providing these great services for free."
380
  msgstr "これらのすばらしいサービスの提供元に、敬意と感謝の意を表します!"
381
 
382
+ #: admin/class-ip-geo-block-admin.php:713
383
  msgid ""
384
  "(Most browsers will redirect you to each site <a href=\"http://www."
385
  "ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
389
  "html\" title=\"Referer Checker\">参照元を残さずにリンク先にリダイレクトできま"
390
  "す</a>。)"
391
 
392
+ #: admin/class-ip-geo-block-admin.php:718
393
  msgid "Back to top"
394
  msgstr "トップに戻る"
395
 
396
+ #: admin/class-ip-geo-block-admin.php:815
397
  msgid "Enable"
398
  msgstr "有効"
399
 
400
+ #: admin/class-ip-geo-block-admin.php:830
401
  msgid "Select one"
402
  msgstr "何れかを選択"
403
 
404
+ #: admin/class-ip-geo-block-admin.php:1240
405
  msgid "Settings saved."
406
  msgstr "設定を保存しました。"
407
 
409
  msgid "Validation logs"
410
  msgstr "検証のログ"
411
 
412
+ #: admin/includes/tab-accesslog.php:52 admin/includes/tab-settings.php:452
413
  msgid "Comment post"
414
  msgstr "コメント投稿"
415
 
416
+ #: admin/includes/tab-accesslog.php:53 admin/includes/tab-settings.php:453
417
  msgid "XML-RPC"
418
  msgstr "XML-RPC"
419
 
420
+ #: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:454
421
  msgid "Login form"
422
  msgstr "ログイン・フォーム"
423
 
424
+ #: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:455
425
  msgid "Admin area"
426
  msgstr "管理領域"
427
 
428
+ #: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:457
429
  msgid "Public facing pages"
430
  msgstr "一般公開ページ"
431
 
483
  msgid "Export logs"
484
  msgstr "ログをエクスポート"
485
 
486
+ #: admin/includes/tab-accesslog.php:150 admin/includes/tab-settings.php:1517
487
  msgid "Export to the local file"
488
  msgstr "ローカル・ファイルへエクスポートする"
489
 
492
  msgstr "CSVへエクスポート"
493
 
494
  #: admin/includes/tab-accesslog.php:167 admin/includes/tab-network.php:112
495
+ #: admin/includes/tab-statistics.php:397
496
  msgid ""
497
  "[<strong>Record validation logs</strong>] on [<strong>Settings</strong>] tab "
498
  "is [<strong>Disable</strong>]."
599
  msgid "Toggle selection"
600
  msgstr "選択を切り替える"
601
 
602
+ #: admin/includes/tab-settings.php:119
603
+ msgid "Find blocked requests in &#8220;Logs&#8220;"
604
+ msgstr "ログから遮断されたリクエストを検索する"
605
+
606
+ #: admin/includes/tab-settings.php:120
607
+ msgid ""
608
+ "Before adding as &#8220;Exception&#8221;, please click on &#8220;<a class="
609
+ "\"ip-geo-block-icon ip-geo-block-icon-alert\" title=\"This button is just a "
610
+ "sample.\"><span></span></a>&#8221; button (if exists) attached to the "
611
+ "following list to confirm that the blocked request is not malicious."
612
+ msgstr ""
613
+ "「例外」として追加する前に、以下の候補に付いたボタン&thinsp;&#8220;<a class="
614
+ "\"ip-geo-block-icon ip-geo-block-icon-alert\" title=\"このボタンは単なるサン"
615
+ "プルです。\"><span></span></a>&#8221;(もしあれば)をクリックし、遮断されたリ"
616
+ "クエストに悪意のないことを確認して下さい。"
617
+
618
+ #: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:791
619
  msgid "Matching rule"
620
  msgstr "マッチング規則"
621
 
622
+ #: admin/includes/tab-settings.php:139
623
  msgid ""
624
  "A request from which the country code or IP address is <strong>NOT</strong> "
625
  "in the whitelist will be blocked."
627
  "国コードまたはIPアドレスがホワイトリストに<strong>含まれていない</strong>リク"
628
  "エストを遮断します。"
629
 
630
+ #: admin/includes/tab-settings.php:140
631
  msgid ""
632
  "A request from which the country code or IP address is in the blacklist will "
633
  "be blocked."
635
  "国コードまたはIPアドレスがブラックリストに<strong>含まれている</strong>リクエ"
636
  "ストを遮断します。"
637
 
638
+ #: admin/includes/tab-settings.php:186
639
  msgid ""
640
  "<dfn title=\"It enables utilizing &#8220;AS number&#8221; in the &#8220;"
641
  "Whitelist/Blacklist of extra IP addresses&#8221; to specify a group of IP "
645
  "ネットワークのグループを代表する「AS番号」の指定を可能にします。\">AS番号を使"
646
  "用可能にする</dfn>"
647
 
648
+ #: admin/includes/tab-settings.php:197
649
  #, php-format
650
  msgid ""
651
  "Some useful tools for investigating ASN are introduced in &#8220;%s&#8221;."
652
  msgstr "AS番号の検索に役立つツールを「%s」に紹介しています。"
653
 
654
+ #: admin/includes/tab-settings.php:206
655
  msgid ""
656
  "<dfn title=\"e.g. &#8220;192.0.64.0/18&#8221; for Jetpack server, "
657
  "&#8220;69.46.36.0/27&#8221; for WordFence server or &#8220;AS32934&#8221; "
661
  "サーバー)、AS32934(Facebook)\">国コードに優先して検証するIPアドレスのホワ"
662
  "イトリスト</dfn>"
663
 
664
+ #: admin/includes/tab-settings.php:226
665
  msgid ""
666
  "<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
667
  "\">Blacklist of extra IP addresses prior to country code</dfn>"
669
  "<dfn title=\"サーバー・レベルのアクセス制御の使用をお勧めします(例:."
670
  "htaccess)。\">国コードに優先して検証するIPアドレスのブラックリスト</dfn>"
671
 
672
+ #: admin/includes/tab-settings.php:247
673
  msgid ""
674
  "<dfn title=\"If your server is placed behind the proxy server or the load "
675
  "balancing server, you need to put the appropriate key such as &#8220;"
683
  "キーを指定してください。\">IPアドレスを追加抽出する&thinsp;$_SERVER&thinsp;の"
684
  "キー</dfn>"
685
 
686
+ #: admin/includes/tab-settings.php:266
687
  msgid ""
688
  "<dfn title=\"It validates malicious signatures independently of &#8220;Block "
689
  "by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target "
690
  "&#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins "
691
  "area&#8221; and &#8220;Themes area&#8221;.\">Bad signatures in query</dfn> "
692
+ "<nobr>(<a class=\"ip-geo-block-icon ip-geo-block-icon-cycle\" id=\"ip-geo-"
693
+ "block-decode\" title=\"When you find ugly character string in the text area, "
694
+ "please click to restore.\"><span></span></a>)</nobr>"
695
  msgstr ""
696
  "<dfn title=\"「国コードで遮断」および「ゼロデイ攻撃を遮断」とは独立に、「管理"
697
  "領域」、「管理領域 ajax/post」、「プラグイン領域」、「テーマ領域」をターゲッ"
698
  "トとした悪意のあるシグネチャを検証します。\">悪意のあるシグネチャ</dfn> "
699
+ "<nobr>(<a class=\"ip-geo-block-icon ip-geo-block-icon-cycle\" id=\"ip-geo-"
700
+ "block-decode\" title=\"文字化けした場合、クリックして復元して下さ"
701
+ "い。\"><span></span></a>)</nobr>"
702
 
703
+ #: admin/includes/tab-settings.php:280
704
  msgid ""
705
  "<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
706
  msgstr ""
707
  "<dfn title=\"許可する&thinsp;MIME&thinsp;タイプを指定します。\">許可する"
708
  "&thinsp;MIME&thinsp;タイプのホワイトリスト</dfn>"
709
 
710
+ #: admin/includes/tab-settings.php:291
711
  msgid ""
712
  "<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
713
  "extensions</dfn>"
715
  "<dfn title=\"禁止するファイルの拡張子を設定します。\">禁止するファイル拡張子"
716
  "のブラックリスト</dfn>"
717
 
718
+ #: admin/includes/tab-settings.php:295
719
  msgid ""
720
  "<dfn title=\"Specify the capabilities to be verified. Depending on the "
721
  "particular type of uploader, certain capability may be required. Default is "
727
  "(Editor)、投稿者(Author)向けの「upload_files」です。空欄の場合、この検証"
728
  "はスキップされます。\">検証する権限</dfn>"
729
 
730
+ #: admin/includes/tab-settings.php:295
731
  msgid ""
732
  "(&thinsp;See &#8220;<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
733
  "Roles_and_Capabilities\" title=\"Roles and Capabilities &laquo; WordPress "
738
  "title=\"ユーザーの種類と権限 - WordPress Codex 日本語版\">ユーザーの種類と権"
739
  "限</a>」を参照)"
740
 
741
+ #: admin/includes/tab-settings.php:302
742
  msgid ""
743
  "<dfn title=\"It restricts the file types on upload in order to block malware "
744
  "and backdoor via both back-end and front-end. Please consider to select "
752
  "plugins&#8221; (ip-geo-block-mu.php)」に設定することを検討してください。\">悪"
753
  "意のあるアップロード防止</dfn>"
754
 
755
+ #: admin/includes/tab-settings.php:313 admin/includes/tab-settings.php:494
756
+ #: admin/includes/tab-settings.php:618 admin/includes/tab-settings.php:1231
757
  msgid "Disable"
758
  msgstr "無効"
759
 
760
+ #: admin/includes/tab-settings.php:314
761
  msgid "Verify file extension and MIME type"
762
+ msgstr "拡張子と&thinsp;MIME&thinsp;タイプを検証"
 
 
763
 
764
+ #: admin/includes/tab-settings.php:315
765
  msgid "Verify file extension only"
766
  msgstr "ファイル拡張子のみを検証"
767
 
768
+ #: admin/includes/tab-settings.php:325
769
  #, php-format
770
  msgid ""
771
  "<dfn title=\"You can put your original 403.php and so on into your theme "
774
  "<dfn title=\"テーマ・ディレクトリには&thinsp;403.php&thinsp;など、独自のファ"
775
  "イルを設置する事が出来ます。\">レスポンス・コード</dfn> %s"
776
 
777
+ #: admin/includes/tab-settings.php:355 admin/includes/tab-settings.php:878
778
  msgid ""
779
  "<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
780
  "to a public facing page, visitors would not be blocked on the page to "
788
  "ります。空欄の場合、サイトのホームが使用されます。\">リダイレクト先&thinsp;"
789
  "URL</dfn>"
790
 
791
+ #: admin/includes/tab-settings.php:373 admin/includes/tab-settings.php:897
792
  msgid ""
793
  "<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
794
  "message</dfn>"
796
  "<dfn title=\"レスポンス・コード&thinsp;4xx、5xx&thinsp;用のメッセージを指定し"
797
  "ます。\">レスポンス・メッセージ</dfn>"
798
 
799
+ #: admin/includes/tab-settings.php:390
800
  msgid ""
801
  "<dfn title=\"This is applied to &#8220;XML-RPC&#8221; and &#8220;Login "
802
  "form&#8221;. Lockout period is defined as expiration time at &#8220;Cache "
803
  "settings&#8221;.\">Max number of failed login attempts per IP address</dfn>"
804
  msgstr ""
805
  "<dfn title=\"「XML-RPC」と「ログイン・フォーム」に適用されます。ロックアウト"
806
+ "時間は「キャッシュの設定」の「有効時間」で定義します。\">IPアドレス当たりのロ"
807
+ "グイン試行可能回数</dfn>"
808
 
809
+ #: admin/includes/tab-settings.php:418
810
  msgid "Select when to run the validation."
811
  msgstr "検証を実行するタイミングを選択します。"
812
 
813
+ #: admin/includes/tab-settings.php:418
814
  msgid "Validation timing"
815
  msgstr "検証のタイミング"
816
 
817
+ #: admin/includes/tab-settings.php:429
818
  msgid "&#8220;init&#8221; action hook"
819
  msgstr "&#8220;init&#8221; アクション・フック"
820
 
821
+ #: admin/includes/tab-settings.php:430
822
  msgid "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
823
  msgstr "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
824
 
825
+ #: admin/includes/tab-settings.php:433
826
  msgid ""
827
  "Validate at &#8220;init&#8221; action hook in the same manner as typical "
828
  "plugins."
830
  "標準的な他のプラグインと同様、init アクション・フックのタイミングで検証を実行"
831
  "します。"
832
 
833
+ #: admin/includes/tab-settings.php:434
834
  msgid ""
835
  "Validate at an earlier phase than other typical plugins. It can reduce load "
836
  "on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
842
  "com/codex/validation-timing.html' title='Validation timing | IP Geo Block'>幾"
843
  "つかの制限事項</a>&thinsp;が生じます。"
844
 
845
+ #: admin/includes/tab-settings.php:444
846
  msgid "Back-end target settings"
847
  msgstr "バックエンドの設定"
848
 
849
+ #: admin/includes/tab-settings.php:450
850
  #, php-format
851
  msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
852
  msgstr "<dfn title=\"%s へのリクエストを検証する\">%s</dfn>"
853
 
854
+ #: admin/includes/tab-settings.php:456
855
  msgid "Other areas"
856
+ msgstr "その他の領域"
857
 
858
+ #: admin/includes/tab-settings.php:457
859
  msgid "public facing pages"
860
  msgstr "一般公開ページ"
861
 
862
+ #: admin/includes/tab-settings.php:475 admin/includes/tab-settings.php:495
863
+ #: admin/includes/tab-settings.php:528 admin/includes/tab-settings.php:534
864
+ #: admin/includes/tab-settings.php:779
865
  msgid "Block by country"
866
  msgstr "国コードで遮断"
867
 
868
+ #: admin/includes/tab-settings.php:496
869
  msgid "Completely close"
870
  msgstr "完全に閉鎖"
871
 
872
+ #: admin/includes/tab-settings.php:529
873
  msgid ""
874
  "<dfn title=\"Specify the individual action as a blocking target.\">Target "
875
  "actions</dfn>"
876
  msgstr ""
877
  "<dfn title=\"遮断対象とするアクションを指定します。\">対象アクション</dfn>"
878
 
879
+ #: admin/includes/tab-settings.php:535
880
  msgid "Prevent Zero-day Exploit"
881
  msgstr "ゼロデイ攻撃を遮断"
882
 
883
+ #: admin/includes/tab-settings.php:539
884
  msgid ""
885
  "It will block a request related to the services for both public facing pages "
886
  "and the dashboard."
887
  msgstr ""
888
  "一般公開ページとダッシュボード向けサービスに関連するリクエストを遮断します。"
889
 
890
+ #: admin/includes/tab-settings.php:540
891
  msgid ""
892
  "Regardless of the country code, it will block a malicious request related to "
893
  "the services only for the dashboard."
895
  "国コードに拘らず、ダッシュボード向けサービスだけに関連する悪意のあるリクエス"
896
  "トを遮断します。"
897
 
898
+ #: admin/includes/tab-settings.php:563
899
  msgid "admin post for logged-in user"
900
  msgstr "認証済ユーザー用 admin post"
901
 
902
+ #: admin/includes/tab-settings.php:564
903
  msgid "admin post for non logged-in user"
904
  msgstr "未認証ユーザー用 admin post"
905
 
906
+ #: admin/includes/tab-settings.php:588
907
  msgid "Admin ajax/post"
908
  msgstr "管理領域&thinsp;ajax/post"
909
 
910
+ #: admin/includes/tab-settings.php:602
911
  msgid ""
912
+ "Specify the action name (&#8220;action=&hellip;&#8221;) or the page name "
913
+ "(&#8220;page=&hellip;&#8221;) to prevent unintended blocking caused by "
914
+ "&#8220;Block by country&#8221; (for non logged-in user) and &#8220;Prevent "
915
+ "Zero-day Exploit&#8221; (for logged-in user)."
916
  msgstr ""
917
+ "「国コードで遮断」(未認証ユーザーの場合)および「ゼロデイ攻撃を遮断」(認証"
918
+ "済みユーザーの場合)が、意図しない遮断の原因となる場合、アクション名(&#8220;"
919
+ "action=&hellip;&#8221; の &#8220;&hellip;&#8221; 部分)、またはページ名"
920
+ "(&#8220;page=&hellip;&#8221; の &#8220;&hellip;&#8221; 部分)を指定し、検証"
921
+ "対象から除外します。"
922
 
923
+ #: admin/includes/tab-settings.php:602 admin/includes/tab-settings.php:680
924
+ #: admin/includes/tab-settings.php:741
925
+ msgid "Exceptions"
926
+ msgstr "例外"
927
+
928
+ #: admin/includes/tab-settings.php:603
929
  msgid "Toggle with non logged-in user"
930
+ msgstr "未認証ユーザー用を含む項目に限定して表示する"
931
 
932
+ #: admin/includes/tab-settings.php:606
933
+ msgid "Candidate actions/pages"
934
+ msgstr "候補&thinsp;アクション/ページ"
935
 
936
+ #: admin/includes/tab-settings.php:620
937
  #, php-format
938
  msgid ""
939
  "Regardless of the country code, it will block a malicious request to <code>"
940
  "%s&ctdot;/*.php</code>."
941
  msgstr ""
942
+ "国コードに拘らず、<code>%s&ctdot;/*.php</code>への悪意のあるリクエストを遮断"
943
  "します。"
944
 
945
+ #: admin/includes/tab-settings.php:621
946
  msgid ""
947
+ "Select the item which causes unintended blocking in order to exclude from "
948
+ "the validation target. Grayed item indicates &#8220;INACTIVE&#8221;."
 
949
  msgstr ""
950
+ "意図しない遮断の原因となる項目を選択し、検証対象から除外します。灰色で表示さ"
951
+ "れた項目は、「非アクティブ」であることを示しています。"
 
952
 
953
+ #: admin/includes/tab-settings.php:622
954
  #, php-format
955
  msgid ""
956
  "It configures &#8220;%s&#8221; to validate a request to the PHP file which "
957
+ "does not load WordPress core. Make sure to deny direct access to the hidden "
958
+ "files beginning with a dot by the server's configuration."
959
  msgstr ""
960
  "WordPressコアを読み込まないPHPファイルへのリクエストを検証対象とするため"
961
+ "に、%s を設定します。ドットで始まる隠しファイルへのアクセス拒否がサーバー側で"
962
+ "設定されていることを確認して下さい。"
963
 
964
+ #: admin/includes/tab-settings.php:623
965
  msgid "Sorry, but your server type is not supported."
966
  msgstr "このサーバーではサポートされません。"
967
 
968
+ #: admin/includes/tab-settings.php:659 admin/includes/tab-settings.php:720
969
  msgid "Force to load WP core"
970
  msgstr "WPコアの読み込みを強制"
971
 
972
+ #: admin/includes/tab-settings.php:664
973
  msgid "Plugins area"
974
  msgstr "プラグイン領域"
975
 
976
+ #: admin/includes/tab-settings.php:725
977
  msgid "Themes area"
978
  msgstr "テーマ領域"
979
 
980
+ #: admin/includes/tab-settings.php:760
981
  msgid "Front-end target settings"
982
  msgstr "フロントエンドの設定"
983
 
984
+ #: admin/includes/tab-settings.php:784
985
  msgid "Follow &#8220;Validation rule settings&#8221;"
986
  msgstr "「検証ルールの設定」に従う"
987
 
988
+ #: admin/includes/tab-settings.php:846
989
  #, php-format
990
  msgid ""
991
  "<dfn title=\"You can configure a different response code from the Back-end. "
993
  "\">Response code</dfn> %s"
994
  msgstr ""
995
  "<dfn title=\"バックエンドと異なるレスポンス・コードを設定できます。これは、ア"
996
+ "フィリエイト・プログラムに対する違反を防止するのに役立つでしょう。\">レスポン"
997
+ "ス・コード</dfn> %s"
998
 
999
+ #: admin/includes/tab-settings.php:912
1000
  msgid ""
1001
  "<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
1002
  msgstr "<dfn title=\"特定のページを遮断対象に指定します。\">ページ</dfn>"
1003
 
1004
+ #: admin/includes/tab-settings.php:924
1005
  msgid ""
1006
  "<dfn title=\"Specify the individual post type on a single page as a blocking "
1007
  "target.\">Post type</dfn>"
1009
  "<dfn title=\"特定の投稿タイプのシングルページを遮断対象に指定します。\">投稿"
1010
  "タイプ</dfn>"
1011
 
1012
+ #: admin/includes/tab-settings.php:936
1013
  msgid ""
1014
  "<dfn title=\"Specify the individual category on a single page or archive "
1015
  "page as a blocking target.\">Category</dfn>"
1017
  "<dfn title=\"特定のカテゴリを含むシングルページかアーカイブページを遮断対象に"
1018
  "指定します。\">カテゴリ</dfn>"
1019
 
1020
+ #: admin/includes/tab-settings.php:948
1021
  msgid ""
1022
  "<dfn title=\"Specify the individual tag on a single page or archive page as "
1023
  "a blocking target.\">Tag</dfn>"
1025
  "<dfn title=\"特定のタグを含むシングルページかアーカイブページを遮断対象に指定"
1026
  "します。\">タグ</dfn>"
1027
 
1028
+ #: admin/includes/tab-settings.php:963
1029
  msgid "Specify the validation target on front-end."
1030
  msgstr "フロントエンドの検証対象を設定します。"
1031
 
1032
+ #: admin/includes/tab-settings.php:963
1033
  msgid "Validation target"
1034
  msgstr "検証対象"
1035
 
1036
+ #: admin/includes/tab-settings.php:974
1037
  msgid "All requests"
1038
  msgstr "全てのリクエスト"
1039
 
1040
+ #: admin/includes/tab-settings.php:975
1041
  msgid "Specify the targets"
1042
  msgstr "ターゲットを指定"
1043
 
1044
+ #: admin/includes/tab-settings.php:978
1045
  msgid ""
1046
  "Notice that &#8220;Validation timing&#8221; is deferred till &#8220;"
1047
  "wp&#8221; action hook. It means that this feature would not be compatible "
1050
  "「検証のタイミング」が &#8220;wp&#8221; アクション・フックまで遅延されます。"
1051
  "これにより、ページ・キャッシュとの互換性がなくなることに注意してください。"
1052
 
1053
+ #: admin/includes/tab-settings.php:988
1054
  msgid ""
1055
  "A part of user agent string and a qualification connected with a separator "
1056
  "that indicates an applicable rule and can be &#8220;:&#8221; (pass) or "
1064
  "国コード、または&nbsp;IPアドレス(CIDR記法)が使えます。また否定を表す記号"
1065
  "「!」を「条件」の直前に配置する事が出来ます。"
1066
 
1067
+ #: admin/includes/tab-settings.php:988
1068
  msgid "UA string and qualification"
1069
  msgstr "ユーザーエージェント(UA)文字列と条件"
1070
 
1071
+ #: admin/includes/tab-settings.php:1007
1072
  msgid "Specify the name of action that is invariably blocked."
1073
  msgstr "遮断されるアクション名を指定します。"
1074
 
1075
+ #: admin/includes/tab-settings.php:1007
1076
  msgid "Excluded actions"
1077
  msgstr "除外するアクション"
1078
 
1079
+ #: admin/includes/tab-settings.php:1026
1080
  msgid ""
1081
  "It enables to verify the host by reverse DNS lookup which would spend some "
1082
  "server resources. If it is disabled, &#8220;HOST&#8221; and &#8220;"
1087
  "ます)。無効にした場合、「ユーザーエージェント文字列と条件」中の「HOST」、"
1088
  "「HOST=&hellip;」は常に真となります。"
1089
 
1090
+ #: admin/includes/tab-settings.php:1026
1091
  msgid "DNS reverse lookup"
1092
  msgstr "DNS&thinsp;逆引き"
1093
 
1094
+ #: admin/includes/tab-settings.php:1043
1095
  msgid ""
1096
  "It enables to simulate validation without deployment. The results can be "
1097
  "found at &#8220;Public facing pages&#8221; in Logs."
1099
  "機能を有効にする事なくリクエストの検証をシミュレートします。結果はログで確認"
1100
  "する事が出来ます。"
1101
 
1102
+ #: admin/includes/tab-settings.php:1043
1103
  msgid "Simulation mode"
1104
  msgstr "シミュレーション・モード"
1105
 
1106
+ #: admin/includes/tab-settings.php:1061
1107
  msgid "Geolocation API settings"
1108
  msgstr "位置情報APIの設定"
1109
 
1110
+ #: admin/includes/tab-settings.php:1070
1111
  msgid ""
1112
  "<dfn title=\"Cache and local database are scanned at the top priority.\">API "
1113
  "selection and key settings</dfn>"
1115
  "<dfn title=\"キャッシュとローカルのデータベースが最優先で検索されます。\">API"
1116
  "の選択とキーの設定</dfn>"
1117
 
1118
+ #: admin/includes/tab-settings.php:1089
1119
  msgid "Timeout for network API [sec]"
1120
  msgstr "ネットワークAPIのタイムアウト[秒]"
1121
 
1122
+ #: admin/includes/tab-settings.php:1109
1123
  #, php-format
1124
  msgid ""
1125
  "Can not find geolocation API libraries in <code>%s</code>. It seems to have "
1144
  "IP Geo Block\">FAQ</a> を参照し、適切な書き込み権限と共に <code>ip-geo-api</"
1145
  "code> をインストールしてください。"
1146
 
1147
+ #: admin/includes/tab-settings.php:1116
1148
  msgid "Local database settings"
1149
  msgstr "ローカル・データベースの設定"
1150
 
1151
+ #: admin/includes/tab-settings.php:1130
1152
  msgid "database"
1153
  msgstr "ファイル"
1154
 
1155
+ #: admin/includes/tab-settings.php:1140
1156
  msgid "Auto updating (once a month)"
1157
  msgstr "自動更新(月1回)"
1158
 
1159
+ #: admin/includes/tab-settings.php:1157
1160
  msgid "Download database"
1161
  msgstr "データベースのダウンロード"
1162
 
1163
+ #: admin/includes/tab-settings.php:1165
1164
  msgid "Download now"
1165
  msgstr "今すぐダウンロード"
1166
 
1167
+ #: admin/includes/tab-settings.php:1176
1168
  msgid "Statistics and Logs settings"
1169
  msgstr "統計とログの設定"
1170
 
1171
+ #: admin/includes/tab-settings.php:1185
1172
  msgid "Record &#8220;Statistics&#8221;"
1173
  msgstr "検証の統計を記録"
1174
 
1175
+ #: admin/includes/tab-settings.php:1202
1176
  msgid "Maximum period for &#8220;Statistics&#8221; (days)"
1177
  msgstr "記録する統計の最大期間(日)"
1178
 
1179
+ #: admin/includes/tab-settings.php:1220
1180
  msgid "Record &#8220;Logs&#8221;"
1181
  msgstr "検証のログを記録"
1182
 
1183
+ #: admin/includes/tab-settings.php:1232
1184
  msgid "When requests blocked"
1185
  msgstr "遮断時に記録"
1186
 
1187
+ #: admin/includes/tab-settings.php:1233
1188
  msgid "When requests passed"
1189
  msgstr "通過時に記録"
1190
 
1191
+ #: admin/includes/tab-settings.php:1234
1192
+ msgid "When &#8220;blocked&#8221; or &#8220;passed (not in whitelist)&#8221;"
1193
  msgstr "遮断時または遮断対象国の通過時に記録"
1194
 
1195
+ #: admin/includes/tab-settings.php:1235
1196
  msgid "Unauthenticated visitor"
1197
  msgstr "未認証の訪問者を記録"
1198
 
1199
+ #: admin/includes/tab-settings.php:1236
1200
  msgid "Authenticated user"
1201
  msgstr "認証済のユーザーを記録"
1202
 
1203
+ #: admin/includes/tab-settings.php:1237
1204
  msgid "All the validation"
1205
  msgstr "すべての検証を記録"
1206
 
1207
+ #: admin/includes/tab-settings.php:1246
1208
  msgid "Maximum entries of &#8220;Logs&#8221;"
1209
  msgstr "記録するログの最大エントリ数"
1210
 
1211
+ #: admin/includes/tab-settings.php:1263
1212
  msgid ""
1213
  "<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
1214
  "recorded with their values in &#8220;Logs&#8221;</dfn>"
1216
  "<dfn title=\"例)action, comment, log, pwd, FILES\">ログに記録する際に内容を"
1217
  "展開する$_POSTのキー</dfn>"
1218
 
1219
+ #: admin/includes/tab-settings.php:1281
1220
  msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
1221
  msgstr "<dfn title=\"例)123.456.789.***\">IPアドレスを匿名化する</dfn>"
1222
 
1223
+ #: admin/includes/tab-settings.php:1298
1224
  msgid ""
1225
  "<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
1226
  "&#8220;Live update&#8221;</dfn>"
1228
  "<dfn title=\"SQLiteデータベース・ソースを選択します。\">ライブアップデート用"
1229
  "SQLiteデータベース・ソースの選択</dfn>"
1230
 
1231
+ #: admin/includes/tab-settings.php:1310
1232
  msgid "Ordinary file"
1233
  msgstr "通常のファイル"
1234
 
1235
+ #: admin/includes/tab-settings.php:1311
1236
  msgid "In-Memory"
1237
  msgstr "イン・メモリ"
1238
 
1239
+ #: admin/includes/tab-settings.php:1314
1240
  msgid "PDO_SQLITE driver not available"
1241
  msgstr "PDO_SQLITEドライバが利用出来ません。"
1242
 
1243
+ #: admin/includes/tab-settings.php:1315
1244
  msgid ""
1245
  "It takes a few tens of milliseconds as overhead. It can be safely used "
1246
  "without conflict with other plugins."
1248
  "数十ミリ秒のオーバーヘッドがかかります。他のプラグインと競合することなく、安"
1249
  "全に使用できます。"
1250
 
1251
+ #: admin/includes/tab-settings.php:1316
1252
  msgid ""
1253
  "It takes a few milliseconds as overhead. There is a possibility of conflict "
1254
  "with other plugins using this method."
1256
  "数ミリ秒のオーバーヘッドがかかります。同手法を用いている他のプラグインと競合"
1257
  "する可能性があります。"
1258
 
1259
+ #: admin/includes/tab-settings.php:1325
1260
  msgid "Reset database source of &#8220;Live update&#8221;"
1261
  msgstr "ライブアップデートのデータソースをリセットする"
1262
 
1263
+ #: admin/includes/tab-settings.php:1333
1264
  msgid "Reset now"
1265
  msgstr "今すぐリセット"
1266
 
1267
+ #: admin/includes/tab-settings.php:1344
1268
  msgid "IP address cache settings"
1269
  msgstr "IPアドレスのキャッシュ設定"
1270
 
1271
+ #: admin/includes/tab-settings.php:1353
1272
  #, php-format
1273
  msgid ""
1274
  "<dfn title=\"If user authentication fails consecutively %d times, subsequent "
1278
  "<dfn title=\"ユーザ認証が連続%d回失敗した場合も、以降のログインがこの期間だけ"
1279
  "(ガベージコレクション周期を含む)禁止されます。\">有効時間 [sec]</dfn>"
1280
 
1281
+ #: admin/includes/tab-settings.php:1369
1282
  msgid "Garbage collection period [sec]"
1283
  msgstr "ガベージコレクション周期 [秒]"
1284
 
1285
+ #: admin/includes/tab-settings.php:1386
1286
  msgid "Number of entries to be displayed in cache"
1287
  msgstr "「キャッシュ中のIPアドレス」に表示する最大数"
1288
 
1289
+ #: admin/includes/tab-settings.php:1404
1290
  msgid "Submission settings"
1291
  msgstr "投稿時の設定"
1292
 
1293
+ #: admin/includes/tab-settings.php:1416
1294
  msgid "The whole will be wrapped by &lt;p&gt; tag. Allowed tags: "
1295
  msgstr "全体が&lt;p&gt;タグで囲われます。使用可能タグ:"
1296
 
1297
+ #: admin/includes/tab-settings.php:1416
1298
  msgid "Message on comment form"
1299
  msgstr "投稿フォーム上のメッセージ"
1300
 
1301
+ #: admin/includes/tab-settings.php:1428
1302
  msgid "None"
1303
  msgstr "なし"
1304
 
1305
+ #: admin/includes/tab-settings.php:1429
1306
  msgid "Top"
1307
  msgstr "上部"
1308
 
1309
+ #: admin/includes/tab-settings.php:1430
1310
  msgid "Bottom"
1311
  msgstr "下部"
1312
 
1313
+ #: admin/includes/tab-settings.php:1441
1314
  msgid "Plugin settings"
1315
  msgstr "プラグインの設定"
1316
 
1317
+ #: admin/includes/tab-settings.php:1454
1318
  msgid ""
1319
  "<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
1320
  "settings</dfn>"
1322
  "<dfn title=\"全ての設定をネットワーク全体で同期させます。\">ネットワークの一"
1323
  "括設定</dfn>"
1324
 
1325
+ #: admin/includes/tab-settings.php:1472
1326
  msgid "Remove all settings at uninstallation"
1327
  msgstr "アンインストール時に全設定を削除"
1328
 
1329
+ #: admin/includes/tab-settings.php:1490
1330
  msgid ""
1331
  "<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
1332
  "dfn>"
1334
  "<dfn title=\"Google Maps JavaScript API に有効なキー\">Google Maps API キー</"
1335
  "dfn>"
1336
 
1337
+ #: admin/includes/tab-settings.php:1504
1338
  msgid ""
1339
  "You need to click the &#8220;Save Changes&#8221; button for imported "
1340
  "settings to take effect."
1342
  "インポートされた設定を有効にするには、「変更を保存」ボタンをクリックする必要"
1343
  "があります。"
1344
 
1345
+ #: admin/includes/tab-settings.php:1510
1346
  msgid "Export / Import settings"
1347
  msgstr "設定のエクスポート、インポート"
1348
 
1349
+ #: admin/includes/tab-settings.php:1517
1350
  msgid "Export settings"
1351
  msgstr "エクスポート"
1352
 
1353
+ #: admin/includes/tab-settings.php:1518
1354
  msgid "Import from the local file"
1355
  msgstr "ローカル・ファイルからインポートします"
1356
 
1357
+ #: admin/includes/tab-settings.php:1518
1358
  msgid "Import settings"
1359
  msgstr "インポート"
1360
 
1361
+ #: admin/includes/tab-settings.php:1527
1362
  msgid "Import pre-defined settings"
1363
  msgstr "プリセットのインポート"
1364
 
1365
+ #: admin/includes/tab-settings.php:1534
1366
  msgid ""
1367
  "Import the default settings to revert to the &#8220;Right after "
1368
  "installing&#8221; state"
1369
  msgstr "インストール直後の状態に戻すための設定値をインポートします"
1370
 
1371
+ #: admin/includes/tab-settings.php:1534
1372
  msgid "Default settings"
1373
  msgstr "初期設定"
1374
 
1375
+ #: admin/includes/tab-settings.php:1535
1376
  msgid ""
1377
  "Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
1378
  "for the &#8220;Back-end target settings&#8221;"
1379
  msgstr ""
1380
+ "「ゼロデイ攻撃の遮断」など、主に「バックエンドの設定」の推奨設定をインポート"
1381
+ "します。"
1382
 
1383
+ #: admin/includes/tab-settings.php:1535
1384
  msgid "Best for Back-end"
1385
  msgstr "バックエンドの推奨設定"
1386
 
1387
+ #: admin/includes/tab-settings.php:1545
1388
  msgid "Delete DB table for validation logs"
1389
  msgstr "検証のログ用データベース・テーブルの削除"
1390
 
1391
+ #: admin/includes/tab-settings.php:1553
1392
  msgid "Delete now"
1393
  msgstr "今すぐ削除"
1394
 
1395
+ #: admin/includes/tab-settings.php:1561
1396
  msgid "Create DB table for validation logs"
1397
  msgstr "検証のログ用データベース・テーブルの作成"
1398
 
1399
+ #: admin/includes/tab-settings.php:1569
1400
  msgid "Create now"
1401
  msgstr "今すぐ作成"
1402
 
1403
+ #: admin/includes/tab-settings.php:1579
1404
  msgid ""
1405
  "<dfn title=\"When an unexpected blocking has occurred, please press the "
1406
  "button to find the blocked request in the dumped information which may help "
1414
  "plugin/ip-geo-block\" title=\"WordPress &#8250; Support &raquo; IP Geo Block"
1415
  "\">サポート・フォーラム</a> ]"
1416
 
1417
+ #: admin/includes/tab-settings.php:1586
1418
  msgid "Please copy &amp; paste when submitting your issue to support forum."
1419
  msgstr "フォーラムに問題を投稿する際、コピーして張り付けてください。"
1420
 
1421
+ #: admin/includes/tab-settings.php:1586
1422
  msgid "Show information"
1423
  msgstr "情報を表示"
1424
 
1425
+ #: admin/includes/tab-settings.php:1602
1426
  msgid ""
1427
  "To enhance the protection ability, please refer to &#8220;<a rel=\"noreferrer"
1428
  "\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
1434
  "\" title=\"The best practice for target settings | IP Geo Block\">The best "
1435
  "practice fortarget settings</a>&#8220;&thinsp;を参照してください。"
1436
 
1437
+ #: admin/includes/tab-settings.php:1603
1438
  msgid ""
1439
  "If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
1440
  "\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
1448
  "com/codex/#faq\" title=\"Codex | IP Geo Block\">Codex</a> の FAQ を参照してく"
1449
  "ださい。"
1450
 
1451
+ #: admin/includes/tab-settings.php:1610
1452
  msgid ""
1453
  "While Maxmind and IP2Location will fetch the local database, others will "
1454
  "pass an IP address to the APIs via HTTP."
1456
  "MaxmindとIP2Locationはローカルのデータベースを検索しますが、他はHTTPを介して"
1457
  "APIにIPアドレスを渡します。"
1458
 
1459
+ #: admin/includes/tab-settings.php:1611
1460
  msgid ""
1461
  "Please select the appropriate APIs to fit the privacy law in your country."
1462
  msgstr "自国のプライバシー関連法規に合わせ、適切なAPIを選択して下さい。"
1463
 
1464
+ #: admin/includes/tab-settings.php:1618
1465
  msgid ""
1466
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1467
  "ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
1473
  "end\" title=\"Codex | IP Geo Block\">Blocking on front-end</a>&#8221; を参照"
1474
  "してください。"
1475
 
1476
+ #: admin/includes/tab-settings.php:1619
1477
  msgid ""
1478
  "If you find any issues or have something to suggest, please feel free to "
1479
  "open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
1485
  "&#8250; Support &raquo; IP Geo Block\">サポートフォーラム</a> に投稿をお願い"
1486
  "します。"
1487
 
1488
+ #: admin/includes/tab-settings.php:1626
1489
  msgid ""
1490
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1491
  "ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
1495
  "record-settings-and-logs.html\" title=\"Codex | IP Geo Block\">Record "
1496
  "settings and logs</a>&#8221; を参照ください。"
1497
 
1498
+ #: admin/includes/class-admin-rewrite.php:169
1499
+ #: admin/includes/class-admin-rewrite.php:195
1500
  #, php-format
1501
  msgid "Or please refer to %s to set it manually."
1502
  msgstr "あるいは %s を参照し、手動で設定して下さい。"
1503
 
1504
+ #: admin/includes/class-admin-rewrite.php:234
1505
  #, php-format
1506
  msgid "&#8220;auto_prepend_file&#8221; already defined in %s."
1507
  msgstr "%s&thinsp;で既に「auto_prepend_file」が設定されています。"
1579
  msgstr "統計のクリア"
1580
 
1581
  #: admin/includes/tab-statistics.php:185
1582
+ msgid "Statistics in Logs"
1583
  msgstr "ログの統計"
1584
 
1585
  #: admin/includes/tab-statistics.php:217
1598
  msgid "Clear cache"
1599
  msgstr "キャッシュのクリア"
1600
 
1601
+ #: admin/includes/tab-statistics.php:288
1602
  msgid "Country (Top 10)"
1603
  msgstr "国(トップ10)"
1604
 
1605
+ #: admin/includes/tab-statistics.php:289
1606
  msgid "AS number (Top 10)"
1607
  msgstr "AS番号(トップ10)"
1608
 
1609
+ #: admin/includes/tab-statistics.php:290
1610
  msgid "IP address (Top 10)"
1611
  msgstr "IPアドレス(トップ10)"
1612
 
1613
+ #: admin/includes/tab-statistics.php:291
1614
  msgid "Slug in back-end"
1615
  msgstr "バックエンドのスラッグ"
1616
 
1617
+ #: admin/includes/tab-statistics.php:343
1618
+ msgid "Toggle sorting order"
1619
+ msgstr "ソート順を切り替え"
1620
+
1621
+ #: admin/includes/tab-statistics.php:392
1622
  msgid ""
1623
  "[<strong>Record validation statistics</strong>] on [<strong>Settings</"
1624
  "strong>] tab is not selected as [<strong>Enable</strong>]."
1626
  "[<strong>設定</strong>]タブの[<strong>検証の統計を記録</strong>]に"
1627
  "[<strong>有効</strong>]が選択されていません。"
1628
 
1629
+ #: admin/includes/tab-statistics.php:393
1630
  msgid ""
1631
  "Please set the proper condition to record and analyze the validation "
1632
  "statistics."
1633
  msgstr "検証の統計を記録し分析するためには、適切な条件を設定して下さい。"
1634
 
1635
+ #: admin/includes/tab-statistics.php:398
1636
  msgid ""
1637
  "Please set the proper condition to record and analyze the validation logs."
1638
  msgstr "検証のログを記録し分析するためには、適切な条件を設定して下さい。"
languages/ip-geo-block.mo CHANGED
Binary file
languages/ip-geo-block.po CHANGED
@@ -1,11 +1,11 @@
1
- # Copyright (C) 2013-2017 tokkonopapa
2
  # This file is distributed under the same license as the IP Geo Block package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: IP Geo Block 3.0.5\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
7
- "POT-Creation-Date: 2017-11-29 01:33+0900\n"
8
- "PO-Revision-Date: 2017-11-29 01:34+0900\n"
9
  "Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
10
  "Language-Team: \n"
11
  "MIME-Version: 1.0\n"
@@ -28,8 +28,8 @@ msgstr ""
28
  #: classes/class-ip-geo-block-opts.php:409
29
  #: classes/class-ip-geo-block-cron.php:273
30
  #: classes/class-ip-geo-block-cron.php:305
31
- #: admin/class-ip-geo-block-admin.php:1217
32
- #: admin/includes/class-admin-rewrite.php:169
33
  #, php-format
34
  msgid "Unable to write <code>%s</code>. Please check the permission."
35
  msgstr ""
@@ -40,7 +40,7 @@ msgstr ""
40
 
41
  #: classes/class-ip-geo-block-cron.php:268
42
  #: classes/class-ip-geo-block-cron.php:300
43
- #: admin/includes/class-admin-rewrite.php:143
44
  #, php-format
45
  msgid "Unable to read <code>%s</code>. Please check the permission."
46
  msgstr ""
@@ -55,7 +55,7 @@ msgid "gz or zip is not supported on your system."
55
  msgstr ""
56
 
57
  #: classes/class-ip-geo-block-cron.php:334
58
- #: admin/includes/tab-settings.php:1105
59
  #, php-format
60
  msgid "Last update: %s"
61
  msgstr ""
@@ -96,138 +96,154 @@ msgid ""
96
  "<strong>you'll be blocked</strong> after the cache expires."
97
  msgstr ""
98
 
99
- #: admin/class-ip-geo-block-admin.php:271
100
  msgid "Import settings ?"
101
  msgstr ""
102
 
103
- #: admin/class-ip-geo-block-admin.php:272
104
  msgid "Create table ?"
105
  msgstr ""
106
 
107
- #: admin/class-ip-geo-block-admin.php:273
108
  msgid "Delete table ?"
109
  msgstr ""
110
 
111
- #: admin/class-ip-geo-block-admin.php:274
112
  msgid "Clear statistics ?"
113
  msgstr ""
114
 
115
- #: admin/class-ip-geo-block-admin.php:275
116
  msgid "Clear cache ?"
117
  msgstr ""
118
 
119
- #: admin/class-ip-geo-block-admin.php:276
120
  msgid "Clear logs ?"
121
  msgstr ""
122
 
123
- #: admin/class-ip-geo-block-admin.php:277
124
  msgid "ajax for logged-in user"
125
  msgstr ""
126
 
127
- #: admin/class-ip-geo-block-admin.php:278
128
  msgid "ajax for non logged-in user"
129
  msgstr ""
130
 
131
- #: admin/class-ip-geo-block-admin.php:279
 
 
 
 
 
 
 
 
 
 
132
  msgid "This feature is available with HTML5 compliant browsers."
133
  msgstr ""
134
 
135
- #: admin/class-ip-geo-block-admin.php:280
136
  msgid "The selected row cannot be found in the visible area."
137
  msgstr ""
138
 
139
- #: admin/class-ip-geo-block-admin.php:284
 
 
 
 
 
 
140
  msgid "No data available in table"
141
  msgstr ""
142
 
143
- #: admin/class-ip-geo-block-admin.php:285
144
  msgid "No matching records found"
145
  msgstr ""
146
 
147
- #: admin/class-ip-geo-block-admin.php:286
148
  #: admin/includes/tab-geolocation.php:71
149
  msgid "IP address"
150
  msgstr ""
151
 
152
- #: admin/class-ip-geo-block-admin.php:287
153
  msgid "Code"
154
  msgstr ""
155
 
156
- #: admin/class-ip-geo-block-admin.php:288
157
  msgid "ASN"
158
  msgstr ""
159
 
160
- #: admin/class-ip-geo-block-admin.php:289
161
  msgid "Host name"
162
  msgstr ""
163
 
164
- #: admin/class-ip-geo-block-admin.php:290
165
  msgid "Target"
166
  msgstr ""
167
 
168
- #: admin/class-ip-geo-block-admin.php:291
169
  msgid "Failure / Total"
170
  msgstr ""
171
 
172
- #: admin/class-ip-geo-block-admin.php:292
173
  msgid "Elapsed[sec]"
174
  msgstr ""
175
 
176
- #: admin/class-ip-geo-block-admin.php:293
177
  msgid "Time"
178
  msgstr ""
179
 
180
- #: admin/class-ip-geo-block-admin.php:294
181
  msgid "Result"
182
  msgstr ""
183
 
184
- #: admin/class-ip-geo-block-admin.php:295
185
  msgid "Request"
186
  msgstr ""
187
 
188
- #: admin/class-ip-geo-block-admin.php:296
189
  msgid "User agent"
190
  msgstr ""
191
 
192
- #: admin/class-ip-geo-block-admin.php:297
193
  msgid "HTTP headers"
194
  msgstr ""
195
 
196
- #: admin/class-ip-geo-block-admin.php:298
197
  msgid "$_POST data"
198
  msgstr ""
199
 
200
- #: admin/class-ip-geo-block-admin.php:315
201
  msgid "Contribute on GitHub"
202
  msgstr ""
203
 
204
- #: admin/class-ip-geo-block-admin.php:329
205
- #: admin/class-ip-geo-block-admin.php:437
206
- #: admin/class-ip-geo-block-admin.php:645
207
- #: admin/class-ip-geo-block-admin.php:664
208
  msgid "Settings"
209
  msgstr ""
210
 
211
- #: admin/class-ip-geo-block-admin.php:417
212
- #: admin/class-ip-geo-block-admin.php:418
213
- #: admin/class-ip-geo-block-admin.php:428
 
214
  #: admin/class-ip-geo-block-admin.php:429
215
- #: admin/class-ip-geo-block-admin.php:436
216
- #: admin/class-ip-geo-block-admin.php:444
217
  msgid "IP Geo Block"
218
  msgstr ""
219
 
220
- #: admin/class-ip-geo-block-admin.php:445
221
- #: admin/class-ip-geo-block-admin.php:649
222
- #: admin/class-ip-geo-block-admin.php:665
223
  msgid "Site List"
224
  msgstr ""
225
 
226
- #: admin/class-ip-geo-block-admin.php:474
227
  msgid "You need WordPress 3.7+."
228
  msgstr ""
229
 
230
- #: admin/class-ip-geo-block-admin.php:480
231
  #, php-format
232
  msgid ""
233
  "Now downloading geolocation databases in background. After a little while, "
@@ -235,120 +251,120 @@ msgid ""
235
  "strong>&#8221; at <a href=\"%s\">Validation rule settings</a>."
236
  msgstr ""
237
 
238
- #: admin/class-ip-geo-block-admin.php:486
239
  #, php-format
240
  msgid ""
241
  "The &#8220;<strong>Matching rule</strong>&#8221; is not set properly. Please "
242
  "confirm it at <a href=\"%s\">Validation rule settings</a>."
243
  msgstr ""
244
 
245
- #: admin/class-ip-geo-block-admin.php:495
246
  msgid "Local database and matching rule have been updated."
247
  msgstr ""
248
 
249
- #: admin/class-ip-geo-block-admin.php:506
250
  msgid ""
251
  "Once you logout, you will be unable to login again because the number of "
252
  "login attempts reaches the limit."
253
  msgstr ""
254
 
255
- #: admin/class-ip-geo-block-admin.php:508
256
  #, php-format
257
  msgid ""
258
  "Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
259
  "tab</a> to prevent locking yourself out."
260
  msgstr ""
261
 
262
- #: admin/class-ip-geo-block-admin.php:518
263
  msgid ""
264
  "Once you logout, you will be unable to login again because your country code "
265
  "or IP address is in the blacklist."
266
  msgstr ""
267
 
268
- #: admin/class-ip-geo-block-admin.php:519
269
  msgid ""
270
  "Once you logout, you will be unable to login again because your country code "
271
  "or IP address is not in the whitelist."
272
  msgstr ""
273
 
274
- #: admin/class-ip-geo-block-admin.php:522
275
  #, php-format
276
  msgid "Please check your <a href=\"%s\">Validation rule settings</a>."
277
  msgstr ""
278
 
279
- #: admin/class-ip-geo-block-admin.php:533
280
  msgid ""
281
  "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php) at &#8220;Validation "
282
  "timing&#8221; is imcompatible with <strong>IP Geo Allow</strong>. Please "
283
  "select &#8220;init&#8221; action hook."
284
  msgstr ""
285
 
286
- #: admin/class-ip-geo-block-admin.php:646
287
  msgid "Statistics"
288
  msgstr ""
289
 
290
- #: admin/class-ip-geo-block-admin.php:647
291
  msgid "Logs"
292
  msgstr ""
293
 
294
- #: admin/class-ip-geo-block-admin.php:648
295
  msgid "Search"
296
  msgstr ""
297
 
298
- #: admin/class-ip-geo-block-admin.php:650
299
  msgid "Attribution"
300
  msgstr ""
301
 
302
- #: admin/class-ip-geo-block-admin.php:676
303
  msgid "Network wide"
304
  msgstr ""
305
 
306
- #: admin/class-ip-geo-block-admin.php:689
307
  msgid "Toggle all"
308
  msgstr ""
309
 
310
- #: admin/class-ip-geo-block-admin.php:692
311
  msgid ""
312
  "Independent of &#8220;Statistics and Logs settings&#8221;, you can see all "
313
  "the requests validated by this plugin in almost real time."
314
  msgstr ""
315
 
316
- #: admin/class-ip-geo-block-admin.php:692 admin/includes/tab-accesslog.php:37
317
  msgid "Live update"
318
  msgstr ""
319
 
320
- #: admin/class-ip-geo-block-admin.php:696
321
  msgid "Open a new window on clicking the link in the chart."
322
  msgstr ""
323
 
324
- #: admin/class-ip-geo-block-admin.php:696
325
  msgid "Open a new window"
326
  msgstr ""
327
 
328
- #: admin/class-ip-geo-block-admin.php:719
329
  msgid "Thanks for providing these great services for free."
330
  msgstr ""
331
 
332
- #: admin/class-ip-geo-block-admin.php:720
333
  msgid ""
334
  "(Most browsers will redirect you to each site <a href=\"http://www."
335
  "ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
336
  "when you click the link</a>.)"
337
  msgstr ""
338
 
339
- #: admin/class-ip-geo-block-admin.php:725
340
  msgid "Back to top"
341
  msgstr ""
342
 
343
- #: admin/class-ip-geo-block-admin.php:822
344
  msgid "Enable"
345
  msgstr ""
346
 
347
- #: admin/class-ip-geo-block-admin.php:837
348
  msgid "Select one"
349
  msgstr ""
350
 
351
- #: admin/class-ip-geo-block-admin.php:1247
352
  msgid "Settings saved."
353
  msgstr ""
354
 
@@ -356,23 +372,23 @@ msgstr ""
356
  msgid "Validation logs"
357
  msgstr ""
358
 
359
- #: admin/includes/tab-accesslog.php:52 admin/includes/tab-settings.php:450
360
  msgid "Comment post"
361
  msgstr ""
362
 
363
- #: admin/includes/tab-accesslog.php:53 admin/includes/tab-settings.php:451
364
  msgid "XML-RPC"
365
  msgstr ""
366
 
367
- #: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:452
368
  msgid "Login form"
369
  msgstr ""
370
 
371
- #: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:453
372
  msgid "Admin area"
373
  msgstr ""
374
 
375
- #: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:455
376
  msgid "Public facing pages"
377
  msgstr ""
378
 
@@ -430,7 +446,7 @@ msgstr ""
430
  msgid "Export logs"
431
  msgstr ""
432
 
433
- #: admin/includes/tab-accesslog.php:150 admin/includes/tab-settings.php:1491
434
  msgid "Export to the local file"
435
  msgstr ""
436
 
@@ -439,7 +455,7 @@ msgid "Export csv"
439
  msgstr ""
440
 
441
  #: admin/includes/tab-accesslog.php:167 admin/includes/tab-network.php:112
442
- #: admin/includes/tab-statistics.php:396
443
  msgid ""
444
  "[<strong>Record validation logs</strong>] on [<strong>Settings</strong>] tab "
445
  "is [<strong>Disable</strong>]."
@@ -530,49 +546,61 @@ msgstr ""
530
  msgid "Toggle selection"
531
  msgstr ""
532
 
533
- #: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:763
 
 
 
 
 
 
 
 
 
 
 
 
534
  msgid "Matching rule"
535
  msgstr ""
536
 
537
- #: admin/includes/tab-settings.php:137
538
  msgid ""
539
  "A request from which the country code or IP address is <strong>NOT</strong> "
540
  "in the whitelist will be blocked."
541
  msgstr ""
542
 
543
- #: admin/includes/tab-settings.php:138
544
  msgid ""
545
  "A request from which the country code or IP address is in the blacklist will "
546
  "be blocked."
547
  msgstr ""
548
 
549
- #: admin/includes/tab-settings.php:184
550
  msgid ""
551
  "<dfn title=\"It enables utilizing &#8220;AS number&#8221; in the &#8220;"
552
  "Whitelist/Blacklist of extra IP addresses&#8221; to specify a group of IP "
553
  "networks.\">Use Autonomous System Number</dfn>"
554
  msgstr ""
555
 
556
- #: admin/includes/tab-settings.php:195
557
  #, php-format
558
  msgid ""
559
  "Some useful tools for investigating ASN are introduced in &#8220;%s&#8221;."
560
  msgstr ""
561
 
562
- #: admin/includes/tab-settings.php:204
563
  msgid ""
564
  "<dfn title=\"e.g. &#8220;192.0.64.0/18&#8221; for Jetpack server, "
565
  "&#8220;69.46.36.0/27&#8221; for WordFence server or &#8220;AS32934&#8221; "
566
  "for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
567
  msgstr ""
568
 
569
- #: admin/includes/tab-settings.php:224
570
  msgid ""
571
  "<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
572
  "\">Blacklist of extra IP addresses prior to country code</dfn>"
573
  msgstr ""
574
 
575
- #: admin/includes/tab-settings.php:245
576
  msgid ""
577
  "<dfn title=\"If your server is placed behind the proxy server or the load "
578
  "balancing server, you need to put the appropriate key such as &#8220;"
@@ -581,29 +609,29 @@ msgid ""
581
  "addresses</dfn>"
582
  msgstr ""
583
 
584
- #: admin/includes/tab-settings.php:264
585
  msgid ""
586
  "<dfn title=\"It validates malicious signatures independently of &#8220;Block "
587
  "by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target "
588
  "&#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins "
589
  "area&#8221; and &#8220;Themes area&#8221;.\">Bad signatures in query</dfn> "
590
- "<nobr>(<a class=\"ip-geo-block-cycle\" id=\"ip-geo-block-decode\" title="
591
- "\"When you find ugly character string in the text area, please click to "
592
- "restore.\"><span></span></a>)</nobr>"
593
  msgstr ""
594
 
595
- #: admin/includes/tab-settings.php:278
596
  msgid ""
597
  "<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
598
  msgstr ""
599
 
600
- #: admin/includes/tab-settings.php:289
601
  msgid ""
602
  "<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
603
  "extensions</dfn>"
604
  msgstr ""
605
 
606
- #: admin/includes/tab-settings.php:293
607
  msgid ""
608
  "<dfn title=\"Specify the capabilities to be verified. Depending on the "
609
  "particular type of uploader, certain capability may be required. Default is "
@@ -611,14 +639,14 @@ msgid ""
611
  "verification will be skipped if empty.\">Capabilities to be verified</dfn>"
612
  msgstr ""
613
 
614
- #: admin/includes/tab-settings.php:293
615
  msgid ""
616
  "(&thinsp;See &#8220;<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
617
  "Roles_and_Capabilities\" title=\"Roles and Capabilities &laquo; WordPress "
618
  "Codex\">Roles and Capabilities</a>&#8221;&thinsp;)"
619
  msgstr ""
620
 
621
- #: admin/includes/tab-settings.php:300
622
  msgid ""
623
  "<dfn title=\"It restricts the file types on upload in order to block malware "
624
  "and backdoor via both back-end and front-end. Please consider to select "
@@ -627,27 +655,27 @@ msgid ""
627
  "this validation.\">Prevent malicious file uploading</dfn>"
628
  msgstr ""
629
 
630
- #: admin/includes/tab-settings.php:311 admin/includes/tab-settings.php:492
631
- #: admin/includes/tab-settings.php:611 admin/includes/tab-settings.php:1205
632
  msgid "Disable"
633
  msgstr ""
634
 
635
- #: admin/includes/tab-settings.php:312
636
  msgid "Verify file extension and MIME type"
637
  msgstr ""
638
 
639
- #: admin/includes/tab-settings.php:313
640
  msgid "Verify file extension only"
641
  msgstr ""
642
 
643
- #: admin/includes/tab-settings.php:323
644
  #, php-format
645
  msgid ""
646
  "<dfn title=\"You can put your original 403.php and so on into your theme "
647
  "directory.\">Response code</dfn> %s"
648
  msgstr ""
649
 
650
- #: admin/includes/tab-settings.php:353 admin/includes/tab-settings.php:850
651
  msgid ""
652
  "<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
653
  "to a public facing page, visitors would not be blocked on the page to "
@@ -656,42 +684,42 @@ msgid ""
656
  "\">Redirect URL</dfn>"
657
  msgstr ""
658
 
659
- #: admin/includes/tab-settings.php:371 admin/includes/tab-settings.php:869
660
  msgid ""
661
  "<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
662
  "message</dfn>"
663
  msgstr ""
664
 
665
- #: admin/includes/tab-settings.php:388
666
  msgid ""
667
  "<dfn title=\"This is applied to &#8220;XML-RPC&#8221; and &#8220;Login "
668
  "form&#8221;. Lockout period is defined as expiration time at &#8220;Cache "
669
  "settings&#8221;.\">Max number of failed login attempts per IP address</dfn>"
670
  msgstr ""
671
 
672
- #: admin/includes/tab-settings.php:416
673
  msgid "Select when to run the validation."
674
  msgstr ""
675
 
676
- #: admin/includes/tab-settings.php:416
677
  msgid "Validation timing"
678
  msgstr ""
679
 
680
- #: admin/includes/tab-settings.php:427
681
  msgid "&#8220;init&#8221; action hook"
682
  msgstr ""
683
 
684
- #: admin/includes/tab-settings.php:428
685
  msgid "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
686
  msgstr ""
687
 
688
- #: admin/includes/tab-settings.php:431
689
  msgid ""
690
  "Validate at &#8220;init&#8221; action hook in the same manner as typical "
691
  "plugins."
692
  msgstr ""
693
 
694
- #: admin/includes/tab-settings.php:432
695
  msgid ""
696
  "Validate at an earlier phase than other typical plugins. It can reduce load "
697
  "on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
@@ -699,129 +727,134 @@ msgid ""
699
  "restrictions</a>."
700
  msgstr ""
701
 
702
- #: admin/includes/tab-settings.php:442
703
  msgid "Back-end target settings"
704
  msgstr ""
705
 
706
- #: admin/includes/tab-settings.php:448
707
  #, php-format
708
  msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
709
  msgstr ""
710
 
711
- #: admin/includes/tab-settings.php:454
712
  msgid "Other areas"
713
  msgstr ""
714
 
715
- #: admin/includes/tab-settings.php:455
716
  msgid "public facing pages"
717
  msgstr ""
718
 
719
- #: admin/includes/tab-settings.php:473 admin/includes/tab-settings.php:493
720
- #: admin/includes/tab-settings.php:526 admin/includes/tab-settings.php:532
721
- #: admin/includes/tab-settings.php:751
722
  msgid "Block by country"
723
  msgstr ""
724
 
725
- #: admin/includes/tab-settings.php:494
726
  msgid "Completely close"
727
  msgstr ""
728
 
729
- #: admin/includes/tab-settings.php:527
730
  msgid ""
731
  "<dfn title=\"Specify the individual action as a blocking target.\">Target "
732
  "actions</dfn>"
733
  msgstr ""
734
 
735
- #: admin/includes/tab-settings.php:533
736
  msgid "Prevent Zero-day Exploit"
737
  msgstr ""
738
 
739
- #: admin/includes/tab-settings.php:537
740
  msgid ""
741
  "It will block a request related to the services for both public facing pages "
742
  "and the dashboard."
743
  msgstr ""
744
 
745
- #: admin/includes/tab-settings.php:538
746
  msgid ""
747
  "Regardless of the country code, it will block a malicious request related to "
748
  "the services only for the dashboard."
749
  msgstr ""
750
 
751
- #: admin/includes/tab-settings.php:564
752
  msgid "admin post for logged-in user"
753
  msgstr ""
754
 
755
- #: admin/includes/tab-settings.php:565
756
  msgid "admin post for non logged-in user"
757
  msgstr ""
758
 
759
- #: admin/includes/tab-settings.php:587
760
  msgid "Admin ajax/post"
761
  msgstr ""
762
 
763
- #: admin/includes/tab-settings.php:600
764
  msgid ""
765
- "<dfn title=\"Specify the page name (&#8220;page=&hellip;&#8221;) or the "
766
- "action name (&#8220;action=&hellip;&#8221;) to prevent undesired blocking "
767
- "caused by &#8220;Block by country&#8221; for non logged-in user and &#8220;"
768
- "Prevent Zero-day Exploit&#8221; for logged-in user.\">Exceptions</dfn>"
769
  msgstr ""
770
 
771
- #: admin/includes/tab-settings.php:600
 
 
 
 
 
772
  msgid "Toggle with non logged-in user"
773
  msgstr ""
774
 
775
- #: admin/includes/tab-settings.php:605
776
- msgid "Candidate actions"
777
  msgstr ""
778
 
779
- #: admin/includes/tab-settings.php:613
780
  #, php-format
781
  msgid ""
782
  "Regardless of the country code, it will block a malicious request to <code>"
783
  "%s&ctdot;/*.php</code>."
784
  msgstr ""
785
 
786
- #: admin/includes/tab-settings.php:614
787
  msgid ""
788
- "<dfn title=\"Select the item which causes undesired blocking in order to "
789
- "exclude from the validation target. Grayed item indicates &#8220;"
790
- "INACTIVE&#8221;.\">Exceptions</dfn>"
791
  msgstr ""
792
 
793
- #: admin/includes/tab-settings.php:615
794
  #, php-format
795
  msgid ""
796
  "It configures &#8220;%s&#8221; to validate a request to the PHP file which "
797
- "does not load WordPress core."
 
798
  msgstr ""
799
 
800
- #: admin/includes/tab-settings.php:616
801
  msgid "Sorry, but your server type is not supported."
802
  msgstr ""
803
 
804
- #: admin/includes/tab-settings.php:653 admin/includes/tab-settings.php:703
805
  msgid "Force to load WP core"
806
  msgstr ""
807
 
808
- #: admin/includes/tab-settings.php:658
809
  msgid "Plugins area"
810
  msgstr ""
811
 
812
- #: admin/includes/tab-settings.php:708
813
  msgid "Themes area"
814
  msgstr ""
815
 
816
- #: admin/includes/tab-settings.php:732
817
  msgid "Front-end target settings"
818
  msgstr ""
819
 
820
- #: admin/includes/tab-settings.php:756
821
  msgid "Follow &#8220;Validation rule settings&#8221;"
822
  msgstr ""
823
 
824
- #: admin/includes/tab-settings.php:818
825
  #, php-format
826
  msgid ""
827
  "<dfn title=\"You can configure a different response code from the Back-end. "
@@ -829,53 +862,53 @@ msgid ""
829
  "\">Response code</dfn> %s"
830
  msgstr ""
831
 
832
- #: admin/includes/tab-settings.php:884
833
  msgid ""
834
  "<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
835
  msgstr ""
836
 
837
- #: admin/includes/tab-settings.php:896
838
  msgid ""
839
  "<dfn title=\"Specify the individual post type on a single page as a blocking "
840
  "target.\">Post type</dfn>"
841
  msgstr ""
842
 
843
- #: admin/includes/tab-settings.php:908
844
  msgid ""
845
  "<dfn title=\"Specify the individual category on a single page or archive "
846
  "page as a blocking target.\">Category</dfn>"
847
  msgstr ""
848
 
849
- #: admin/includes/tab-settings.php:920
850
  msgid ""
851
  "<dfn title=\"Specify the individual tag on a single page or archive page as "
852
  "a blocking target.\">Tag</dfn>"
853
  msgstr ""
854
 
855
- #: admin/includes/tab-settings.php:935
856
  msgid "Specify the validation target on front-end."
857
  msgstr ""
858
 
859
- #: admin/includes/tab-settings.php:935
860
  msgid "Validation target"
861
  msgstr ""
862
 
863
- #: admin/includes/tab-settings.php:946
864
  msgid "All requests"
865
  msgstr ""
866
 
867
- #: admin/includes/tab-settings.php:947
868
  msgid "Specify the targets"
869
  msgstr ""
870
 
871
- #: admin/includes/tab-settings.php:950
872
  msgid ""
873
  "Notice that &#8220;Validation timing&#8221; is deferred till &#8220;"
874
  "wp&#8221; action hook. It means that this feature would not be compatible "
875
  "with any page caching."
876
  msgstr ""
877
 
878
- #: admin/includes/tab-settings.php:960
879
  msgid ""
880
  "A part of user agent string and a qualification connected with a separator "
881
  "that indicates an applicable rule and can be &#8220;:&#8221; (pass) or "
@@ -885,19 +918,19 @@ msgid ""
885
  "qualification&#8221;."
886
  msgstr ""
887
 
888
- #: admin/includes/tab-settings.php:960
889
  msgid "UA string and qualification"
890
  msgstr ""
891
 
892
- #: admin/includes/tab-settings.php:979
893
  msgid "Specify the name of action that is invariably blocked."
894
  msgstr ""
895
 
896
- #: admin/includes/tab-settings.php:979
897
  msgid "Excluded actions"
898
  msgstr ""
899
 
900
- #: admin/includes/tab-settings.php:998
901
  msgid ""
902
  "It enables to verify the host by reverse DNS lookup which would spend some "
903
  "server resources. If it is disabled, &#8220;HOST&#8221; and &#8220;"
@@ -905,35 +938,35 @@ msgid ""
905
  "return &#8220;true&#8221;."
906
  msgstr ""
907
 
908
- #: admin/includes/tab-settings.php:998
909
  msgid "DNS reverse lookup"
910
  msgstr ""
911
 
912
- #: admin/includes/tab-settings.php:1015
913
  msgid ""
914
  "It enables to simulate validation without deployment. The results can be "
915
  "found at &#8220;Public facing pages&#8221; in Logs."
916
  msgstr ""
917
 
918
- #: admin/includes/tab-settings.php:1015
919
  msgid "Simulation mode"
920
  msgstr ""
921
 
922
- #: admin/includes/tab-settings.php:1033
923
  msgid "Geolocation API settings"
924
  msgstr ""
925
 
926
- #: admin/includes/tab-settings.php:1042
927
  msgid ""
928
  "<dfn title=\"Cache and local database are scanned at the top priority.\">API "
929
  "selection and key settings</dfn>"
930
  msgstr ""
931
 
932
- #: admin/includes/tab-settings.php:1061
933
  msgid "Timeout for network API [sec]"
934
  msgstr ""
935
 
936
- #: admin/includes/tab-settings.php:1082
937
  #, php-format
938
  msgid ""
939
  "Can not find geolocation API libraries in <code>%s</code>. It seems to have "
@@ -948,123 +981,123 @@ msgid ""
948
  "troubles? | IP Geo Block\">this instruction</a>."
949
  msgstr ""
950
 
951
- #: admin/includes/tab-settings.php:1090
952
  msgid "Local database settings"
953
  msgstr ""
954
 
955
- #: admin/includes/tab-settings.php:1104
956
  msgid "database"
957
  msgstr ""
958
 
959
- #: admin/includes/tab-settings.php:1114
960
  msgid "Auto updating (once a month)"
961
  msgstr ""
962
 
963
- #: admin/includes/tab-settings.php:1131
964
  msgid "Download database"
965
  msgstr ""
966
 
967
- #: admin/includes/tab-settings.php:1139
968
  msgid "Download now"
969
  msgstr ""
970
 
971
- #: admin/includes/tab-settings.php:1150
972
  msgid "Statistics and Logs settings"
973
  msgstr ""
974
 
975
- #: admin/includes/tab-settings.php:1159
976
  msgid "Record &#8220;Statistics&#8221;"
977
  msgstr ""
978
 
979
- #: admin/includes/tab-settings.php:1176
980
  msgid "Maximum period for &#8220;Statistics&#8221; (days)"
981
  msgstr ""
982
 
983
- #: admin/includes/tab-settings.php:1194
984
  msgid "Record &#8220;Logs&#8221;"
985
  msgstr ""
986
 
987
- #: admin/includes/tab-settings.php:1206
988
  msgid "When requests blocked"
989
  msgstr ""
990
 
991
- #: admin/includes/tab-settings.php:1207
992
  msgid "When requests passed"
993
  msgstr ""
994
 
995
- #: admin/includes/tab-settings.php:1208
996
- msgid "When blocked or passed from undesired country"
997
  msgstr ""
998
 
999
- #: admin/includes/tab-settings.php:1209
1000
  msgid "Unauthenticated visitor"
1001
  msgstr ""
1002
 
1003
- #: admin/includes/tab-settings.php:1210
1004
  msgid "Authenticated user"
1005
  msgstr ""
1006
 
1007
- #: admin/includes/tab-settings.php:1211
1008
  msgid "All the validation"
1009
  msgstr ""
1010
 
1011
- #: admin/includes/tab-settings.php:1220
1012
  msgid "Maximum entries of &#8220;Logs&#8221;"
1013
  msgstr ""
1014
 
1015
- #: admin/includes/tab-settings.php:1237
1016
  msgid ""
1017
  "<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
1018
  "recorded with their values in &#8220;Logs&#8221;</dfn>"
1019
  msgstr ""
1020
 
1021
- #: admin/includes/tab-settings.php:1255
1022
  msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
1023
  msgstr ""
1024
 
1025
- #: admin/includes/tab-settings.php:1272
1026
  msgid ""
1027
  "<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
1028
  "&#8220;Live update&#8221;</dfn>"
1029
  msgstr ""
1030
 
1031
- #: admin/includes/tab-settings.php:1284
1032
  msgid "Ordinary file"
1033
  msgstr ""
1034
 
1035
- #: admin/includes/tab-settings.php:1285
1036
  msgid "In-Memory"
1037
  msgstr ""
1038
 
1039
- #: admin/includes/tab-settings.php:1288
1040
  msgid "PDO_SQLITE driver not available"
1041
  msgstr ""
1042
 
1043
- #: admin/includes/tab-settings.php:1289
1044
  msgid ""
1045
  "It takes a few tens of milliseconds as overhead. It can be safely used "
1046
  "without conflict with other plugins."
1047
  msgstr ""
1048
 
1049
- #: admin/includes/tab-settings.php:1290
1050
  msgid ""
1051
  "It takes a few milliseconds as overhead. There is a possibility of conflict "
1052
  "with other plugins using this method."
1053
  msgstr ""
1054
 
1055
- #: admin/includes/tab-settings.php:1299
1056
  msgid "Reset database source of &#8220;Live update&#8221;"
1057
  msgstr ""
1058
 
1059
- #: admin/includes/tab-settings.php:1307
1060
  msgid "Reset now"
1061
  msgstr ""
1062
 
1063
- #: admin/includes/tab-settings.php:1318
1064
  msgid "IP address cache settings"
1065
  msgstr ""
1066
 
1067
- #: admin/includes/tab-settings.php:1327
1068
  #, php-format
1069
  msgid ""
1070
  "<dfn title=\"If user authentication fails consecutively %d times, subsequent "
@@ -1072,121 +1105,121 @@ msgid ""
1072
  "\">Expiration time [sec]</dfn>"
1073
  msgstr ""
1074
 
1075
- #: admin/includes/tab-settings.php:1343
1076
  msgid "Garbage collection period [sec]"
1077
  msgstr ""
1078
 
1079
- #: admin/includes/tab-settings.php:1360
1080
  msgid "Number of entries to be displayed in cache"
1081
  msgstr ""
1082
 
1083
- #: admin/includes/tab-settings.php:1378
1084
  msgid "Submission settings"
1085
  msgstr ""
1086
 
1087
- #: admin/includes/tab-settings.php:1390
1088
  msgid "The whole will be wrapped by &lt;p&gt; tag. Allowed tags: "
1089
  msgstr ""
1090
 
1091
- #: admin/includes/tab-settings.php:1390
1092
  msgid "Message on comment form"
1093
  msgstr ""
1094
 
1095
- #: admin/includes/tab-settings.php:1402
1096
  msgid "None"
1097
  msgstr ""
1098
 
1099
- #: admin/includes/tab-settings.php:1403
1100
  msgid "Top"
1101
  msgstr ""
1102
 
1103
- #: admin/includes/tab-settings.php:1404
1104
  msgid "Bottom"
1105
  msgstr ""
1106
 
1107
- #: admin/includes/tab-settings.php:1415
1108
  msgid "Plugin settings"
1109
  msgstr ""
1110
 
1111
- #: admin/includes/tab-settings.php:1428
1112
  msgid ""
1113
  "<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
1114
  "settings</dfn>"
1115
  msgstr ""
1116
 
1117
- #: admin/includes/tab-settings.php:1446
1118
  msgid "Remove all settings at uninstallation"
1119
  msgstr ""
1120
 
1121
- #: admin/includes/tab-settings.php:1464
1122
  msgid ""
1123
  "<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
1124
  "dfn>"
1125
  msgstr ""
1126
 
1127
- #: admin/includes/tab-settings.php:1478
1128
  msgid ""
1129
  "You need to click the &#8220;Save Changes&#8221; button for imported "
1130
  "settings to take effect."
1131
  msgstr ""
1132
 
1133
- #: admin/includes/tab-settings.php:1484
1134
  msgid "Export / Import settings"
1135
  msgstr ""
1136
 
1137
- #: admin/includes/tab-settings.php:1491
1138
  msgid "Export settings"
1139
  msgstr ""
1140
 
1141
- #: admin/includes/tab-settings.php:1492
1142
  msgid "Import from the local file"
1143
  msgstr ""
1144
 
1145
- #: admin/includes/tab-settings.php:1492
1146
  msgid "Import settings"
1147
  msgstr ""
1148
 
1149
- #: admin/includes/tab-settings.php:1501
1150
  msgid "Import pre-defined settings"
1151
  msgstr ""
1152
 
1153
- #: admin/includes/tab-settings.php:1508
1154
  msgid ""
1155
  "Import the default settings to revert to the &#8220;Right after "
1156
  "installing&#8221; state"
1157
  msgstr ""
1158
 
1159
- #: admin/includes/tab-settings.php:1508
1160
  msgid "Default settings"
1161
  msgstr ""
1162
 
1163
- #: admin/includes/tab-settings.php:1509
1164
  msgid ""
1165
  "Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
1166
  "for the &#8220;Back-end target settings&#8221;"
1167
  msgstr ""
1168
 
1169
- #: admin/includes/tab-settings.php:1509
1170
  msgid "Best for Back-end"
1171
  msgstr ""
1172
 
1173
- #: admin/includes/tab-settings.php:1519
1174
  msgid "Delete DB table for validation logs"
1175
  msgstr ""
1176
 
1177
- #: admin/includes/tab-settings.php:1527
1178
  msgid "Delete now"
1179
  msgstr ""
1180
 
1181
- #: admin/includes/tab-settings.php:1535
1182
  msgid "Create DB table for validation logs"
1183
  msgstr ""
1184
 
1185
- #: admin/includes/tab-settings.php:1543
1186
  msgid "Create now"
1187
  msgstr ""
1188
 
1189
- #: admin/includes/tab-settings.php:1553
1190
  msgid ""
1191
  "<dfn title=\"When an unexpected blocking has occurred, please press the "
1192
  "button to find the blocked request in the dumped information which may help "
@@ -1195,15 +1228,15 @@ msgid ""
1195
  "&#8250; Support &raquo; IP Geo Block\">support forum</a> ]"
1196
  msgstr ""
1197
 
1198
- #: admin/includes/tab-settings.php:1560
1199
  msgid "Please copy &amp; paste when submitting your issue to support forum."
1200
  msgstr ""
1201
 
1202
- #: admin/includes/tab-settings.php:1560
1203
  msgid "Show information"
1204
  msgstr ""
1205
 
1206
- #: admin/includes/tab-settings.php:1576
1207
  msgid ""
1208
  "To enhance the protection ability, please refer to &#8220;<a rel=\"noreferrer"
1209
  "\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
@@ -1211,7 +1244,7 @@ msgid ""
1211
  "\">The best practice for target settings</a>&#8221;."
1212
  msgstr ""
1213
 
1214
- #: admin/includes/tab-settings.php:1577
1215
  msgid ""
1216
  "If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
1217
  "\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
@@ -1220,18 +1253,18 @@ msgid ""
1220
  "\">Codex</a>."
1221
  msgstr ""
1222
 
1223
- #: admin/includes/tab-settings.php:1584
1224
  msgid ""
1225
  "While Maxmind and IP2Location will fetch the local database, others will "
1226
  "pass an IP address to the APIs via HTTP."
1227
  msgstr ""
1228
 
1229
- #: admin/includes/tab-settings.php:1585
1230
  msgid ""
1231
  "Please select the appropriate APIs to fit the privacy law in your country."
1232
  msgstr ""
1233
 
1234
- #: admin/includes/tab-settings.php:1592
1235
  msgid ""
1236
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1237
  "ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
@@ -1239,7 +1272,7 @@ msgid ""
1239
  "cache plugin."
1240
  msgstr ""
1241
 
1242
- #: admin/includes/tab-settings.php:1593
1243
  msgid ""
1244
  "If you find any issues or have something to suggest, please feel free to "
1245
  "open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
@@ -1247,20 +1280,20 @@ msgid ""
1247
  "\">support forum</a>."
1248
  msgstr ""
1249
 
1250
- #: admin/includes/tab-settings.php:1600
1251
  msgid ""
1252
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1253
  "ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
1254
  "Block\">Record settings and logs</a>&#8221; for details."
1255
  msgstr ""
1256
 
1257
- #: admin/includes/class-admin-rewrite.php:144
1258
- #: admin/includes/class-admin-rewrite.php:170
1259
  #, php-format
1260
  msgid "Or please refer to %s to set it manually."
1261
  msgstr ""
1262
 
1263
- #: admin/includes/class-admin-rewrite.php:208
1264
  #, php-format
1265
  msgid "&#8220;auto_prepend_file&#8221; already defined in %s."
1266
  msgstr ""
@@ -1338,7 +1371,7 @@ msgid "Clear statistics"
1338
  msgstr ""
1339
 
1340
  #: admin/includes/tab-statistics.php:185
1341
- msgid "Statistics in logs"
1342
  msgstr ""
1343
 
1344
  #: admin/includes/tab-statistics.php:217
@@ -1357,35 +1390,39 @@ msgstr ""
1357
  msgid "Clear cache"
1358
  msgstr ""
1359
 
1360
- #: admin/includes/tab-statistics.php:291
1361
  msgid "Country (Top 10)"
1362
  msgstr ""
1363
 
1364
- #: admin/includes/tab-statistics.php:292
1365
  msgid "AS number (Top 10)"
1366
  msgstr ""
1367
 
1368
- #: admin/includes/tab-statistics.php:293
1369
  msgid "IP address (Top 10)"
1370
  msgstr ""
1371
 
1372
- #: admin/includes/tab-statistics.php:294
1373
  msgid "Slug in back-end"
1374
  msgstr ""
1375
 
1376
- #: admin/includes/tab-statistics.php:391
 
 
 
 
1377
  msgid ""
1378
  "[<strong>Record validation statistics</strong>] on [<strong>Settings</"
1379
  "strong>] tab is not selected as [<strong>Enable</strong>]."
1380
  msgstr ""
1381
 
1382
- #: admin/includes/tab-statistics.php:392
1383
  msgid ""
1384
  "Please set the proper condition to record and analyze the validation "
1385
  "statistics."
1386
  msgstr ""
1387
 
1388
- #: admin/includes/tab-statistics.php:397
1389
  msgid ""
1390
  "Please set the proper condition to record and analyze the validation logs."
1391
  msgstr ""
1
+ # Copyright (C) 2013-2018 tokkonopapa
2
  # This file is distributed under the same license as the IP Geo Block package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: IP Geo Block 3.0.6\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
7
+ "POT-Creation-Date: 2018-01-08 21:11+0900\n"
8
+ "PO-Revision-Date: 2018-01-08 23:58+0900\n"
9
  "Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
10
  "Language-Team: \n"
11
  "MIME-Version: 1.0\n"
28
  #: classes/class-ip-geo-block-opts.php:409
29
  #: classes/class-ip-geo-block-cron.php:273
30
  #: classes/class-ip-geo-block-cron.php:305
31
+ #: admin/class-ip-geo-block-admin.php:1210
32
+ #: admin/includes/class-admin-rewrite.php:194
33
  #, php-format
34
  msgid "Unable to write <code>%s</code>. Please check the permission."
35
  msgstr ""
40
 
41
  #: classes/class-ip-geo-block-cron.php:268
42
  #: classes/class-ip-geo-block-cron.php:300
43
+ #: admin/includes/class-admin-rewrite.php:168
44
  #, php-format
45
  msgid "Unable to read <code>%s</code>. Please check the permission."
46
  msgstr ""
55
  msgstr ""
56
 
57
  #: classes/class-ip-geo-block-cron.php:334
58
+ #: admin/includes/tab-settings.php:1131
59
  #, php-format
60
  msgid "Last update: %s"
61
  msgstr ""
96
  "<strong>you'll be blocked</strong> after the cache expires."
97
  msgstr ""
98
 
99
+ #: admin/class-ip-geo-block-admin.php:260
100
  msgid "Import settings ?"
101
  msgstr ""
102
 
103
+ #: admin/class-ip-geo-block-admin.php:261
104
  msgid "Create table ?"
105
  msgstr ""
106
 
107
+ #: admin/class-ip-geo-block-admin.php:262
108
  msgid "Delete table ?"
109
  msgstr ""
110
 
111
+ #: admin/class-ip-geo-block-admin.php:263
112
  msgid "Clear statistics ?"
113
  msgstr ""
114
 
115
+ #: admin/class-ip-geo-block-admin.php:264
116
  msgid "Clear cache ?"
117
  msgstr ""
118
 
119
+ #: admin/class-ip-geo-block-admin.php:265
120
  msgid "Clear logs ?"
121
  msgstr ""
122
 
123
+ #: admin/class-ip-geo-block-admin.php:266
124
  msgid "ajax for logged-in user"
125
  msgstr ""
126
 
127
+ #: admin/class-ip-geo-block-admin.php:267
128
  msgid "ajax for non logged-in user"
129
  msgstr ""
130
 
131
+ #: admin/class-ip-geo-block-admin.php:268
132
+ #, php-format
133
+ msgid "[Found: %d]"
134
+ msgstr ""
135
+
136
+ #: admin/class-ip-geo-block-admin.php:269
137
+ #, php-format
138
+ msgid "Find and verify `%s` on &#8220;Logs&#8221; tab."
139
+ msgstr ""
140
+
141
+ #: admin/class-ip-geo-block-admin.php:270
142
  msgid "This feature is available with HTML5 compliant browsers."
143
  msgstr ""
144
 
145
+ #: admin/class-ip-geo-block-admin.php:271
146
  msgid "The selected row cannot be found in the visible area."
147
  msgstr ""
148
 
149
+ #: admin/class-ip-geo-block-admin.php:272
150
+ #: admin/class-ip-geo-block-admin.php:1403
151
+ #, php-format
152
+ msgid "An error occurred while executing the ajax command `%s`."
153
+ msgstr ""
154
+
155
+ #: admin/class-ip-geo-block-admin.php:276
156
  msgid "No data available in table"
157
  msgstr ""
158
 
159
+ #: admin/class-ip-geo-block-admin.php:277
160
  msgid "No matching records found"
161
  msgstr ""
162
 
163
+ #: admin/class-ip-geo-block-admin.php:278
164
  #: admin/includes/tab-geolocation.php:71
165
  msgid "IP address"
166
  msgstr ""
167
 
168
+ #: admin/class-ip-geo-block-admin.php:279
169
  msgid "Code"
170
  msgstr ""
171
 
172
+ #: admin/class-ip-geo-block-admin.php:280
173
  msgid "ASN"
174
  msgstr ""
175
 
176
+ #: admin/class-ip-geo-block-admin.php:281
177
  msgid "Host name"
178
  msgstr ""
179
 
180
+ #: admin/class-ip-geo-block-admin.php:282
181
  msgid "Target"
182
  msgstr ""
183
 
184
+ #: admin/class-ip-geo-block-admin.php:283
185
  msgid "Failure / Total"
186
  msgstr ""
187
 
188
+ #: admin/class-ip-geo-block-admin.php:284
189
  msgid "Elapsed[sec]"
190
  msgstr ""
191
 
192
+ #: admin/class-ip-geo-block-admin.php:285
193
  msgid "Time"
194
  msgstr ""
195
 
196
+ #: admin/class-ip-geo-block-admin.php:286
197
  msgid "Result"
198
  msgstr ""
199
 
200
+ #: admin/class-ip-geo-block-admin.php:287
201
  msgid "Request"
202
  msgstr ""
203
 
204
+ #: admin/class-ip-geo-block-admin.php:288
205
  msgid "User agent"
206
  msgstr ""
207
 
208
+ #: admin/class-ip-geo-block-admin.php:289
209
  msgid "HTTP headers"
210
  msgstr ""
211
 
212
+ #: admin/class-ip-geo-block-admin.php:290
213
  msgid "$_POST data"
214
  msgstr ""
215
 
216
+ #: admin/class-ip-geo-block-admin.php:308
217
  msgid "Contribute on GitHub"
218
  msgstr ""
219
 
220
+ #: admin/class-ip-geo-block-admin.php:322
221
+ #: admin/class-ip-geo-block-admin.php:430
222
+ #: admin/class-ip-geo-block-admin.php:638
223
+ #: admin/class-ip-geo-block-admin.php:657
224
  msgid "Settings"
225
  msgstr ""
226
 
227
+ #: admin/class-ip-geo-block-admin.php:410
228
+ #: admin/class-ip-geo-block-admin.php:411
229
+ #: admin/class-ip-geo-block-admin.php:421
230
+ #: admin/class-ip-geo-block-admin.php:422
231
  #: admin/class-ip-geo-block-admin.php:429
232
+ #: admin/class-ip-geo-block-admin.php:437
 
233
  msgid "IP Geo Block"
234
  msgstr ""
235
 
236
+ #: admin/class-ip-geo-block-admin.php:438
237
+ #: admin/class-ip-geo-block-admin.php:642
238
+ #: admin/class-ip-geo-block-admin.php:658
239
  msgid "Site List"
240
  msgstr ""
241
 
242
+ #: admin/class-ip-geo-block-admin.php:467
243
  msgid "You need WordPress 3.7+."
244
  msgstr ""
245
 
246
+ #: admin/class-ip-geo-block-admin.php:473
247
  #, php-format
248
  msgid ""
249
  "Now downloading geolocation databases in background. After a little while, "
251
  "strong>&#8221; at <a href=\"%s\">Validation rule settings</a>."
252
  msgstr ""
253
 
254
+ #: admin/class-ip-geo-block-admin.php:479
255
  #, php-format
256
  msgid ""
257
  "The &#8220;<strong>Matching rule</strong>&#8221; is not set properly. Please "
258
  "confirm it at <a href=\"%s\">Validation rule settings</a>."
259
  msgstr ""
260
 
261
+ #: admin/class-ip-geo-block-admin.php:488
262
  msgid "Local database and matching rule have been updated."
263
  msgstr ""
264
 
265
+ #: admin/class-ip-geo-block-admin.php:499
266
  msgid ""
267
  "Once you logout, you will be unable to login again because the number of "
268
  "login attempts reaches the limit."
269
  msgstr ""
270
 
271
+ #: admin/class-ip-geo-block-admin.php:501
272
  #, php-format
273
  msgid ""
274
  "Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
275
  "tab</a> to prevent locking yourself out."
276
  msgstr ""
277
 
278
+ #: admin/class-ip-geo-block-admin.php:511
279
  msgid ""
280
  "Once you logout, you will be unable to login again because your country code "
281
  "or IP address is in the blacklist."
282
  msgstr ""
283
 
284
+ #: admin/class-ip-geo-block-admin.php:512
285
  msgid ""
286
  "Once you logout, you will be unable to login again because your country code "
287
  "or IP address is not in the whitelist."
288
  msgstr ""
289
 
290
+ #: admin/class-ip-geo-block-admin.php:515
291
  #, php-format
292
  msgid "Please check your <a href=\"%s\">Validation rule settings</a>."
293
  msgstr ""
294
 
295
+ #: admin/class-ip-geo-block-admin.php:526
296
  msgid ""
297
  "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php) at &#8220;Validation "
298
  "timing&#8221; is imcompatible with <strong>IP Geo Allow</strong>. Please "
299
  "select &#8220;init&#8221; action hook."
300
  msgstr ""
301
 
302
+ #: admin/class-ip-geo-block-admin.php:639
303
  msgid "Statistics"
304
  msgstr ""
305
 
306
+ #: admin/class-ip-geo-block-admin.php:640
307
  msgid "Logs"
308
  msgstr ""
309
 
310
+ #: admin/class-ip-geo-block-admin.php:641
311
  msgid "Search"
312
  msgstr ""
313
 
314
+ #: admin/class-ip-geo-block-admin.php:643
315
  msgid "Attribution"
316
  msgstr ""
317
 
318
+ #: admin/class-ip-geo-block-admin.php:669
319
  msgid "Network wide"
320
  msgstr ""
321
 
322
+ #: admin/class-ip-geo-block-admin.php:682
323
  msgid "Toggle all"
324
  msgstr ""
325
 
326
+ #: admin/class-ip-geo-block-admin.php:685
327
  msgid ""
328
  "Independent of &#8220;Statistics and Logs settings&#8221;, you can see all "
329
  "the requests validated by this plugin in almost real time."
330
  msgstr ""
331
 
332
+ #: admin/class-ip-geo-block-admin.php:685 admin/includes/tab-accesslog.php:37
333
  msgid "Live update"
334
  msgstr ""
335
 
336
+ #: admin/class-ip-geo-block-admin.php:689
337
  msgid "Open a new window on clicking the link in the chart."
338
  msgstr ""
339
 
340
+ #: admin/class-ip-geo-block-admin.php:689
341
  msgid "Open a new window"
342
  msgstr ""
343
 
344
+ #: admin/class-ip-geo-block-admin.php:712
345
  msgid "Thanks for providing these great services for free."
346
  msgstr ""
347
 
348
+ #: admin/class-ip-geo-block-admin.php:713
349
  msgid ""
350
  "(Most browsers will redirect you to each site <a href=\"http://www."
351
  "ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
352
  "when you click the link</a>.)"
353
  msgstr ""
354
 
355
+ #: admin/class-ip-geo-block-admin.php:718
356
  msgid "Back to top"
357
  msgstr ""
358
 
359
+ #: admin/class-ip-geo-block-admin.php:815
360
  msgid "Enable"
361
  msgstr ""
362
 
363
+ #: admin/class-ip-geo-block-admin.php:830
364
  msgid "Select one"
365
  msgstr ""
366
 
367
+ #: admin/class-ip-geo-block-admin.php:1240
368
  msgid "Settings saved."
369
  msgstr ""
370
 
372
  msgid "Validation logs"
373
  msgstr ""
374
 
375
+ #: admin/includes/tab-accesslog.php:52 admin/includes/tab-settings.php:452
376
  msgid "Comment post"
377
  msgstr ""
378
 
379
+ #: admin/includes/tab-accesslog.php:53 admin/includes/tab-settings.php:453
380
  msgid "XML-RPC"
381
  msgstr ""
382
 
383
+ #: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:454
384
  msgid "Login form"
385
  msgstr ""
386
 
387
+ #: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:455
388
  msgid "Admin area"
389
  msgstr ""
390
 
391
+ #: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:457
392
  msgid "Public facing pages"
393
  msgstr ""
394
 
446
  msgid "Export logs"
447
  msgstr ""
448
 
449
+ #: admin/includes/tab-accesslog.php:150 admin/includes/tab-settings.php:1517
450
  msgid "Export to the local file"
451
  msgstr ""
452
 
455
  msgstr ""
456
 
457
  #: admin/includes/tab-accesslog.php:167 admin/includes/tab-network.php:112
458
+ #: admin/includes/tab-statistics.php:397
459
  msgid ""
460
  "[<strong>Record validation logs</strong>] on [<strong>Settings</strong>] tab "
461
  "is [<strong>Disable</strong>]."
546
  msgid "Toggle selection"
547
  msgstr ""
548
 
549
+ #: admin/includes/tab-settings.php:119
550
+ msgid "Find blocked requests in &#8220;Logs&#8220;"
551
+ msgstr ""
552
+
553
+ #: admin/includes/tab-settings.php:120
554
+ msgid ""
555
+ "Before adding as &#8220;Exception&#8221;, please click on &#8220;<a class="
556
+ "\"ip-geo-block-icon ip-geo-block-icon-alert\" title=\"This button is just a "
557
+ "sample.\"><span></span></a>&#8221; button (if exists) attached to the "
558
+ "following list to confirm that the blocked request is not malicious."
559
+ msgstr ""
560
+
561
+ #: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:791
562
  msgid "Matching rule"
563
  msgstr ""
564
 
565
+ #: admin/includes/tab-settings.php:139
566
  msgid ""
567
  "A request from which the country code or IP address is <strong>NOT</strong> "
568
  "in the whitelist will be blocked."
569
  msgstr ""
570
 
571
+ #: admin/includes/tab-settings.php:140
572
  msgid ""
573
  "A request from which the country code or IP address is in the blacklist will "
574
  "be blocked."
575
  msgstr ""
576
 
577
+ #: admin/includes/tab-settings.php:186
578
  msgid ""
579
  "<dfn title=\"It enables utilizing &#8220;AS number&#8221; in the &#8220;"
580
  "Whitelist/Blacklist of extra IP addresses&#8221; to specify a group of IP "
581
  "networks.\">Use Autonomous System Number</dfn>"
582
  msgstr ""
583
 
584
+ #: admin/includes/tab-settings.php:197
585
  #, php-format
586
  msgid ""
587
  "Some useful tools for investigating ASN are introduced in &#8220;%s&#8221;."
588
  msgstr ""
589
 
590
+ #: admin/includes/tab-settings.php:206
591
  msgid ""
592
  "<dfn title=\"e.g. &#8220;192.0.64.0/18&#8221; for Jetpack server, "
593
  "&#8220;69.46.36.0/27&#8221; for WordFence server or &#8220;AS32934&#8221; "
594
  "for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
595
  msgstr ""
596
 
597
+ #: admin/includes/tab-settings.php:226
598
  msgid ""
599
  "<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
600
  "\">Blacklist of extra IP addresses prior to country code</dfn>"
601
  msgstr ""
602
 
603
+ #: admin/includes/tab-settings.php:247
604
  msgid ""
605
  "<dfn title=\"If your server is placed behind the proxy server or the load "
606
  "balancing server, you need to put the appropriate key such as &#8220;"
609
  "addresses</dfn>"
610
  msgstr ""
611
 
612
+ #: admin/includes/tab-settings.php:266
613
  msgid ""
614
  "<dfn title=\"It validates malicious signatures independently of &#8220;Block "
615
  "by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target "
616
  "&#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins "
617
  "area&#8221; and &#8220;Themes area&#8221;.\">Bad signatures in query</dfn> "
618
+ "<nobr>(<a class=\"ip-geo-block-icon ip-geo-block-icon-cycle\" id=\"ip-geo-"
619
+ "block-decode\" title=\"When you find ugly character string in the text area, "
620
+ "please click to restore.\"><span></span></a>)</nobr>"
621
  msgstr ""
622
 
623
+ #: admin/includes/tab-settings.php:280
624
  msgid ""
625
  "<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
626
  msgstr ""
627
 
628
+ #: admin/includes/tab-settings.php:291
629
  msgid ""
630
  "<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
631
  "extensions</dfn>"
632
  msgstr ""
633
 
634
+ #: admin/includes/tab-settings.php:295
635
  msgid ""
636
  "<dfn title=\"Specify the capabilities to be verified. Depending on the "
637
  "particular type of uploader, certain capability may be required. Default is "
639
  "verification will be skipped if empty.\">Capabilities to be verified</dfn>"
640
  msgstr ""
641
 
642
+ #: admin/includes/tab-settings.php:295
643
  msgid ""
644
  "(&thinsp;See &#8220;<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
645
  "Roles_and_Capabilities\" title=\"Roles and Capabilities &laquo; WordPress "
646
  "Codex\">Roles and Capabilities</a>&#8221;&thinsp;)"
647
  msgstr ""
648
 
649
+ #: admin/includes/tab-settings.php:302
650
  msgid ""
651
  "<dfn title=\"It restricts the file types on upload in order to block malware "
652
  "and backdoor via both back-end and front-end. Please consider to select "
655
  "this validation.\">Prevent malicious file uploading</dfn>"
656
  msgstr ""
657
 
658
+ #: admin/includes/tab-settings.php:313 admin/includes/tab-settings.php:494
659
+ #: admin/includes/tab-settings.php:618 admin/includes/tab-settings.php:1231
660
  msgid "Disable"
661
  msgstr ""
662
 
663
+ #: admin/includes/tab-settings.php:314
664
  msgid "Verify file extension and MIME type"
665
  msgstr ""
666
 
667
+ #: admin/includes/tab-settings.php:315
668
  msgid "Verify file extension only"
669
  msgstr ""
670
 
671
+ #: admin/includes/tab-settings.php:325
672
  #, php-format
673
  msgid ""
674
  "<dfn title=\"You can put your original 403.php and so on into your theme "
675
  "directory.\">Response code</dfn> %s"
676
  msgstr ""
677
 
678
+ #: admin/includes/tab-settings.php:355 admin/includes/tab-settings.php:878
679
  msgid ""
680
  "<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
681
  "to a public facing page, visitors would not be blocked on the page to "
684
  "\">Redirect URL</dfn>"
685
  msgstr ""
686
 
687
+ #: admin/includes/tab-settings.php:373 admin/includes/tab-settings.php:897
688
  msgid ""
689
  "<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
690
  "message</dfn>"
691
  msgstr ""
692
 
693
+ #: admin/includes/tab-settings.php:390
694
  msgid ""
695
  "<dfn title=\"This is applied to &#8220;XML-RPC&#8221; and &#8220;Login "
696
  "form&#8221;. Lockout period is defined as expiration time at &#8220;Cache "
697
  "settings&#8221;.\">Max number of failed login attempts per IP address</dfn>"
698
  msgstr ""
699
 
700
+ #: admin/includes/tab-settings.php:418
701
  msgid "Select when to run the validation."
702
  msgstr ""
703
 
704
+ #: admin/includes/tab-settings.php:418
705
  msgid "Validation timing"
706
  msgstr ""
707
 
708
+ #: admin/includes/tab-settings.php:429
709
  msgid "&#8220;init&#8221; action hook"
710
  msgstr ""
711
 
712
+ #: admin/includes/tab-settings.php:430
713
  msgid "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
714
  msgstr ""
715
 
716
+ #: admin/includes/tab-settings.php:433
717
  msgid ""
718
  "Validate at &#8220;init&#8221; action hook in the same manner as typical "
719
  "plugins."
720
  msgstr ""
721
 
722
+ #: admin/includes/tab-settings.php:434
723
  msgid ""
724
  "Validate at an earlier phase than other typical plugins. It can reduce load "
725
  "on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
727
  "restrictions</a>."
728
  msgstr ""
729
 
730
+ #: admin/includes/tab-settings.php:444
731
  msgid "Back-end target settings"
732
  msgstr ""
733
 
734
+ #: admin/includes/tab-settings.php:450
735
  #, php-format
736
  msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
737
  msgstr ""
738
 
739
+ #: admin/includes/tab-settings.php:456
740
  msgid "Other areas"
741
  msgstr ""
742
 
743
+ #: admin/includes/tab-settings.php:457
744
  msgid "public facing pages"
745
  msgstr ""
746
 
747
+ #: admin/includes/tab-settings.php:475 admin/includes/tab-settings.php:495
748
+ #: admin/includes/tab-settings.php:528 admin/includes/tab-settings.php:534
749
+ #: admin/includes/tab-settings.php:779
750
  msgid "Block by country"
751
  msgstr ""
752
 
753
+ #: admin/includes/tab-settings.php:496
754
  msgid "Completely close"
755
  msgstr ""
756
 
757
+ #: admin/includes/tab-settings.php:529
758
  msgid ""
759
  "<dfn title=\"Specify the individual action as a blocking target.\">Target "
760
  "actions</dfn>"
761
  msgstr ""
762
 
763
+ #: admin/includes/tab-settings.php:535
764
  msgid "Prevent Zero-day Exploit"
765
  msgstr ""
766
 
767
+ #: admin/includes/tab-settings.php:539
768
  msgid ""
769
  "It will block a request related to the services for both public facing pages "
770
  "and the dashboard."
771
  msgstr ""
772
 
773
+ #: admin/includes/tab-settings.php:540
774
  msgid ""
775
  "Regardless of the country code, it will block a malicious request related to "
776
  "the services only for the dashboard."
777
  msgstr ""
778
 
779
+ #: admin/includes/tab-settings.php:563
780
  msgid "admin post for logged-in user"
781
  msgstr ""
782
 
783
+ #: admin/includes/tab-settings.php:564
784
  msgid "admin post for non logged-in user"
785
  msgstr ""
786
 
787
+ #: admin/includes/tab-settings.php:588
788
  msgid "Admin ajax/post"
789
  msgstr ""
790
 
791
+ #: admin/includes/tab-settings.php:602
792
  msgid ""
793
+ "Specify the action name (&#8220;action=&hellip;&#8221;) or the page name "
794
+ "(&#8220;page=&hellip;&#8221;) to prevent unintended blocking caused by "
795
+ "&#8220;Block by country&#8221; (for non logged-in user) and &#8220;Prevent "
796
+ "Zero-day Exploit&#8221; (for logged-in user)."
797
  msgstr ""
798
 
799
+ #: admin/includes/tab-settings.php:602 admin/includes/tab-settings.php:680
800
+ #: admin/includes/tab-settings.php:741
801
+ msgid "Exceptions"
802
+ msgstr ""
803
+
804
+ #: admin/includes/tab-settings.php:603
805
  msgid "Toggle with non logged-in user"
806
  msgstr ""
807
 
808
+ #: admin/includes/tab-settings.php:606
809
+ msgid "Candidate actions/pages"
810
  msgstr ""
811
 
812
+ #: admin/includes/tab-settings.php:620
813
  #, php-format
814
  msgid ""
815
  "Regardless of the country code, it will block a malicious request to <code>"
816
  "%s&ctdot;/*.php</code>."
817
  msgstr ""
818
 
819
+ #: admin/includes/tab-settings.php:621
820
  msgid ""
821
+ "Select the item which causes unintended blocking in order to exclude from "
822
+ "the validation target. Grayed item indicates &#8220;INACTIVE&#8221;."
 
823
  msgstr ""
824
 
825
+ #: admin/includes/tab-settings.php:622
826
  #, php-format
827
  msgid ""
828
  "It configures &#8220;%s&#8221; to validate a request to the PHP file which "
829
+ "does not load WordPress core. Make sure to deny direct access to the hidden "
830
+ "files beginning with a dot by the server's configuration."
831
  msgstr ""
832
 
833
+ #: admin/includes/tab-settings.php:623
834
  msgid "Sorry, but your server type is not supported."
835
  msgstr ""
836
 
837
+ #: admin/includes/tab-settings.php:659 admin/includes/tab-settings.php:720
838
  msgid "Force to load WP core"
839
  msgstr ""
840
 
841
+ #: admin/includes/tab-settings.php:664
842
  msgid "Plugins area"
843
  msgstr ""
844
 
845
+ #: admin/includes/tab-settings.php:725
846
  msgid "Themes area"
847
  msgstr ""
848
 
849
+ #: admin/includes/tab-settings.php:760
850
  msgid "Front-end target settings"
851
  msgstr ""
852
 
853
+ #: admin/includes/tab-settings.php:784
854
  msgid "Follow &#8220;Validation rule settings&#8221;"
855
  msgstr ""
856
 
857
+ #: admin/includes/tab-settings.php:846
858
  #, php-format
859
  msgid ""
860
  "<dfn title=\"You can configure a different response code from the Back-end. "
862
  "\">Response code</dfn> %s"
863
  msgstr ""
864
 
865
+ #: admin/includes/tab-settings.php:912
866
  msgid ""
867
  "<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
868
  msgstr ""
869
 
870
+ #: admin/includes/tab-settings.php:924
871
  msgid ""
872
  "<dfn title=\"Specify the individual post type on a single page as a blocking "
873
  "target.\">Post type</dfn>"
874
  msgstr ""
875
 
876
+ #: admin/includes/tab-settings.php:936
877
  msgid ""
878
  "<dfn title=\"Specify the individual category on a single page or archive "
879
  "page as a blocking target.\">Category</dfn>"
880
  msgstr ""
881
 
882
+ #: admin/includes/tab-settings.php:948
883
  msgid ""
884
  "<dfn title=\"Specify the individual tag on a single page or archive page as "
885
  "a blocking target.\">Tag</dfn>"
886
  msgstr ""
887
 
888
+ #: admin/includes/tab-settings.php:963
889
  msgid "Specify the validation target on front-end."
890
  msgstr ""
891
 
892
+ #: admin/includes/tab-settings.php:963
893
  msgid "Validation target"
894
  msgstr ""
895
 
896
+ #: admin/includes/tab-settings.php:974
897
  msgid "All requests"
898
  msgstr ""
899
 
900
+ #: admin/includes/tab-settings.php:975
901
  msgid "Specify the targets"
902
  msgstr ""
903
 
904
+ #: admin/includes/tab-settings.php:978
905
  msgid ""
906
  "Notice that &#8220;Validation timing&#8221; is deferred till &#8220;"
907
  "wp&#8221; action hook. It means that this feature would not be compatible "
908
  "with any page caching."
909
  msgstr ""
910
 
911
+ #: admin/includes/tab-settings.php:988
912
  msgid ""
913
  "A part of user agent string and a qualification connected with a separator "
914
  "that indicates an applicable rule and can be &#8220;:&#8221; (pass) or "
918
  "qualification&#8221;."
919
  msgstr ""
920
 
921
+ #: admin/includes/tab-settings.php:988
922
  msgid "UA string and qualification"
923
  msgstr ""
924
 
925
+ #: admin/includes/tab-settings.php:1007
926
  msgid "Specify the name of action that is invariably blocked."
927
  msgstr ""
928
 
929
+ #: admin/includes/tab-settings.php:1007
930
  msgid "Excluded actions"
931
  msgstr ""
932
 
933
+ #: admin/includes/tab-settings.php:1026
934
  msgid ""
935
  "It enables to verify the host by reverse DNS lookup which would spend some "
936
  "server resources. If it is disabled, &#8220;HOST&#8221; and &#8220;"
938
  "return &#8220;true&#8221;."
939
  msgstr ""
940
 
941
+ #: admin/includes/tab-settings.php:1026
942
  msgid "DNS reverse lookup"
943
  msgstr ""
944
 
945
+ #: admin/includes/tab-settings.php:1043
946
  msgid ""
947
  "It enables to simulate validation without deployment. The results can be "
948
  "found at &#8220;Public facing pages&#8221; in Logs."
949
  msgstr ""
950
 
951
+ #: admin/includes/tab-settings.php:1043
952
  msgid "Simulation mode"
953
  msgstr ""
954
 
955
+ #: admin/includes/tab-settings.php:1061
956
  msgid "Geolocation API settings"
957
  msgstr ""
958
 
959
+ #: admin/includes/tab-settings.php:1070
960
  msgid ""
961
  "<dfn title=\"Cache and local database are scanned at the top priority.\">API "
962
  "selection and key settings</dfn>"
963
  msgstr ""
964
 
965
+ #: admin/includes/tab-settings.php:1089
966
  msgid "Timeout for network API [sec]"
967
  msgstr ""
968
 
969
+ #: admin/includes/tab-settings.php:1109
970
  #, php-format
971
  msgid ""
972
  "Can not find geolocation API libraries in <code>%s</code>. It seems to have "
981
  "troubles? | IP Geo Block\">this instruction</a>."
982
  msgstr ""
983
 
984
+ #: admin/includes/tab-settings.php:1116
985
  msgid "Local database settings"
986
  msgstr ""
987
 
988
+ #: admin/includes/tab-settings.php:1130
989
  msgid "database"
990
  msgstr ""
991
 
992
+ #: admin/includes/tab-settings.php:1140
993
  msgid "Auto updating (once a month)"
994
  msgstr ""
995
 
996
+ #: admin/includes/tab-settings.php:1157
997
  msgid "Download database"
998
  msgstr ""
999
 
1000
+ #: admin/includes/tab-settings.php:1165
1001
  msgid "Download now"
1002
  msgstr ""
1003
 
1004
+ #: admin/includes/tab-settings.php:1176
1005
  msgid "Statistics and Logs settings"
1006
  msgstr ""
1007
 
1008
+ #: admin/includes/tab-settings.php:1185
1009
  msgid "Record &#8220;Statistics&#8221;"
1010
  msgstr ""
1011
 
1012
+ #: admin/includes/tab-settings.php:1202
1013
  msgid "Maximum period for &#8220;Statistics&#8221; (days)"
1014
  msgstr ""
1015
 
1016
+ #: admin/includes/tab-settings.php:1220
1017
  msgid "Record &#8220;Logs&#8221;"
1018
  msgstr ""
1019
 
1020
+ #: admin/includes/tab-settings.php:1232
1021
  msgid "When requests blocked"
1022
  msgstr ""
1023
 
1024
+ #: admin/includes/tab-settings.php:1233
1025
  msgid "When requests passed"
1026
  msgstr ""
1027
 
1028
+ #: admin/includes/tab-settings.php:1234
1029
+ msgid "When &#8220;blocked&#8221; or &#8220;passed (not in whitelist)&#8221;"
1030
  msgstr ""
1031
 
1032
+ #: admin/includes/tab-settings.php:1235
1033
  msgid "Unauthenticated visitor"
1034
  msgstr ""
1035
 
1036
+ #: admin/includes/tab-settings.php:1236
1037
  msgid "Authenticated user"
1038
  msgstr ""
1039
 
1040
+ #: admin/includes/tab-settings.php:1237
1041
  msgid "All the validation"
1042
  msgstr ""
1043
 
1044
+ #: admin/includes/tab-settings.php:1246
1045
  msgid "Maximum entries of &#8220;Logs&#8221;"
1046
  msgstr ""
1047
 
1048
+ #: admin/includes/tab-settings.php:1263
1049
  msgid ""
1050
  "<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
1051
  "recorded with their values in &#8220;Logs&#8221;</dfn>"
1052
  msgstr ""
1053
 
1054
+ #: admin/includes/tab-settings.php:1281
1055
  msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
1056
  msgstr ""
1057
 
1058
+ #: admin/includes/tab-settings.php:1298
1059
  msgid ""
1060
  "<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
1061
  "&#8220;Live update&#8221;</dfn>"
1062
  msgstr ""
1063
 
1064
+ #: admin/includes/tab-settings.php:1310
1065
  msgid "Ordinary file"
1066
  msgstr ""
1067
 
1068
+ #: admin/includes/tab-settings.php:1311
1069
  msgid "In-Memory"
1070
  msgstr ""
1071
 
1072
+ #: admin/includes/tab-settings.php:1314
1073
  msgid "PDO_SQLITE driver not available"
1074
  msgstr ""
1075
 
1076
+ #: admin/includes/tab-settings.php:1315
1077
  msgid ""
1078
  "It takes a few tens of milliseconds as overhead. It can be safely used "
1079
  "without conflict with other plugins."
1080
  msgstr ""
1081
 
1082
+ #: admin/includes/tab-settings.php:1316
1083
  msgid ""
1084
  "It takes a few milliseconds as overhead. There is a possibility of conflict "
1085
  "with other plugins using this method."
1086
  msgstr ""
1087
 
1088
+ #: admin/includes/tab-settings.php:1325
1089
  msgid "Reset database source of &#8220;Live update&#8221;"
1090
  msgstr ""
1091
 
1092
+ #: admin/includes/tab-settings.php:1333
1093
  msgid "Reset now"
1094
  msgstr ""
1095
 
1096
+ #: admin/includes/tab-settings.php:1344
1097
  msgid "IP address cache settings"
1098
  msgstr ""
1099
 
1100
+ #: admin/includes/tab-settings.php:1353
1101
  #, php-format
1102
  msgid ""
1103
  "<dfn title=\"If user authentication fails consecutively %d times, subsequent "
1105
  "\">Expiration time [sec]</dfn>"
1106
  msgstr ""
1107
 
1108
+ #: admin/includes/tab-settings.php:1369
1109
  msgid "Garbage collection period [sec]"
1110
  msgstr ""
1111
 
1112
+ #: admin/includes/tab-settings.php:1386
1113
  msgid "Number of entries to be displayed in cache"
1114
  msgstr ""
1115
 
1116
+ #: admin/includes/tab-settings.php:1404
1117
  msgid "Submission settings"
1118
  msgstr ""
1119
 
1120
+ #: admin/includes/tab-settings.php:1416
1121
  msgid "The whole will be wrapped by &lt;p&gt; tag. Allowed tags: "
1122
  msgstr ""
1123
 
1124
+ #: admin/includes/tab-settings.php:1416
1125
  msgid "Message on comment form"
1126
  msgstr ""
1127
 
1128
+ #: admin/includes/tab-settings.php:1428
1129
  msgid "None"
1130
  msgstr ""
1131
 
1132
+ #: admin/includes/tab-settings.php:1429
1133
  msgid "Top"
1134
  msgstr ""
1135
 
1136
+ #: admin/includes/tab-settings.php:1430
1137
  msgid "Bottom"
1138
  msgstr ""
1139
 
1140
+ #: admin/includes/tab-settings.php:1441
1141
  msgid "Plugin settings"
1142
  msgstr ""
1143
 
1144
+ #: admin/includes/tab-settings.php:1454
1145
  msgid ""
1146
  "<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
1147
  "settings</dfn>"
1148
  msgstr ""
1149
 
1150
+ #: admin/includes/tab-settings.php:1472
1151
  msgid "Remove all settings at uninstallation"
1152
  msgstr ""
1153
 
1154
+ #: admin/includes/tab-settings.php:1490
1155
  msgid ""
1156
  "<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
1157
  "dfn>"
1158
  msgstr ""
1159
 
1160
+ #: admin/includes/tab-settings.php:1504
1161
  msgid ""
1162
  "You need to click the &#8220;Save Changes&#8221; button for imported "
1163
  "settings to take effect."
1164
  msgstr ""
1165
 
1166
+ #: admin/includes/tab-settings.php:1510
1167
  msgid "Export / Import settings"
1168
  msgstr ""
1169
 
1170
+ #: admin/includes/tab-settings.php:1517
1171
  msgid "Export settings"
1172
  msgstr ""
1173
 
1174
+ #: admin/includes/tab-settings.php:1518
1175
  msgid "Import from the local file"
1176
  msgstr ""
1177
 
1178
+ #: admin/includes/tab-settings.php:1518
1179
  msgid "Import settings"
1180
  msgstr ""
1181
 
1182
+ #: admin/includes/tab-settings.php:1527
1183
  msgid "Import pre-defined settings"
1184
  msgstr ""
1185
 
1186
+ #: admin/includes/tab-settings.php:1534
1187
  msgid ""
1188
  "Import the default settings to revert to the &#8220;Right after "
1189
  "installing&#8221; state"
1190
  msgstr ""
1191
 
1192
+ #: admin/includes/tab-settings.php:1534
1193
  msgid "Default settings"
1194
  msgstr ""
1195
 
1196
+ #: admin/includes/tab-settings.php:1535
1197
  msgid ""
1198
  "Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
1199
  "for the &#8220;Back-end target settings&#8221;"
1200
  msgstr ""
1201
 
1202
+ #: admin/includes/tab-settings.php:1535
1203
  msgid "Best for Back-end"
1204
  msgstr ""
1205
 
1206
+ #: admin/includes/tab-settings.php:1545
1207
  msgid "Delete DB table for validation logs"
1208
  msgstr ""
1209
 
1210
+ #: admin/includes/tab-settings.php:1553
1211
  msgid "Delete now"
1212
  msgstr ""
1213
 
1214
+ #: admin/includes/tab-settings.php:1561
1215
  msgid "Create DB table for validation logs"
1216
  msgstr ""
1217
 
1218
+ #: admin/includes/tab-settings.php:1569
1219
  msgid "Create now"
1220
  msgstr ""
1221
 
1222
+ #: admin/includes/tab-settings.php:1579
1223
  msgid ""
1224
  "<dfn title=\"When an unexpected blocking has occurred, please press the "
1225
  "button to find the blocked request in the dumped information which may help "
1228
  "&#8250; Support &raquo; IP Geo Block\">support forum</a> ]"
1229
  msgstr ""
1230
 
1231
+ #: admin/includes/tab-settings.php:1586
1232
  msgid "Please copy &amp; paste when submitting your issue to support forum."
1233
  msgstr ""
1234
 
1235
+ #: admin/includes/tab-settings.php:1586
1236
  msgid "Show information"
1237
  msgstr ""
1238
 
1239
+ #: admin/includes/tab-settings.php:1602
1240
  msgid ""
1241
  "To enhance the protection ability, please refer to &#8220;<a rel=\"noreferrer"
1242
  "\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
1244
  "\">The best practice for target settings</a>&#8221;."
1245
  msgstr ""
1246
 
1247
+ #: admin/includes/tab-settings.php:1603
1248
  msgid ""
1249
  "If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
1250
  "\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
1253
  "\">Codex</a>."
1254
  msgstr ""
1255
 
1256
+ #: admin/includes/tab-settings.php:1610
1257
  msgid ""
1258
  "While Maxmind and IP2Location will fetch the local database, others will "
1259
  "pass an IP address to the APIs via HTTP."
1260
  msgstr ""
1261
 
1262
+ #: admin/includes/tab-settings.php:1611
1263
  msgid ""
1264
  "Please select the appropriate APIs to fit the privacy law in your country."
1265
  msgstr ""
1266
 
1267
+ #: admin/includes/tab-settings.php:1618
1268
  msgid ""
1269
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1270
  "ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
1272
  "cache plugin."
1273
  msgstr ""
1274
 
1275
+ #: admin/includes/tab-settings.php:1619
1276
  msgid ""
1277
  "If you find any issues or have something to suggest, please feel free to "
1278
  "open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
1280
  "\">support forum</a>."
1281
  msgstr ""
1282
 
1283
+ #: admin/includes/tab-settings.php:1626
1284
  msgid ""
1285
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1286
  "ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
1287
  "Block\">Record settings and logs</a>&#8221; for details."
1288
  msgstr ""
1289
 
1290
+ #: admin/includes/class-admin-rewrite.php:169
1291
+ #: admin/includes/class-admin-rewrite.php:195
1292
  #, php-format
1293
  msgid "Or please refer to %s to set it manually."
1294
  msgstr ""
1295
 
1296
+ #: admin/includes/class-admin-rewrite.php:234
1297
  #, php-format
1298
  msgid "&#8220;auto_prepend_file&#8221; already defined in %s."
1299
  msgstr ""
1371
  msgstr ""
1372
 
1373
  #: admin/includes/tab-statistics.php:185
1374
+ msgid "Statistics in Logs"
1375
  msgstr ""
1376
 
1377
  #: admin/includes/tab-statistics.php:217
1390
  msgid "Clear cache"
1391
  msgstr ""
1392
 
1393
+ #: admin/includes/tab-statistics.php:288
1394
  msgid "Country (Top 10)"
1395
  msgstr ""
1396
 
1397
+ #: admin/includes/tab-statistics.php:289
1398
  msgid "AS number (Top 10)"
1399
  msgstr ""
1400
 
1401
+ #: admin/includes/tab-statistics.php:290
1402
  msgid "IP address (Top 10)"
1403
  msgstr ""
1404
 
1405
+ #: admin/includes/tab-statistics.php:291
1406
  msgid "Slug in back-end"
1407
  msgstr ""
1408
 
1409
+ #: admin/includes/tab-statistics.php:343
1410
+ msgid "Toggle sorting order"
1411
+ msgstr ""
1412
+
1413
+ #: admin/includes/tab-statistics.php:392
1414
  msgid ""
1415
  "[<strong>Record validation statistics</strong>] on [<strong>Settings</"
1416
  "strong>] tab is not selected as [<strong>Enable</strong>]."
1417
  msgstr ""
1418
 
1419
+ #: admin/includes/tab-statistics.php:393
1420
  msgid ""
1421
  "Please set the proper condition to record and analyze the validation "
1422
  "statistics."
1423
  msgstr ""
1424
 
1425
+ #: admin/includes/tab-statistics.php:398
1426
  msgid ""
1427
  "Please set the proper condition to record and analyze the validation logs."
1428
  msgstr ""
languages/ip-geo-block.pot CHANGED
@@ -1,11 +1,11 @@
1
- # Copyright (C) 2013-2017 tokkonopapa
2
  # This file is distributed under the same license as the IP Geo Block package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: IP Geo Block 3.0.5\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
7
- "POT-Creation-Date: 2017-11-29 01:33+0900\n"
8
- "PO-Revision-Date: 2017-11-29 01:33+0900\n"
9
  "Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
10
  "Language-Team: \n"
11
  "MIME-Version: 1.0\n"
@@ -20,14 +20,16 @@ msgstr ""
20
  "X-Poedit-SearchPath-0: .\n"
21
 
22
  #. Description of the plugin/theme
23
- msgid "It blocks any spams, login attempts and malicious access to the admin area posted from outside your nation, and also prevents zero-day exploit."
 
 
24
  msgstr ""
25
 
26
  #: classes/class-ip-geo-block-opts.php:409
27
  #: classes/class-ip-geo-block-cron.php:273
28
  #: classes/class-ip-geo-block-cron.php:305
29
- #: admin/class-ip-geo-block-admin.php:1217
30
- #: admin/includes/class-admin-rewrite.php:169
31
  #, php-format
32
  msgid "Unable to write <code>%s</code>. Please check the permission."
33
  msgstr ""
@@ -38,7 +40,7 @@ msgstr ""
38
 
39
  #: classes/class-ip-geo-block-cron.php:268
40
  #: classes/class-ip-geo-block-cron.php:300
41
- #: admin/includes/class-admin-rewrite.php:143
42
  #, php-format
43
  msgid "Unable to read <code>%s</code>. Please check the permission."
44
  msgstr ""
@@ -53,7 +55,7 @@ msgid "gz or zip is not supported on your system."
53
  msgstr ""
54
 
55
  #: classes/class-ip-geo-block-cron.php:334
56
- #: admin/includes/tab-settings.php:1105
57
  #, php-format
58
  msgid "Last update: %s"
59
  msgstr ""
@@ -94,138 +96,154 @@ msgid ""
94
  "<strong>you'll be blocked</strong> after the cache expires."
95
  msgstr ""
96
 
97
- #: admin/class-ip-geo-block-admin.php:271
98
  msgid "Import settings ?"
99
  msgstr ""
100
 
101
- #: admin/class-ip-geo-block-admin.php:272
102
  msgid "Create table ?"
103
  msgstr ""
104
 
105
- #: admin/class-ip-geo-block-admin.php:273
106
  msgid "Delete table ?"
107
  msgstr ""
108
 
109
- #: admin/class-ip-geo-block-admin.php:274
110
  msgid "Clear statistics ?"
111
  msgstr ""
112
 
113
- #: admin/class-ip-geo-block-admin.php:275
114
  msgid "Clear cache ?"
115
  msgstr ""
116
 
117
- #: admin/class-ip-geo-block-admin.php:276
118
  msgid "Clear logs ?"
119
  msgstr ""
120
 
121
- #: admin/class-ip-geo-block-admin.php:277
122
  msgid "ajax for logged-in user"
123
  msgstr ""
124
 
125
- #: admin/class-ip-geo-block-admin.php:278
126
  msgid "ajax for non logged-in user"
127
  msgstr ""
128
 
129
- #: admin/class-ip-geo-block-admin.php:279
 
 
 
 
 
 
 
 
 
 
130
  msgid "This feature is available with HTML5 compliant browsers."
131
  msgstr ""
132
 
133
- #: admin/class-ip-geo-block-admin.php:280
134
  msgid "The selected row cannot be found in the visible area."
135
  msgstr ""
136
 
137
- #: admin/class-ip-geo-block-admin.php:284
 
 
 
 
 
 
138
  msgid "No data available in table"
139
  msgstr ""
140
 
141
- #: admin/class-ip-geo-block-admin.php:285
142
  msgid "No matching records found"
143
  msgstr ""
144
 
145
- #: admin/class-ip-geo-block-admin.php:286
146
  #: admin/includes/tab-geolocation.php:71
147
  msgid "IP address"
148
  msgstr ""
149
 
150
- #: admin/class-ip-geo-block-admin.php:287
151
  msgid "Code"
152
  msgstr ""
153
 
154
- #: admin/class-ip-geo-block-admin.php:288
155
  msgid "ASN"
156
  msgstr ""
157
 
158
- #: admin/class-ip-geo-block-admin.php:289
159
  msgid "Host name"
160
  msgstr ""
161
 
162
- #: admin/class-ip-geo-block-admin.php:290
163
  msgid "Target"
164
  msgstr ""
165
 
166
- #: admin/class-ip-geo-block-admin.php:291
167
  msgid "Failure / Total"
168
  msgstr ""
169
 
170
- #: admin/class-ip-geo-block-admin.php:292
171
  msgid "Elapsed[sec]"
172
  msgstr ""
173
 
174
- #: admin/class-ip-geo-block-admin.php:293
175
  msgid "Time"
176
  msgstr ""
177
 
178
- #: admin/class-ip-geo-block-admin.php:294
179
  msgid "Result"
180
  msgstr ""
181
 
182
- #: admin/class-ip-geo-block-admin.php:295
183
  msgid "Request"
184
  msgstr ""
185
 
186
- #: admin/class-ip-geo-block-admin.php:296
187
  msgid "User agent"
188
  msgstr ""
189
 
190
- #: admin/class-ip-geo-block-admin.php:297
191
  msgid "HTTP headers"
192
  msgstr ""
193
 
194
- #: admin/class-ip-geo-block-admin.php:298
195
  msgid "$_POST data"
196
  msgstr ""
197
 
198
- #: admin/class-ip-geo-block-admin.php:315
199
  msgid "Contribute on GitHub"
200
  msgstr ""
201
 
202
- #: admin/class-ip-geo-block-admin.php:329
203
- #: admin/class-ip-geo-block-admin.php:437
204
- #: admin/class-ip-geo-block-admin.php:645
205
- #: admin/class-ip-geo-block-admin.php:664
206
  msgid "Settings"
207
  msgstr ""
208
 
209
- #: admin/class-ip-geo-block-admin.php:417
210
- #: admin/class-ip-geo-block-admin.php:418
211
- #: admin/class-ip-geo-block-admin.php:428
 
212
  #: admin/class-ip-geo-block-admin.php:429
213
- #: admin/class-ip-geo-block-admin.php:436
214
- #: admin/class-ip-geo-block-admin.php:444
215
  msgid "IP Geo Block"
216
  msgstr ""
217
 
218
- #: admin/class-ip-geo-block-admin.php:445
219
- #: admin/class-ip-geo-block-admin.php:649
220
- #: admin/class-ip-geo-block-admin.php:665
221
  msgid "Site List"
222
  msgstr ""
223
 
224
- #: admin/class-ip-geo-block-admin.php:474
225
  msgid "You need WordPress 3.7+."
226
  msgstr ""
227
 
228
- #: admin/class-ip-geo-block-admin.php:480
229
  #, php-format
230
  msgid ""
231
  "Now downloading geolocation databases in background. After a little while, "
@@ -233,120 +251,120 @@ msgid ""
233
  "strong>&#8221; at <a href=\"%s\">Validation rule settings</a>."
234
  msgstr ""
235
 
236
- #: admin/class-ip-geo-block-admin.php:486
237
  #, php-format
238
  msgid ""
239
  "The &#8220;<strong>Matching rule</strong>&#8221; is not set properly. Please "
240
  "confirm it at <a href=\"%s\">Validation rule settings</a>."
241
  msgstr ""
242
 
243
- #: admin/class-ip-geo-block-admin.php:495
244
  msgid "Local database and matching rule have been updated."
245
  msgstr ""
246
 
247
- #: admin/class-ip-geo-block-admin.php:506
248
  msgid ""
249
  "Once you logout, you will be unable to login again because the number of "
250
  "login attempts reaches the limit."
251
  msgstr ""
252
 
253
- #: admin/class-ip-geo-block-admin.php:508
254
  #, php-format
255
  msgid ""
256
  "Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
257
  "tab</a> to prevent locking yourself out."
258
  msgstr ""
259
 
260
- #: admin/class-ip-geo-block-admin.php:518
261
  msgid ""
262
  "Once you logout, you will be unable to login again because your country code "
263
  "or IP address is in the blacklist."
264
  msgstr ""
265
 
266
- #: admin/class-ip-geo-block-admin.php:519
267
  msgid ""
268
  "Once you logout, you will be unable to login again because your country code "
269
  "or IP address is not in the whitelist."
270
  msgstr ""
271
 
272
- #: admin/class-ip-geo-block-admin.php:522
273
  #, php-format
274
  msgid "Please check your <a href=\"%s\">Validation rule settings</a>."
275
  msgstr ""
276
 
277
- #: admin/class-ip-geo-block-admin.php:533
278
  msgid ""
279
  "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php) at &#8220;Validation "
280
  "timing&#8221; is imcompatible with <strong>IP Geo Allow</strong>. Please "
281
  "select &#8220;init&#8221; action hook."
282
  msgstr ""
283
 
284
- #: admin/class-ip-geo-block-admin.php:646
285
  msgid "Statistics"
286
  msgstr ""
287
 
288
- #: admin/class-ip-geo-block-admin.php:647
289
  msgid "Logs"
290
  msgstr ""
291
 
292
- #: admin/class-ip-geo-block-admin.php:648
293
  msgid "Search"
294
  msgstr ""
295
 
296
- #: admin/class-ip-geo-block-admin.php:650
297
  msgid "Attribution"
298
  msgstr ""
299
 
300
- #: admin/class-ip-geo-block-admin.php:676
301
  msgid "Network wide"
302
  msgstr ""
303
 
304
- #: admin/class-ip-geo-block-admin.php:689
305
  msgid "Toggle all"
306
  msgstr ""
307
 
308
- #: admin/class-ip-geo-block-admin.php:692
309
  msgid ""
310
  "Independent of &#8220;Statistics and Logs settings&#8221;, you can see all "
311
  "the requests validated by this plugin in almost real time."
312
  msgstr ""
313
 
314
- #: admin/class-ip-geo-block-admin.php:692 admin/includes/tab-accesslog.php:37
315
  msgid "Live update"
316
  msgstr ""
317
 
318
- #: admin/class-ip-geo-block-admin.php:696
319
  msgid "Open a new window on clicking the link in the chart."
320
  msgstr ""
321
 
322
- #: admin/class-ip-geo-block-admin.php:696
323
  msgid "Open a new window"
324
  msgstr ""
325
 
326
- #: admin/class-ip-geo-block-admin.php:719
327
  msgid "Thanks for providing these great services for free."
328
  msgstr ""
329
 
330
- #: admin/class-ip-geo-block-admin.php:720
331
  msgid ""
332
  "(Most browsers will redirect you to each site <a href=\"http://www."
333
  "ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
334
  "when you click the link</a>.)"
335
  msgstr ""
336
 
337
- #: admin/class-ip-geo-block-admin.php:725
338
  msgid "Back to top"
339
  msgstr ""
340
 
341
- #: admin/class-ip-geo-block-admin.php:822
342
  msgid "Enable"
343
  msgstr ""
344
 
345
- #: admin/class-ip-geo-block-admin.php:837
346
  msgid "Select one"
347
  msgstr ""
348
 
349
- #: admin/class-ip-geo-block-admin.php:1247
350
  msgid "Settings saved."
351
  msgstr ""
352
 
@@ -354,23 +372,23 @@ msgstr ""
354
  msgid "Validation logs"
355
  msgstr ""
356
 
357
- #: admin/includes/tab-accesslog.php:52 admin/includes/tab-settings.php:450
358
  msgid "Comment post"
359
  msgstr ""
360
 
361
- #: admin/includes/tab-accesslog.php:53 admin/includes/tab-settings.php:451
362
  msgid "XML-RPC"
363
  msgstr ""
364
 
365
- #: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:452
366
  msgid "Login form"
367
  msgstr ""
368
 
369
- #: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:453
370
  msgid "Admin area"
371
  msgstr ""
372
 
373
- #: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:455
374
  msgid "Public facing pages"
375
  msgstr ""
376
 
@@ -428,7 +446,7 @@ msgstr ""
428
  msgid "Export logs"
429
  msgstr ""
430
 
431
- #: admin/includes/tab-accesslog.php:150 admin/includes/tab-settings.php:1491
432
  msgid "Export to the local file"
433
  msgstr ""
434
 
@@ -437,7 +455,7 @@ msgid "Export csv"
437
  msgstr ""
438
 
439
  #: admin/includes/tab-accesslog.php:167 admin/includes/tab-network.php:112
440
- #: admin/includes/tab-statistics.php:396
441
  msgid ""
442
  "[<strong>Record validation logs</strong>] on [<strong>Settings</strong>] tab "
443
  "is [<strong>Disable</strong>]."
@@ -528,49 +546,61 @@ msgstr ""
528
  msgid "Toggle selection"
529
  msgstr ""
530
 
531
- #: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:763
 
 
 
 
 
 
 
 
 
 
 
 
532
  msgid "Matching rule"
533
  msgstr ""
534
 
535
- #: admin/includes/tab-settings.php:137
536
  msgid ""
537
  "A request from which the country code or IP address is <strong>NOT</strong> "
538
  "in the whitelist will be blocked."
539
  msgstr ""
540
 
541
- #: admin/includes/tab-settings.php:138
542
  msgid ""
543
  "A request from which the country code or IP address is in the blacklist will "
544
  "be blocked."
545
  msgstr ""
546
 
547
- #: admin/includes/tab-settings.php:184
548
  msgid ""
549
  "<dfn title=\"It enables utilizing &#8220;AS number&#8221; in the &#8220;"
550
  "Whitelist/Blacklist of extra IP addresses&#8221; to specify a group of IP "
551
  "networks.\">Use Autonomous System Number</dfn>"
552
  msgstr ""
553
 
554
- #: admin/includes/tab-settings.php:195
555
  #, php-format
556
  msgid ""
557
  "Some useful tools for investigating ASN are introduced in &#8220;%s&#8221;."
558
  msgstr ""
559
 
560
- #: admin/includes/tab-settings.php:204
561
  msgid ""
562
  "<dfn title=\"e.g. &#8220;192.0.64.0/18&#8221; for Jetpack server, "
563
  "&#8220;69.46.36.0/27&#8221; for WordFence server or &#8220;AS32934&#8221; "
564
  "for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
565
  msgstr ""
566
 
567
- #: admin/includes/tab-settings.php:224
568
  msgid ""
569
  "<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
570
  "\">Blacklist of extra IP addresses prior to country code</dfn>"
571
  msgstr ""
572
 
573
- #: admin/includes/tab-settings.php:245
574
  msgid ""
575
  "<dfn title=\"If your server is placed behind the proxy server or the load "
576
  "balancing server, you need to put the appropriate key such as &#8220;"
@@ -579,29 +609,29 @@ msgid ""
579
  "addresses</dfn>"
580
  msgstr ""
581
 
582
- #: admin/includes/tab-settings.php:264
583
  msgid ""
584
  "<dfn title=\"It validates malicious signatures independently of &#8220;Block "
585
  "by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target "
586
  "&#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins "
587
  "area&#8221; and &#8220;Themes area&#8221;.\">Bad signatures in query</dfn> "
588
- "<nobr>(<a class=\"ip-geo-block-cycle\" id=\"ip-geo-block-decode\" title="
589
- "\"When you find ugly character string in the text area, please click to "
590
- "restore.\"><span></span></a>)</nobr>"
591
  msgstr ""
592
 
593
- #: admin/includes/tab-settings.php:278
594
  msgid ""
595
  "<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
596
  msgstr ""
597
 
598
- #: admin/includes/tab-settings.php:289
599
  msgid ""
600
  "<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
601
  "extensions</dfn>"
602
  msgstr ""
603
 
604
- #: admin/includes/tab-settings.php:293
605
  msgid ""
606
  "<dfn title=\"Specify the capabilities to be verified. Depending on the "
607
  "particular type of uploader, certain capability may be required. Default is "
@@ -609,14 +639,14 @@ msgid ""
609
  "verification will be skipped if empty.\">Capabilities to be verified</dfn>"
610
  msgstr ""
611
 
612
- #: admin/includes/tab-settings.php:293
613
  msgid ""
614
  "(&thinsp;See &#8220;<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
615
  "Roles_and_Capabilities\" title=\"Roles and Capabilities &laquo; WordPress "
616
  "Codex\">Roles and Capabilities</a>&#8221;&thinsp;)"
617
  msgstr ""
618
 
619
- #: admin/includes/tab-settings.php:300
620
  msgid ""
621
  "<dfn title=\"It restricts the file types on upload in order to block malware "
622
  "and backdoor via both back-end and front-end. Please consider to select "
@@ -625,27 +655,27 @@ msgid ""
625
  "this validation.\">Prevent malicious file uploading</dfn>"
626
  msgstr ""
627
 
628
- #: admin/includes/tab-settings.php:311 admin/includes/tab-settings.php:492
629
- #: admin/includes/tab-settings.php:611 admin/includes/tab-settings.php:1205
630
  msgid "Disable"
631
  msgstr ""
632
 
633
- #: admin/includes/tab-settings.php:312
634
  msgid "Verify file extension and MIME type"
635
  msgstr ""
636
 
637
- #: admin/includes/tab-settings.php:313
638
  msgid "Verify file extension only"
639
  msgstr ""
640
 
641
- #: admin/includes/tab-settings.php:323
642
  #, php-format
643
  msgid ""
644
  "<dfn title=\"You can put your original 403.php and so on into your theme "
645
  "directory.\">Response code</dfn> %s"
646
  msgstr ""
647
 
648
- #: admin/includes/tab-settings.php:353 admin/includes/tab-settings.php:850
649
  msgid ""
650
  "<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
651
  "to a public facing page, visitors would not be blocked on the page to "
@@ -654,42 +684,42 @@ msgid ""
654
  "\">Redirect URL</dfn>"
655
  msgstr ""
656
 
657
- #: admin/includes/tab-settings.php:371 admin/includes/tab-settings.php:869
658
  msgid ""
659
  "<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
660
  "message</dfn>"
661
  msgstr ""
662
 
663
- #: admin/includes/tab-settings.php:388
664
  msgid ""
665
  "<dfn title=\"This is applied to &#8220;XML-RPC&#8221; and &#8220;Login "
666
  "form&#8221;. Lockout period is defined as expiration time at &#8220;Cache "
667
  "settings&#8221;.\">Max number of failed login attempts per IP address</dfn>"
668
  msgstr ""
669
 
670
- #: admin/includes/tab-settings.php:416
671
  msgid "Select when to run the validation."
672
  msgstr ""
673
 
674
- #: admin/includes/tab-settings.php:416
675
  msgid "Validation timing"
676
  msgstr ""
677
 
678
- #: admin/includes/tab-settings.php:427
679
  msgid "&#8220;init&#8221; action hook"
680
  msgstr ""
681
 
682
- #: admin/includes/tab-settings.php:428
683
  msgid "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
684
  msgstr ""
685
 
686
- #: admin/includes/tab-settings.php:431
687
  msgid ""
688
  "Validate at &#8220;init&#8221; action hook in the same manner as typical "
689
  "plugins."
690
  msgstr ""
691
 
692
- #: admin/includes/tab-settings.php:432
693
  msgid ""
694
  "Validate at an earlier phase than other typical plugins. It can reduce load "
695
  "on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
@@ -697,129 +727,134 @@ msgid ""
697
  "restrictions</a>."
698
  msgstr ""
699
 
700
- #: admin/includes/tab-settings.php:442
701
  msgid "Back-end target settings"
702
  msgstr ""
703
 
704
- #: admin/includes/tab-settings.php:448
705
  #, php-format
706
  msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
707
  msgstr ""
708
 
709
- #: admin/includes/tab-settings.php:454
710
  msgid "Other areas"
711
  msgstr ""
712
 
713
- #: admin/includes/tab-settings.php:455
714
  msgid "public facing pages"
715
  msgstr ""
716
 
717
- #: admin/includes/tab-settings.php:473 admin/includes/tab-settings.php:493
718
- #: admin/includes/tab-settings.php:526 admin/includes/tab-settings.php:532
719
- #: admin/includes/tab-settings.php:751
720
  msgid "Block by country"
721
  msgstr ""
722
 
723
- #: admin/includes/tab-settings.php:494
724
  msgid "Completely close"
725
  msgstr ""
726
 
727
- #: admin/includes/tab-settings.php:527
728
  msgid ""
729
  "<dfn title=\"Specify the individual action as a blocking target.\">Target "
730
  "actions</dfn>"
731
  msgstr ""
732
 
733
- #: admin/includes/tab-settings.php:533
734
  msgid "Prevent Zero-day Exploit"
735
  msgstr ""
736
 
737
- #: admin/includes/tab-settings.php:537
738
  msgid ""
739
  "It will block a request related to the services for both public facing pages "
740
  "and the dashboard."
741
  msgstr ""
742
 
743
- #: admin/includes/tab-settings.php:538
744
  msgid ""
745
  "Regardless of the country code, it will block a malicious request related to "
746
  "the services only for the dashboard."
747
  msgstr ""
748
 
749
- #: admin/includes/tab-settings.php:564
750
  msgid "admin post for logged-in user"
751
  msgstr ""
752
 
753
- #: admin/includes/tab-settings.php:565
754
  msgid "admin post for non logged-in user"
755
  msgstr ""
756
 
757
- #: admin/includes/tab-settings.php:587
758
  msgid "Admin ajax/post"
759
  msgstr ""
760
 
761
- #: admin/includes/tab-settings.php:600
762
  msgid ""
763
- "<dfn title=\"Specify the page name (&#8220;page=&hellip;&#8221;) or the "
764
- "action name (&#8220;action=&hellip;&#8221;) to prevent undesired blocking "
765
- "caused by &#8220;Block by country&#8221; for non logged-in user and &#8220;"
766
- "Prevent Zero-day Exploit&#8221; for logged-in user.\">Exceptions</dfn>"
767
  msgstr ""
768
 
769
- #: admin/includes/tab-settings.php:600
 
 
 
 
 
770
  msgid "Toggle with non logged-in user"
771
  msgstr ""
772
 
773
- #: admin/includes/tab-settings.php:605
774
- msgid "Candidate actions"
775
  msgstr ""
776
 
777
- #: admin/includes/tab-settings.php:613
778
  #, php-format
779
  msgid ""
780
  "Regardless of the country code, it will block a malicious request to <code>"
781
  "%s&ctdot;/*.php</code>."
782
  msgstr ""
783
 
784
- #: admin/includes/tab-settings.php:614
785
  msgid ""
786
- "<dfn title=\"Select the item which causes undesired blocking in order to "
787
- "exclude from the validation target. Grayed item indicates &#8220;"
788
- "INACTIVE&#8221;.\">Exceptions</dfn>"
789
  msgstr ""
790
 
791
- #: admin/includes/tab-settings.php:615
792
  #, php-format
793
  msgid ""
794
  "It configures &#8220;%s&#8221; to validate a request to the PHP file which "
795
- "does not load WordPress core."
 
796
  msgstr ""
797
 
798
- #: admin/includes/tab-settings.php:616
799
  msgid "Sorry, but your server type is not supported."
800
  msgstr ""
801
 
802
- #: admin/includes/tab-settings.php:653 admin/includes/tab-settings.php:703
803
  msgid "Force to load WP core"
804
  msgstr ""
805
 
806
- #: admin/includes/tab-settings.php:658
807
  msgid "Plugins area"
808
  msgstr ""
809
 
810
- #: admin/includes/tab-settings.php:708
811
  msgid "Themes area"
812
  msgstr ""
813
 
814
- #: admin/includes/tab-settings.php:732
815
  msgid "Front-end target settings"
816
  msgstr ""
817
 
818
- #: admin/includes/tab-settings.php:756
819
  msgid "Follow &#8220;Validation rule settings&#8221;"
820
  msgstr ""
821
 
822
- #: admin/includes/tab-settings.php:818
823
  #, php-format
824
  msgid ""
825
  "<dfn title=\"You can configure a different response code from the Back-end. "
@@ -827,53 +862,53 @@ msgid ""
827
  "\">Response code</dfn> %s"
828
  msgstr ""
829
 
830
- #: admin/includes/tab-settings.php:884
831
  msgid ""
832
  "<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
833
  msgstr ""
834
 
835
- #: admin/includes/tab-settings.php:896
836
  msgid ""
837
  "<dfn title=\"Specify the individual post type on a single page as a blocking "
838
  "target.\">Post type</dfn>"
839
  msgstr ""
840
 
841
- #: admin/includes/tab-settings.php:908
842
  msgid ""
843
  "<dfn title=\"Specify the individual category on a single page or archive "
844
  "page as a blocking target.\">Category</dfn>"
845
  msgstr ""
846
 
847
- #: admin/includes/tab-settings.php:920
848
  msgid ""
849
  "<dfn title=\"Specify the individual tag on a single page or archive page as "
850
  "a blocking target.\">Tag</dfn>"
851
  msgstr ""
852
 
853
- #: admin/includes/tab-settings.php:935
854
  msgid "Specify the validation target on front-end."
855
  msgstr ""
856
 
857
- #: admin/includes/tab-settings.php:935
858
  msgid "Validation target"
859
  msgstr ""
860
 
861
- #: admin/includes/tab-settings.php:946
862
  msgid "All requests"
863
  msgstr ""
864
 
865
- #: admin/includes/tab-settings.php:947
866
  msgid "Specify the targets"
867
  msgstr ""
868
 
869
- #: admin/includes/tab-settings.php:950
870
  msgid ""
871
  "Notice that &#8220;Validation timing&#8221; is deferred till &#8220;"
872
  "wp&#8221; action hook. It means that this feature would not be compatible "
873
  "with any page caching."
874
  msgstr ""
875
 
876
- #: admin/includes/tab-settings.php:960
877
  msgid ""
878
  "A part of user agent string and a qualification connected with a separator "
879
  "that indicates an applicable rule and can be &#8220;:&#8221; (pass) or "
@@ -883,19 +918,19 @@ msgid ""
883
  "qualification&#8221;."
884
  msgstr ""
885
 
886
- #: admin/includes/tab-settings.php:960
887
  msgid "UA string and qualification"
888
  msgstr ""
889
 
890
- #: admin/includes/tab-settings.php:979
891
  msgid "Specify the name of action that is invariably blocked."
892
  msgstr ""
893
 
894
- #: admin/includes/tab-settings.php:979
895
  msgid "Excluded actions"
896
  msgstr ""
897
 
898
- #: admin/includes/tab-settings.php:998
899
  msgid ""
900
  "It enables to verify the host by reverse DNS lookup which would spend some "
901
  "server resources. If it is disabled, &#8220;HOST&#8221; and &#8220;"
@@ -903,35 +938,35 @@ msgid ""
903
  "return &#8220;true&#8221;."
904
  msgstr ""
905
 
906
- #: admin/includes/tab-settings.php:998
907
  msgid "DNS reverse lookup"
908
  msgstr ""
909
 
910
- #: admin/includes/tab-settings.php:1015
911
  msgid ""
912
  "It enables to simulate validation without deployment. The results can be "
913
  "found at &#8220;Public facing pages&#8221; in Logs."
914
  msgstr ""
915
 
916
- #: admin/includes/tab-settings.php:1015
917
  msgid "Simulation mode"
918
  msgstr ""
919
 
920
- #: admin/includes/tab-settings.php:1033
921
  msgid "Geolocation API settings"
922
  msgstr ""
923
 
924
- #: admin/includes/tab-settings.php:1042
925
  msgid ""
926
  "<dfn title=\"Cache and local database are scanned at the top priority.\">API "
927
  "selection and key settings</dfn>"
928
  msgstr ""
929
 
930
- #: admin/includes/tab-settings.php:1061
931
  msgid "Timeout for network API [sec]"
932
  msgstr ""
933
 
934
- #: admin/includes/tab-settings.php:1082
935
  #, php-format
936
  msgid ""
937
  "Can not find geolocation API libraries in <code>%s</code>. It seems to have "
@@ -946,123 +981,123 @@ msgid ""
946
  "troubles? | IP Geo Block\">this instruction</a>."
947
  msgstr ""
948
 
949
- #: admin/includes/tab-settings.php:1090
950
  msgid "Local database settings"
951
  msgstr ""
952
 
953
- #: admin/includes/tab-settings.php:1104
954
  msgid "database"
955
  msgstr ""
956
 
957
- #: admin/includes/tab-settings.php:1114
958
  msgid "Auto updating (once a month)"
959
  msgstr ""
960
 
961
- #: admin/includes/tab-settings.php:1131
962
  msgid "Download database"
963
  msgstr ""
964
 
965
- #: admin/includes/tab-settings.php:1139
966
  msgid "Download now"
967
  msgstr ""
968
 
969
- #: admin/includes/tab-settings.php:1150
970
  msgid "Statistics and Logs settings"
971
  msgstr ""
972
 
973
- #: admin/includes/tab-settings.php:1159
974
  msgid "Record &#8220;Statistics&#8221;"
975
  msgstr ""
976
 
977
- #: admin/includes/tab-settings.php:1176
978
  msgid "Maximum period for &#8220;Statistics&#8221; (days)"
979
  msgstr ""
980
 
981
- #: admin/includes/tab-settings.php:1194
982
  msgid "Record &#8220;Logs&#8221;"
983
  msgstr ""
984
 
985
- #: admin/includes/tab-settings.php:1206
986
  msgid "When requests blocked"
987
  msgstr ""
988
 
989
- #: admin/includes/tab-settings.php:1207
990
  msgid "When requests passed"
991
  msgstr ""
992
 
993
- #: admin/includes/tab-settings.php:1208
994
- msgid "When blocked or passed from undesired country"
995
  msgstr ""
996
 
997
- #: admin/includes/tab-settings.php:1209
998
  msgid "Unauthenticated visitor"
999
  msgstr ""
1000
 
1001
- #: admin/includes/tab-settings.php:1210
1002
  msgid "Authenticated user"
1003
  msgstr ""
1004
 
1005
- #: admin/includes/tab-settings.php:1211
1006
  msgid "All the validation"
1007
  msgstr ""
1008
 
1009
- #: admin/includes/tab-settings.php:1220
1010
  msgid "Maximum entries of &#8220;Logs&#8221;"
1011
  msgstr ""
1012
 
1013
- #: admin/includes/tab-settings.php:1237
1014
  msgid ""
1015
  "<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
1016
  "recorded with their values in &#8220;Logs&#8221;</dfn>"
1017
  msgstr ""
1018
 
1019
- #: admin/includes/tab-settings.php:1255
1020
  msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
1021
  msgstr ""
1022
 
1023
- #: admin/includes/tab-settings.php:1272
1024
  msgid ""
1025
  "<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
1026
  "&#8220;Live update&#8221;</dfn>"
1027
  msgstr ""
1028
 
1029
- #: admin/includes/tab-settings.php:1284
1030
  msgid "Ordinary file"
1031
  msgstr ""
1032
 
1033
- #: admin/includes/tab-settings.php:1285
1034
  msgid "In-Memory"
1035
  msgstr ""
1036
 
1037
- #: admin/includes/tab-settings.php:1288
1038
  msgid "PDO_SQLITE driver not available"
1039
  msgstr ""
1040
 
1041
- #: admin/includes/tab-settings.php:1289
1042
  msgid ""
1043
  "It takes a few tens of milliseconds as overhead. It can be safely used "
1044
  "without conflict with other plugins."
1045
  msgstr ""
1046
 
1047
- #: admin/includes/tab-settings.php:1290
1048
  msgid ""
1049
  "It takes a few milliseconds as overhead. There is a possibility of conflict "
1050
  "with other plugins using this method."
1051
  msgstr ""
1052
 
1053
- #: admin/includes/tab-settings.php:1299
1054
  msgid "Reset database source of &#8220;Live update&#8221;"
1055
  msgstr ""
1056
 
1057
- #: admin/includes/tab-settings.php:1307
1058
  msgid "Reset now"
1059
  msgstr ""
1060
 
1061
- #: admin/includes/tab-settings.php:1318
1062
  msgid "IP address cache settings"
1063
  msgstr ""
1064
 
1065
- #: admin/includes/tab-settings.php:1327
1066
  #, php-format
1067
  msgid ""
1068
  "<dfn title=\"If user authentication fails consecutively %d times, subsequent "
@@ -1070,121 +1105,121 @@ msgid ""
1070
  "\">Expiration time [sec]</dfn>"
1071
  msgstr ""
1072
 
1073
- #: admin/includes/tab-settings.php:1343
1074
  msgid "Garbage collection period [sec]"
1075
  msgstr ""
1076
 
1077
- #: admin/includes/tab-settings.php:1360
1078
  msgid "Number of entries to be displayed in cache"
1079
  msgstr ""
1080
 
1081
- #: admin/includes/tab-settings.php:1378
1082
  msgid "Submission settings"
1083
  msgstr ""
1084
 
1085
- #: admin/includes/tab-settings.php:1390
1086
  msgid "The whole will be wrapped by &lt;p&gt; tag. Allowed tags: "
1087
  msgstr ""
1088
 
1089
- #: admin/includes/tab-settings.php:1390
1090
  msgid "Message on comment form"
1091
  msgstr ""
1092
 
1093
- #: admin/includes/tab-settings.php:1402
1094
  msgid "None"
1095
  msgstr ""
1096
 
1097
- #: admin/includes/tab-settings.php:1403
1098
  msgid "Top"
1099
  msgstr ""
1100
 
1101
- #: admin/includes/tab-settings.php:1404
1102
  msgid "Bottom"
1103
  msgstr ""
1104
 
1105
- #: admin/includes/tab-settings.php:1415
1106
  msgid "Plugin settings"
1107
  msgstr ""
1108
 
1109
- #: admin/includes/tab-settings.php:1428
1110
  msgid ""
1111
  "<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
1112
  "settings</dfn>"
1113
  msgstr ""
1114
 
1115
- #: admin/includes/tab-settings.php:1446
1116
  msgid "Remove all settings at uninstallation"
1117
  msgstr ""
1118
 
1119
- #: admin/includes/tab-settings.php:1464
1120
  msgid ""
1121
  "<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
1122
  "dfn>"
1123
  msgstr ""
1124
 
1125
- #: admin/includes/tab-settings.php:1478
1126
  msgid ""
1127
  "You need to click the &#8220;Save Changes&#8221; button for imported "
1128
  "settings to take effect."
1129
  msgstr ""
1130
 
1131
- #: admin/includes/tab-settings.php:1484
1132
  msgid "Export / Import settings"
1133
  msgstr ""
1134
 
1135
- #: admin/includes/tab-settings.php:1491
1136
  msgid "Export settings"
1137
  msgstr ""
1138
 
1139
- #: admin/includes/tab-settings.php:1492
1140
  msgid "Import from the local file"
1141
  msgstr ""
1142
 
1143
- #: admin/includes/tab-settings.php:1492
1144
  msgid "Import settings"
1145
  msgstr ""
1146
 
1147
- #: admin/includes/tab-settings.php:1501
1148
  msgid "Import pre-defined settings"
1149
  msgstr ""
1150
 
1151
- #: admin/includes/tab-settings.php:1508
1152
  msgid ""
1153
  "Import the default settings to revert to the &#8220;Right after "
1154
  "installing&#8221; state"
1155
  msgstr ""
1156
 
1157
- #: admin/includes/tab-settings.php:1508
1158
  msgid "Default settings"
1159
  msgstr ""
1160
 
1161
- #: admin/includes/tab-settings.php:1509
1162
  msgid ""
1163
  "Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
1164
  "for the &#8220;Back-end target settings&#8221;"
1165
  msgstr ""
1166
 
1167
- #: admin/includes/tab-settings.php:1509
1168
  msgid "Best for Back-end"
1169
  msgstr ""
1170
 
1171
- #: admin/includes/tab-settings.php:1519
1172
  msgid "Delete DB table for validation logs"
1173
  msgstr ""
1174
 
1175
- #: admin/includes/tab-settings.php:1527
1176
  msgid "Delete now"
1177
  msgstr ""
1178
 
1179
- #: admin/includes/tab-settings.php:1535
1180
  msgid "Create DB table for validation logs"
1181
  msgstr ""
1182
 
1183
- #: admin/includes/tab-settings.php:1543
1184
  msgid "Create now"
1185
  msgstr ""
1186
 
1187
- #: admin/includes/tab-settings.php:1553
1188
  msgid ""
1189
  "<dfn title=\"When an unexpected blocking has occurred, please press the "
1190
  "button to find the blocked request in the dumped information which may help "
@@ -1193,15 +1228,15 @@ msgid ""
1193
  "&#8250; Support &raquo; IP Geo Block\">support forum</a> ]"
1194
  msgstr ""
1195
 
1196
- #: admin/includes/tab-settings.php:1560
1197
  msgid "Please copy &amp; paste when submitting your issue to support forum."
1198
  msgstr ""
1199
 
1200
- #: admin/includes/tab-settings.php:1560
1201
  msgid "Show information"
1202
  msgstr ""
1203
 
1204
- #: admin/includes/tab-settings.php:1576
1205
  msgid ""
1206
  "To enhance the protection ability, please refer to &#8220;<a rel=\"noreferrer"
1207
  "\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
@@ -1209,7 +1244,7 @@ msgid ""
1209
  "\">The best practice for target settings</a>&#8221;."
1210
  msgstr ""
1211
 
1212
- #: admin/includes/tab-settings.php:1577
1213
  msgid ""
1214
  "If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
1215
  "\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
@@ -1218,18 +1253,18 @@ msgid ""
1218
  "\">Codex</a>."
1219
  msgstr ""
1220
 
1221
- #: admin/includes/tab-settings.php:1584
1222
  msgid ""
1223
  "While Maxmind and IP2Location will fetch the local database, others will "
1224
  "pass an IP address to the APIs via HTTP."
1225
  msgstr ""
1226
 
1227
- #: admin/includes/tab-settings.php:1585
1228
  msgid ""
1229
  "Please select the appropriate APIs to fit the privacy law in your country."
1230
  msgstr ""
1231
 
1232
- #: admin/includes/tab-settings.php:1592
1233
  msgid ""
1234
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1235
  "ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
@@ -1237,7 +1272,7 @@ msgid ""
1237
  "cache plugin."
1238
  msgstr ""
1239
 
1240
- #: admin/includes/tab-settings.php:1593
1241
  msgid ""
1242
  "If you find any issues or have something to suggest, please feel free to "
1243
  "open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
@@ -1245,20 +1280,20 @@ msgid ""
1245
  "\">support forum</a>."
1246
  msgstr ""
1247
 
1248
- #: admin/includes/tab-settings.php:1600
1249
  msgid ""
1250
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1251
  "ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
1252
  "Block\">Record settings and logs</a>&#8221; for details."
1253
  msgstr ""
1254
 
1255
- #: admin/includes/class-admin-rewrite.php:144
1256
- #: admin/includes/class-admin-rewrite.php:170
1257
  #, php-format
1258
  msgid "Or please refer to %s to set it manually."
1259
  msgstr ""
1260
 
1261
- #: admin/includes/class-admin-rewrite.php:208
1262
  #, php-format
1263
  msgid "&#8220;auto_prepend_file&#8221; already defined in %s."
1264
  msgstr ""
@@ -1336,7 +1371,7 @@ msgid "Clear statistics"
1336
  msgstr ""
1337
 
1338
  #: admin/includes/tab-statistics.php:185
1339
- msgid "Statistics in logs"
1340
  msgstr ""
1341
 
1342
  #: admin/includes/tab-statistics.php:217
@@ -1355,35 +1390,39 @@ msgstr ""
1355
  msgid "Clear cache"
1356
  msgstr ""
1357
 
1358
- #: admin/includes/tab-statistics.php:291
1359
  msgid "Country (Top 10)"
1360
  msgstr ""
1361
 
1362
- #: admin/includes/tab-statistics.php:292
1363
  msgid "AS number (Top 10)"
1364
  msgstr ""
1365
 
1366
- #: admin/includes/tab-statistics.php:293
1367
  msgid "IP address (Top 10)"
1368
  msgstr ""
1369
 
1370
- #: admin/includes/tab-statistics.php:294
1371
  msgid "Slug in back-end"
1372
  msgstr ""
1373
 
1374
- #: admin/includes/tab-statistics.php:391
 
 
 
 
1375
  msgid ""
1376
  "[<strong>Record validation statistics</strong>] on [<strong>Settings</"
1377
  "strong>] tab is not selected as [<strong>Enable</strong>]."
1378
  msgstr ""
1379
 
1380
- #: admin/includes/tab-statistics.php:392
1381
  msgid ""
1382
  "Please set the proper condition to record and analyze the validation "
1383
  "statistics."
1384
  msgstr ""
1385
 
1386
- #: admin/includes/tab-statistics.php:397
1387
  msgid ""
1388
  "Please set the proper condition to record and analyze the validation logs."
1389
  msgstr ""
1
+ # Copyright (C) 2013-2018 tokkonopapa
2
  # This file is distributed under the same license as the IP Geo Block package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: IP Geo Block 3.0.6\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
7
+ "POT-Creation-Date: 2018-01-08 21:11+0900\n"
8
+ "PO-Revision-Date: 2018-01-08 21:11+0900\n"
9
  "Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
10
  "Language-Team: \n"
11
  "MIME-Version: 1.0\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
 
22
  #. Description of the plugin/theme
23
+ msgid ""
24
+ "It blocks any spams, login attempts and malicious access to the admin area "
25
+ "posted from outside your nation, and also prevents zero-day exploit."
26
  msgstr ""
27
 
28
  #: classes/class-ip-geo-block-opts.php:409
29
  #: classes/class-ip-geo-block-cron.php:273
30
  #: classes/class-ip-geo-block-cron.php:305
31
+ #: admin/class-ip-geo-block-admin.php:1210
32
+ #: admin/includes/class-admin-rewrite.php:194
33
  #, php-format
34
  msgid "Unable to write <code>%s</code>. Please check the permission."
35
  msgstr ""
40
 
41
  #: classes/class-ip-geo-block-cron.php:268
42
  #: classes/class-ip-geo-block-cron.php:300
43
+ #: admin/includes/class-admin-rewrite.php:168
44
  #, php-format
45
  msgid "Unable to read <code>%s</code>. Please check the permission."
46
  msgstr ""
55
  msgstr ""
56
 
57
  #: classes/class-ip-geo-block-cron.php:334
58
+ #: admin/includes/tab-settings.php:1131
59
  #, php-format
60
  msgid "Last update: %s"
61
  msgstr ""
96
  "<strong>you'll be blocked</strong> after the cache expires."
97
  msgstr ""
98
 
99
+ #: admin/class-ip-geo-block-admin.php:260
100
  msgid "Import settings ?"
101
  msgstr ""
102
 
103
+ #: admin/class-ip-geo-block-admin.php:261
104
  msgid "Create table ?"
105
  msgstr ""
106
 
107
+ #: admin/class-ip-geo-block-admin.php:262
108
  msgid "Delete table ?"
109
  msgstr ""
110
 
111
+ #: admin/class-ip-geo-block-admin.php:263
112
  msgid "Clear statistics ?"
113
  msgstr ""
114
 
115
+ #: admin/class-ip-geo-block-admin.php:264
116
  msgid "Clear cache ?"
117
  msgstr ""
118
 
119
+ #: admin/class-ip-geo-block-admin.php:265
120
  msgid "Clear logs ?"
121
  msgstr ""
122
 
123
+ #: admin/class-ip-geo-block-admin.php:266
124
  msgid "ajax for logged-in user"
125
  msgstr ""
126
 
127
+ #: admin/class-ip-geo-block-admin.php:267
128
  msgid "ajax for non logged-in user"
129
  msgstr ""
130
 
131
+ #: admin/class-ip-geo-block-admin.php:268
132
+ #, php-format
133
+ msgid "[Found: %d]"
134
+ msgstr ""
135
+
136
+ #: admin/class-ip-geo-block-admin.php:269
137
+ #, php-format
138
+ msgid "Find and verify `%s` on &#8220;Logs&#8221; tab."
139
+ msgstr ""
140
+
141
+ #: admin/class-ip-geo-block-admin.php:270
142
  msgid "This feature is available with HTML5 compliant browsers."
143
  msgstr ""
144
 
145
+ #: admin/class-ip-geo-block-admin.php:271
146
  msgid "The selected row cannot be found in the visible area."
147
  msgstr ""
148
 
149
+ #: admin/class-ip-geo-block-admin.php:272
150
+ #: admin/class-ip-geo-block-admin.php:1403
151
+ #, php-format
152
+ msgid "An error occurred while executing the ajax command `%s`."
153
+ msgstr ""
154
+
155
+ #: admin/class-ip-geo-block-admin.php:276
156
  msgid "No data available in table"
157
  msgstr ""
158
 
159
+ #: admin/class-ip-geo-block-admin.php:277
160
  msgid "No matching records found"
161
  msgstr ""
162
 
163
+ #: admin/class-ip-geo-block-admin.php:278
164
  #: admin/includes/tab-geolocation.php:71
165
  msgid "IP address"
166
  msgstr ""
167
 
168
+ #: admin/class-ip-geo-block-admin.php:279
169
  msgid "Code"
170
  msgstr ""
171
 
172
+ #: admin/class-ip-geo-block-admin.php:280
173
  msgid "ASN"
174
  msgstr ""
175
 
176
+ #: admin/class-ip-geo-block-admin.php:281
177
  msgid "Host name"
178
  msgstr ""
179
 
180
+ #: admin/class-ip-geo-block-admin.php:282
181
  msgid "Target"
182
  msgstr ""
183
 
184
+ #: admin/class-ip-geo-block-admin.php:283
185
  msgid "Failure / Total"
186
  msgstr ""
187
 
188
+ #: admin/class-ip-geo-block-admin.php:284
189
  msgid "Elapsed[sec]"
190
  msgstr ""
191
 
192
+ #: admin/class-ip-geo-block-admin.php:285
193
  msgid "Time"
194
  msgstr ""
195
 
196
+ #: admin/class-ip-geo-block-admin.php:286
197
  msgid "Result"
198
  msgstr ""
199
 
200
+ #: admin/class-ip-geo-block-admin.php:287
201
  msgid "Request"
202
  msgstr ""
203
 
204
+ #: admin/class-ip-geo-block-admin.php:288
205
  msgid "User agent"
206
  msgstr ""
207
 
208
+ #: admin/class-ip-geo-block-admin.php:289
209
  msgid "HTTP headers"
210
  msgstr ""
211
 
212
+ #: admin/class-ip-geo-block-admin.php:290
213
  msgid "$_POST data"
214
  msgstr ""
215
 
216
+ #: admin/class-ip-geo-block-admin.php:308
217
  msgid "Contribute on GitHub"
218
  msgstr ""
219
 
220
+ #: admin/class-ip-geo-block-admin.php:322
221
+ #: admin/class-ip-geo-block-admin.php:430
222
+ #: admin/class-ip-geo-block-admin.php:638
223
+ #: admin/class-ip-geo-block-admin.php:657
224
  msgid "Settings"
225
  msgstr ""
226
 
227
+ #: admin/class-ip-geo-block-admin.php:410
228
+ #: admin/class-ip-geo-block-admin.php:411
229
+ #: admin/class-ip-geo-block-admin.php:421
230
+ #: admin/class-ip-geo-block-admin.php:422
231
  #: admin/class-ip-geo-block-admin.php:429
232
+ #: admin/class-ip-geo-block-admin.php:437
 
233
  msgid "IP Geo Block"
234
  msgstr ""
235
 
236
+ #: admin/class-ip-geo-block-admin.php:438
237
+ #: admin/class-ip-geo-block-admin.php:642
238
+ #: admin/class-ip-geo-block-admin.php:658
239
  msgid "Site List"
240
  msgstr ""
241
 
242
+ #: admin/class-ip-geo-block-admin.php:467
243
  msgid "You need WordPress 3.7+."
244
  msgstr ""
245
 
246
+ #: admin/class-ip-geo-block-admin.php:473
247
  #, php-format
248
  msgid ""
249
  "Now downloading geolocation databases in background. After a little while, "
251
  "strong>&#8221; at <a href=\"%s\">Validation rule settings</a>."
252
  msgstr ""
253
 
254
+ #: admin/class-ip-geo-block-admin.php:479
255
  #, php-format
256
  msgid ""
257
  "The &#8220;<strong>Matching rule</strong>&#8221; is not set properly. Please "
258
  "confirm it at <a href=\"%s\">Validation rule settings</a>."
259
  msgstr ""
260
 
261
+ #: admin/class-ip-geo-block-admin.php:488
262
  msgid "Local database and matching rule have been updated."
263
  msgstr ""
264
 
265
+ #: admin/class-ip-geo-block-admin.php:499
266
  msgid ""
267
  "Once you logout, you will be unable to login again because the number of "
268
  "login attempts reaches the limit."
269
  msgstr ""
270
 
271
+ #: admin/class-ip-geo-block-admin.php:501
272
  #, php-format
273
  msgid ""
274
  "Please execute \"<strong>Clear cache</strong>\" on <a href=\"%s\">Statistics "
275
  "tab</a> to prevent locking yourself out."
276
  msgstr ""
277
 
278
+ #: admin/class-ip-geo-block-admin.php:511
279
  msgid ""
280
  "Once you logout, you will be unable to login again because your country code "
281
  "or IP address is in the blacklist."
282
  msgstr ""
283
 
284
+ #: admin/class-ip-geo-block-admin.php:512
285
  msgid ""
286
  "Once you logout, you will be unable to login again because your country code "
287
  "or IP address is not in the whitelist."
288
  msgstr ""
289
 
290
+ #: admin/class-ip-geo-block-admin.php:515
291
  #, php-format
292
  msgid "Please check your <a href=\"%s\">Validation rule settings</a>."
293
  msgstr ""
294
 
295
+ #: admin/class-ip-geo-block-admin.php:526
296
  msgid ""
297
  "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php) at &#8220;Validation "
298
  "timing&#8221; is imcompatible with <strong>IP Geo Allow</strong>. Please "
299
  "select &#8220;init&#8221; action hook."
300
  msgstr ""
301
 
302
+ #: admin/class-ip-geo-block-admin.php:639
303
  msgid "Statistics"
304
  msgstr ""
305
 
306
+ #: admin/class-ip-geo-block-admin.php:640
307
  msgid "Logs"
308
  msgstr ""
309
 
310
+ #: admin/class-ip-geo-block-admin.php:641
311
  msgid "Search"
312
  msgstr ""
313
 
314
+ #: admin/class-ip-geo-block-admin.php:643
315
  msgid "Attribution"
316
  msgstr ""
317
 
318
+ #: admin/class-ip-geo-block-admin.php:669
319
  msgid "Network wide"
320
  msgstr ""
321
 
322
+ #: admin/class-ip-geo-block-admin.php:682
323
  msgid "Toggle all"
324
  msgstr ""
325
 
326
+ #: admin/class-ip-geo-block-admin.php:685
327
  msgid ""
328
  "Independent of &#8220;Statistics and Logs settings&#8221;, you can see all "
329
  "the requests validated by this plugin in almost real time."
330
  msgstr ""
331
 
332
+ #: admin/class-ip-geo-block-admin.php:685 admin/includes/tab-accesslog.php:37
333
  msgid "Live update"
334
  msgstr ""
335
 
336
+ #: admin/class-ip-geo-block-admin.php:689
337
  msgid "Open a new window on clicking the link in the chart."
338
  msgstr ""
339
 
340
+ #: admin/class-ip-geo-block-admin.php:689
341
  msgid "Open a new window"
342
  msgstr ""
343
 
344
+ #: admin/class-ip-geo-block-admin.php:712
345
  msgid "Thanks for providing these great services for free."
346
  msgstr ""
347
 
348
+ #: admin/class-ip-geo-block-admin.php:713
349
  msgid ""
350
  "(Most browsers will redirect you to each site <a href=\"http://www."
351
  "ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
352
  "when you click the link</a>.)"
353
  msgstr ""
354
 
355
+ #: admin/class-ip-geo-block-admin.php:718
356
  msgid "Back to top"
357
  msgstr ""
358
 
359
+ #: admin/class-ip-geo-block-admin.php:815
360
  msgid "Enable"
361
  msgstr ""
362
 
363
+ #: admin/class-ip-geo-block-admin.php:830
364
  msgid "Select one"
365
  msgstr ""
366
 
367
+ #: admin/class-ip-geo-block-admin.php:1240
368
  msgid "Settings saved."
369
  msgstr ""
370
 
372
  msgid "Validation logs"
373
  msgstr ""
374
 
375
+ #: admin/includes/tab-accesslog.php:52 admin/includes/tab-settings.php:452
376
  msgid "Comment post"
377
  msgstr ""
378
 
379
+ #: admin/includes/tab-accesslog.php:53 admin/includes/tab-settings.php:453
380
  msgid "XML-RPC"
381
  msgstr ""
382
 
383
+ #: admin/includes/tab-accesslog.php:54 admin/includes/tab-settings.php:454
384
  msgid "Login form"
385
  msgstr ""
386
 
387
+ #: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:455
388
  msgid "Admin area"
389
  msgstr ""
390
 
391
+ #: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:457
392
  msgid "Public facing pages"
393
  msgstr ""
394
 
446
  msgid "Export logs"
447
  msgstr ""
448
 
449
+ #: admin/includes/tab-accesslog.php:150 admin/includes/tab-settings.php:1517
450
  msgid "Export to the local file"
451
  msgstr ""
452
 
455
  msgstr ""
456
 
457
  #: admin/includes/tab-accesslog.php:167 admin/includes/tab-network.php:112
458
+ #: admin/includes/tab-statistics.php:397
459
  msgid ""
460
  "[<strong>Record validation logs</strong>] on [<strong>Settings</strong>] tab "
461
  "is [<strong>Disable</strong>]."
546
  msgid "Toggle selection"
547
  msgstr ""
548
 
549
+ #: admin/includes/tab-settings.php:119
550
+ msgid "Find blocked requests in &#8220;Logs&#8220;"
551
+ msgstr ""
552
+
553
+ #: admin/includes/tab-settings.php:120
554
+ msgid ""
555
+ "Before adding as &#8220;Exception&#8221;, please click on &#8220;<a class="
556
+ "\"ip-geo-block-icon ip-geo-block-icon-alert\" title=\"This button is just a "
557
+ "sample.\"><span></span></a>&#8221; button (if exists) attached to the "
558
+ "following list to confirm that the blocked request is not malicious."
559
+ msgstr ""
560
+
561
+ #: admin/includes/tab-settings.php:127 admin/includes/tab-settings.php:791
562
  msgid "Matching rule"
563
  msgstr ""
564
 
565
+ #: admin/includes/tab-settings.php:139
566
  msgid ""
567
  "A request from which the country code or IP address is <strong>NOT</strong> "
568
  "in the whitelist will be blocked."
569
  msgstr ""
570
 
571
+ #: admin/includes/tab-settings.php:140
572
  msgid ""
573
  "A request from which the country code or IP address is in the blacklist will "
574
  "be blocked."
575
  msgstr ""
576
 
577
+ #: admin/includes/tab-settings.php:186
578
  msgid ""
579
  "<dfn title=\"It enables utilizing &#8220;AS number&#8221; in the &#8220;"
580
  "Whitelist/Blacklist of extra IP addresses&#8221; to specify a group of IP "
581
  "networks.\">Use Autonomous System Number</dfn>"
582
  msgstr ""
583
 
584
+ #: admin/includes/tab-settings.php:197
585
  #, php-format
586
  msgid ""
587
  "Some useful tools for investigating ASN are introduced in &#8220;%s&#8221;."
588
  msgstr ""
589
 
590
+ #: admin/includes/tab-settings.php:206
591
  msgid ""
592
  "<dfn title=\"e.g. &#8220;192.0.64.0/18&#8221; for Jetpack server, "
593
  "&#8220;69.46.36.0/27&#8221; for WordFence server or &#8220;AS32934&#8221; "
594
  "for Facebook.\">Whitelist of extra IP addresses prior to country code</dfn>"
595
  msgstr ""
596
 
597
+ #: admin/includes/tab-settings.php:226
598
  msgid ""
599
  "<dfn title=\"Server level access control is recommended (e.g. .htaccess)."
600
  "\">Blacklist of extra IP addresses prior to country code</dfn>"
601
  msgstr ""
602
 
603
+ #: admin/includes/tab-settings.php:247
604
  msgid ""
605
  "<dfn title=\"If your server is placed behind the proxy server or the load "
606
  "balancing server, you need to put the appropriate key such as &#8220;"
609
  "addresses</dfn>"
610
  msgstr ""
611
 
612
+ #: admin/includes/tab-settings.php:266
613
  msgid ""
614
  "<dfn title=\"It validates malicious signatures independently of &#8220;Block "
615
  "by country&#8221; and &#8220;Prevent Zero-day Exploit&#8221; for the target "
616
  "&#8220;Admin area&#8221;, &#8220;Admin ajax/post&#8221;, &#8220;Plugins "
617
  "area&#8221; and &#8220;Themes area&#8221;.\">Bad signatures in query</dfn> "
618
+ "<nobr>(<a class=\"ip-geo-block-icon ip-geo-block-icon-cycle\" id=\"ip-geo-"
619
+ "block-decode\" title=\"When you find ugly character string in the text area, "
620
+ "please click to restore.\"><span></span></a>)</nobr>"
621
  msgstr ""
622
 
623
+ #: admin/includes/tab-settings.php:280
624
  msgid ""
625
  "<dfn title=\"Select allowed MIME type.\">Whitelist of allowed MIME type</dfn>"
626
  msgstr ""
627
 
628
+ #: admin/includes/tab-settings.php:291
629
  msgid ""
630
  "<dfn title=\"Put forbidden file extensions.\">Blacklist of forbidden file "
631
  "extensions</dfn>"
632
  msgstr ""
633
 
634
+ #: admin/includes/tab-settings.php:295
635
  msgid ""
636
  "<dfn title=\"Specify the capabilities to be verified. Depending on the "
637
  "particular type of uploader, certain capability may be required. Default is "
639
  "verification will be skipped if empty.\">Capabilities to be verified</dfn>"
640
  msgstr ""
641
 
642
+ #: admin/includes/tab-settings.php:295
643
  msgid ""
644
  "(&thinsp;See &#8220;<a rel=\"noreferrer\" href=\"https://codex.wordpress.org/"
645
  "Roles_and_Capabilities\" title=\"Roles and Capabilities &laquo; WordPress "
646
  "Codex\">Roles and Capabilities</a>&#8221;&thinsp;)"
647
  msgstr ""
648
 
649
+ #: admin/includes/tab-settings.php:302
650
  msgid ""
651
  "<dfn title=\"It restricts the file types on upload in order to block malware "
652
  "and backdoor via both back-end and front-end. Please consider to select "
655
  "this validation.\">Prevent malicious file uploading</dfn>"
656
  msgstr ""
657
 
658
+ #: admin/includes/tab-settings.php:313 admin/includes/tab-settings.php:494
659
+ #: admin/includes/tab-settings.php:618 admin/includes/tab-settings.php:1231
660
  msgid "Disable"
661
  msgstr ""
662
 
663
+ #: admin/includes/tab-settings.php:314
664
  msgid "Verify file extension and MIME type"
665
  msgstr ""
666
 
667
+ #: admin/includes/tab-settings.php:315
668
  msgid "Verify file extension only"
669
  msgstr ""
670
 
671
+ #: admin/includes/tab-settings.php:325
672
  #, php-format
673
  msgid ""
674
  "<dfn title=\"You can put your original 403.php and so on into your theme "
675
  "directory.\">Response code</dfn> %s"
676
  msgstr ""
677
 
678
+ #: admin/includes/tab-settings.php:355 admin/includes/tab-settings.php:878
679
  msgid ""
680
  "<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
681
  "to a public facing page, visitors would not be blocked on the page to "
684
  "\">Redirect URL</dfn>"
685
  msgstr ""
686
 
687
+ #: admin/includes/tab-settings.php:373 admin/includes/tab-settings.php:897
688
  msgid ""
689
  "<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
690
  "message</dfn>"
691
  msgstr ""
692
 
693
+ #: admin/includes/tab-settings.php:390
694
  msgid ""
695
  "<dfn title=\"This is applied to &#8220;XML-RPC&#8221; and &#8220;Login "
696
  "form&#8221;. Lockout period is defined as expiration time at &#8220;Cache "
697
  "settings&#8221;.\">Max number of failed login attempts per IP address</dfn>"
698
  msgstr ""
699
 
700
+ #: admin/includes/tab-settings.php:418
701
  msgid "Select when to run the validation."
702
  msgstr ""
703
 
704
+ #: admin/includes/tab-settings.php:418
705
  msgid "Validation timing"
706
  msgstr ""
707
 
708
+ #: admin/includes/tab-settings.php:429
709
  msgid "&#8220;init&#8221; action hook"
710
  msgstr ""
711
 
712
+ #: admin/includes/tab-settings.php:430
713
  msgid "&#8220;mu-plugins&#8221; (ip-geo-block-mu.php)"
714
  msgstr ""
715
 
716
+ #: admin/includes/tab-settings.php:433
717
  msgid ""
718
  "Validate at &#8220;init&#8221; action hook in the same manner as typical "
719
  "plugins."
720
  msgstr ""
721
 
722
+ #: admin/includes/tab-settings.php:434
723
  msgid ""
724
  "Validate at an earlier phase than other typical plugins. It can reduce load "
725
  "on server but has <a rel='noreferrer' href='http://www.ipgeoblock.com/codex/"
727
  "restrictions</a>."
728
  msgstr ""
729
 
730
+ #: admin/includes/tab-settings.php:444
731
  msgid "Back-end target settings"
732
  msgstr ""
733
 
734
+ #: admin/includes/tab-settings.php:450
735
  #, php-format
736
  msgid "<dfn title=\"Validate request to %s.\">%s</dfn>"
737
  msgstr ""
738
 
739
+ #: admin/includes/tab-settings.php:456
740
  msgid "Other areas"
741
  msgstr ""
742
 
743
+ #: admin/includes/tab-settings.php:457
744
  msgid "public facing pages"
745
  msgstr ""
746
 
747
+ #: admin/includes/tab-settings.php:475 admin/includes/tab-settings.php:495
748
+ #: admin/includes/tab-settings.php:528 admin/includes/tab-settings.php:534
749
+ #: admin/includes/tab-settings.php:779
750
  msgid "Block by country"
751
  msgstr ""
752
 
753
+ #: admin/includes/tab-settings.php:496
754
  msgid "Completely close"
755
  msgstr ""
756
 
757
+ #: admin/includes/tab-settings.php:529
758
  msgid ""
759
  "<dfn title=\"Specify the individual action as a blocking target.\">Target "
760
  "actions</dfn>"
761
  msgstr ""
762
 
763
+ #: admin/includes/tab-settings.php:535
764
  msgid "Prevent Zero-day Exploit"
765
  msgstr ""
766
 
767
+ #: admin/includes/tab-settings.php:539
768
  msgid ""
769
  "It will block a request related to the services for both public facing pages "
770
  "and the dashboard."
771
  msgstr ""
772
 
773
+ #: admin/includes/tab-settings.php:540
774
  msgid ""
775
  "Regardless of the country code, it will block a malicious request related to "
776
  "the services only for the dashboard."
777
  msgstr ""
778
 
779
+ #: admin/includes/tab-settings.php:563
780
  msgid "admin post for logged-in user"
781
  msgstr ""
782
 
783
+ #: admin/includes/tab-settings.php:564
784
  msgid "admin post for non logged-in user"
785
  msgstr ""
786
 
787
+ #: admin/includes/tab-settings.php:588
788
  msgid "Admin ajax/post"
789
  msgstr ""
790
 
791
+ #: admin/includes/tab-settings.php:602
792
  msgid ""
793
+ "Specify the action name (&#8220;action=&hellip;&#8221;) or the page name "
794
+ "(&#8220;page=&hellip;&#8221;) to prevent unintended blocking caused by "
795
+ "&#8220;Block by country&#8221; (for non logged-in user) and &#8220;Prevent "
796
+ "Zero-day Exploit&#8221; (for logged-in user)."
797
  msgstr ""
798
 
799
+ #: admin/includes/tab-settings.php:602 admin/includes/tab-settings.php:680
800
+ #: admin/includes/tab-settings.php:741
801
+ msgid "Exceptions"
802
+ msgstr ""
803
+
804
+ #: admin/includes/tab-settings.php:603
805
  msgid "Toggle with non logged-in user"
806
  msgstr ""
807
 
808
+ #: admin/includes/tab-settings.php:606
809
+ msgid "Candidate actions/pages"
810
  msgstr ""
811
 
812
+ #: admin/includes/tab-settings.php:620
813
  #, php-format
814
  msgid ""
815
  "Regardless of the country code, it will block a malicious request to <code>"
816
  "%s&ctdot;/*.php</code>."
817
  msgstr ""
818
 
819
+ #: admin/includes/tab-settings.php:621
820
  msgid ""
821
+ "Select the item which causes unintended blocking in order to exclude from "
822
+ "the validation target. Grayed item indicates &#8220;INACTIVE&#8221;."
 
823
  msgstr ""
824
 
825
+ #: admin/includes/tab-settings.php:622
826
  #, php-format
827
  msgid ""
828
  "It configures &#8220;%s&#8221; to validate a request to the PHP file which "
829
+ "does not load WordPress core. Make sure to deny direct access to the hidden "
830
+ "files beginning with a dot by the server's configuration."
831
  msgstr ""
832
 
833
+ #: admin/includes/tab-settings.php:623
834
  msgid "Sorry, but your server type is not supported."
835
  msgstr ""
836
 
837
+ #: admin/includes/tab-settings.php:659 admin/includes/tab-settings.php:720
838
  msgid "Force to load WP core"
839
  msgstr ""
840
 
841
+ #: admin/includes/tab-settings.php:664
842
  msgid "Plugins area"
843
  msgstr ""
844
 
845
+ #: admin/includes/tab-settings.php:725
846
  msgid "Themes area"
847
  msgstr ""
848
 
849
+ #: admin/includes/tab-settings.php:760
850
  msgid "Front-end target settings"
851
  msgstr ""
852
 
853
+ #: admin/includes/tab-settings.php:784
854
  msgid "Follow &#8220;Validation rule settings&#8221;"
855
  msgstr ""
856
 
857
+ #: admin/includes/tab-settings.php:846
858
  #, php-format
859
  msgid ""
860
  "<dfn title=\"You can configure a different response code from the Back-end. "
862
  "\">Response code</dfn> %s"
863
  msgstr ""
864
 
865
+ #: admin/includes/tab-settings.php:912
866
  msgid ""
867
  "<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
868
  msgstr ""
869
 
870
+ #: admin/includes/tab-settings.php:924
871
  msgid ""
872
  "<dfn title=\"Specify the individual post type on a single page as a blocking "
873
  "target.\">Post type</dfn>"
874
  msgstr ""
875
 
876
+ #: admin/includes/tab-settings.php:936
877
  msgid ""
878
  "<dfn title=\"Specify the individual category on a single page or archive "
879
  "page as a blocking target.\">Category</dfn>"
880
  msgstr ""
881
 
882
+ #: admin/includes/tab-settings.php:948
883
  msgid ""
884
  "<dfn title=\"Specify the individual tag on a single page or archive page as "
885
  "a blocking target.\">Tag</dfn>"
886
  msgstr ""
887
 
888
+ #: admin/includes/tab-settings.php:963
889
  msgid "Specify the validation target on front-end."
890
  msgstr ""
891
 
892
+ #: admin/includes/tab-settings.php:963
893
  msgid "Validation target"
894
  msgstr ""
895
 
896
+ #: admin/includes/tab-settings.php:974
897
  msgid "All requests"
898
  msgstr ""
899
 
900
+ #: admin/includes/tab-settings.php:975
901
  msgid "Specify the targets"
902
  msgstr ""
903
 
904
+ #: admin/includes/tab-settings.php:978
905
  msgid ""
906
  "Notice that &#8220;Validation timing&#8221; is deferred till &#8220;"
907
  "wp&#8221; action hook. It means that this feature would not be compatible "
908
  "with any page caching."
909
  msgstr ""
910
 
911
+ #: admin/includes/tab-settings.php:988
912
  msgid ""
913
  "A part of user agent string and a qualification connected with a separator "
914
  "that indicates an applicable rule and can be &#8220;:&#8221; (pass) or "
918
  "qualification&#8221;."
919
  msgstr ""
920
 
921
+ #: admin/includes/tab-settings.php:988
922
  msgid "UA string and qualification"
923
  msgstr ""
924
 
925
+ #: admin/includes/tab-settings.php:1007
926
  msgid "Specify the name of action that is invariably blocked."
927
  msgstr ""
928
 
929
+ #: admin/includes/tab-settings.php:1007
930
  msgid "Excluded actions"
931
  msgstr ""
932
 
933
+ #: admin/includes/tab-settings.php:1026
934
  msgid ""
935
  "It enables to verify the host by reverse DNS lookup which would spend some "
936
  "server resources. If it is disabled, &#8220;HOST&#8221; and &#8220;"
938
  "return &#8220;true&#8221;."
939
  msgstr ""
940
 
941
+ #: admin/includes/tab-settings.php:1026
942
  msgid "DNS reverse lookup"
943
  msgstr ""
944
 
945
+ #: admin/includes/tab-settings.php:1043
946
  msgid ""
947
  "It enables to simulate validation without deployment. The results can be "
948
  "found at &#8220;Public facing pages&#8221; in Logs."
949
  msgstr ""
950
 
951
+ #: admin/includes/tab-settings.php:1043
952
  msgid "Simulation mode"
953
  msgstr ""
954
 
955
+ #: admin/includes/tab-settings.php:1061
956
  msgid "Geolocation API settings"
957
  msgstr ""
958
 
959
+ #: admin/includes/tab-settings.php:1070
960
  msgid ""
961
  "<dfn title=\"Cache and local database are scanned at the top priority.\">API "
962
  "selection and key settings</dfn>"
963
  msgstr ""
964
 
965
+ #: admin/includes/tab-settings.php:1089
966
  msgid "Timeout for network API [sec]"
967
  msgstr ""
968
 
969
+ #: admin/includes/tab-settings.php:1109
970
  #, php-format
971
  msgid ""
972
  "Can not find geolocation API libraries in <code>%s</code>. It seems to have "
981
  "troubles? | IP Geo Block\">this instruction</a>."
982
  msgstr ""
983
 
984
+ #: admin/includes/tab-settings.php:1116
985
  msgid "Local database settings"
986
  msgstr ""
987
 
988
+ #: admin/includes/tab-settings.php:1130
989
  msgid "database"
990
  msgstr ""
991
 
992
+ #: admin/includes/tab-settings.php:1140
993
  msgid "Auto updating (once a month)"
994
  msgstr ""
995
 
996
+ #: admin/includes/tab-settings.php:1157
997
  msgid "Download database"
998
  msgstr ""
999
 
1000
+ #: admin/includes/tab-settings.php:1165
1001
  msgid "Download now"
1002
  msgstr ""
1003
 
1004
+ #: admin/includes/tab-settings.php:1176
1005
  msgid "Statistics and Logs settings"
1006
  msgstr ""
1007
 
1008
+ #: admin/includes/tab-settings.php:1185
1009
  msgid "Record &#8220;Statistics&#8221;"
1010
  msgstr ""
1011
 
1012
+ #: admin/includes/tab-settings.php:1202
1013
  msgid "Maximum period for &#8220;Statistics&#8221; (days)"
1014
  msgstr ""
1015
 
1016
+ #: admin/includes/tab-settings.php:1220
1017
  msgid "Record &#8220;Logs&#8221;"
1018
  msgstr ""
1019
 
1020
+ #: admin/includes/tab-settings.php:1232
1021
  msgid "When requests blocked"
1022
  msgstr ""
1023
 
1024
+ #: admin/includes/tab-settings.php:1233
1025
  msgid "When requests passed"
1026
  msgstr ""
1027
 
1028
+ #: admin/includes/tab-settings.php:1234
1029
+ msgid "When &#8220;blocked&#8221; or &#8220;passed (not in whitelist)&#8221;"
1030
  msgstr ""
1031
 
1032
+ #: admin/includes/tab-settings.php:1235
1033
  msgid "Unauthenticated visitor"
1034
  msgstr ""
1035
 
1036
+ #: admin/includes/tab-settings.php:1236
1037
  msgid "Authenticated user"
1038
  msgstr ""
1039
 
1040
+ #: admin/includes/tab-settings.php:1237
1041
  msgid "All the validation"
1042
  msgstr ""
1043
 
1044
+ #: admin/includes/tab-settings.php:1246
1045
  msgid "Maximum entries of &#8220;Logs&#8221;"
1046
  msgstr ""
1047
 
1048
+ #: admin/includes/tab-settings.php:1263
1049
  msgid ""
1050
  "<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST keys to be "
1051
  "recorded with their values in &#8220;Logs&#8221;</dfn>"
1052
  msgstr ""
1053
 
1054
+ #: admin/includes/tab-settings.php:1281
1055
  msgid "<dfn title=\"e.g. 123.456.789.***\">Anonymize IP address</dfn>"
1056
  msgstr ""
1057
 
1058
+ #: admin/includes/tab-settings.php:1298
1059
  msgid ""
1060
  "<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
1061
  "&#8220;Live update&#8221;</dfn>"
1062
  msgstr ""
1063
 
1064
+ #: admin/includes/tab-settings.php:1310
1065
  msgid "Ordinary file"
1066
  msgstr ""
1067
 
1068
+ #: admin/includes/tab-settings.php:1311
1069
  msgid "In-Memory"
1070
  msgstr ""
1071
 
1072
+ #: admin/includes/tab-settings.php:1314
1073
  msgid "PDO_SQLITE driver not available"
1074
  msgstr ""
1075
 
1076
+ #: admin/includes/tab-settings.php:1315
1077
  msgid ""
1078
  "It takes a few tens of milliseconds as overhead. It can be safely used "
1079
  "without conflict with other plugins."
1080
  msgstr ""
1081
 
1082
+ #: admin/includes/tab-settings.php:1316
1083
  msgid ""
1084
  "It takes a few milliseconds as overhead. There is a possibility of conflict "
1085
  "with other plugins using this method."
1086
  msgstr ""
1087
 
1088
+ #: admin/includes/tab-settings.php:1325
1089
  msgid "Reset database source of &#8220;Live update&#8221;"
1090
  msgstr ""
1091
 
1092
+ #: admin/includes/tab-settings.php:1333
1093
  msgid "Reset now"
1094
  msgstr ""
1095
 
1096
+ #: admin/includes/tab-settings.php:1344
1097
  msgid "IP address cache settings"
1098
  msgstr ""
1099
 
1100
+ #: admin/includes/tab-settings.php:1353
1101
  #, php-format
1102
  msgid ""
1103
  "<dfn title=\"If user authentication fails consecutively %d times, subsequent "
1105
  "\">Expiration time [sec]</dfn>"
1106
  msgstr ""
1107
 
1108
+ #: admin/includes/tab-settings.php:1369
1109
  msgid "Garbage collection period [sec]"
1110
  msgstr ""
1111
 
1112
+ #: admin/includes/tab-settings.php:1386
1113
  msgid "Number of entries to be displayed in cache"
1114
  msgstr ""
1115
 
1116
+ #: admin/includes/tab-settings.php:1404
1117
  msgid "Submission settings"
1118
  msgstr ""
1119
 
1120
+ #: admin/includes/tab-settings.php:1416
1121
  msgid "The whole will be wrapped by &lt;p&gt; tag. Allowed tags: "
1122
  msgstr ""
1123
 
1124
+ #: admin/includes/tab-settings.php:1416
1125
  msgid "Message on comment form"
1126
  msgstr ""
1127
 
1128
+ #: admin/includes/tab-settings.php:1428
1129
  msgid "None"
1130
  msgstr ""
1131
 
1132
+ #: admin/includes/tab-settings.php:1429
1133
  msgid "Top"
1134
  msgstr ""
1135
 
1136
+ #: admin/includes/tab-settings.php:1430
1137
  msgid "Bottom"
1138
  msgstr ""
1139
 
1140
+ #: admin/includes/tab-settings.php:1441
1141
  msgid "Plugin settings"
1142
  msgstr ""
1143
 
1144
+ #: admin/includes/tab-settings.php:1454
1145
  msgid ""
1146
  "<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
1147
  "settings</dfn>"
1148
  msgstr ""
1149
 
1150
+ #: admin/includes/tab-settings.php:1472
1151
  msgid "Remove all settings at uninstallation"
1152
  msgstr ""
1153
 
1154
+ #: admin/includes/tab-settings.php:1490
1155
  msgid ""
1156
  "<dfn title=\"Valid key for Google Maps JavaScript API\">Google Maps API key</"
1157
  "dfn>"
1158
  msgstr ""
1159
 
1160
+ #: admin/includes/tab-settings.php:1504
1161
  msgid ""
1162
  "You need to click the &#8220;Save Changes&#8221; button for imported "
1163
  "settings to take effect."
1164
  msgstr ""
1165
 
1166
+ #: admin/includes/tab-settings.php:1510
1167
  msgid "Export / Import settings"
1168
  msgstr ""
1169
 
1170
+ #: admin/includes/tab-settings.php:1517
1171
  msgid "Export settings"
1172
  msgstr ""
1173
 
1174
+ #: admin/includes/tab-settings.php:1518
1175
  msgid "Import from the local file"
1176
  msgstr ""
1177
 
1178
+ #: admin/includes/tab-settings.php:1518
1179
  msgid "Import settings"
1180
  msgstr ""
1181
 
1182
+ #: admin/includes/tab-settings.php:1527
1183
  msgid "Import pre-defined settings"
1184
  msgstr ""
1185
 
1186
+ #: admin/includes/tab-settings.php:1534
1187
  msgid ""
1188
  "Import the default settings to revert to the &#8220;Right after "
1189
  "installing&#8221; state"
1190
  msgstr ""
1191
 
1192
+ #: admin/includes/tab-settings.php:1534
1193
  msgid "Default settings"
1194
  msgstr ""
1195
 
1196
+ #: admin/includes/tab-settings.php:1535
1197
  msgid ""
1198
  "Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
1199
  "for the &#8220;Back-end target settings&#8221;"
1200
  msgstr ""
1201
 
1202
+ #: admin/includes/tab-settings.php:1535
1203
  msgid "Best for Back-end"
1204
  msgstr ""
1205
 
1206
+ #: admin/includes/tab-settings.php:1545
1207
  msgid "Delete DB table for validation logs"
1208
  msgstr ""
1209
 
1210
+ #: admin/includes/tab-settings.php:1553
1211
  msgid "Delete now"
1212
  msgstr ""
1213
 
1214
+ #: admin/includes/tab-settings.php:1561
1215
  msgid "Create DB table for validation logs"
1216
  msgstr ""
1217
 
1218
+ #: admin/includes/tab-settings.php:1569
1219
  msgid "Create now"
1220
  msgstr ""
1221
 
1222
+ #: admin/includes/tab-settings.php:1579
1223
  msgid ""
1224
  "<dfn title=\"When an unexpected blocking has occurred, please press the "
1225
  "button to find the blocked request in the dumped information which may help "
1228
  "&#8250; Support &raquo; IP Geo Block\">support forum</a> ]"
1229
  msgstr ""
1230
 
1231
+ #: admin/includes/tab-settings.php:1586
1232
  msgid "Please copy &amp; paste when submitting your issue to support forum."
1233
  msgstr ""
1234
 
1235
+ #: admin/includes/tab-settings.php:1586
1236
  msgid "Show information"
1237
  msgstr ""
1238
 
1239
+ #: admin/includes/tab-settings.php:1602
1240
  msgid ""
1241
  "To enhance the protection ability, please refer to &#8220;<a rel=\"noreferrer"
1242
  "\" href=\"http://www.ipgeoblock.com/codex/the-best-practice-for-target-"
1244
  "\">The best practice for target settings</a>&#8221;."
1245
  msgstr ""
1246
 
1247
+ #: admin/includes/tab-settings.php:1603
1248
  msgid ""
1249
  "If you have any troubles with these, please check FAQ at <a rel=\"noreferrer"
1250
  "\" href=\"https://wordpress.org/plugins/ip-geo-block/faq/\" title=\"IP Geo "
1253
  "\">Codex</a>."
1254
  msgstr ""
1255
 
1256
+ #: admin/includes/tab-settings.php:1610
1257
  msgid ""
1258
  "While Maxmind and IP2Location will fetch the local database, others will "
1259
  "pass an IP address to the APIs via HTTP."
1260
  msgstr ""
1261
 
1262
+ #: admin/includes/tab-settings.php:1611
1263
  msgid ""
1264
  "Please select the appropriate APIs to fit the privacy law in your country."
1265
  msgstr ""
1266
 
1267
+ #: admin/includes/tab-settings.php:1618
1268
  msgid ""
1269
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1270
  "ipgeoblock.com/codex/#blocking-on-front-end\" title=\"Codex | IP Geo Block"
1272
  "cache plugin."
1273
  msgstr ""
1274
 
1275
+ #: admin/includes/tab-settings.php:1619
1276
  msgid ""
1277
  "If you find any issues or have something to suggest, please feel free to "
1278
  "open an issue at <a rel=\"noreferrer\" href=\"https://wordpress.org/support/"
1280
  "\">support forum</a>."
1281
  msgstr ""
1282
 
1283
+ #: admin/includes/tab-settings.php:1626
1284
  msgid ""
1285
  "Please refer to the document &#8220;<a rel=\"noreferrer\" href=\"http://www."
1286
  "ipgeoblock.com/codex/record-settings-and-logs.html\" title=\"Codex | IP Geo "
1287
  "Block\">Record settings and logs</a>&#8221; for details."
1288
  msgstr ""
1289
 
1290
+ #: admin/includes/class-admin-rewrite.php:169
1291
+ #: admin/includes/class-admin-rewrite.php:195
1292
  #, php-format
1293
  msgid "Or please refer to %s to set it manually."
1294
  msgstr ""
1295
 
1296
+ #: admin/includes/class-admin-rewrite.php:234
1297
  #, php-format
1298
  msgid "&#8220;auto_prepend_file&#8221; already defined in %s."
1299
  msgstr ""
1371
  msgstr ""
1372
 
1373
  #: admin/includes/tab-statistics.php:185
1374
+ msgid "Statistics in Logs"
1375
  msgstr ""
1376
 
1377
  #: admin/includes/tab-statistics.php:217
1390
  msgid "Clear cache"
1391
  msgstr ""
1392
 
1393
+ #: admin/includes/tab-statistics.php:288
1394
  msgid "Country (Top 10)"
1395
  msgstr ""
1396
 
1397
+ #: admin/includes/tab-statistics.php:289
1398
  msgid "AS number (Top 10)"
1399
  msgstr ""
1400
 
1401
+ #: admin/includes/tab-statistics.php:290
1402
  msgid "IP address (Top 10)"
1403
  msgstr ""
1404
 
1405
+ #: admin/includes/tab-statistics.php:291
1406
  msgid "Slug in back-end"
1407
  msgstr ""
1408
 
1409
+ #: admin/includes/tab-statistics.php:343
1410
+ msgid "Toggle sorting order"
1411
+ msgstr ""
1412
+
1413
+ #: admin/includes/tab-statistics.php:392
1414
  msgid ""
1415
  "[<strong>Record validation statistics</strong>] on [<strong>Settings</"
1416
  "strong>] tab is not selected as [<strong>Enable</strong>]."
1417
  msgstr ""
1418
 
1419
+ #: admin/includes/tab-statistics.php:393
1420
  msgid ""
1421
  "Please set the proper condition to record and analyze the validation "
1422
  "statistics."
1423
  msgstr ""
1424
 
1425
+ #: admin/includes/tab-statistics.php:398
1426
  msgid ""
1427
  "Please set the proper condition to record and analyze the validation logs."
1428
  msgstr ""
rewrite-ini.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * IP Geo Block - Execute rewrited request
4
+ *
5
+ * @package IP_Geo_Block
6
+ * @author tokkonopapa <tokkonopapa@yahoo.com>
7
+ * @license GPL-2.0+
8
+ * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
+ *
11
+ * THIS IS FOR THE ADVANCED USERS:
12
+ * This file is for WP-ZEP. If some php files in the plugins/themes directory
13
+ * accept malicious requests directly without loading WP core, then validation
14
+ * by WP-ZEP will be bypassed. To avoid such bypassing, those requests should
15
+ * be redirected to this file in order to load WP core. The `.user.ini` in the
16
+ * plugins/themes directory will help this redirection if it is configured as
17
+ * follows on nginx for example:
18
+ *
19
+ * ; BEGIN IP Geo Block
20
+ * auto_prepend_file = "/home/wp-content/plugins/ip-geo-block/rewrite-ini.php"
21
+ * ; END IP Geo Block
22
+ *
23
+ * The redirected requests will be verified against the certain attack patterns
24
+ * such as null byte attack or directory traversal, and then load the WordPress
25
+ * core module through wp-load.php to triger WP-ZEP.
26
+ */
27
+
28
+ if ( ! class_exists( 'IP_Geo_Block_Rewrite', FALSE ) ):
29
+
30
+ class IP_Geo_Block_Rewrite {
31
+
32
+ public static function search_user_ini() {
33
+ $dir = dirname( dirname( __FILE__ ) ); // `/wp-content/plugins`
34
+ $ini = ini_get( 'user_ini.filename' );
35
+ $doc = ! empty( $_SERVER['DOCUMENT_ROOT'] ) ?
36
+ $_SERVER['DOCUMENT_ROOT'] :
37
+ substr( $_SERVER['SCRIPT_FILENAME'], 0, -strlen( $_SERVER['SCRIPT_NAME'] ) );
38
+
39
+ do {
40
+ // avoid loop just in case
41
+ if ( ( $next = dirname( $dir ) ) !== $dir ) {
42
+ $dir = $next;
43
+ } else {
44
+ break;
45
+ }
46
+
47
+ if ( file_exists( "$dir/$ini" ) ) {
48
+ $tmp = @file( "$dir/$ini" );
49
+ $tmp = preg_grep( '/^\s*auto_prepend_file/', $tmp );
50
+ $tmp = explode( '=', (string)array_pop( $tmp ), 2 );
51
+
52
+ if ( ! empty( $tmp ) ) {
53
+ $tmp = trim( $tmp[1], " \t\n\r\0\x0B\"\'" );
54
+ if ( $tmp && file_exists( $tmp ) ) {
55
+ @include_once( $tmp );
56
+ }
57
+ }
58
+
59
+ break;
60
+ }
61
+ } while ( $dir !== $doc );
62
+ }
63
+
64
+ // this function should be empty
65
+ public static function exec( $context, $validate, $settings ) {}
66
+
67
+ }
68
+
69
+ // search and include `.user.ini` in other directory
70
+ IP_Geo_Block_Rewrite::search_user_ini();
71
+
72
+ // this will trigger `init` action hook
73
+ require_once '../../../wp-load.php';
74
+
75
+ endif; /* ! class_exists( 'IP_Geo_Block_Rewrite', FALSE ) */
rewrite.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  *
11
  * THIS IS FOR THE ADVANCED USERS:
12
  * This file is for WP-ZEP. If some php files in the plugins/themes directory
@@ -14,7 +14,7 @@
14
  * by WP-ZEP will be bypassed. To avoid such bypassing, those requests should
15
  * be redirected to this file in order to load WP core. The `.htaccess` in the
16
  * plugins/themes directory will help this redirection if it is configured as
17
- * follows (for apache):
18
  *
19
  * # BEGIN IP Geo Block
20
  * <IfModule mod_rewrite.c>
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  *
11
  * THIS IS FOR THE ADVANCED USERS:
12
  * This file is for WP-ZEP. If some php files in the plugins/themes directory
14
  * by WP-ZEP will be bypassed. To avoid such bypassing, those requests should
15
  * be redirected to this file in order to load WP core. The `.htaccess` in the
16
  * plugins/themes directory will help this redirection if it is configured as
17
+ * follows on apache for example:
18
  *
19
  * # BEGIN IP Geo Block
20
  * <IfModule mod_rewrite.c>
samples.php CHANGED
@@ -6,14 +6,13 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2014-2017 tokkonopapa
10
  */
11
  /* Start loading wp-load.php */
12
  if ( ! empty( $_GET['wp-load'] ) ) {
13
- $abspath = substr( __FILE__, 0, strpos( __FILE__, '/wp-content/' ) );
14
- include_once $abspath . '/wp-load.php';
15
  }
16
- die( '0' );
17
  /* End of loading wp-load.php */
18
 
19
  /**
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
  /* Start loading wp-load.php */
12
  if ( ! empty( $_GET['wp-load'] ) ) {
13
+ $res = include_once '../../../wp-load.php';
 
14
  }
15
+ die( isset( $res ) ? '1' : '0' );
16
  /* End of loading wp-load.php */
17
 
18
  /**
uninstall.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
 
12
  // If uninstall not called from WordPress, then exit
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
 
12
  // If uninstall not called from WordPress, then exit
wp-content/ip-geo-api/ip2location/class-ip2location.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
  if ( class_exists( 'IP_Geo_Block_API', FALSE ) ) :
12
 
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
  if ( class_exists( 'IP_Geo_Block_API', FALSE ) ) :
12
 
wp-content/ip-geo-api/maxmind/class-maxmind.php CHANGED
@@ -6,7 +6,7 @@
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
- * @copyright 2013-2017 tokkonopapa
10
  */
11
  if ( class_exists( 'IP_Geo_Block_API', FALSE ) ) :
12
 
6
  * @author tokkonopapa <tokkonopapa@yahoo.com>
7
  * @license GPL-2.0+
8
  * @link http://www.ipgeoblock.com/
9
+ * @copyright 2013-2018 tokkonopapa
10
  */
11
  if ( class_exists( 'IP_Geo_Block_API', FALSE ) ) :
12
 
wp-content/mu-plugins/ip-geo-block-mu.php CHANGED
@@ -8,7 +8,7 @@
8
  * @author tokkonopapa <tokkonopapa@yahoo.com>
9
  * @license GPL-2.0+
10
  * @link http://www.ipgeoblock.com/
11
- * @copyright 2013-2017 tokkonopapa
12
  *
13
  * Plugin Name: IP Geo Block (mu)
14
  * Plugin URI: http://wordpress.org/plugins/ip-geo-block/
8
  * @author tokkonopapa <tokkonopapa@yahoo.com>
9
  * @license GPL-2.0+
10
  * @link http://www.ipgeoblock.com/
11
+ * @copyright 2013-2018 tokkonopapa
12
  *
13
  * Plugin Name: IP Geo Block (mu)
14
  * Plugin URI: http://wordpress.org/plugins/ip-geo-block/