Version Description
- Fix issue: Avoid the error of "Can not load Geolocation API libraries" caused by the race condition on upgrading this plugin.
- New feature: Enhance protecting against certain types of attacks by privilege escalation.
- New feature: Add a new option of "Network wide settings" in "Plugin settings" section to synchronize all the settings with the main blog on multisite.
-
New feature: Add "Preset filters" using
ip-geo-block-logs[-preset]
filter hook to make analyze logs easy on "Logs" tab. -
Improvement: When
pwd
is set at "$_POST key to record with value" in "Privacy and record settings" section, mask the password in logs unless the login attempt is blocked. - Improvement: Flush out the buffer of "Live update" on "Logs" tab when stop button is activated to avoid data remains.
- Improvement: Update the geolocation API service "geoip.nekudo.com" to "ipapi.com".
- Improvement: Update the class for Maxmind GeoLite Legacy databases to prepare against the upcoming expiry of support.
- See 3.0.17 release note for some details.
Download this release
Release Info
Developer | tokkonopapa |
Plugin | IP Geo Block |
Version | 3.0.17 |
Comparing to | |
See all releases |
Code changes from version 3.0.16 to 3.0.17
- README.txt +41 -183
- admin/class-ip-geo-block-admin.php +169 -67
- admin/css/admin-icons.css +23 -55
- admin/css/admin-icons.min.css +1 -1
- admin/css/admin.css +3 -0
- admin/css/admin.min.css +1 -1
- admin/css/fonts/icomoon.eot +0 -0
- admin/css/fonts/icomoon.svg +6 -14
- admin/css/fonts/icomoon.ttf +0 -0
- admin/css/fonts/icomoon.woff +0 -0
- admin/includes/class-admin-ajax.php +13 -9
- admin/includes/class-admin-rewrite.php +3 -3
- admin/includes/tab-accesslog.php +10 -2
- admin/includes/tab-geolocation.php +2 -2
- admin/includes/tab-settings.php +26 -4
- admin/js/admin.js +17 -9
- admin/js/admin.min.js +1 -1
- admin/js/whois.js +2 -2
- admin/js/whois.min.js +1 -1
- classes/class-ip-geo-block-apis.php +104 -102
- classes/class-ip-geo-block-cron.php +11 -1
- classes/class-ip-geo-block-file.php +30 -0
- classes/class-ip-geo-block-logs.php +6 -6
- classes/class-ip-geo-block-opts.php +55 -35
- classes/class-ip-geo-block-util.php +3 -1
- classes/class-ip-geo-block.php +136 -64
- ip-geo-block.php +1 -1
- languages/ip-geo-block-ja.mo +0 -0
- languages/ip-geo-block-ja.po +348 -266
- languages/ip-geo-block.mo +0 -0
- languages/ip-geo-block.po +324 -257
- languages/ip-geo-block.pot +324 -257
- uninstall.php +1 -0
- wp-content/ip-geo-api/drop-in-admin-sample.php +100 -0
- wp-content/ip-geo-api/ip2location/bcmath.php +4 -4
- wp-content/ip-geo-api/ip2location/class-ip2location.php +20 -15
- wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php +39 -24
- wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php +120 -96
- wp-content/ip-geo-api/maxmind/class-maxmind.php +11 -5
README.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link:
|
|
4 |
Tags: security, firewall, brute force, vulnerability, login, wp-admin, admin, ajax, xmlrpc, comment, pingback, trackback, spam, IP address, geo, geolocation, buddypress, bbPress
|
5 |
Requires at least: 3.7
|
6 |
Tested up to: 4.9.8
|
7 |
-
Stable tag: 3.0.
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
10 |
|
@@ -12,15 +12,17 @@ It blocks spam posts, login attempts and malicious access to the back-end reques
|
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
|
16 |
|
17 |
-
|
18 |
|
19 |
-
|
|
|
|
|
20 |
|
21 |
= Features =
|
22 |
|
23 |
-
* **Privacy
|
24 |
IP address is always encrypted on recording in logs/cache. Moreover, it can be anonymized and restricted on sending to the 3rd parties such as geolocation APIs or whois service.
|
25 |
|
26 |
* **Immigration control:**
|
@@ -77,13 +79,13 @@ This package includes GeoLite2 library distributed by MaxMind, available from [M
|
|
77 |
|
78 |
Also thanks for providing the following great services and REST APIs for free.
|
79 |
|
80 |
-
* [https://ipdata.co/](https://ipdata.co/ "ipdata.co - IP Geolocation and Threat Data API") (IPv4, IPv6 / free)
|
81 |
-
* [https://ipinfo.io/](https://ipinfo.io/ "IP Address API and Data Solutions") (IPv4, IPv6 / free)
|
82 |
-
* [https://geoip.nekudo.com/](https://geoip.nekudo.com/ "Free IP GeoLocation/GeoIp API - geoip.nekudo.com") (IPv4, IPv6 / free)
|
83 |
-
* [http://geoiplookup.net/](http://geoiplookup.net/ "What Is My IP Address | GeoIP Lookup") (IPv4, IPv6 / free)
|
84 |
* [http://ip-api.com/](http://ip-api.com/ "IP-API.com - Free Geolocation API") (IPv4, IPv6 / free for non-commercial use)
|
85 |
-
* [
|
|
|
|
|
|
|
86 |
* [https://ipstack.com/](https://ipstack.com/ "ipstack - Free IP Geolocation API") (IPv4, IPv6 / free for registered user, need API key)
|
|
|
87 |
|
88 |
= Development =
|
89 |
|
@@ -99,150 +101,18 @@ All contributions will always be welcome. Or visit my [development blog](https:/
|
|
99 |
2. Search for 'IP Geo Block'
|
100 |
3. Click 'Install Now'
|
101 |
4. Activate the plugin on the Plugin dashboard
|
102 |
-
5.
|
103 |
-
|
104 |
-
Please refer to [the document](https://www.ipgeoblock.com/codex/ "Codex | IP Geo Block")
|
105 |
-
or following descriptions for your best setup.
|
106 |
-
|
107 |
-
= Validation rules and behavior =
|
108 |
-
|
109 |
-
* **Matching rule**
|
110 |
-
Choose either `White list` (recommended) or `Black list` to specify the countries from which you want to pass or block.
|
111 |
-
|
112 |
-
* **Whitelist/Blacklist of country code**
|
113 |
-
Specify the country code with two letters (see [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements "ISO 3166-1 alpha-2 - Wikipedia, the free encyclopedia")). Each of them should be separated by comma.
|
114 |
-
|
115 |
-
* **Use Autonomous System Number (ASN)**
|
116 |
-
It enables you to use "AS number" in the whitelist and blacklist of extra IP addresses to specify a group of IP networks.
|
117 |
-
|
118 |
-
* **Whitelist/Blacklist of extra IP addresses prior to country code**
|
119 |
-
The list of extra IP addresses prior to the validation of country code. [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing "Classless Inter-Domain Routing - Wikipedia, the free encyclopedia") and [AS number](https://en.wikipedia.org/wiki/Autonomous_system_(Internet) "Autonomous system (Internet) - Wikipedia") are also acceptable to specify the range.
|
120 |
-
|
121 |
-
* **$_SERVER keys to retrieve extra IP addresses**
|
122 |
-
Additional IP addresses will be validated if some of keys in `$_SERVER` variable are specified in this textfield. Typically `HTTP_X_FORWARDED_FOR`.
|
123 |
-
|
124 |
-
* **Bad signatures in query**
|
125 |
-
It validates malicious signatures independently of **Block by country** and **Prevent Zero-day Exploit** for the target **Admin area**, **Admin ajax/post**, **Plugins area** and **Themes area**. Typically, `/wp-config.php` and `/passwd`.
|
126 |
-
|
127 |
-
* **Prevent malicious file uploading**
|
128 |
-
It restricts the file types on upload to block malware and backdoor via both back-end and front-end.
|
129 |
-
|
130 |
-
* **Response code**
|
131 |
-
Choose one of the [response code](https://tools.ietf.org/html/rfc2616#section-10 "RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1") to be sent when it blocks a comment.
|
132 |
-
The 2xx code will lead to your top page, the 3xx code will redirect to [Black Hole Server](http://blackhole.webpagetest.org/), the 4xx code will lead to WordPress error page, and the 5xx will pretend an server error.
|
133 |
-
|
134 |
-
* **Max number of failed login attempts per IP address**
|
135 |
-
Set the maximum number of login attempts to accept the requests to the login process.
|
136 |
-
|
137 |
-
* **Validation timing**
|
138 |
-
Choose **"init" action hook** or **"mu-plugins" (ip-geo-block-mu.php)** to specify the timing of validation.
|
139 |
-
|
140 |
-
= Back-end target settings =
|
141 |
-
|
142 |
-
* **Comment post**
|
143 |
-
Validate post to `wp-comment-post.php`. Comment post and trackback will be validated.
|
144 |
-
|
145 |
-
* **XML-RPC**
|
146 |
-
Validate access to `xmlrpc.php`. Pingback and other remote command with username and password will be validated.
|
147 |
-
|
148 |
-
* **Login form**
|
149 |
-
Validate access to `wp-login.php` and `wp-signup.php`.
|
150 |
-
|
151 |
-
* **Admin area**
|
152 |
-
Validate access to `wp-admin/*.php`.
|
153 |
-
|
154 |
-
* **Admin ajax/post**
|
155 |
-
Validate access to `wp-admin/admin-(ajax|post)*.php`.
|
156 |
-
|
157 |
-
* **Plugins area**
|
158 |
-
Validate direct access to plugins. Typically `wp-content/plugins/…/*.php`.
|
159 |
-
|
160 |
-
* **Themes area**
|
161 |
-
Validate direct access to themes. Typically `wp-content/themes/…/*.php`.
|
162 |
-
|
163 |
-
= Front-end target settings =
|
164 |
-
|
165 |
-
* **Block by country**
|
166 |
-
Enables validation of country code on public facing pages.
|
167 |
-
|
168 |
-
* **Matching rule**
|
169 |
-
Same as **Validation target settings** but can be set independently.
|
170 |
-
|
171 |
-
* **Validation target**
|
172 |
-
Specify the single and archive page by post type, category and tag as blocking target.
|
173 |
-
|
174 |
-
* **Block badly-behaved bots and crawlers**
|
175 |
-
Specify the allowable request frequency over a period of time.
|
176 |
-
|
177 |
-
* **UA string and qualification**
|
178 |
-
Additional rules targeted at SEO which can specify acceptable requests based on user agent.
|
179 |
|
180 |
-
|
181 |
-
It enables to verify the host by reverse DNS lookup which would spend some server resources.
|
182 |
-
|
183 |
-
* **Simulation mode**
|
184 |
-
You can simulate the 'blocking on front-end' functionality before deploying.
|
185 |
-
|
186 |
-
= Geolocation API settings =
|
187 |
-
|
188 |
-
* **API selection and key settings**
|
189 |
-
If you wish to use `IPInfoDB`, you should register at [their site](https://ipinfodb.com/ "IPInfoDB | Free IP Address Geolocation Tools") to get a free API key and set it into the textfield. And `ip-api.com` and `Smart-IP.net` require non-commercial use.
|
190 |
-
|
191 |
-
= Local database settings settings =
|
192 |
-
|
193 |
-
* **Auto updating (once a month)**
|
194 |
-
If `Enable`, geolocation databases will be downloaded automatically by WordPress cron job.
|
195 |
-
|
196 |
-
* **Download database**
|
197 |
-
Fetch all the databases from their server if those are updated.
|
198 |
-
|
199 |
-
= Privacy and record settings =
|
200 |
-
|
201 |
-
* **Privacy friendly**
|
202 |
-
It makes an IP address anonymous on recording into the database (e.g. logs, IP address cache) and restricted on sending to the 3rd parties (e.g. geolocation APIs, whois).
|
203 |
-
|
204 |
-
* **Record "Statistics"**
|
205 |
-
If `Enable`, you can see `Statistics of validation` on Statistics tab.
|
206 |
-
|
207 |
-
* **Record "Logs"**
|
208 |
-
If you choose anything but `Disable`, you can see `Validation logs` on Logs tab.
|
209 |
-
|
210 |
-
* **$_POST keys to be recorded with their values in "Logs"**
|
211 |
-
Normally, you can see just keys at `$_POST data:` on Logs tab. If you put some of interested keys into this textfield, you can see the value of key like `key=value`.
|
212 |
-
|
213 |
-
* **Record "IP address cache"**
|
214 |
-
It enables to record the pare of IP address and country code into the cache on database to minimize the impact on site speed.
|
215 |
-
|
216 |
-
* **Expiration time [sec] for IP address cache**
|
217 |
-
Maximum time in sec to keep cache.
|
218 |
-
|
219 |
-
* **Garbage collection period [sec] for IP address cache**
|
220 |
-
Period of garbage collection to clean cache.
|
221 |
-
|
222 |
-
= Submission settings =
|
223 |
-
|
224 |
-
* **Text position on comment form**
|
225 |
-
If you want to put some text message on your comment form, please choose `Top` or `Bottom` and put text with some tags into the **Text message on comment form** textfield.
|
226 |
-
|
227 |
-
= Plugin settings =
|
228 |
-
|
229 |
-
* **Network wide settings**
|
230 |
-
Synchronize all settings over the network wide based on the settings of main blog.
|
231 |
-
|
232 |
-
* **Remove all settings at uninstallation**
|
233 |
-
If you checked this option, all settings will be removed when this plugin is uninstalled for clean uninstalling.
|
234 |
-
|
235 |
-
* **Export / Import settings**
|
236 |
-
All settings data can be saved as json file which enables to export/import to the dashboard.
|
237 |
-
|
238 |
-
* **Import pre-defined settings**
|
239 |
-
Reset all settings data as initial values, or set as recommended values for "Back-end target settings".
|
240 |
|
241 |
== Frequently Asked Questions ==
|
242 |
|
243 |
= Does the site using this plugin comply with GDPR? =
|
244 |
|
245 |
-
|
|
|
|
|
246 |
|
247 |
= Does this plugin support multisite? =
|
248 |
|
@@ -252,31 +122,7 @@ Yes. You can synchronize the settings with all the sites on the network when you
|
|
252 |
|
253 |
The short answer is **YES**, especially for the purpose of security e.g. blocking malicious access both on the back-end and on the front-end.
|
254 |
|
255 |
-
|
256 |
-
|
257 |
-
For the back-end protection, both blocking malicious access and blocking by country work fine, if you disable caching on the back-end. As for the front-end, there are 2 scenarios.
|
258 |
-
|
259 |
-
The first one is the case that there's no cached page against a request to the specific page. In this scenario, this plugin responds a specific HTTP status code (including redirection) when the request comes from blacklisted countries (or IPs) and exit telling the caching plugin not to make a cached page. When the request comes from the whitelisted countries (or IPs), this plugin passes it to the caching plugin in order to generate a new cache.
|
260 |
-
|
261 |
-
The second scenario is the case that there's a cached page. In this case, the response depends on the caching method you are employing. Currently, the following plugins can be supported with specific configurations if you want to [restrict contents by geolocation](https://en.wikipedia.org/wiki/Geo-blocking "Geo-blocking - Wikipedia"):
|
262 |
-
|
263 |
-
- [WP Super Cache](https://wordpress.org/plugins/wp-super-cache/ "WP Super Cache — WordPress Plugins")
|
264 |
-
Select "**Use PHP to serve cache files**" and enable "**Late init**".
|
265 |
-
|
266 |
-
- [W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/ "W3 Total Cache — WordPress Plugins")
|
267 |
-
Select "**Disk: Basic**" and enable "**Late initialization**" for page cache. "**Disk: Enhanced**" (where "**Late initialization**" is not available) in W3TC 0.9.5.1 seems to work good without any imcompatibility with this plugin.
|
268 |
-
|
269 |
-
- [Vendi Cache](https://wordpress.org/plugins/vendi-cache/ "Vendi Cache — WordPress Plugins")
|
270 |
-
This plugin was formerly built in Wordfence. Select "**basic caching**" for Vendi Cache and **"mu-plugin" (ip-geo-block-mu.php)** for IP Geo Block.
|
271 |
-
|
272 |
-
- [Swift Performance Lite](https://wordpress.org/plugins/swift-performance-lite/ "Swift Performance Lite | WordPress.org")
|
273 |
-
Select "Disk Cashe with PHP" caching mode.
|
274 |
-
|
275 |
-
Other plugins adopting `mod_rewrite` (e.g. WP Fastest Cache) or `advanced-cache.php` [drop-in](https://make.wordpress.org/core/2016/08/13/global-overloading-in-advanced-cache-php/ "Global overloading in advanced-cache.php – Make WordPress Core") (e.g. Comet Cache) or other caching method at server side might serve a normal page.
|
276 |
-
|
277 |
-
Thus your site would have less risk against the exploiting via vulnerable plugins and themes.
|
278 |
-
|
279 |
-
For more details, please refer to some documents at "[Blocking on front-end](https://www.ipgeoblock.com/codex/#blocking-on-front-end 'Codex | IP Geo Block')".
|
280 |
|
281 |
= I still have access from blacklisted country. Does it work correctly? =
|
282 |
|
@@ -372,19 +218,31 @@ Please refer to "[How can I fix permission troubles?](https://www.ipgeoblock.com
|
|
372 |
|
373 |
== Screenshots ==
|
374 |
|
375 |
-
1. **IP Geo Plugin** -
|
376 |
-
2. **IP Geo Plugin** -
|
377 |
-
3. **IP Geo Plugin** -
|
378 |
-
4. **IP Geo Plugin** -
|
379 |
-
5. **IP Geo Plugin** -
|
380 |
-
6. **IP Geo Plugin** -
|
381 |
-
7. **IP Geo Plugin** -
|
382 |
-
8. **IP Geo Plugin** -
|
383 |
-
9. **IP Geo Plugin** -
|
384 |
-
10. **IP Geo Plugin** -
|
|
|
385 |
|
386 |
== Changelog ==
|
387 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
388 |
= 3.0.16 =
|
389 |
* **Fix issue:** Fix the issue that some functions did not work properly when "Validation timing" was set as `"mu-plugins" (ip-geo-block-mu.php)` under some conditions before WP 4.0.
|
390 |
* **New feature:** Add "**Sites list**" page at Network admin page to look through the status of the sites if this plugin is network activated on multisite.
|
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.8
|
7 |
+
Stable tag: 3.0.17
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
10 |
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
The more you install themes and plugins, the more likely your sites will be vulnerable, even if you [securely harden your sites](https://codex.wordpress.org/Hardening_WordPress "Hardening WordPress « WordPress Codex").
|
16 |
|
17 |
+
While WordPress.org [provides](https://wordpress.org/about/security/ "Security | WordPress.org") [excellent](https://developer.wordpress.org/themes/theme-security/ "Theme Security | Theme Developer Handbook | WordPress Developer Resources") [resources](https://developer.wordpress.org/plugins/security/ "Plugin Security | Plugin Developer Handbook | WordPress Developer Resources"), themes and plugins may often get vulnerable due to developers' [human factors](https://www.google.com/search?q=human+factors+in+security "human factors in security - Google Search") such as lack of security awareness, misuse and disuse of the best practices in those resources.
|
18 |
|
19 |
+
This plugin focuses on insights into such developers' human factors instead of detecting the specific attack vectors after they were disclosed. This brings a smart and powerful methods named as "**WP Zero-day Exploit Prevention**" and "**WP Metadata Exploit Protection**".
|
20 |
+
|
21 |
+
Combined with those methods and IP address geolocation, you'll be surprised to find a bunch of malicious or undesirable access blocked in the logs of this plugin after several days of installation.
|
22 |
|
23 |
= Features =
|
24 |
|
25 |
+
* **Privacy by design:**
|
26 |
IP address is always encrypted on recording in logs/cache. Moreover, it can be anonymized and restricted on sending to the 3rd parties such as geolocation APIs or whois service.
|
27 |
|
28 |
* **Immigration control:**
|
79 |
|
80 |
Also thanks for providing the following great services and REST APIs for free.
|
81 |
|
|
|
|
|
|
|
|
|
82 |
* [http://ip-api.com/](http://ip-api.com/ "IP-API.com - Free Geolocation API") (IPv4, IPv6 / free for non-commercial use)
|
83 |
+
* [http://geoiplookup.net/](http://geoiplookup.net/ "What Is My IP Address | GeoIP Lookup") (IPv4, IPv6 / free)
|
84 |
+
* [https://ipinfo.io/](https://ipinfo.io/ "IP Address API and Data Solutions") (IPv4, IPv6 / free)
|
85 |
+
* [https://ipapi.com/](https://ipapi.com/ "ipapi - IP Address Lookup and Geolocation API) (IPv4, IPv6 / free, need API key)
|
86 |
+
* [https://ipdata.co/](https://ipdata.co/ "ipdata.co - IP Geolocation and Threat Data API") (IPv4, IPv6 / free, need API key)
|
87 |
* [https://ipstack.com/](https://ipstack.com/ "ipstack - Free IP Geolocation API") (IPv4, IPv6 / free for registered user, need API key)
|
88 |
+
* [https://ipinfodb.com/](https://ipinfodb.com/ "Free IP Geolocation Tools and API| IPInfoDB") (IPv4, IPv6 / free for registered user, need API key)
|
89 |
|
90 |
= Development =
|
91 |
|
101 |
2. Search for 'IP Geo Block'
|
102 |
3. Click 'Install Now'
|
103 |
4. Activate the plugin on the Plugin dashboard
|
104 |
+
5. Stay cool for a while and go to 'Settings' » 'IP Geo Block'
|
105 |
+
6. Try 'Best for Back-end' button for easy setup at the bottom of this plugin's setting page.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
|
107 |
+
Please refer to [the document](https://www.ipgeoblock.com/codex/ "Codex | IP Geo Block") for your best setup.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
|
109 |
== Frequently Asked Questions ==
|
110 |
|
111 |
= Does the site using this plugin comply with GDPR? =
|
112 |
|
113 |
+
This plugin is designed based on the principle of "Privacy by design" so that you can compliantly run it to GDPR. As guarding against personal data breach, IP addresses in this plugin are encrypted and also can be anonymized by default. It also provides some functions not only to manually erase them but also to automatically remove them when those are exceeded a certain amount/time.
|
114 |
+
|
115 |
+
However, these are the part of GDPR requirements and do not guarantee that the site is compliant with GDPR. Refer to [3.0.11 release note](https://www.ipgeoblock.com/changelog/release-3.0.11.html) for details.
|
116 |
|
117 |
= Does this plugin support multisite? =
|
118 |
|
122 |
|
123 |
The short answer is **YES**, especially for the purpose of security e.g. blocking malicious access both on the back-end and on the front-end.
|
124 |
|
125 |
+
You can find the long answer and the compatibility list of cache plugins at "[Compatibility with cache plugins](https://www.ipgeoblock.com/codex/living-with-caching-plugin.html 'Compatibility with cache plugins | IP Geo Block')".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
|
127 |
= I still have access from blacklisted country. Does it work correctly? =
|
128 |
|
218 |
|
219 |
== Screenshots ==
|
220 |
|
221 |
+
1. **IP Geo Plugin** - Multisite list on network
|
222 |
+
2. **IP Geo Plugin** - Settings tab
|
223 |
+
3. **IP Geo Plugin** - Validation rules and behavior
|
224 |
+
4. **IP Geo Plugin** - Back-end target settings
|
225 |
+
5. **IP Geo Plugin** - Front-end target settings
|
226 |
+
6. **IP Geo Plugin** - Geolocation API settings
|
227 |
+
7. **IP Geo Plugin** - IP address cache settings
|
228 |
+
8. **IP Geo Plugin** - Statistics tab
|
229 |
+
9. **IP Geo Plugin** - Logs tab
|
230 |
+
10. **IP Geo Plugin** - Search tab
|
231 |
+
11. **IP Geo Plugin** - Attribution tab
|
232 |
|
233 |
== Changelog ==
|
234 |
|
235 |
+
= 3.0.17 =
|
236 |
+
* **Fix issue:** Avoid the error of "Can not load Geolocation API libraries" caused by the race condition on upgrading this plugin.
|
237 |
+
* **New feature:** Enhance protecting against certain types of attacks by privilege escalation.
|
238 |
+
* **New feature:** Add a new option of "**Network wide settings**" in "**Plugin settings**" section to synchronize all the settings with the main blog on multisite.
|
239 |
+
* **New feature:** Add "**Preset filters**" using [`ip-geo-block-logs[-preset]`](https://www.ipgeoblock.com/codex/ip-geo-block-logs-preset.html "ip-geo-block-logs[-preset] | IP Geo Block") filter hook to make analyze logs easy on "**Logs**" tab.
|
240 |
+
* **Improvement:** When `pwd` is set at "**$_POST key to record with value**" in "**Privacy and record settings**" section, mask the password in logs unless the login attempt is blocked.
|
241 |
+
* **Improvement:** Flush out the buffer of "**Live update**" on "**Logs**" tab when stop button is activated to avoid data remains.
|
242 |
+
* **Improvement:** Update the geolocation API service "geoip.nekudo.com" to "ipapi.com".
|
243 |
+
* **Improvement:** Update the class for Maxmind GeoLite Legacy databases to prepare against the upcoming expiry of support.
|
244 |
+
* See [3.0.17 release note](https://www.ipgeoblock.com/changelog/release-3.0.17.html) for some details.
|
245 |
+
|
246 |
= 3.0.16 =
|
247 |
* **Fix issue:** Fix the issue that some functions did not work properly when "Validation timing" was set as `"mu-plugins" (ip-geo-block-mu.php)` under some conditions before WP 4.0.
|
248 |
* **New feature:** Add "**Sites list**" page at Network admin page to look through the status of the sites if this plugin is network activated on multisite.
|
admin/class-ip-geo-block-admin.php
CHANGED
@@ -8,7 +8,6 @@
|
|
8 |
* @link https://www.ipgeoblock.com/
|
9 |
* @copyright 2013-2018 tokkonopapa
|
10 |
*/
|
11 |
-
define( 'IP_GEO_BLOCK_NETWORK', TRUE );
|
12 |
|
13 |
class IP_Geo_Block_Admin {
|
14 |
|
@@ -444,7 +443,7 @@ class IP_Geo_Block_Admin {
|
|
444 |
}
|
445 |
|
446 |
if ( $admin_menu ) {
|
447 |
-
// `settings-updated`
|
448 |
if ( ! empty( $_REQUEST['page'] ) && IP_Geo_Block::PLUGIN_NAME === $_REQUEST['page'] &&
|
449 |
! empty( $_REQUEST['settings-updated'] ) && $this->is_network_admin && $settings['network_wide'] ) {
|
450 |
$this->update_multisite_settings( $settings );
|
@@ -465,7 +464,7 @@ class IP_Geo_Block_Admin {
|
|
465 |
);
|
466 |
}
|
467 |
|
468 |
-
elseif (
|
469 |
// Add a settings page for this plugin to the Settings menu.
|
470 |
$hook = add_menu_page(
|
471 |
__( 'IP Geo Block', 'ip-geo-block' ),
|
@@ -476,17 +475,6 @@ class IP_Geo_Block_Admin {
|
|
476 |
//, 'dashicons-admin-site' // or 'data:image/svg+xml;base64...'
|
477 |
);
|
478 |
|
479 |
-
if ( $settings['network_wide'] ) {
|
480 |
-
add_submenu_page(
|
481 |
-
IP_Geo_Block::PLUGIN_NAME,
|
482 |
-
__( 'IP Geo Block', 'ip-geo-block' ),
|
483 |
-
__( 'Settings', 'ip-geo-block' ),
|
484 |
-
'manage_network_options',
|
485 |
-
IP_Geo_Block::PLUGIN_NAME,
|
486 |
-
array( $this, 'display_plugin_admin_page' )
|
487 |
-
);
|
488 |
-
}
|
489 |
-
|
490 |
add_submenu_page(
|
491 |
IP_Geo_Block::PLUGIN_NAME,
|
492 |
__( 'IP Geo Block', 'ip-geo-block' ),
|
@@ -496,6 +484,17 @@ class IP_Geo_Block_Admin {
|
|
496 |
array( $this, 'display_plugin_admin_page' )
|
497 |
);
|
498 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
499 |
wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-icons',
|
500 |
plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
|
501 |
'css/admin-icons.min.css' : 'css/admin-icons.css', __FILE__
|
@@ -523,7 +522,7 @@ class IP_Geo_Block_Admin {
|
|
523 |
|
524 |
if ( ! $settings['api_dir'] || ! file_exists( $settings['api_dir'] ) ) {
|
525 |
$this->add_admin_notice( 'error', sprintf(
|
526 |
-
__( 'Can not load Geolocation API libraries from <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>.
|
527 |
apply_filters( 'ip-geo-block-api-dir', $settings['api_dir'] ? $settings['api_dir'] : basename( WP_CONTENT_DIR ) )
|
528 |
) );
|
529 |
}
|
@@ -532,8 +531,8 @@ class IP_Geo_Block_Admin {
|
|
532 |
$providers = IP_Geo_Block_Provider::get_valid_providers( $settings, FALSE, FALSE, TRUE );
|
533 |
if ( empty( $providers ) ) {
|
534 |
$this->add_admin_notice( 'error', sprintf(
|
535 |
-
|
536 |
-
|
537 |
) );
|
538 |
}
|
539 |
|
@@ -541,7 +540,7 @@ class IP_Geo_Block_Admin {
|
|
541 |
$providers = IP_Geo_Block_Provider::get_addons( $settings['providers'] );
|
542 |
if ( empty( $providers ) ) {
|
543 |
$this->add_admin_notice( 'error', sprintf(
|
544 |
-
|
545 |
esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 0, 'sec' => 4 ), $adminurl ) ) . '#' . IP_Geo_Block::PLUGIN_NAME . '-section-4'
|
546 |
) );
|
547 |
}
|
@@ -573,7 +572,7 @@ class IP_Geo_Block_Admin {
|
|
573 |
// Check self blocking (skip during updating)
|
574 |
if ( FALSE === $updating && 1 === (int)$settings['validation']['login'] ) {
|
575 |
$instance = IP_Geo_Block::get_instance();
|
576 |
-
$validate = $instance->validate_ip( 'login', $settings, TRUE, FALSE
|
577 |
|
578 |
switch( $validate['result'] ) {
|
579 |
case 'limited':
|
@@ -705,8 +704,6 @@ class IP_Geo_Block_Admin {
|
|
705 |
($stat ? ' ' . IP_Geo_Block::PLUGIN_NAME . '-border"' : '"'),
|
706 |
($stat || (4 === $tab && $index) ? '>' : ' style="display:none">'), "\n";
|
707 |
|
708 |
-
++$index;
|
709 |
-
|
710 |
if ( $section['callback'] )
|
711 |
call_user_func( $section['callback'], $section );
|
712 |
|
@@ -719,6 +716,7 @@ class IP_Geo_Block_Admin {
|
|
719 |
}
|
720 |
|
721 |
echo "</div>\n</fieldset>\n";
|
|
|
722 |
}
|
723 |
}
|
724 |
}
|
@@ -730,12 +728,12 @@ class IP_Geo_Block_Admin {
|
|
730 |
public function display_plugin_admin_page() {
|
731 |
$tab = $this->admin_tab;
|
732 |
$tabs = array(
|
|
|
733 |
0 => __( 'Settings', 'ip-geo-block' ),
|
734 |
1 => __( 'Statistics', 'ip-geo-block' ),
|
735 |
4 => __( 'Logs', 'ip-geo-block' ),
|
736 |
2 => __( 'Search', 'ip-geo-block' ),
|
737 |
3 => __( 'Attribution', 'ip-geo-block' ),
|
738 |
-
5 => __( 'Sites list', 'ip-geo-block' ),
|
739 |
);
|
740 |
|
741 |
$settings = IP_Geo_Block::get_option();
|
@@ -746,13 +744,14 @@ class IP_Geo_Block_Admin {
|
|
746 |
if ( 'options-general.php' === $GLOBALS['pagenow'] ) {
|
747 |
$action = 'options.php';
|
748 |
unset( $tabs[5] ); // Sites list
|
749 |
-
if (
|
|
|
|
|
750 |
if ( $settings['network_wide'] ) {
|
751 |
unset( $tabs[0] ); // Settings
|
|
|
752 |
}
|
753 |
-
$title .= '
|
754 |
-
$title .= ' [ <a href="' . esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME ), $this->dashboard_url( TRUE ) ) ) . '" target="_self">' . __( 'Network', 'ip-geo-block' ) . '</a> ]';
|
755 |
-
$title .= '</span>';
|
756 |
}
|
757 |
}
|
758 |
|
@@ -762,13 +761,15 @@ class IP_Geo_Block_Admin {
|
|
762 |
// `edit.php` ==> do action `network_admin_edit_ip-geo-block` ==> `validate_network_settings()`
|
763 |
$action = 'edit.php?action=' . IP_Geo_Block::PLUGIN_NAME;
|
764 |
if ( $this->is_network_admin ) {
|
765 |
-
if ( ! $settings['network_wide'] ) {
|
766 |
-
unset( $tabs[0] ); // remove Settings
|
767 |
-
}
|
768 |
unset( $tabs[1], $tabs[4], $tabs[2], $tabs[3] ); // Statistics, Logs, Search, Attribution
|
769 |
-
$title .= ' <span class="ip-geo-block-menu-link">';
|
770 |
-
$title .=
|
771 |
-
|
|
|
|
|
|
|
|
|
|
|
772 |
}
|
773 |
}
|
774 |
|
@@ -889,7 +890,7 @@ class IP_Geo_Block_Admin {
|
|
889 |
foreach ( $args['list'] as $key => $val ) { ?>
|
890 |
<li>
|
891 |
<input type="checkbox" id="<?php echo $id, $sub_id, '_', $key; ?>" name="<?php echo $name, $sub_name, '[', $key, ']'; ?>" value="<?php echo $key; ?>"<?php
|
892 |
-
checked( is_array( $args['value'] ) ? ! empty( $args['value'][ $key ] ) : ( $key & $args['value'] ? TRUE : FALSE ) ); ?> /><label for="<?php
|
893 |
echo $id, $sub_id, '_', $key; ?>"><?php
|
894 |
if ( isset( $args['desc'][ $key ] ) )
|
895 |
echo '<dfn title="', $args['desc'][ $key ], '">', $val, '</dfn>';
|
@@ -905,7 +906,7 @@ class IP_Geo_Block_Admin {
|
|
905 |
case 'checkbox': ?>
|
906 |
<input type="checkbox" id="<?php echo $id, $sub_id; ?>" name="<?php echo $name, $sub_name; ?>" value="1"<?php
|
907 |
checked( esc_attr( $args['value'] ) );
|
908 |
-
disabled( ! empty( $args['disabled'] ), TRUE ); ?> /><label for="<?php
|
909 |
echo $id, $sub_id; ?>"><?php
|
910 |
if ( isset( $args['text'] ) ) echo esc_attr( $args['text'] );
|
911 |
else if ( isset( $args['html'] ) ) echo $args['html'];
|
@@ -1060,6 +1061,17 @@ class IP_Geo_Block_Admin {
|
|
1060 |
}
|
1061 |
break;
|
1062 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1063 |
default: // checkbox, select, text
|
1064 |
// single field
|
1065 |
if ( ! is_array( $default[ $key ] ) ) {
|
@@ -1227,15 +1239,20 @@ class IP_Geo_Block_Admin {
|
|
1227 |
}
|
1228 |
|
1229 |
// 3.0.4 AS number, 3.0.8 Geolite2
|
1230 |
-
|
|
|
|
|
|
|
1231 |
if ( $output['Maxmind']['use_asn'] && ( ! $output['Maxmind']['asn4_path'] || ! $output['Geolite2']['asn_path'] ) ) {
|
1232 |
-
// force to update in case of using asn
|
1233 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-cron.php';
|
1234 |
-
|
1235 |
-
}
|
1236 |
-
|
|
|
|
|
1237 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
1238 |
-
$fs = IP_Geo_Block_FS::init(
|
|
|
1239 |
if ( ! $output['Maxmind']['use_asn'] && ! $fs->exists( $output['Maxmind']['asn4_path'] ) ) {
|
1240 |
$output['Maxmind']['asn4_path'] = NULL;
|
1241 |
$output['Maxmind']['asn6_path'] = NULL;
|
@@ -1377,6 +1394,9 @@ class IP_Geo_Block_Admin {
|
|
1377 |
// Force to finish update matching rule
|
1378 |
delete_transient( IP_Geo_Block::CRON_NAME );
|
1379 |
|
|
|
|
|
|
|
1380 |
return $options;
|
1381 |
}
|
1382 |
|
@@ -1395,8 +1415,9 @@ class IP_Geo_Block_Admin {
|
|
1395 |
|
1396 |
// Go through the posted data and save the targetted options.
|
1397 |
foreach ( $options as $option ) {
|
1398 |
-
if ( isset( $_POST[ $option ] ) )
|
1399 |
$this->update_multisite_settings( $_POST[ $option ] );
|
|
|
1400 |
}
|
1401 |
|
1402 |
// Register a settings error to be displayed to the user
|
@@ -1418,7 +1439,7 @@ class IP_Geo_Block_Admin {
|
|
1418 |
*
|
1419 |
* @note: This function triggers `validate_settings()` on register_setting() in wp-include/option.php.
|
1420 |
*/
|
1421 |
-
|
1422 |
global $wpdb;
|
1423 |
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
|
1424 |
$ret = TRUE;
|
@@ -1434,6 +1455,86 @@ class IP_Geo_Block_Admin {
|
|
1434 |
return $ret;
|
1435 |
}
|
1436 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1437 |
/**
|
1438 |
* Ajax callback function
|
1439 |
*
|
@@ -1498,9 +1599,34 @@ class IP_Geo_Block_Admin {
|
|
1498 |
break;
|
1499 |
|
1500 |
case 'restore-logs': // Get logs from MySQL DB
|
|
|
1501 |
$res = IP_Geo_Block_Admin_Ajax::restore_logs( $which );
|
1502 |
break;
|
1503 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1504 |
case 'validate': // Validate settings
|
1505 |
IP_Geo_Block_Admin_Ajax::validate_settings( $this );
|
1506 |
break;
|
@@ -1594,29 +1720,6 @@ class IP_Geo_Block_Admin {
|
|
1594 |
$res = IP_Geo_Block_Admin_Ajax::restore_network( $which, (int)$_POST['offset'], (int)$_POST['length'], FALSE );
|
1595 |
break;
|
1596 |
|
1597 |
-
case 'live-start': // Restore live log
|
1598 |
-
if ( is_wp_error( $res = IP_Geo_Block_Admin_Ajax::restore_live_log( $which, $settings ) ) )
|
1599 |
-
$res = array( 'error' => $res->get_error_message() );
|
1600 |
-
break;
|
1601 |
-
|
1602 |
-
case 'live-pause': // Pause live log
|
1603 |
-
if ( ! is_wp_error( $res = IP_Geo_Block_Admin_Ajax::catch_live_log() ) )
|
1604 |
-
$res = array( 'data' => array() );
|
1605 |
-
else
|
1606 |
-
$res = array( 'error' => $res->get_error_message() );
|
1607 |
-
break;
|
1608 |
-
|
1609 |
-
case 'live-stop': // Stop live log
|
1610 |
-
if ( ! is_wp_error( $res = IP_Geo_Block_Admin_Ajax::release_live_log() ) )
|
1611 |
-
$res = array( 'data' => array() );
|
1612 |
-
else
|
1613 |
-
$res = array( 'error' => $res->get_error_message() );
|
1614 |
-
break;
|
1615 |
-
|
1616 |
-
case 'reset-live': // Reset data source of live log
|
1617 |
-
$res = IP_Geo_Block_Admin_Ajax::reset_live_log();
|
1618 |
-
break;
|
1619 |
-
|
1620 |
case 'find-admin':
|
1621 |
case 'find-plugins':
|
1622 |
case 'find-themes':
|
@@ -1624,8 +1727,7 @@ class IP_Geo_Block_Admin {
|
|
1624 |
$res = IP_Geo_Block_Admin_Ajax::find_exceptions( $cmd );
|
1625 |
break;
|
1626 |
|
1627 |
-
case 'diag-tables':
|
1628 |
-
// Check database tables
|
1629 |
IP_Geo_Block_Logs::diag_tables() or IP_Geo_Block_Logs::create_tables();
|
1630 |
$res = array( 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME );
|
1631 |
break;
|
8 |
* @link https://www.ipgeoblock.com/
|
9 |
* @copyright 2013-2018 tokkonopapa
|
10 |
*/
|
|
|
11 |
|
12 |
class IP_Geo_Block_Admin {
|
13 |
|
443 |
}
|
444 |
|
445 |
if ( $admin_menu ) {
|
446 |
+
// `options-general.php` ==> `options.php` ==> `settings-updated` is added as query just after settings updated.
|
447 |
if ( ! empty( $_REQUEST['page'] ) && IP_Geo_Block::PLUGIN_NAME === $_REQUEST['page'] &&
|
448 |
! empty( $_REQUEST['settings-updated'] ) && $this->is_network_admin && $settings['network_wide'] ) {
|
449 |
$this->update_multisite_settings( $settings );
|
464 |
);
|
465 |
}
|
466 |
|
467 |
+
elseif ( $this->is_network_admin ) {
|
468 |
// Add a settings page for this plugin to the Settings menu.
|
469 |
$hook = add_menu_page(
|
470 |
__( 'IP Geo Block', 'ip-geo-block' ),
|
475 |
//, 'dashicons-admin-site' // or 'data:image/svg+xml;base64...'
|
476 |
);
|
477 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
add_submenu_page(
|
479 |
IP_Geo_Block::PLUGIN_NAME,
|
480 |
__( 'IP Geo Block', 'ip-geo-block' ),
|
484 |
array( $this, 'display_plugin_admin_page' )
|
485 |
);
|
486 |
|
487 |
+
if ( $settings['network_wide'] ) {
|
488 |
+
add_submenu_page(
|
489 |
+
IP_Geo_Block::PLUGIN_NAME,
|
490 |
+
__( 'IP Geo Block', 'ip-geo-block' ),
|
491 |
+
__( 'Settings', 'ip-geo-block' ),
|
492 |
+
'manage_network_options',
|
493 |
+
IP_Geo_Block::PLUGIN_NAME,
|
494 |
+
array( $this, 'display_plugin_admin_page' )
|
495 |
+
);
|
496 |
+
}
|
497 |
+
|
498 |
wp_enqueue_style( IP_Geo_Block::PLUGIN_NAME . '-admin-icons',
|
499 |
plugins_url( ! defined( 'IP_GEO_BLOCK_DEBUG' ) || ! IP_GEO_BLOCK_DEBUG ?
|
500 |
'css/admin-icons.min.css' : 'css/admin-icons.css', __FILE__
|
522 |
|
523 |
if ( ! $settings['api_dir'] || ! file_exists( $settings['api_dir'] ) ) {
|
524 |
$this->add_admin_notice( 'error', sprintf(
|
525 |
+
__( 'Can not load Geolocation API libraries from <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>. Try to deactivate IP Geo Block once and activate it again, or install <code>ip-geo-api</code> with write permission according to <a rel="noreferrer" href="https://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' ),
|
526 |
apply_filters( 'ip-geo-block-api-dir', $settings['api_dir'] ? $settings['api_dir'] : basename( WP_CONTENT_DIR ) )
|
527 |
) );
|
528 |
}
|
531 |
$providers = IP_Geo_Block_Provider::get_valid_providers( $settings, FALSE, FALSE, TRUE );
|
532 |
if ( empty( $providers ) ) {
|
533 |
$this->add_admin_notice( 'error', sprintf(
|
534 |
+
__( 'You should select at least one API at <a href="%s">Geolocation API settings</a>. Otherwise <strong>you\'ll be blocked</strong> after the cache expires.', 'ip-geo-block' ),
|
535 |
+
esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 0, 'sec' => 4 ), $adminurl ) ) . '#' . IP_Geo_Block::PLUGIN_NAME . '-section-4'
|
536 |
) );
|
537 |
}
|
538 |
|
540 |
$providers = IP_Geo_Block_Provider::get_addons( $settings['providers'] );
|
541 |
if ( empty( $providers ) ) {
|
542 |
$this->add_admin_notice( 'error', sprintf(
|
543 |
+
__( 'You should select at least one API for local database at <a href="%s">Geolocation API settings</a>. Otherwise access to the external API may slow down the site.', 'ip-geo-block' ),
|
544 |
esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 0, 'sec' => 4 ), $adminurl ) ) . '#' . IP_Geo_Block::PLUGIN_NAME . '-section-4'
|
545 |
) );
|
546 |
}
|
572 |
// Check self blocking (skip during updating)
|
573 |
if ( FALSE === $updating && 1 === (int)$settings['validation']['login'] ) {
|
574 |
$instance = IP_Geo_Block::get_instance();
|
575 |
+
$validate = $instance->validate_ip( 'login', $settings, TRUE, FALSE ); // skip authentication check
|
576 |
|
577 |
switch( $validate['result'] ) {
|
578 |
case 'limited':
|
704 |
($stat ? ' ' . IP_Geo_Block::PLUGIN_NAME . '-border"' : '"'),
|
705 |
($stat || (4 === $tab && $index) ? '>' : ' style="display:none">'), "\n";
|
706 |
|
|
|
|
|
707 |
if ( $section['callback'] )
|
708 |
call_user_func( $section['callback'], $section );
|
709 |
|
716 |
}
|
717 |
|
718 |
echo "</div>\n</fieldset>\n";
|
719 |
+
++$index;
|
720 |
}
|
721 |
}
|
722 |
}
|
728 |
public function display_plugin_admin_page() {
|
729 |
$tab = $this->admin_tab;
|
730 |
$tabs = array(
|
731 |
+
5 => __( 'Sites list', 'ip-geo-block' ),
|
732 |
0 => __( 'Settings', 'ip-geo-block' ),
|
733 |
1 => __( 'Statistics', 'ip-geo-block' ),
|
734 |
4 => __( 'Logs', 'ip-geo-block' ),
|
735 |
2 => __( 'Search', 'ip-geo-block' ),
|
736 |
3 => __( 'Attribution', 'ip-geo-block' ),
|
|
|
737 |
);
|
738 |
|
739 |
$settings = IP_Geo_Block::get_option();
|
744 |
if ( 'options-general.php' === $GLOBALS['pagenow'] ) {
|
745 |
$action = 'options.php';
|
746 |
unset( $tabs[5] ); // Sites list
|
747 |
+
if ( $this->is_network_admin ) {
|
748 |
+
$title .= ' <span class="ip-geo-block-menu-link"> [ ';
|
749 |
+
$title .= '<a href="' . esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 5 ), $this->dashboard_url( TRUE ) ) ) . '" target="_self">' . __( 'Sites list', 'ip-geo-block' ) . '</a>';
|
750 |
if ( $settings['network_wide'] ) {
|
751 |
unset( $tabs[0] ); // Settings
|
752 |
+
$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>';
|
753 |
}
|
754 |
+
$title .= ' ]</span>';
|
|
|
|
|
755 |
}
|
756 |
}
|
757 |
|
761 |
// `edit.php` ==> do action `network_admin_edit_ip-geo-block` ==> `validate_network_settings()`
|
762 |
$action = 'edit.php?action=' . IP_Geo_Block::PLUGIN_NAME;
|
763 |
if ( $this->is_network_admin ) {
|
|
|
|
|
|
|
764 |
unset( $tabs[1], $tabs[4], $tabs[2], $tabs[3] ); // Statistics, Logs, Search, Attribution
|
765 |
+
$title .= ' <span class="ip-geo-block-menu-link"> [ ';
|
766 |
+
$title .= __( 'Sites list', 'ip-geo-block' );
|
767 |
+
if ( $settings['network_wide'] ) {
|
768 |
+
$title .= ' / ' . __( 'Settings', 'ip-geo-block' );
|
769 |
+
} else {
|
770 |
+
unset( $tabs[0] ); // Settings
|
771 |
+
}
|
772 |
+
$title .= ' ]</span>';
|
773 |
}
|
774 |
}
|
775 |
|
890 |
foreach ( $args['list'] as $key => $val ) { ?>
|
891 |
<li>
|
892 |
<input type="checkbox" id="<?php echo $id, $sub_id, '_', $key; ?>" name="<?php echo $name, $sub_name, '[', $key, ']'; ?>" value="<?php echo $key; ?>"<?php
|
893 |
+
checked( is_array( $args['value'] ) ? ! empty( $args['value'][ $key ] ) : ( $key & $args['value'] ? TRUE : FALSE ) ); ?> /><label for="<?php
|
894 |
echo $id, $sub_id, '_', $key; ?>"><?php
|
895 |
if ( isset( $args['desc'][ $key ] ) )
|
896 |
echo '<dfn title="', $args['desc'][ $key ], '">', $val, '</dfn>';
|
906 |
case 'checkbox': ?>
|
907 |
<input type="checkbox" id="<?php echo $id, $sub_id; ?>" name="<?php echo $name, $sub_name; ?>" value="1"<?php
|
908 |
checked( esc_attr( $args['value'] ) );
|
909 |
+
disabled( ! empty( $args['disabled'] ), TRUE ); ?> /><label for="<?php
|
910 |
echo $id, $sub_id; ?>"><?php
|
911 |
if ( isset( $args['text'] ) ) echo esc_attr( $args['text'] );
|
912 |
else if ( isset( $args['html'] ) ) echo $args['html'];
|
1061 |
}
|
1062 |
break;
|
1063 |
|
1064 |
+
case 'metadata':
|
1065 |
+
if ( isset( $input[ $key ] ) ) {
|
1066 |
+
if ( is_string( $input[ $key ]['pre_update_option' ] ) ) {
|
1067 |
+
$output[ $key ]['pre_update_option' ] = array_map( 'sanitize_key', explode( ',', trim( $input[ $key ]['pre_update_option' ], ',' ) ) ); // @since 3.0.17
|
1068 |
+
}
|
1069 |
+
if ( is_string( $input[ $key ]['pre_update_site_option'] ) ) {
|
1070 |
+
$output[ $key ]['pre_update_site_option'] = array_map( 'sanitize_key', explode( ',', trim( $input[ $key ]['pre_update_site_option'], ',' ) ) ); // @since 3.0.17
|
1071 |
+
}
|
1072 |
+
}
|
1073 |
+
break;
|
1074 |
+
|
1075 |
default: // checkbox, select, text
|
1076 |
// single field
|
1077 |
if ( ! is_array( $default[ $key ] ) ) {
|
1239 |
}
|
1240 |
|
1241 |
// 3.0.4 AS number, 3.0.8 Geolite2
|
1242 |
+
if ( version_compare( PHP_VERSION, '5.4' ) >= 0 )
|
1243 |
+
$output['Geolite2']['use_asn'] = $output['Maxmind']['use_asn'];
|
1244 |
+
|
1245 |
+
// force to update asn file not immediately but after `validate_settings()` and `validate_network_settings()`
|
1246 |
if ( $output['Maxmind']['use_asn'] && ( ! $output['Maxmind']['asn4_path'] || ! $output['Geolite2']['asn_path'] ) ) {
|
|
|
1247 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-cron.php';
|
1248 |
+
add_action( IP_Geo_Block::PLUGIN_NAME . '-settings-updated', array( 'IP_Geo_Block_Cron', 'start_update_db' ), 10, 2 );
|
1249 |
+
}
|
1250 |
+
|
1251 |
+
// reset path if asn file does not exist
|
1252 |
+
else {
|
1253 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
1254 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
1255 |
+
|
1256 |
if ( ! $output['Maxmind']['use_asn'] && ! $fs->exists( $output['Maxmind']['asn4_path'] ) ) {
|
1257 |
$output['Maxmind']['asn4_path'] = NULL;
|
1258 |
$output['Maxmind']['asn6_path'] = NULL;
|
1394 |
// Force to finish update matching rule
|
1395 |
delete_transient( IP_Geo_Block::CRON_NAME );
|
1396 |
|
1397 |
+
// start to update databases immediately
|
1398 |
+
do_action( IP_Geo_Block::PLUGIN_NAME . '-settings-updated', $options, TRUE );
|
1399 |
+
|
1400 |
return $options;
|
1401 |
}
|
1402 |
|
1415 |
|
1416 |
// Go through the posted data and save the targetted options.
|
1417 |
foreach ( $options as $option ) {
|
1418 |
+
if ( isset( $_POST[ $option ] ) ) {
|
1419 |
$this->update_multisite_settings( $_POST[ $option ] );
|
1420 |
+
}
|
1421 |
}
|
1422 |
|
1423 |
// Register a settings error to be displayed to the user
|
1439 |
*
|
1440 |
* @note: This function triggers `validate_settings()` on register_setting() in wp-include/option.php.
|
1441 |
*/
|
1442 |
+
public function update_multisite_settings( $settings ) {
|
1443 |
global $wpdb;
|
1444 |
$blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
|
1445 |
$ret = TRUE;
|
1455 |
return $ret;
|
1456 |
}
|
1457 |
|
1458 |
+
/**
|
1459 |
+
* Analyze entries in "Validation logs"
|
1460 |
+
*
|
1461 |
+
* @param array $logs An array including each entry where:
|
1462 |
+
* Array (
|
1463 |
+
* [0 DB row number] => 154
|
1464 |
+
* [1 Target ] => comment
|
1465 |
+
* [2 Time ] => 1534580897
|
1466 |
+
* [3 IP address ] => 102.177.147.***
|
1467 |
+
* [4 Country code ] => ZA
|
1468 |
+
* [5 Result ] => blocked
|
1469 |
+
* [6 AS number ] => AS328239
|
1470 |
+
* [7 Request ] => POST[80]:/wp-comments-post.php
|
1471 |
+
* [8 User agent ] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) ...
|
1472 |
+
* [9 HTTP headers ] => HTTP_ORIGIN=http://localhost,HTTP_X_FORWARDED_FOR=102.177.147.***
|
1473 |
+
* [10 $_POST data ] => comment=Hello.,author,email,url,comment_post_ID,comment_parent
|
1474 |
+
* )
|
1475 |
+
* And put a mark at "Target"
|
1476 |
+
* ¹¹: Passed in Whitelist
|
1477 |
+
* ¹²: Passed in Blacklist
|
1478 |
+
* ¹³: Passed not in list
|
1479 |
+
* ²¹: Blocked in Whitelist
|
1480 |
+
* ²²: Blocked in Blacklist
|
1481 |
+
* ²³: Blocked not in list
|
1482 |
+
*/
|
1483 |
+
public function filter_logs( $logs ) {
|
1484 |
+
$settings = IP_Geo_Block::get_option();
|
1485 |
+
|
1486 |
+
// White/Black list for back-end
|
1487 |
+
$white_backend = $settings['white_list'];
|
1488 |
+
$black_backend = $settings['black_list'];
|
1489 |
+
|
1490 |
+
// White/Black list for front-end
|
1491 |
+
if ( $settings['public']['matching_rule'] < 0 ) {
|
1492 |
+
// Follow "Validation rule settings"
|
1493 |
+
$white_frontend = $white_backend;
|
1494 |
+
$black_frontend = $black_backend;
|
1495 |
+
} else {
|
1496 |
+
// Whitelist or Blacklist for "Public facing pages"
|
1497 |
+
$white_frontend = $settings['public']['white_list'];
|
1498 |
+
$black_frontend = $settings['public']['black_list'];
|
1499 |
+
}
|
1500 |
+
|
1501 |
+
foreach ( $logs as $key => $log ) {
|
1502 |
+
// Passed or Blocked
|
1503 |
+
$mark = IP_Geo_Block::is_passed( $log[5] ) ? '¹' : '²';
|
1504 |
+
|
1505 |
+
// Whitelisted, Blacklisted or N/A
|
1506 |
+
if ( 'public' === $log[1] ) {
|
1507 |
+
$mark .= IP_Geo_Block::is_listed( $log[4], $white_frontend ) ? '¹' : (
|
1508 |
+
IP_Geo_Block::is_listed( $log[4], $black_frontend ) ? '²' : '³' );
|
1509 |
+
} else {
|
1510 |
+
$mark .= IP_Geo_Block::is_listed( $log[4], $white_backend ) ? '¹' : (
|
1511 |
+
IP_Geo_Block::is_listed( $log[4], $black_backend ) ? '²' : '³' );
|
1512 |
+
}
|
1513 |
+
|
1514 |
+
// Put a mark at "Target"
|
1515 |
+
$logs[ $key ][1] .= $mark;
|
1516 |
+
}
|
1517 |
+
|
1518 |
+
return $logs;
|
1519 |
+
}
|
1520 |
+
|
1521 |
+
/**
|
1522 |
+
* Register UI "Preset filters" at "Search in logs"
|
1523 |
+
*
|
1524 |
+
* @param array $filters An empty array by default.
|
1525 |
+
* @return array $filters The array of paired with 'title' and 'value'.
|
1526 |
+
*/
|
1527 |
+
public function preset_filters( $filters = array() ) {
|
1528 |
+
return array(
|
1529 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-happy" > </span>' . __( '<span title="Show only passed entries whose country codes are in Whitelist.">Passed in Whitelist</span>', 'ip-geo-block' ), 'value' => '¹¹' ),
|
1530 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-grin2" > </span>' . __( '<span title="Show only passed entries whose country codes are in Blacklist.">Passed in Blacklist</span>', 'ip-geo-block' ), 'value' => '¹²' ),
|
1531 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-cool" > </span>' . __( '<span title="Show only passed entries whose country codes are not in either list.">Passed not in List</span>', 'ip-geo-block' ), 'value' => '¹³' ),
|
1532 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-confused" > </span>' . __( '<span title="Show only blocked entries whose country codes are in Whitelist.">Blocked in Whitelist</span>', 'ip-geo-block' ), 'value' => '²¹' ),
|
1533 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-confused2"> </span>' . __( '<span title="Show only blocked entries whose country codes are in Blacklist.">Blocked in Blacklist</span>', 'ip-geo-block' ), 'value' => '²²' ),
|
1534 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-crying" > </span>' . __( '<span title="Show only blocked entries whose country codes are not in either list.">Blocked not in List</span>', 'ip-geo-block' ), 'value' => '²³' ),
|
1535 |
+
);
|
1536 |
+
}
|
1537 |
+
|
1538 |
/**
|
1539 |
* Ajax callback function
|
1540 |
*
|
1599 |
break;
|
1600 |
|
1601 |
case 'restore-logs': // Get logs from MySQL DB
|
1602 |
+
has_filter( $cmd = IP_Geo_Block::PLUGIN_NAME . '-logs' ) or add_filter( $cmd, array( $this, 'filter_logs' ) );
|
1603 |
$res = IP_Geo_Block_Admin_Ajax::restore_logs( $which );
|
1604 |
break;
|
1605 |
|
1606 |
+
case 'live-start': // Restore live log
|
1607 |
+
has_filter( $cmd = IP_Geo_Block::PLUGIN_NAME . '-logs' ) or add_filter( $cmd, array( $this, 'filter_logs' ) );
|
1608 |
+
if ( is_wp_error( $res = IP_Geo_Block_Admin_Ajax::restore_live_log( $which, $settings ) ) )
|
1609 |
+
$res = array( 'error' => $res->get_error_message() );
|
1610 |
+
break;
|
1611 |
+
|
1612 |
+
case 'live-pause': // Pause live log
|
1613 |
+
if ( ! is_wp_error( $res = IP_Geo_Block_Admin_Ajax::catch_live_log() ) )
|
1614 |
+
$res = array( 'data' => array() );
|
1615 |
+
else
|
1616 |
+
$res = array( 'error' => $res->get_error_message() );
|
1617 |
+
break;
|
1618 |
+
|
1619 |
+
case 'live-stop': // Stop live log
|
1620 |
+
if ( ! is_wp_error( $res = IP_Geo_Block_Admin_Ajax::release_live_log() ) )
|
1621 |
+
$res = array( 'data' => array() );
|
1622 |
+
else
|
1623 |
+
$res = array( 'error' => $res->get_error_message() );
|
1624 |
+
break;
|
1625 |
+
|
1626 |
+
case 'reset-live': // Reset data source of live log
|
1627 |
+
$res = IP_Geo_Block_Admin_Ajax::reset_live_log();
|
1628 |
+
break;
|
1629 |
+
|
1630 |
case 'validate': // Validate settings
|
1631 |
IP_Geo_Block_Admin_Ajax::validate_settings( $this );
|
1632 |
break;
|
1720 |
$res = IP_Geo_Block_Admin_Ajax::restore_network( $which, (int)$_POST['offset'], (int)$_POST['length'], FALSE );
|
1721 |
break;
|
1722 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1723 |
case 'find-admin':
|
1724 |
case 'find-plugins':
|
1725 |
case 'find-themes':
|
1727 |
$res = IP_Geo_Block_Admin_Ajax::find_exceptions( $cmd );
|
1728 |
break;
|
1729 |
|
1730 |
+
case 'diag-tables': // Check database tables
|
|
|
1731 |
IP_Geo_Block_Logs::diag_tables() or IP_Geo_Block_Logs::create_tables();
|
1732 |
$res = array( 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME );
|
1733 |
break;
|
admin/css/admin-icons.css
CHANGED
@@ -6,11 +6,11 @@
|
|
6 |
*/
|
7 |
@font-face {
|
8 |
font-family: 'icomoon';
|
9 |
-
src: url('fonts/icomoon.eot?
|
10 |
-
src: url('fonts/icomoon.eot?
|
11 |
-
url('fonts/icomoon.ttf?
|
12 |
-
url('fonts/icomoon.woff?
|
13 |
-
url('fonts/icomoon.svg?
|
14 |
font-weight: normal;
|
15 |
font-style: normal;
|
16 |
}
|
@@ -39,42 +39,6 @@
|
|
39 |
.ip-geo-block-icon-vpn_lock:before {
|
40 |
content: "\e62f";
|
41 |
}
|
42 |
-
.ip-geo-block-icon-search:before {
|
43 |
-
content: "\e986";
|
44 |
-
}
|
45 |
-
.ip-geo-block-icon-key:before {
|
46 |
-
content: "\e98d";
|
47 |
-
}
|
48 |
-
.ip-geo-block-icon-lock:before {
|
49 |
-
content: "\e98f";
|
50 |
-
}
|
51 |
-
.ip-geo-block-icon-unlocked:before {
|
52 |
-
content: "\e990";
|
53 |
-
}
|
54 |
-
.ip-geo-block-icon-cogs:before {
|
55 |
-
content: "\e995";
|
56 |
-
}
|
57 |
-
.ip-geo-block-icon-pie-chart:before {
|
58 |
-
content: "\e99a";
|
59 |
-
}
|
60 |
-
.ip-geo-block-icon-stats-dots:before {
|
61 |
-
content: "\e99b";
|
62 |
-
}
|
63 |
-
.ip-geo-block-icon-stats-bars:before {
|
64 |
-
content: "\e99c";
|
65 |
-
}
|
66 |
-
.ip-geo-block-icon-stats-bars2:before {
|
67 |
-
content: "\e99d";
|
68 |
-
}
|
69 |
-
.ip-geo-block-icon-switch:before {
|
70 |
-
content: "\e9b6";
|
71 |
-
}
|
72 |
-
.ip-geo-block-icon-sphere:before {
|
73 |
-
content: "\e9c9";
|
74 |
-
}
|
75 |
-
.ip-geo-block-icon-earth:before {
|
76 |
-
content: "\e9ca";
|
77 |
-
}
|
78 |
.ip-geo-block-icon-play:before {
|
79 |
content: "\ea1c";
|
80 |
}
|
@@ -84,15 +48,27 @@
|
|
84 |
.ip-geo-block-icon-stop:before {
|
85 |
content: "\ea1e";
|
86 |
}
|
87 |
-
.ip-geo-block-icon-eject:before {
|
88 |
-
content: "\ea25";
|
89 |
-
}
|
90 |
-
.ip-geo-block-icon-new-tab:before {
|
91 |
-
content: "\ea7e";
|
92 |
-
}
|
93 |
.ip-geo-block-icon-warning:before {
|
94 |
content: "\e900";
|
95 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
/* Dashicons is the official icon font of the WordPress admin as of 3.8+. */
|
98 |
#toplevel_page_ip-geo-block .dashicons-admin-generic:before {
|
@@ -101,11 +77,3 @@
|
|
101 |
font-size: 18px;
|
102 |
margin-left: 2px;
|
103 |
}
|
104 |
-
/*
|
105 |
-
#toplevel_page_ip-geo-block .dashicons-admin-generic:before {
|
106 |
-
font-family: 'icomoon';
|
107 |
-
content: "\e9c9";
|
108 |
-
font-size: 18px;
|
109 |
-
margin-left: 2px;
|
110 |
-
}
|
111 |
-
*/
|
6 |
*/
|
7 |
@font-face {
|
8 |
font-family: 'icomoon';
|
9 |
+
src: url('fonts/icomoon.eot?jihakz');
|
10 |
+
src: url('fonts/icomoon.eot?jihakz#iefix') format('embedded-opentype'),
|
11 |
+
url('fonts/icomoon.ttf?jihakz') format('truetype'),
|
12 |
+
url('fonts/icomoon.woff?jihakz') format('woff'),
|
13 |
+
url('fonts/icomoon.svg?jihakz#icomoon') format('svg');
|
14 |
font-weight: normal;
|
15 |
font-style: normal;
|
16 |
}
|
39 |
.ip-geo-block-icon-vpn_lock:before {
|
40 |
content: "\e62f";
|
41 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
.ip-geo-block-icon-play:before {
|
43 |
content: "\ea1c";
|
44 |
}
|
48 |
.ip-geo-block-icon-stop:before {
|
49 |
content: "\ea1e";
|
50 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
.ip-geo-block-icon-warning:before {
|
52 |
content: "\e900";
|
53 |
}
|
54 |
+
.ip-geo-block-icon-happy:before {
|
55 |
+
content: "\e9df";
|
56 |
+
}
|
57 |
+
.ip-geo-block-icon-grin2:before {
|
58 |
+
content: "\e9ea";
|
59 |
+
}
|
60 |
+
.ip-geo-block-icon-cool:before {
|
61 |
+
content: "\e9eb";
|
62 |
+
}
|
63 |
+
.ip-geo-block-icon-confused:before {
|
64 |
+
content: "\e9f5";
|
65 |
+
}
|
66 |
+
.ip-geo-block-icon-confused2:before {
|
67 |
+
content: "\e9f6";
|
68 |
+
}
|
69 |
+
.ip-geo-block-icon-crying:before {
|
70 |
+
content: "\ea01";
|
71 |
+
}
|
72 |
|
73 |
/* Dashicons is the official icon font of the WordPress admin as of 3.8+. */
|
74 |
#toplevel_page_ip-geo-block .dashicons-admin-generic:before {
|
77 |
font-size: 18px;
|
78 |
margin-left: 2px;
|
79 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/css/admin-icons.min.css
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
* Zondicons / Designer: Steve Schoger / License: CC BY 4.0
|
5 |
* Material Icons / Designer: Google / License: Apache License 2.0
|
6 |
*/
|
7 |
-
@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?
|
4 |
* Zondicons / Designer: Steve Schoger / License: CC BY 4.0
|
5 |
* Material Icons / Designer: Google / License: Apache License 2.0
|
6 |
*/
|
7 |
+
@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?jihakz);src:url(fonts/icomoon.eot?jihakz#iefix) format('embedded-opentype'),url(fonts/icomoon.ttf?jihakz) format('truetype'),url(fonts/icomoon.woff?jihakz) format('woff'),url(fonts/icomoon.svg?jihakz#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-calc{margin-top:.2em!important}.ip-geo-block-icon-calc:before{content:"\e901"}.ip-geo-block-icon-vpn_lock:before{content:"\e62f"}.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-warning:before{content:"\e900"}.ip-geo-block-icon-happy:before{content:"\e9df"}.ip-geo-block-icon-grin2:before{content:"\e9ea"}.ip-geo-block-icon-cool:before{content:"\e9eb"}.ip-geo-block-icon-confused:before{content:"\e9f5"}.ip-geo-block-icon-confused2:before{content:"\e9f6"}.ip-geo-block-icon-crying:before{content:"\ea01"}#toplevel_page_ip-geo-block .dashicons-admin-generic:before{font-family:icomoon;content:"\e62f";font-size:18px;margin-left:2px}
|
admin/css/admin.css
CHANGED
@@ -232,10 +232,13 @@ input[id*="ip_geo_block_settings_providers"] + label {
|
|
232 |
}
|
233 |
ul#ip-geo-block-logs-preset {
|
234 |
margin: 0.25em 0;
|
|
|
235 |
}
|
236 |
ul#ip-geo-block-logs-preset li {
|
237 |
float: left;
|
|
|
238 |
margin-right: 1em;
|
|
|
239 |
}
|
240 |
|
241 |
/* Loading image */
|
232 |
}
|
233 |
ul#ip-geo-block-logs-preset {
|
234 |
margin: 0.25em 0;
|
235 |
+
max-width: 600px;
|
236 |
}
|
237 |
ul#ip-geo-block-logs-preset li {
|
238 |
float: left;
|
239 |
+
line-height: 1.6;
|
240 |
margin-right: 1em;
|
241 |
+
min-width: 160px;
|
242 |
}
|
243 |
|
244 |
/* Loading image */
|
admin/css/admin.min.css
CHANGED
@@ -3,4 +3,4 @@
|
|
3 |
* Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
* This software is released under the MIT License.
|
5 |
*/
|
6 |
-
dfn{cursor:help;border-bottom:1px dotted #888}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%}label{display:inline-block;max-width:100%}.panel{border-color:#888;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;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-body:after{clear:both}.ip-geo-block-navi-link{text-align:left}.ip-geo-block-help-link{float:right;font-size:90%;font-weight:400}.ip-geo-block-help-link a{box-shadow:none}fieldset label{vertical-align:text-middle}fieldset input[type=checkbox]{margin:1px 2px 0}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 0}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%}fieldset.ip-geo-block-field input[type=checkbox],fieldset.ip-geo-block-field input[type=radio],p.ip-geo-block-navi-link input[type=checkbox]{margin-right:.4em}input[id*=ip_geo_block_settings_rewrite_]+label{margin-left:.25em}input[id*=ip_geo_block_settings_providers]+label{min-width:7em}.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-note li{text-indent:-1em;padding-left:1em}.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-primary{color:#fff!important;background:#00838f!important;border-color:#00707a!important;text-shadow:none}.ip-geo-block-primary:hover{background-color:#00919e!important;border-color:#00525a!important}ul#ip-geo-block-logs-preset{margin:.25em 0}ul#ip-geo-block-logs-preset li{float:left;margin-right:1em}#ip-geo-block-live-loading,.ip-geo-block-loading{height:16px;width:16px;background-size:16px 16px;background-position:center center;background-repeat:no-repeat;margin-left:1em;margin-top:.2em;display:inline-block;vertical-align:top}.ip-geo-block-loading{background-image:url(data:image/gif;base64,R0lGODlhEAAQAPYCAKqqqsbGxlZWVsrKyvr6+ubm5tDQ0K6urmZmZmJiYuzs7IaGhvT09JycnLq6us7Ozurq6o6OjtbW1tra2vDw8CgoKCYmJvz8/NLS0kJCQlJSUqysrPLy8vb29pqamra2tm5ubujo6Kampvj4+IiIiMjIyEhISNzc3OLi4rKysj4+PlBQULi4uJKSkmRkZODg4KKiou7u7iQkJB4eHlpaWhISErCwsHh4eMDAwDIyMi4uLqSkpIKCgr6+vt7e3n5+fggICJCQkAwMDEpKSmBgYHZ2dhgYGBYWFnx8fF5eXk5OTiIiIjAwMIyMjISEhDQ0NJaWltTU1AQEBBwcHGpqaoqKiuTk5CoqKlhYWAoKCtjY2Hp6ehAQEJ6ensLCwkxMTJSUlCwsLAYGBnR0dDg4OFxcXLy8vKCgoA4ODsTExMzMzDw8PERERDY2NqioqHJycrS0tGhoaBQUFEZGRjo6OkBAQICAgHBwcFRUVCAgIGxsbP///wAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgACACwAAAAAEAAQAEAHjIACgoOEhYJsbTGGghcPGIJRbFNNhgQKCheDDkllDQYMHSc4MAcvhTB0aFliggQjmYNEFQ6LAh0+VoIwbFW1GGamhCgfUE5NbgMKtQYLc0a1gjsyR3E2IYwMFASDYDJvtRRWFIJ1TMq1ElqCICpetQoBEoInVCsAhhI2XhyEPUgIIG7waALlwAloCAMBACH5BAkKAAIALAEAAQAOAA4AAAeDgAKCEmBYYRVKJAaCjAcrVzIzRjVoTw2MKRk5Ww4KECkuWTWCE0Rrl4yCTow7bAupsBcCW19psKkjBEQaFLeMHBwINBy+ggoxVQkPxSMFMXBUMMUQPhRWVUU9tyFRLwQCA048cCcjIyFaJQYxjA8NEVBnAClmahCwEANwbjYBJwyMAgEAIfkECQoABQAsAQABAA4ADgAAB4OABYInO29DbC5QUYKMZiBfbCptTBUmIow4LgJBaTExZkVLFTAFKD8JB4yMQUZrBixUXaqqVFwkUG8Ys4wpQiZOWwy7ghBiRk08HcOqblUTy4wlLWbLBCMFCgBdurMjFMoFE24ADxAXFwwKITEEjD5mH2YBDxI+IdeqHCcGAxgv7IwCAQAh+QQJCgAAACwBAAEADgAOAAAHhYAAglYfTVQJSCITgowDVSAISQJKJgkpjA8LWyIGHBQBJCoZBwAQDU44jIxdTxoSAxEfqqpbFWApUCezjA5LWCJdI7uCClNXGyLCwxBHFl4HBcMAKVxfEx8Y0glZCxwlOCjDUkwPACElAygMghftAB6MClpRJygQFB0EuyMKBQUKDPQxCgQAIfkECQoAAAAsAQABAA4ADgAAB4SAAIIKahstTQ0OVoKMJzYeLVU8W29OXowvBztePh0dUTtxVD0AHDgHEoyMKWVvPj4sBqqqLUoiGDgQs4wBJmNqARe7gjEqXxgPwsMxbWw+UQzDAGY6LjEnusNjFmAEBVbRs00zc1EAHRAKHYw2CHIyO4wEHAwjgmJCZDC7F8psC7IEBQIAIfkECQoARwAsAQABAA4ADgAAB4OAR4IMPgMfNg4PCoKMEA84LCkAMB47GIwxBiUTEAQjKD0REQ9HBD4YIYyMATwtBRQnqaqMG0UOEC8ds4wYIEEQBbuMHC4gMYvCRxw0CAwcF8kBGj8EHdDCJCYiRxfXsw0qCROqRDYQECw3ORkpqjpAQjVGMxYrB7MPC0MyFQItEowCAQAh+QQJCgACACwBAAEADgAOAAAHgIACghcUVhIYEigMgowjEC8nUQ8BOGkojAQxITEdAhcxEh9wPoIMFCOMjBMAKTEXHaipjGldDxcEsqkvUAe5sh1NLb6pHTxNbGK9vlE3DU5ZLsNnIA4GbTVVuQcJdpdnS0Z3LAoxXhF4LjiMMBl5FjptKiZ6ZrJRLUkqbCAwJ4yBACH5BAUKAAEALAEAAQAOAA4AAAd/gAGCARcjHDExHASDjAQdHAoFLy8Ugw2MgiMKWhIKAQ9MYpiCEA8YHQtZCaOCJ14vX2g2rAEKZgMyNRC0BCksFUa7rCMANgIzH7QvZw4tMmO0DlAPUV9hHqNeVTC7G2tkTmkUHA8iSFUGgzZlGSYaNC4gTWqYEzA3SQhVH1aDgQA7)}#ip-geo-block-map{height:400px;margin:1em auto}#ip-geo-block-apis div.nav-tab-wrapper{padding-top:0;margin-bottom:1em}#ip-geo-block-geoinfo{white-space:normal;word-wrap:break-word;word-break:break-all}#ip-geo-block-geoinfo ul{margin-top:0;margin-left:1em}.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{cursor:pointer}svg a:hover>text{fill:#0096dd}svg a>text{fill:#0073aa;text-decoration:underline}table.ip-geo-block-statistics-table{float:right}table.ip-geo-block-statistics-table td,table.ip-geo-block-statistics-table th{width:12em;margin:0;padding:.2em;text-align:right;line-height:1.5em;word-wrap:break-word}table.ip-geo-block-statistics-table tr:nth-child(even){background-color:#eee}table.ip-geo-block-table{margin:1em 0;white-space:normal;word-wrap:break-word;word-break:break-all}table.ip-geo-block-table td:first-child{min-width:4.3em}@media screen and (max-width:782px){#ip-geo-block-whois .panel-body{padding:0 .5em}}#ip-geo-block-scan-code{vertical-align:middle}#ip-geo-block-code-list{display:none;margin-bottom:0}#ip-geo-block-chart-countries{height:200px}#ip-geo-block-chart-daily{height:240px}#ip_geo_block_settings_validation_mimetype+label{padding-top:.25em}#ip_geo_block_settings_validation_mimetype+label+ul{margin-top:.7em}#ip_geo_block_settings_create_user{margin-bottom:.5em}#ip-geo-block-back-to-top a,#ip-geo-block-toggle-sections{box-shadow:none}#ip-geo-block-wp-info textarea{margin-top:.5em;overflow:auto;width:100%;word-wrap:normal;word-break:normal;white-space:pre}#ip-geo-block-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:.4em}.ip-geo-block-icon{position:relative;cursor:pointer;outline:0;box-shadow:none;text-decoration:none;background-color:transparent}.ip-geo-block-icon:active{top:1px}.ip-geo-block-icon span{height:16px;width:16px;margin:0;border:none;display:inline-block;vertical-align:middle;background-size:16px 16px;background-position:center center;background-repeat:no-repeat}.ip-geo-block-icon-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}.ip-geo-block-list-exceptions span.dashicons{font-size:14px}.ip-geo-block-list-exceptions a.ip-geo-block-icon{margin-left:.3em;outline:0;box-shadow:none;text-decoration:none;background-color:transparent}.form-table td p.ip-geo-block-desc,.form-table td p.ip-geo-block-find-desc{color:#666;font-size:13px!important;margin:4px 0 .5em .5em}.ip-geo-block-find-desc{display:none}.ip-geo-block-admin-post{color:#c43322;margin-left:.25em}.ip-geo-block-warn{color:#c43322;font-weight:700}input#ip_geo_block_settings_behavior_time,input#ip_geo_block_settings_behavior_view{width:3.5em}.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.ip-geo-block-dataTable{clear:none!important}table.ip-geo-block-dataTable td,table.ip-geo-block-dataTable th{text-align:right}table.ip-geo-block-dataTable td:nth-child(n+2),table.ip-geo-block-dataTable th:nth-child(n+2){padding-left:0!important}table.ip-geo-block-dataTable th{white-space:nowrap}table.ip-geo-block-dataTable>thead>tr{line-height:1.8em}table.ip-geo-block-dataTable>tbody>tr{cursor:pointer}table.ip-geo-block-dataTable.no-footer,table.ip-geo-block-dataTable>thead>tr>td,table.ip-geo-block-dataTable>thead>tr>th{border-bottom:1px solid #ddd}table.ip-geo-block-dataTable thead td,table.ip-geo-block-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}div[class*=ip-geo-block] .dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #ddd}table.ip-geo-block-dataTable.nowrap td,table.ip-geo-block-dataTable>tbody>tr>td span{white-space:normal!important;word-wrap:break-word!important;word-break:break-all!important}table.ip-geo-block-dataTable>tbody>tr>td span{display:inline-block}.ip-geo-block-settings-folding input[type=checkbox]{margin-right:.5em}table.ip-geo-block-dataTable input[type=checkbox]{max-height:16px;max-width:16px;margin:0}table.ip-geo-block-dataTable>tbody>tr>td:first-child,table.ip-geo-block-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.ip-geo-block-dataTable>tbody>tr>td.dataTables_empty{border:none;text-align:center}table.ip-geo-block-dataTable thead>tr>th:first-child.sorting_asc{background-image:none!important}table.ip-geo-block-dataTable.display tbody tr.even>.sorting_1,table.ip-geo-block-dataTable.display tbody tr.odd>.sorting_1,table.ip-geo-block-dataTable.display tbody tr:hover>.sorting_1{background-color:inherit!important}table.ip-geo-block-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}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{padding-top:.15em;margin:.5em 0 0 .3em;position:relative;display:inline-block}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length:after{content:'';width:6px;height:6px;border:0;border-bottom:solid 2px #999;border-right:solid 2px #999;-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:50%;right:10px;margin-top:-4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length select{padding-top:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:13px!important;line-height:1.4em;width:100%;height:2.05em!important;background:0 0;position:relative;z-index:1;padding:.125em 1.5em .125em .25em;border:1px solid #ddd;border-radius:4px;box-shadow:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length select::-ms-expand{display:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{float:none;text-align:center;margin-bottom:1em;margin-top:0!important}@media screen and (min-width:640px){div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{margin:.5em 0 0 .6em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{position:relative;left:-2.25em}}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover,div[class*=ip-geo-block] .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 0;padding:.25em 0;display:inline-block;text-decoration:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:active>a.paginate_button:first-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:first-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate>a.paginate_button:first-child{border-left-width:1px;border-bottom-left-radius:4px;border-top-left-radius:4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:active>a.paginate_button:last-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:last-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate>a.paginate_button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button{color:#0073aa!important}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover{color:#0096dd!important;background-color:#fff}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate span.ellipsis{cursor:default;color:#999!important;background-color:transparent}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,div[class*=ip-geo-block] .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 .panel-body,#ip-geo-block-4 #ip-geo-block-section-0 .panel-body{padding:0}#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-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.ip-geo-block-dataTable.display tbody tr.ip-geo-block-passed{background-color:#edf6ff!important}table.ip-geo-block-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{padding:0;background:gold}// Gold #ip-geo-block-live-log{margin:0}#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;padding:4px 12px;margin-bottom:0;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;-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:#0073aa;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(0);animation:30s spin-timer linear 30s forwards}@keyframes spin-timer{0%{transform:rotate(0)}100%{transform:rotate(180deg)}}.ip-geo-block-subitem{margin-left:1.7em}.ip-geo-block-subitem:before{content:"\00bb";position:absolute;left:2em}.ip-geo-block-subitem dfn{vertical-align:middle}.ip-geo-block-subitem-parent td,.ip-geo-block-subitem-parent th{padding-top:0}:placeholder-shown{color:#888}::-webkit-input-placeholder{color:#888}:-moz-placeholder{color:#888;opacity:1}::-moz-placeholder{color:#888;opacity:1}:-ms-input-placeholder{color:#888}
|
3 |
* Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
* This software is released under the MIT License.
|
5 |
*/
|
6 |
+
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%}label{display:inline-block;max-width:100%}.panel{border-color:#888;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;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-body:after{clear:both}.ip-geo-block-navi-link{text-align:left}.ip-geo-block-help-link{float:right;font-size:90%;font-weight:400}.ip-geo-block-help-link a{box-shadow:none}fieldset label{vertical-align:text-middle}fieldset input[type=checkbox]{margin:1px 2px 0}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 0}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%}fieldset.ip-geo-block-field input[type=checkbox],fieldset.ip-geo-block-field input[type=radio],p.ip-geo-block-navi-link input[type=checkbox]{margin-right:.4em}input[id*=ip_geo_block_settings_rewrite_]+label{margin-left:.25em}input[id*=ip_geo_block_settings_providers]+label{min-width:7em}.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-note li{text-indent:-1em;padding-left:1em}.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-primary{color:#fff!important;background:#00838f!important;border-color:#00707a!important;text-shadow:none}.ip-geo-block-primary:hover{background-color:#00919e!important;border-color:#00525a!important}ul#ip-geo-block-logs-preset{margin:.25em 0;max-width:600px}ul#ip-geo-block-logs-preset li{float:left;line-height:1.6;margin-right:1em;min-width:160px}#ip-geo-block-live-loading,.ip-geo-block-loading{height:16px;width:16px;background-size:16px 16px;background-position:center center;background-repeat:no-repeat;margin-left:1em;margin-top:.2em;display:inline-block;vertical-align:top}.ip-geo-block-loading{background-image:url(data:image/gif;base64,R0lGODlhEAAQAPYCAKqqqsbGxlZWVsrKyvr6+ubm5tDQ0K6urmZmZmJiYuzs7IaGhvT09JycnLq6us7Ozurq6o6OjtbW1tra2vDw8CgoKCYmJvz8/NLS0kJCQlJSUqysrPLy8vb29pqamra2tm5ubujo6Kampvj4+IiIiMjIyEhISNzc3OLi4rKysj4+PlBQULi4uJKSkmRkZODg4KKiou7u7iQkJB4eHlpaWhISErCwsHh4eMDAwDIyMi4uLqSkpIKCgr6+vt7e3n5+fggICJCQkAwMDEpKSmBgYHZ2dhgYGBYWFnx8fF5eXk5OTiIiIjAwMIyMjISEhDQ0NJaWltTU1AQEBBwcHGpqaoqKiuTk5CoqKlhYWAoKCtjY2Hp6ehAQEJ6ensLCwkxMTJSUlCwsLAYGBnR0dDg4OFxcXLy8vKCgoA4ODsTExMzMzDw8PERERDY2NqioqHJycrS0tGhoaBQUFEZGRjo6OkBAQICAgHBwcFRUVCAgIGxsbP///wAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgACACwAAAAAEAAQAEAHjIACgoOEhYJsbTGGghcPGIJRbFNNhgQKCheDDkllDQYMHSc4MAcvhTB0aFliggQjmYNEFQ6LAh0+VoIwbFW1GGamhCgfUE5NbgMKtQYLc0a1gjsyR3E2IYwMFASDYDJvtRRWFIJ1TMq1ElqCICpetQoBEoInVCsAhhI2XhyEPUgIIG7waALlwAloCAMBACH5BAkKAAIALAEAAQAOAA4AAAeDgAKCEmBYYRVKJAaCjAcrVzIzRjVoTw2MKRk5Ww4KECkuWTWCE0Rrl4yCTow7bAupsBcCW19psKkjBEQaFLeMHBwINBy+ggoxVQkPxSMFMXBUMMUQPhRWVUU9tyFRLwQCA048cCcjIyFaJQYxjA8NEVBnAClmahCwEANwbjYBJwyMAgEAIfkECQoABQAsAQABAA4ADgAAB4OABYInO29DbC5QUYKMZiBfbCptTBUmIow4LgJBaTExZkVLFTAFKD8JB4yMQUZrBixUXaqqVFwkUG8Ys4wpQiZOWwy7ghBiRk08HcOqblUTy4wlLWbLBCMFCgBdurMjFMoFE24ADxAXFwwKITEEjD5mH2YBDxI+IdeqHCcGAxgv7IwCAQAh+QQJCgAAACwBAAEADgAOAAAHhYAAglYfTVQJSCITgowDVSAISQJKJgkpjA8LWyIGHBQBJCoZBwAQDU44jIxdTxoSAxEfqqpbFWApUCezjA5LWCJdI7uCClNXGyLCwxBHFl4HBcMAKVxfEx8Y0glZCxwlOCjDUkwPACElAygMghftAB6MClpRJygQFB0EuyMKBQUKDPQxCgQAIfkECQoAAAAsAQABAA4ADgAAB4SAAIIKahstTQ0OVoKMJzYeLVU8W29OXowvBztePh0dUTtxVD0AHDgHEoyMKWVvPj4sBqqqLUoiGDgQs4wBJmNqARe7gjEqXxgPwsMxbWw+UQzDAGY6LjEnusNjFmAEBVbRs00zc1EAHRAKHYw2CHIyO4wEHAwjgmJCZDC7F8psC7IEBQIAIfkECQoARwAsAQABAA4ADgAAB4OAR4IMPgMfNg4PCoKMEA84LCkAMB47GIwxBiUTEAQjKD0REQ9HBD4YIYyMATwtBRQnqaqMG0UOEC8ds4wYIEEQBbuMHC4gMYvCRxw0CAwcF8kBGj8EHdDCJCYiRxfXsw0qCROqRDYQECw3ORkpqjpAQjVGMxYrB7MPC0MyFQItEowCAQAh+QQJCgACACwBAAEADgAOAAAHgIACghcUVhIYEigMgowjEC8nUQ8BOGkojAQxITEdAhcxEh9wPoIMFCOMjBMAKTEXHaipjGldDxcEsqkvUAe5sh1NLb6pHTxNbGK9vlE3DU5ZLsNnIA4GbTVVuQcJdpdnS0Z3LAoxXhF4LjiMMBl5FjptKiZ6ZrJRLUkqbCAwJ4yBACH5BAUKAAEALAEAAQAOAA4AAAd/gAGCARcjHDExHASDjAQdHAoFLy8Ugw2MgiMKWhIKAQ9MYpiCEA8YHQtZCaOCJ14vX2g2rAEKZgMyNRC0BCksFUa7rCMANgIzH7QvZw4tMmO0DlAPUV9hHqNeVTC7G2tkTmkUHA8iSFUGgzZlGSYaNC4gTWqYEzA3SQhVH1aDgQA7)}#ip-geo-block-map{height:400px;margin:1em auto}#ip-geo-block-apis div.nav-tab-wrapper{padding-top:0;margin-bottom:1em}#ip-geo-block-geoinfo{white-space:normal;word-wrap:break-word;word-break:break-all}#ip-geo-block-geoinfo ul{margin-top:0;margin-left:1em}.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{cursor:pointer}svg a:hover>text{fill:#0096dd}svg a>text{fill:#0073aa;text-decoration:underline}table.ip-geo-block-statistics-table{float:right}table.ip-geo-block-statistics-table td,table.ip-geo-block-statistics-table th{width:12em;margin:0;padding:.2em;text-align:right;line-height:1.5em;word-wrap:break-word}table.ip-geo-block-statistics-table tr:nth-child(even){background-color:#eee}table.ip-geo-block-table{margin:1em 0;white-space:normal;word-wrap:break-word;word-break:break-all}table.ip-geo-block-table td:first-child{min-width:4.3em}@media screen and (max-width:782px){#ip-geo-block-whois .panel-body{padding:0 .5em}}#ip-geo-block-scan-code{vertical-align:middle}#ip-geo-block-code-list{display:none;margin-bottom:0}#ip-geo-block-chart-countries{height:200px}#ip-geo-block-chart-daily{height:240px}#ip_geo_block_settings_validation_mimetype+label{padding-top:.25em}#ip_geo_block_settings_validation_mimetype+label+ul{margin-top:.7em}#ip_geo_block_settings_create_user{margin-bottom:.5em}#ip-geo-block-back-to-top a,#ip-geo-block-toggle-sections{box-shadow:none}#ip-geo-block-wp-info textarea{margin-top:.5em;overflow:auto;width:100%;word-wrap:normal;word-break:normal;white-space:pre}#ip-geo-block-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:.4em}.ip-geo-block-icon{position:relative;cursor:pointer;outline:0;box-shadow:none;text-decoration:none;background-color:transparent}.ip-geo-block-icon:active{top:1px}.ip-geo-block-icon span{height:16px;width:16px;margin:0;border:none;display:inline-block;vertical-align:middle;background-size:16px 16px;background-position:center center;background-repeat:no-repeat}.ip-geo-block-icon-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}.ip-geo-block-list-exceptions span.dashicons{font-size:14px}.ip-geo-block-list-exceptions a.ip-geo-block-icon{margin-left:.3em;outline:0;box-shadow:none;text-decoration:none;background-color:transparent}.form-table td p.ip-geo-block-desc,.form-table td p.ip-geo-block-find-desc{color:#666;font-size:13px!important;margin:4px 0 .5em .5em}.ip-geo-block-find-desc{display:none}.ip-geo-block-admin-post{color:#c43322;margin-left:.25em}.ip-geo-block-warn{color:#c43322;font-weight:700}input#ip_geo_block_settings_behavior_time,input#ip_geo_block_settings_behavior_view{width:3.5em}.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.ip-geo-block-dataTable{clear:none!important}table.ip-geo-block-dataTable td,table.ip-geo-block-dataTable th{text-align:right}table.ip-geo-block-dataTable td:nth-child(n+2),table.ip-geo-block-dataTable th:nth-child(n+2){padding-left:0!important}table.ip-geo-block-dataTable th{white-space:nowrap}table.ip-geo-block-dataTable>thead>tr{line-height:1.8em}table.ip-geo-block-dataTable>tbody>tr{cursor:pointer}table.ip-geo-block-dataTable.no-footer,table.ip-geo-block-dataTable>thead>tr>td,table.ip-geo-block-dataTable>thead>tr>th{border-bottom:1px solid #ddd}table.ip-geo-block-dataTable thead td,table.ip-geo-block-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}div[class*=ip-geo-block] .dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #ddd}table.ip-geo-block-dataTable.nowrap td,table.ip-geo-block-dataTable>tbody>tr>td span{white-space:normal!important;word-wrap:break-word!important;word-break:break-all!important}table.ip-geo-block-dataTable>tbody>tr>td span{display:inline-block}.ip-geo-block-settings-folding input[type=checkbox]{margin-right:.5em}table.ip-geo-block-dataTable input[type=checkbox]{max-height:16px;max-width:16px;margin:0}table.ip-geo-block-dataTable>tbody>tr>td:first-child,table.ip-geo-block-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.ip-geo-block-dataTable>tbody>tr>td.dataTables_empty{border:none;text-align:center}table.ip-geo-block-dataTable thead>tr>th:first-child.sorting_asc{background-image:none!important}table.ip-geo-block-dataTable.display tbody tr.even>.sorting_1,table.ip-geo-block-dataTable.display tbody tr.odd>.sorting_1,table.ip-geo-block-dataTable.display tbody tr:hover>.sorting_1{background-color:inherit!important}table.ip-geo-block-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}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{padding-top:.15em;margin:.5em 0 0 .3em;position:relative;display:inline-block}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length:after{content:'';width:6px;height:6px;border:0;border-bottom:solid 2px #999;border-right:solid 2px #999;-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:50%;right:10px;margin-top:-4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length select{padding-top:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:13px!important;line-height:1.4em;width:100%;height:2.05em!important;background:0 0;position:relative;z-index:1;padding:.125em 1.5em .125em .25em;border:1px solid #ddd;border-radius:4px;box-shadow:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length select::-ms-expand{display:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{float:none;text-align:center;margin-bottom:1em;margin-top:0!important}@media screen and (min-width:640px){div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{margin:.5em 0 0 .6em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{position:relative;left:-2.25em}}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover,div[class*=ip-geo-block] .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 0;padding:.25em 0;display:inline-block;text-decoration:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:active>a.paginate_button:first-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:first-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate>a.paginate_button:first-child{border-left-width:1px;border-bottom-left-radius:4px;border-top-left-radius:4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:active>a.paginate_button:last-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:last-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate>a.paginate_button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button{color:#0073aa!important}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover{color:#0096dd!important;background-color:#fff}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate span.ellipsis{cursor:default;color:#999!important;background-color:transparent}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,div[class*=ip-geo-block] .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 .panel-body,#ip-geo-block-4 #ip-geo-block-section-0 .panel-body{padding:0}#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-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.ip-geo-block-dataTable.display tbody tr.ip-geo-block-passed{background-color:#edf6ff!important}table.ip-geo-block-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{padding:0;background:gold}// Gold #ip-geo-block-live-log{margin:0}#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;padding:4px 12px;margin-bottom:0;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;-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:#0073aa;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(0);animation:30s spin-timer linear 30s forwards}@keyframes spin-timer{0%{transform:rotate(0)}100%{transform:rotate(180deg)}}.ip-geo-block-subitem{margin-left:1.7em}.ip-geo-block-subitem:before{content:"\00bb";position:absolute;left:2em}.ip-geo-block-subitem dfn{vertical-align:middle}.ip-geo-block-subitem-parent td,.ip-geo-block-subitem-parent th{padding-top:0}:placeholder-shown{color:#888}::-webkit-input-placeholder{color:#888}:-moz-placeholder{color:#888;opacity:1}::-moz-placeholder{color:#888;opacity:1}:-ms-input-placeholder{color:#888}
|
admin/css/fonts/icomoon.eot
CHANGED
Binary file
|
admin/css/fonts/icomoon.svg
CHANGED
@@ -10,21 +10,13 @@
|
|
10 |
<glyph unicode="" glyph-name="vpn_lock" d="M426 44.667v84c-46 0-84 38-84 84v44l-206 204c-6-24-8-50-8-76 0-174 130-320 298-340zM808 426.667h86c2-14 2-28 2-42 0-236-190-428-426-428s-428 192-428 428 192 426 428 426c44 0 88-8 128-20v-108c0-46-40-86-86-86h-86v-84c0-24-18-44-42-44h-86v-84h256c24 0 44-20 44-44v-128h42c38 0 70-24 82-58 56 60 88 142 88 230 0 14 0 28-2 42zM904 768.667v20c0 40-32 74-72 74s-72-34-72-74v-20h144zM938 768.667c24 0 44-20 44-44v-170c0-24-20-42-44-42h-212c-24 0-44 18-44 42v170c0 24 20 44 44 44v20c0 58 48 108 106 108s106-50 106-108v-20z" />
|
11 |
<glyph unicode="" 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" />
|
12 |
<glyph unicode="" glyph-name="calculator" d="M102.4 870.4c0 56.32 46.080 102.4 102.4 102.4h614.4c56.554 0 102.4-45.846 102.4-102.4v0-819.2c0-56.554-45.846-102.4-102.4-102.4v0h-614.4c-56.554 0-102.4 45.846-102.4 102.4v0 819.2zM256 819.2v-102.4h512v102.4h-512zM256 614.4v-102.4h102.4v102.4h-102.4zM460.8 614.4v-102.4h102.4v102.4h-102.4zM665.6 614.4v-102.4h102.4v102.4h-102.4zM256 409.6v-102.4h102.4v102.4h-102.4zM460.8 409.6v-102.4h102.4v102.4h-102.4zM665.6 409.6v-307.2h102.4v307.2h-102.4zM256 204.8v-102.4h102.4v102.4h-102.4zM460.8 204.8v-102.4h102.4v102.4h-102.4z" />
|
13 |
-
<glyph unicode="&#
|
14 |
-
<glyph unicode="&#
|
15 |
-
<glyph unicode="&#
|
16 |
-
<glyph unicode="&#
|
17 |
-
<glyph unicode="&#
|
18 |
-
<glyph unicode="&#
|
19 |
-
<glyph unicode="" glyph-name="stats-dots" d="M128 64h896v-128h-1024v1024h128zM288 128c-53.020 0-96 42.98-96 96s42.98 96 96 96c2.828 0 5.622-0.148 8.388-0.386l103.192 171.986c-9.84 15.070-15.58 33.062-15.58 52.402 0 53.020 42.98 96 96 96s96-42.98 96-96c0-19.342-5.74-37.332-15.58-52.402l103.192-171.986c2.766 0.238 5.56 0.386 8.388 0.386 2.136 0 4.248-0.094 6.35-0.23l170.356 298.122c-10.536 15.408-16.706 34.036-16.706 54.11 0 53.020 42.98 96 96 96s96-42.98 96-96c0-53.020-42.98-96-96-96-2.14 0-4.248 0.094-6.35 0.232l-170.356-298.124c10.536-15.406 16.706-34.036 16.706-54.11 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 19.34 5.74 37.332 15.578 52.402l-103.19 171.984c-2.766-0.238-5.56-0.386-8.388-0.386s-5.622 0.146-8.388 0.386l-103.192-171.986c9.84-15.068 15.58-33.060 15.58-52.4 0-53.020-42.98-96-96-96z" />
|
20 |
-
<glyph unicode="" glyph-name="stats-bars" d="M0 128h1024v-128h-1024zM128 384h128v-192h-128zM320 640h128v-448h-128zM512 448h128v-256h-128zM704 832h128v-640h-128z" />
|
21 |
-
<glyph unicode="" glyph-name="stats-bars2" d="M288 576h-192c-17.6 0-32-14.4-32-32v-576c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v576c0 17.6-14.4 32-32 32zM288 0h-192v256h192v-256zM608 704h-192c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v704c0 17.6-14.4 32-32 32zM608 0h-192v320h192v-320zM928 832h-192c-17.6 0-32-14.4-32-32v-832c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v832c0 17.6-14.4 32-32 32zM928 0h-192v384h192v-384z" />
|
22 |
-
<glyph unicode="" glyph-name="switch" d="M640 813.412v-135.958c36.206-15.804 69.5-38.408 98.274-67.18 60.442-60.44 93.726-140.8 93.726-226.274s-33.286-165.834-93.726-226.274c-60.44-60.44-140.798-93.726-226.274-93.726s-165.834 33.286-226.274 93.726c-60.44 60.44-93.726 140.8-93.726 226.274s33.286 165.834 93.726 226.274c28.774 28.774 62.068 51.378 98.274 67.182v135.956c-185.048-55.080-320-226.472-320-429.412 0-247.424 200.578-448 448-448 247.424 0 448 200.576 448 448 0 202.94-134.95 374.332-320 429.412zM448 960h128v-512h-128z" />
|
23 |
-
<glyph unicode="" glyph-name="sphere" d="M480 896c-265.096 0-480-214.904-480-480 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM751.59 256c8.58 40.454 13.996 83.392 15.758 128h127.446c-3.336-44.196-13.624-87.114-30.68-128h-112.524zM208.41 576c-8.58-40.454-13.996-83.392-15.758-128h-127.444c3.336 44.194 13.622 87.114 30.678 128h112.524zM686.036 576c9.614-40.962 15.398-83.854 17.28-128h-191.316v128h174.036zM512 640v187.338c14.59-4.246 29.044-11.37 43.228-21.37 26.582-18.74 52.012-47.608 73.54-83.486 14.882-24.802 27.752-52.416 38.496-82.484h-155.264zM331.232 722.484c21.528 35.878 46.956 64.748 73.54 83.486 14.182 10 28.638 17.124 43.228 21.37v-187.34h-155.264c10.746 30.066 23.616 57.68 38.496 82.484zM448 576v-128h-191.314c1.88 44.146 7.666 87.038 17.278 128h174.036zM95.888 256c-17.056 40.886-27.342 83.804-30.678 128h127.444c1.762-44.608 7.178-87.546 15.758-128h-112.524zM256.686 384h191.314v-128h-174.036c-9.612 40.96-15.398 83.854-17.278 128zM448 192v-187.34c-14.588 4.246-29.044 11.372-43.228 21.37-26.584 18.74-52.014 47.61-73.54 83.486-14.882 24.804-27.75 52.418-38.498 82.484h155.266zM628.768 109.516c-21.528-35.876-46.958-64.746-73.54-83.486-14.184-9.998-28.638-17.124-43.228-21.37v187.34h155.266c-10.746-30.066-23.616-57.68-38.498-82.484zM512 256v128h191.314c-1.88-44.146-7.666-87.040-17.28-128h-174.034zM767.348 448c-1.762 44.608-7.178 87.546-15.758 128h112.524c17.056-40.886 27.344-83.806 30.68-128h-127.446zM830.658 640h-95.9c-18.638 58.762-44.376 110.294-75.316 151.428 42.536-20.34 81.058-47.616 114.714-81.272 21.48-21.478 40.362-44.938 56.502-70.156zM185.844 710.156c33.658 33.658 72.18 60.932 114.714 81.272-30.942-41.134-56.676-92.666-75.316-151.428h-95.898c16.138 25.218 35.022 48.678 56.5 70.156zM129.344 192h95.898c18.64-58.762 44.376-110.294 75.318-151.43-42.536 20.34-81.058 47.616-114.714 81.274-21.48 21.478-40.364 44.938-56.502 70.156zM774.156 121.844c-33.656-33.658-72.18-60.934-114.714-81.274 30.942 41.134 56.678 92.668 75.316 151.43h95.9c-16.14-25.218-35.022-48.678-56.502-70.156z" />
|
24 |
-
<glyph unicode="" glyph-name="earth" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512-0.002c-62.958 0-122.872 13.012-177.23 36.452l233.148 262.29c5.206 5.858 8.082 13.422 8.082 21.26v96c0 17.674-14.326 32-32 32-112.99 0-232.204 117.462-233.374 118.626-6 6.002-14.14 9.374-22.626 9.374h-128c-17.672 0-32-14.328-32-32v-192c0-12.122 6.848-23.202 17.69-28.622l110.31-55.156v-187.886c-116.052 80.956-192 215.432-192 367.664 0 68.714 15.49 133.806 43.138 192h116.862c8.488 0 16.626 3.372 22.628 9.372l128 128c6 6.002 9.372 14.14 9.372 22.628v77.412c40.562 12.074 83.518 18.588 128 18.588 70.406 0 137.004-16.26 196.282-45.2-4.144-3.502-8.176-7.164-12.046-11.036-36.266-36.264-56.236-84.478-56.236-135.764s19.97-99.5 56.236-135.764c36.434-36.432 85.218-56.264 135.634-56.26 3.166 0 6.342 0.080 9.518 0.236 13.814-51.802 38.752-186.656-8.404-372.334-0.444-1.744-0.696-3.488-0.842-5.224-81.324-83.080-194.7-134.656-320.142-134.656z" />
|
25 |
<glyph unicode="" glyph-name="play3" d="M192 832l640-384-640-384z" />
|
26 |
<glyph unicode="" glyph-name="pause2" d="M128 832h320v-768h-320zM576 832h320v-768h-320z" />
|
27 |
<glyph unicode="" glyph-name="stop2" d="M128 832h768v-768h-768z" />
|
28 |
-
<glyph unicode="" glyph-name="eject" d="M0 192h1024v-128h-1024zM512 832l512-512h-1024z" />
|
29 |
-
<glyph unicode="" glyph-name="new-tab" d="M192 896v-768h768v768h-768zM896 192h-640v640h640v-640zM128 64v672l-64 64v-800h800l-64 64h-672zM352 704l160-160-192-192 96-96 192 192 160-160v416z" />
|
30 |
</font></defs></svg>
|
10 |
<glyph unicode="" glyph-name="vpn_lock" d="M426 44.667v84c-46 0-84 38-84 84v44l-206 204c-6-24-8-50-8-76 0-174 130-320 298-340zM808 426.667h86c2-14 2-28 2-42 0-236-190-428-426-428s-428 192-428 428 192 426 428 426c44 0 88-8 128-20v-108c0-46-40-86-86-86h-86v-84c0-24-18-44-42-44h-86v-84h256c24 0 44-20 44-44v-128h42c38 0 70-24 82-58 56 60 88 142 88 230 0 14 0 28-2 42zM904 768.667v20c0 40-32 74-72 74s-72-34-72-74v-20h144zM938 768.667c24 0 44-20 44-44v-170c0-24-20-42-44-42h-212c-24 0-44 18-44 42v170c0 24 20 44 44 44v20c0 58 48 108 106 108s106-50 106-108v-20z" />
|
11 |
<glyph unicode="" 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" />
|
12 |
<glyph unicode="" glyph-name="calculator" d="M102.4 870.4c0 56.32 46.080 102.4 102.4 102.4h614.4c56.554 0 102.4-45.846 102.4-102.4v0-819.2c0-56.554-45.846-102.4-102.4-102.4v0h-614.4c-56.554 0-102.4 45.846-102.4 102.4v0 819.2zM256 819.2v-102.4h512v102.4h-512zM256 614.4v-102.4h102.4v102.4h-102.4zM460.8 614.4v-102.4h102.4v102.4h-102.4zM665.6 614.4v-102.4h102.4v102.4h-102.4zM256 409.6v-102.4h102.4v102.4h-102.4zM460.8 409.6v-102.4h102.4v102.4h-102.4zM665.6 409.6v-307.2h102.4v307.2h-102.4zM256 204.8v-102.4h102.4v102.4h-102.4zM460.8 204.8v-102.4h102.4v102.4h-102.4z" />
|
13 |
+
<glyph unicode="" glyph-name="happy" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM512 361.24c115.95 0 226.23 30.806 320 84.92-14.574-178.438-153.128-318.16-320-318.16-166.868 0-305.422 139.872-320 318.304 93.77-54.112 204.050-85.064 320-85.064zM256 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM640 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96z" />
|
14 |
+
<glyph unicode="" glyph-name="grin2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM704 724c63.962 0 116-52.038 116-116 0-6.378-0.546-12.876-1.628-19.312-1.618-9.632-9.958-16.688-19.724-16.688s-18.108 7.056-19.722 16.69c-6.16 36.684-37.67 53.31-74.926 53.31s-68.766-16.626-74.924-53.31c-1.616-9.632-9.956-16.69-19.722-16.69-0.002 0 0 0-0.002 0-9.766 0-18.106 7.056-19.722 16.688-1.084 6.436-1.63 12.934-1.63 19.312 0 63.962 52.038 116 116 116zM320 724c63.962 0 116-52.038 116-116 0-6.378-0.548-12.876-1.628-19.312-1.618-9.632-9.956-16.688-19.724-16.688s-18.106 7.056-19.722 16.69c-6.16 36.684-37.67 53.31-74.926 53.31s-68.766-16.626-74.924-53.31c-1.616-9.632-9.956-16.69-19.722-16.69 0 0 0 0 0 0-9.766 0-18.106 7.056-19.724 16.688-1.082 6.436-1.63 12.934-1.63 19.312 0 63.962 52.038 116 116 116zM192 384h192v-247.846c-110.094 28.606-192 129.124-192 247.846zM448 128v256h128v-256h-128zM640 136.154v247.846h192c0-118.722-81.904-219.24-192-247.846z" />
|
15 |
+
<glyph unicode="" glyph-name="cool" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM800 704c17.6 0 32-14.4 32-32v-96c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64h-128c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v96c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-32h128v32c0 17.6 14.4 32 32 32h192zM512 192c93.208 0 174.772 49.818 219.546 124.278l54.88-32.934c-55.966-93.070-157.916-155.344-274.426-155.344-48.458 0-94.384 10.796-135.54 30.082l33.162 55.278c31.354-13.714 65.964-21.36 102.378-21.36z" />
|
16 |
+
<glyph unicode="" glyph-name="confused" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM726.106 320h64.864c9.246-72.506-32.452-144.53-103.958-170.56-82.904-30.176-174.9 12.716-205.080 95.616-18.108 49.744-73.306 75.482-123.048 57.372-45.562-16.588-70.956-64.298-60.988-110.424h-64.86c-9.242 72.508 32.45 144.528 103.956 170.56 82.904 30.178 174.902-12.716 205.082-95.614 18.104-49.748 73.306-75.482 123.044-57.372 45.562 16.584 70.956 64.298 60.988 110.422z" />
|
17 |
+
<glyph unicode="" glyph-name="confused2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM687.010 149.44c-82.902-30.18-174.9 12.712-205.080 95.614-18.108 49.742-73.306 75.478-123.048 57.372-45.562-16.588-70.958-64.296-60.988-110.424h-64.86c-9.244 72.508 32.45 144.532 103.956 170.56 82.904 30.18 174.902-12.712 205.082-95.614 18.108-49.742 73.306-75.476 123.046-57.37 45.562 16.584 70.958 64.294 60.988 110.422h64.864c9.24-72.506-32.454-144.532-103.96-170.56z" />
|
18 |
+
<glyph unicode="" glyph-name="crying" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM800 576h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32zM352 576h-128c-17.672 0-32 14.328-32 32s14.328 32 32 32h128c17.672 0 32-14.328 32-32s-14.328-32-32-32zM608 104c-8.19 0-16.378 3.124-22.626 9.374-4.582 4.582-29.42 14.626-73.374 14.626s-68.79-10.044-73.374-14.626c-12.496-12.496-32.758-12.496-45.254 0-12.498 12.496-12.498 32.758 0 45.254 30.122 30.12 92.994 33.372 118.628 33.372 25.632 0 88.506-3.252 118.626-33.374 12.498-12.496 12.498-32.758 0-45.254-6.248-6.248-14.436-9.372-22.626-9.372zM736 384c-17.674 0-32 14.326-32 32v64c0 17.672 14.326 32 32 32s32-14.328 32-32v-64c0-17.674-14.326-32-32-32zM736 192c-17.674 0-32 14.326-32 32v64c0 17.674 14.326 32 32 32s32-14.326 32-32v-64c0-17.674-14.326-32-32-32zM288 384c-17.672 0-32 14.326-32 32v64c0 17.672 14.328 32 32 32s32-14.328 32-32v-64c0-17.674-14.328-32-32-32zM288 192c-17.672 0-32 14.326-32 32v64c0 17.674 14.328 32 32 32s32-14.326 32-32v-64c0-17.674-14.328-32-32-32z" />
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
<glyph unicode="" glyph-name="play3" d="M192 832l640-384-640-384z" />
|
20 |
<glyph unicode="" glyph-name="pause2" d="M128 832h320v-768h-320zM576 832h320v-768h-320z" />
|
21 |
<glyph unicode="" glyph-name="stop2" d="M128 832h768v-768h-768z" />
|
|
|
|
|
22 |
</font></defs></svg>
|
admin/css/fonts/icomoon.ttf
CHANGED
Binary file
|
admin/css/fonts/icomoon.woff
CHANGED
Binary file
|
admin/includes/class-admin-ajax.php
CHANGED
@@ -223,7 +223,7 @@ class IP_Geo_Block_Admin_Ajax {
|
|
223 |
return $ret;
|
224 |
|
225 |
if ( ! is_wp_error( $res = IP_Geo_Block_Logs::restore_live_log( $hook, $settings ) ) )
|
226 |
-
return array( 'data' => self::format_logs( $res ) );
|
227 |
else
|
228 |
return array( 'error' => $res->get_error_message() );
|
229 |
}
|
@@ -347,7 +347,7 @@ endif;
|
|
347 |
HOUR_IN_SECONDS, // Latest 1 hour
|
348 |
DAY_IN_SECONDS, // Latest 24 hours
|
349 |
WEEK_IN_SECONDS, // Latest 1 week
|
350 |
-
30 * DAY_IN_SECONDS // Latest 1 month (MONTH_IN_SECONDS is since WP 4.4+)
|
351 |
);
|
352 |
|
353 |
$i = 0;
|
@@ -600,6 +600,9 @@ endif; // TEST_RESTORE_NETWORK
|
|
600 |
'[mimetype][capability][$]', // 3.0.4
|
601 |
'[Maxmind][use_asn]', // 3.0.4
|
602 |
'[live_update][in_memory]', // 3.0.5
|
|
|
|
|
|
|
603 |
);
|
604 |
$json = array();
|
605 |
$prfx = IP_Geo_Block::OPTION_NAME;
|
@@ -814,7 +817,7 @@ endif; // TEST_RESTORE_NETWORK
|
|
814 |
public static function get_wp_info() {
|
815 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
|
816 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
817 |
-
$fs = IP_Geo_Block_FS::init(
|
818 |
|
819 |
// DNS reverse lookup
|
820 |
$key = microtime( TRUE );
|
@@ -833,9 +836,11 @@ endif; // TEST_RESTORE_NETWORK
|
|
833 |
@ini_set( 'error_log', $log );
|
834 |
@error_reporting( $err );
|
835 |
|
836 |
-
// Proces owner
|
|
|
837 |
// https://secure.php.net/manual/function.get-current-user.php#57624
|
838 |
// https://secure.php.net/manual/function.posix-getpwuid.php#82387
|
|
|
839 |
$usr = function_exists( 'posix_getpwuid' ) ? posix_getpwuid( posix_geteuid() ) : array( 'name' => getenv( 'USERNAME' ) );
|
840 |
|
841 |
// Server, PHP, WordPress
|
@@ -844,6 +849,8 @@ endif; // TEST_RESTORE_NETWORK
|
|
844 |
'MySQL:' => $ver . ( defined( 'IP_GEO_BLOCK_DEBUG' ) && IP_GEO_BLOCK_DEBUG && $bem ? ' (' . $bem . ')' : '' ),
|
845 |
'PHP:' => PHP_VERSION,
|
846 |
'PHP SAPI:' => php_sapi_name(),
|
|
|
|
|
847 |
'WordPress:' => $GLOBALS['wp_version'],
|
848 |
'Multisite:' => is_multisite() ? 'yes' : 'no',
|
849 |
'File system:' => $fs->get_method(),
|
@@ -879,9 +886,7 @@ endif; // TEST_RESTORE_NETWORK
|
|
879 |
|
880 |
foreach ( $installed as $key => $val ) {
|
881 |
if ( isset( $activated[ $key ] ) ) {
|
882 |
-
$res += array(
|
883 |
-
esc_html( $val['Name'] ) => esc_html( $val['Version'] )
|
884 |
-
);
|
885 |
}
|
886 |
}
|
887 |
|
@@ -896,8 +901,7 @@ endif; // TEST_RESTORE_NETWORK
|
|
896 |
// add post data
|
897 |
$query = array();
|
898 |
foreach ( explode( ',', $val['data'] ) as $str ) {
|
899 |
-
|
900 |
-
$query[] = $str;
|
901 |
}
|
902 |
|
903 |
if ( ! empty( $query ) )
|
223 |
return $ret;
|
224 |
|
225 |
if ( ! is_wp_error( $res = IP_Geo_Block_Logs::restore_live_log( $hook, $settings ) ) )
|
226 |
+
return array( 'data' => self::format_logs( apply_filters( IP_Geo_Block::PLUGIN_NAME . '-logs', $res ) ) );
|
227 |
else
|
228 |
return array( 'error' => $res->get_error_message() );
|
229 |
}
|
347 |
HOUR_IN_SECONDS, // Latest 1 hour
|
348 |
DAY_IN_SECONDS, // Latest 24 hours
|
349 |
WEEK_IN_SECONDS, // Latest 1 week
|
350 |
+
30 * DAY_IN_SECONDS // Latest 1 month (MONTH_IN_SECONDS is since WP 4.4+)
|
351 |
);
|
352 |
|
353 |
$i = 0;
|
600 |
'[mimetype][capability][$]', // 3.0.4
|
601 |
'[Maxmind][use_asn]', // 3.0.4
|
602 |
'[live_update][in_memory]', // 3.0.5
|
603 |
+
'[monitor][metadata]', // 3.0.17
|
604 |
+
'[metadata][pre_update_option][$]', // 3.0.17
|
605 |
+
'[metadata][pre_update_site_option][$]', // 3.0.17
|
606 |
);
|
607 |
$json = array();
|
608 |
$prfx = IP_Geo_Block::OPTION_NAME;
|
817 |
public static function get_wp_info() {
|
818 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-lkup.php';
|
819 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
820 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
821 |
|
822 |
// DNS reverse lookup
|
823 |
$key = microtime( TRUE );
|
836 |
@ini_set( 'error_log', $log );
|
837 |
@error_reporting( $err );
|
838 |
|
839 |
+
// Human readable size, Proces owner
|
840 |
+
// https://gist.github.com/mehdichaouch/341a151dd5f469002a021c9396aa2615
|
841 |
// https://secure.php.net/manual/function.get-current-user.php#57624
|
842 |
// https://secure.php.net/manual/function.posix-getpwuid.php#82387
|
843 |
+
$siz = array( 'B', 'K', 'M', 'G', 'T', 'P' );
|
844 |
$usr = function_exists( 'posix_getpwuid' ) ? posix_getpwuid( posix_geteuid() ) : array( 'name' => getenv( 'USERNAME' ) );
|
845 |
|
846 |
// Server, PHP, WordPress
|
849 |
'MySQL:' => $ver . ( defined( 'IP_GEO_BLOCK_DEBUG' ) && IP_GEO_BLOCK_DEBUG && $bem ? ' (' . $bem . ')' : '' ),
|
850 |
'PHP:' => PHP_VERSION,
|
851 |
'PHP SAPI:' => php_sapi_name(),
|
852 |
+
'Memory limit:' => ini_get( 'memory_limit' ),
|
853 |
+
'Peak usage:' => @round( ( $m = memory_get_peak_usage() ) / pow( 1024, ( $i = floor( log( $m, 1024 ) ) ) ), 2 ) . $siz[ $i ],
|
854 |
'WordPress:' => $GLOBALS['wp_version'],
|
855 |
'Multisite:' => is_multisite() ? 'yes' : 'no',
|
856 |
'File system:' => $fs->get_method(),
|
886 |
|
887 |
foreach ( $installed as $key => $val ) {
|
888 |
if ( isset( $activated[ $key ] ) ) {
|
889 |
+
$res += array( esc_html( $val['Name'] ) => esc_html( $val['Version'] ) );
|
|
|
|
|
890 |
}
|
891 |
}
|
892 |
|
901 |
// add post data
|
902 |
$query = array();
|
903 |
foreach ( explode( ',', $val['data'] ) as $str ) {
|
904 |
+
FALSE !== strpos( $str, '=' ) and $query[] = $str;
|
|
|
905 |
}
|
906 |
|
907 |
if ( ! empty( $query ) )
|
admin/includes/class-admin-rewrite.php
CHANGED
@@ -155,7 +155,7 @@ class IP_Geo_Block_Admin_Rewrite {
|
|
155 |
*/
|
156 |
private function get_rewrite_rule( $which ) {
|
157 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
158 |
-
$fs = IP_Geo_Block_FS::init(
|
159 |
|
160 |
// check the existence of configuration file
|
161 |
$file = $this->get_rewrite_file( $which );
|
@@ -185,7 +185,7 @@ class IP_Geo_Block_Admin_Rewrite {
|
|
185 |
*/
|
186 |
private function put_rewrite_rule( $which, $content ) {
|
187 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
188 |
-
$fs = IP_Geo_Block_FS::init(
|
189 |
|
190 |
$file = $this->get_rewrite_file( $which );
|
191 |
|
@@ -285,7 +285,7 @@ class IP_Geo_Block_Admin_Rewrite {
|
|
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(
|
289 |
|
290 |
$dir = dirname( IP_GEO_BLOCK_PATH ); // `/wp-content/plugins`
|
291 |
$ini = $this->config_file;
|
155 |
*/
|
156 |
private function get_rewrite_rule( $which ) {
|
157 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
158 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
159 |
|
160 |
// check the existence of configuration file
|
161 |
$file = $this->get_rewrite_file( $which );
|
185 |
*/
|
186 |
private function put_rewrite_rule( $which, $content ) {
|
187 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
188 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
189 |
|
190 |
$file = $this->get_rewrite_file( $which );
|
191 |
|
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( __FUNCTION__ );
|
289 |
|
290 |
$dir = dirname( IP_GEO_BLOCK_PATH ); // `/wp-content/plugins`
|
291 |
$ini = $this->config_file;
|
admin/includes/tab-accesslog.php
CHANGED
@@ -97,11 +97,19 @@ endif; // extension_loaded( 'pdo_sqlite' )
|
|
97 |
);
|
98 |
|
99 |
// Preset filters
|
100 |
-
$filters = apply_filters( $plugin_slug . '-logs-preset', array() );
|
101 |
if ( ! empty( $filters ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
$html = '<ul id="ip-geo-block-logs-preset">';
|
103 |
foreach ( $filters as $filter ) {
|
104 |
-
$html .= '<li><a href="#!" data-value="' . esc_attr( $filter['value'] ) . '">' .
|
105 |
}
|
106 |
|
107 |
add_settings_field(
|
97 |
);
|
98 |
|
99 |
// Preset filters
|
100 |
+
$filters = has_filter( $plugin_slug . '-logs-preset' ) ? apply_filters( $plugin_slug . '-logs-preset', array() ) : $context->preset_filters();
|
101 |
if ( ! empty( $filters ) ) {
|
102 |
+
// allowed tags and attributes
|
103 |
+
$allow_tags = array(
|
104 |
+
'span' => array(
|
105 |
+
'class' => 1,
|
106 |
+
'title' => 1,
|
107 |
+
)
|
108 |
+
);
|
109 |
+
|
110 |
$html = '<ul id="ip-geo-block-logs-preset">';
|
111 |
foreach ( $filters as $filter ) {
|
112 |
+
$html .= '<li><a href="#!" data-value="' . esc_attr( $filter['value'] ) . '">' . IP_Geo_Block_Util::kses( $filter['title'], $allow_tags ) . '</a></li>';
|
113 |
}
|
114 |
|
115 |
add_settings_field(
|
admin/includes/tab-geolocation.php
CHANGED
@@ -23,8 +23,8 @@ class IP_Geo_Block_Admin_Tab {
|
|
23 |
$list = array();
|
24 |
$providers = IP_Geo_Block_Provider::get_providers( 'key' );
|
25 |
foreach ( $providers as $provider => $key ) {
|
26 |
-
if ( ! is_string( $key ) ||
|
27 |
-
|
28 |
$list += array( $provider => $provider );
|
29 |
}
|
30 |
}
|
23 |
$list = array();
|
24 |
$providers = IP_Geo_Block_Provider::get_providers( 'key' );
|
25 |
foreach ( $providers as $provider => $key ) {
|
26 |
+
if ( ! is_string( $key ) || // provider that does not need api key
|
27 |
+
! empty( $options['providers'][ $provider ] ) ) { // provider that has api key
|
28 |
$list += array( $provider => $provider );
|
29 |
}
|
30 |
}
|
admin/includes/tab-settings.php
CHANGED
@@ -309,6 +309,28 @@ endif;
|
|
309 |
)
|
310 |
);
|
311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
// Response code (RFC 2616)
|
313 |
add_settings_field(
|
314 |
$option_name.'_response_code',
|
@@ -535,8 +557,8 @@ endif;
|
|
535 |
);
|
536 |
|
537 |
$desc = array(
|
538 |
-
1 => __( 'It will block a request related to the services for both
|
539 |
-
2 => __( 'Regardless of the country code, it will block a malicious request related to the services only for
|
540 |
);
|
541 |
|
542 |
// Max failed login attempts per IP address
|
@@ -1470,7 +1492,7 @@ endif;
|
|
1470 |
NULL,
|
1471 |
$option_slug
|
1472 |
);
|
1473 |
-
|
1474 |
// @see https://vedovini.net/2015/10/using-the-wordpress-settings-api-with-network-admin-pages/
|
1475 |
if ( $context->is_network_admin() ) {
|
1476 |
add_action( 'network_admin_edit_' . IP_Geo_Block::PLUGIN_NAME, array( $context, 'validate_network_settings' ) );
|
@@ -1491,7 +1513,7 @@ if ( IP_GEO_BLOCK_NETWORK && FALSE ):
|
|
1491 |
)
|
1492 |
);
|
1493 |
}
|
1494 |
-
|
1495 |
// Emergency login link
|
1496 |
$key = IP_Geo_Block_Util::get_link();
|
1497 |
add_settings_field(
|
309 |
)
|
310 |
);
|
311 |
|
312 |
+
if ( defined( 'IP_GEO_BLOCK_DEBUG' ) && IP_GEO_BLOCK_DEBUG ):
|
313 |
+
// Prevent metadata alteration
|
314 |
+
$list = '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup" style="margin-top:0.4em">' . __( '<dfn title="Specify the table names to be verified for single site. This verification will be skipped if empty.">pre_update_option</dfn>', 'ip-geo-block' ) . "\n";
|
315 |
+
$list .= '<li class="ip-geo-block-hide"><ul><li><input type="text" id="ip_geo_block_settings_metadata_pre_update_option" name="ip_geo_block_settings[metadata][pre_update_option]" class="regular-text code" value="' . esc_attr( implode( ',', $options['metadata']['pre_update_option'] ) ) . '" />' . $common[0] . '</li></ul></li></ul>' . "\n";
|
316 |
+
$list .= '<ul class="ip-geo-block-settings-folding ip-geo-block-dropup">' . __( '<dfn title="Specify the table names to be verified for multisite. This verification will be skipped if empty.">pre_update_site_option</dfn>', 'ip-geo-block' ) . "\n";
|
317 |
+
$list .= '<li class="ip-geo-block-hide"><ul><li><input type="text" id="ip_geo_block_settings_metadata_pre_update_site_option" name="ip_geo_block_settings[metadata][pre_update_site_option]" class="regular-text code" value="' . esc_attr( implode( ',', $options['metadata']['pre_update_site_option'] ) ) . '" />' . $common[0] . '</li></ul></li></ul>' . "\n";
|
318 |
+
|
319 |
+
add_settings_field(
|
320 |
+
$option_name.'_metadata',
|
321 |
+
__( '<dfn title="It prevents to manipulate metadata in database without admin privilege.">Prevent metadata alteration</dfn>', 'ip-geo-block' ),
|
322 |
+
array( $context, 'callback_field' ),
|
323 |
+
$option_slug,
|
324 |
+
$section,
|
325 |
+
array(
|
326 |
+
'type' => 'html',
|
327 |
+
'option' => $option_name,
|
328 |
+
'field' => 'metadata',
|
329 |
+
'value' => $list,
|
330 |
+
)
|
331 |
+
);
|
332 |
+
endif;
|
333 |
+
|
334 |
// Response code (RFC 2616)
|
335 |
add_settings_field(
|
336 |
$option_name.'_response_code',
|
557 |
);
|
558 |
|
559 |
$desc = array(
|
560 |
+
1 => __( 'It will block a request related to the services for both “non-logged in user” and “logged-in user”.', 'ip-geo-block' ),
|
561 |
+
2 => __( 'Regardless of the country code, it will block a malicious request related to the services only for “logged-in user”.', 'ip-geo-block' ),
|
562 |
);
|
563 |
|
564 |
// Max failed login attempts per IP address
|
1492 |
NULL,
|
1493 |
$option_slug
|
1494 |
);
|
1495 |
+
|
1496 |
// @see https://vedovini.net/2015/10/using-the-wordpress-settings-api-with-network-admin-pages/
|
1497 |
if ( $context->is_network_admin() ) {
|
1498 |
add_action( 'network_admin_edit_' . IP_Geo_Block::PLUGIN_NAME, array( $context, 'validate_network_settings' ) );
|
1513 |
)
|
1514 |
);
|
1515 |
}
|
1516 |
+
|
1517 |
// Emergency login link
|
1518 |
$key = IP_Geo_Block_Util::get_link();
|
1519 |
add_settings_field(
|
admin/js/admin.js
CHANGED
@@ -94,7 +94,12 @@
|
|
94 |
request.action = ip_geo_block.action;
|
95 |
request.nonce = ip_geo_block.nonce;
|
96 |
|
97 |
-
$.
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
.done(function (data/*, textStatus, jqXHR*/) {
|
100 |
if (callback) {
|
@@ -461,7 +466,7 @@
|
|
461 |
if (chart.dataStacked[id] === undefined) {
|
462 |
data = $.parseJSON($id.attr('data-' + id));
|
463 |
if (data) {
|
464 |
-
data.unshift(['site', 'comment', 'xmlrpc', 'login', 'admin', '
|
465 |
chart.dataStacked[id] = window.google.visualization.arrayToDataTable(data);
|
466 |
}
|
467 |
}
|
@@ -482,8 +487,8 @@
|
|
482 |
|
483 |
for (i = 0; i < n; i++) {
|
484 |
info.push({
|
485 |
-
label: data.getValue(i, 0)
|
486 |
-
link: data.getValue(i, 6)
|
487 |
});
|
488 |
}
|
489 |
|
@@ -1722,9 +1727,9 @@
|
|
1722 |
timer_pause = null;
|
1723 |
}
|
1724 |
},
|
1725 |
-
live_start = function () {
|
1726 |
clear_timer();
|
1727 |
-
ajax_post('live-loading', {
|
1728 |
cmd: 'live-start'
|
1729 |
}, function (res) {
|
1730 |
if (res.error) {
|
@@ -1737,11 +1742,14 @@
|
|
1737 |
}
|
1738 |
table.draw(false); // the current page will still be shown.
|
1739 |
}
|
1740 |
-
|
|
|
|
|
|
|
1741 |
});
|
1742 |
},
|
1743 |
live_stop = function (cmd, callback) {
|
1744 |
-
|
1745 |
ajax_post(null, {
|
1746 |
cmd: cmd || 'live-stop',
|
1747 |
callback: callback
|
@@ -1751,8 +1759,8 @@
|
|
1751 |
live_stop('live-pause', function () {
|
1752 |
$timer_pause.addClass(ID('live-timer'));
|
1753 |
timer_pause = window.setTimeout(function () {
|
1754 |
-
clear_timer();
|
1755 |
$(ID('#', 'live-log-stop')).prop('checked', true);
|
|
|
1756 |
}, ip_geo_block.timeout * 1000);
|
1757 |
});
|
1758 |
},
|
94 |
request.action = ip_geo_block.action;
|
95 |
request.nonce = ip_geo_block.nonce;
|
96 |
|
97 |
+
$.ajax({
|
98 |
+
type: 'POST',
|
99 |
+
url: ip_geo_block.url,
|
100 |
+
data: request,
|
101 |
+
dataType: 'json'
|
102 |
+
})
|
103 |
|
104 |
.done(function (data/*, textStatus, jqXHR*/) {
|
105 |
if (callback) {
|
466 |
if (chart.dataStacked[id] === undefined) {
|
467 |
data = $.parseJSON($id.attr('data-' + id));
|
468 |
if (data) {
|
469 |
+
data.unshift(['site', 'comment', 'xmlrpc', 'login', 'admin', 'public', { role: 'link' } ]);
|
470 |
chart.dataStacked[id] = window.google.visualization.arrayToDataTable(data);
|
471 |
}
|
472 |
}
|
487 |
|
488 |
for (i = 0; i < n; i++) {
|
489 |
info.push({
|
490 |
+
label: /*escapeHTML(*/data.getValue(i, 0)/*)*/,
|
491 |
+
link: /*escapeHTML(*/data.getValue(i, 6)/*)*/
|
492 |
});
|
493 |
}
|
494 |
|
1727 |
timer_pause = null;
|
1728 |
}
|
1729 |
},
|
1730 |
+
live_start = function (cmd) {
|
1731 |
clear_timer();
|
1732 |
+
ajax_post(cmd === undefined ? 'live-loading' : null, {
|
1733 |
cmd: 'live-start'
|
1734 |
}, function (res) {
|
1735 |
if (res.error) {
|
1742 |
}
|
1743 |
table.draw(false); // the current page will still be shown.
|
1744 |
}
|
1745 |
+
if (cmd === undefined) {
|
1746 |
+
// keep updating
|
1747 |
+
timer_start = window.setTimeout(live_start, ip_geo_block.interval * 1000);
|
1748 |
+
}
|
1749 |
});
|
1750 |
},
|
1751 |
live_stop = function (cmd, callback) {
|
1752 |
+
live_start(false); // once read out the buffer
|
1753 |
ajax_post(null, {
|
1754 |
cmd: cmd || 'live-stop',
|
1755 |
callback: callback
|
1759 |
live_stop('live-pause', function () {
|
1760 |
$timer_pause.addClass(ID('live-timer'));
|
1761 |
timer_pause = window.setTimeout(function () {
|
|
|
1762 |
$(ID('#', 'live-log-stop')).prop('checked', true);
|
1763 |
+
live_stop();
|
1764 |
}, ip_geo_block.timeout * 1000);
|
1765 |
});
|
1766 |
},
|
admin/js/admin.min.js
CHANGED
@@ -3,4 +3,4 @@
|
|
3 |
* Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
* This software is released under the MIT License.
|
5 |
*/
|
6 |
-
!function(e,t,n,i){var a=!1,o=[],r=e(t).width(),l=IP_GEO_BLOCK,c=IP_GEO_BLOCK_AUTH;function s(e,t){var n={".":".ip-geo-block-","#":"#ip-geo-block-","@":"#ip_geo_block_settings_",$:"ip-geo-block-","%":"ip_geo_block_","!":"ip_geo_block_settings_"};return t!==i?n[e]+t:n.$+e}function d(e){return e?function(e){return e.toString().replace(/[&<>"']/g,function(e){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[e]}).replace(/&(#\d{2,4}|\w{4,7});/g,"&$1;")}(e.toString().replace(/(<([^>]+)>)/gi,"")):""}function u(n,a){var l=e(t).width();l!==r&&(r=l,o[n]===i&&(o[n]={id:!1,callback:a}),e(t).off("resize").on("resize",function(){return!1!==o[n].id&&t.clearTimeout(o[n].id),o[n].time=t.setTimeout(o[n].callback,200),!1}))}function p(t,n){n?e(s("#",t)).addClass(s("loading")):e(s("#",t)).removeClass(s("loading"))}function h(e,n){t.confirm(d(e))&&n()}function f(e,n,i){t.alert(d(n||l.msg[11].replace("%s",i)+" ("+e+")"))}function g(){f(null,d(l.msg[9]))}function m(e,n){-1!==t.location.href.indexOf(e)&&(t.location=d(e)+(n?"&"+d(n):"")+"&"+(c.key?c.key+"="+c.nonce:""))}function v(t,n,i,o){t&&p(t,!0),n.action=l.action,n.nonce=l.nonce,e.post(l.url,n).done(function(e){i&&i(e)}).fail(function(e){a||f(e.status,e.responseText,n.action)}).always(function(){t&&("object"==typeof o?e.when.apply(e,o).then(function(){p(t,!1)}):p(t,!1))})}function b(e,t){v(e,{cmd:"clear-"+e,which:t},function(e){m(e.page,e.tab)})}function k(e){return e.stopImmediatePropagation(),!1}function w(e,t){t?e.removeClass("folding-disable"):(e.children(s(".","hide")).hide(),e.addClass("folding-disable"),e.removeClass(s("dropdown")).addClass(s("dropup")))}function x(t,n,i){var a=t.prop("type")||"",o=0===a.indexOf("checkbox")&&t.is(":checked")||0===a.indexOf("select")&&"0"!==t.val();t.siblings('input[name^="'+s("%","settings")+'"]:checkbox').prop("disabled",!o),e.isArray(n)?e.each(n,function(t,n){e(n).nextAll(s(".","settings-folding")).each(function(n,a){w(e(a),o&&i[t])})}):n.nextAll(s(".","settings-folding")).each(function(t,n){w(e(n),o&&i)})}function y(t){var n=s("@","validation_ajax_");w(t.closest("ul").next(),e(n+"1").is(":checked")||e(n+"2").is(":checked"))}function _(e){return String(e).replace(/[a-z]/gi,function(e){return String.fromCharCode(e.charCodeAt(0)+(e.toLowerCase()<"n"?13:-13))})}function C(e){return function(e){return t.btoa(e)}(_(e))}function P(e){return _(function(e){return t.atob(e)}(e))}function S(t){var n=t.is(":checked"),i=e(s("@","public_target_rule")),a=e(s("@","public_behavior")),o=t.closest("tr").nextAll("tr");o.find('[name^="'+s("%","settings")+'"]').prop("disabled",!n),o.find(s(".","desc")).css("opacity",n?1:.5),x(t,[i,a],["1"===i.val(),a.val()]),n&&a.change()}function A(t,n){t&&("string"==typeof t&&(t=JSON.parse(t)),n&&(e('input[type="checkbox"]').prop("checked",!1).change(),e("input[name*=providers]").prop("disabled",!1).change()),e(s("#","import")).closest("form").deserialize(t),e(s("@","exception_admin")+","+s("@","validation_mimetype")).change(),e('select[name*="'+s("%","settings")+'"]').change(),e(s("@","validation_login")).change(),S(e(s("@","validation_public"))),y(e(s("@","validation_ajax_1"))),n&&(n=s("%","settings[providers][IPInfoDB]"),e(s("@","providers_IPInfoDB")).prop("checked",!!t[n])))}e.fn.deserialize=function(t){return this.each(function(){var n,i,a,o=this,r={};for(n in t)if(t.hasOwnProperty(n))try{i=d(decodeURIComponent(n)),a=d(decodeURIComponent(t[n])),r.hasOwnProperty(i)||(r[i]=[]),r[i].push(a)}catch(e){}e.each(r,function(t,i){"hidden"!==(n=e('[name="'+t+'"]:input',o).val(i)).attr("type")&&n.before('<span style="color:red">*</span>')})})};var O={dataPie:[],viewPie:[],drawPie:function(a){var o,r;O.dataPie[a]===i&&((o=O.dataPie[a]=new t.google.visualization.DataTable).addColumn("string","Country"),o.addColumn("number","Requests"),r=e.parseJSON(e("#"+a).attr("data-"+a)),O.dataPie[a].addRows(r)),O.viewPie[a]===i&&(O.viewPie[a]=new t.google.visualization.PieChart(n.getElementById(a))),O.dataPie[a]!==i&&O.viewPie[a]!==i&&0<(o=e("#"+a).width())&&O.viewPie[a].draw(O.dataPie[a],{backgroundColor:{fill:"transparent"},chartArea:{left:0,top:"5%",width:"100%",height:"90%"},sliceVisibilityThreshold:.015})},dataLine:[],viewLine:[],drawLine:function(a,o){var r,l,c;if(O.dataLine[a]===i){for((r=O.dataLine[a]=new t.google.visualization.DataTable).addColumn(o,"Date"),r.addColumn("number","comment"),r.addColumn("number","xmlrpc"),r.addColumn("number","login"),r.addColumn("number","admin"),r.addColumn("number","public"),l=(c=e.parseJSON(e("#"+a).attr("data-"+a))).length,r=0;r<l;++r)c[r][0]=new Date(1e3*c[r][0]);O.dataLine[a].addRows(c)}O.viewLine[a]===i&&(O.viewLine[a]=new t.google.visualization.LineChart(n.getElementById(a))),O.dataLine[a]!==i&&O.viewLine[a]!==i&&0<(r=e("#"+a).width())&&O.viewLine[a].draw(O.dataLine[a],{legend:{position:"bottom"},backgroundColor:{fill:"transparent"},hAxis:{format:"MM/dd"+("datetime"===o?" HH:mm":"")},vAxis:{textPosition:r>320?"out":"in"},chartArea:{left:r>320?"10%":0,top:"5%",width:"100%",height:"75%"}})},dataStacked:[],viewStacked:[],drawStacked:function(a){var o,r,l,c,u=e("#"+d(a));O.dataStacked[a]===i&&(l=e.parseJSON(u.attr("data-"+a)))&&(l.unshift(["site","comment","xmlrpc","login","admin","poblic",{role:"link"}]),O.dataStacked[a]=t.google.visualization.arrayToDataTable(l)),O.viewStacked[a]===i&&(O.viewStacked[a]=new t.google.visualization.BarChart(n.getElementById(a)),t.google.visualization.events.addListener(O.viewStacked[a],"animationfinish",function(){var t,i,o,r=[],l=O.dataStacked[a],c=l.getNumberOfRows(),d=e(s("#","open-new")).prop("checked");for(t=0;t<c;t++)r.push({label:l.getValue(t,0),link:l.getValue(t,6)});c="http://www.w3.org/1999/xlink",u.find("text").each(function(e,t){"g"===(o=t.parentNode).tagName.toLowerCase()&&-1!==(e=function(e,t){var n,i=t.length;for(e=e.replace("…",""),n=0;n<i;++n)if(t.hasOwnProperty(n)&&0===t[n].label.indexOf(e))return n;return-1}(t.textContent,r))&&((i=n.createElementNS("http://www.w3.org/2000/svg","a")).setAttributeNS(c,"xlink:href",r[e].link),i.setAttributeNS(c,"title",r[e].label),i.setAttribute("target",d?"_blank":"_self"),i.setAttribute("class","site"),i.appendChild(o.removeChild(t)),o.appendChild(i),r.splice(e,1))})})),0<(r=u.width())&&O.dataStacked[a]!==i&&O.viewStacked[a]!==i&&(o=s("range"),c=e.parseJSON(e("."+o).attr("data-"+o)),o=40*(l=O.dataStacked[a]).getNumberOfRows(),O.viewStacked[a].draw(l,{width:r,height:o+80,allowHtml:!0,isStacked:!0,legend:{position:"top"},chartArea:{top:50,left:90,width:"100%",height:o},hAxis:{minValue:0,maxValue:c[1]},backgroundColor:{fill:"transparent"},animation:{startup:!0,duration:200,easing:"out"}}))},ajaxStacked:function(t,n,a,o){v(null,{cmd:"restore-network",which:t=Math.max(0,Math.min(4,t)),offset:(n=5*Math.max(1,Math.min(5,n)))*a*o,length:n},function(t){var a,o,r,l,c;t=function(e,t){var n,i,a=Math.ceil(e.length/t),o=[];for(n=0;n<a;++n)i=n*t,o.push(e.slice(i,i+t));return o}(t,n),e(s(".","network")).each(function(s,d){if(t[s]!==i){for(l=e(d).attr("id"),c=O.dataStacked[l],r=Math.min(n,t[s].length),a=0;a<r;++a)for(o=1;o<=5;o++)c.setValue(a,o,t[s][a][o]);O.drawStacked(l)}})})}};function I(n){"object"==typeof t.google&&(1===n?e(s("#","chart-countries")).length&&(O.drawPie(s("chart-countries")),O.drawLine(s("chart-daily"),"date")):5===n&&e(s(".","network")).each(function(t,n){O.drawStacked(e(n).attr("id"))}))}function N(e){if("object"==typeof t.google){var n=["corechart"];5===e&&n.push("bar"),t.google.charts.load("current",{packages:n,callback:function(){I(e)}}),u("draw-chart."+e,function(){I(e)})}}function D(t){var n,a,o=[];e.each(t,function(e,t){if(o[e]="",t!==i&&(a=t.length))for(o[e]=(t[0]||"o").toString(),n=1;n<a;++n)o[e]+=(t[n]||"o").toString()}),wpCookies!==i&&wpCookies.setHash("ip-geo-block",o,new Date(Date.now()+2592e6),c.home+c.admin)}function j(t){var a=function(e){var t,n=wpCookies!==i&&wpCookies.getHash("ip-geo-block")||[];for(t in n)n.hasOwnProperty(t)&&(n[t]=n[t].replace(/[^ox\d]/gi,"").split(""));return n[e]===i&&(n[e]=[]),n}(t);return e(n).on("click","form>h2,h3",function(){return function(e,t,n){var i,a=e.closest("fieldset").data("section"),o=e.parent().nextAll(".panel-body").toggle();e.toggleClass(s("dropup")).toggleClass(s("dropdown")),(i=e.hasClass(s("dropdown")))?o.addClass(s("border")).trigger(s("show-body")):o.removeClass(s("border")),n[t][a]=i?"o":"x",D(n),I(t)}(e(this),t,a),!1}),e(s("#","toggle-sections")).on("click",function(){var n,i=e(s(".","field")).find("h2,h3"),o=[s("dropdown"),s("dropup")],r=i.filter("."+o[0]).length;return i.each(function(i){(n=e(this)).removeClass(o.join(" ")).addClass(r?o[1]:o[0]),n=n.parent().nextAll(".panel-body").toggle(!r),r?n.removeClass(s("border")):n.addClass(s("border")).trigger("show-body"),a[t][i]=r?"x":"o"}),D(a),I(t),!1}),a}function T(t){e("body").append('<div style="display:none"><form method="POST" id="'+s("export-form")+'" action="'+l.url.replace("ajax.php","post.php")+'"><input type="hidden" name="action" value="'+l.action+'" /><input type="hidden" name="nonce" value="'+l.nonce+'" /><input type="hidden" name="cmd" value="'+t+'" /><input type="hidden" name="data" value="" id="'+s("export-data")+'"/><input type="submit" value="submit" /></form><input type="file" name="settings" id="'+s("file-dialog")+'" /></div>')}function L(e,t,n,i){var a,o;return(a=e.cloneNode(!1)).setAttribute("title",d(n)),(o=t.cloneNode(!1)).setAttribute("class","dashicons dashicons-"+i),a.appendChild(o),a}function R(n,a,o,r){var c=Number(r[n][1===n?3:2])||0;c=[10,25,50,100][c],e.extend(!0,e.fn.dataTable.defaults,o,{dom:"tlp",serverSide:!1,autoWidth:!1,processing:!0,deferRender:!0,language:{emptyTable:l.i18n[1],loadingRecords:l.i18n[0],processing:l.i18n[0],zeroRecords:l.i18n[2],lengthMenu:"_MENU_",paginate:{first:"«",last:"»",next:"›",previous:"‹"}},responsive:{details:{type:"column",target:"td:nth-child(n+2)"}},columnDefs:[{width:"1.25em",targets:0},{orderable:!1,targets:0},{searchable:!1,targets:0},{targets:[0],data:null,defaultContent:'<input type="checkbox">'}],pagingType:"full_numbers",lengthMenu:[10,25,50,100],pageLength:c,scroller:!0,scrollY:1e4,scrollCollapse:!0,drawCallback:function(t){var n=e(s("#",a.tableID)).find("td.dataTables_empty"),i="restore-logs"===a.ajaxCMD?3:2;i>t.iDraw?n.html(l.i18n[0]):i===t.iDraw&&(n.html(l.i18n[1]),(n=e(s("@","search_filter"))).val()&&n.trigger("keyup"))}});var d=e(s("#",a.tableID)).DataTable({ajax:{url:l.url,type:"POST",data:{cmd:a.ajaxCMD,action:l.action,nonce:l.nonce}},mark:!0}),p=function(){d.columns.adjust().responsive.recalc().draw(!1)};return u("draw-table."+n,p),e(s("#",a.sectionID)).find(".panel-body").off(s("show-body")).on(s("show-body"),function(){return p(),!1}).off("change").on("change",'th>input[type="checkbox"]',function(){var t=e(this).prop("checked");return e(s("#",a.tableID)).find('td>input[type="checkbox"]').prop("checked",t),!1}),e(s("#","select-target")).off("change").on("change",function(){var t=e(this).find('input[name="'+s("target")+'"]:checked').val();return d.columns(a.targetColumn).search("all"!==t?t:"").draw(),!1}).trigger("change"),e(s("#","bulk-action")).off("click").on("click",function(){var t,o,r=e(this).prev().val(),c=/(<([^>]+)>)/gi,u=/data-hash=[\W]([\w]+)[\W]/i,p={IP:[],AS:[]},h=d.$("input:checked");return!!r&&(h.length?(h.each(function(){o=d.cell(this.parentNode).data(),t=("bulk-action-remove"===r||"bulk-action-ip-erase"===r)&&(t=o[a.columnIP].match(u))?","+t[1]:"",p.IP.push(o[a.columnIP].replace(c,"")+t),p.AS.push(o[a.columnAS].replace(c,""))}),p.IP.length&&v("loading",{cmd:r,which:p},function(t){t.page!==i?m(t.page,"tab="+n):t&&(d.ajax.reload(),e(s("#",a.tableID)).find('th input[type="checkbox"]').prop("checked",!1))}),!1):(f(null,l.msg[10]),!1))}),e(s("@","search_filter")).off("keyup").on("keyup",function(){return d.search(this.value,!1,!0,!/[A-Z]/.test(this.value)).draw(),!1}),e(s("#","reset-filter")).off("click").on("click",function(){return e(s("@","search_filter")).val(""),d.search("").draw(),!1}),e(s("@","clear_all")).off("click").on("click",function(){return h(l.msg[0],function(){b(1===n?"cache":"logs",null)}),!1}),e("table"+s(".","dataTable")+" tbody").on("click","a",function(){var i,a,o=t.location.search.slice(1).split("&"),r=o.length,l={};for(i=0;i<r;++i)l[(a=o[i].split("="))[0]]=a[1];for(i in l.tab=1===n?4:2,l.s=e(this).text().replace(/[^\w\.\:\*]/,""),a=[],l)l.hasOwnProperty(i)&&a.push(i+"="+l[i]);return t.open(t.location.pathname+"?"+a.join("&"),"_blank"),!1}),e(s("#",a.tableID)).on("length.dt",function(e,t,i){r[n][1===n?3:2]={10:0,25:1,50:2,100:3}[i]||0,D(r)}),d}e(function(){var o=Number(l.tab)||0,r=j(o);switch(e(s(".","inhibit")).on("submit",function(){return!1}),e(t).on("beforeunload",function(){a=!0}),o){case 0:var u=s("%","settings");e('[id^="'+s("scan-")+'"]').on("click",function(){var t=e(this),n=t.attr("id"),i=t.parent();return v(n.replace(/^.*(?:scan)/,"scanning"),{cmd:"scan-code",which:n.replace(s("scan-"),"")},function(e){var t,n;for(t in i.children("ul").length||i.append('<ul id="'+s("code-list")+'"></ul>'),i=i.children("ul").empty(),e)e.hasOwnProperty(t)&&("string"==typeof e[t=d(t)]?n=d(e[t]):(n=d(e[t].code),t='<abbr title="'+d(e[t].type)+'">'+t+"</abbr>"),i.append("<li>"+t+' : <span class="'+s("notice")+'">'+n+"</span></li>"));i.show("slow")}),!1}),e(s("@","matching_rule")).on("change",function(){var t=this.value;return e(s("@","white_list")).closest("tr").toggle("0"===t),e(s("@","black_list")).closest("tr").toggle("1"===t),!1}).change(),e(s(".","icon-cidr")).on("click",function(){var n=e(s("#","admin-styles-css")).get(0).href,i=t.open("about:blank","","width=560,height=170");return n=n.slice(0,n.lastIndexOf("css/")),i.document.write('<!DOCTYPE html><html lang=en><meta charset=utf-8><title>CIDR calculator for IPv4 / IPv6</title><link href="'+n+'css/cidr.min.css?v=.1" rel=stylesheet><div class="row container"><div class=row id=i><fieldset class="col span_11"><legend>Range <input id=a type=button value=Clear tabindex=1></legend><textarea id=c name=range placeholder="192.168.0.0 - 192.168.255.255" rows=5 wrap=off tabindex=2></textarea></fieldset><ul class="col span_2" id=h><li class=row><input id=e type=button value=→ class="col span_24" tabindex=3><li class=row><input id=f type=button value=← class="col span_24" tabindex=6></ul><fieldset class="col span_11"><legend>CIDR <input id=b type=button value=Clear tabindex=4></legend><textarea id=d name=cidr placeholder=192.168.0.0/16 rows=5 wrap=off tabindex=5></textarea></fieldset></div><div class=row id=j><span class=col id=g> </span></div></div><script src="'+n+'js/cidr.min.js?v=.1"><\/script>'),i.document.close(),!1}),e(s("@","validation_mimetype")).on("change",function(t){var n=e(this),i=Number(n.val());return n.nextAll(s(".","settings-folding")).each(function(t,n){w(e(n),i===t+1||i&&2===t)}),k(t)}).change(),e('select[name*="response_code"]').on("change",function(t){var n=e(this),i=parseInt(n.val()/100,10),a=n.closest("tr").nextAll("tr");return 0<=n.attr("name").indexOf("public")&&-1===Number(e(s("@","public_matching_rule")).val())?(a.each(function(t){1>=t&&e(this).hide()}),k(t)):(i<=3?a.each(function(t){0===t?e(this).show():1===t&&e(this).hide()}):a.each(function(t){0===t?e(this).hide():1===t&&e(this).show()}),k(t))}).change(),e(s("#","decode")).on("click",function(){var t=e(s("@","signature")),n=t.val();return-1===n.search(/,/)?t.val(P(n)):t.val(C(n)),!1}),e(s("@","validation_login")).on("change",function(t){var n=e(this);return x(n,n,u),k(t)}).change(),v(null,{cmd:"get-actions"},function(t){var i,a,o,r,u=e(s("#","list-admin")),p=n.createElement("li"),h=n.createElement("input"),f=n.createElement("label"),g=n.createElement("dfn"),m=n.createElement("span");for(r in t)t.hasOwnProperty(r)&&(r=d(r),u.find("#"+(o=s("!","exception_admin_"+r))).size()||((i=h.cloneNode(!1)).setAttribute("id",o),i.setAttribute("value",r),i.setAttribute("type","checkbox"),(a=p.cloneNode(!1)).appendChild(i),(i=f.cloneNode(!1)).setAttribute("for",o),i.appendChild(n.createTextNode(r)),a.appendChild(i),1&t[r]&&a.appendChild(L(g,m,l.msg[5],"lock")),2&t[r]&&a.appendChild(L(g,m,l.msg[6],"unlock")),u.append(a)));e(s(".","icon-unlock")).on("click",function(){return e(s("#","list-admin")+">li").filter(function(){return!e(this).find(".dashicons-unlock").length}).toggle(),!1}),e(s("@","exception_admin")).on("change",function(t){var n=e.grep(e(this).val().split(","),function(e){return""!==e.replace(/^\s+|\s+$/g,"")});return e(s("#","list-admin")).find("input").each(function(){var t=e(this),i=t.val();t.prop("checked",-1!==e.inArray(i,n))}),k(t)}).change(),e(s("#","list-admin")).on("click","input",function(){var t,n=e(this),i=e(s("@","exception_admin")),a=n.val(),o=e.grep(i.val().split(","),function(e){return""!==e.replace(/^\s+|\s+$/g,"")});-1===(t=e.inArray(a,o))?o.push(a):o.splice(t,1),i.val(o.join(",")).change()}),e(s(".","icon-find")).on("click",function(){var t,n,i,a,o=e(this),r=[],u=0,p=d(l.msg[8]),h=d(o.data("target"));return e(s("#","find-"+h)).empty(),o.next().children(s(".","find-desc")).show(),(o=e(s("#","list-"+h))).children("li").each(function(t,n){r.push(e(n).find("input").val())}),v("find-"+h,{cmd:"find-"+h},function(f){var g;for(g in f)f.hasOwnProperty(g)&&(++u,t=d(f[g]),g=d(g),n=e.inArray(g,r),i=s("!","exception_"+h+"_"+g),a="admin"===h?t+"="+g:"/"+t+"/"+g+"/",a='<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="'+c.sites[0]+c.admin+"options-general.php?page=ip-geo-block&tab=4&s="+encodeURIComponent(a)+'" title="'+p.replace("%s",a)+'" target="_blank"><span></span></a>',n<0?(r.push(g),o.prepend('<li><input id="'+i+'" value="'+g+'" type="checkbox" '+("admin"===h?"/>":"name=ip_geo_block_settings[exception]["+h+"]["+g+"] />")+'<label for="'+i+'">'+g+"</lable>"+a+"</li>")):(i=o.find("#"+i).parent()).find("a").length||i.append(a));e(s("@","exception_"+h)).trigger("change"),e(s("#","find-"+h)).append(' <span class="ip-geo-block-warn">'+d(l.msg[7].replace("%d",u))+"</span>")}),!1})}),e('input[id^="'+s("!","validation_ajax_")+'"]').on("change",function(){y(e(this))}).change(),e(s("@","validation_public")).on("change",function(t){return S(e(this)),k(t)}).change(),e(s("@","public_matching_rule")).on("change",function(t){var n=this.value;return e(s("@","public_white_list")).closest("tr").toggle("0"===n),e(s("@","public_black_list")).closest("tr").toggle("1"===n),e(s("@","public_response_code")).change().closest("tr").toggle("-1"!==n),k(t)}).change(),e(s("@","public_behavior")).on("change",function(t){var n=e(this);return w(n.siblings("ul"),n.prop("checked")),k(t)}).change(),e(s("@","update")).on("click",function(){return v("download",{cmd:"download"},function(t){var n,i,a;for(n in t)if(t.hasOwnProperty(n))for(i in a=t[n])a.hasOwnProperty(i)&&(a[i=d(i)].filename&&e(s("@",n+"_"+i+"_path")).val(d(a[i].filename)),a[i].message&&e(s("#",n+"-"+i)).text(d(a[i].message)))}),!1}),e(s("@","restrict_api")).on("change",function(){e('input[class*="remote"]').prop("disabled",e(this).prop("checked"))}).trigger("change"),e(s("@","save_statistics")).on("change",function(){return e(s("@","validation_recdays")).prop("disabled",!e(this).prop("checked")),!1}).trigger("change"),e(s("@","validation_reclogs")).on("change",function(){var t=e(this);t.parent().parent().nextAll().find('input[id*="validation"]').prop("disabled",0===Number(t.prop("selectedIndex")))}).trigger("change"),e(s("@","cache_hold")).on("change",function(){var t=e(this).prop("checked");e('input[name*="[cache_time]"]').prop("disabled",!t),e('select[id*="login_fails"]').prop("disabled",!t)}).trigger("change"),e(s("@","comment_pos")).on("change",function(){var t=e(this);t.nextAll('input[type="text"]').prop("disabled",0===Number(t.prop("selectedIndex")))}).trigger("change"),T("validate"),e(s("#","export")).on("click",function(){if(JSON===i)return g(),!1;var t=u,n={};return e.each(e(this).closest("form").serializeArray(),function(e,i){-1!==i.name.indexOf(t)&&(n[i.name]=i.value)}),n[t+="[signature]"]=C(n[t]),e(s("#","export-data")).val(JSON.stringify(n)),e(s("#","export-form")).submit(),!1}),e(s("#","file-dialog")).on("change",function(e){if(t.FileReader===i)return g(),!1;var n,a=e.target.files[0];return a&&function(e,n){var i=new t.FileReader;i.onload=function(e){n&&n(e.target.result)},i.onerror=function(e){f("Error",e.target.error.code)},i.readAsText(e)}(a,function(e){(e=JSON.parse(e))[n=u+"[signature]"]!==i&&(e[n]=C(e[n])),v("export-import",{cmd:"validate",data:JSON.stringify(e)},function(e){A(e,!0)})}),!1}),e(s("#","import")).on("click",function(){return e(s("#","file-dialog")).click(),!1}),e(s("#","default")).on("click",function(){return h(l.msg[0],function(){v("pre-defined",{cmd:"import-default"},function(e){A(e,!0)})}),!1}),e(s("#","preferred")).on("click",function(){return h(l.msg[0],function(){v("pre-defined",{cmd:"import-preferred"},function(e){A(e,!1)})}),!1}),e(s("@","reset_live")).on("click",function(){return v("reset-live",{cmd:"reset-live"}),!1}),e(s("#","login-link")).on("click",function(){var t=e(this),n=s("$","primary");return t.hasClass(n)?v("login-loading",{cmd:"generate-link"},function(i){t.text(l.msg[3]),t.removeClass(n).nextAll(s(".","desc")).remove(),e('<p class="ip-geo-block-desc"></p>').appendTo(t.parent()).append(l.msg[4],'<a href="'+i.link+'" title="'+l.msg[1]+'" target=_blank>'+i.link+"</a></p>")}):h(l.msg[0],function(){v("login-loading",{cmd:"delete-link"},function(){t.text(l.msg[2]),t.addClass(n).nextAll(s(".","desc")).remove()})}),!1}),e(s("@","diag_tables")).on("click",function(){return h(l.msg[0],function(){var e;v(e="diag-tables",{cmd:e},function(e){m(e.page,e.tab)})}),!1}),e(s("#","show-info")).on("click",function(){e(s("#","wp-info")).empty(),v("wp-info",{cmd:"show-info"},function(t){var n,i=[];for(n in t)t.hasOwnProperty(n)&&i.push("- "+n+" "+t[n]);return e(s("#","wp-info")).html('<textarea class="regular-text code" rows="'+i.length+'">'+i.join("\n")+"</textarea>").find("textarea").select(),!1})}),e('select[name^="'+u+'"]').on("change",function(){var t,n,i,a=e(this);return t=a,i=s(".","desc"),t.next(i).empty(),(n=t.children("option:selected").data("desc"))&&t.next(i).html(e.parseHTML(n)),x(a,a,u),!1}).change(),e(s(".","icon-cycle")).on("click",function(){var t,n=e(this).nextAll("li"),i=n.find(s("@","exception_admin")),a=n.find("input:checkbox").filter(":visible"),o=a.filter(":checked").length;return a.prop("checked",!o),i.length&&(o?i.val(""):(t=[],a.each(function(n,i){t.push(e(i).val())}),i.val(t.join(",")))),e(this).blur(),!1}),e(s(".","settings-folding>dfn")).on("click",function(){var t=s("drop"),n=e(this).parent();return n.children(s(".","hide")).toggle(),n.toggleClass(t+"up").toggleClass(t+"down"),n.hasClass(t+"up")&&n.children("div").hide(),!1}),e("#submit").on("click",function(){var t=e(s("@","signature")),n=t.val();return-1!==n.indexOf(",")&&t.val(C(n)),!0});break;case 1:N(o);var p=0;e(s("#","sort-slug")).on("click",function(){var t=e(this).closest("ol"),n=t.children("li");(p=!p)?n.sort(function(t,n){return e(t).text()>e(n).text()}):n.sort(function(t,n){return Number(e(t).text().replace(/^.*\((\d+)\)$/,"$1"))<=Number(e(n).text().replace(/^.*\((\d+)\)$/,"$1"))}),t.children("li").remove(),n.appendTo(t)}),e(s("@","clear_statistics")).on("click",function(){return h(l.msg[0],function(){b("statistics",null)}),!1}),e(s("@","clear_logs")).on("click",function(){return h(l.msg[0],function(){b("logs",null)}),!1}),R(o,{tableID:"statistics-cache",ajaxCMD:"restore-cache",sectionID:"section-2",targetColumn:4,columnIP:1,columnAS:3},{columns:[{title:'<input type="checkbox">'},{title:l.i18n[3]},{title:l.i18n[4]},{title:l.i18n[5]},{title:l.i18n[6]},{title:l.i18n[7]},{title:l.i18n[8]},{title:l.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]}]},r),T("export-cache"),e(s("#","export-cache")).on("click",function(){return e(s("#","export-form")).submit(),!1});break;case 4:var _={tableID:"validation-logs",sectionID:"section-0",targetColumn:6,columnIP:3,columnAS:5},I={columns:[{title:'<input type="checkbox">'},{title:""},{title:l.i18n[10]},{title:l.i18n[3]},{title:l.i18n[4]},{title:l.i18n[5]},{title:l.i18n[7]},{title:l.i18n[11]},{title:l.i18n[12]},{title:l.i18n[13]},{title:l.i18n[14]},{title:l.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]}]},M=null,z=null,E=e(s("#","live-loading")),$=null,J=function(){M&&(t.clearTimeout(M),M=null),z&&(E.removeClass(s("live-timer")),t.clearTimeout(z),z=null)},B=function(){J(),v("live-loading",{cmd:"live-start"},function(e){if(e.error)f(null,e.error);else if(e.data.length){var n,i=e.data.length;for(n=0;n<i;n++)$.row.add(e.data[n]);$.draw(!1)}M=t.setTimeout(B,1e3*l.interval)})},q=function(e,t){J(),v(null,{cmd:e||"live-stop",callback:t})},H=s(""),V=function(t,n,i){-1===n[7].indexOf("pass")?e(t).addClass(H+i+"blocked"):e(t).addClass(H+i+"passed")},G=e(s("#","live-log")),U=e(s("#","live-update"));e(s("#","validation-logs")).on("animationend",function(){return e(this).find('tr[class*="'+H+'new"]').each(function(){var t=e(this);-1!==t.prop("class").indexOf("passed")?t.addClass(H+"passed").removeClass(H+"new-passed"):t.addClass(H+"blocked").removeClass(H+"new-blocked")}),!1}),G.on("change",function(){switch(e('input[name="'+s("live-log")+'"]:checked').val()){case"start":B();break;case"pause":q("live-pause",function(){E.addClass(s("live-timer")),z=t.setTimeout(function(){J(),e(s("#","live-log-stop")).prop("checked",!0)},1e3*l.timeout)});break;case"stop":q()}}),U.on("change",function(){var t=G.closest("tr"),n=U.prop("checked");return r[o][1]=n?"o":"x",D(r),$&&$.clear().destroy(),n?(t.show().next().next().next().nextAll().hide(),_.ajaxCMD="live-stop",I.order=[1,"desc"],I.createdRow=function(e,t){V(e,t,"new-")}):(t.hide().next().next().next().nextAll().show(),_.ajaxCMD="restore-logs",I.order=[0,""],I.createdRow=function(e,t){V(e,t,"")}),e(s("#","live-log-stop")).trigger("click"),$=R(o,_,I,r),!1}).trigger("change"),e(s("#","logs-preset")).on("click","a",function(){var t=e(this).data("value");return e(s("@","search_filter")).val(t),$.search(t,!1,!0,!/[A-Z]/.test(t)).draw(),!1}),T("export-logs"),e(s("#","export-logs")).on("click",function(){return e(s("#","export-form")).submit(),!1});break;case 2:e(t).on(s("gmap-error"),function(){v(null,{cmd:"gmap-error"},function(e){m(e.page,e.tab)})});var W=e(s("#","map"));"object"==typeof t.google?W.each(function(){e(this).GmapRS()}):W.each(function(){e(this).empty().html('<iframe src="'+l.altgmap+'?output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>')});I=[];e('select[id^="'+s("!","service")+'"]').on("change",function(){e(this).children("option").each(function(t,n){I[e(n).text()]=t,r[o][3+t]=e(n).prop("selected")?"o":"x"}),"o"!==r[o][3+(Number(r[o][2])||0)]&&(r[o][2]=e(this).prop("selectedIndex")),D(r)}).change(),e(s("@","get_location")).on("click",function(){var n,i=e(s("#","whois")),a=e(s("#","apis")),c=e(s("@","service")).val(),u=e.trim(e(s("@","ip_address")).val());if(u&&c){if(e(s("@","anonymize")).prop("checked")){if(/[^0-9a-f\.:]/.test(u))return f(null,"illegal format."),!1;-1!==u.indexOf(".")?u=u.replace(/\.\w+$/,".0"):(-1===(u=(u=u.split(":")).splice(0,4).join(":")).indexOf("::")&&(u+="::"),u=u.replace(/:{3,}/,"::")),e(s("@","ip_address")).val(u)}i.hide().empty(),a.hide().empty(),n=e.whois(u,function(t){var n,a="";for(n=0;n<t.length;++n)a+="<tr><td>"+t[n].name+"</td><td>"+t[n].value+"</td></tr>";i.html('<fieldset id="'+s("section-1")+'" class="'+s("field")+' panel panel-default" data-section="1"><legend class="panel-heading"><h3 id="'+s("whois-title")+'" class="'+s("dropdown")+'">Whois</h3></legend><div class="panel-body '+s("border")+'"><table class="'+s("table")+'">'+a+"</table></div></fieldset>").fadeIn("slow"),"x"===r[o][1]&&e(s("#","whois-title")).trigger("click")}),v("loading",{cmd:"search",ip:u,which:c},function(n){var i,c="",p=Number(r[o][2])||0;for(i in n)n.hasOwnProperty(i)&&(c+='<a href="#!" class="nav-tab'+(I[i]===p?" nav-tab-active":"")+'" data-index="'+I[i]+"\" data-api='"+d(JSON.stringify(n[i]))+"'>"+i+"</a>");a.html('<div class="nav-tab-wrapper">'+c+'</div><div id="ip-geo-block-geoinfo"></div>').fadeIn("slow").on("click","a",function(){var n,i=e(this),a=e(this).data("api"),c="",p=d(a.latitude||"0"),h=d(a.longitude||"0"),f=a.latitude||a.longitude?7:2;for(n in i.parent().children("a").removeClass("nav-tab-active"),i.addClass("nav-tab-active"),r[o][2]=i.data("index"),D(r),a)a.hasOwnProperty(n)&&(n=d(n),c+='<li><span class="'+s("title")+'">'+n+' : </span><span class="'+s("result")+'">'+d(a[n])+"</span></li>");"object"==typeof t.google?W.GmapRS("deleteMarkers").GmapRS("addMarker",{latitude:p,longitude:h,title:u,content:"<ul>"+c+"</ul>",show:!0,zoom:f}):(W.empty().html('<iframe src="'+l.altgmap+"?q="+p+","+h+"&z="+f+'&output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>'),e(s("#","geoinfo")).html("<ul>"+c+"</ul>"))}).find(".nav-tab-active").trigger("click")},[n])}return!1}),e(s("@","ip_address")).on("keypress",function(t){if(t.which&&13===t.which||t.keyCode&&13===t.keyCode)return e(s("@","get_location")).click(),!1}),e(s("@","ip_address")).val()&&e(s("@","get_location")).click();break;case 5:N(o),e("input[name="+s("duration")+"]:radio").on("click",function(){var t=e('div[class*="paginate"]').find('a[class*="current"]').text();r[o][2]=e(this).val()||0,r[o][3]=r[o][3]||2,r[o][4]=r[o][4]||1,D(r),O.ajaxStacked(r[o][2],r[o][3],r[o][4],t-1)}),e(s("#","open-new")).on("change",function(){var t=e(this).prop("checked");r[o][1]=t?"o":"x",D(r),e(s("#","section-0 svg")).find("a").each(function(){this.setAttribute("target",t?"_blank":"_self")})}),e(s("#","apply-layout")).on("click",function(){var t=e(s("#","select-layout"));r[o][3]=t.find('select[name="rows"] option:selected').val(),r[o][4]=t.find('select[name="cols"] option:selected').val(),D(r)}),e("ul.wp-submenu>li.wp-first-item").removeClass("current").next().addClass("current")}})}(jQuery,window,document);
|
3 |
* Copyright (c) 2013-2018 tokkonopapa (tokkonopapa@yahoo.com)
|
4 |
* This software is released under the MIT License.
|
5 |
*/
|
6 |
+
!function(e,t,n,i){var a=!1,o=[],r=e(t).width(),l=IP_GEO_BLOCK,c=IP_GEO_BLOCK_AUTH;function s(e,t){var n={".":".ip-geo-block-","#":"#ip-geo-block-","@":"#ip_geo_block_settings_",$:"ip-geo-block-","%":"ip_geo_block_","!":"ip_geo_block_settings_"};return t!==i?n[e]+t:n.$+e}function d(e){return e?function(e){return e.toString().replace(/[&<>"']/g,function(e){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[e]}).replace(/&(#\d{2,4}|\w{4,7});/g,"&$1;")}(e.toString().replace(/(<([^>]+)>)/gi,"")):""}function u(n,a){var l=e(t).width();l!==r&&(r=l,o[n]===i&&(o[n]={id:!1,callback:a}),e(t).off("resize").on("resize",function(){return!1!==o[n].id&&t.clearTimeout(o[n].id),o[n].time=t.setTimeout(o[n].callback,200),!1}))}function p(t,n){n?e(s("#",t)).addClass(s("loading")):e(s("#",t)).removeClass(s("loading"))}function h(e,n){t.confirm(d(e))&&n()}function f(e,n,i){t.alert(d(n||l.msg[11].replace("%s",i)+" ("+e+")"))}function g(){f(null,d(l.msg[9]))}function m(e,n){-1!==t.location.href.indexOf(e)&&(t.location=d(e)+(n?"&"+d(n):"")+"&"+(c.key?c.key+"="+c.nonce:""))}function v(t,n,i,o){t&&p(t,!0),n.action=l.action,n.nonce=l.nonce,e.ajax({type:"POST",url:l.url,data:n,dataType:"json"}).done(function(e){i&&i(e)}).fail(function(e){a||f(e.status,e.responseText,n.action)}).always(function(){t&&("object"==typeof o?e.when.apply(e,o).then(function(){p(t,!1)}):p(t,!1))})}function b(e,t){v(e,{cmd:"clear-"+e,which:t},function(e){m(e.page,e.tab)})}function k(e){return e.stopImmediatePropagation(),!1}function w(e,t){t?e.removeClass("folding-disable"):(e.children(s(".","hide")).hide(),e.addClass("folding-disable"),e.removeClass(s("dropdown")).addClass(s("dropup")))}function x(t,n,i){var a=t.prop("type")||"",o=0===a.indexOf("checkbox")&&t.is(":checked")||0===a.indexOf("select")&&"0"!==t.val();t.siblings('input[name^="'+s("%","settings")+'"]:checkbox').prop("disabled",!o),e.isArray(n)?e.each(n,function(t,n){e(n).nextAll(s(".","settings-folding")).each(function(n,a){w(e(a),o&&i[t])})}):n.nextAll(s(".","settings-folding")).each(function(t,n){w(e(n),o&&i)})}function y(t){var n=s("@","validation_ajax_");w(t.closest("ul").next(),e(n+"1").is(":checked")||e(n+"2").is(":checked"))}function _(e){return String(e).replace(/[a-z]/gi,function(e){return String.fromCharCode(e.charCodeAt(0)+(e.toLowerCase()<"n"?13:-13))})}function C(e){return function(e){return t.btoa(e)}(_(e))}function P(e){return _(function(e){return t.atob(e)}(e))}function S(t){var n=t.is(":checked"),i=e(s("@","public_target_rule")),a=e(s("@","public_behavior")),o=t.closest("tr").nextAll("tr");o.find('[name^="'+s("%","settings")+'"]').prop("disabled",!n),o.find(s(".","desc")).css("opacity",n?1:.5),x(t,[i,a],["1"===i.val(),a.val()]),n&&a.change()}function A(t,n){t&&("string"==typeof t&&(t=JSON.parse(t)),n&&(e('input[type="checkbox"]').prop("checked",!1).change(),e("input[name*=providers]").prop("disabled",!1).change()),e(s("#","import")).closest("form").deserialize(t),e(s("@","exception_admin")+","+s("@","validation_mimetype")).change(),e('select[name*="'+s("%","settings")+'"]').change(),e(s("@","validation_login")).change(),S(e(s("@","validation_public"))),y(e(s("@","validation_ajax_1"))),n&&(n=s("%","settings[providers][IPInfoDB]"),e(s("@","providers_IPInfoDB")).prop("checked",!!t[n])))}e.fn.deserialize=function(t){return this.each(function(){var n,i,a,o=this,r={};for(n in t)if(t.hasOwnProperty(n))try{i=d(decodeURIComponent(n)),a=d(decodeURIComponent(t[n])),r.hasOwnProperty(i)||(r[i]=[]),r[i].push(a)}catch(e){}e.each(r,function(t,i){"hidden"!==(n=e('[name="'+t+'"]:input',o).val(i)).attr("type")&&n.before('<span style="color:red">*</span>')})})};var O={dataPie:[],viewPie:[],drawPie:function(a){var o,r;O.dataPie[a]===i&&((o=O.dataPie[a]=new t.google.visualization.DataTable).addColumn("string","Country"),o.addColumn("number","Requests"),r=e.parseJSON(e("#"+a).attr("data-"+a)),O.dataPie[a].addRows(r)),O.viewPie[a]===i&&(O.viewPie[a]=new t.google.visualization.PieChart(n.getElementById(a))),O.dataPie[a]!==i&&O.viewPie[a]!==i&&0<(o=e("#"+a).width())&&O.viewPie[a].draw(O.dataPie[a],{backgroundColor:{fill:"transparent"},chartArea:{left:0,top:"5%",width:"100%",height:"90%"},sliceVisibilityThreshold:.015})},dataLine:[],viewLine:[],drawLine:function(a,o){var r,l,c;if(O.dataLine[a]===i){for((r=O.dataLine[a]=new t.google.visualization.DataTable).addColumn(o,"Date"),r.addColumn("number","comment"),r.addColumn("number","xmlrpc"),r.addColumn("number","login"),r.addColumn("number","admin"),r.addColumn("number","public"),l=(c=e.parseJSON(e("#"+a).attr("data-"+a))).length,r=0;r<l;++r)c[r][0]=new Date(1e3*c[r][0]);O.dataLine[a].addRows(c)}O.viewLine[a]===i&&(O.viewLine[a]=new t.google.visualization.LineChart(n.getElementById(a))),O.dataLine[a]!==i&&O.viewLine[a]!==i&&0<(r=e("#"+a).width())&&O.viewLine[a].draw(O.dataLine[a],{legend:{position:"bottom"},backgroundColor:{fill:"transparent"},hAxis:{format:"MM/dd"+("datetime"===o?" HH:mm":"")},vAxis:{textPosition:r>320?"out":"in"},chartArea:{left:r>320?"10%":0,top:"5%",width:"100%",height:"75%"}})},dataStacked:[],viewStacked:[],drawStacked:function(a){var o,r,l,c,u=e("#"+d(a));O.dataStacked[a]===i&&(l=e.parseJSON(u.attr("data-"+a)))&&(l.unshift(["site","comment","xmlrpc","login","admin","public",{role:"link"}]),O.dataStacked[a]=t.google.visualization.arrayToDataTable(l)),O.viewStacked[a]===i&&(O.viewStacked[a]=new t.google.visualization.BarChart(n.getElementById(a)),t.google.visualization.events.addListener(O.viewStacked[a],"animationfinish",function(){var t,i,o,r=[],l=O.dataStacked[a],c=l.getNumberOfRows(),d=e(s("#","open-new")).prop("checked");for(t=0;t<c;t++)r.push({label:l.getValue(t,0),link:l.getValue(t,6)});c="http://www.w3.org/1999/xlink",u.find("text").each(function(e,t){"g"===(o=t.parentNode).tagName.toLowerCase()&&-1!==(e=function(e,t){var n,i=t.length;for(e=e.replace("…",""),n=0;n<i;++n)if(t.hasOwnProperty(n)&&0===t[n].label.indexOf(e))return n;return-1}(t.textContent,r))&&((i=n.createElementNS("http://www.w3.org/2000/svg","a")).setAttributeNS(c,"xlink:href",r[e].link),i.setAttributeNS(c,"title",r[e].label),i.setAttribute("target",d?"_blank":"_self"),i.setAttribute("class","site"),i.appendChild(o.removeChild(t)),o.appendChild(i),r.splice(e,1))})})),0<(r=u.width())&&O.dataStacked[a]!==i&&O.viewStacked[a]!==i&&(o=s("range"),c=e.parseJSON(e("."+o).attr("data-"+o)),o=40*(l=O.dataStacked[a]).getNumberOfRows(),O.viewStacked[a].draw(l,{width:r,height:o+80,allowHtml:!0,isStacked:!0,legend:{position:"top"},chartArea:{top:50,left:90,width:"100%",height:o},hAxis:{minValue:0,maxValue:c[1]},backgroundColor:{fill:"transparent"},animation:{startup:!0,duration:200,easing:"out"}}))},ajaxStacked:function(t,n,a,o){v(null,{cmd:"restore-network",which:t=Math.max(0,Math.min(4,t)),offset:(n=5*Math.max(1,Math.min(5,n)))*a*o,length:n},function(t){var a,o,r,l,c;t=function(e,t){var n,i,a=Math.ceil(e.length/t),o=[];for(n=0;n<a;++n)i=n*t,o.push(e.slice(i,i+t));return o}(t,n),e(s(".","network")).each(function(s,d){if(t[s]!==i){for(l=e(d).attr("id"),c=O.dataStacked[l],r=Math.min(n,t[s].length),a=0;a<r;++a)for(o=1;o<=5;o++)c.setValue(a,o,t[s][a][o]);O.drawStacked(l)}})})}};function I(n){"object"==typeof t.google&&(1===n?e(s("#","chart-countries")).length&&(O.drawPie(s("chart-countries")),O.drawLine(s("chart-daily"),"date")):5===n&&e(s(".","network")).each(function(t,n){O.drawStacked(e(n).attr("id"))}))}function N(e){if("object"==typeof t.google){var n=["corechart"];5===e&&n.push("bar"),t.google.charts.load("current",{packages:n,callback:function(){I(e)}}),u("draw-chart."+e,function(){I(e)})}}function D(t){var n,a,o=[];e.each(t,function(e,t){if(o[e]="",t!==i&&(a=t.length))for(o[e]=(t[0]||"o").toString(),n=1;n<a;++n)o[e]+=(t[n]||"o").toString()}),wpCookies!==i&&wpCookies.setHash("ip-geo-block",o,new Date(Date.now()+2592e6),c.home+c.admin)}function j(t){var a=function(e){var t,n=wpCookies!==i&&wpCookies.getHash("ip-geo-block")||[];for(t in n)n.hasOwnProperty(t)&&(n[t]=n[t].replace(/[^ox\d]/gi,"").split(""));return n[e]===i&&(n[e]=[]),n}(t);return e(n).on("click","form>h2,h3",function(){return function(e,t,n){var i,a=e.closest("fieldset").data("section"),o=e.parent().nextAll(".panel-body").toggle();e.toggleClass(s("dropup")).toggleClass(s("dropdown")),(i=e.hasClass(s("dropdown")))?o.addClass(s("border")).trigger(s("show-body")):o.removeClass(s("border")),n[t][a]=i?"o":"x",D(n),I(t)}(e(this),t,a),!1}),e(s("#","toggle-sections")).on("click",function(){var n,i=e(s(".","field")).find("h2,h3"),o=[s("dropdown"),s("dropup")],r=i.filter("."+o[0]).length;return i.each(function(i){(n=e(this)).removeClass(o.join(" ")).addClass(r?o[1]:o[0]),n=n.parent().nextAll(".panel-body").toggle(!r),r?n.removeClass(s("border")):n.addClass(s("border")).trigger("show-body"),a[t][i]=r?"x":"o"}),D(a),I(t),!1}),a}function T(t){e("body").append('<div style="display:none"><form method="POST" id="'+s("export-form")+'" action="'+l.url.replace("ajax.php","post.php")+'"><input type="hidden" name="action" value="'+l.action+'" /><input type="hidden" name="nonce" value="'+l.nonce+'" /><input type="hidden" name="cmd" value="'+t+'" /><input type="hidden" name="data" value="" id="'+s("export-data")+'"/><input type="submit" value="submit" /></form><input type="file" name="settings" id="'+s("file-dialog")+'" /></div>')}function L(e,t,n,i){var a,o;return(a=e.cloneNode(!1)).setAttribute("title",d(n)),(o=t.cloneNode(!1)).setAttribute("class","dashicons dashicons-"+i),a.appendChild(o),a}function R(n,a,o,r){var c=Number(r[n][1===n?3:2])||0;c=[10,25,50,100][c],e.extend(!0,e.fn.dataTable.defaults,o,{dom:"tlp",serverSide:!1,autoWidth:!1,processing:!0,deferRender:!0,language:{emptyTable:l.i18n[1],loadingRecords:l.i18n[0],processing:l.i18n[0],zeroRecords:l.i18n[2],lengthMenu:"_MENU_",paginate:{first:"«",last:"»",next:"›",previous:"‹"}},responsive:{details:{type:"column",target:"td:nth-child(n+2)"}},columnDefs:[{width:"1.25em",targets:0},{orderable:!1,targets:0},{searchable:!1,targets:0},{targets:[0],data:null,defaultContent:'<input type="checkbox">'}],pagingType:"full_numbers",lengthMenu:[10,25,50,100],pageLength:c,scroller:!0,scrollY:1e4,scrollCollapse:!0,drawCallback:function(t){var n=e(s("#",a.tableID)).find("td.dataTables_empty"),i="restore-logs"===a.ajaxCMD?3:2;i>t.iDraw?n.html(l.i18n[0]):i===t.iDraw&&(n.html(l.i18n[1]),(n=e(s("@","search_filter"))).val()&&n.trigger("keyup"))}});var d=e(s("#",a.tableID)).DataTable({ajax:{url:l.url,type:"POST",data:{cmd:a.ajaxCMD,action:l.action,nonce:l.nonce}},mark:!0}),p=function(){d.columns.adjust().responsive.recalc().draw(!1)};return u("draw-table."+n,p),e(s("#",a.sectionID)).find(".panel-body").off(s("show-body")).on(s("show-body"),function(){return p(),!1}).off("change").on("change",'th>input[type="checkbox"]',function(){var t=e(this).prop("checked");return e(s("#",a.tableID)).find('td>input[type="checkbox"]').prop("checked",t),!1}),e(s("#","select-target")).off("change").on("change",function(){var t=e(this).find('input[name="'+s("target")+'"]:checked').val();return d.columns(a.targetColumn).search("all"!==t?t:"").draw(),!1}).trigger("change"),e(s("#","bulk-action")).off("click").on("click",function(){var t,o,r=e(this).prev().val(),c=/(<([^>]+)>)/gi,u=/data-hash=[\W]([\w]+)[\W]/i,p={IP:[],AS:[]},h=d.$("input:checked");return!!r&&(h.length?(h.each(function(){o=d.cell(this.parentNode).data(),t=("bulk-action-remove"===r||"bulk-action-ip-erase"===r)&&(t=o[a.columnIP].match(u))?","+t[1]:"",p.IP.push(o[a.columnIP].replace(c,"")+t),p.AS.push(o[a.columnAS].replace(c,""))}),p.IP.length&&v("loading",{cmd:r,which:p},function(t){t.page!==i?m(t.page,"tab="+n):t&&(d.ajax.reload(),e(s("#",a.tableID)).find('th input[type="checkbox"]').prop("checked",!1))}),!1):(f(null,l.msg[10]),!1))}),e(s("@","search_filter")).off("keyup").on("keyup",function(){return d.search(this.value,!1,!0,!/[A-Z]/.test(this.value)).draw(),!1}),e(s("#","reset-filter")).off("click").on("click",function(){return e(s("@","search_filter")).val(""),d.search("").draw(),!1}),e(s("@","clear_all")).off("click").on("click",function(){return h(l.msg[0],function(){b(1===n?"cache":"logs",null)}),!1}),e("table"+s(".","dataTable")+" tbody").on("click","a",function(){var i,a,o=t.location.search.slice(1).split("&"),r=o.length,l={};for(i=0;i<r;++i)l[(a=o[i].split("="))[0]]=a[1];for(i in l.tab=1===n?4:2,l.s=e(this).text().replace(/[^\w\.\:\*]/,""),a=[],l)l.hasOwnProperty(i)&&a.push(i+"="+l[i]);return t.open(t.location.pathname+"?"+a.join("&"),"_blank"),!1}),e(s("#",a.tableID)).on("length.dt",function(e,t,i){r[n][1===n?3:2]={10:0,25:1,50:2,100:3}[i]||0,D(r)}),d}e(function(){var o=Number(l.tab)||0,r=j(o);switch(e(s(".","inhibit")).on("submit",function(){return!1}),e(t).on("beforeunload",function(){a=!0}),o){case 0:var u=s("%","settings");e('[id^="'+s("scan-")+'"]').on("click",function(){var t=e(this),n=t.attr("id"),i=t.parent();return v(n.replace(/^.*(?:scan)/,"scanning"),{cmd:"scan-code",which:n.replace(s("scan-"),"")},function(e){var t,n;for(t in i.children("ul").length||i.append('<ul id="'+s("code-list")+'"></ul>'),i=i.children("ul").empty(),e)e.hasOwnProperty(t)&&("string"==typeof e[t=d(t)]?n=d(e[t]):(n=d(e[t].code),t='<abbr title="'+d(e[t].type)+'">'+t+"</abbr>"),i.append("<li>"+t+' : <span class="'+s("notice")+'">'+n+"</span></li>"));i.show("slow")}),!1}),e(s("@","matching_rule")).on("change",function(){var t=this.value;return e(s("@","white_list")).closest("tr").toggle("0"===t),e(s("@","black_list")).closest("tr").toggle("1"===t),!1}).change(),e(s(".","icon-cidr")).on("click",function(){var n=e(s("#","admin-styles-css")).get(0).href,i=t.open("about:blank","","width=560,height=170");return n=n.slice(0,n.lastIndexOf("css/")),i.document.write('<!DOCTYPE html><html lang=en><meta charset=utf-8><title>CIDR calculator for IPv4 / IPv6</title><link href="'+n+'css/cidr.min.css?v=.1" rel=stylesheet><div class="row container"><div class=row id=i><fieldset class="col span_11"><legend>Range <input id=a type=button value=Clear tabindex=1></legend><textarea id=c name=range placeholder="192.168.0.0 - 192.168.255.255" rows=5 wrap=off tabindex=2></textarea></fieldset><ul class="col span_2" id=h><li class=row><input id=e type=button value=→ class="col span_24" tabindex=3><li class=row><input id=f type=button value=← class="col span_24" tabindex=6></ul><fieldset class="col span_11"><legend>CIDR <input id=b type=button value=Clear tabindex=4></legend><textarea id=d name=cidr placeholder=192.168.0.0/16 rows=5 wrap=off tabindex=5></textarea></fieldset></div><div class=row id=j><span class=col id=g> </span></div></div><script src="'+n+'js/cidr.min.js?v=.1"><\/script>'),i.document.close(),!1}),e(s("@","validation_mimetype")).on("change",function(t){var n=e(this),i=Number(n.val());return n.nextAll(s(".","settings-folding")).each(function(t,n){w(e(n),i===t+1||i&&2===t)}),k(t)}).change(),e('select[name*="response_code"]').on("change",function(t){var n=e(this),i=parseInt(n.val()/100,10),a=n.closest("tr").nextAll("tr");return 0<=n.attr("name").indexOf("public")&&-1===Number(e(s("@","public_matching_rule")).val())?(a.each(function(t){1>=t&&e(this).hide()}),k(t)):(i<=3?a.each(function(t){0===t?e(this).show():1===t&&e(this).hide()}):a.each(function(t){0===t?e(this).hide():1===t&&e(this).show()}),k(t))}).change(),e(s("#","decode")).on("click",function(){var t=e(s("@","signature")),n=t.val();return-1===n.search(/,/)?t.val(P(n)):t.val(C(n)),!1}),e(s("@","validation_login")).on("change",function(t){var n=e(this);return x(n,n,u),k(t)}).change(),v(null,{cmd:"get-actions"},function(t){var i,a,o,r,u=e(s("#","list-admin")),p=n.createElement("li"),h=n.createElement("input"),f=n.createElement("label"),g=n.createElement("dfn"),m=n.createElement("span");for(r in t)t.hasOwnProperty(r)&&(r=d(r),u.find("#"+(o=s("!","exception_admin_"+r))).size()||((i=h.cloneNode(!1)).setAttribute("id",o),i.setAttribute("value",r),i.setAttribute("type","checkbox"),(a=p.cloneNode(!1)).appendChild(i),(i=f.cloneNode(!1)).setAttribute("for",o),i.appendChild(n.createTextNode(r)),a.appendChild(i),1&t[r]&&a.appendChild(L(g,m,l.msg[5],"lock")),2&t[r]&&a.appendChild(L(g,m,l.msg[6],"unlock")),u.append(a)));e(s(".","icon-unlock")).on("click",function(){return e(s("#","list-admin")+">li").filter(function(){return!e(this).find(".dashicons-unlock").length}).toggle(),!1}),e(s("@","exception_admin")).on("change",function(t){var n=e.grep(e(this).val().split(","),function(e){return""!==e.replace(/^\s+|\s+$/g,"")});return e(s("#","list-admin")).find("input").each(function(){var t=e(this),i=t.val();t.prop("checked",-1!==e.inArray(i,n))}),k(t)}).change(),e(s("#","list-admin")).on("click","input",function(){var t,n=e(this),i=e(s("@","exception_admin")),a=n.val(),o=e.grep(i.val().split(","),function(e){return""!==e.replace(/^\s+|\s+$/g,"")});-1===(t=e.inArray(a,o))?o.push(a):o.splice(t,1),i.val(o.join(",")).change()}),e(s(".","icon-find")).on("click",function(){var t,n,i,a,o=e(this),r=[],u=0,p=d(l.msg[8]),h=d(o.data("target"));return e(s("#","find-"+h)).empty(),o.next().children(s(".","find-desc")).show(),(o=e(s("#","list-"+h))).children("li").each(function(t,n){r.push(e(n).find("input").val())}),v("find-"+h,{cmd:"find-"+h},function(f){var g;for(g in f)f.hasOwnProperty(g)&&(++u,t=d(f[g]),g=d(g),n=e.inArray(g,r),i=s("!","exception_"+h+"_"+g),a="admin"===h?t+"="+g:"/"+t+"/"+g+"/",a='<a class="ip-geo-block-icon ip-geo-block-icon-alert" href="'+c.sites[0]+c.admin+"options-general.php?page=ip-geo-block&tab=4&s="+encodeURIComponent(a)+'" title="'+p.replace("%s",a)+'" target="_blank"><span></span></a>',n<0?(r.push(g),o.prepend('<li><input id="'+i+'" value="'+g+'" type="checkbox" '+("admin"===h?"/>":"name=ip_geo_block_settings[exception]["+h+"]["+g+"] />")+'<label for="'+i+'">'+g+"</lable>"+a+"</li>")):(i=o.find("#"+i).parent()).find("a").length||i.append(a));e(s("@","exception_"+h)).trigger("change"),e(s("#","find-"+h)).append(' <span class="ip-geo-block-warn">'+d(l.msg[7].replace("%d",u))+"</span>")}),!1})}),e('input[id^="'+s("!","validation_ajax_")+'"]').on("change",function(){y(e(this))}).change(),e(s("@","validation_public")).on("change",function(t){return S(e(this)),k(t)}).change(),e(s("@","public_matching_rule")).on("change",function(t){var n=this.value;return e(s("@","public_white_list")).closest("tr").toggle("0"===n),e(s("@","public_black_list")).closest("tr").toggle("1"===n),e(s("@","public_response_code")).change().closest("tr").toggle("-1"!==n),k(t)}).change(),e(s("@","public_behavior")).on("change",function(t){var n=e(this);return w(n.siblings("ul"),n.prop("checked")),k(t)}).change(),e(s("@","update")).on("click",function(){return v("download",{cmd:"download"},function(t){var n,i,a;for(n in t)if(t.hasOwnProperty(n))for(i in a=t[n])a.hasOwnProperty(i)&&(a[i=d(i)].filename&&e(s("@",n+"_"+i+"_path")).val(d(a[i].filename)),a[i].message&&e(s("#",n+"-"+i)).text(d(a[i].message)))}),!1}),e(s("@","restrict_api")).on("change",function(){e('input[class*="remote"]').prop("disabled",e(this).prop("checked"))}).trigger("change"),e(s("@","save_statistics")).on("change",function(){return e(s("@","validation_recdays")).prop("disabled",!e(this).prop("checked")),!1}).trigger("change"),e(s("@","validation_reclogs")).on("change",function(){var t=e(this);t.parent().parent().nextAll().find('input[id*="validation"]').prop("disabled",0===Number(t.prop("selectedIndex")))}).trigger("change"),e(s("@","cache_hold")).on("change",function(){var t=e(this).prop("checked");e('input[name*="[cache_time]"]').prop("disabled",!t),e('select[id*="login_fails"]').prop("disabled",!t)}).trigger("change"),e(s("@","comment_pos")).on("change",function(){var t=e(this);t.nextAll('input[type="text"]').prop("disabled",0===Number(t.prop("selectedIndex")))}).trigger("change"),T("validate"),e(s("#","export")).on("click",function(){if(JSON===i)return g(),!1;var t=u,n={};return e.each(e(this).closest("form").serializeArray(),function(e,i){-1!==i.name.indexOf(t)&&(n[i.name]=i.value)}),n[t+="[signature]"]=C(n[t]),e(s("#","export-data")).val(JSON.stringify(n)),e(s("#","export-form")).submit(),!1}),e(s("#","file-dialog")).on("change",function(e){if(t.FileReader===i)return g(),!1;var n,a=e.target.files[0];return a&&function(e,n){var i=new t.FileReader;i.onload=function(e){n&&n(e.target.result)},i.onerror=function(e){f("Error",e.target.error.code)},i.readAsText(e)}(a,function(e){(e=JSON.parse(e))[n=u+"[signature]"]!==i&&(e[n]=C(e[n])),v("export-import",{cmd:"validate",data:JSON.stringify(e)},function(e){A(e,!0)})}),!1}),e(s("#","import")).on("click",function(){return e(s("#","file-dialog")).click(),!1}),e(s("#","default")).on("click",function(){return h(l.msg[0],function(){v("pre-defined",{cmd:"import-default"},function(e){A(e,!0)})}),!1}),e(s("#","preferred")).on("click",function(){return h(l.msg[0],function(){v("pre-defined",{cmd:"import-preferred"},function(e){A(e,!1)})}),!1}),e(s("@","reset_live")).on("click",function(){return v("reset-live",{cmd:"reset-live"}),!1}),e(s("#","login-link")).on("click",function(){var t=e(this),n=s("$","primary");return t.hasClass(n)?v("login-loading",{cmd:"generate-link"},function(i){t.text(l.msg[3]),t.removeClass(n).nextAll(s(".","desc")).remove(),e('<p class="ip-geo-block-desc"></p>').appendTo(t.parent()).append(l.msg[4],'<a href="'+i.link+'" title="'+l.msg[1]+'" target=_blank>'+i.link+"</a></p>")}):h(l.msg[0],function(){v("login-loading",{cmd:"delete-link"},function(){t.text(l.msg[2]),t.addClass(n).nextAll(s(".","desc")).remove()})}),!1}),e(s("@","diag_tables")).on("click",function(){return h(l.msg[0],function(){var e;v(e="diag-tables",{cmd:e},function(e){m(e.page,e.tab)})}),!1}),e(s("#","show-info")).on("click",function(){e(s("#","wp-info")).empty(),v("wp-info",{cmd:"show-info"},function(t){var n,i=[];for(n in t)t.hasOwnProperty(n)&&i.push("- "+n+" "+t[n]);return e(s("#","wp-info")).html('<textarea class="regular-text code" rows="'+i.length+'">'+i.join("\n")+"</textarea>").find("textarea").select(),!1})}),e('select[name^="'+u+'"]').on("change",function(){var t,n,i,a=e(this);return t=a,i=s(".","desc"),t.next(i).empty(),(n=t.children("option:selected").data("desc"))&&t.next(i).html(e.parseHTML(n)),x(a,a,u),!1}).change(),e(s(".","icon-cycle")).on("click",function(){var t,n=e(this).nextAll("li"),i=n.find(s("@","exception_admin")),a=n.find("input:checkbox").filter(":visible"),o=a.filter(":checked").length;return a.prop("checked",!o),i.length&&(o?i.val(""):(t=[],a.each(function(n,i){t.push(e(i).val())}),i.val(t.join(",")))),e(this).blur(),!1}),e(s(".","settings-folding>dfn")).on("click",function(){var t=s("drop"),n=e(this).parent();return n.children(s(".","hide")).toggle(),n.toggleClass(t+"up").toggleClass(t+"down"),n.hasClass(t+"up")&&n.children("div").hide(),!1}),e("#submit").on("click",function(){var t=e(s("@","signature")),n=t.val();return-1!==n.indexOf(",")&&t.val(C(n)),!0});break;case 1:N(o);var p=0;e(s("#","sort-slug")).on("click",function(){var t=e(this).closest("ol"),n=t.children("li");(p=!p)?n.sort(function(t,n){return e(t).text()>e(n).text()}):n.sort(function(t,n){return Number(e(t).text().replace(/^.*\((\d+)\)$/,"$1"))<=Number(e(n).text().replace(/^.*\((\d+)\)$/,"$1"))}),t.children("li").remove(),n.appendTo(t)}),e(s("@","clear_statistics")).on("click",function(){return h(l.msg[0],function(){b("statistics",null)}),!1}),e(s("@","clear_logs")).on("click",function(){return h(l.msg[0],function(){b("logs",null)}),!1}),R(o,{tableID:"statistics-cache",ajaxCMD:"restore-cache",sectionID:"section-2",targetColumn:4,columnIP:1,columnAS:3},{columns:[{title:'<input type="checkbox">'},{title:l.i18n[3]},{title:l.i18n[4]},{title:l.i18n[5]},{title:l.i18n[6]},{title:l.i18n[7]},{title:l.i18n[8]},{title:l.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]}]},r),T("export-cache"),e(s("#","export-cache")).on("click",function(){return e(s("#","export-form")).submit(),!1});break;case 4:var _={tableID:"validation-logs",sectionID:"section-0",targetColumn:6,columnIP:3,columnAS:5},I={columns:[{title:'<input type="checkbox">'},{title:""},{title:l.i18n[10]},{title:l.i18n[3]},{title:l.i18n[4]},{title:l.i18n[5]},{title:l.i18n[7]},{title:l.i18n[11]},{title:l.i18n[12]},{title:l.i18n[13]},{title:l.i18n[14]},{title:l.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]}]},M=null,z=null,E=e(s("#","live-loading")),$=null,J=function(e){M&&(t.clearTimeout(M),M=null),z&&(E.removeClass(s("live-timer")),t.clearTimeout(z),z=null),v(e===i?"live-loading":null,{cmd:"live-start"},function(n){if(n.error)f(null,n.error);else if(n.data.length){var a,o=n.data.length;for(a=0;a<o;a++)$.row.add(n.data[a]);$.draw(!1)}e===i&&(M=t.setTimeout(J,1e3*l.interval))})},B=function(e,t){J(!1),v(null,{cmd:e||"live-stop",callback:t})},q=s(""),H=function(t,n,i){-1===n[7].indexOf("pass")?e(t).addClass(q+i+"blocked"):e(t).addClass(q+i+"passed")},V=e(s("#","live-log")),G=e(s("#","live-update"));e(s("#","validation-logs")).on("animationend",function(){return e(this).find('tr[class*="'+q+'new"]').each(function(){var t=e(this);-1!==t.prop("class").indexOf("passed")?t.addClass(q+"passed").removeClass(q+"new-passed"):t.addClass(q+"blocked").removeClass(q+"new-blocked")}),!1}),V.on("change",function(){switch(e('input[name="'+s("live-log")+'"]:checked').val()){case"start":J();break;case"pause":B("live-pause",function(){E.addClass(s("live-timer")),z=t.setTimeout(function(){e(s("#","live-log-stop")).prop("checked",!0),B()},1e3*l.timeout)});break;case"stop":B()}}),G.on("change",function(){var t=V.closest("tr"),n=G.prop("checked");return r[o][1]=n?"o":"x",D(r),$&&$.clear().destroy(),n?(t.show().next().next().next().nextAll().hide(),_.ajaxCMD="live-stop",I.order=[1,"desc"],I.createdRow=function(e,t){H(e,t,"new-")}):(t.hide().next().next().next().nextAll().show(),_.ajaxCMD="restore-logs",I.order=[0,""],I.createdRow=function(e,t){H(e,t,"")}),e(s("#","live-log-stop")).trigger("click"),$=R(o,_,I,r),!1}).trigger("change"),e(s("#","logs-preset")).on("click","a",function(){var t=e(this).data("value");return e(s("@","search_filter")).val(t),$.search(t,!1,!0,!/[A-Z]/.test(t)).draw(),!1}),T("export-logs"),e(s("#","export-logs")).on("click",function(){return e(s("#","export-form")).submit(),!1});break;case 2:e(t).on(s("gmap-error"),function(){v(null,{cmd:"gmap-error"},function(e){m(e.page,e.tab)})});var U=e(s("#","map"));"object"==typeof t.google?U.each(function(){e(this).GmapRS()}):U.each(function(){e(this).empty().html('<iframe src="'+l.altgmap+'?output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>')});I=[];e('select[id^="'+s("!","service")+'"]').on("change",function(){e(this).children("option").each(function(t,n){I[e(n).text()]=t,r[o][3+t]=e(n).prop("selected")?"o":"x"}),"o"!==r[o][3+(Number(r[o][2])||0)]&&(r[o][2]=e(this).prop("selectedIndex")),D(r)}).change(),e(s("@","get_location")).on("click",function(){var n,i=e(s("#","whois")),a=e(s("#","apis")),c=e(s("@","service")).val(),u=e.trim(e(s("@","ip_address")).val());if(u&&c){if(e(s("@","anonymize")).prop("checked")){if(/[^0-9a-f\.:]/.test(u))return f(null,"illegal format."),!1;-1!==u.indexOf(".")?u=u.replace(/\.\w+$/,".0"):(-1===(u=(u=u.split(":")).splice(0,4).join(":")).indexOf("::")&&(u+="::"),u=u.replace(/:{3,}/,"::")),e(s("@","ip_address")).val(u)}i.hide().empty(),a.hide().empty(),n=e.whois(u,function(t){var n,a="";for(n=0;n<t.length;++n)a+="<tr><td>"+t[n].name+"</td><td>"+t[n].value+"</td></tr>";i.html('<fieldset id="'+s("section-1")+'" class="'+s("field")+' panel panel-default" data-section="1"><legend class="panel-heading"><h3 id="'+s("whois-title")+'" class="'+s("dropdown")+'">Whois</h3></legend><div class="panel-body '+s("border")+'"><table class="'+s("table")+'">'+a+"</table></div></fieldset>").fadeIn("slow"),"x"===r[o][1]&&e(s("#","whois-title")).trigger("click")}),v("loading",{cmd:"search",ip:u,which:c},function(n){var i,c="",p=Number(r[o][2])||0;for(i in n)n.hasOwnProperty(i)&&(c+='<a href="#!" class="nav-tab'+(I[i]===p?" nav-tab-active":"")+'" data-index="'+I[i]+"\" data-api='"+d(JSON.stringify(n[i]))+"'>"+i+"</a>");a.html('<div class="nav-tab-wrapper">'+c+'</div><div id="ip-geo-block-geoinfo"></div>').fadeIn("slow").on("click","a",function(){var n,i=e(this),a=e(this).data("api"),c="",p=d(a.latitude||"0"),h=d(a.longitude||"0"),f=a.latitude||a.longitude?7:2;for(n in i.parent().children("a").removeClass("nav-tab-active"),i.addClass("nav-tab-active"),r[o][2]=i.data("index"),D(r),a)a.hasOwnProperty(n)&&(n=d(n),c+='<li><span class="'+s("title")+'">'+n+' : </span><span class="'+s("result")+'">'+d(a[n])+"</span></li>");"object"==typeof t.google?U.GmapRS("deleteMarkers").GmapRS("addMarker",{latitude:p,longitude:h,title:u,content:"<ul>"+c+"</ul>",show:!0,zoom:f}):(U.empty().html('<iframe src="'+l.altgmap+"?q="+p+","+h+"&z="+f+'&output=embed" frameborder="0" style="width:100%; height:400px; border:0" allowfullscreen></iframe>'),e(s("#","geoinfo")).html("<ul>"+c+"</ul>"))}).find(".nav-tab-active").trigger("click")},[n])}return!1}),e(s("@","ip_address")).on("keypress",function(t){if(t.which&&13===t.which||t.keyCode&&13===t.keyCode)return e(s("@","get_location")).click(),!1}),e(s("@","ip_address")).val()&&e(s("@","get_location")).click();break;case 5:N(o),e("input[name="+s("duration")+"]:radio").on("click",function(){var t=e('div[class*="paginate"]').find('a[class*="current"]').text();r[o][2]=e(this).val()||0,r[o][3]=r[o][3]||2,r[o][4]=r[o][4]||1,D(r),O.ajaxStacked(r[o][2],r[o][3],r[o][4],t-1)}),e(s("#","open-new")).on("change",function(){var t=e(this).prop("checked");r[o][1]=t?"o":"x",D(r),e(s("#","section-0 svg")).find("a").each(function(){this.setAttribute("target",t?"_blank":"_self")})}),e(s("#","apply-layout")).on("click",function(){var t=e(s("#","select-layout"));r[o][3]=t.find('select[name="rows"] option:selected').val(),r[o][4]=t.find('select[name="cols"] option:selected').val(),D(r)}),e("ul.wp-submenu>li.wp-first-item").removeClass("current").next().addClass("current")}})}(jQuery,window,document);
|
admin/js/whois.js
CHANGED
@@ -77,14 +77,14 @@
|
|
77 |
|
78 |
if (value.link) {
|
79 |
if ((value['referenced-type'] || false) && 'aut-num' === value['referenced-type']) {
|
80 |
-
value.value += ' [ <a href="https://ipinfo.io/' + escapeHTML(value.value) + '" target=_blank>Search
|
81 |
} else {
|
82 |
value.value = '<a href="' + escapeHTML(value.link.href) + '.json" target=_blank>' + escapeHTML(value.value) + '</a>';
|
83 |
}
|
84 |
}
|
85 |
|
86 |
else if (value.value.match(/^AS\d+$/)) {
|
87 |
-
value.value += ' [ <a href="https://ipinfo.io/' + escapeHTML(value.value) + '" target=_blank>Search
|
88 |
}
|
89 |
|
90 |
else if ('remarks' === value.name) {
|
77 |
|
78 |
if (value.link) {
|
79 |
if ((value['referenced-type'] || false) && 'aut-num' === value['referenced-type']) {
|
80 |
+
value.value += ' [ <a href="https://ipinfo.io/' + escapeHTML(value.value) + '" target=_blank>Search at ipinfo.io</a> ]';
|
81 |
} else {
|
82 |
value.value = '<a href="' + escapeHTML(value.link.href) + '.json" target=_blank>' + escapeHTML(value.value) + '</a>';
|
83 |
}
|
84 |
}
|
85 |
|
86 |
else if (value.value.match(/^AS\d+$/)) {
|
87 |
+
value.value += ' [ <a href="https://ipinfo.io/' + escapeHTML(value.value) + '" target=_blank>Search at ipinfo.io</a> ]';
|
88 |
}
|
89 |
|
90 |
else if ('remarks' === value.name) {
|
admin/js/whois.min.js
CHANGED
@@ -5,4 +5,4 @@
|
|
5 |
* Copyright (c) 2016 tokkonopapa (tokkonopapa@yahoo.com)
|
6 |
* This software is released under the MIT License.
|
7 |
*/
|
8 |
-
!function(e){e.extend({whois:function(a,r){var t=[];function n(e){return e?e.toString().replace(/[&<>"']/g,function(e){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[e]}):""}return e.ajax({url:'https://query.yahooapis.com/v1/public/yql?q=select * from xml where url="%URL%"&format=json&jsonCompat=new'.replace(/%URL%/,"https://rest.db.ripe.net/search%3fflags=no-filtering%26flags=resource%26query-string="+a),method:"GET",dataType:"json"}).done(function(a,r,u){var l,o=a.query.results,i=[];for(l in o)if(o.hasOwnProperty(l)){i=o[l];break}!function a(r,u){if(u&&"object"==typeof u)if(u.errormessage){var l=u.errormessage,o=l.text.split(/\n+/);t.push({name:n(l.severity),value:n(o[1].replace(/%s/,l.args.value))})}else u.href?(u.href=n(u.href),t.push({name:n(r),value:'<a href="'+u.href+'.json" target=_blank>'+u.href+"</a>"})):u.name&&u.value?(u.link?u["referenced-type"]&&"aut-num"===u["referenced-type"]?u.value+=' [ <a href="https://ipinfo.io/'+n(u.value)+'" target=_blank>Search
|
5 |
* Copyright (c) 2016 tokkonopapa (tokkonopapa@yahoo.com)
|
6 |
* This software is released under the MIT License.
|
7 |
*/
|
8 |
+
!function(e){e.extend({whois:function(a,r){var t=[];function n(e){return e?e.toString().replace(/[&<>"']/g,function(e){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[e]}):""}return e.ajax({url:'https://query.yahooapis.com/v1/public/yql?q=select * from xml where url="%URL%"&format=json&jsonCompat=new'.replace(/%URL%/,"https://rest.db.ripe.net/search%3fflags=no-filtering%26flags=resource%26query-string="+a),method:"GET",dataType:"json"}).done(function(a,r,u){var l,o=a.query.results,i=[];for(l in o)if(o.hasOwnProperty(l)){i=o[l];break}!function a(r,u){if(u&&"object"==typeof u)if(u.errormessage){var l=u.errormessage,o=l.text.split(/\n+/);t.push({name:n(l.severity),value:n(o[1].replace(/%s/,l.args.value))})}else u.href?(u.href=n(u.href),t.push({name:n(r),value:'<a href="'+u.href+'.json" target=_blank>'+u.href+"</a>"})):u.name&&u.value?(u.link?u["referenced-type"]&&"aut-num"===u["referenced-type"]?u.value+=' [ <a href="https://ipinfo.io/'+n(u.value)+'" target=_blank>Search at ipinfo.io</a> ]':u.value='<a href="'+n(u.link.href)+'.json" target=_blank>'+n(u.value)+"</a>":u.value.match(/^AS\d+$/)?u.value+=' [ <a href="https://ipinfo.io/'+n(u.value)+'" target=_blank>Search at ipinfo.io</a> ]':"remarks"===u.name&&(u.value=n(u.value),u.value=u.value.replace(/(https?:\/\/[^\s]+)/gi,'<a href="$1" target=_blank>$1</a>')),t.push({name:n(u.name),value:u.value})):"primary-key"!==r&&e.each(u,function(e,r){a(e,r)})}(null,i)}).fail(function(e,a,r){t.push({name:n(a),value:n(r)})}).always(function(){t.push({name:"copyright",value:'<a href="https://apps.db.ripe.net/search/query.html" title="Database Query - RIPE Network Coordination Centre">RIPE NCC</a>'}),r&&r(t)})}})}(jQuery);
|
classes/class-ip-geo-block-apis.php
CHANGED
@@ -103,7 +103,6 @@ abstract class IP_Geo_Block_API {
|
|
103 |
}
|
104 |
|
105 |
switch ( $tmp ) {
|
106 |
-
|
107 |
// decode json
|
108 |
case 'json':
|
109 |
case 'html': // ipinfo.io, Xhanch
|
@@ -198,56 +197,56 @@ abstract class IP_Geo_Block_API {
|
|
198 |
}
|
199 |
|
200 |
/**
|
201 |
-
* Class for
|
202 |
*
|
203 |
-
* URL :
|
204 |
-
* Term of use :
|
205 |
-
* Licence fee : free
|
206 |
-
* Rate limit :
|
207 |
-
* Sample URL :
|
208 |
-
*
|
209 |
-
*
|
|
|
210 |
*/
|
211 |
-
class
|
212 |
protected $template = array(
|
213 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
214 |
-
'url' => '
|
215 |
'api' => array(
|
216 |
'%API_FORMAT%' => 'json',
|
217 |
),
|
218 |
'transform' => array(
|
219 |
-
'
|
220 |
-
'
|
221 |
-
'
|
222 |
-
'
|
223 |
-
'
|
224 |
-
'
|
|
|
225 |
)
|
226 |
);
|
227 |
}
|
228 |
|
229 |
/**
|
230 |
-
* Class for
|
231 |
*
|
232 |
-
* URL :
|
233 |
-
* Term of use :
|
234 |
-
* Licence fee : free
|
235 |
-
* Rate limit :
|
236 |
-
* Sample URL : http://api.
|
237 |
-
* Input type : IP address (IPv4, IPv6)
|
238 |
-
* Output type :
|
239 |
*/
|
240 |
-
class
|
241 |
protected $template = array(
|
242 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
243 |
-
'url' => 'http://api.
|
244 |
-
'api' => array(
|
245 |
-
'%API_FORMAT%' => 'json',
|
246 |
-
),
|
247 |
'transform' => array(
|
248 |
-
'countryCode' => '
|
249 |
-
'countryName' => '
|
250 |
-
'regionName' => '
|
251 |
'cityName' => 'city',
|
252 |
'latitude' => 'latitude',
|
253 |
'longitude' => 'longitude',
|
@@ -261,7 +260,7 @@ class IP_Geo_Block_API_ipstack extends IP_Geo_Block_API {
|
|
261 |
* URL : https://ipinfo.io/
|
262 |
* Term of use : https://ipinfo.io/developers#terms
|
263 |
* Licence fee : free
|
264 |
-
* Rate limit :
|
265 |
* Sample URL : https://ipinfo.io/124.83.187.140/json
|
266 |
* Sample URL : https://ipinfo.io/124.83.187.140/country
|
267 |
* Input type : IP address (IPv4)
|
@@ -303,64 +302,67 @@ class IP_Geo_Block_API_ipinfoio extends IP_Geo_Block_API {
|
|
303 |
}
|
304 |
|
305 |
/**
|
306 |
-
* Class for
|
307 |
*
|
308 |
-
* URL : https://
|
309 |
-
* Term of use : https://
|
310 |
* Licence fee : free to use the API
|
311 |
-
* Rate limit :
|
312 |
-
* Sample URL : http://
|
313 |
* Input type : IP address (IPv4, IPv6)
|
314 |
* Output type : json
|
315 |
*/
|
316 |
-
class
|
317 |
protected $template = array(
|
318 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
319 |
-
'url' => '
|
320 |
'api' => array(),
|
321 |
'transform' => array(
|
322 |
-
'countryCode' => '
|
323 |
-
'countryName' => '
|
324 |
'cityName' => 'city',
|
325 |
-
'latitude' => '
|
326 |
-
'longitude' => '
|
|
|
327 |
)
|
328 |
);
|
329 |
|
330 |
public function get_location( $ip, $args = array() ) {
|
331 |
$res = parent::get_location( $ip, $args );
|
332 |
-
if ( isset( $res['countryName'] )
|
333 |
-
$res['countryCode'] = esc_html( $res['countryCode']
|
334 |
-
$res['countryName'] = esc_html( $res['countryName']
|
335 |
-
$res['latitude' ] = esc_html( $res['latitude' ]
|
336 |
-
$res['longitude' ] = esc_html( $res['longitude' ]
|
337 |
return $res;
|
338 |
} else {
|
339 |
-
return array( 'errorMessage' =>
|
340 |
}
|
341 |
}
|
342 |
}
|
343 |
|
344 |
/**
|
345 |
-
* Class for
|
346 |
*
|
347 |
-
* URL :
|
348 |
-
* Term of use :
|
349 |
* Licence fee : free
|
350 |
-
* Rate limit :
|
351 |
-
* Sample URL :
|
352 |
* Input type : IP address (IPv4, IPv6)
|
353 |
-
* Output type :
|
354 |
*/
|
355 |
-
class
|
356 |
protected $template = array(
|
357 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
358 |
-
'url' => '
|
359 |
-
'api' => array(
|
|
|
|
|
360 |
'transform' => array(
|
361 |
-
'countryCode' => '
|
362 |
-
'countryName' => '
|
363 |
-
'regionName' => '
|
364 |
'cityName' => 'city',
|
365 |
'latitude' => 'latitude',
|
366 |
'longitude' => 'longitude',
|
@@ -369,32 +371,30 @@ class IP_Geo_Block_API_GeoIPLookup extends IP_Geo_Block_API {
|
|
369 |
}
|
370 |
|
371 |
/**
|
372 |
-
* Class for
|
373 |
*
|
374 |
-
* URL :
|
375 |
-
* Term of use :
|
376 |
-
* Licence fee : free for
|
377 |
-
* Rate limit :
|
378 |
-
* Sample URL : http://
|
379 |
-
*
|
380 |
-
* Input type : IP address (IPv4, IPv6 with limited coverage) / domain name
|
381 |
* Output type : json, xml
|
382 |
*/
|
383 |
-
class
|
384 |
protected $template = array(
|
385 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
386 |
-
'url' => 'http://
|
387 |
'api' => array(
|
388 |
'%API_FORMAT%' => 'json',
|
389 |
),
|
390 |
'transform' => array(
|
391 |
-
'
|
392 |
-
'
|
393 |
-
'
|
394 |
-
'
|
395 |
-
'
|
396 |
-
'
|
397 |
-
'longitude' => 'lon',
|
398 |
)
|
399 |
);
|
400 |
}
|
@@ -450,13 +450,13 @@ class IP_Geo_Block_API_Cache extends IP_Geo_Block_API {
|
|
450 |
// memory cache
|
451 |
protected static $memcache = array();
|
452 |
|
453 |
-
public static function update_cache( $hook, $validate, $settings ) {
|
454 |
$time = $_SERVER['REQUEST_TIME'];
|
455 |
$cache = self::get_cache( $ip = $validate['ip'], $settings['cache_hold'] );
|
456 |
|
457 |
if ( $cache ) {
|
458 |
-
$fail = $
|
459 |
-
$call = $cache['reqs'] + (
|
460 |
$last = $cache['last'];
|
461 |
$view = $cache['view'];
|
462 |
} else { // if new cache then reset these values
|
@@ -526,34 +526,34 @@ class IP_Geo_Block_API_Cache extends IP_Geo_Block_API {
|
|
526 |
class IP_Geo_Block_Provider {
|
527 |
|
528 |
protected static $providers = array(
|
529 |
-
'
|
530 |
-
'key' =>
|
531 |
-
'type' => 'IPv4, IPv6 / free',
|
532 |
-
'link' => '<a rel="noreferrer" href="
|
533 |
),
|
534 |
|
535 |
-
'
|
536 |
'key' => NULL,
|
537 |
'type' => 'IPv4, IPv6 / free',
|
538 |
-
'link' => '<a rel="noreferrer" href="
|
539 |
),
|
540 |
|
541 |
-
'
|
542 |
'key' => NULL,
|
543 |
'type' => 'IPv4, IPv6 / free',
|
544 |
-
'link' => '<a rel="noreferrer" href="
|
545 |
),
|
546 |
|
547 |
-
'
|
548 |
-
'key' =>
|
549 |
-
'type' => 'IPv4, IPv6 / free
|
550 |
-
'link' => '<a rel="noreferrer" href="
|
551 |
),
|
552 |
|
553 |
'Ipdata.co' => array(
|
554 |
'key' => '',
|
555 |
'type' => 'IPv4, IPv6 / free',
|
556 |
-
'link' => '<a rel="noreferrer" href="https://ipdata.co/" title="ipdata.co - IP Geolocation and Threat Data API">https://ipdata.co/</a> (IPv4, IPv6 / free up to
|
557 |
),
|
558 |
|
559 |
'ipstack' => array(
|
@@ -628,14 +628,16 @@ class IP_Geo_Block_Provider {
|
|
628 |
* Returns providers name list which are checked in settings
|
629 |
*
|
630 |
*/
|
631 |
-
public static function get_valid_providers( $settings, $rand = TRUE, $cache = TRUE, $all =
|
632 |
$list = array();
|
633 |
-
$providers = $settings['providers' ];
|
634 |
$cache &= $settings['cache_hold']; // exclude `Cache` when `IP address cache` is disabled
|
635 |
|
636 |
-
foreach ( self::get_providers( 'key', $rand, $cache, empty( $settings['restrict_api'] )
|
637 |
-
|
638 |
-
|
|
|
|
|
639 |
}
|
640 |
|
641 |
return $list;
|
@@ -659,7 +661,7 @@ if ( class_exists( 'IP_Geo_Block', FALSE ) ) {
|
|
659 |
);
|
660 |
|
661 |
// Scan API directory
|
662 |
-
$plugins = is_dir( $dir ) ? scandir( $dir, defined( 'SCANDIR_SORT_DESCENDING' ) ? SCANDIR_SORT_DESCENDING : 1 ) : FALSE;
|
663 |
|
664 |
// Load addons by heigher priority order
|
665 |
if ( FALSE !== $plugins ) {
|
103 |
}
|
104 |
|
105 |
switch ( $tmp ) {
|
|
|
106 |
// decode json
|
107 |
case 'json':
|
108 |
case 'html': // ipinfo.io, Xhanch
|
197 |
}
|
198 |
|
199 |
/**
|
200 |
+
* Class for IP-API.com
|
201 |
*
|
202 |
+
* URL : http://ip-api.com/
|
203 |
+
* Term of use : http://ip-api.com/docs/#usage_limits
|
204 |
+
* Licence fee : free for non-commercial use
|
205 |
+
* Rate limit : 240 requests per minute
|
206 |
+
* Sample URL : http://ip-api.com/json/2a00:1210:fffe:200::1
|
207 |
+
* Sample URL : http://ip-api.com/xml/yahoo.co.jp
|
208 |
+
* Input type : IP address (IPv4, IPv6 with limited coverage) / domain name
|
209 |
+
* Output type : json, xml
|
210 |
*/
|
211 |
+
class IP_Geo_Block_API_IPAPIcom extends IP_Geo_Block_API {
|
212 |
protected $template = array(
|
213 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
214 |
+
'url' => 'http://ip-api.com/%API_FORMAT%/%API_IP%',
|
215 |
'api' => array(
|
216 |
'%API_FORMAT%' => 'json',
|
217 |
),
|
218 |
'transform' => array(
|
219 |
+
'errorMessage' => 'error',
|
220 |
+
'countryCode' => 'countryCode',
|
221 |
+
'countryName' => 'country',
|
222 |
+
'regionName' => 'regionName',
|
223 |
+
'cityName' => 'city',
|
224 |
+
'latitude' => 'lat',
|
225 |
+
'longitude' => 'lon',
|
226 |
)
|
227 |
);
|
228 |
}
|
229 |
|
230 |
/**
|
231 |
+
* Class for GeoIPLookup.net
|
232 |
*
|
233 |
+
* URL : http://geoiplookup.net/
|
234 |
+
* Term of use : http://geoiplookup.net/terms-of-use.php
|
235 |
+
* Licence fee : free
|
236 |
+
* Rate limit : none
|
237 |
+
* Sample URL : http://api.geoiplookup.net/?query=2a00:1210:fffe:200::1
|
238 |
+
* Input type : IP address (IPv4, IPv6)
|
239 |
+
* Output type : xml
|
240 |
*/
|
241 |
+
class IP_Geo_Block_API_GeoIPLookup extends IP_Geo_Block_API {
|
242 |
protected $template = array(
|
243 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
244 |
+
'url' => 'http://api.geoiplookup.net/?query=%API_IP%',
|
245 |
+
'api' => array(),
|
|
|
|
|
246 |
'transform' => array(
|
247 |
+
'countryCode' => 'countrycode',
|
248 |
+
'countryName' => 'countryname',
|
249 |
+
'regionName' => 'countryname',
|
250 |
'cityName' => 'city',
|
251 |
'latitude' => 'latitude',
|
252 |
'longitude' => 'longitude',
|
260 |
* URL : https://ipinfo.io/
|
261 |
* Term of use : https://ipinfo.io/developers#terms
|
262 |
* Licence fee : free
|
263 |
+
* Rate limit : 1,000 lookups daily
|
264 |
* Sample URL : https://ipinfo.io/124.83.187.140/json
|
265 |
* Sample URL : https://ipinfo.io/124.83.187.140/country
|
266 |
* Input type : IP address (IPv4)
|
302 |
}
|
303 |
|
304 |
/**
|
305 |
+
* Class for ipapi
|
306 |
*
|
307 |
+
* URL : https://ipapi.com/
|
308 |
+
* Term of use : https://ipapi.com/terms
|
309 |
* Licence fee : free to use the API
|
310 |
+
* Rate limit : 10,000 reqests per month
|
311 |
+
* Sample URL : http://api.ipapi.com/2a00:1210:fffe:200::1?access_key=...
|
312 |
* Input type : IP address (IPv4, IPv6)
|
313 |
* Output type : json
|
314 |
*/
|
315 |
+
class IP_Geo_Block_API_ipapi extends IP_Geo_Block_API {
|
316 |
protected $template = array(
|
317 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
318 |
+
'url' => 'http://api.ipapi.com/%API_IP%?access_key=%API_KEY%',
|
319 |
'api' => array(),
|
320 |
'transform' => array(
|
321 |
+
'countryCode' => 'country_code',
|
322 |
+
'countryName' => 'country_name',
|
323 |
'cityName' => 'city',
|
324 |
+
'latitude' => 'latitude',
|
325 |
+
'longitude' => 'longitude',
|
326 |
+
'error' => 'error',
|
327 |
)
|
328 |
);
|
329 |
|
330 |
public function get_location( $ip, $args = array() ) {
|
331 |
$res = parent::get_location( $ip, $args );
|
332 |
+
if ( isset( $res['countryName'] ) ) {
|
333 |
+
$res['countryCode'] = esc_html( $res['countryCode'] );
|
334 |
+
$res['countryName'] = esc_html( $res['countryName'] );
|
335 |
+
$res['latitude' ] = esc_html( $res['latitude' ] );
|
336 |
+
$res['longitude' ] = esc_html( $res['longitude' ] );
|
337 |
return $res;
|
338 |
} else {
|
339 |
+
return array( 'errorMessage' => esc_html( $res['error']['info'] ) );
|
340 |
}
|
341 |
}
|
342 |
}
|
343 |
|
344 |
/**
|
345 |
+
* Class for Ipdata.co
|
346 |
*
|
347 |
+
* URL : https://ipdata.co/
|
348 |
+
* Term of use : https://ipdata.co/terms.html
|
349 |
* Licence fee : free
|
350 |
+
* Rate limit : 1,500 lookups free daily
|
351 |
+
* Sample URL : https://api.ipdata.co/8.8.8.8?api-key=...
|
352 |
* Input type : IP address (IPv4, IPv6)
|
353 |
+
* Output type : json
|
354 |
*/
|
355 |
+
class IP_Geo_Block_API_Ipdataco extends IP_Geo_Block_API {
|
356 |
protected $template = array(
|
357 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
358 |
+
'url' => 'https://api.ipdata.co/%API_IP%?api-key=%API_KEY%',
|
359 |
+
'api' => array(
|
360 |
+
'%API_FORMAT%' => 'json',
|
361 |
+
),
|
362 |
'transform' => array(
|
363 |
+
'countryCode' => 'country_code',
|
364 |
+
'countryName' => 'country_name',
|
365 |
+
'regionName' => 'region',
|
366 |
'cityName' => 'city',
|
367 |
'latitude' => 'latitude',
|
368 |
'longitude' => 'longitude',
|
371 |
}
|
372 |
|
373 |
/**
|
374 |
+
* Class for ipstack
|
375 |
*
|
376 |
+
* URL : https://ipstack.com/
|
377 |
+
* Term of use : https://ipstack.com/terms
|
378 |
+
* Licence fee : free for registered user
|
379 |
+
* Rate limit : 10,000 queries per month for free (https can be available for premium users)
|
380 |
+
* Sample URL : http://api.ipstack.com/186.116.207.169?access_key=YOUR_ACCESS_KEY&output=json&legacy=1
|
381 |
+
* Input type : IP address (IPv4, IPv6) / domain name
|
|
|
382 |
* Output type : json, xml
|
383 |
*/
|
384 |
+
class IP_Geo_Block_API_ipstack extends IP_Geo_Block_API {
|
385 |
protected $template = array(
|
386 |
'type' => IP_GEO_BLOCK_API_TYPE_BOTH,
|
387 |
+
'url' => 'http://api.ipstack.com/%API_IP%?access_key=%API_KEY%&output=%API_FORMAT%',
|
388 |
'api' => array(
|
389 |
'%API_FORMAT%' => 'json',
|
390 |
),
|
391 |
'transform' => array(
|
392 |
+
'countryCode' => 'country_code',
|
393 |
+
'countryName' => 'country_name',
|
394 |
+
'regionName' => 'region_name',
|
395 |
+
'cityName' => 'city',
|
396 |
+
'latitude' => 'latitude',
|
397 |
+
'longitude' => 'longitude',
|
|
|
398 |
)
|
399 |
);
|
400 |
}
|
450 |
// memory cache
|
451 |
protected static $memcache = array();
|
452 |
|
453 |
+
public static function update_cache( $hook, $validate, $settings, $countup = TRUE ) {
|
454 |
$time = $_SERVER['REQUEST_TIME'];
|
455 |
$cache = self::get_cache( $ip = $validate['ip'], $settings['cache_hold'] );
|
456 |
|
457 |
if ( $cache ) {
|
458 |
+
$fail = isset( $validate['fail'] ) ? $validate['fail'] : 0;
|
459 |
+
$call = $cache['reqs'] + ( $countup ? 1 : 0 ); // prevent duplicate count up
|
460 |
$last = $cache['last'];
|
461 |
$view = $cache['view'];
|
462 |
} else { // if new cache then reset these values
|
526 |
class IP_Geo_Block_Provider {
|
527 |
|
528 |
protected static $providers = array(
|
529 |
+
'IP-API.com' => array(
|
530 |
+
'key' => FALSE,
|
531 |
+
'type' => 'IPv4, IPv6 / free for non-commercial use',
|
532 |
+
'link' => '<a rel="noreferrer" href="http://ip-api.com/" title="IP-API.com - Free Geolocation API">http://ip-api.com/</a> (IPv4, IPv6 / free for non-commercial use)',
|
533 |
),
|
534 |
|
535 |
+
'GeoIPLookup' => array(
|
536 |
'key' => NULL,
|
537 |
'type' => 'IPv4, IPv6 / free',
|
538 |
+
'link' => '<a rel="noreferrer" href="http://geoiplookup.net/" title="What Is My IP Address | GeoIP Lookup">GeoIPLookup.net</a> (IPv4, IPv6 / free)',
|
539 |
),
|
540 |
|
541 |
+
'ipinfo.io' => array(
|
542 |
'key' => NULL,
|
543 |
'type' => 'IPv4, IPv6 / free',
|
544 |
+
'link' => '<a rel="noreferrer" href="https://ipinfo.io/" title="IP Address API and Data Solutions">https://ipinfo.io/</a> (IPv4, IPv6 / free up to 1,000 lookups daily)',
|
545 |
),
|
546 |
|
547 |
+
'ipapi' => array(
|
548 |
+
'key' => '',
|
549 |
+
'type' => 'IPv4, IPv6 / free',
|
550 |
+
'link' => '<a rel="noreferrer" href="https://ipapi.com/" title="ipapi - IP Address Lookup and Geolocation API">https://ipapi.com/</a> (IPv4, IPv6 / free up to 10,000 lookups monthly for registered user)',
|
551 |
),
|
552 |
|
553 |
'Ipdata.co' => array(
|
554 |
'key' => '',
|
555 |
'type' => 'IPv4, IPv6 / free',
|
556 |
+
'link' => '<a rel="noreferrer" href="https://ipdata.co/" title="ipdata.co - IP Geolocation and Threat Data API">https://ipdata.co/</a> (IPv4, IPv6 / free up to 1,500 lookups daily for registered user)',
|
557 |
),
|
558 |
|
559 |
'ipstack' => array(
|
628 |
* Returns providers name list which are checked in settings
|
629 |
*
|
630 |
*/
|
631 |
+
public static function get_valid_providers( $settings, $rand = TRUE, $cache = TRUE, $all = FALSE ) {
|
632 |
$list = array();
|
633 |
+
$providers = $settings['providers' ]; // list of not selected and selected with api key
|
634 |
$cache &= $settings['cache_hold']; // exclude `Cache` when `IP address cache` is disabled
|
635 |
|
636 |
+
foreach ( self::get_providers( 'key', $rand, $cache, empty( $settings['restrict_api'] ) || $all ) as $name => $key ) {
|
637 |
+
// ( if $name has api key ) || ( if $name that does not need api key is selected )
|
638 |
+
if ( ! empty( $providers[ $name ] ) || ( ! isset( $providers[ $name ] ) && NULL === $key ) ) {
|
639 |
+
$list[] = $name;
|
640 |
+
}
|
641 |
}
|
642 |
|
643 |
return $list;
|
661 |
);
|
662 |
|
663 |
// Scan API directory
|
664 |
+
$plugins = ( is_dir( $dir ) ? scandir( $dir, defined( 'SCANDIR_SORT_DESCENDING' ) ? SCANDIR_SORT_DESCENDING : 1 ) : FALSE );
|
665 |
|
666 |
// Load addons by heigher priority order
|
667 |
if ( FALSE !== $plugins ) {
|
classes/class-ip-geo-block-cron.php
CHANGED
@@ -171,6 +171,16 @@ class IP_Geo_Block_Cron {
|
|
171 |
|
172 |
public static function stop_update_db() {
|
173 |
wp_clear_scheduled_hook( IP_Geo_Block::CRON_NAME, array( FALSE ) ); // @since 2.1.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
}
|
175 |
|
176 |
/**
|
@@ -258,7 +268,7 @@ class IP_Geo_Block_Cron {
|
|
258 |
*/
|
259 |
public static function download_zip( $url, $args, $files, $modified ) {
|
260 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
261 |
-
$fs = IP_Geo_Block_FS::init(
|
262 |
|
263 |
// get extension
|
264 |
$ext = strtolower( pathinfo( $url, PATHINFO_EXTENSION ) );
|
171 |
|
172 |
public static function stop_update_db() {
|
173 |
wp_clear_scheduled_hook( IP_Geo_Block::CRON_NAME, array( FALSE ) ); // @since 2.1.0
|
174 |
+
|
175 |
+
// wait until updating has finished to avoid race condition with IP_Geo_Block_Opts::install_api()
|
176 |
+
$time = 0;
|
177 |
+
while ( ( $stat = get_transient( IP_Geo_Block::CRON_NAME ) ) && 'done' !== $stat ) {
|
178 |
+
sleep( 1 );
|
179 |
+
|
180 |
+
if ( ++$time > 5 * MINUTE_IN_SECONDS ) {
|
181 |
+
break;
|
182 |
+
}
|
183 |
+
}
|
184 |
}
|
185 |
|
186 |
/**
|
268 |
*/
|
269 |
public static function download_zip( $url, $args, $files, $modified ) {
|
270 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
271 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
272 |
|
273 |
// get extension
|
274 |
$ext = strtolower( pathinfo( $url, PATHINFO_EXTENSION ) );
|
classes/class-ip-geo-block-file.php
CHANGED
@@ -297,4 +297,34 @@ if (0) {
|
|
297 |
return unzip_file( $src, $this->absolute_path( $dst ) );
|
298 |
}
|
299 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
}
|
297 |
return unzip_file( $src, $this->absolute_path( $dst ) );
|
298 |
}
|
299 |
|
300 |
+
/**
|
301 |
+
* Get details for files in a directory or a specific file.
|
302 |
+
*
|
303 |
+
* @since 2.5.0
|
304 |
+
*
|
305 |
+
* @param string $path
|
306 |
+
* @param bool $include_hidden
|
307 |
+
* @param bool $recursive
|
308 |
+
* @return array|bool {
|
309 |
+
* Array of files. False if unable to list directory contents.
|
310 |
+
* @type string 'name' Name of the file/directory.
|
311 |
+
* @type string 'perms' *nix representation of permissions.
|
312 |
+
* @type int 'permsn' Octal representation of permissions.
|
313 |
+
* @type string 'owner' Owner name or ID.
|
314 |
+
* @type int 'size' Size of file in bytes.
|
315 |
+
* @type int 'lastmodunix' Last modified unix timestamp.
|
316 |
+
* @type mixed 'lastmod' Last modified month (3 letter) and day (without leading 0).
|
317 |
+
* @type int 'time' Last modified time.
|
318 |
+
* @type string 'type' Type of resource. 'f' for file, 'd' for directory.
|
319 |
+
* @type mixed 'files' If a directory and $recursive is true, contains another array of files.
|
320 |
+
* }
|
321 |
+
*/
|
322 |
+
public function dirlist( $path, $include_hidden = FALSE, $recursive = FALSE ) {
|
323 |
+
global $wp_filesystem;
|
324 |
+
if ( empty( $wp_filesystem ) )
|
325 |
+
return FALSE;
|
326 |
+
|
327 |
+
return $wp_filesystem->dirlist( $path, $include_hidden, $recursive );
|
328 |
+
}
|
329 |
+
|
330 |
}
|
classes/class-ip-geo-block-logs.php
CHANGED
@@ -442,7 +442,7 @@ class IP_Geo_Block_Logs {
|
|
442 |
|
443 |
private static function get_post_data( $hook, $validate, $settings ) {
|
444 |
// condition of masking password
|
445 |
-
$mask_pwd = IP_Geo_Block::is_passed( $validate['result'] );
|
446 |
|
447 |
// XML-RPC
|
448 |
if ( 'xmlrpc' === $hook ) {
|
@@ -581,10 +581,10 @@ class IP_Geo_Block_Logs {
|
|
581 |
|
582 |
public static function reset_sqlite_db() {
|
583 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
584 |
-
$fs = IP_Geo_Block_FS::init(
|
585 |
|
586 |
-
if ( FALSE !== ( $files =
|
587 |
-
foreach ( $files as $file ) {
|
588 |
if ( FALSE !== strpos( $file, IP_Geo_Block::PLUGIN_NAME ) ) {
|
589 |
$fs->delete( $dir . $file );
|
590 |
}
|
@@ -624,8 +624,8 @@ class IP_Geo_Block_Logs {
|
|
624 |
$posts = self::get_post_data( $hook, $validate, $settings );
|
625 |
$method = $_SERVER['REQUEST_METHOD'] . '[' . $_SERVER['SERVER_PORT'] . ']:' . $_SERVER['REQUEST_URI'];
|
626 |
|
627 |
-
// mark if
|
628 |
-
if (
|
629 |
$validate['result'] .= '^';
|
630 |
|
631 |
// anonymize ip address
|
442 |
|
443 |
private static function get_post_data( $hook, $validate, $settings ) {
|
444 |
// condition of masking password
|
445 |
+
$mask_pwd = ( IP_Geo_Block::is_passed( $validate['result'] ) || IP_Geo_Block::is_failed( $validate['result'] ) );
|
446 |
|
447 |
// XML-RPC
|
448 |
if ( 'xmlrpc' === $hook ) {
|
581 |
|
582 |
public static function reset_sqlite_db() {
|
583 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
584 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
585 |
|
586 |
+
if ( FALSE !== ( $files = $fs->dirlist( $dir = get_temp_dir() ) ) ) {
|
587 |
+
foreach ( array_keys( $files ) as $file ) {
|
588 |
if ( FALSE !== strpos( $file, IP_Geo_Block::PLUGIN_NAME ) ) {
|
589 |
$fs->delete( $dir . $file );
|
590 |
}
|
624 |
$posts = self::get_post_data( $hook, $validate, $settings );
|
625 |
$method = $_SERVER['REQUEST_METHOD'] . '[' . $_SERVER['SERVER_PORT'] . ']:' . $_SERVER['REQUEST_URI'];
|
626 |
|
627 |
+
// mark if any uploaded files exist
|
628 |
+
if ( ! empty( $_FILES ) )
|
629 |
$validate['result'] .= '^';
|
630 |
|
631 |
// anonymize ip address
|
classes/class-ip-geo-block-opts.php
CHANGED
@@ -16,7 +16,7 @@ class IP_Geo_Block_Opts {
|
|
16 |
*
|
17 |
*/
|
18 |
private static $option_table = array(
|
19 |
-
'version' => '3.0.
|
20 |
// since version 1.0
|
21 |
'providers' => array(), // List of providers and API keys
|
22 |
'comment' => array( // Message on the comment form
|
@@ -73,8 +73,8 @@ class IP_Geo_Block_Opts {
|
|
73 |
'retry' => 0, // Number of retry to download
|
74 |
'cycle' => 30, // Updating cycle (days)
|
75 |
),
|
76 |
-
// since version 3.0.9
|
77 |
-
'priority'
|
78 |
// since version 2.2.0
|
79 |
'anonymize' => TRUE, // Anonymize IP address to hide privacy
|
80 |
'signature' => '../,/wp-config.php,/passwd', // malicious signature
|
@@ -195,6 +195,14 @@ class IP_Geo_Block_Opts {
|
|
195 |
'link' => NULL, // key of login link
|
196 |
'hash' => NULL, // hash of 'link'
|
197 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
);
|
199 |
|
200 |
/**
|
@@ -386,16 +394,11 @@ class IP_Geo_Block_Opts {
|
|
386 |
$settings['live_update'] = $default['live_update'];
|
387 |
|
388 |
if ( version_compare( $version, '3.0.8' ) < 0 ) {
|
389 |
-
$settings['timeout' ] = $default['timeout'];
|
|
|
390 |
$settings['Geolite2']['use_asn'] = $settings['Maxmind']['use_asn'];
|
391 |
-
foreach ( array( 'ip_path', 'ip_last', 'asn_path', 'asn_last' ) as $tmp ) {
|
392 |
-
$settings['Geolite2'][ $tmp ] = $default['Geolite2'][ $tmp ];
|
393 |
-
}
|
394 |
}
|
395 |
|
396 |
-
if ( version_compare( $version, '3.0.9' ) < 0 )
|
397 |
-
$settings['priority'] = $default['priority'];
|
398 |
-
|
399 |
if ( version_compare( $version, '3.0.10' ) < 0 ) {
|
400 |
$settings['behavior'] = $default['behavior'];
|
401 |
$settings['public' ]['behavior'] = $default['public']['behavior'];
|
@@ -422,20 +425,28 @@ class IP_Geo_Block_Opts {
|
|
422 |
IP_Geo_Block_Logs::upgrade( $version );
|
423 |
|
424 |
if ( version_compare( $version, '3.0.16' ) < 0 ) {
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
430 |
}
|
431 |
}
|
432 |
|
433 |
// update package version number
|
434 |
$settings['version'] = IP_Geo_Block::VERSION;
|
435 |
|
436 |
-
// install addons for IP Geolocation database API ver. 1.1.
|
437 |
$providers = IP_Geo_Block_Provider::get_addons();
|
438 |
-
if ( empty( $providers ) || ! $settings['api_dir'] || ! file_exists( $settings['api_dir'] ) || version_compare( $version, '3.0.
|
439 |
$settings['api_dir'] = self::install_api( $settings );
|
440 |
|
441 |
$settings['request_ua'] = trim( str_replace( array( 'InfiniteWP' ), '', @$_SERVER['HTTP_USER_AGENT'] ) );
|
@@ -452,8 +463,10 @@ class IP_Geo_Block_Opts {
|
|
452 |
*
|
453 |
*/
|
454 |
private static function install_api( $settings ) {
|
|
|
|
|
455 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
456 |
-
$fs = IP_Geo_Block_FS::init(
|
457 |
|
458 |
$src = IP_Geo_Block_Util::slashit( IP_GEO_BLOCK_PATH . 'wp-content/' . IP_Geo_Block::GEOAPI_NAME );
|
459 |
$dst = IP_Geo_Block_Util::slashit( self::get_api_dir( $settings ) );
|
@@ -469,32 +482,36 @@ class IP_Geo_Block_Opts {
|
|
469 |
sprintf( __( 'Unable to write <code>%s</code>. Please check the permission.', 'ip-geo-block' ), '<code>' . $dst . '</code>' )
|
470 |
);
|
471 |
}
|
472 |
-
|
473 |
}
|
474 |
}
|
475 |
|
|
|
|
|
476 |
return $dst;
|
477 |
}
|
478 |
|
479 |
public static function uninstall_api( $settings ) {
|
480 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
481 |
-
$fs = IP_Geo_Block_FS::init(
|
482 |
|
483 |
return $fs->delete( self::get_api_dir( $settings ), TRUE ); // $recursive = true
|
484 |
}
|
485 |
|
486 |
private static function get_api_dir( $settings ) {
|
|
|
|
|
|
|
487 |
// wp-content
|
488 |
-
$dir = ( empty( $settings['api_dir'] ) || !
|
489 |
|
490 |
-
if ( !
|
491 |
// wp-content/uploads
|
492 |
$dir = wp_upload_dir();
|
493 |
$dir = $dir['basedir'];
|
494 |
|
495 |
-
if ( !
|
496 |
-
$dir =
|
497 |
-
}
|
498 |
}
|
499 |
|
500 |
return IP_Geo_Block_Util::slashit(
|
@@ -506,21 +523,24 @@ class IP_Geo_Block_Opts {
|
|
506 |
* Activate / Deactivate Must-use plugin / Advanced cache
|
507 |
*
|
508 |
*/
|
509 |
-
private static function remove_mu_plugin() {
|
510 |
-
|
511 |
-
|
512 |
-
|
|
|
513 |
return $fs->delete( $src ) ? TRUE : $src;
|
514 |
-
}
|
515 |
|
516 |
return TRUE;
|
517 |
}
|
518 |
|
519 |
-
public static function get_validation_timing() {
|
520 |
-
|
|
|
|
|
|
|
521 |
}
|
522 |
|
523 |
-
public static function setup_validation_timing( $settings = NULL ) {
|
524 |
switch ( $settings ? (int)$settings['validation']['timing'] : 0 ) {
|
525 |
case 0: // init
|
526 |
if ( TRUE !== ( $src = self::remove_mu_plugin() ) )
|
@@ -529,10 +549,10 @@ class IP_Geo_Block_Opts {
|
|
529 |
|
530 |
case 1: // mu-plugins
|
531 |
$src = IP_GEO_BLOCK_PATH . 'wp-content/mu-plugins/ip-geo-block-mu.php';
|
532 |
-
$dst = WPMU_PLUGIN_DIR . '/ip-geo-block-mu.php';
|
533 |
|
534 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
535 |
-
$fs = IP_Geo_Block_FS::init(
|
536 |
|
537 |
if ( ! $fs->is_file( $dst ) ) {
|
538 |
if ( ! $fs->is_dir( WPMU_PLUGIN_DIR ) && ! $fs->mkdir( WPMU_PLUGIN_DIR ) )
|
16 |
*
|
17 |
*/
|
18 |
private static $option_table = array(
|
19 |
+
'version' => '3.0.17',// Version of this table (not package)
|
20 |
// since version 1.0
|
21 |
'providers' => array(), // List of providers and API keys
|
22 |
'comment' => array( // Message on the comment form
|
73 |
'retry' => 0, // Number of retry to download
|
74 |
'cycle' => 30, // Updating cycle (days)
|
75 |
),
|
76 |
+
// since version 3.0.9, 3.0.17
|
77 |
+
'priority' => array( 0, PHP_INT_MAX ), // 0:high, 1:log for WP-ZEP
|
78 |
// since version 2.2.0
|
79 |
'anonymize' => TRUE, // Anonymize IP address to hide privacy
|
80 |
'signature' => '../,/wp-config.php,/passwd', // malicious signature
|
195 |
'link' => NULL, // key of login link
|
196 |
'hash' => NULL, // hash of 'link'
|
197 |
),
|
198 |
+
// since version 3.0.17
|
199 |
+
'monitor' => array(
|
200 |
+
'metadata' => TRUE,
|
201 |
+
),
|
202 |
+
'metadata' => array(
|
203 |
+
'pre_update_option' => array( 'siteurl', 'admin_email', 'users_can_register', 'default_role' ),
|
204 |
+
'pre_update_site_option' => array( 'siteurl', 'admin_email', 'registration' ),
|
205 |
+
),
|
206 |
);
|
207 |
|
208 |
/**
|
394 |
$settings['live_update'] = $default['live_update'];
|
395 |
|
396 |
if ( version_compare( $version, '3.0.8' ) < 0 ) {
|
397 |
+
$settings['timeout' ] = $default['timeout' ];
|
398 |
+
$settings['Geolite2'] = $default['Geolite2'];
|
399 |
$settings['Geolite2']['use_asn'] = $settings['Maxmind']['use_asn'];
|
|
|
|
|
|
|
400 |
}
|
401 |
|
|
|
|
|
|
|
402 |
if ( version_compare( $version, '3.0.10' ) < 0 ) {
|
403 |
$settings['behavior'] = $default['behavior'];
|
404 |
$settings['public' ]['behavior'] = $default['public']['behavior'];
|
425 |
IP_Geo_Block_Logs::upgrade( $version );
|
426 |
|
427 |
if ( version_compare( $version, '3.0.16' ) < 0 ) {
|
428 |
+
$settings['simulate'] = $settings['public']['simulate'];
|
429 |
+
unset( $settings['public']['simulate'] );
|
430 |
+
}
|
431 |
+
|
432 |
+
if ( version_compare( $version, '3.0.17' ) < 0 ) {
|
433 |
+
$settings['priority'] = $default['priority'];
|
434 |
+
$settings['monitor' ] = $default['monitor' ];
|
435 |
+
$settings['metadata'] = $default['metadata'];
|
436 |
+
|
437 |
+
// re-install mu-plugins to re-order the priority
|
438 |
+
if ( self::get_validation_timing( NULL ) ) {
|
439 |
+
self::remove_mu_plugin( NULL );
|
440 |
+
self::setup_validation_timing( $settings );
|
441 |
}
|
442 |
}
|
443 |
|
444 |
// update package version number
|
445 |
$settings['version'] = IP_Geo_Block::VERSION;
|
446 |
|
447 |
+
// install addons for IP Geolocation database API ver. 1.1.14 at IP Geo Block 3.0.17
|
448 |
$providers = IP_Geo_Block_Provider::get_addons();
|
449 |
+
if ( empty( $providers ) || ! $settings['api_dir'] || ! file_exists( $settings['api_dir'] ) || version_compare( $version, '3.0.17' ) < 0 )
|
450 |
$settings['api_dir'] = self::install_api( $settings );
|
451 |
|
452 |
$settings['request_ua'] = trim( str_replace( array( 'InfiniteWP' ), '', @$_SERVER['HTTP_USER_AGENT'] ) );
|
463 |
*
|
464 |
*/
|
465 |
private static function install_api( $settings ) {
|
466 |
+
IP_Geo_Block_Cron::stop_update_db();
|
467 |
+
|
468 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
469 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
470 |
|
471 |
$src = IP_Geo_Block_Util::slashit( IP_GEO_BLOCK_PATH . 'wp-content/' . IP_Geo_Block::GEOAPI_NAME );
|
472 |
$dst = IP_Geo_Block_Util::slashit( self::get_api_dir( $settings ) );
|
482 |
sprintf( __( 'Unable to write <code>%s</code>. Please check the permission.', 'ip-geo-block' ), '<code>' . $dst . '</code>' )
|
483 |
);
|
484 |
}
|
485 |
+
$dst = NULL;
|
486 |
}
|
487 |
}
|
488 |
|
489 |
+
IP_Geo_Block_Cron::start_update_db( $settings );
|
490 |
+
|
491 |
return $dst;
|
492 |
}
|
493 |
|
494 |
public static function uninstall_api( $settings ) {
|
495 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
496 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
497 |
|
498 |
return $fs->delete( self::get_api_dir( $settings ), TRUE ); // $recursive = true
|
499 |
}
|
500 |
|
501 |
private static function get_api_dir( $settings ) {
|
502 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
503 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
504 |
+
|
505 |
// wp-content
|
506 |
+
$dir = ( empty( $settings['api_dir'] ) || ! $fs->exists( $settings['api_dir'] ) ) ? WP_CONTENT_DIR : dirname( $settings['api_dir'] );
|
507 |
|
508 |
+
if ( ! $fs->is_writable( $dir ) ) {
|
509 |
// wp-content/uploads
|
510 |
$dir = wp_upload_dir();
|
511 |
$dir = $dir['basedir'];
|
512 |
|
513 |
+
if ( ! $fs->is_writable( $dir ) ) // wp-content/plugins/ip-geo-block
|
514 |
+
$dir = $fs->is_writable( IP_GEO_BLOCK_PATH ) ? IP_GEO_BLOCK_PATH : NULL;
|
|
|
515 |
}
|
516 |
|
517 |
return IP_Geo_Block_Util::slashit(
|
523 |
* Activate / Deactivate Must-use plugin / Advanced cache
|
524 |
*
|
525 |
*/
|
526 |
+
private static function remove_mu_plugin( $prefix = '!' ) {
|
527 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
528 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
529 |
+
|
530 |
+
if ( $fs->exists( $src = WPMU_PLUGIN_DIR . '/' . $prefix . 'ip-geo-block-mu.php' ) )
|
531 |
return $fs->delete( $src ) ? TRUE : $src;
|
|
|
532 |
|
533 |
return TRUE;
|
534 |
}
|
535 |
|
536 |
+
public static function get_validation_timing( $prefix = '!' ) {
|
537 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
538 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
539 |
+
|
540 |
+
return $fs->exists( WPMU_PLUGIN_DIR . '/' . $prefix . 'ip-geo-block-mu.php' ) ? 1 : 0;
|
541 |
}
|
542 |
|
543 |
+
public static function setup_validation_timing( $settings = NULL, $prefix = '!' ) {
|
544 |
switch ( $settings ? (int)$settings['validation']['timing'] : 0 ) {
|
545 |
case 0: // init
|
546 |
if ( TRUE !== ( $src = self::remove_mu_plugin() ) )
|
549 |
|
550 |
case 1: // mu-plugins
|
551 |
$src = IP_GEO_BLOCK_PATH . 'wp-content/mu-plugins/ip-geo-block-mu.php';
|
552 |
+
$dst = WPMU_PLUGIN_DIR . '/' . $prefix . 'ip-geo-block-mu.php';
|
553 |
|
554 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
555 |
+
$fs = IP_Geo_Block_FS::init( __FUNCTION__ );
|
556 |
|
557 |
if ( ! $fs->is_file( $dst ) ) {
|
558 |
if ( ! $fs->is_dir( WPMU_PLUGIN_DIR ) && ! $fs->mkdir( WPMU_PLUGIN_DIR ) )
|
classes/class-ip-geo-block-util.php
CHANGED
@@ -72,8 +72,10 @@ class IP_Geo_Block_Util {
|
|
72 |
* @see wp-includes/kses.php
|
73 |
*/
|
74 |
public static function kses( $str, $allow_tags = TRUE ) {
|
|
|
|
|
75 |
// wp_kses() is unavailable on advanced-cache.php
|
76 |
-
return wp_kses( $str, $allow_tags
|
77 |
}
|
78 |
|
79 |
/**
|
72 |
* @see wp-includes/kses.php
|
73 |
*/
|
74 |
public static function kses( $str, $allow_tags = TRUE ) {
|
75 |
+
is_array( $allow_tags ) or $allow_tags = ( $allow_tags ? $GLOBALS['allowedtags'] : array() );
|
76 |
+
|
77 |
// wp_kses() is unavailable on advanced-cache.php
|
78 |
+
return wp_kses( $str, $allow_tags );
|
79 |
}
|
80 |
|
81 |
/**
|
classes/class-ip-geo-block.php
CHANGED
@@ -15,10 +15,11 @@ class IP_Geo_Block {
|
|
15 |
* Unique identifier for this plugin.
|
16 |
*
|
17 |
*/
|
18 |
-
const VERSION = '3.0.
|
19 |
const GEOAPI_NAME = 'ip-geo-api';
|
20 |
const PLUGIN_NAME = 'ip-geo-block';
|
21 |
const OPTION_NAME = 'ip_geo_block_settings';
|
|
|
22 |
const CACHE_NAME = 'ip_geo_block_cache';
|
23 |
const CRON_NAME = 'ip_geo_block_cron';
|
24 |
|
@@ -61,8 +62,8 @@ class IP_Geo_Block {
|
|
61 |
file_exists( $key = IP_Geo_Block_Util::unslashit( $settings['api_dir'] ) . '/drop-in.php' ) and include( $key );
|
62 |
|
63 |
// global settings after `drop-in.php`
|
64 |
-
self::$live_log = get_transient( self::PLUGIN_NAME . '-live-log' );
|
65 |
self::$auth_key = apply_filters( self::PLUGIN_NAME . '-auth-key', self::PLUGIN_NAME . '-auth-nonce' );
|
|
|
66 |
|
67 |
// normalize requested uri and page
|
68 |
$key = preg_replace( array( '!\.+/!', '!//+!' ), '/', $_SERVER['REQUEST_URI'] );
|
@@ -94,30 +95,30 @@ class IP_Geo_Block {
|
|
94 |
'wp-signup.php' => 'login',
|
95 |
);
|
96 |
|
97 |
-
// wp-admin
|
98 |
if ( $this->target_type ) {
|
99 |
if ( 'admin' !== $this->target_type )
|
100 |
-
$loader->add_action( 'init', array( $this, 'validate_direct' ), $priority );
|
101 |
else // 'widget_init' for admin dashboard
|
102 |
-
$loader->add_action( 'admin_init', array( $this, 'validate_admin' ), $priority );
|
103 |
}
|
104 |
|
105 |
-
//
|
106 |
elseif ( isset( $list[ $this->pagenow ] ) ) {
|
107 |
if ( $validate[ $list[ $this->pagenow ] ] || self::$live_log )
|
108 |
-
$loader->add_action( 'init', array( $this, 'validate_' . $list[ $this->pagenow ] ), $priority );
|
109 |
}
|
110 |
|
111 |
-
// alternative of trackback
|
112 |
elseif ( 'POST' === $_SERVER['REQUEST_METHOD'] && 'trackback' === basename( $this->request_uri ) ) {
|
113 |
if ( $validate['comment'] || self::$live_log )
|
114 |
-
$loader->add_action( 'init', array( $this, 'validate_comment' ), $priority );
|
115 |
}
|
116 |
|
117 |
else {
|
118 |
// public facing pages
|
119 |
if ( $validate['public'] || ( ! empty( $_FILES ) && $validate['mimetype'] ) || self::$live_log /* && 'index.php' === $this->pagenow */ )
|
120 |
-
defined( 'DOING_CRON' ) or $loader->add_action( 'init', array( $this, 'validate_public' ), $priority );
|
121 |
|
122 |
// message text on comment form
|
123 |
if ( $settings['comment']['pos'] ) {
|
@@ -126,25 +127,25 @@ class IP_Geo_Block {
|
|
126 |
}
|
127 |
|
128 |
if ( $validate['comment'] || self::$live_log ) {
|
129 |
-
add_action( 'pre_comment_on_post', array( $this, 'validate_comment' ), $priority ); // wp-comments-post.php @since 2.8.0
|
130 |
-
add_action( 'pre_trackback_post', array( $this, 'validate_comment' ), $priority ); // wp-trackback.php @since 4.7.0
|
131 |
-
add_filter( 'preprocess_comment', array( $this, 'validate_comment' ), $priority ); // wp-includes/comment.php @since 1.5.0
|
132 |
|
133 |
// bbPress: prevent creating topic/relpy and rendering form
|
134 |
-
add_action( 'bbp_post_request_bbp-new-topic', array( $this, 'validate_comment' ), $priority );
|
135 |
-
add_action( 'bbp_post_request_bbp-new-reply', array( $this, 'validate_comment' ), $priority );
|
136 |
-
add_filter( 'bbp_current_user_can_access_create_topic_form', array( $this, 'validate_front' ), $priority );
|
137 |
-
add_filter( 'bbp_current_user_can_access_create_reply_form', array( $this, 'validate_front' ), $priority );
|
138 |
}
|
139 |
|
140 |
if ( $validate['login'] || self::$live_log ) {
|
141 |
// for hide/rename wp-login.php, BuddyPress: prevent registration and rendering form
|
142 |
-
add_action( 'login_init', array( $this, 'validate_login' ), $priority );
|
143 |
|
144 |
// only when block on front-end is disabled
|
145 |
if ( ! $validate['public'] || self::$live_log ) {
|
146 |
-
add_action( 'bp_core_screen_signup', array( $this, 'validate_login' ), $priority );
|
147 |
-
add_action( 'bp_signup_pre_validate', array( $this, 'validate_login' ), $priority );
|
148 |
}
|
149 |
}
|
150 |
|
@@ -154,12 +155,15 @@ class IP_Geo_Block {
|
|
154 |
|
155 |
// garbage collection for IP address cache, enque script for authentication
|
156 |
add_action( self::CACHE_NAME, array( $this, 'exec_cache_gc' ) );
|
157 |
-
add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_nonce' ), $priority ); // @since 2.8.0
|
158 |
}
|
159 |
|
160 |
// force to redirect on logout to remove nonce, embed a nonce into pages
|
161 |
-
add_filter( 'wp_redirect', array( $this, 'logout_redirect' ), 20,
|
162 |
-
add_filter( 'http_request_args', array( $this, 'request_nonce' ), $priority, 2 ); // @since 2.7.0
|
|
|
|
|
|
|
163 |
}
|
164 |
|
165 |
/**
|
@@ -208,6 +212,14 @@ class IP_Geo_Block {
|
|
208 |
return update_option( self::OPTION_NAME, $cache ? self::$settings = $settings : $settings );
|
209 |
}
|
210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
/**
|
212 |
* Remove a nonce from the redirecting URL on logout to prevent disclosing a nonce.
|
213 |
*
|
@@ -266,7 +278,7 @@ class IP_Geo_Block {
|
|
266 |
}
|
267 |
|
268 |
/**
|
269 |
-
* Get current IP address
|
270 |
*
|
271 |
*/
|
272 |
public static function get_ip_address( $settings = NULL ) {
|
@@ -289,6 +301,7 @@ class IP_Geo_Block {
|
|
289 |
*
|
290 |
*/
|
291 |
public static function is_passed ( $result ) { return 0 === strncmp( 'pass', $result, 4 ); }
|
|
|
292 |
public static function is_blocked( $result ) { return 0 !== strncmp( 'pass', $result, 4 ); }
|
293 |
public static function is_listed ( $code, $list ) { return FALSE !== strpos( $list, (string)$code ); }
|
294 |
|
@@ -332,8 +345,8 @@ class IP_Geo_Block {
|
|
332 |
*
|
333 |
*/
|
334 |
private static function _get_geolocation( $ip, $settings, $providers, $args = array(), $callback = 'get_country' ) {
|
335 |
-
// check loop back / private address
|
336 |
-
if ( IP_Geo_Block_Util::is_private_ip( $ip ) )
|
337 |
return self::make_validation( $ip, array( 'time' => 0, 'provider' => 'Private', 'code' => 'XX' ) );
|
338 |
|
339 |
// set arguments for wp_remote_get()
|
@@ -446,7 +459,7 @@ class IP_Geo_Block {
|
|
446 |
}
|
447 |
|
448 |
/**
|
449 |
-
* Load and show theme template
|
450 |
*
|
451 |
*/
|
452 |
private function show_theme_template( $code, $settings ) {
|
@@ -459,7 +472,7 @@ class IP_Geo_Block {
|
|
459 |
if ( $action = current_filter() ) { // `plugins_loaded`, `wp` or FALSE
|
460 |
add_action( // `wp` (on front-end target) is too late to apply `init`
|
461 |
'wp' === $action ? 'template_redirect' : 'init',
|
462 |
-
array( $this, 'load_theme_template' ), $settings['priority']
|
463 |
);
|
464 |
return TRUE; // load template at the specified action
|
465 |
}
|
@@ -489,6 +502,24 @@ class IP_Geo_Block {
|
|
489 |
return $title_parts;
|
490 |
}
|
491 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
492 |
/**
|
493 |
* Validate ip address.
|
494 |
*
|
@@ -496,9 +527,8 @@ class IP_Geo_Block {
|
|
496 |
* @param array $settings option settings
|
497 |
* @param boolean $block block if validation fails (for simulate)
|
498 |
* @param boolean $die send http response and die if validation fails (for validate_front )
|
499 |
-
* @param boolean $check_auth save log and block if validation fails (for admin dashboard)
|
500 |
*/
|
501 |
-
public function validate_ip( $hook, $settings, $block = TRUE, $die = TRUE
|
502 |
// register auxiliary validation functions
|
503 |
// priority high 3 close_xmlrpc, close_restapi
|
504 |
// 4 check_nonce (high), check_user (low)
|
@@ -510,7 +540,7 @@ class IP_Geo_Block {
|
|
510 |
// priority low 10 check_page (high), validate_country (low)
|
511 |
$var = self::PLUGIN_NAME . '-' . $hook;
|
512 |
$settings['validation' ]['mimetype' ] and add_filter( $var, array( $this, 'check_upload' ), 5, 2 );
|
513 |
-
$
|
514 |
$settings['extra_ips' ] = apply_filters( self::PLUGIN_NAME . '-extra-ips', $settings['extra_ips'], $hook );
|
515 |
$settings['extra_ips' ]['black_list'] and add_filter( $var, array( $this, 'check_ips_black' ), 7, 2 );
|
516 |
$settings['extra_ips' ]['white_list'] and add_filter( $var, array( $this, 'check_ips_white' ), 7, 2 );
|
@@ -541,19 +571,8 @@ class IP_Geo_Block {
|
|
541 |
break;
|
542 |
}
|
543 |
|
544 |
-
if ( $
|
545 |
-
|
546 |
-
IP_Geo_Block_Logs::record_logs( $hook, $validate, $settings, $block = self::is_blocked( $validate['result'] ) );
|
547 |
-
IP_Geo_Block_API_Cache::update_cache( $hook, $validate, $settings );
|
548 |
-
|
549 |
-
// update statistics
|
550 |
-
if ( $settings['save_statistics'] && ! $validate['auth'] )
|
551 |
-
IP_Geo_Block_Logs::update_stat( $hook, $validate, $settings );
|
552 |
-
|
553 |
-
// send response code to refuse
|
554 |
-
if ( empty( $settings['simulate'] ) && $block && $die )
|
555 |
-
$this->send_response( $hook, $validate, $settings );
|
556 |
-
}
|
557 |
|
558 |
return $validate;
|
559 |
}
|
@@ -586,7 +605,7 @@ class IP_Geo_Block {
|
|
586 |
add_filter( self::PLUGIN_NAME . '-xmlrpc', array( $this, 'close_xmlrpc' ), 3, 2 );
|
587 |
|
588 |
else // wp-includes/class-wp-xmlrpc-server.php @since 3.5.0
|
589 |
-
add_filter( 'xmlrpc_login_error', array( $this, 'auth_fail' ), $settings['priority'] );
|
590 |
|
591 |
$this->validate_ip( 'xmlrpc', $settings );
|
592 |
}
|
@@ -616,7 +635,7 @@ class IP_Geo_Block {
|
|
616 |
! empty( $settings['login_action']['login'] ) and $settings['login_action']['logout'] = TRUE;
|
617 |
|
618 |
// avoid conflict with WP Limit Login Attempts (wp-includes/pluggable.php @since 2.5.0)
|
619 |
-
! empty( $_POST ) and add_action( 'wp_login_failed', array( $this, 'auth_fail' ), $settings['priority'] );
|
620 |
|
621 |
// verify emergency login key
|
622 |
if ( 'login' === $action && ! empty( $_REQUEST[ self::PLUGIN_NAME . '-key' ] ) &&
|
@@ -634,7 +653,7 @@ class IP_Geo_Block {
|
|
634 |
}
|
635 |
|
636 |
/**
|
637 |
-
* Check exceptions
|
638 |
*
|
639 |
*/
|
640 |
private function check_exceptions( $action, $page, $exceptions = array() ) {
|
@@ -747,7 +766,7 @@ class IP_Geo_Block {
|
|
747 |
}
|
748 |
|
749 |
/**
|
750 |
-
* Auxiliary validation functions
|
751 |
*
|
752 |
*/
|
753 |
public function auth_fail( $something = NULL ) {
|
@@ -755,14 +774,13 @@ class IP_Geo_Block {
|
|
755 |
$time = microtime( TRUE );
|
756 |
$settings = self::get_option();
|
757 |
if ( $cache = IP_Geo_Block_API_Cache::get_cache( self::$remote_addr, $settings['cache_hold'] ) ) {
|
|
|
758 |
$validate = self::make_validation( self::$remote_addr, array(
|
759 |
-
'result' => 'failed',
|
760 |
'provider' => 'Cache',
|
761 |
'time' => microtime( TRUE ) - $time,
|
762 |
) + $cache );
|
763 |
|
764 |
-
$cache = IP_Geo_Block_API_Cache::update_cache( $hook = defined( 'XMLRPC_REQUEST' ) ? 'xmlrpc' : 'login', $validate, $settings );
|
765 |
-
|
766 |
// the whitelist of IP address should be prior
|
767 |
if ( ! $this->check_ips( $validate, $settings['extra_ips']['white_list'] ) ) {
|
768 |
if ( (int)$settings['login_fails'] >= 0 && $cache['fail'] > max( 0, (int)$settings['login_fails'] ) )
|
@@ -776,16 +794,8 @@ class IP_Geo_Block {
|
|
776 |
// apply filter hook for emergent functionality
|
777 |
$validate = apply_filters( self::PLUGIN_NAME . '-login', $validate, $settings );
|
778 |
|
779 |
-
//
|
780 |
-
|
781 |
-
|
782 |
-
// send response code to refuse if login attempts is exceeded
|
783 |
-
if ( 'failed' !== $validate['result'] ) {
|
784 |
-
if ( $settings['save_statistics'] )
|
785 |
-
IP_Geo_Block_Logs::update_stat( $hook, $validate, $settings );
|
786 |
-
|
787 |
-
$this->send_response( $hook, $validate, $settings );
|
788 |
-
}
|
789 |
}
|
790 |
|
791 |
return $something; // pass through
|
@@ -875,8 +885,9 @@ class IP_Geo_Block {
|
|
875 |
$j = explode( '/', $i, 2 );
|
876 |
$j[1] = isset( $j[1] ) ? min( 32, max( 0, (int)$j[1] ) ) : 32;
|
877 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
878 |
-
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) && Net_IPv4::ipInNetwork( $ip, $j[0].'/'.$j[1] ) ) )
|
879 |
return TRUE;
|
|
|
880 |
}
|
881 |
}
|
882 |
|
@@ -887,8 +898,9 @@ class IP_Geo_Block {
|
|
887 |
$j = explode( '/', $i, 2 );
|
888 |
$j[1] = isset( $j[1] ) ? min( 128, max( 0, (int)$j[1] ) ) : 128;
|
889 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
890 |
-
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) && Net_IPv6::isInNetmask( $ip, $j[0].'/'.$j[1] ) ) )
|
891 |
return TRUE;
|
|
|
892 |
}
|
893 |
}
|
894 |
|
@@ -903,6 +915,66 @@ class IP_Geo_Block {
|
|
903 |
return self::check_ips( $validate, $settings['extra_ips']['black_list'] ) ? $validate + array( 'result' => 'extra' ) : $validate;
|
904 |
}
|
905 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
906 |
/**
|
907 |
* Validate on public facing pages.
|
908 |
*
|
@@ -1048,7 +1120,7 @@ class IP_Geo_Block {
|
|
1048 |
}
|
1049 |
|
1050 |
/**
|
1051 |
-
* Handlers of cron job for database and garbage collection for cache
|
1052 |
*
|
1053 |
*/
|
1054 |
public function exec_update_db( $immediate = FALSE ) {
|
15 |
* Unique identifier for this plugin.
|
16 |
*
|
17 |
*/
|
18 |
+
const VERSION = '3.0.17';
|
19 |
const GEOAPI_NAME = 'ip-geo-api';
|
20 |
const PLUGIN_NAME = 'ip-geo-block';
|
21 |
const OPTION_NAME = 'ip_geo_block_settings';
|
22 |
+
const OPTION_META = 'ip_geo_block_metadata';
|
23 |
const CACHE_NAME = 'ip_geo_block_cache';
|
24 |
const CRON_NAME = 'ip_geo_block_cron';
|
25 |
|
62 |
file_exists( $key = IP_Geo_Block_Util::unslashit( $settings['api_dir'] ) . '/drop-in.php' ) and include( $key );
|
63 |
|
64 |
// global settings after `drop-in.php`
|
|
|
65 |
self::$auth_key = apply_filters( self::PLUGIN_NAME . '-auth-key', self::PLUGIN_NAME . '-auth-nonce' );
|
66 |
+
self::$live_log = ( $validate['reclogs'] ? get_transient( self::PLUGIN_NAME . '-live-log' ) : FALSE );
|
67 |
|
68 |
// normalize requested uri and page
|
69 |
$key = preg_replace( array( '!\.+/!', '!//+!' ), '/', $_SERVER['REQUEST_URI'] );
|
95 |
'wp-signup.php' => 'login',
|
96 |
);
|
97 |
|
98 |
+
// register target: (wp-admin|wp-includes|wp-content/(plugins|themes|language|uploads))
|
99 |
if ( $this->target_type ) {
|
100 |
if ( 'admin' !== $this->target_type )
|
101 |
+
$loader->add_action( 'init', array( $this, 'validate_direct' ), $priority[1] );
|
102 |
else // 'widget_init' for admin dashboard
|
103 |
+
$loader->add_action( 'admin_init', array( $this, 'validate_admin' ), $priority[1] );
|
104 |
}
|
105 |
|
106 |
+
// register target: (comment|xmlrpc|login|public)
|
107 |
elseif ( isset( $list[ $this->pagenow ] ) ) {
|
108 |
if ( $validate[ $list[ $this->pagenow ] ] || self::$live_log )
|
109 |
+
$loader->add_action( 'init', array( $this, 'validate_' . $list[ $this->pagenow ] ), $priority[0] );
|
110 |
}
|
111 |
|
112 |
+
// register target: alternative of trackback
|
113 |
elseif ( 'POST' === $_SERVER['REQUEST_METHOD'] && 'trackback' === basename( $this->request_uri ) ) {
|
114 |
if ( $validate['comment'] || self::$live_log )
|
115 |
+
$loader->add_action( 'init', array( $this, 'validate_comment' ), $priority[0] );
|
116 |
}
|
117 |
|
118 |
else {
|
119 |
// public facing pages
|
120 |
if ( $validate['public'] || ( ! empty( $_FILES ) && $validate['mimetype'] ) || self::$live_log /* && 'index.php' === $this->pagenow */ )
|
121 |
+
defined( 'DOING_CRON' ) or $loader->add_action( 'init', array( $this, 'validate_public' ), $priority[0] );
|
122 |
|
123 |
// message text on comment form
|
124 |
if ( $settings['comment']['pos'] ) {
|
127 |
}
|
128 |
|
129 |
if ( $validate['comment'] || self::$live_log ) {
|
130 |
+
add_action( 'pre_comment_on_post', array( $this, 'validate_comment' ), $priority[0] ); // wp-comments-post.php @since 2.8.0
|
131 |
+
add_action( 'pre_trackback_post', array( $this, 'validate_comment' ), $priority[0] ); // wp-trackback.php @since 4.7.0
|
132 |
+
add_filter( 'preprocess_comment', array( $this, 'validate_comment' ), $priority[0] ); // wp-includes/comment.php @since 1.5.0
|
133 |
|
134 |
// bbPress: prevent creating topic/relpy and rendering form
|
135 |
+
add_action( 'bbp_post_request_bbp-new-topic', array( $this, 'validate_comment' ), $priority[0] );
|
136 |
+
add_action( 'bbp_post_request_bbp-new-reply', array( $this, 'validate_comment' ), $priority[0] );
|
137 |
+
add_filter( 'bbp_current_user_can_access_create_topic_form', array( $this, 'validate_front' ), $priority[0] );
|
138 |
+
add_filter( 'bbp_current_user_can_access_create_reply_form', array( $this, 'validate_front' ), $priority[0] );
|
139 |
}
|
140 |
|
141 |
if ( $validate['login'] || self::$live_log ) {
|
142 |
// for hide/rename wp-login.php, BuddyPress: prevent registration and rendering form
|
143 |
+
add_action( 'login_init', array( $this, 'validate_login' ), $priority[0] );
|
144 |
|
145 |
// only when block on front-end is disabled
|
146 |
if ( ! $validate['public'] || self::$live_log ) {
|
147 |
+
add_action( 'bp_core_screen_signup', array( $this, 'validate_login' ), $priority[0] );
|
148 |
+
add_action( 'bp_signup_pre_validate', array( $this, 'validate_login' ), $priority[0] );
|
149 |
}
|
150 |
}
|
151 |
|
155 |
|
156 |
// garbage collection for IP address cache, enque script for authentication
|
157 |
add_action( self::CACHE_NAME, array( $this, 'exec_cache_gc' ) );
|
158 |
+
add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_nonce' ), $priority[0] ); // @since 2.8.0
|
159 |
}
|
160 |
|
161 |
// force to redirect on logout to remove nonce, embed a nonce into pages
|
162 |
+
add_filter( 'wp_redirect', array( $this, 'logout_redirect' ), 20, 2 ); // logout_redirect @4.2
|
163 |
+
add_filter( 'http_request_args', array( $this, 'request_nonce' ), $priority[1], 2 ); // @since 2.7.0
|
164 |
+
|
165 |
+
// register validation of updating metadata
|
166 |
+
$this->validate_metadata( $settings, $priority[0] );
|
167 |
}
|
168 |
|
169 |
/**
|
212 |
return update_option( self::OPTION_NAME, $cache ? self::$settings = $settings : $settings );
|
213 |
}
|
214 |
|
215 |
+
public static function get_metadata( $cache = TRUE ) {
|
216 |
+
return ( $metadata = get_option( self::OPTION_META ) ) ? $metadata : array();
|
217 |
+
}
|
218 |
+
|
219 |
+
public static function update_metadata( $metadata, $cache = TRUE ) {
|
220 |
+
return update_option( self::OPTION_META, $metadata );
|
221 |
+
}
|
222 |
+
|
223 |
/**
|
224 |
* Remove a nonce from the redirecting URL on logout to prevent disclosing a nonce.
|
225 |
*
|
278 |
}
|
279 |
|
280 |
/**
|
281 |
+
* Get current IP address.
|
282 |
*
|
283 |
*/
|
284 |
public static function get_ip_address( $settings = NULL ) {
|
301 |
*
|
302 |
*/
|
303 |
public static function is_passed ( $result ) { return 0 === strncmp( 'pass', $result, 4 ); }
|
304 |
+
public static function is_failed ( $result ) { return 0 === strncmp( 'fail', $result, 4 ); }
|
305 |
public static function is_blocked( $result ) { return 0 !== strncmp( 'pass', $result, 4 ); }
|
306 |
public static function is_listed ( $code, $list ) { return FALSE !== strpos( $list, (string)$code ); }
|
307 |
|
345 |
*
|
346 |
*/
|
347 |
private static function _get_geolocation( $ip, $settings, $providers, $args = array(), $callback = 'get_country' ) {
|
348 |
+
// check loop back / private address / empty provider
|
349 |
+
if ( IP_Geo_Block_Util::is_private_ip( $ip ) || count( $providers ) <= 1 )
|
350 |
return self::make_validation( $ip, array( 'time' => 0, 'provider' => 'Private', 'code' => 'XX' ) );
|
351 |
|
352 |
// set arguments for wp_remote_get()
|
459 |
}
|
460 |
|
461 |
/**
|
462 |
+
* Load and show theme template.
|
463 |
*
|
464 |
*/
|
465 |
private function show_theme_template( $code, $settings ) {
|
472 |
if ( $action = current_filter() ) { // `plugins_loaded`, `wp` or FALSE
|
473 |
add_action( // `wp` (on front-end target) is too late to apply `init`
|
474 |
'wp' === $action ? 'template_redirect' : 'init',
|
475 |
+
array( $this, 'load_theme_template' ), $settings['priority'][1]
|
476 |
);
|
477 |
return TRUE; // load template at the specified action
|
478 |
}
|
502 |
return $title_parts;
|
503 |
}
|
504 |
|
505 |
+
/**
|
506 |
+
* The last process of validation.
|
507 |
+
*
|
508 |
+
*/
|
509 |
+
private function endof_validate( $hook, $validate, $settings, $block = TRUE, $die = TRUE, $countup = TRUE ) {
|
510 |
+
// update cache and record logs
|
511 |
+
IP_Geo_Block_API_Cache::update_cache( $hook, $validate, $settings, $countup );
|
512 |
+
IP_Geo_Block_Logs::record_logs( $hook, $validate, $settings, self::is_blocked( $validate['result'] ) );
|
513 |
+
|
514 |
+
if ( $block ) {
|
515 |
+
if ( $settings['save_statistics'] && ! $validate['auth'] )
|
516 |
+
IP_Geo_Block_Logs::update_stat( $hook, $validate, $settings );
|
517 |
+
|
518 |
+
if ( ! $settings['simulate'] && $die )
|
519 |
+
$this->send_response( $hook, $validate, $settings );
|
520 |
+
}
|
521 |
+
}
|
522 |
+
|
523 |
/**
|
524 |
* Validate ip address.
|
525 |
*
|
527 |
* @param array $settings option settings
|
528 |
* @param boolean $block block if validation fails (for simulate)
|
529 |
* @param boolean $die send http response and die if validation fails (for validate_front )
|
|
|
530 |
*/
|
531 |
+
public function validate_ip( $hook, $settings, $block = TRUE, $die = TRUE ) {
|
532 |
// register auxiliary validation functions
|
533 |
// priority high 3 close_xmlrpc, close_restapi
|
534 |
// 4 check_nonce (high), check_user (low)
|
540 |
// priority low 10 check_page (high), validate_country (low)
|
541 |
$var = self::PLUGIN_NAME . '-' . $hook;
|
542 |
$settings['validation' ]['mimetype' ] and add_filter( $var, array( $this, 'check_upload' ), 5, 2 );
|
543 |
+
$die and add_filter( $var, array( $this, 'check_auth' ), 6, 2 );
|
544 |
$settings['extra_ips' ] = apply_filters( self::PLUGIN_NAME . '-extra-ips', $settings['extra_ips'], $hook );
|
545 |
$settings['extra_ips' ]['black_list'] and add_filter( $var, array( $this, 'check_ips_black' ), 7, 2 );
|
546 |
$settings['extra_ips' ]['white_list'] and add_filter( $var, array( $this, 'check_ips_white' ), 7, 2 );
|
571 |
break;
|
572 |
}
|
573 |
|
574 |
+
if ( $die ) // send response code to die if validation fails
|
575 |
+
$this->endof_validate( $hook, $validate, $settings, self::is_blocked( $validate['result'] ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
576 |
|
577 |
return $validate;
|
578 |
}
|
605 |
add_filter( self::PLUGIN_NAME . '-xmlrpc', array( $this, 'close_xmlrpc' ), 3, 2 );
|
606 |
|
607 |
else // wp-includes/class-wp-xmlrpc-server.php @since 3.5.0
|
608 |
+
add_filter( 'xmlrpc_login_error', array( $this, 'auth_fail' ), $settings['priority'][0] );
|
609 |
|
610 |
$this->validate_ip( 'xmlrpc', $settings );
|
611 |
}
|
635 |
! empty( $settings['login_action']['login'] ) and $settings['login_action']['logout'] = TRUE;
|
636 |
|
637 |
// avoid conflict with WP Limit Login Attempts (wp-includes/pluggable.php @since 2.5.0)
|
638 |
+
! empty( $_POST ) and add_action( 'wp_login_failed', array( $this, 'auth_fail' ), $settings['priority'][0] );
|
639 |
|
640 |
// verify emergency login key
|
641 |
if ( 'login' === $action && ! empty( $_REQUEST[ self::PLUGIN_NAME . '-key' ] ) &&
|
653 |
}
|
654 |
|
655 |
/**
|
656 |
+
* Check exceptions.
|
657 |
*
|
658 |
*/
|
659 |
private function check_exceptions( $action, $page, $exceptions = array() ) {
|
766 |
}
|
767 |
|
768 |
/**
|
769 |
+
* Auxiliary validation functions.
|
770 |
*
|
771 |
*/
|
772 |
public function auth_fail( $something = NULL ) {
|
774 |
$time = microtime( TRUE );
|
775 |
$settings = self::get_option();
|
776 |
if ( $cache = IP_Geo_Block_API_Cache::get_cache( self::$remote_addr, $settings['cache_hold'] ) ) {
|
777 |
+
$cache['fail']++;
|
778 |
$validate = self::make_validation( self::$remote_addr, array(
|
779 |
+
'result' => 'failed',
|
780 |
'provider' => 'Cache',
|
781 |
'time' => microtime( TRUE ) - $time,
|
782 |
) + $cache );
|
783 |
|
|
|
|
|
784 |
// the whitelist of IP address should be prior
|
785 |
if ( ! $this->check_ips( $validate, $settings['extra_ips']['white_list'] ) ) {
|
786 |
if ( (int)$settings['login_fails'] >= 0 && $cache['fail'] > max( 0, (int)$settings['login_fails'] ) )
|
794 |
// apply filter hook for emergent functionality
|
795 |
$validate = apply_filters( self::PLUGIN_NAME . '-login', $validate, $settings );
|
796 |
|
797 |
+
// send response code to die if the number of login attempts exceeds the limit
|
798 |
+
$this->endof_validate( defined( 'XMLRPC_REQUEST' ) ? 'xmlrpc' : 'login', $validate, $settings, TRUE, 'failed' !== $validate['result'], FALSE );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
799 |
}
|
800 |
|
801 |
return $something; // pass through
|
885 |
$j = explode( '/', $i, 2 );
|
886 |
$j[1] = isset( $j[1] ) ? min( 32, max( 0, (int)$j[1] ) ) : 32;
|
887 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
888 |
+
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) && Net_IPv4::ipInNetwork( $ip, $j[0].'/'.$j[1] ) ) ) {
|
889 |
return TRUE;
|
890 |
+
}
|
891 |
}
|
892 |
}
|
893 |
|
898 |
$j = explode( '/', $i, 2 );
|
899 |
$j[1] = isset( $j[1] ) ? min( 128, max( 0, (int)$j[1] ) ) : 128;
|
900 |
if ( ( ! empty( $validate['asn'] ) && $validate['asn'] === $j[0] ) ||
|
901 |
+
( filter_var( $j[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) && Net_IPv6::isInNetmask( $ip, $j[0].'/'.$j[1] ) ) ) {
|
902 |
return TRUE;
|
903 |
+
}
|
904 |
}
|
905 |
}
|
906 |
|
915 |
return self::check_ips( $validate, $settings['extra_ips']['black_list'] ) ? $validate + array( 'result' => 'extra' ) : $validate;
|
916 |
}
|
917 |
|
918 |
+
/**
|
919 |
+
* Validate updating metadata.
|
920 |
+
*
|
921 |
+
*/
|
922 |
+
private function validate_metadata( $settings, $priority = 10 ) {
|
923 |
+
// @since 2.6.0 apply_filters( "pre_update_option_{$option}", $value, $old_value, $option ); @since 4.4.0 `$option` was added.
|
924 |
+
// @since 2.9.0 apply_filters( "pre_update_site_option_{$option}", $value, $old_value, $option, $network_id );
|
925 |
+
foreach ( array( 'pre_update_option', 'pre_update_site_option' ) as $key ) {
|
926 |
+
foreach ( $settings['metadata'][ $key ] as $option ) {
|
927 |
+
add_filter( "{$key}_{$option}", array( $this, 'check_capability' ), $priority, 3 );
|
928 |
+
}
|
929 |
+
}
|
930 |
+
|
931 |
+
/**
|
932 |
+
* @since 2.9.0
|
933 |
+
* do_action( 'updated_option', $option, $old_value, $value );
|
934 |
+
* @since 3.0.0, @since 4.7.0 The `$network_id` parameter was added.
|
935 |
+
* do_action( 'update_site_option', $option, $value, $old_value, $network_id );
|
936 |
+
*/
|
937 |
+
if ( ! empty( $settings['monitor']['metadata'] ) ) {
|
938 |
+
add_action( 'updated_option', array( $this, 'update_meta_stats' ), $priority, 1 );
|
939 |
+
add_action( 'update_site_option', array( $this, 'update_meta_stats' ), $priority, 1 );
|
940 |
+
}
|
941 |
+
}
|
942 |
+
|
943 |
+
public function update_meta_stats( $option ) {
|
944 |
+
if ( FALSE === strpos( $option, 'transient' ) && self::OPTION_META !== $option ) {
|
945 |
+
$which = IP_Geo_Block_Util::current_user_can( 'manage_options' ) ||
|
946 |
+
IP_Geo_Block_Util::current_user_can( 'manage_network_options' ) ? 0 : 1;
|
947 |
+
|
948 |
+
$metadata = self::get_metadata();
|
949 |
+
$action = current_filter(); // @since 2.5.0
|
950 |
+
|
951 |
+
if ( ! isset( $metadata[ $action ][ $option ] ) )
|
952 |
+
$metadata[ $action ][ $option ] = array( 0, 0 );
|
953 |
+
|
954 |
+
$metadata[ $action ][ $option ][ $which ]++;
|
955 |
+
self::update_metadata( $metadata );
|
956 |
+
}
|
957 |
+
}
|
958 |
+
|
959 |
+
public function check_capability( $value, $old_value, $option = NULL ) {
|
960 |
+
// check capability
|
961 |
+
if ( ! IP_Geo_Block_Util::current_user_can( 'manage_options' ) && ! IP_Geo_Block_Util::current_user_can( 'manage_network_options' ) ) {
|
962 |
+
$time = microtime( TRUE );
|
963 |
+
$settings = self::get_option();
|
964 |
+
$cache = IP_Geo_Block_API_Cache::get_cache( self::$remote_addr, $settings['cache_hold'] );
|
965 |
+
$validate = self::make_validation( self::$remote_addr, array(
|
966 |
+
'result' => 'badcap',
|
967 |
+
'provider' => 'Cache',
|
968 |
+
'time' => microtime( TRUE ) - $time,
|
969 |
+
) + $cache );
|
970 |
+
|
971 |
+
// send response code to die if the current user does not have the right capability
|
972 |
+
$this->endof_validate( $this->target_type, $validate, $settings, TRUE, TRUE, FALSE );
|
973 |
+
}
|
974 |
+
|
975 |
+
return $value;
|
976 |
+
}
|
977 |
+
|
978 |
/**
|
979 |
* Validate on public facing pages.
|
980 |
*
|
1120 |
}
|
1121 |
|
1122 |
/**
|
1123 |
+
* Handlers of cron job for database and garbage collection for cache.
|
1124 |
*
|
1125 |
*/
|
1126 |
public function exec_update_db( $immediate = FALSE ) {
|
ip-geo-block.php
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
* Plugin Name: IP Geo Block
|
14 |
* Plugin URI: https://wordpress.org/plugins/ip-geo-block/
|
15 |
* Description: It blocks any spams, login attempts and malicious access to the admin area posted from outside your nation, and also prevents zero-day exploit.
|
16 |
-
* Version: 3.0.
|
17 |
* Author: tokkonopapa
|
18 |
* Author URI: https://www.ipgeoblock.com/
|
19 |
* Text Domain: ip-geo-block
|
13 |
* Plugin Name: IP Geo Block
|
14 |
* Plugin URI: https://wordpress.org/plugins/ip-geo-block/
|
15 |
* Description: It blocks any spams, login attempts and malicious access to the admin area posted from outside your nation, and also prevents zero-day exploit.
|
16 |
+
* Version: 3.0.17
|
17 |
* Author: tokkonopapa
|
18 |
* Author URI: https://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
@@ -2,10 +2,10 @@
|
|
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 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
-
"POT-Creation-Date: 2018-
|
8 |
-
"PO-Revision-Date: 2018-
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
@@ -28,167 +28,171 @@ msgstr ""
|
|
28 |
"自国以外から投稿されるスパム、ログインフォーム、さらにゼロデイ攻撃を含む管理領域への悪意あるアクセス"
|
29 |
"からサイトを守ります。"
|
30 |
|
31 |
-
#: admin/class-ip-geo-block-admin.php:
|
32 |
msgid "Are you sure ?"
|
33 |
msgstr "実行してもよいですか?"
|
34 |
|
35 |
-
#: admin/class-ip-geo-block-admin.php:
|
36 |
-
#: admin/class-ip-geo-block-admin.php:
|
37 |
msgid "Open a new window"
|
38 |
msgstr "別窓で開く"
|
39 |
|
40 |
-
#: admin/class-ip-geo-block-admin.php:
|
41 |
msgid "Generate new link"
|
42 |
msgstr "新しいリンクを生成"
|
43 |
|
44 |
-
#: admin/class-ip-geo-block-admin.php:
|
45 |
msgid "Delete current link"
|
46 |
msgstr "生成したリンクを削除"
|
47 |
|
48 |
-
#: admin/class-ip-geo-block-admin.php:
|
49 |
msgid ""
|
50 |
"Please add the following link to favorites / bookmarks in your browser : "
|
51 |
msgstr "次のリンクをブラウザのお気に入り/ブックマークに追加して下さい : "
|
52 |
|
53 |
-
#: admin/class-ip-geo-block-admin.php:
|
54 |
msgid "ajax for logged-in user"
|
55 |
msgstr "認証済ユーザー用 ajax"
|
56 |
|
57 |
-
#: admin/class-ip-geo-block-admin.php:
|
58 |
msgid "ajax for non logged-in user"
|
59 |
msgstr "未認証ユーザー用 ajax"
|
60 |
|
61 |
-
#: admin/class-ip-geo-block-admin.php:
|
62 |
#, php-format
|
63 |
msgid "[Found: %d]"
|
64 |
msgstr "[見つかった数:%d]"
|
65 |
|
66 |
-
#: admin/class-ip-geo-block-admin.php:
|
67 |
#, php-format
|
68 |
msgid "Find and verify `%s` on “Logs” tab."
|
69 |
msgstr "ログから `%s` を検索し、検証して下さい。"
|
70 |
|
71 |
-
#: admin/class-ip-geo-block-admin.php:
|
72 |
msgid "This feature is available with HTML5 compliant browsers."
|
73 |
msgstr "HTML5準拠のブラウザでのみ機能します。"
|
74 |
|
75 |
-
#: admin/class-ip-geo-block-admin.php:
|
76 |
msgid "The selected row cannot be found in the table."
|
77 |
msgstr "テーブル中に選択された行が見つかりません。"
|
78 |
|
79 |
-
#: admin/class-ip-geo-block-admin.php:
|
80 |
-
#: admin/class-ip-geo-block-admin.php:
|
81 |
#, php-format
|
82 |
msgid "An error occurred while executing the ajax command `%s`."
|
83 |
msgstr "Ajaxコマンド `%s` の実行中にエラーが発生しました。"
|
84 |
|
85 |
-
#: admin/class-ip-geo-block-admin.php:
|
86 |
msgid "No data available in table"
|
87 |
msgstr "テーブルにデータがありません"
|
88 |
|
89 |
-
#: admin/class-ip-geo-block-admin.php:
|
90 |
msgid "No matching records found"
|
91 |
msgstr "一致するレコードがありません"
|
92 |
|
93 |
-
#: admin/class-ip-geo-block-admin.php:
|
94 |
#: admin/includes/class-admin-ajax.php:107
|
95 |
#: admin/includes/class-admin-ajax.php:240
|
96 |
#: admin/includes/tab-geolocation.php:74
|
97 |
msgid "IP address"
|
98 |
msgstr "IPアドレス"
|
99 |
|
100 |
-
#: admin/class-ip-geo-block-admin.php:
|
101 |
#: admin/includes/class-admin-ajax.php:108
|
102 |
#: admin/includes/class-admin-ajax.php:241
|
103 |
msgid "Code"
|
104 |
msgstr "国"
|
105 |
|
106 |
-
#: admin/class-ip-geo-block-admin.php:
|
107 |
#: admin/includes/class-admin-ajax.php:109
|
108 |
#: admin/includes/class-admin-ajax.php:242
|
109 |
msgid "ASN"
|
110 |
msgstr "AS番号"
|
111 |
|
112 |
-
#: admin/class-ip-geo-block-admin.php:
|
113 |
#: admin/includes/class-admin-ajax.php:243
|
114 |
msgid "Host name"
|
115 |
msgstr "ホスト名"
|
116 |
|
117 |
-
#: admin/class-ip-geo-block-admin.php:
|
118 |
#: admin/includes/class-admin-ajax.php:110
|
119 |
#: admin/includes/class-admin-ajax.php:244
|
120 |
msgid "Target"
|
121 |
msgstr "検証対象"
|
122 |
|
123 |
-
#: admin/class-ip-geo-block-admin.php:
|
124 |
#: admin/includes/class-admin-ajax.php:245
|
125 |
msgid "Failure / Total"
|
126 |
msgstr "ログイン失敗/総計"
|
127 |
|
128 |
-
#: admin/class-ip-geo-block-admin.php:
|
129 |
#: admin/includes/class-admin-ajax.php:246
|
130 |
msgid "Elapsed[sec]"
|
131 |
msgstr "経過 [秒]"
|
132 |
|
133 |
-
#: admin/class-ip-geo-block-admin.php:
|
134 |
#: admin/includes/class-admin-ajax.php:106
|
135 |
msgid "Time"
|
136 |
msgstr "日時"
|
137 |
|
138 |
-
#: admin/class-ip-geo-block-admin.php:
|
139 |
#: admin/includes/class-admin-ajax.php:111
|
140 |
msgid "Result"
|
141 |
msgstr "検証結果"
|
142 |
|
143 |
-
#: admin/class-ip-geo-block-admin.php:
|
144 |
#: admin/includes/class-admin-ajax.php:112
|
145 |
msgid "Request"
|
146 |
msgstr "リクエスト"
|
147 |
|
148 |
-
#: admin/class-ip-geo-block-admin.php:
|
149 |
#: admin/includes/class-admin-ajax.php:113
|
150 |
msgid "User agent"
|
151 |
msgstr "ユーザー・エージェント"
|
152 |
|
153 |
-
#: admin/class-ip-geo-block-admin.php:
|
154 |
#: admin/includes/class-admin-ajax.php:114
|
155 |
msgid "HTTP headers"
|
156 |
msgstr "HTTP ヘッダー"
|
157 |
|
158 |
-
#: admin/class-ip-geo-block-admin.php:
|
159 |
#: admin/includes/class-admin-ajax.php:115
|
160 |
msgid "$_POST data"
|
161 |
msgstr "$_POST データ"
|
162 |
|
163 |
-
#: admin/class-ip-geo-block-admin.php:
|
164 |
msgid "Contribute on GitHub"
|
165 |
msgstr "開発に参加"
|
166 |
|
167 |
-
#: admin/class-ip-geo-block-admin.php:
|
168 |
-
#: admin/class-ip-geo-block-admin.php:
|
169 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
170 |
msgid "Settings"
|
171 |
msgstr "設定"
|
172 |
|
|
|
173 |
#: admin/class-ip-geo-block-admin.php:460
|
174 |
-
#: admin/class-ip-geo-block-admin.php:
|
175 |
#: admin/class-ip-geo-block-admin.php:471
|
176 |
-
#: admin/class-ip-geo-block-admin.php:
|
177 |
-
#: admin/class-ip-geo-block-admin.php:
|
178 |
-
#: admin/class-ip-geo-block-admin.php:492
|
179 |
msgid "IP Geo Block"
|
180 |
msgstr "IP Geo Block"
|
181 |
|
182 |
-
#: admin/class-ip-geo-block-admin.php:
|
183 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
184 |
msgid "Sites list"
|
185 |
msgstr "サイト一覧"
|
186 |
|
187 |
-
#: admin/class-ip-geo-block-admin.php:
|
188 |
msgid "You need WordPress 3.7+."
|
189 |
msgstr "WordPress 3.7 以上が必要です。"
|
190 |
|
191 |
-
#: admin/class-ip-geo-block-admin.php:
|
192 |
#, php-format
|
193 |
msgid ""
|
194 |
"Can not load Geolocation API libraries from <code>%s</code>. It seems to "
|
@@ -197,21 +201,22 @@ msgid ""
|
|
197 |
"contents of tokkonopapa/WordPress-IP-Geo-API as a zip file\">ZIP file</a> "
|
198 |
"from <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-"
|
199 |
"IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
200 |
-
"IP-Geo-API</a>.
|
201 |
-
"according to <a rel
|
202 |
-
"how-to-fix-permission-
|
203 |
-
"troubles? | IP Geo Block
|
|
|
204 |
msgstr ""
|
205 |
"<code>%s</code> に位置情報APIライブラリが見つかりません。<a rel=\"noreferrer\" href=\"https://github."
|
206 |
"com/tokkonopapa/WordPress-IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
207 |
"IP-Geo-API</a> から <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-IP-Geo-API/"
|
208 |
"archive/master.zip\" title=\"Download the contents of tokkonopapa/WordPress-IP-Geo-API as a zip file"
|
209 |
-
"\">ZIP file</a>
|
210 |
-
"ipgeoblock.com/codex/how-to-fix-permission-troubles.html\"
|
211 |
-
"troubles? | IP Geo Block\">FAQ</a>
|
212 |
-
"
|
213 |
|
214 |
-
#: admin/class-ip-geo-block-admin.php:
|
215 |
#, php-format
|
216 |
msgid ""
|
217 |
"You should select at least one API at <a href=\"%s\">Geolocation API "
|
@@ -221,7 +226,7 @@ msgstr ""
|
|
221 |
"<a href=\"%s\">位置情報APIの設定</a>で、少なくとも1つ以上のAPIを選択して下さい。未選択の場合、キャッ"
|
222 |
"シュの有効期限切れと共にロックアウトされます。"
|
223 |
|
224 |
-
#: admin/class-ip-geo-block-admin.php:
|
225 |
#, php-format
|
226 |
msgid ""
|
227 |
"You should select at least one API for local database at <a href=\"%s"
|
@@ -231,7 +236,7 @@ msgstr ""
|
|
231 |
"<a href=\"%s\">位置情報APIの設定</a>で、ローカルデータベース用のAPIを少なくとも1つ以上選択して下さ"
|
232 |
"い。未選択の場合、外部APIへのアクセスにより、サイトの応答性が悪くなります。"
|
233 |
|
234 |
-
#: admin/class-ip-geo-block-admin.php:
|
235 |
#, php-format
|
236 |
msgid ""
|
237 |
"Now downloading geolocation databases in background. After a little while, "
|
@@ -242,7 +247,7 @@ msgstr ""
|
|
242 |
"と[<strong>マッチング規則</strong>]を[<a href=\"%s\">検証ルールと振る舞いの設定</a>]で確認して下"
|
243 |
"さい。"
|
244 |
|
245 |
-
#: admin/class-ip-geo-block-admin.php:
|
246 |
#, php-format
|
247 |
msgid ""
|
248 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
@@ -251,11 +256,11 @@ msgstr ""
|
|
251 |
"[<strong>マッチング規則</strong>]が正しく設定されていません。[<a href=\"%s\">検証ルールと振る舞い"
|
252 |
"の設定</a>]を確認して下さい。"
|
253 |
|
254 |
-
#: admin/class-ip-geo-block-admin.php:
|
255 |
msgid "Local database and matching rule have been updated."
|
256 |
msgstr "ローカル・データベースとマッチング規則を更新しました。"
|
257 |
|
258 |
-
#: admin/class-ip-geo-block-admin.php:
|
259 |
msgid ""
|
260 |
"Once you logout, you will be unable to login again because the number of "
|
261 |
"login attempts reaches the limit."
|
@@ -263,7 +268,7 @@ msgstr ""
|
|
263 |
"あなたのIPアドレスのログイン試行可能回数がリミットに達したため、ログアウトすると再びログインする事が"
|
264 |
"出来なくなります。"
|
265 |
|
266 |
-
#: admin/class-ip-geo-block-admin.php:
|
267 |
#, php-format
|
268 |
msgid ""
|
269 |
"Please remove your IP address in “%1$sStatistics in IP address cache"
|
@@ -273,7 +278,7 @@ msgstr ""
|
|
273 |
"[%3$s統計%4$s]タブの[%1$sIPアドレスのキャッシュ%2$s]から自身のIPアドレスを削除し、ロックアウトを"
|
274 |
"回避してください。"
|
275 |
|
276 |
-
#: admin/class-ip-geo-block-admin.php:
|
277 |
msgid ""
|
278 |
"Once you logout, you will be unable to login again because your country code "
|
279 |
"or IP address is in the blacklist."
|
@@ -281,7 +286,7 @@ msgstr ""
|
|
281 |
"あなたの国コードまたはIPアドレスがブラックリストに含まれているため、ログアウトすると再びログインする"
|
282 |
"事が出来なくなります。"
|
283 |
|
284 |
-
#: admin/class-ip-geo-block-admin.php:
|
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."
|
@@ -289,12 +294,12 @@ msgstr ""
|
|
289 |
"あなたの国コードまたはIPアドレスがホワイトリストに含まれていないため、ログアウトすると再びログインす"
|
290 |
"る事が出来なくなります。"
|
291 |
|
292 |
-
#: admin/class-ip-geo-block-admin.php:
|
293 |
#, php-format
|
294 |
msgid "Please check your “%sValidation rules and behavior%s”."
|
295 |
msgstr "[%s検証ルールと振る舞いの設定%s]を確認して下さい。"
|
296 |
|
297 |
-
#: admin/class-ip-geo-block-admin.php:
|
298 |
#, php-format
|
299 |
msgid ""
|
300 |
"Please confirm your local geolocation database files exist at “%sLocal "
|
@@ -304,7 +309,7 @@ msgstr ""
|
|
304 |
"[%sローカル・データベースの設定%s]で位置情報データベース・ファイルの有無を確認して下さい。あるいは"
|
305 |
"[%sキャッシュの統計%s]でキャッシュされているあなたのIPアドレスを削除して下さい。"
|
306 |
|
307 |
-
#: admin/class-ip-geo-block-admin.php:
|
308 |
#, php-format
|
309 |
msgid ""
|
310 |
"Emergency login link is outdated. Please delete it once and generate again "
|
@@ -314,7 +319,7 @@ msgstr ""
|
|
314 |
"緊急ログイン・リンクが古くなっています。[%sプラグインの設定%s]で一度削除してから再度生成してくださ"
|
315 |
"い。 またブラウザのお気に入り/ブックマークも忘れずに更新して下さい。"
|
316 |
|
317 |
-
#: admin/class-ip-geo-block-admin.php:
|
318 |
msgid ""
|
319 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
320 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
@@ -324,32 +329,27 @@ msgstr ""
|
|
324 |
"<strong>IP Geo Allow</strong> と互換性がありません。「“init” アクション・フック」を選択し"
|
325 |
"てください。"
|
326 |
|
327 |
-
#: admin/class-ip-geo-block-admin.php:
|
328 |
msgid "Statistics"
|
329 |
msgstr "統計"
|
330 |
|
331 |
-
#: admin/class-ip-geo-block-admin.php:
|
332 |
msgid "Logs"
|
333 |
msgstr "ログ"
|
334 |
|
335 |
-
#: admin/class-ip-geo-block-admin.php:
|
336 |
msgid "Search"
|
337 |
msgstr "検索"
|
338 |
|
339 |
-
#: admin/class-ip-geo-block-admin.php:
|
340 |
msgid "Attribution"
|
341 |
msgstr "リンク"
|
342 |
|
343 |
-
#: admin/class-ip-geo-block-admin.php:
|
344 |
-
#: admin/class-ip-geo-block-admin.php:770
|
345 |
-
msgid "Network"
|
346 |
-
msgstr "ネットワーク管理"
|
347 |
-
|
348 |
-
#: admin/class-ip-geo-block-admin.php:783
|
349 |
msgid "Toggle all"
|
350 |
msgstr "全てを開閉"
|
351 |
|
352 |
-
#: admin/class-ip-geo-block-admin.php:
|
353 |
msgid ""
|
354 |
"Independent of “Privacy and record settings”, you can see all "
|
355 |
"the requests validated by this plugin in almost real time."
|
@@ -357,19 +357,19 @@ msgstr ""
|
|
357 |
"[プライバシーと記録の設定]にかかわらず、このプラグインによる検証結果のすべてを、ほぼリアルタイムに"
|
358 |
"表示します。"
|
359 |
|
360 |
-
#: admin/class-ip-geo-block-admin.php:
|
361 |
msgid "Live update"
|
362 |
msgstr "ライブアップデート"
|
363 |
|
364 |
-
#: admin/class-ip-geo-block-admin.php:
|
365 |
msgid "Open a new window on clicking the link in the chart."
|
366 |
msgstr "チャート内のリンクをクリックすると、新しいウィンドウが開きます。"
|
367 |
|
368 |
-
#: admin/class-ip-geo-block-admin.php:
|
369 |
msgid "Thanks for providing these great services for free."
|
370 |
msgstr "これらのすばらしいサービスの提供元に、敬意と感謝の意を表します!"
|
371 |
|
372 |
-
#: admin/class-ip-geo-block-admin.php:
|
373 |
msgid ""
|
374 |
"(Most browsers will redirect you to each site <a href=\"https://www."
|
375 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
@@ -378,36 +378,90 @@ msgstr ""
|
|
378 |
"(ほとんどのブラウザでは、<a href=\"https://www.ipgeoblock.com/etc/referer.html\" title=\"Referer "
|
379 |
"Checker\">参照元を残さずにリンク先にリダイレクトできます</a>。)"
|
380 |
|
381 |
-
#: admin/class-ip-geo-block-admin.php:
|
382 |
msgid "Back to top"
|
383 |
msgstr "トップに戻る"
|
384 |
|
385 |
-
#: admin/class-ip-geo-block-admin.php:
|
386 |
msgid "Enable"
|
387 |
msgstr "有効"
|
388 |
|
389 |
-
#: admin/class-ip-geo-block-admin.php:
|
390 |
msgid "Select one"
|
391 |
msgstr "何れかを選択"
|
392 |
|
393 |
-
#: admin/class-ip-geo-block-admin.php:
|
394 |
msgid "You do not have sufficient permissions to access this page."
|
395 |
msgstr "このページにアクセスするための十分な権限がありません。"
|
396 |
|
397 |
-
#: admin/class-ip-geo-block-admin.php:
|
398 |
#: admin/includes/class-admin-rewrite.php:194
|
399 |
-
#: classes/class-ip-geo-block-cron.php:
|
400 |
-
#: classes/class-ip-geo-block-cron.php:
|
401 |
-
#: classes/class-ip-geo-block-cron.php:
|
402 |
-
#: classes/class-ip-geo-block-opts.php:
|
403 |
#, php-format
|
404 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
405 |
msgstr "<code>%s</code> に書き込めません。パーミッションをチェックして下さい。"
|
406 |
|
407 |
-
#: admin/class-ip-geo-block-admin.php:
|
408 |
msgid "Settings saved."
|
409 |
msgstr "設定を保存しました。"
|
410 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
411 |
#: admin/includes/class-admin-ajax.php:72
|
412 |
#: admin/includes/class-admin-ajax.php:75 admin/includes/tab-settings.php:84
|
413 |
#: admin/includes/tab-settings.php:103
|
@@ -426,8 +480,8 @@ msgid ""
|
|
426 |
msgstr "%sは誤ったフォーマットです。該当行を削除し、再実行してください。"
|
427 |
|
428 |
#: admin/includes/class-admin-rewrite.php:168
|
429 |
-
#: classes/class-ip-geo-block-cron.php:
|
430 |
-
#: classes/class-ip-geo-block-cron.php:
|
431 |
#, php-format
|
432 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
433 |
msgstr "<code>%s</code> が読めません。パーミッションをチェックして下さい。"
|
@@ -451,23 +505,23 @@ msgstr "検証のログ"
|
|
451 |
msgid "Help"
|
452 |
msgstr "ヘルプ"
|
453 |
|
454 |
-
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:
|
455 |
msgid "Comment post"
|
456 |
msgstr "コメント投稿"
|
457 |
|
458 |
-
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:
|
459 |
msgid "XML-RPC"
|
460 |
msgstr "XML-RPC"
|
461 |
|
462 |
-
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:
|
463 |
msgid "Login form"
|
464 |
msgstr "ログイン・フォーム"
|
465 |
|
466 |
-
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:
|
467 |
msgid "Admin area"
|
468 |
msgstr "管理領域"
|
469 |
|
470 |
-
#: admin/includes/tab-accesslog.php:59 admin/includes/tab-settings.php:
|
471 |
msgid "Public facing pages"
|
472 |
msgstr "一般公開ページ"
|
473 |
|
@@ -487,68 +541,68 @@ msgstr "ログを検索"
|
|
487 |
msgid "Reset"
|
488 |
msgstr "リセット"
|
489 |
|
490 |
-
#: admin/includes/tab-accesslog.php:
|
491 |
msgid "Preset filters"
|
492 |
msgstr "プリセット・フィルタ"
|
493 |
|
494 |
-
#: admin/includes/tab-accesslog.php:
|
495 |
msgid "Bulk action"
|
496 |
msgstr "選択して実行"
|
497 |
|
498 |
-
#: admin/includes/tab-accesslog.php:
|
499 |
msgid "Remove entries by IP address"
|
500 |
msgstr "指定のIPアドレスでエントリを削除"
|
501 |
|
502 |
-
#: admin/includes/tab-accesslog.php:
|
503 |
msgid "Add IP address to “Whitelist”"
|
504 |
msgstr "IPアドレスをホワイトリストへ追加"
|
505 |
|
506 |
-
#: admin/includes/tab-accesslog.php:
|
507 |
msgid "Add IP address to “Blacklist”"
|
508 |
msgstr "IPアドレスをブラックリストへ追加"
|
509 |
|
510 |
-
#: admin/includes/tab-accesslog.php:
|
511 |
msgid "Add AS number to “Whitelist”"
|
512 |
msgstr "AS番号をホワイトリストへ追加"
|
513 |
|
514 |
-
#: admin/includes/tab-accesslog.php:
|
515 |
msgid "Add AS number to “Blacklist”"
|
516 |
msgstr "AS番号をブラックリストへ追加"
|
517 |
|
518 |
-
#: admin/includes/tab-accesslog.php:
|
519 |
#: admin/includes/tab-statistics.php:255
|
520 |
msgid "Apply"
|
521 |
msgstr "実行する"
|
522 |
|
523 |
-
#: admin/includes/tab-accesslog.php:
|
524 |
msgid "Clear logs"
|
525 |
msgstr "ログをクリア"
|
526 |
|
527 |
-
#: admin/includes/tab-accesslog.php:
|
528 |
#: admin/includes/tab-statistics.php:199 admin/includes/tab-statistics.php:269
|
529 |
msgid "Clear all"
|
530 |
msgstr "全てをクリア"
|
531 |
|
532 |
-
#: admin/includes/tab-accesslog.php:
|
533 |
msgid "Export logs"
|
534 |
msgstr "ログをエクスポート"
|
535 |
|
536 |
-
#: admin/includes/tab-accesslog.php:
|
537 |
#: admin/includes/tab-statistics.php:283
|
538 |
msgid "Export to the local file"
|
539 |
msgstr "ローカル・ファイルへエクスポートする"
|
540 |
|
541 |
-
#: admin/includes/tab-accesslog.php:
|
542 |
msgid "Export csv"
|
543 |
msgstr "CSVへエクスポート"
|
544 |
|
545 |
-
#: admin/includes/tab-accesslog.php:
|
546 |
#: admin/includes/tab-statistics.php:410
|
547 |
#, php-format
|
548 |
msgid "[ %sRecord “Validation logs”%s ] is disabled."
|
549 |
msgstr "[%s検証のログを記録%s]が無効です。"
|
550 |
|
551 |
-
#: admin/includes/tab-accesslog.php:
|
552 |
#: admin/includes/tab-statistics.php:411
|
553 |
msgid ""
|
554 |
"Please set the proper condition to record and analyze the validation logs."
|
@@ -566,7 +620,7 @@ msgstr "IPアドレスの位置情報を検索"
|
|
566 |
msgid "Geolocation API"
|
567 |
msgstr "位置情報API"
|
568 |
|
569 |
-
#: admin/includes/tab-geolocation.php:89 admin/includes/tab-settings.php:
|
570 |
msgid ""
|
571 |
"<dfn title=\"IP address is always encrypted on recording in Cache and Logs. "
|
572 |
"Moreover, this option replaces the end of IP address with “***” "
|
@@ -717,7 +771,7 @@ msgstr ""
|
|
717 |
"の国にもマッチさせないことが必要な場合には、「YY」を指定してください。\">国コードのブラックリスト</"
|
718 |
"dfn>"
|
719 |
|
720 |
-
#: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:
|
721 |
msgid "Matching rule"
|
722 |
msgstr "マッチング規則"
|
723 |
|
@@ -839,8 +893,8 @@ msgstr ""
|
|
839 |
"ング]を「“mu-plugins” (ip-geo-block-mu.php)」に設定することを検討してください。\">悪意の"
|
840 |
"あるアップロード防止</dfn>"
|
841 |
|
842 |
-
#: admin/includes/tab-settings.php:304 admin/includes/tab-settings.php:
|
843 |
-
#: admin/includes/tab-settings.php:
|
844 |
msgid "Disable"
|
845 |
msgstr "無効"
|
846 |
|
@@ -852,7 +906,29 @@ msgstr "拡張子と MIME タイプを検証"
|
|
852 |
msgid "Verify file extension only"
|
853 |
msgstr "ファイル拡張子のみを検証"
|
854 |
|
855 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
856 |
#, php-format
|
857 |
msgid ""
|
858 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
@@ -861,7 +937,7 @@ msgstr ""
|
|
861 |
"<dfn title=\"テーマ・ディレクトリには 403.php など、独自のファイルを設置する事が出来ます。\">レスポン"
|
862 |
"ス・コード</dfn> %s"
|
863 |
|
864 |
-
#: admin/includes/tab-settings.php:
|
865 |
msgid ""
|
866 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
867 |
"to a public facing page, visitors would not be blocked on the page to "
|
@@ -873,36 +949,36 @@ msgstr ""
|
|
873 |
"避けるため、自サイト内の URL は[フロントエンドの設定]に関わらず遮断の対象外となります。空欄の場合、"
|
874 |
"サイトのホームが使用されます。\">リダイレクト先 URL</dfn>"
|
875 |
|
876 |
-
#: admin/includes/tab-settings.php:
|
877 |
msgid ""
|
878 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
879 |
"message</dfn>"
|
880 |
msgstr ""
|
881 |
"<dfn title=\"レスポンス・コード 4xx、5xx 用のメッセージを指定します。\">レスポンス・メッセージ</dfn>"
|
882 |
|
883 |
-
#: admin/includes/tab-settings.php:
|
884 |
msgid "Select when to run the validation."
|
885 |
msgstr "検証を実行するタイミングを選択します。"
|
886 |
|
887 |
-
#: admin/includes/tab-settings.php:
|
888 |
msgid "Validation timing"
|
889 |
msgstr "検証のタイミング"
|
890 |
|
891 |
-
#: admin/includes/tab-settings.php:
|
892 |
msgid "“init” action hook"
|
893 |
msgstr "“init” アクション・フック"
|
894 |
|
895 |
-
#: admin/includes/tab-settings.php:
|
896 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
897 |
msgstr "“mu-plugins” (ip-geo-block-mu.php)"
|
898 |
|
899 |
-
#: admin/includes/tab-settings.php:
|
900 |
msgid ""
|
901 |
"Validate at “init” action hook in the same manner as typical "
|
902 |
"plugins."
|
903 |
msgstr "標準的な他のプラグインと同様、init アクション・フックのタイミングで検証を実行します。"
|
904 |
|
905 |
-
#: admin/includes/tab-settings.php:
|
906 |
msgid ""
|
907 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
908 |
"on server but has <a rel='noreferrer' href='https://www.ipgeoblock.com/codex/"
|
@@ -913,7 +989,7 @@ msgstr ""
|
|
913 |
"が、<a rel=‘noreferrer’ href=‘https://www.ipgeoblock.com/codex/validation-timing.html' "
|
914 |
"title=‘Validation timing | IP Geo Block’>幾つかの制限事項</a> が生じます。"
|
915 |
|
916 |
-
#: admin/includes/tab-settings.php:
|
917 |
msgid ""
|
918 |
"It enables to simulate the validation rules without actual blocking in order "
|
919 |
"to check the behavior of this plugin. The results can be found on “"
|
@@ -922,122 +998,122 @@ msgstr ""
|
|
922 |
"このプラグインの動作を確認するために、実際に遮断させることなく検証ルールをシミュレートします。結果は"
|
923 |
"ログで確認する事が出来ます。"
|
924 |
|
925 |
-
#: admin/includes/tab-settings.php:
|
926 |
msgid "Simulation mode"
|
927 |
msgstr "シミュレーション・モード"
|
928 |
|
929 |
-
#: admin/includes/tab-settings.php:
|
930 |
msgid "Back-end target settings"
|
931 |
msgstr "バックエンドの設定"
|
932 |
|
933 |
-
#: admin/includes/tab-settings.php:
|
934 |
#, php-format
|
935 |
msgid "<dfn title=\"It enables to validate requests to %s.\">%s</dfn>"
|
936 |
msgstr "<dfn title=\"%s へのリクエストを検証します。\">%s</dfn>"
|
937 |
|
938 |
-
#: admin/includes/tab-settings.php:
|
939 |
msgid "Other areas"
|
940 |
msgstr "その他の領域"
|
941 |
|
942 |
-
#: admin/includes/tab-settings.php:
|
943 |
msgid "public facing pages"
|
944 |
msgstr "一般公開ページ"
|
945 |
|
946 |
-
#: admin/includes/tab-settings.php:
|
947 |
-
#: admin/includes/tab-settings.php:
|
948 |
-
#: admin/includes/tab-settings.php:
|
949 |
msgid "Block by country"
|
950 |
msgstr "国コードで遮断"
|
951 |
|
952 |
-
#: admin/includes/tab-settings.php:
|
953 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
954 |
msgstr "全体を <p> タグで囲みます。使用可能タグ:"
|
955 |
|
956 |
-
#: admin/includes/tab-settings.php:
|
957 |
msgid "Message on comment form"
|
958 |
msgstr "投稿フォーム上のメッセージ"
|
959 |
|
960 |
-
#: admin/includes/tab-settings.php:
|
961 |
msgid "None"
|
962 |
msgstr "なし"
|
963 |
|
964 |
-
#: admin/includes/tab-settings.php:
|
965 |
msgid "Top"
|
966 |
msgstr "上部"
|
967 |
|
968 |
-
#: admin/includes/tab-settings.php:
|
969 |
msgid "Bottom"
|
970 |
msgstr "下部"
|
971 |
|
972 |
-
#: admin/includes/tab-settings.php:
|
973 |
msgid "Completely close"
|
974 |
msgstr "完全に閉鎖"
|
975 |
|
976 |
-
#: admin/includes/tab-settings.php:
|
977 |
msgid "Action to login as a registered user."
|
978 |
msgstr "登録済みユーザーとしてログインするアクション。"
|
979 |
|
980 |
-
#: admin/includes/tab-settings.php:
|
981 |
msgid "Log in"
|
982 |
msgstr "ログイン"
|
983 |
|
984 |
-
#: admin/includes/tab-settings.php:
|
985 |
msgid "Action to register new users."
|
986 |
msgstr "新規ユーザーを登録するアクション。"
|
987 |
|
988 |
-
#: admin/includes/tab-settings.php:
|
989 |
msgid "Register"
|
990 |
msgstr "登録"
|
991 |
|
992 |
-
#: admin/includes/tab-settings.php:
|
993 |
msgid "Action to reset a password to create a new one."
|
994 |
msgstr "パスワードをリセットし、新しいパスワードに更新するアクション。"
|
995 |
|
996 |
-
#: admin/includes/tab-settings.php:
|
997 |
msgid "Password Reset"
|
998 |
msgstr "パスワードのリセット"
|
999 |
|
1000 |
-
#: admin/includes/tab-settings.php:
|
1001 |
msgid "Action to email a password to a registered user."
|
1002 |
msgstr "登録済みユーザーにパスワードを送付するアクション。"
|
1003 |
|
1004 |
-
#: admin/includes/tab-settings.php:
|
1005 |
msgid "Lost Password"
|
1006 |
msgstr "パスワード紛失"
|
1007 |
|
1008 |
-
#: admin/includes/tab-settings.php:
|
1009 |
msgid ""
|
1010 |
"Action to show prompt to enter a password on password protected post and "
|
1011 |
"page."
|
1012 |
msgstr "パスワードで保護された投稿とページにパスワードを入力するプロンプトを表示するアクション。"
|
1013 |
|
1014 |
-
#: admin/includes/tab-settings.php:
|
1015 |
msgid "Password protected"
|
1016 |
msgstr "パスワード保護"
|
1017 |
|
1018 |
-
#: admin/includes/tab-settings.php:
|
1019 |
msgid ""
|
1020 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
1021 |
"actions</dfn>"
|
1022 |
msgstr "<dfn title=\"遮断対象とするアクションを指定します。\">対象アクション</dfn>"
|
1023 |
|
1024 |
-
#: admin/includes/tab-settings.php:
|
1025 |
msgid "Prevent Zero-day Exploit"
|
1026 |
msgstr "ゼロデイ攻撃を遮断"
|
1027 |
|
1028 |
-
#: admin/includes/tab-settings.php:
|
1029 |
msgid ""
|
1030 |
-
"It will block a request related to the services for both
|
1031 |
-
"and
|
1032 |
-
msgstr "
|
1033 |
|
1034 |
-
#: admin/includes/tab-settings.php:
|
1035 |
msgid ""
|
1036 |
"Regardless of the country code, it will block a malicious request related to "
|
1037 |
-
"the services only for
|
1038 |
-
msgstr "
|
1039 |
|
1040 |
-
#: admin/includes/tab-settings.php:
|
1041 |
msgid ""
|
1042 |
"This is applied to “XML-RPC” and “Login form” when "
|
1043 |
"“IP address cache” in “Privacy and record settings” "
|
@@ -1047,23 +1123,23 @@ msgstr ""
|
|
1047 |
"[プライバシーと記録の設定]»[IPアドレスのキャッシュを記録]が有効の時、[XML-RPC]と[ログイ"
|
1048 |
"ン・フォーム]に適用されます。ロックアウト時間は[有効時間]で定義します。"
|
1049 |
|
1050 |
-
#: admin/includes/tab-settings.php:
|
1051 |
msgid "Max failed login attempts per IP address"
|
1052 |
msgstr "IPアドレス当たりのログイン試行可能回数"
|
1053 |
|
1054 |
-
#: admin/includes/tab-settings.php:
|
1055 |
msgid "admin post for logged-in user"
|
1056 |
msgstr "認証済ユーザー用 admin post"
|
1057 |
|
1058 |
-
#: admin/includes/tab-settings.php:
|
1059 |
msgid "admin post for non logged-in user"
|
1060 |
msgstr "未認証ユーザー用 admin post"
|
1061 |
|
1062 |
-
#: admin/includes/tab-settings.php:
|
1063 |
msgid "Admin ajax/post"
|
1064 |
msgstr "管理領域 ajax/post"
|
1065 |
|
1066 |
-
#: admin/includes/tab-settings.php:
|
1067 |
msgid ""
|
1068 |
"Specify the action name (“action=…”) or the page name "
|
1069 |
"(“page=…”) to prevent unintended blocking caused by "
|
@@ -1075,27 +1151,27 @@ msgstr ""
|
|
1075 |
"” 部分)、またはページ名(“page=…” の “…” 部分)を指定"
|
1076 |
"し、検証対象から除外します。"
|
1077 |
|
1078 |
-
#: admin/includes/tab-settings.php:
|
1079 |
-
#: admin/includes/tab-settings.php:
|
1080 |
msgid "Exceptions"
|
1081 |
msgstr "例外"
|
1082 |
|
1083 |
-
#: admin/includes/tab-settings.php:
|
1084 |
msgid "Toggle with non logged-in user"
|
1085 |
msgstr "未認証ユーザー用を含む項目に限定して表示する"
|
1086 |
|
1087 |
-
#: admin/includes/tab-settings.php:
|
1088 |
msgid "Candidate actions/pages"
|
1089 |
msgstr "候補 アクション/ページ"
|
1090 |
|
1091 |
-
#: admin/includes/tab-settings.php:
|
1092 |
#, php-format
|
1093 |
msgid ""
|
1094 |
"Regardless of the country code, it will block a malicious request to <code>"
|
1095 |
"%s⋯/*.php</code>."
|
1096 |
-
msgstr "
|
1097 |
|
1098 |
-
#: admin/includes/tab-settings.php:
|
1099 |
msgid ""
|
1100 |
"Select the item which causes unintended blocking in order to exclude from "
|
1101 |
"the validation target. Grayed item indicates “INACTIVE”."
|
@@ -1103,7 +1179,7 @@ msgstr ""
|
|
1103 |
"意図しない遮断の原因となる項目を選択し、検証対象から除外します。灰色で表示された項目は、「非アクティ"
|
1104 |
"ブ」であることを示しています。"
|
1105 |
|
1106 |
-
#: admin/includes/tab-settings.php:
|
1107 |
#, php-format
|
1108 |
msgid ""
|
1109 |
"It configures “%s” to validate a direct request to the PHP file "
|
@@ -1113,37 +1189,37 @@ msgstr ""
|
|
1113 |
"WordPressコアを読み込まないPHPファイルへのリクエストを検証対象とするために、%s を設定します。ドットで"
|
1114 |
"始まる隠しファイルへのアクセス拒否がサーバー側で設定されていることを確認して下さい。"
|
1115 |
|
1116 |
-
#: admin/includes/tab-settings.php:
|
1117 |
msgid "Sorry, but your server type is not supported."
|
1118 |
msgstr "このサーバーではサポートされません。"
|
1119 |
|
1120 |
-
#: admin/includes/tab-settings.php:
|
1121 |
msgid ""
|
1122 |
"You need to click “Save Changes” button for imported settings to "
|
1123 |
"take effect."
|
1124 |
msgstr "インポートされた設定を有効にするには、[変更を保存]ボタンをクリックする必要があります。"
|
1125 |
|
1126 |
-
#: admin/includes/tab-settings.php:
|
1127 |
msgid "Force to load WP core"
|
1128 |
msgstr "WPコアの読み込みを強制"
|
1129 |
|
1130 |
-
#: admin/includes/tab-settings.php:
|
1131 |
msgid "Plugins area"
|
1132 |
msgstr "プラグイン領域"
|
1133 |
|
1134 |
-
#: admin/includes/tab-settings.php:
|
1135 |
msgid "Themes area"
|
1136 |
msgstr "テーマ領域"
|
1137 |
|
1138 |
-
#: admin/includes/tab-settings.php:
|
1139 |
msgid "Front-end target settings"
|
1140 |
msgstr "フロントエンドの設定"
|
1141 |
|
1142 |
-
#: admin/includes/tab-settings.php:
|
1143 |
msgid "Follow “Validation rules and behavior”"
|
1144 |
msgstr "[検証ルールと振る舞いの設定]に従う"
|
1145 |
|
1146 |
-
#: admin/includes/tab-settings.php:
|
1147 |
#, php-format
|
1148 |
msgid ""
|
1149 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
@@ -1153,18 +1229,18 @@ msgstr ""
|
|
1153 |
"<dfn title=\"バックエンドと異なるレスポンス・コードを設定できます。これは、アフィリエイト・プログラム"
|
1154 |
"に対する違反を防止するのに役立つでしょう。\">レスポンス・コード</dfn> %s"
|
1155 |
|
1156 |
-
#: admin/includes/tab-settings.php:
|
1157 |
msgid ""
|
1158 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1159 |
msgstr "<dfn title=\"特定のページを遮断対象に指定します。\">ページ</dfn>"
|
1160 |
|
1161 |
-
#: admin/includes/tab-settings.php:
|
1162 |
msgid ""
|
1163 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1164 |
"target.\">Post type</dfn>"
|
1165 |
msgstr "<dfn title=\"特定の投稿タイプのシングルページを遮断対象に指定します。\">投稿タイプ</dfn>"
|
1166 |
|
1167 |
-
#: admin/includes/tab-settings.php:
|
1168 |
msgid ""
|
1169 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1170 |
"page as a blocking target.\">Category</dfn>"
|
@@ -1172,30 +1248,30 @@ msgstr ""
|
|
1172 |
"<dfn title=\"特定のカテゴリを含むシングルページかアーカイブページを遮断対象に指定します。\">カテゴリ"
|
1173 |
"</dfn>"
|
1174 |
|
1175 |
-
#: admin/includes/tab-settings.php:
|
1176 |
msgid ""
|
1177 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1178 |
"a blocking target.\">Tag</dfn>"
|
1179 |
msgstr ""
|
1180 |
"<dfn title=\"特定のタグを含むシングルページかアーカイブページを遮断対象に指定します。\">タグ</dfn>"
|
1181 |
|
1182 |
-
#: admin/includes/tab-settings.php:
|
1183 |
msgid "Specify the validation target on front-end."
|
1184 |
msgstr "フロントエンドの検証対象を設定します。"
|
1185 |
|
1186 |
-
#: admin/includes/tab-settings.php:
|
1187 |
msgid "Validation target"
|
1188 |
msgstr "検証対象"
|
1189 |
|
1190 |
-
#: admin/includes/tab-settings.php:
|
1191 |
msgid "All requests"
|
1192 |
msgstr "全てのリクエスト"
|
1193 |
|
1194 |
-
#: admin/includes/tab-settings.php:
|
1195 |
msgid "Specify the targets"
|
1196 |
msgstr "ターゲットを指定"
|
1197 |
|
1198 |
-
#: admin/includes/tab-settings.php:
|
1199 |
msgid ""
|
1200 |
"Notice that “Validation timing” is deferred till “"
|
1201 |
"wp” action hook. It means that this feature would not be compatible "
|
@@ -1204,32 +1280,32 @@ msgstr ""
|
|
1204 |
"[検証のタイミング]が “wp” アクション・フックまで遅延されます。これにより、ページ・"
|
1205 |
"キャッシュとの互換性がなくなることに注意してください。"
|
1206 |
|
1207 |
-
#: admin/includes/tab-settings.php:
|
1208 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1209 |
msgstr "常に遮断されるアクション名を例外として指定します。"
|
1210 |
|
1211 |
-
#: admin/includes/tab-settings.php:
|
1212 |
msgid "Excluded actions"
|
1213 |
msgstr "除外するアクション"
|
1214 |
|
1215 |
-
#: admin/includes/tab-settings.php:
|
1216 |
msgid ""
|
1217 |
"<dfn title=\"Specify the frequency of request for certain period of time."
|
1218 |
"\">Blocking condition</dfn>"
|
1219 |
msgstr "<dfn title=\"特定期間のリクエスト頻度を設定します。\">遮断条件</dfn>"
|
1220 |
|
1221 |
-
#: admin/includes/tab-settings.php:
|
1222 |
#, php-format
|
1223 |
msgid "More than %1$s page view (PV) in %2$s seconds"
|
1224 |
msgstr "%2$s 秒間で %1$s を超えるページビュー (PV)"
|
1225 |
|
1226 |
-
#: admin/includes/tab-settings.php:
|
1227 |
msgid ""
|
1228 |
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1229 |
"behaved bots and crawlers</dfn>"
|
1230 |
msgstr "<dfn title=\"リクエスト頻度を検証します。\">行儀の悪いボットやクローラーを遮断</dfn>"
|
1231 |
|
1232 |
-
#: admin/includes/tab-settings.php:
|
1233 |
msgid ""
|
1234 |
"A part of user agent string and a qualification connected with a separator "
|
1235 |
"that indicates an applicable rule and can be “:” (pass) or "
|
@@ -1242,11 +1318,11 @@ msgstr ""
|
|
1242 |
"「条件」のペアです。「条件」には「DNS」、「FEED」、国コード、または IPアドレス(CIDR記法)が使え"
|
1243 |
"ます。また否定を表す記号「!」を「条件」の直前に配置する事が出来ます。"
|
1244 |
|
1245 |
-
#: admin/includes/tab-settings.php:
|
1246 |
msgid "UA string and qualification"
|
1247 |
msgstr "ユーザーエージェント文字列と条件"
|
1248 |
|
1249 |
-
#: admin/includes/tab-settings.php:
|
1250 |
msgid ""
|
1251 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1252 |
"server resources. If it is disabled, “HOST” and “"
|
@@ -1256,15 +1332,15 @@ msgstr ""
|
|
1256 |
"DNS 逆引きによりホストを検証します(幾らかのサーバー・リソースを消費します)。無効にした場合、[ユー"
|
1257 |
"ザーエージェント文字列と条件]中の「HOST」および「HOST=…」は常に真となります。"
|
1258 |
|
1259 |
-
#: admin/includes/tab-settings.php:
|
1260 |
msgid "Reverse DNS lookup"
|
1261 |
msgstr "DNS 逆引き"
|
1262 |
|
1263 |
-
#: admin/includes/tab-settings.php:
|
1264 |
msgid "Privacy and record settings"
|
1265 |
msgstr "プライバシーと記録の設定"
|
1266 |
|
1267 |
-
#: admin/includes/tab-settings.php:
|
1268 |
msgid ""
|
1269 |
"<dfn title=\"This option restricts not to send IP address to the external "
|
1270 |
"Geolocation APIs.\">Do not send IP address to external APIs</dfn>"
|
@@ -1272,7 +1348,7 @@ msgstr ""
|
|
1272 |
"<dfn title=\"このオプションは、IPアドレスを外部の位置情報APIへ送信することを制限します。\">外部APIへ"
|
1273 |
"の送信を制限する</dfn>"
|
1274 |
|
1275 |
-
#: admin/includes/tab-settings.php:
|
1276 |
msgid ""
|
1277 |
"<dfn title=\"This option enables to record the IP address, country code and "
|
1278 |
"failure counter of login attempts into the cache on database to minimize the "
|
@@ -1281,7 +1357,7 @@ msgstr ""
|
|
1281 |
"<dfn title=\"このオプションは、IPアドレス、国コード、ログイン失敗回数等のキャッシュへの記録を有効に"
|
1282 |
"し、サイト速度への影響を最小化します。\">IPアドレスをキャッシュに記録</dfn>"
|
1283 |
|
1284 |
-
#: admin/includes/tab-settings.php:
|
1285 |
msgid ""
|
1286 |
"<dfn title=\"If user authentication fails consecutively beyond “Max "
|
1287 |
"number of failed login attempts per IP address”, subsequent login will "
|
@@ -1291,7 +1367,7 @@ msgstr ""
|
|
1291 |
"<dfn title=\"ユーザ認証が連続%d回失敗した場合も、以降のログインがこの期間だけ(ガベージコレクション周"
|
1292 |
"期を含む)禁止されます。\">各エントリーの有効期間 [秒]</dfn>"
|
1293 |
|
1294 |
-
#: admin/includes/tab-settings.php:
|
1295 |
msgid ""
|
1296 |
"<dfn title=\"This option enables to record the validation logs including IP "
|
1297 |
"addresses.\">Record “Validation logs”</dfn>"
|
@@ -1299,48 +1375,48 @@ msgstr ""
|
|
1299 |
"<dfn title=\"このオプションは、IPアドレスを含む検証ログの記録を有効にします。\">検証のログを記録</"
|
1300 |
"dfn>"
|
1301 |
|
1302 |
-
#: admin/includes/tab-settings.php:
|
1303 |
msgid "When blocked"
|
1304 |
msgstr "遮断時に記録"
|
1305 |
|
1306 |
-
#: admin/includes/tab-settings.php:
|
1307 |
msgid "When passed"
|
1308 |
msgstr "通過時に記録"
|
1309 |
|
1310 |
-
#: admin/includes/tab-settings.php:
|
1311 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1312 |
msgstr "遮断時または遮断対象国の通過時に記録"
|
1313 |
|
1314 |
-
#: admin/includes/tab-settings.php:
|
1315 |
msgid "Unauthenticated visitor"
|
1316 |
msgstr "未認証の訪問者を記録"
|
1317 |
|
1318 |
-
#: admin/includes/tab-settings.php:
|
1319 |
msgid "Authenticated user"
|
1320 |
msgstr "認証済のユーザーを記録"
|
1321 |
|
1322 |
-
#: admin/includes/tab-settings.php:
|
1323 |
msgid "All the validation"
|
1324 |
msgstr "すべての検証を記録"
|
1325 |
|
1326 |
-
#: admin/includes/tab-settings.php:
|
1327 |
#, php-format
|
1328 |
msgid ""
|
1329 |
"<dfn title=\"The maximum number of entries in the logs is also limited to %d."
|
1330 |
"\">Expiration time [days] for each entry</dfn>"
|
1331 |
msgstr "<dfn title=\"ログの最大エントリー数は %d に制限されます。\">各エントリーの有効期間[日]</dfn>"
|
1332 |
|
1333 |
-
#: admin/includes/tab-settings.php:
|
1334 |
msgid ""
|
1335 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST key to record "
|
1336 |
"with value</dfn>"
|
1337 |
msgstr "<dfn title=\"例)action, comment, log, pwd, FILES\">内容を展開する$_POSTのキー</dfn>"
|
1338 |
|
1339 |
-
#: admin/includes/tab-settings.php:
|
1340 |
msgid "Maximum entries in “Logs”"
|
1341 |
msgstr "記録するログの最大エントリ数"
|
1342 |
|
1343 |
-
#: admin/includes/tab-settings.php:
|
1344 |
msgid ""
|
1345 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1346 |
"“Live update”</dfn>"
|
@@ -1348,47 +1424,47 @@ msgstr ""
|
|
1348 |
"<dfn title=\"SQLiteデータベース・ソースを選択します。\">ライブアップデート用SQLiteデータベース・ソー"
|
1349 |
"スの選択</dfn>"
|
1350 |
|
1351 |
-
#: admin/includes/tab-settings.php:
|
1352 |
msgid "Ordinary file"
|
1353 |
msgstr "ファイル"
|
1354 |
|
1355 |
-
#: admin/includes/tab-settings.php:
|
1356 |
msgid "In-Memory"
|
1357 |
msgstr "イン・メモリ"
|
1358 |
|
1359 |
-
#: admin/includes/tab-settings.php:
|
1360 |
msgid "PDO_SQLITE driver not available"
|
1361 |
msgstr "PDO_SQLITEドライバが利用出来ません"
|
1362 |
|
1363 |
-
#: admin/includes/tab-settings.php:
|
1364 |
msgid ""
|
1365 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1366 |
"without conflict with other plugins."
|
1367 |
msgstr "数十ミリ秒のオーバーヘッドが生じますが、他のプラグインと競合することなく、安全に使用できます。"
|
1368 |
|
1369 |
-
#: admin/includes/tab-settings.php:
|
1370 |
msgid ""
|
1371 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1372 |
"with other plugins using this method."
|
1373 |
msgstr ""
|
1374 |
"数ミリ秒のオーバーヘッドが生じます。同手法を用いている他のプラグインと競合する可能性があります。"
|
1375 |
|
1376 |
-
#: admin/includes/tab-settings.php:
|
1377 |
msgid "Reset database source of “Live update”"
|
1378 |
msgstr "ライブアップデートのデータソースをリセットする"
|
1379 |
|
1380 |
-
#: admin/includes/tab-settings.php:
|
1381 |
msgid "Reset now"
|
1382 |
msgstr "今すぐリセット"
|
1383 |
|
1384 |
-
#: admin/includes/tab-settings.php:
|
1385 |
msgid ""
|
1386 |
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1387 |
"once and activate again."
|
1388 |
msgstr ""
|
1389 |
"WP-Cronのタスクが見つかりません。 一旦このプラグインを停止させた後、再度、有効化してみてください。"
|
1390 |
|
1391 |
-
#: admin/includes/tab-settings.php:
|
1392 |
msgid ""
|
1393 |
"<dfn title=\"This option enables to schedule the WP-Cron event to remove the "
|
1394 |
"expired entries from “IP address cache” and “Validation "
|
@@ -1397,12 +1473,12 @@ msgstr ""
|
|
1397 |
"<dfn title=\"キャッシュとログから有効期限の切れたIPアドレスのエントリーを削除する WP-Cron イベントの"
|
1398 |
"起動周期を設定します。\">ガベージコレクション周期[秒]</dfn>"
|
1399 |
|
1400 |
-
#: admin/includes/tab-settings.php:
|
1401 |
#, php-format
|
1402 |
msgid "Next schedule: %s"
|
1403 |
msgstr "次回日時:%s"
|
1404 |
|
1405 |
-
#: admin/includes/tab-settings.php:
|
1406 |
msgid ""
|
1407 |
"<dfn title=\"This option enables to record the number blocked countries and "
|
1408 |
"the number of blocked requests per day.\">Record “Statistics of "
|
@@ -1411,19 +1487,19 @@ msgstr ""
|
|
1411 |
"<dfn title=\"このオプションは、国別遮断数や1日あたりの遮断数など、統計の記録を有効にします。\">検証の"
|
1412 |
"統計を記録</dfn>"
|
1413 |
|
1414 |
-
#: admin/includes/tab-settings.php:
|
1415 |
msgid "Maximum period for “Statistics” [days]"
|
1416 |
msgstr "記録する統計の最大期間[日]"
|
1417 |
|
1418 |
-
#: admin/includes/tab-settings.php:
|
1419 |
msgid "Remove all settings and records at uninstallation"
|
1420 |
msgstr "アンインストール時に設定と記録を全て削除"
|
1421 |
|
1422 |
-
#: admin/includes/tab-settings.php:
|
1423 |
msgid "Geolocation API settings"
|
1424 |
msgstr "位置情報APIの設定"
|
1425 |
|
1426 |
-
#: admin/includes/tab-settings.php:
|
1427 |
msgid ""
|
1428 |
"<dfn title=\"IP address cache and local databases are scanned at the top "
|
1429 |
"priority.\">API selection and key settings</dfn>"
|
@@ -1431,46 +1507,46 @@ msgstr ""
|
|
1431 |
"<dfn title=\"IPアドレスのキャッシュとローカルのデータベースが最優先で検索されます。\">APIの選択とキー"
|
1432 |
"の設定</dfn>"
|
1433 |
|
1434 |
-
#: admin/includes/tab-settings.php:
|
1435 |
msgid "Timeout for network API [sec]"
|
1436 |
msgstr "ネットワークAPIのタイムアウト[秒]"
|
1437 |
|
1438 |
-
#: admin/includes/tab-settings.php:
|
1439 |
msgid "Local database settings"
|
1440 |
msgstr "ローカル・データベースの設定"
|
1441 |
|
1442 |
-
#: admin/includes/tab-settings.php:
|
1443 |
msgid "database"
|
1444 |
msgstr "ファイル"
|
1445 |
|
1446 |
-
#: admin/includes/tab-settings.php:
|
1447 |
#, php-format
|
1448 |
msgid "Last update: %s"
|
1449 |
msgstr "最終更新:%s"
|
1450 |
|
1451 |
-
#: admin/includes/tab-settings.php:
|
1452 |
msgid "Auto updating (once a month)"
|
1453 |
msgstr "自動更新(月1回)"
|
1454 |
|
1455 |
-
#: admin/includes/tab-settings.php:
|
1456 |
msgid "Download database"
|
1457 |
msgstr "データベースのダウンロード"
|
1458 |
|
1459 |
-
#: admin/includes/tab-settings.php:
|
1460 |
msgid "Download now"
|
1461 |
msgstr "今すぐダウンロード"
|
1462 |
|
1463 |
-
#: admin/includes/tab-settings.php:
|
1464 |
msgid "Plugin settings"
|
1465 |
msgstr "プラグインの設定"
|
1466 |
|
1467 |
-
#: admin/includes/tab-settings.php:
|
1468 |
msgid ""
|
1469 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1470 |
"settings</dfn>"
|
1471 |
msgstr "<dfn title=\"全ての設定をネットワーク全体で同期させます。\">ネットワーク内で設定を同期</dfn>"
|
1472 |
|
1473 |
-
#: admin/includes/tab-settings.php:
|
1474 |
msgid ""
|
1475 |
"<dfn title=\"You can access to the login form with a specific key at "
|
1476 |
"emergency. Please add the generated link to favorites / bookmarks in your "
|
@@ -1480,7 +1556,7 @@ msgstr ""
|
|
1480 |
"<dfn title=\"緊急時にもログイン可能なリンクを生成します。キー自体は保存されないので、生成したリンクを"
|
1481 |
"ブラウザのお気に入り/ブックマークに追加してください。\">緊急時用ログイン・リンク</dfn>"
|
1482 |
|
1483 |
-
#: admin/includes/tab-settings.php:
|
1484 |
msgid ""
|
1485 |
"<dfn title=\"Valid key for Google Maps JavaScript API. Maps Embed API in "
|
1486 |
"iframe can be available without key in case it's empty.\">Google Maps API "
|
@@ -1489,55 +1565,55 @@ msgstr ""
|
|
1489 |
"<dfn title=\"Google Maps JavaScript API の有効なキー。空欄にするとキーなしの Maps Embed API が使用可"
|
1490 |
"能です。\">Google Maps API キー</dfn>"
|
1491 |
|
1492 |
-
#: admin/includes/tab-settings.php:
|
1493 |
msgid "Export / Import settings"
|
1494 |
msgstr "設定のエクスポート、インポート"
|
1495 |
|
1496 |
-
#: admin/includes/tab-settings.php:
|
1497 |
msgid "Export settings"
|
1498 |
msgstr "エクスポート"
|
1499 |
|
1500 |
-
#: admin/includes/tab-settings.php:
|
1501 |
msgid "Import from the local file"
|
1502 |
msgstr "ローカル・ファイルからインポートします"
|
1503 |
|
1504 |
-
#: admin/includes/tab-settings.php:
|
1505 |
msgid "Import settings"
|
1506 |
msgstr "インポート"
|
1507 |
|
1508 |
-
#: admin/includes/tab-settings.php:
|
1509 |
msgid "Import pre-defined settings"
|
1510 |
msgstr "プリセットのインポート"
|
1511 |
|
1512 |
-
#: admin/includes/tab-settings.php:
|
1513 |
msgid ""
|
1514 |
"Import the default settings to revert to the “Right after "
|
1515 |
"installing” state"
|
1516 |
msgstr "インストール直後の状態に戻すための設定値をインポートします"
|
1517 |
|
1518 |
-
#: admin/includes/tab-settings.php:
|
1519 |
msgid "Default settings"
|
1520 |
msgstr "初期設定"
|
1521 |
|
1522 |
-
#: admin/includes/tab-settings.php:
|
1523 |
msgid ""
|
1524 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1525 |
"for the “Back-end target settings”"
|
1526 |
msgstr "「ゼロデイ攻撃の遮断」など、主に[バックエンドの設定]の推奨設定をインポートします"
|
1527 |
|
1528 |
-
#: admin/includes/tab-settings.php:
|
1529 |
msgid "Best for Back-end"
|
1530 |
msgstr "バックエンドの推奨設定"
|
1531 |
|
1532 |
-
#: admin/includes/tab-settings.php:
|
1533 |
msgid "Diagnose all DB tables"
|
1534 |
msgstr "全データベース・テーブルの検査"
|
1535 |
|
1536 |
-
#: admin/includes/tab-settings.php:
|
1537 |
msgid "Diagnose now"
|
1538 |
msgstr "今すぐ検査"
|
1539 |
|
1540 |
-
#: admin/includes/tab-settings.php:
|
1541 |
msgid ""
|
1542 |
"<dfn title=\"When you have some unexpected blocking experiences, please "
|
1543 |
"press the button to find the blocked requests at the end of dumped "
|
@@ -1551,15 +1627,15 @@ msgstr ""
|
|
1551 |
"org/support/plugin/ip-geo-block\" title=\"[IP Geo Block] Support | WordPress.org\">サポート・フォーラ"
|
1552 |
"ム</a> ]"
|
1553 |
|
1554 |
-
#: admin/includes/tab-settings.php:
|
1555 |
msgid "Please copy & paste when submitting your issue to support forum"
|
1556 |
msgstr "フォーラムに問題を投稿する際、コピーして張り付けてください"
|
1557 |
|
1558 |
-
#: admin/includes/tab-settings.php:
|
1559 |
msgid "Show information"
|
1560 |
msgstr "情報を表示"
|
1561 |
|
1562 |
-
#: admin/includes/tab-settings.php:
|
1563 |
msgid ""
|
1564 |
"While Geolite2 / Maxmind and IP2Location will fetch the local databases, "
|
1565 |
"others will pass an IP address to the 3rd parties' API via HTTP."
|
@@ -1567,14 +1643,14 @@ msgstr ""
|
|
1567 |
"MaxmindとIP2Locationはローカルのデータベースを検索しますが、他はHTTPを介して外部のAPIにIPアドレスを渡"
|
1568 |
"します。"
|
1569 |
|
1570 |
-
#: admin/includes/tab-settings.php:
|
1571 |
msgid ""
|
1572 |
"Please select the appropriate APIs to fit the privacy law / regulation in "
|
1573 |
"your country / region."
|
1574 |
msgstr ""
|
1575 |
"あなたの国/地域におけるプライバシー保護の法規・条例に適合するよう、適切なAPIを選択して下さい。"
|
1576 |
|
1577 |
-
#: admin/includes/tab-settings.php:
|
1578 |
#, php-format
|
1579 |
msgid ""
|
1580 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
@@ -1583,13 +1659,12 @@ msgstr ""
|
|
1583 |
"Maxmind GeoLite2 データベースと API には、PHP バージョン 5.4.0 以上と %sPECL phar 2.0.0 以上%sが必要"
|
1584 |
"です。"
|
1585 |
|
1586 |
-
#: admin/includes/tab-settings.php:
|
1587 |
#, php-format
|
1588 |
msgid ""
|
1589 |
"Please refer to \"%sLiving with cache plugin%s\" for compatibility with "
|
1590 |
"cache plugins."
|
1591 |
-
msgstr ""
|
1592 |
-
"キャッシュ・プラグインとの互換性については、%sこのドキュメント%s を参照して下さい。"
|
1593 |
|
1594 |
#: admin/includes/tab-statistics.php:18
|
1595 |
msgid "Statistics of validation"
|
@@ -1691,16 +1766,16 @@ msgstr "[%sIPアドレスをキャッシュに記録%s]が無効です。"
|
|
1691 |
msgid "Please set the proper condition to record IP address in cache."
|
1692 |
msgstr "キャッシュを利用しサイトの応答性を上げるためには、適切な条件を設定して下さい。"
|
1693 |
|
1694 |
-
#: classes/class-ip-geo-block-cron.php:
|
1695 |
#, php-format
|
1696 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1697 |
msgstr "<code>%s</code> をロック出来ません。パーミッションをチェックして下さい。"
|
1698 |
|
1699 |
-
#: classes/class-ip-geo-block-cron.php:
|
1700 |
msgid "Your database file is up-to-date."
|
1701 |
msgstr "データベース・ファイルは最新です。"
|
1702 |
|
1703 |
-
#: classes/class-ip-geo-block-cron.php:
|
1704 |
msgid "gz or zip is not supported on your system."
|
1705 |
msgstr "gz または zip がサポートされていません。"
|
1706 |
|
@@ -1743,12 +1818,19 @@ msgid ""
|
|
1743 |
"again."
|
1744 |
msgstr "%s 用のカラム型が一致しません。一旦このプラグインを無効化し、再度有効化して下さい。"
|
1745 |
|
1746 |
-
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:
|
1747 |
-
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:
|
1748 |
-
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:
|
1749 |
msgid "Database file does not exist."
|
1750 |
msgstr "データベース・ファイルが見つかりません。"
|
1751 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1752 |
#: wp-content/mu-plugins/ip-geo-block-mu.php:72
|
1753 |
#, php-format
|
1754 |
msgid ""
|
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.17\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
+
"POT-Creation-Date: 2018-12-03 23:01+0900\n"
|
8 |
+
"PO-Revision-Date: 2018-12-03 23:04+0900\n"
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
28 |
"自国以外から投稿されるスパム、ログインフォーム、さらにゼロデイ攻撃を含む管理領域への悪意あるアクセス"
|
29 |
"からサイトを守ります。"
|
30 |
|
31 |
+
#: admin/class-ip-geo-block-admin.php:296
|
32 |
msgid "Are you sure ?"
|
33 |
msgstr "実行してもよいですか?"
|
34 |
|
35 |
+
#: admin/class-ip-geo-block-admin.php:297
|
36 |
+
#: admin/class-ip-geo-block-admin.php:791
|
37 |
msgid "Open a new window"
|
38 |
msgstr "別窓で開く"
|
39 |
|
40 |
+
#: admin/class-ip-geo-block-admin.php:298 admin/includes/tab-settings.php:1528
|
41 |
msgid "Generate new link"
|
42 |
msgstr "新しいリンクを生成"
|
43 |
|
44 |
+
#: admin/class-ip-geo-block-admin.php:299 admin/includes/tab-settings.php:1529
|
45 |
msgid "Delete current link"
|
46 |
msgstr "生成したリンクを削除"
|
47 |
|
48 |
+
#: admin/class-ip-geo-block-admin.php:300
|
49 |
msgid ""
|
50 |
"Please add the following link to favorites / bookmarks in your browser : "
|
51 |
msgstr "次のリンクをブラウザのお気に入り/ブックマークに追加して下さい : "
|
52 |
|
53 |
+
#: admin/class-ip-geo-block-admin.php:301
|
54 |
msgid "ajax for logged-in user"
|
55 |
msgstr "認証済ユーザー用 ajax"
|
56 |
|
57 |
+
#: admin/class-ip-geo-block-admin.php:302
|
58 |
msgid "ajax for non logged-in user"
|
59 |
msgstr "未認証ユーザー用 ajax"
|
60 |
|
61 |
+
#: admin/class-ip-geo-block-admin.php:303
|
62 |
#, php-format
|
63 |
msgid "[Found: %d]"
|
64 |
msgstr "[見つかった数:%d]"
|
65 |
|
66 |
+
#: admin/class-ip-geo-block-admin.php:304
|
67 |
#, php-format
|
68 |
msgid "Find and verify `%s` on “Logs” tab."
|
69 |
msgstr "ログから `%s` を検索し、検証して下さい。"
|
70 |
|
71 |
+
#: admin/class-ip-geo-block-admin.php:305
|
72 |
msgid "This feature is available with HTML5 compliant browsers."
|
73 |
msgstr "HTML5準拠のブラウザでのみ機能します。"
|
74 |
|
75 |
+
#: admin/class-ip-geo-block-admin.php:306
|
76 |
msgid "The selected row cannot be found in the table."
|
77 |
msgstr "テーブル中に選択された行が見つかりません。"
|
78 |
|
79 |
+
#: admin/class-ip-geo-block-admin.php:307
|
80 |
+
#: admin/class-ip-geo-block-admin.php:1694
|
81 |
#, php-format
|
82 |
msgid "An error occurred while executing the ajax command `%s`."
|
83 |
msgstr "Ajaxコマンド `%s` の実行中にエラーが発生しました。"
|
84 |
|
85 |
+
#: admin/class-ip-geo-block-admin.php:311
|
86 |
msgid "No data available in table"
|
87 |
msgstr "テーブルにデータがありません"
|
88 |
|
89 |
+
#: admin/class-ip-geo-block-admin.php:312
|
90 |
msgid "No matching records found"
|
91 |
msgstr "一致するレコードがありません"
|
92 |
|
93 |
+
#: admin/class-ip-geo-block-admin.php:313
|
94 |
#: admin/includes/class-admin-ajax.php:107
|
95 |
#: admin/includes/class-admin-ajax.php:240
|
96 |
#: admin/includes/tab-geolocation.php:74
|
97 |
msgid "IP address"
|
98 |
msgstr "IPアドレス"
|
99 |
|
100 |
+
#: admin/class-ip-geo-block-admin.php:314
|
101 |
#: admin/includes/class-admin-ajax.php:108
|
102 |
#: admin/includes/class-admin-ajax.php:241
|
103 |
msgid "Code"
|
104 |
msgstr "国"
|
105 |
|
106 |
+
#: admin/class-ip-geo-block-admin.php:315
|
107 |
#: admin/includes/class-admin-ajax.php:109
|
108 |
#: admin/includes/class-admin-ajax.php:242
|
109 |
msgid "ASN"
|
110 |
msgstr "AS番号"
|
111 |
|
112 |
+
#: admin/class-ip-geo-block-admin.php:316
|
113 |
#: admin/includes/class-admin-ajax.php:243
|
114 |
msgid "Host name"
|
115 |
msgstr "ホスト名"
|
116 |
|
117 |
+
#: admin/class-ip-geo-block-admin.php:317
|
118 |
#: admin/includes/class-admin-ajax.php:110
|
119 |
#: admin/includes/class-admin-ajax.php:244
|
120 |
msgid "Target"
|
121 |
msgstr "検証対象"
|
122 |
|
123 |
+
#: admin/class-ip-geo-block-admin.php:318
|
124 |
#: admin/includes/class-admin-ajax.php:245
|
125 |
msgid "Failure / Total"
|
126 |
msgstr "ログイン失敗/総計"
|
127 |
|
128 |
+
#: admin/class-ip-geo-block-admin.php:319
|
129 |
#: admin/includes/class-admin-ajax.php:246
|
130 |
msgid "Elapsed[sec]"
|
131 |
msgstr "経過 [秒]"
|
132 |
|
133 |
+
#: admin/class-ip-geo-block-admin.php:320
|
134 |
#: admin/includes/class-admin-ajax.php:106
|
135 |
msgid "Time"
|
136 |
msgstr "日時"
|
137 |
|
138 |
+
#: admin/class-ip-geo-block-admin.php:321
|
139 |
#: admin/includes/class-admin-ajax.php:111
|
140 |
msgid "Result"
|
141 |
msgstr "検証結果"
|
142 |
|
143 |
+
#: admin/class-ip-geo-block-admin.php:322
|
144 |
#: admin/includes/class-admin-ajax.php:112
|
145 |
msgid "Request"
|
146 |
msgstr "リクエスト"
|
147 |
|
148 |
+
#: admin/class-ip-geo-block-admin.php:323
|
149 |
#: admin/includes/class-admin-ajax.php:113
|
150 |
msgid "User agent"
|
151 |
msgstr "ユーザー・エージェント"
|
152 |
|
153 |
+
#: admin/class-ip-geo-block-admin.php:324
|
154 |
#: admin/includes/class-admin-ajax.php:114
|
155 |
msgid "HTTP headers"
|
156 |
msgstr "HTTP ヘッダー"
|
157 |
|
158 |
+
#: admin/class-ip-geo-block-admin.php:325
|
159 |
#: admin/includes/class-admin-ajax.php:115
|
160 |
msgid "$_POST data"
|
161 |
msgstr "$_POST データ"
|
162 |
|
163 |
+
#: admin/class-ip-geo-block-admin.php:351
|
164 |
msgid "Contribute on GitHub"
|
165 |
msgstr "開発に参加"
|
166 |
|
167 |
+
#: admin/class-ip-geo-block-admin.php:365
|
168 |
+
#: admin/class-ip-geo-block-admin.php:491
|
169 |
+
#: admin/class-ip-geo-block-admin.php:732
|
170 |
+
#: admin/class-ip-geo-block-admin.php:752
|
171 |
+
#: admin/class-ip-geo-block-admin.php:768
|
172 |
msgid "Settings"
|
173 |
msgstr "設定"
|
174 |
|
175 |
+
#: admin/class-ip-geo-block-admin.php:459
|
176 |
#: admin/class-ip-geo-block-admin.php:460
|
177 |
+
#: admin/class-ip-geo-block-admin.php:470
|
178 |
#: admin/class-ip-geo-block-admin.php:471
|
179 |
+
#: admin/class-ip-geo-block-admin.php:480
|
180 |
+
#: admin/class-ip-geo-block-admin.php:490
|
|
|
181 |
msgid "IP Geo Block"
|
182 |
msgstr "IP Geo Block"
|
183 |
|
184 |
+
#: admin/class-ip-geo-block-admin.php:481
|
185 |
+
#: admin/class-ip-geo-block-admin.php:731
|
186 |
+
#: admin/class-ip-geo-block-admin.php:749
|
187 |
+
#: admin/class-ip-geo-block-admin.php:766
|
188 |
msgid "Sites list"
|
189 |
msgstr "サイト一覧"
|
190 |
|
191 |
+
#: admin/class-ip-geo-block-admin.php:521
|
192 |
msgid "You need WordPress 3.7+."
|
193 |
msgstr "WordPress 3.7 以上が必要です。"
|
194 |
|
195 |
+
#: admin/class-ip-geo-block-admin.php:525
|
196 |
#, php-format
|
197 |
msgid ""
|
198 |
"Can not load Geolocation API libraries from <code>%s</code>. It seems to "
|
201 |
"contents of tokkonopapa/WordPress-IP-Geo-API as a zip file\">ZIP file</a> "
|
202 |
"from <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-"
|
203 |
"IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
204 |
+
"IP-Geo-API</a>. Try to deactivate IP Geo Block once and activate it again, "
|
205 |
+
"or install <code>ip-geo-api</code> with write permission according to <a rel="
|
206 |
+
"\"noreferrer\" href=\"https://www.ipgeoblock.com/codex/how-to-fix-permission-"
|
207 |
+
"troubles.html\" title=\"How can I fix permission troubles? | IP Geo Block"
|
208 |
+
"\">this instruction</a>."
|
209 |
msgstr ""
|
210 |
"<code>%s</code> に位置情報APIライブラリが見つかりません。<a rel=\"noreferrer\" href=\"https://github."
|
211 |
"com/tokkonopapa/WordPress-IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
212 |
"IP-Geo-API</a> から <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-IP-Geo-API/"
|
213 |
"archive/master.zip\" title=\"Download the contents of tokkonopapa/WordPress-IP-Geo-API as a zip file"
|
214 |
+
"\">ZIP file</a> のダウンロードに失敗したようです。一旦プラグインを無効化した後に再び有効化するか、<a "
|
215 |
+
"rel=\"noreferrer\" href=\"https://www.ipgeoblock.com/codex/how-to-fix-permission-troubles.html\" "
|
216 |
+
"title=\"How can I fix permission troubles? | IP Geo Block\">FAQ</a> を参照し、適切な書き込み権限と共"
|
217 |
+
"に <code>ip-geo-api</code> をインストールしてください。"
|
218 |
|
219 |
+
#: admin/class-ip-geo-block-admin.php:534
|
220 |
#, php-format
|
221 |
msgid ""
|
222 |
"You should select at least one API at <a href=\"%s\">Geolocation API "
|
226 |
"<a href=\"%s\">位置情報APIの設定</a>で、少なくとも1つ以上のAPIを選択して下さい。未選択の場合、キャッ"
|
227 |
"シュの有効期限切れと共にロックアウトされます。"
|
228 |
|
229 |
+
#: admin/class-ip-geo-block-admin.php:543
|
230 |
#, php-format
|
231 |
msgid ""
|
232 |
"You should select at least one API for local database at <a href=\"%s"
|
236 |
"<a href=\"%s\">位置情報APIの設定</a>で、ローカルデータベース用のAPIを少なくとも1つ以上選択して下さ"
|
237 |
"い。未選択の場合、外部APIへのアクセスにより、サイトの応答性が悪くなります。"
|
238 |
|
239 |
+
#: admin/class-ip-geo-block-admin.php:554
|
240 |
#, php-format
|
241 |
msgid ""
|
242 |
"Now downloading geolocation databases in background. After a little while, "
|
247 |
"と[<strong>マッチング規則</strong>]を[<a href=\"%s\">検証ルールと振る舞いの設定</a>]で確認して下"
|
248 |
"さい。"
|
249 |
|
250 |
+
#: admin/class-ip-geo-block-admin.php:560
|
251 |
#, php-format
|
252 |
msgid ""
|
253 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
256 |
"[<strong>マッチング規則</strong>]が正しく設定されていません。[<a href=\"%s\">検証ルールと振る舞い"
|
257 |
"の設定</a>]を確認して下さい。"
|
258 |
|
259 |
+
#: admin/class-ip-geo-block-admin.php:569
|
260 |
msgid "Local database and matching rule have been updated."
|
261 |
msgstr "ローカル・データベースとマッチング規則を更新しました。"
|
262 |
|
263 |
+
#: admin/class-ip-geo-block-admin.php:580
|
264 |
msgid ""
|
265 |
"Once you logout, you will be unable to login again because the number of "
|
266 |
"login attempts reaches the limit."
|
268 |
"あなたのIPアドレスのログイン試行可能回数がリミットに達したため、ログアウトすると再びログインする事が"
|
269 |
"出来なくなります。"
|
270 |
|
271 |
+
#: admin/class-ip-geo-block-admin.php:582
|
272 |
#, php-format
|
273 |
msgid ""
|
274 |
"Please remove your IP address in “%1$sStatistics in IP address cache"
|
278 |
"[%3$s統計%4$s]タブの[%1$sIPアドレスのキャッシュ%2$s]から自身のIPアドレスを削除し、ロックアウトを"
|
279 |
"回避してください。"
|
280 |
|
281 |
+
#: admin/class-ip-geo-block-admin.php:593
|
282 |
msgid ""
|
283 |
"Once you logout, you will be unable to login again because your country code "
|
284 |
"or IP address is in the blacklist."
|
286 |
"あなたの国コードまたはIPアドレスがブラックリストに含まれているため、ログアウトすると再びログインする"
|
287 |
"事が出来なくなります。"
|
288 |
|
289 |
+
#: admin/class-ip-geo-block-admin.php:594
|
290 |
msgid ""
|
291 |
"Once you logout, you will be unable to login again because your country code "
|
292 |
"or IP address is not in the whitelist."
|
294 |
"あなたの国コードまたはIPアドレスがホワイトリストに含まれていないため、ログアウトすると再びログインす"
|
295 |
"る事が出来なくなります。"
|
296 |
|
297 |
+
#: admin/class-ip-geo-block-admin.php:598
|
298 |
#, php-format
|
299 |
msgid "Please check your “%sValidation rules and behavior%s”."
|
300 |
msgstr "[%s検証ルールと振る舞いの設定%s]を確認して下さい。"
|
301 |
|
302 |
+
#: admin/class-ip-geo-block-admin.php:602
|
303 |
#, php-format
|
304 |
msgid ""
|
305 |
"Please confirm your local geolocation database files exist at “%sLocal "
|
309 |
"[%sローカル・データベースの設定%s]で位置情報データベース・ファイルの有無を確認して下さい。あるいは"
|
310 |
"[%sキャッシュの統計%s]でキャッシュされているあなたのIPアドレスを削除して下さい。"
|
311 |
|
312 |
+
#: admin/class-ip-geo-block-admin.php:616
|
313 |
#, php-format
|
314 |
msgid ""
|
315 |
"Emergency login link is outdated. Please delete it once and generate again "
|
319 |
"緊急ログイン・リンクが古くなっています。[%sプラグインの設定%s]で一度削除してから再度生成してくださ"
|
320 |
"い。 またブラウザのお気に入り/ブックマークも忘れずに更新して下さい。"
|
321 |
|
322 |
+
#: admin/class-ip-geo-block-admin.php:625
|
323 |
msgid ""
|
324 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
325 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
329 |
"<strong>IP Geo Allow</strong> と互換性がありません。「“init” アクション・フック」を選択し"
|
330 |
"てください。"
|
331 |
|
332 |
+
#: admin/class-ip-geo-block-admin.php:733
|
333 |
msgid "Statistics"
|
334 |
msgstr "統計"
|
335 |
|
336 |
+
#: admin/class-ip-geo-block-admin.php:734
|
337 |
msgid "Logs"
|
338 |
msgstr "ログ"
|
339 |
|
340 |
+
#: admin/class-ip-geo-block-admin.php:735
|
341 |
msgid "Search"
|
342 |
msgstr "検索"
|
343 |
|
344 |
+
#: admin/class-ip-geo-block-admin.php:736
|
345 |
msgid "Attribution"
|
346 |
msgstr "リンク"
|
347 |
|
348 |
+
#: admin/class-ip-geo-block-admin.php:784
|
|
|
|
|
|
|
|
|
|
|
349 |
msgid "Toggle all"
|
350 |
msgstr "全てを開閉"
|
351 |
|
352 |
+
#: admin/class-ip-geo-block-admin.php:787
|
353 |
msgid ""
|
354 |
"Independent of “Privacy and record settings”, you can see all "
|
355 |
"the requests validated by this plugin in almost real time."
|
357 |
"[プライバシーと記録の設定]にかかわらず、このプラグインによる検証結果のすべてを、ほぼリアルタイムに"
|
358 |
"表示します。"
|
359 |
|
360 |
+
#: admin/class-ip-geo-block-admin.php:787 admin/includes/tab-accesslog.php:39
|
361 |
msgid "Live update"
|
362 |
msgstr "ライブアップデート"
|
363 |
|
364 |
+
#: admin/class-ip-geo-block-admin.php:791
|
365 |
msgid "Open a new window on clicking the link in the chart."
|
366 |
msgstr "チャート内のリンクをクリックすると、新しいウィンドウが開きます。"
|
367 |
|
368 |
+
#: admin/class-ip-geo-block-admin.php:815
|
369 |
msgid "Thanks for providing these great services for free."
|
370 |
msgstr "これらのすばらしいサービスの提供元に、敬意と感謝の意を表します!"
|
371 |
|
372 |
+
#: admin/class-ip-geo-block-admin.php:816
|
373 |
msgid ""
|
374 |
"(Most browsers will redirect you to each site <a href=\"https://www."
|
375 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
378 |
"(ほとんどのブラウザでは、<a href=\"https://www.ipgeoblock.com/etc/referer.html\" title=\"Referer "
|
379 |
"Checker\">参照元を残さずにリンク先にリダイレクトできます</a>。)"
|
380 |
|
381 |
+
#: admin/class-ip-geo-block-admin.php:821
|
382 |
msgid "Back to top"
|
383 |
msgstr "トップに戻る"
|
384 |
|
385 |
+
#: admin/class-ip-geo-block-admin.php:913
|
386 |
msgid "Enable"
|
387 |
msgstr "有効"
|
388 |
|
389 |
+
#: admin/class-ip-geo-block-admin.php:928
|
390 |
msgid "Select one"
|
391 |
msgstr "何れかを選択"
|
392 |
|
393 |
+
#: admin/class-ip-geo-block-admin.php:1363
|
394 |
msgid "You do not have sufficient permissions to access this page."
|
395 |
msgstr "このページにアクセスするための十分な権限がありません。"
|
396 |
|
397 |
+
#: admin/class-ip-geo-block-admin.php:1390
|
398 |
#: admin/includes/class-admin-rewrite.php:194
|
399 |
+
#: classes/class-ip-geo-block-cron.php:228
|
400 |
+
#: classes/class-ip-geo-block-cron.php:332
|
401 |
+
#: classes/class-ip-geo-block-cron.php:410
|
402 |
+
#: classes/class-ip-geo-block-opts.php:482
|
403 |
#, php-format
|
404 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
405 |
msgstr "<code>%s</code> に書き込めません。パーミッションをチェックして下さい。"
|
406 |
|
407 |
+
#: admin/class-ip-geo-block-admin.php:1424
|
408 |
msgid "Settings saved."
|
409 |
msgstr "設定を保存しました。"
|
410 |
|
411 |
+
#: admin/class-ip-geo-block-admin.php:1529
|
412 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:91
|
413 |
+
msgid ""
|
414 |
+
"<span title=\"Show only passed entries whose country codes are in Whitelist."
|
415 |
+
"\">Passed in Whitelist</span>"
|
416 |
+
msgstr ""
|
417 |
+
"<span title=\"ホワイトリストに国コードが有る、通過したエントリのみを表示します。\">ホワイトリスト通過"
|
418 |
+
"</span>"
|
419 |
+
|
420 |
+
#: admin/class-ip-geo-block-admin.php:1530
|
421 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:92
|
422 |
+
msgid ""
|
423 |
+
"<span title=\"Show only passed entries whose country codes are in Blacklist."
|
424 |
+
"\">Passed in Blacklist</span>"
|
425 |
+
msgstr ""
|
426 |
+
"<span title=\"ブラックリストに国コードが有る、通過したエントリのみを表示します。\">ブラックリスト通過"
|
427 |
+
"</span>"
|
428 |
+
|
429 |
+
#: admin/class-ip-geo-block-admin.php:1531
|
430 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:93
|
431 |
+
msgid ""
|
432 |
+
"<span title=\"Show only passed entries whose country codes are not in either "
|
433 |
+
"list.\">Passed not in List</span>"
|
434 |
+
msgstr ""
|
435 |
+
"<span title=\"どちらのリストにも国コードが無い、通過したエントリのみを表示します。\">どちらにも無く通"
|
436 |
+
"過</span>"
|
437 |
+
|
438 |
+
#: admin/class-ip-geo-block-admin.php:1532
|
439 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:94
|
440 |
+
msgid ""
|
441 |
+
"<span title=\"Show only blocked entries whose country codes are in Whitelist."
|
442 |
+
"\">Blocked in Whitelist</span>"
|
443 |
+
msgstr ""
|
444 |
+
"<span title=\"ホワイトリストに国コードが有る、遮断したエントリのみを表示します。\">ホワイトリスト遮断"
|
445 |
+
"</span>"
|
446 |
+
|
447 |
+
#: admin/class-ip-geo-block-admin.php:1533
|
448 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:95
|
449 |
+
msgid ""
|
450 |
+
"<span title=\"Show only blocked entries whose country codes are in Blacklist."
|
451 |
+
"\">Blocked in Blacklist</span>"
|
452 |
+
msgstr ""
|
453 |
+
"<span title=\"ブラックリストに国コードが有る、遮断したエントリのみを表示します。\">ブラックリスト遮断"
|
454 |
+
"</span>"
|
455 |
+
|
456 |
+
#: admin/class-ip-geo-block-admin.php:1534
|
457 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:96
|
458 |
+
msgid ""
|
459 |
+
"<span title=\"Show only blocked entries whose country codes are not in "
|
460 |
+
"either list.\">Blocked not in List</span>"
|
461 |
+
msgstr ""
|
462 |
+
"<span title=\"どちらのリストにも国コードが無い、遮断したエントリのみを表示します。\">どちらにも無く遮"
|
463 |
+
"断</span>"
|
464 |
+
|
465 |
#: admin/includes/class-admin-ajax.php:72
|
466 |
#: admin/includes/class-admin-ajax.php:75 admin/includes/tab-settings.php:84
|
467 |
#: admin/includes/tab-settings.php:103
|
480 |
msgstr "%sは誤ったフォーマットです。該当行を削除し、再実行してください。"
|
481 |
|
482 |
#: admin/includes/class-admin-rewrite.php:168
|
483 |
+
#: classes/class-ip-geo-block-cron.php:223
|
484 |
+
#: classes/class-ip-geo-block-cron.php:405
|
485 |
#, php-format
|
486 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
487 |
msgstr "<code>%s</code> が読めません。パーミッションをチェックして下さい。"
|
505 |
msgid "Help"
|
506 |
msgstr "ヘルプ"
|
507 |
|
508 |
+
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:450
|
509 |
msgid "Comment post"
|
510 |
msgstr "コメント投稿"
|
511 |
|
512 |
+
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:451
|
513 |
msgid "XML-RPC"
|
514 |
msgstr "XML-RPC"
|
515 |
|
516 |
+
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:452
|
517 |
msgid "Login form"
|
518 |
msgstr "ログイン・フォーム"
|
519 |
|
520 |
+
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:453
|
521 |
msgid "Admin area"
|
522 |
msgstr "管理領域"
|
523 |
|
524 |
+
#: admin/includes/tab-accesslog.php:59 admin/includes/tab-settings.php:455
|
525 |
msgid "Public facing pages"
|
526 |
msgstr "一般公開ページ"
|
527 |
|
541 |
msgid "Reset"
|
542 |
msgstr "リセット"
|
543 |
|
544 |
+
#: admin/includes/tab-accesslog.php:117
|
545 |
msgid "Preset filters"
|
546 |
msgstr "プリセット・フィルタ"
|
547 |
|
548 |
+
#: admin/includes/tab-accesslog.php:133 admin/includes/tab-statistics.php:238
|
549 |
msgid "Bulk action"
|
550 |
msgstr "選択して実行"
|
551 |
|
552 |
+
#: admin/includes/tab-accesslog.php:144 admin/includes/tab-statistics.php:249
|
553 |
msgid "Remove entries by IP address"
|
554 |
msgstr "指定のIPアドレスでエントリを削除"
|
555 |
|
556 |
+
#: admin/includes/tab-accesslog.php:145 admin/includes/tab-statistics.php:250
|
557 |
msgid "Add IP address to “Whitelist”"
|
558 |
msgstr "IPアドレスをホワイトリストへ追加"
|
559 |
|
560 |
+
#: admin/includes/tab-accesslog.php:146 admin/includes/tab-statistics.php:251
|
561 |
msgid "Add IP address to “Blacklist”"
|
562 |
msgstr "IPアドレスをブラックリストへ追加"
|
563 |
|
564 |
+
#: admin/includes/tab-accesslog.php:147 admin/includes/tab-statistics.php:252
|
565 |
msgid "Add AS number to “Whitelist”"
|
566 |
msgstr "AS番号をホワイトリストへ追加"
|
567 |
|
568 |
+
#: admin/includes/tab-accesslog.php:148 admin/includes/tab-statistics.php:253
|
569 |
msgid "Add AS number to “Blacklist”"
|
570 |
msgstr "AS番号をブラックリストへ追加"
|
571 |
|
572 |
+
#: admin/includes/tab-accesslog.php:150 admin/includes/tab-network.php:56
|
573 |
#: admin/includes/tab-statistics.php:255
|
574 |
msgid "Apply"
|
575 |
msgstr "実行する"
|
576 |
|
577 |
+
#: admin/includes/tab-accesslog.php:157 admin/includes/tab-statistics.php:191
|
578 |
msgid "Clear logs"
|
579 |
msgstr "ログをクリア"
|
580 |
|
581 |
+
#: admin/includes/tab-accesslog.php:165 admin/includes/tab-statistics.php:167
|
582 |
#: admin/includes/tab-statistics.php:199 admin/includes/tab-statistics.php:269
|
583 |
msgid "Clear all"
|
584 |
msgstr "全てをクリア"
|
585 |
|
586 |
+
#: admin/includes/tab-accesslog.php:174
|
587 |
msgid "Export logs"
|
588 |
msgstr "ログをエクスポート"
|
589 |
|
590 |
+
#: admin/includes/tab-accesslog.php:180 admin/includes/tab-settings.php:1560
|
591 |
#: admin/includes/tab-statistics.php:283
|
592 |
msgid "Export to the local file"
|
593 |
msgstr "ローカル・ファイルへエクスポートする"
|
594 |
|
595 |
+
#: admin/includes/tab-accesslog.php:180 admin/includes/tab-statistics.php:283
|
596 |
msgid "Export csv"
|
597 |
msgstr "CSVへエクスポート"
|
598 |
|
599 |
+
#: admin/includes/tab-accesslog.php:206 admin/includes/tab-network.php:112
|
600 |
#: admin/includes/tab-statistics.php:410
|
601 |
#, php-format
|
602 |
msgid "[ %sRecord “Validation logs”%s ] is disabled."
|
603 |
msgstr "[%s検証のログを記録%s]が無効です。"
|
604 |
|
605 |
+
#: admin/includes/tab-accesslog.php:207 admin/includes/tab-network.php:113
|
606 |
#: admin/includes/tab-statistics.php:411
|
607 |
msgid ""
|
608 |
"Please set the proper condition to record and analyze the validation logs."
|
620 |
msgid "Geolocation API"
|
621 |
msgstr "位置情報API"
|
622 |
|
623 |
+
#: admin/includes/tab-geolocation.php:89 admin/includes/tab-settings.php:1105
|
624 |
msgid ""
|
625 |
"<dfn title=\"IP address is always encrypted on recording in Cache and Logs. "
|
626 |
"Moreover, this option replaces the end of IP address with “***” "
|
771 |
"の国にもマッチさせないことが必要な場合には、「YY」を指定してください。\">国コードのブラックリスト</"
|
772 |
"dfn>"
|
773 |
|
774 |
+
#: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:827
|
775 |
msgid "Matching rule"
|
776 |
msgstr "マッチング規則"
|
777 |
|
893 |
"ング]を「“mu-plugins” (ip-geo-block-mu.php)」に設定することを検討してください。\">悪意の"
|
894 |
"あるアップロード防止</dfn>"
|
895 |
|
896 |
+
#: admin/includes/tab-settings.php:304 admin/includes/tab-settings.php:516
|
897 |
+
#: admin/includes/tab-settings.php:661 admin/includes/tab-settings.php:1177
|
898 |
msgid "Disable"
|
899 |
msgstr "無効"
|
900 |
|
906 |
msgid "Verify file extension only"
|
907 |
msgstr "ファイル拡張子のみを検証"
|
908 |
|
909 |
+
#: admin/includes/tab-settings.php:314
|
910 |
+
msgid ""
|
911 |
+
"<dfn title=\"Specify the table names to be verified for single site. This "
|
912 |
+
"verification will be skipped if empty.\">pre_update_option</dfn>"
|
913 |
+
msgstr ""
|
914 |
+
"<dfn title=\"データベース中のシングルサイト用テーブル名を指定します。空欄の場合、この検証はスキップさ"
|
915 |
+
"れます。\">pre_update_option</dfn>"
|
916 |
+
|
917 |
+
#: admin/includes/tab-settings.php:316
|
918 |
+
msgid ""
|
919 |
+
"<dfn title=\"Specify the table names to be verified for multisite. This "
|
920 |
+
"verification will be skipped if empty.\">pre_update_site_option</dfn>"
|
921 |
+
msgstr ""
|
922 |
+
"<dfn title=\"データベース中のマルチサイト用テーブル名を指定します。空欄の場合、この検証はスキップされ"
|
923 |
+
"ます。\">pre_update_site_option</dfn>"
|
924 |
+
|
925 |
+
#: admin/includes/tab-settings.php:321
|
926 |
+
msgid ""
|
927 |
+
"<dfn title=\"It prevents to manipulate metadata in database without admin "
|
928 |
+
"privilege.\">Prevent metadata alteration</dfn>"
|
929 |
+
msgstr "<dfn title=\"管理者権限なくメタデータが改変される事を防止します。\">メタデータの改竄防止</dfn>"
|
930 |
+
|
931 |
+
#: admin/includes/tab-settings.php:337
|
932 |
#, php-format
|
933 |
msgid ""
|
934 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
937 |
"<dfn title=\"テーマ・ディレクトリには 403.php など、独自のファイルを設置する事が出来ます。\">レスポン"
|
938 |
"ス・コード</dfn> %s"
|
939 |
|
940 |
+
#: admin/includes/tab-settings.php:366 admin/includes/tab-settings.php:910
|
941 |
msgid ""
|
942 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
943 |
"to a public facing page, visitors would not be blocked on the page to "
|
949 |
"避けるため、自サイト内の URL は[フロントエンドの設定]に関わらず遮断の対象外となります。空欄の場合、"
|
950 |
"サイトのホームが使用されます。\">リダイレクト先 URL</dfn>"
|
951 |
|
952 |
+
#: admin/includes/tab-settings.php:383 admin/includes/tab-settings.php:928
|
953 |
msgid ""
|
954 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
955 |
"message</dfn>"
|
956 |
msgstr ""
|
957 |
"<dfn title=\"レスポンス・コード 4xx、5xx 用のメッセージを指定します。\">レスポンス・メッセージ</dfn>"
|
958 |
|
959 |
+
#: admin/includes/tab-settings.php:401
|
960 |
msgid "Select when to run the validation."
|
961 |
msgstr "検証を実行するタイミングを選択します。"
|
962 |
|
963 |
+
#: admin/includes/tab-settings.php:401
|
964 |
msgid "Validation timing"
|
965 |
msgstr "検証のタイミング"
|
966 |
|
967 |
+
#: admin/includes/tab-settings.php:412
|
968 |
msgid "“init” action hook"
|
969 |
msgstr "“init” アクション・フック"
|
970 |
|
971 |
+
#: admin/includes/tab-settings.php:413
|
972 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
973 |
msgstr "“mu-plugins” (ip-geo-block-mu.php)"
|
974 |
|
975 |
+
#: admin/includes/tab-settings.php:416
|
976 |
msgid ""
|
977 |
"Validate at “init” action hook in the same manner as typical "
|
978 |
"plugins."
|
979 |
msgstr "標準的な他のプラグインと同様、init アクション・フックのタイミングで検証を実行します。"
|
980 |
|
981 |
+
#: admin/includes/tab-settings.php:417
|
982 |
msgid ""
|
983 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
984 |
"on server but has <a rel='noreferrer' href='https://www.ipgeoblock.com/codex/"
|
989 |
"が、<a rel=‘noreferrer’ href=‘https://www.ipgeoblock.com/codex/validation-timing.html' "
|
990 |
"title=‘Validation timing | IP Geo Block’>幾つかの制限事項</a> が生じます。"
|
991 |
|
992 |
+
#: admin/includes/tab-settings.php:425
|
993 |
msgid ""
|
994 |
"It enables to simulate the validation rules without actual blocking in order "
|
995 |
"to check the behavior of this plugin. The results can be found on “"
|
998 |
"このプラグインの動作を確認するために、実際に遮断させることなく検証ルールをシミュレートします。結果は"
|
999 |
"ログで確認する事が出来ます。"
|
1000 |
|
1001 |
+
#: admin/includes/tab-settings.php:425
|
1002 |
msgid "Simulation mode"
|
1003 |
msgstr "シミュレーション・モード"
|
1004 |
|
1005 |
+
#: admin/includes/tab-settings.php:442
|
1006 |
msgid "Back-end target settings"
|
1007 |
msgstr "バックエンドの設定"
|
1008 |
|
1009 |
+
#: admin/includes/tab-settings.php:448
|
1010 |
#, php-format
|
1011 |
msgid "<dfn title=\"It enables to validate requests to %s.\">%s</dfn>"
|
1012 |
msgstr "<dfn title=\"%s へのリクエストを検証します。\">%s</dfn>"
|
1013 |
|
1014 |
+
#: admin/includes/tab-settings.php:454
|
1015 |
msgid "Other areas"
|
1016 |
msgstr "その他の領域"
|
1017 |
|
1018 |
+
#: admin/includes/tab-settings.php:455
|
1019 |
msgid "public facing pages"
|
1020 |
msgstr "一般公開ページ"
|
1021 |
|
1022 |
+
#: admin/includes/tab-settings.php:471 admin/includes/tab-settings.php:517
|
1023 |
+
#: admin/includes/tab-settings.php:549 admin/includes/tab-settings.php:555
|
1024 |
+
#: admin/includes/tab-settings.php:820
|
1025 |
msgid "Block by country"
|
1026 |
msgstr "国コードで遮断"
|
1027 |
|
1028 |
+
#: admin/includes/tab-settings.php:481
|
1029 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
1030 |
msgstr "全体を <p> タグで囲みます。使用可能タグ:"
|
1031 |
|
1032 |
+
#: admin/includes/tab-settings.php:481
|
1033 |
msgid "Message on comment form"
|
1034 |
msgstr "投稿フォーム上のメッセージ"
|
1035 |
|
1036 |
+
#: admin/includes/tab-settings.php:494
|
1037 |
msgid "None"
|
1038 |
msgstr "なし"
|
1039 |
|
1040 |
+
#: admin/includes/tab-settings.php:495
|
1041 |
msgid "Top"
|
1042 |
msgstr "上部"
|
1043 |
|
1044 |
+
#: admin/includes/tab-settings.php:496
|
1045 |
msgid "Bottom"
|
1046 |
msgstr "下部"
|
1047 |
|
1048 |
+
#: admin/includes/tab-settings.php:518
|
1049 |
msgid "Completely close"
|
1050 |
msgstr "完全に閉鎖"
|
1051 |
|
1052 |
+
#: admin/includes/tab-settings.php:524
|
1053 |
msgid "Action to login as a registered user."
|
1054 |
msgstr "登録済みユーザーとしてログインするアクション。"
|
1055 |
|
1056 |
+
#: admin/includes/tab-settings.php:524
|
1057 |
msgid "Log in"
|
1058 |
msgstr "ログイン"
|
1059 |
|
1060 |
+
#: admin/includes/tab-settings.php:525
|
1061 |
msgid "Action to register new users."
|
1062 |
msgstr "新規ユーザーを登録するアクション。"
|
1063 |
|
1064 |
+
#: admin/includes/tab-settings.php:525
|
1065 |
msgid "Register"
|
1066 |
msgstr "登録"
|
1067 |
|
1068 |
+
#: admin/includes/tab-settings.php:526
|
1069 |
msgid "Action to reset a password to create a new one."
|
1070 |
msgstr "パスワードをリセットし、新しいパスワードに更新するアクション。"
|
1071 |
|
1072 |
+
#: admin/includes/tab-settings.php:526
|
1073 |
msgid "Password Reset"
|
1074 |
msgstr "パスワードのリセット"
|
1075 |
|
1076 |
+
#: admin/includes/tab-settings.php:527
|
1077 |
msgid "Action to email a password to a registered user."
|
1078 |
msgstr "登録済みユーザーにパスワードを送付するアクション。"
|
1079 |
|
1080 |
+
#: admin/includes/tab-settings.php:527
|
1081 |
msgid "Lost Password"
|
1082 |
msgstr "パスワード紛失"
|
1083 |
|
1084 |
+
#: admin/includes/tab-settings.php:528
|
1085 |
msgid ""
|
1086 |
"Action to show prompt to enter a password on password protected post and "
|
1087 |
"page."
|
1088 |
msgstr "パスワードで保護された投稿とページにパスワードを入力するプロンプトを表示するアクション。"
|
1089 |
|
1090 |
+
#: admin/includes/tab-settings.php:528
|
1091 |
msgid "Password protected"
|
1092 |
msgstr "パスワード保護"
|
1093 |
|
1094 |
+
#: admin/includes/tab-settings.php:550
|
1095 |
msgid ""
|
1096 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
1097 |
"actions</dfn>"
|
1098 |
msgstr "<dfn title=\"遮断対象とするアクションを指定します。\">対象アクション</dfn>"
|
1099 |
|
1100 |
+
#: admin/includes/tab-settings.php:556
|
1101 |
msgid "Prevent Zero-day Exploit"
|
1102 |
msgstr "ゼロデイ攻撃を遮断"
|
1103 |
|
1104 |
+
#: admin/includes/tab-settings.php:560
|
1105 |
msgid ""
|
1106 |
+
"It will block a request related to the services for both “non-logged "
|
1107 |
+
"in user” and “logged-in user”."
|
1108 |
+
msgstr "認証済ユーザーおよび未認証ユーザー用のサービスに関連するリクエストを遮断します。"
|
1109 |
|
1110 |
+
#: admin/includes/tab-settings.php:561
|
1111 |
msgid ""
|
1112 |
"Regardless of the country code, it will block a malicious request related to "
|
1113 |
+
"the services only for “logged-in user”."
|
1114 |
+
msgstr "国コードにかかわらず、認証済ユーザー限定のサービスに関連する悪意のあるリクエストを遮断します。"
|
1115 |
|
1116 |
+
#: admin/includes/tab-settings.php:567
|
1117 |
msgid ""
|
1118 |
"This is applied to “XML-RPC” and “Login form” when "
|
1119 |
"“IP address cache” in “Privacy and record settings” "
|
1123 |
"[プライバシーと記録の設定]»[IPアドレスのキャッシュを記録]が有効の時、[XML-RPC]と[ログイ"
|
1124 |
"ン・フォーム]に適用されます。ロックアウト時間は[有効時間]で定義します。"
|
1125 |
|
1126 |
+
#: admin/includes/tab-settings.php:567
|
1127 |
msgid "Max failed login attempts per IP address"
|
1128 |
msgstr "IPアドレス当たりのログイン試行可能回数"
|
1129 |
|
1130 |
+
#: admin/includes/tab-settings.php:608
|
1131 |
msgid "admin post for logged-in user"
|
1132 |
msgstr "認証済ユーザー用 admin post"
|
1133 |
|
1134 |
+
#: admin/includes/tab-settings.php:609
|
1135 |
msgid "admin post for non logged-in user"
|
1136 |
msgstr "未認証ユーザー用 admin post"
|
1137 |
|
1138 |
+
#: admin/includes/tab-settings.php:631
|
1139 |
msgid "Admin ajax/post"
|
1140 |
msgstr "管理領域 ajax/post"
|
1141 |
|
1142 |
+
#: admin/includes/tab-settings.php:645
|
1143 |
msgid ""
|
1144 |
"Specify the action name (“action=…”) or the page name "
|
1145 |
"(“page=…”) to prevent unintended blocking caused by "
|
1151 |
"” 部分)、またはページ名(“page=…” の “…” 部分)を指定"
|
1152 |
"し、検証対象から除外します。"
|
1153 |
|
1154 |
+
#: admin/includes/tab-settings.php:645 admin/includes/tab-settings.php:723
|
1155 |
+
#: admin/includes/tab-settings.php:783
|
1156 |
msgid "Exceptions"
|
1157 |
msgstr "例外"
|
1158 |
|
1159 |
+
#: admin/includes/tab-settings.php:646
|
1160 |
msgid "Toggle with non logged-in user"
|
1161 |
msgstr "未認証ユーザー用を含む項目に限定して表示する"
|
1162 |
|
1163 |
+
#: admin/includes/tab-settings.php:649
|
1164 |
msgid "Candidate actions/pages"
|
1165 |
msgstr "候補 アクション/ページ"
|
1166 |
|
1167 |
+
#: admin/includes/tab-settings.php:663
|
1168 |
#, php-format
|
1169 |
msgid ""
|
1170 |
"Regardless of the country code, it will block a malicious request to <code>"
|
1171 |
"%s⋯/*.php</code>."
|
1172 |
+
msgstr "国コードにかかわらず、<code>%s⋯/*.php</code>への悪意のあるリクエストを遮断します。"
|
1173 |
|
1174 |
+
#: admin/includes/tab-settings.php:664
|
1175 |
msgid ""
|
1176 |
"Select the item which causes unintended blocking in order to exclude from "
|
1177 |
"the validation target. Grayed item indicates “INACTIVE”."
|
1179 |
"意図しない遮断の原因となる項目を選択し、検証対象から除外します。灰色で表示された項目は、「非アクティ"
|
1180 |
"ブ」であることを示しています。"
|
1181 |
|
1182 |
+
#: admin/includes/tab-settings.php:665
|
1183 |
#, php-format
|
1184 |
msgid ""
|
1185 |
"It configures “%s” to validate a direct request to the PHP file "
|
1189 |
"WordPressコアを読み込まないPHPファイルへのリクエストを検証対象とするために、%s を設定します。ドットで"
|
1190 |
"始まる隠しファイルへのアクセス拒否がサーバー側で設定されていることを確認して下さい。"
|
1191 |
|
1192 |
+
#: admin/includes/tab-settings.php:666
|
1193 |
msgid "Sorry, but your server type is not supported."
|
1194 |
msgstr "このサーバーではサポートされません。"
|
1195 |
|
1196 |
+
#: admin/includes/tab-settings.php:667
|
1197 |
msgid ""
|
1198 |
"You need to click “Save Changes” button for imported settings to "
|
1199 |
"take effect."
|
1200 |
msgstr "インポートされた設定を有効にするには、[変更を保存]ボタンをクリックする必要があります。"
|
1201 |
|
1202 |
+
#: admin/includes/tab-settings.php:702 admin/includes/tab-settings.php:762
|
1203 |
msgid "Force to load WP core"
|
1204 |
msgstr "WPコアの読み込みを強制"
|
1205 |
|
1206 |
+
#: admin/includes/tab-settings.php:707
|
1207 |
msgid "Plugins area"
|
1208 |
msgstr "プラグイン領域"
|
1209 |
|
1210 |
+
#: admin/includes/tab-settings.php:767
|
1211 |
msgid "Themes area"
|
1212 |
msgstr "テーマ領域"
|
1213 |
|
1214 |
+
#: admin/includes/tab-settings.php:802
|
1215 |
msgid "Front-end target settings"
|
1216 |
msgstr "フロントエンドの設定"
|
1217 |
|
1218 |
+
#: admin/includes/tab-settings.php:837
|
1219 |
msgid "Follow “Validation rules and behavior”"
|
1220 |
msgstr "[検証ルールと振る舞いの設定]に従う"
|
1221 |
|
1222 |
+
#: admin/includes/tab-settings.php:879
|
1223 |
#, php-format
|
1224 |
msgid ""
|
1225 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
1229 |
"<dfn title=\"バックエンドと異なるレスポンス・コードを設定できます。これは、アフィリエイト・プログラム"
|
1230 |
"に対する違反を防止するのに役立つでしょう。\">レスポンス・コード</dfn> %s"
|
1231 |
|
1232 |
+
#: admin/includes/tab-settings.php:943
|
1233 |
msgid ""
|
1234 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1235 |
msgstr "<dfn title=\"特定のページを遮断対象に指定します。\">ページ</dfn>"
|
1236 |
|
1237 |
+
#: admin/includes/tab-settings.php:955
|
1238 |
msgid ""
|
1239 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1240 |
"target.\">Post type</dfn>"
|
1241 |
msgstr "<dfn title=\"特定の投稿タイプのシングルページを遮断対象に指定します。\">投稿タイプ</dfn>"
|
1242 |
|
1243 |
+
#: admin/includes/tab-settings.php:967
|
1244 |
msgid ""
|
1245 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1246 |
"page as a blocking target.\">Category</dfn>"
|
1248 |
"<dfn title=\"特定のカテゴリを含むシングルページかアーカイブページを遮断対象に指定します。\">カテゴリ"
|
1249 |
"</dfn>"
|
1250 |
|
1251 |
+
#: admin/includes/tab-settings.php:979
|
1252 |
msgid ""
|
1253 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1254 |
"a blocking target.\">Tag</dfn>"
|
1255 |
msgstr ""
|
1256 |
"<dfn title=\"特定のタグを含むシングルページかアーカイブページを遮断対象に指定します。\">タグ</dfn>"
|
1257 |
|
1258 |
+
#: admin/includes/tab-settings.php:993
|
1259 |
msgid "Specify the validation target on front-end."
|
1260 |
msgstr "フロントエンドの検証対象を設定します。"
|
1261 |
|
1262 |
+
#: admin/includes/tab-settings.php:993
|
1263 |
msgid "Validation target"
|
1264 |
msgstr "検証対象"
|
1265 |
|
1266 |
+
#: admin/includes/tab-settings.php:1004
|
1267 |
msgid "All requests"
|
1268 |
msgstr "全てのリクエスト"
|
1269 |
|
1270 |
+
#: admin/includes/tab-settings.php:1005
|
1271 |
msgid "Specify the targets"
|
1272 |
msgstr "ターゲットを指定"
|
1273 |
|
1274 |
+
#: admin/includes/tab-settings.php:1008
|
1275 |
msgid ""
|
1276 |
"Notice that “Validation timing” is deferred till “"
|
1277 |
"wp” action hook. It means that this feature would not be compatible "
|
1280 |
"[検証のタイミング]が “wp” アクション・フックまで遅延されます。これにより、ページ・"
|
1281 |
"キャッシュとの互換性がなくなることに注意してください。"
|
1282 |
|
1283 |
+
#: admin/includes/tab-settings.php:1018
|
1284 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1285 |
msgstr "常に遮断されるアクション名を例外として指定します。"
|
1286 |
|
1287 |
+
#: admin/includes/tab-settings.php:1018
|
1288 |
msgid "Excluded actions"
|
1289 |
msgstr "除外するアクション"
|
1290 |
|
1291 |
+
#: admin/includes/tab-settings.php:1034
|
1292 |
msgid ""
|
1293 |
"<dfn title=\"Specify the frequency of request for certain period of time."
|
1294 |
"\">Blocking condition</dfn>"
|
1295 |
msgstr "<dfn title=\"特定期間のリクエスト頻度を設定します。\">遮断条件</dfn>"
|
1296 |
|
1297 |
+
#: admin/includes/tab-settings.php:1036
|
1298 |
#, php-format
|
1299 |
msgid "More than %1$s page view (PV) in %2$s seconds"
|
1300 |
msgstr "%2$s 秒間で %1$s を超えるページビュー (PV)"
|
1301 |
|
1302 |
+
#: admin/includes/tab-settings.php:1044
|
1303 |
msgid ""
|
1304 |
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1305 |
"behaved bots and crawlers</dfn>"
|
1306 |
msgstr "<dfn title=\"リクエスト頻度を検証します。\">行儀の悪いボットやクローラーを遮断</dfn>"
|
1307 |
|
1308 |
+
#: admin/includes/tab-settings.php:1061
|
1309 |
msgid ""
|
1310 |
"A part of user agent string and a qualification connected with a separator "
|
1311 |
"that indicates an applicable rule and can be “:” (pass) or "
|
1318 |
"「条件」のペアです。「条件」には「DNS」、「FEED」、国コード、または IPアドレス(CIDR記法)が使え"
|
1319 |
"ます。また否定を表す記号「!」を「条件」の直前に配置する事が出来ます。"
|
1320 |
|
1321 |
+
#: admin/includes/tab-settings.php:1061
|
1322 |
msgid "UA string and qualification"
|
1323 |
msgstr "ユーザーエージェント文字列と条件"
|
1324 |
|
1325 |
+
#: admin/includes/tab-settings.php:1078
|
1326 |
msgid ""
|
1327 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1328 |
"server resources. If it is disabled, “HOST” and “"
|
1332 |
"DNS 逆引きによりホストを検証します(幾らかのサーバー・リソースを消費します)。無効にした場合、[ユー"
|
1333 |
"ザーエージェント文字列と条件]中の「HOST」および「HOST=…」は常に真となります。"
|
1334 |
|
1335 |
+
#: admin/includes/tab-settings.php:1078
|
1336 |
msgid "Reverse DNS lookup"
|
1337 |
msgstr "DNS 逆引き"
|
1338 |
|
1339 |
+
#: admin/includes/tab-settings.php:1097
|
1340 |
msgid "Privacy and record settings"
|
1341 |
msgstr "プライバシーと記録の設定"
|
1342 |
|
1343 |
+
#: admin/includes/tab-settings.php:1120
|
1344 |
msgid ""
|
1345 |
"<dfn title=\"This option restricts not to send IP address to the external "
|
1346 |
"Geolocation APIs.\">Do not send IP address to external APIs</dfn>"
|
1348 |
"<dfn title=\"このオプションは、IPアドレスを外部の位置情報APIへ送信することを制限します。\">外部APIへ"
|
1349 |
"の送信を制限する</dfn>"
|
1350 |
|
1351 |
+
#: admin/includes/tab-settings.php:1135
|
1352 |
msgid ""
|
1353 |
"<dfn title=\"This option enables to record the IP address, country code and "
|
1354 |
"failure counter of login attempts into the cache on database to minimize the "
|
1357 |
"<dfn title=\"このオプションは、IPアドレス、国コード、ログイン失敗回数等のキャッシュへの記録を有効に"
|
1358 |
"し、サイト速度への影響を最小化します。\">IPアドレスをキャッシュに記録</dfn>"
|
1359 |
|
1360 |
+
#: admin/includes/tab-settings.php:1150
|
1361 |
msgid ""
|
1362 |
"<dfn title=\"If user authentication fails consecutively beyond “Max "
|
1363 |
"number of failed login attempts per IP address”, subsequent login will "
|
1367 |
"<dfn title=\"ユーザ認証が連続%d回失敗した場合も、以降のログインがこの期間だけ(ガベージコレクション周"
|
1368 |
"期を含む)禁止されます。\">各エントリーの有効期間 [秒]</dfn>"
|
1369 |
|
1370 |
+
#: admin/includes/tab-settings.php:1166
|
1371 |
msgid ""
|
1372 |
"<dfn title=\"This option enables to record the validation logs including IP "
|
1373 |
"addresses.\">Record “Validation logs”</dfn>"
|
1375 |
"<dfn title=\"このオプションは、IPアドレスを含む検証ログの記録を有効にします。\">検証のログを記録</"
|
1376 |
"dfn>"
|
1377 |
|
1378 |
+
#: admin/includes/tab-settings.php:1178
|
1379 |
msgid "When blocked"
|
1380 |
msgstr "遮断時に記録"
|
1381 |
|
1382 |
+
#: admin/includes/tab-settings.php:1179
|
1383 |
msgid "When passed"
|
1384 |
msgstr "通過時に記録"
|
1385 |
|
1386 |
+
#: admin/includes/tab-settings.php:1180
|
1387 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1388 |
msgstr "遮断時または遮断対象国の通過時に記録"
|
1389 |
|
1390 |
+
#: admin/includes/tab-settings.php:1181
|
1391 |
msgid "Unauthenticated visitor"
|
1392 |
msgstr "未認証の訪問者を記録"
|
1393 |
|
1394 |
+
#: admin/includes/tab-settings.php:1182
|
1395 |
msgid "Authenticated user"
|
1396 |
msgstr "認証済のユーザーを記録"
|
1397 |
|
1398 |
+
#: admin/includes/tab-settings.php:1183
|
1399 |
msgid "All the validation"
|
1400 |
msgstr "すべての検証を記録"
|
1401 |
|
1402 |
+
#: admin/includes/tab-settings.php:1191
|
1403 |
#, php-format
|
1404 |
msgid ""
|
1405 |
"<dfn title=\"The maximum number of entries in the logs is also limited to %d."
|
1406 |
"\">Expiration time [days] for each entry</dfn>"
|
1407 |
msgstr "<dfn title=\"ログの最大エントリー数は %d に制限されます。\">各エントリーの有効期間[日]</dfn>"
|
1408 |
|
1409 |
+
#: admin/includes/tab-settings.php:1208
|
1410 |
msgid ""
|
1411 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST key to record "
|
1412 |
"with value</dfn>"
|
1413 |
msgstr "<dfn title=\"例)action, comment, log, pwd, FILES\">内容を展開する$_POSTのキー</dfn>"
|
1414 |
|
1415 |
+
#: admin/includes/tab-settings.php:1227
|
1416 |
msgid "Maximum entries in “Logs”"
|
1417 |
msgstr "記録するログの最大エントリ数"
|
1418 |
|
1419 |
+
#: admin/includes/tab-settings.php:1244
|
1420 |
msgid ""
|
1421 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1422 |
"“Live update”</dfn>"
|
1424 |
"<dfn title=\"SQLiteデータベース・ソースを選択します。\">ライブアップデート用SQLiteデータベース・ソー"
|
1425 |
"スの選択</dfn>"
|
1426 |
|
1427 |
+
#: admin/includes/tab-settings.php:1257
|
1428 |
msgid "Ordinary file"
|
1429 |
msgstr "ファイル"
|
1430 |
|
1431 |
+
#: admin/includes/tab-settings.php:1258
|
1432 |
msgid "In-Memory"
|
1433 |
msgstr "イン・メモリ"
|
1434 |
|
1435 |
+
#: admin/includes/tab-settings.php:1261
|
1436 |
msgid "PDO_SQLITE driver not available"
|
1437 |
msgstr "PDO_SQLITEドライバが利用出来ません"
|
1438 |
|
1439 |
+
#: admin/includes/tab-settings.php:1262
|
1440 |
msgid ""
|
1441 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1442 |
"without conflict with other plugins."
|
1443 |
msgstr "数十ミリ秒のオーバーヘッドが生じますが、他のプラグインと競合することなく、安全に使用できます。"
|
1444 |
|
1445 |
+
#: admin/includes/tab-settings.php:1263
|
1446 |
msgid ""
|
1447 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1448 |
"with other plugins using this method."
|
1449 |
msgstr ""
|
1450 |
"数ミリ秒のオーバーヘッドが生じます。同手法を用いている他のプラグインと競合する可能性があります。"
|
1451 |
|
1452 |
+
#: admin/includes/tab-settings.php:1271
|
1453 |
msgid "Reset database source of “Live update”"
|
1454 |
msgstr "ライブアップデートのデータソースをリセットする"
|
1455 |
|
1456 |
+
#: admin/includes/tab-settings.php:1279
|
1457 |
msgid "Reset now"
|
1458 |
msgstr "今すぐリセット"
|
1459 |
|
1460 |
+
#: admin/includes/tab-settings.php:1288 admin/includes/tab-settings.php:1449
|
1461 |
msgid ""
|
1462 |
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1463 |
"once and activate again."
|
1464 |
msgstr ""
|
1465 |
"WP-Cronのタスクが見つかりません。 一旦このプラグインを停止させた後、再度、有効化してみてください。"
|
1466 |
|
1467 |
+
#: admin/includes/tab-settings.php:1293
|
1468 |
msgid ""
|
1469 |
"<dfn title=\"This option enables to schedule the WP-Cron event to remove the "
|
1470 |
"expired entries from “IP address cache” and “Validation "
|
1473 |
"<dfn title=\"キャッシュとログから有効期限の切れたIPアドレスのエントリーを削除する WP-Cron イベントの"
|
1474 |
"起動周期を設定します。\">ガベージコレクション周期[秒]</dfn>"
|
1475 |
|
1476 |
+
#: admin/includes/tab-settings.php:1302 admin/includes/tab-settings.php:1465
|
1477 |
#, php-format
|
1478 |
msgid "Next schedule: %s"
|
1479 |
msgstr "次回日時:%s"
|
1480 |
|
1481 |
+
#: admin/includes/tab-settings.php:1309
|
1482 |
msgid ""
|
1483 |
"<dfn title=\"This option enables to record the number blocked countries and "
|
1484 |
"the number of blocked requests per day.\">Record “Statistics of "
|
1487 |
"<dfn title=\"このオプションは、国別遮断数や1日あたりの遮断数など、統計の記録を有効にします。\">検証の"
|
1488 |
"統計を記録</dfn>"
|
1489 |
|
1490 |
+
#: admin/includes/tab-settings.php:1324
|
1491 |
msgid "Maximum period for “Statistics” [days]"
|
1492 |
msgstr "記録する統計の最大期間[日]"
|
1493 |
|
1494 |
+
#: admin/includes/tab-settings.php:1342
|
1495 |
msgid "Remove all settings and records at uninstallation"
|
1496 |
msgstr "アンインストール時に設定と記録を全て削除"
|
1497 |
|
1498 |
+
#: admin/includes/tab-settings.php:1359
|
1499 |
msgid "Geolocation API settings"
|
1500 |
msgstr "位置情報APIの設定"
|
1501 |
|
1502 |
+
#: admin/includes/tab-settings.php:1380
|
1503 |
msgid ""
|
1504 |
"<dfn title=\"IP address cache and local databases are scanned at the top "
|
1505 |
"priority.\">API selection and key settings</dfn>"
|
1507 |
"<dfn title=\"IPアドレスのキャッシュとローカルのデータベースが最優先で検索されます。\">APIの選択とキー"
|
1508 |
"の設定</dfn>"
|
1509 |
|
1510 |
+
#: admin/includes/tab-settings.php:1399
|
1511 |
msgid "Timeout for network API [sec]"
|
1512 |
msgstr "ネットワークAPIのタイムアウト[秒]"
|
1513 |
|
1514 |
+
#: admin/includes/tab-settings.php:1417
|
1515 |
msgid "Local database settings"
|
1516 |
msgstr "ローカル・データベースの設定"
|
1517 |
|
1518 |
+
#: admin/includes/tab-settings.php:1431
|
1519 |
msgid "database"
|
1520 |
msgstr "ファイル"
|
1521 |
|
1522 |
+
#: admin/includes/tab-settings.php:1432 classes/class-ip-geo-block-cron.php:434
|
1523 |
#, php-format
|
1524 |
msgid "Last update: %s"
|
1525 |
msgstr "最終更新:%s"
|
1526 |
|
1527 |
+
#: admin/includes/tab-settings.php:1454
|
1528 |
msgid "Auto updating (once a month)"
|
1529 |
msgstr "自動更新(月1回)"
|
1530 |
|
1531 |
+
#: admin/includes/tab-settings.php:1472
|
1532 |
msgid "Download database"
|
1533 |
msgstr "データベースのダウンロード"
|
1534 |
|
1535 |
+
#: admin/includes/tab-settings.php:1480
|
1536 |
msgid "Download now"
|
1537 |
msgstr "今すぐダウンロード"
|
1538 |
|
1539 |
+
#: admin/includes/tab-settings.php:1491
|
1540 |
msgid "Plugin settings"
|
1541 |
msgstr "プラグインの設定"
|
1542 |
|
1543 |
+
#: admin/includes/tab-settings.php:1503
|
1544 |
msgid ""
|
1545 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1546 |
"settings</dfn>"
|
1547 |
msgstr "<dfn title=\"全ての設定をネットワーク全体で同期させます。\">ネットワーク内で設定を同期</dfn>"
|
1548 |
|
1549 |
+
#: admin/includes/tab-settings.php:1521
|
1550 |
msgid ""
|
1551 |
"<dfn title=\"You can access to the login form with a specific key at "
|
1552 |
"emergency. Please add the generated link to favorites / bookmarks in your "
|
1556 |
"<dfn title=\"緊急時にもログイン可能なリンクを生成します。キー自体は保存されないので、生成したリンクを"
|
1557 |
"ブラウザのお気に入り/ブックマークに追加してください。\">緊急時用ログイン・リンク</dfn>"
|
1558 |
|
1559 |
+
#: admin/includes/tab-settings.php:1537
|
1560 |
msgid ""
|
1561 |
"<dfn title=\"Valid key for Google Maps JavaScript API. Maps Embed API in "
|
1562 |
"iframe can be available without key in case it's empty.\">Google Maps API "
|
1565 |
"<dfn title=\"Google Maps JavaScript API の有効なキー。空欄にするとキーなしの Maps Embed API が使用可"
|
1566 |
"能です。\">Google Maps API キー</dfn>"
|
1567 |
|
1568 |
+
#: admin/includes/tab-settings.php:1553
|
1569 |
msgid "Export / Import settings"
|
1570 |
msgstr "設定のエクスポート、インポート"
|
1571 |
|
1572 |
+
#: admin/includes/tab-settings.php:1560
|
1573 |
msgid "Export settings"
|
1574 |
msgstr "エクスポート"
|
1575 |
|
1576 |
+
#: admin/includes/tab-settings.php:1561
|
1577 |
msgid "Import from the local file"
|
1578 |
msgstr "ローカル・ファイルからインポートします"
|
1579 |
|
1580 |
+
#: admin/includes/tab-settings.php:1561
|
1581 |
msgid "Import settings"
|
1582 |
msgstr "インポート"
|
1583 |
|
1584 |
+
#: admin/includes/tab-settings.php:1569
|
1585 |
msgid "Import pre-defined settings"
|
1586 |
msgstr "プリセットのインポート"
|
1587 |
|
1588 |
+
#: admin/includes/tab-settings.php:1576
|
1589 |
msgid ""
|
1590 |
"Import the default settings to revert to the “Right after "
|
1591 |
"installing” state"
|
1592 |
msgstr "インストール直後の状態に戻すための設定値をインポートします"
|
1593 |
|
1594 |
+
#: admin/includes/tab-settings.php:1576
|
1595 |
msgid "Default settings"
|
1596 |
msgstr "初期設定"
|
1597 |
|
1598 |
+
#: admin/includes/tab-settings.php:1577
|
1599 |
msgid ""
|
1600 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1601 |
"for the “Back-end target settings”"
|
1602 |
msgstr "「ゼロデイ攻撃の遮断」など、主に[バックエンドの設定]の推奨設定をインポートします"
|
1603 |
|
1604 |
+
#: admin/includes/tab-settings.php:1577
|
1605 |
msgid "Best for Back-end"
|
1606 |
msgstr "バックエンドの推奨設定"
|
1607 |
|
1608 |
+
#: admin/includes/tab-settings.php:1586
|
1609 |
msgid "Diagnose all DB tables"
|
1610 |
msgstr "全データベース・テーブルの検査"
|
1611 |
|
1612 |
+
#: admin/includes/tab-settings.php:1594
|
1613 |
msgid "Diagnose now"
|
1614 |
msgstr "今すぐ検査"
|
1615 |
|
1616 |
+
#: admin/includes/tab-settings.php:1603
|
1617 |
msgid ""
|
1618 |
"<dfn title=\"When you have some unexpected blocking experiences, please "
|
1619 |
"press the button to find the blocked requests at the end of dumped "
|
1627 |
"org/support/plugin/ip-geo-block\" title=\"[IP Geo Block] Support | WordPress.org\">サポート・フォーラ"
|
1628 |
"ム</a> ]"
|
1629 |
|
1630 |
+
#: admin/includes/tab-settings.php:1610
|
1631 |
msgid "Please copy & paste when submitting your issue to support forum"
|
1632 |
msgstr "フォーラムに問題を投稿する際、コピーして張り付けてください"
|
1633 |
|
1634 |
+
#: admin/includes/tab-settings.php:1610
|
1635 |
msgid "Show information"
|
1636 |
msgstr "情報を表示"
|
1637 |
|
1638 |
+
#: admin/includes/tab-settings.php:1627
|
1639 |
msgid ""
|
1640 |
"While Geolite2 / Maxmind and IP2Location will fetch the local databases, "
|
1641 |
"others will pass an IP address to the 3rd parties' API via HTTP."
|
1643 |
"MaxmindとIP2Locationはローカルのデータベースを検索しますが、他はHTTPを介して外部のAPIにIPアドレスを渡"
|
1644 |
"します。"
|
1645 |
|
1646 |
+
#: admin/includes/tab-settings.php:1628
|
1647 |
msgid ""
|
1648 |
"Please select the appropriate APIs to fit the privacy law / regulation in "
|
1649 |
"your country / region."
|
1650 |
msgstr ""
|
1651 |
"あなたの国/地域におけるプライバシー保護の法規・条例に適合するよう、適切なAPIを選択して下さい。"
|
1652 |
|
1653 |
+
#: admin/includes/tab-settings.php:1637
|
1654 |
#, php-format
|
1655 |
msgid ""
|
1656 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1659 |
"Maxmind GeoLite2 データベースと API には、PHP バージョン 5.4.0 以上と %sPECL phar 2.0.0 以上%sが必要"
|
1660 |
"です。"
|
1661 |
|
1662 |
+
#: admin/includes/tab-settings.php:1645
|
1663 |
#, php-format
|
1664 |
msgid ""
|
1665 |
"Please refer to \"%sLiving with cache plugin%s\" for compatibility with "
|
1666 |
"cache plugins."
|
1667 |
+
msgstr "キャッシュ・プラグインとの互換性については、%sこのドキュメント%s を参照して下さい。"
|
|
|
1668 |
|
1669 |
#: admin/includes/tab-statistics.php:18
|
1670 |
msgid "Statistics of validation"
|
1766 |
msgid "Please set the proper condition to record IP address in cache."
|
1767 |
msgstr "キャッシュを利用しサイトの応答性を上げるためには、適切な条件を設定して下さい。"
|
1768 |
|
1769 |
+
#: classes/class-ip-geo-block-cron.php:233
|
1770 |
#, php-format
|
1771 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1772 |
msgstr "<code>%s</code> をロック出来ません。パーミッションをチェックして下さい。"
|
1773 |
|
1774 |
+
#: classes/class-ip-geo-block-cron.php:312
|
1775 |
msgid "Your database file is up-to-date."
|
1776 |
msgstr "データベース・ファイルは最新です。"
|
1777 |
|
1778 |
+
#: classes/class-ip-geo-block-cron.php:415
|
1779 |
msgid "gz or zip is not supported on your system."
|
1780 |
msgstr "gz または zip がサポートされていません。"
|
1781 |
|
1818 |
"again."
|
1819 |
msgstr "%s 用のカラム型が一致しません。一旦このプラグインを無効化し、再度有効化して下さい。"
|
1820 |
|
1821 |
+
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:154
|
1822 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:160
|
1823 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:252
|
1824 |
msgid "Database file does not exist."
|
1825 |
msgstr "データベース・ファイルが見つかりません。"
|
1826 |
|
1827 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:158
|
1828 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:179
|
1829 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:207
|
1830 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
1831 |
+
msgid "Update service has already stopped."
|
1832 |
+
msgstr "データベースの更新サービスは終了しました。"
|
1833 |
+
|
1834 |
#: wp-content/mu-plugins/ip-geo-block-mu.php:72
|
1835 |
#, php-format
|
1836 |
msgid ""
|
languages/ip-geo-block.mo
CHANGED
Binary file
|
languages/ip-geo-block.po
CHANGED
@@ -2,10 +2,10 @@
|
|
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 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
-
"POT-Creation-Date: 2018-
|
8 |
-
"PO-Revision-Date: 2018-
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
@@ -26,167 +26,171 @@ msgid ""
|
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: admin/class-ip-geo-block-admin.php:
|
30 |
msgid "Are you sure ?"
|
31 |
msgstr ""
|
32 |
|
33 |
-
#: admin/class-ip-geo-block-admin.php:
|
34 |
-
#: admin/class-ip-geo-block-admin.php:
|
35 |
msgid "Open a new window"
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: admin/class-ip-geo-block-admin.php:
|
39 |
msgid "Generate new link"
|
40 |
msgstr ""
|
41 |
|
42 |
-
#: admin/class-ip-geo-block-admin.php:
|
43 |
msgid "Delete current link"
|
44 |
msgstr ""
|
45 |
|
46 |
-
#: admin/class-ip-geo-block-admin.php:
|
47 |
msgid ""
|
48 |
"Please add the following link to favorites / bookmarks in your browser : "
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: admin/class-ip-geo-block-admin.php:
|
52 |
msgid "ajax for logged-in user"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: admin/class-ip-geo-block-admin.php:
|
56 |
msgid "ajax for non logged-in user"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: admin/class-ip-geo-block-admin.php:
|
60 |
#, php-format
|
61 |
msgid "[Found: %d]"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: admin/class-ip-geo-block-admin.php:
|
65 |
#, php-format
|
66 |
msgid "Find and verify `%s` on “Logs” tab."
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: admin/class-ip-geo-block-admin.php:
|
70 |
msgid "This feature is available with HTML5 compliant browsers."
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: admin/class-ip-geo-block-admin.php:
|
74 |
msgid "The selected row cannot be found in the table."
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: admin/class-ip-geo-block-admin.php:
|
78 |
-
#: admin/class-ip-geo-block-admin.php:
|
79 |
#, php-format
|
80 |
msgid "An error occurred while executing the ajax command `%s`."
|
81 |
msgstr ""
|
82 |
|
83 |
-
#: admin/class-ip-geo-block-admin.php:
|
84 |
msgid "No data available in table"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: admin/class-ip-geo-block-admin.php:
|
88 |
msgid "No matching records found"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: admin/class-ip-geo-block-admin.php:
|
92 |
#: admin/includes/class-admin-ajax.php:107
|
93 |
#: admin/includes/class-admin-ajax.php:240
|
94 |
#: admin/includes/tab-geolocation.php:74
|
95 |
msgid "IP address"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: admin/class-ip-geo-block-admin.php:
|
99 |
#: admin/includes/class-admin-ajax.php:108
|
100 |
#: admin/includes/class-admin-ajax.php:241
|
101 |
msgid "Code"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: admin/class-ip-geo-block-admin.php:
|
105 |
#: admin/includes/class-admin-ajax.php:109
|
106 |
#: admin/includes/class-admin-ajax.php:242
|
107 |
msgid "ASN"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: admin/class-ip-geo-block-admin.php:
|
111 |
#: admin/includes/class-admin-ajax.php:243
|
112 |
msgid "Host name"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: admin/class-ip-geo-block-admin.php:
|
116 |
#: admin/includes/class-admin-ajax.php:110
|
117 |
#: admin/includes/class-admin-ajax.php:244
|
118 |
msgid "Target"
|
119 |
msgstr ""
|
120 |
|
121 |
-
#: admin/class-ip-geo-block-admin.php:
|
122 |
#: admin/includes/class-admin-ajax.php:245
|
123 |
msgid "Failure / Total"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: admin/class-ip-geo-block-admin.php:
|
127 |
#: admin/includes/class-admin-ajax.php:246
|
128 |
msgid "Elapsed[sec]"
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: admin/class-ip-geo-block-admin.php:
|
132 |
#: admin/includes/class-admin-ajax.php:106
|
133 |
msgid "Time"
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: admin/class-ip-geo-block-admin.php:
|
137 |
#: admin/includes/class-admin-ajax.php:111
|
138 |
msgid "Result"
|
139 |
msgstr ""
|
140 |
|
141 |
-
#: admin/class-ip-geo-block-admin.php:
|
142 |
#: admin/includes/class-admin-ajax.php:112
|
143 |
msgid "Request"
|
144 |
msgstr ""
|
145 |
|
146 |
-
#: admin/class-ip-geo-block-admin.php:
|
147 |
#: admin/includes/class-admin-ajax.php:113
|
148 |
msgid "User agent"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: admin/class-ip-geo-block-admin.php:
|
152 |
#: admin/includes/class-admin-ajax.php:114
|
153 |
msgid "HTTP headers"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: admin/class-ip-geo-block-admin.php:
|
157 |
#: admin/includes/class-admin-ajax.php:115
|
158 |
msgid "$_POST data"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: admin/class-ip-geo-block-admin.php:
|
162 |
msgid "Contribute on GitHub"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: admin/class-ip-geo-block-admin.php:
|
166 |
-
#: admin/class-ip-geo-block-admin.php:
|
167 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
168 |
msgid "Settings"
|
169 |
msgstr ""
|
170 |
|
|
|
171 |
#: admin/class-ip-geo-block-admin.php:460
|
172 |
-
#: admin/class-ip-geo-block-admin.php:
|
173 |
#: admin/class-ip-geo-block-admin.php:471
|
174 |
-
#: admin/class-ip-geo-block-admin.php:
|
175 |
-
#: admin/class-ip-geo-block-admin.php:
|
176 |
-
#: admin/class-ip-geo-block-admin.php:492
|
177 |
msgid "IP Geo Block"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: admin/class-ip-geo-block-admin.php:
|
181 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
182 |
msgid "Sites list"
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: admin/class-ip-geo-block-admin.php:
|
186 |
msgid "You need WordPress 3.7+."
|
187 |
msgstr ""
|
188 |
|
189 |
-
#: admin/class-ip-geo-block-admin.php:
|
190 |
#, php-format
|
191 |
msgid ""
|
192 |
"Can not load Geolocation API libraries from <code>%s</code>. It seems to "
|
@@ -195,13 +199,14 @@ msgid ""
|
|
195 |
"contents of tokkonopapa/WordPress-IP-Geo-API as a zip file\">ZIP file</a> "
|
196 |
"from <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-"
|
197 |
"IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
198 |
-
"IP-Geo-API</a>.
|
199 |
-
"according to <a rel
|
200 |
-
"how-to-fix-permission-
|
201 |
-
"troubles? | IP Geo Block
|
|
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: admin/class-ip-geo-block-admin.php:
|
205 |
#, php-format
|
206 |
msgid ""
|
207 |
"You should select at least one API at <a href=\"%s\">Geolocation API "
|
@@ -209,7 +214,7 @@ msgid ""
|
|
209 |
"expires."
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: admin/class-ip-geo-block-admin.php:
|
213 |
#, php-format
|
214 |
msgid ""
|
215 |
"You should select at least one API for local database at <a href=\"%s"
|
@@ -217,7 +222,7 @@ msgid ""
|
|
217 |
"slow down the site."
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: admin/class-ip-geo-block-admin.php:
|
221 |
#, php-format
|
222 |
msgid ""
|
223 |
"Now downloading geolocation databases in background. After a little while, "
|
@@ -225,24 +230,24 @@ msgid ""
|
|
225 |
"strong>” at <a href=\"%s\">Validation rules and behavior</a>."
|
226 |
msgstr ""
|
227 |
|
228 |
-
#: admin/class-ip-geo-block-admin.php:
|
229 |
#, php-format
|
230 |
msgid ""
|
231 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
232 |
"confirm it at <a href=\"%s\">Validation rules and behavior</a>."
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: admin/class-ip-geo-block-admin.php:
|
236 |
msgid "Local database and matching rule have been updated."
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: admin/class-ip-geo-block-admin.php:
|
240 |
msgid ""
|
241 |
"Once you logout, you will be unable to login again because the number of "
|
242 |
"login attempts reaches the limit."
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: admin/class-ip-geo-block-admin.php:
|
246 |
#, php-format
|
247 |
msgid ""
|
248 |
"Please remove your IP address in “%1$sStatistics in IP address cache"
|
@@ -250,24 +255,24 @@ msgid ""
|
|
250 |
"yourself out."
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: admin/class-ip-geo-block-admin.php:
|
254 |
msgid ""
|
255 |
"Once you logout, you will be unable to login again because your country code "
|
256 |
"or IP address is in the blacklist."
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: admin/class-ip-geo-block-admin.php:
|
260 |
msgid ""
|
261 |
"Once you logout, you will be unable to login again because your country code "
|
262 |
"or IP address is not in the whitelist."
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: admin/class-ip-geo-block-admin.php:
|
266 |
#, php-format
|
267 |
msgid "Please check your “%sValidation rules and behavior%s”."
|
268 |
msgstr ""
|
269 |
|
270 |
-
#: admin/class-ip-geo-block-admin.php:
|
271 |
#, php-format
|
272 |
msgid ""
|
273 |
"Please confirm your local geolocation database files exist at “%sLocal "
|
@@ -275,7 +280,7 @@ msgid ""
|
|
275 |
"“%sStatistics in cache%s” section."
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: admin/class-ip-geo-block-admin.php:
|
279 |
#, php-format
|
280 |
msgid ""
|
281 |
"Emergency login link is outdated. Please delete it once and generate again "
|
@@ -283,93 +288,130 @@ msgid ""
|
|
283 |
"favorites / bookmarks in your browser."
|
284 |
msgstr ""
|
285 |
|
286 |
-
#: admin/class-ip-geo-block-admin.php:
|
287 |
msgid ""
|
288 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
289 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
290 |
"select “init” action hook."
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: admin/class-ip-geo-block-admin.php:
|
294 |
msgid "Statistics"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: admin/class-ip-geo-block-admin.php:
|
298 |
msgid "Logs"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: admin/class-ip-geo-block-admin.php:
|
302 |
msgid "Search"
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: admin/class-ip-geo-block-admin.php:
|
306 |
msgid "Attribution"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: admin/class-ip-geo-block-admin.php:
|
310 |
-
#: admin/class-ip-geo-block-admin.php:770
|
311 |
-
msgid "Network"
|
312 |
-
msgstr ""
|
313 |
-
|
314 |
-
#: admin/class-ip-geo-block-admin.php:783
|
315 |
msgid "Toggle all"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: admin/class-ip-geo-block-admin.php:
|
319 |
msgid ""
|
320 |
"Independent of “Privacy and record settings”, you can see all "
|
321 |
"the requests validated by this plugin in almost real time."
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: admin/class-ip-geo-block-admin.php:
|
325 |
msgid "Live update"
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: admin/class-ip-geo-block-admin.php:
|
329 |
msgid "Open a new window on clicking the link in the chart."
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: admin/class-ip-geo-block-admin.php:
|
333 |
msgid "Thanks for providing these great services for free."
|
334 |
msgstr ""
|
335 |
|
336 |
-
#: admin/class-ip-geo-block-admin.php:
|
337 |
msgid ""
|
338 |
"(Most browsers will redirect you to each site <a href=\"https://www."
|
339 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
340 |
"when you click the link</a>.)"
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: admin/class-ip-geo-block-admin.php:
|
344 |
msgid "Back to top"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: admin/class-ip-geo-block-admin.php:
|
348 |
msgid "Enable"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: admin/class-ip-geo-block-admin.php:
|
352 |
msgid "Select one"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: admin/class-ip-geo-block-admin.php:
|
356 |
msgid "You do not have sufficient permissions to access this page."
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: admin/class-ip-geo-block-admin.php:
|
360 |
#: admin/includes/class-admin-rewrite.php:194
|
361 |
-
#: classes/class-ip-geo-block-cron.php:
|
362 |
-
#: classes/class-ip-geo-block-cron.php:
|
363 |
-
#: classes/class-ip-geo-block-cron.php:
|
364 |
-
#: classes/class-ip-geo-block-opts.php:
|
365 |
#, php-format
|
366 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: admin/class-ip-geo-block-admin.php:
|
370 |
msgid "Settings saved."
|
371 |
msgstr ""
|
372 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
#: admin/includes/class-admin-ajax.php:72
|
374 |
#: admin/includes/class-admin-ajax.php:75 admin/includes/tab-settings.php:84
|
375 |
#: admin/includes/tab-settings.php:103
|
@@ -388,8 +430,8 @@ msgid ""
|
|
388 |
msgstr ""
|
389 |
|
390 |
#: admin/includes/class-admin-rewrite.php:168
|
391 |
-
#: classes/class-ip-geo-block-cron.php:
|
392 |
-
#: classes/class-ip-geo-block-cron.php:
|
393 |
#, php-format
|
394 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
395 |
msgstr ""
|
@@ -413,23 +455,23 @@ msgstr ""
|
|
413 |
msgid "Help"
|
414 |
msgstr ""
|
415 |
|
416 |
-
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:
|
417 |
msgid "Comment post"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:
|
421 |
msgid "XML-RPC"
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:
|
425 |
msgid "Login form"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:
|
429 |
msgid "Admin area"
|
430 |
msgstr ""
|
431 |
|
432 |
-
#: admin/includes/tab-accesslog.php:59 admin/includes/tab-settings.php:
|
433 |
msgid "Public facing pages"
|
434 |
msgstr ""
|
435 |
|
@@ -449,68 +491,68 @@ msgstr ""
|
|
449 |
msgid "Reset"
|
450 |
msgstr ""
|
451 |
|
452 |
-
#: admin/includes/tab-accesslog.php:
|
453 |
msgid "Preset filters"
|
454 |
msgstr ""
|
455 |
|
456 |
-
#: admin/includes/tab-accesslog.php:
|
457 |
msgid "Bulk action"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: admin/includes/tab-accesslog.php:
|
461 |
msgid "Remove entries by IP address"
|
462 |
msgstr ""
|
463 |
|
464 |
-
#: admin/includes/tab-accesslog.php:
|
465 |
msgid "Add IP address to “Whitelist”"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: admin/includes/tab-accesslog.php:
|
469 |
msgid "Add IP address to “Blacklist”"
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: admin/includes/tab-accesslog.php:
|
473 |
msgid "Add AS number to “Whitelist”"
|
474 |
msgstr ""
|
475 |
|
476 |
-
#: admin/includes/tab-accesslog.php:
|
477 |
msgid "Add AS number to “Blacklist”"
|
478 |
msgstr ""
|
479 |
|
480 |
-
#: admin/includes/tab-accesslog.php:
|
481 |
#: admin/includes/tab-statistics.php:255
|
482 |
msgid "Apply"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: admin/includes/tab-accesslog.php:
|
486 |
msgid "Clear logs"
|
487 |
msgstr ""
|
488 |
|
489 |
-
#: admin/includes/tab-accesslog.php:
|
490 |
#: admin/includes/tab-statistics.php:199 admin/includes/tab-statistics.php:269
|
491 |
msgid "Clear all"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: admin/includes/tab-accesslog.php:
|
495 |
msgid "Export logs"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: admin/includes/tab-accesslog.php:
|
499 |
#: admin/includes/tab-statistics.php:283
|
500 |
msgid "Export to the local file"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: admin/includes/tab-accesslog.php:
|
504 |
msgid "Export csv"
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: admin/includes/tab-accesslog.php:
|
508 |
#: admin/includes/tab-statistics.php:410
|
509 |
#, php-format
|
510 |
msgid "[ %sRecord “Validation logs”%s ] is disabled."
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: admin/includes/tab-accesslog.php:
|
514 |
#: admin/includes/tab-statistics.php:411
|
515 |
msgid ""
|
516 |
"Please set the proper condition to record and analyze the validation logs."
|
@@ -528,7 +570,7 @@ msgstr ""
|
|
528 |
msgid "Geolocation API"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: admin/includes/tab-geolocation.php:89 admin/includes/tab-settings.php:
|
532 |
msgid ""
|
533 |
"<dfn title=\"IP address is always encrypted on recording in Cache and Logs. "
|
534 |
"Moreover, this option replaces the end of IP address with “***” "
|
@@ -662,7 +704,7 @@ msgid ""
|
|
662 |
"country code</dfn>"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:
|
666 |
msgid "Matching rule"
|
667 |
msgstr ""
|
668 |
|
@@ -758,8 +800,8 @@ msgid ""
|
|
758 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: admin/includes/tab-settings.php:304 admin/includes/tab-settings.php:
|
762 |
-
#: admin/includes/tab-settings.php:
|
763 |
msgid "Disable"
|
764 |
msgstr ""
|
765 |
|
@@ -771,14 +813,32 @@ msgstr ""
|
|
771 |
msgid "Verify file extension only"
|
772 |
msgstr ""
|
773 |
|
774 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
775 |
#, php-format
|
776 |
msgid ""
|
777 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
778 |
"directory.\">Response code</dfn> %s"
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: admin/includes/tab-settings.php:
|
782 |
msgid ""
|
783 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
784 |
"to a public facing page, visitors would not be blocked on the page to "
|
@@ -787,35 +847,35 @@ msgid ""
|
|
787 |
"\">Redirect URL</dfn>"
|
788 |
msgstr ""
|
789 |
|
790 |
-
#: admin/includes/tab-settings.php:
|
791 |
msgid ""
|
792 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
793 |
"message</dfn>"
|
794 |
msgstr ""
|
795 |
|
796 |
-
#: admin/includes/tab-settings.php:
|
797 |
msgid "Select when to run the validation."
|
798 |
msgstr ""
|
799 |
|
800 |
-
#: admin/includes/tab-settings.php:
|
801 |
msgid "Validation timing"
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: admin/includes/tab-settings.php:
|
805 |
msgid "“init” action hook"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#: admin/includes/tab-settings.php:
|
809 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: admin/includes/tab-settings.php:
|
813 |
msgid ""
|
814 |
"Validate at “init” action hook in the same manner as typical "
|
815 |
"plugins."
|
816 |
msgstr ""
|
817 |
|
818 |
-
#: admin/includes/tab-settings.php:
|
819 |
msgid ""
|
820 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
821 |
"on server but has <a rel='noreferrer' href='https://www.ipgeoblock.com/codex/"
|
@@ -823,129 +883,129 @@ msgid ""
|
|
823 |
"restrictions</a>."
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: admin/includes/tab-settings.php:
|
827 |
msgid ""
|
828 |
"It enables to simulate the validation rules without actual blocking in order "
|
829 |
"to check the behavior of this plugin. The results can be found on “"
|
830 |
"Logs” tab."
|
831 |
msgstr ""
|
832 |
|
833 |
-
#: admin/includes/tab-settings.php:
|
834 |
msgid "Simulation mode"
|
835 |
msgstr ""
|
836 |
|
837 |
-
#: admin/includes/tab-settings.php:
|
838 |
msgid "Back-end target settings"
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: admin/includes/tab-settings.php:
|
842 |
#, php-format
|
843 |
msgid "<dfn title=\"It enables to validate requests to %s.\">%s</dfn>"
|
844 |
msgstr ""
|
845 |
|
846 |
-
#: admin/includes/tab-settings.php:
|
847 |
msgid "Other areas"
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: admin/includes/tab-settings.php:
|
851 |
msgid "public facing pages"
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: admin/includes/tab-settings.php:
|
855 |
-
#: admin/includes/tab-settings.php:
|
856 |
-
#: admin/includes/tab-settings.php:
|
857 |
msgid "Block by country"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: admin/includes/tab-settings.php:
|
861 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: admin/includes/tab-settings.php:
|
865 |
msgid "Message on comment form"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: admin/includes/tab-settings.php:
|
869 |
msgid "None"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: admin/includes/tab-settings.php:
|
873 |
msgid "Top"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: admin/includes/tab-settings.php:
|
877 |
msgid "Bottom"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: admin/includes/tab-settings.php:
|
881 |
msgid "Completely close"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: admin/includes/tab-settings.php:
|
885 |
msgid "Action to login as a registered user."
|
886 |
msgstr ""
|
887 |
|
888 |
-
#: admin/includes/tab-settings.php:
|
889 |
msgid "Log in"
|
890 |
msgstr ""
|
891 |
|
892 |
-
#: admin/includes/tab-settings.php:
|
893 |
msgid "Action to register new users."
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: admin/includes/tab-settings.php:
|
897 |
msgid "Register"
|
898 |
msgstr ""
|
899 |
|
900 |
-
#: admin/includes/tab-settings.php:
|
901 |
msgid "Action to reset a password to create a new one."
|
902 |
msgstr ""
|
903 |
|
904 |
-
#: admin/includes/tab-settings.php:
|
905 |
msgid "Password Reset"
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: admin/includes/tab-settings.php:
|
909 |
msgid "Action to email a password to a registered user."
|
910 |
msgstr ""
|
911 |
|
912 |
-
#: admin/includes/tab-settings.php:
|
913 |
msgid "Lost Password"
|
914 |
msgstr ""
|
915 |
|
916 |
-
#: admin/includes/tab-settings.php:
|
917 |
msgid ""
|
918 |
"Action to show prompt to enter a password on password protected post and "
|
919 |
"page."
|
920 |
msgstr ""
|
921 |
|
922 |
-
#: admin/includes/tab-settings.php:
|
923 |
msgid "Password protected"
|
924 |
msgstr ""
|
925 |
|
926 |
-
#: admin/includes/tab-settings.php:
|
927 |
msgid ""
|
928 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
929 |
"actions</dfn>"
|
930 |
msgstr ""
|
931 |
|
932 |
-
#: admin/includes/tab-settings.php:
|
933 |
msgid "Prevent Zero-day Exploit"
|
934 |
msgstr ""
|
935 |
|
936 |
-
#: admin/includes/tab-settings.php:
|
937 |
msgid ""
|
938 |
-
"It will block a request related to the services for both
|
939 |
-
"and
|
940 |
msgstr ""
|
941 |
|
942 |
-
#: admin/includes/tab-settings.php:
|
943 |
msgid ""
|
944 |
"Regardless of the country code, it will block a malicious request related to "
|
945 |
-
"the services only for
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: admin/includes/tab-settings.php:
|
949 |
msgid ""
|
950 |
"This is applied to “XML-RPC” and “Login form” when "
|
951 |
"“IP address cache” in “Privacy and record settings” "
|
@@ -953,23 +1013,23 @@ msgid ""
|
|
953 |
"cache."
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: admin/includes/tab-settings.php:
|
957 |
msgid "Max failed login attempts per IP address"
|
958 |
msgstr ""
|
959 |
|
960 |
-
#: admin/includes/tab-settings.php:
|
961 |
msgid "admin post for logged-in user"
|
962 |
msgstr ""
|
963 |
|
964 |
-
#: admin/includes/tab-settings.php:
|
965 |
msgid "admin post for non logged-in user"
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: admin/includes/tab-settings.php:
|
969 |
msgid "Admin ajax/post"
|
970 |
msgstr ""
|
971 |
|
972 |
-
#: admin/includes/tab-settings.php:
|
973 |
msgid ""
|
974 |
"Specify the action name (“action=…”) or the page name "
|
975 |
"(“page=…”) to prevent unintended blocking caused by "
|
@@ -977,33 +1037,33 @@ msgid ""
|
|
977 |
"Zero-day Exploit” (for logged-in user)."
|
978 |
msgstr ""
|
979 |
|
980 |
-
#: admin/includes/tab-settings.php:
|
981 |
-
#: admin/includes/tab-settings.php:
|
982 |
msgid "Exceptions"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: admin/includes/tab-settings.php:
|
986 |
msgid "Toggle with non logged-in user"
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: admin/includes/tab-settings.php:
|
990 |
msgid "Candidate actions/pages"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: admin/includes/tab-settings.php:
|
994 |
#, php-format
|
995 |
msgid ""
|
996 |
"Regardless of the country code, it will block a malicious request to <code>"
|
997 |
"%s⋯/*.php</code>."
|
998 |
msgstr ""
|
999 |
|
1000 |
-
#: admin/includes/tab-settings.php:
|
1001 |
msgid ""
|
1002 |
"Select the item which causes unintended blocking in order to exclude from "
|
1003 |
"the validation target. Grayed item indicates “INACTIVE”."
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: admin/includes/tab-settings.php:
|
1007 |
#, php-format
|
1008 |
msgid ""
|
1009 |
"It configures “%s” to validate a direct request to the PHP file "
|
@@ -1011,37 +1071,37 @@ msgid ""
|
|
1011 |
"hidden files beginning with a dot by the server's configuration."
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: admin/includes/tab-settings.php:
|
1015 |
msgid "Sorry, but your server type is not supported."
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: admin/includes/tab-settings.php:
|
1019 |
msgid ""
|
1020 |
"You need to click “Save Changes” button for imported settings to "
|
1021 |
"take effect."
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: admin/includes/tab-settings.php:
|
1025 |
msgid "Force to load WP core"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: admin/includes/tab-settings.php:
|
1029 |
msgid "Plugins area"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: admin/includes/tab-settings.php:
|
1033 |
msgid "Themes area"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: admin/includes/tab-settings.php:
|
1037 |
msgid "Front-end target settings"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: admin/includes/tab-settings.php:
|
1041 |
msgid "Follow “Validation rules and behavior”"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: admin/includes/tab-settings.php:
|
1045 |
#, php-format
|
1046 |
msgid ""
|
1047 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
@@ -1049,78 +1109,78 @@ msgid ""
|
|
1049 |
"\">Response code</dfn> %s"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: admin/includes/tab-settings.php:
|
1053 |
msgid ""
|
1054 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: admin/includes/tab-settings.php:
|
1058 |
msgid ""
|
1059 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1060 |
"target.\">Post type</dfn>"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
-
#: admin/includes/tab-settings.php:
|
1064 |
msgid ""
|
1065 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1066 |
"page as a blocking target.\">Category</dfn>"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: admin/includes/tab-settings.php:
|
1070 |
msgid ""
|
1071 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1072 |
"a blocking target.\">Tag</dfn>"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
-
#: admin/includes/tab-settings.php:
|
1076 |
msgid "Specify the validation target on front-end."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: admin/includes/tab-settings.php:
|
1080 |
msgid "Validation target"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: admin/includes/tab-settings.php:
|
1084 |
msgid "All requests"
|
1085 |
msgstr ""
|
1086 |
|
1087 |
-
#: admin/includes/tab-settings.php:
|
1088 |
msgid "Specify the targets"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: admin/includes/tab-settings.php:
|
1092 |
msgid ""
|
1093 |
"Notice that “Validation timing” is deferred till “"
|
1094 |
"wp” action hook. It means that this feature would not be compatible "
|
1095 |
"with any page caching."
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: admin/includes/tab-settings.php:
|
1099 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1100 |
msgstr ""
|
1101 |
|
1102 |
-
#: admin/includes/tab-settings.php:
|
1103 |
msgid "Excluded actions"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: admin/includes/tab-settings.php:
|
1107 |
msgid ""
|
1108 |
"<dfn title=\"Specify the frequency of request for certain period of time."
|
1109 |
"\">Blocking condition</dfn>"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#: admin/includes/tab-settings.php:
|
1113 |
#, php-format
|
1114 |
msgid "More than %1$s page view (PV) in %2$s seconds"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: admin/includes/tab-settings.php:
|
1118 |
msgid ""
|
1119 |
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1120 |
"behaved bots and crawlers</dfn>"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: admin/includes/tab-settings.php:
|
1124 |
msgid ""
|
1125 |
"A part of user agent string and a qualification connected with a separator "
|
1126 |
"that indicates an applicable rule and can be “:” (pass) or "
|
@@ -1130,11 +1190,11 @@ msgid ""
|
|
1130 |
"qualification”."
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: admin/includes/tab-settings.php:
|
1134 |
msgid "UA string and qualification"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: admin/includes/tab-settings.php:
|
1138 |
msgid ""
|
1139 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1140 |
"server resources. If it is disabled, “HOST” and “"
|
@@ -1142,28 +1202,28 @@ msgid ""
|
|
1142 |
"return “true”."
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: admin/includes/tab-settings.php:
|
1146 |
msgid "Reverse DNS lookup"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#: admin/includes/tab-settings.php:
|
1150 |
msgid "Privacy and record settings"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
#: admin/includes/tab-settings.php:
|
1154 |
msgid ""
|
1155 |
"<dfn title=\"This option restricts not to send IP address to the external "
|
1156 |
"Geolocation APIs.\">Do not send IP address to external APIs</dfn>"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
#: admin/includes/tab-settings.php:
|
1160 |
msgid ""
|
1161 |
"<dfn title=\"This option enables to record the IP address, country code and "
|
1162 |
"failure counter of login attempts into the cache on database to minimize the "
|
1163 |
"impact on site speed.\">Record “IP address cache”</dfn>"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
-
#: admin/includes/tab-settings.php:
|
1167 |
msgid ""
|
1168 |
"<dfn title=\"If user authentication fails consecutively beyond “Max "
|
1169 |
"number of failed login attempts per IP address”, subsequent login will "
|
@@ -1171,174 +1231,174 @@ msgid ""
|
|
1171 |
"dfn>"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
-
#: admin/includes/tab-settings.php:
|
1175 |
msgid ""
|
1176 |
"<dfn title=\"This option enables to record the validation logs including IP "
|
1177 |
"addresses.\">Record “Validation logs”</dfn>"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
-
#: admin/includes/tab-settings.php:
|
1181 |
msgid "When blocked"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
-
#: admin/includes/tab-settings.php:
|
1185 |
msgid "When passed"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
-
#: admin/includes/tab-settings.php:
|
1189 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: admin/includes/tab-settings.php:
|
1193 |
msgid "Unauthenticated visitor"
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#: admin/includes/tab-settings.php:
|
1197 |
msgid "Authenticated user"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: admin/includes/tab-settings.php:
|
1201 |
msgid "All the validation"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#: admin/includes/tab-settings.php:
|
1205 |
#, php-format
|
1206 |
msgid ""
|
1207 |
"<dfn title=\"The maximum number of entries in the logs is also limited to %d."
|
1208 |
"\">Expiration time [days] for each entry</dfn>"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
#: admin/includes/tab-settings.php:
|
1212 |
msgid ""
|
1213 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST key to record "
|
1214 |
"with value</dfn>"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: admin/includes/tab-settings.php:
|
1218 |
msgid "Maximum entries in “Logs”"
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: admin/includes/tab-settings.php:
|
1222 |
msgid ""
|
1223 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1224 |
"“Live update”</dfn>"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: admin/includes/tab-settings.php:
|
1228 |
msgid "Ordinary file"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: admin/includes/tab-settings.php:
|
1232 |
msgid "In-Memory"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: admin/includes/tab-settings.php:
|
1236 |
msgid "PDO_SQLITE driver not available"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: admin/includes/tab-settings.php:
|
1240 |
msgid ""
|
1241 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1242 |
"without conflict with other plugins."
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: admin/includes/tab-settings.php:
|
1246 |
msgid ""
|
1247 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1248 |
"with other plugins using this method."
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: admin/includes/tab-settings.php:
|
1252 |
msgid "Reset database source of “Live update”"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: admin/includes/tab-settings.php:
|
1256 |
msgid "Reset now"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: admin/includes/tab-settings.php:
|
1260 |
msgid ""
|
1261 |
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1262 |
"once and activate again."
|
1263 |
msgstr ""
|
1264 |
|
1265 |
-
#: admin/includes/tab-settings.php:
|
1266 |
msgid ""
|
1267 |
"<dfn title=\"This option enables to schedule the WP-Cron event to remove the "
|
1268 |
"expired entries from “IP address cache” and “Validation "
|
1269 |
"logs”.\">Interval [sec] to cleanup expired entries of IP address</dfn>"
|
1270 |
msgstr ""
|
1271 |
|
1272 |
-
#: admin/includes/tab-settings.php:
|
1273 |
#, php-format
|
1274 |
msgid "Next schedule: %s"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: admin/includes/tab-settings.php:
|
1278 |
msgid ""
|
1279 |
"<dfn title=\"This option enables to record the number blocked countries and "
|
1280 |
"the number of blocked requests per day.\">Record “Statistics of "
|
1281 |
"validation”</dfn>"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
-
#: admin/includes/tab-settings.php:
|
1285 |
msgid "Maximum period for “Statistics” [days]"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
-
#: admin/includes/tab-settings.php:
|
1289 |
msgid "Remove all settings and records at uninstallation"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
-
#: admin/includes/tab-settings.php:
|
1293 |
msgid "Geolocation API settings"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
-
#: admin/includes/tab-settings.php:
|
1297 |
msgid ""
|
1298 |
"<dfn title=\"IP address cache and local databases are scanned at the top "
|
1299 |
"priority.\">API selection and key settings</dfn>"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: admin/includes/tab-settings.php:
|
1303 |
msgid "Timeout for network API [sec]"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: admin/includes/tab-settings.php:
|
1307 |
msgid "Local database settings"
|
1308 |
msgstr ""
|
1309 |
|
1310 |
-
#: admin/includes/tab-settings.php:
|
1311 |
msgid "database"
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: admin/includes/tab-settings.php:
|
1315 |
#, php-format
|
1316 |
msgid "Last update: %s"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#: admin/includes/tab-settings.php:
|
1320 |
msgid "Auto updating (once a month)"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: admin/includes/tab-settings.php:
|
1324 |
msgid "Download database"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
-
#: admin/includes/tab-settings.php:
|
1328 |
msgid "Download now"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
-
#: admin/includes/tab-settings.php:
|
1332 |
msgid "Plugin settings"
|
1333 |
msgstr ""
|
1334 |
|
1335 |
-
#: admin/includes/tab-settings.php:
|
1336 |
msgid ""
|
1337 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1338 |
"settings</dfn>"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: admin/includes/tab-settings.php:
|
1342 |
msgid ""
|
1343 |
"<dfn title=\"You can access to the login form with a specific key at "
|
1344 |
"emergency. Please add the generated link to favorites / bookmarks in your "
|
@@ -1346,62 +1406,62 @@ msgid ""
|
|
1346 |
"dfn>"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#: admin/includes/tab-settings.php:
|
1350 |
msgid ""
|
1351 |
"<dfn title=\"Valid key for Google Maps JavaScript API. Maps Embed API in "
|
1352 |
"iframe can be available without key in case it's empty.\">Google Maps API "
|
1353 |
"key</dfn>"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
#: admin/includes/tab-settings.php:
|
1357 |
msgid "Export / Import settings"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: admin/includes/tab-settings.php:
|
1361 |
msgid "Export settings"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: admin/includes/tab-settings.php:
|
1365 |
msgid "Import from the local file"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#: admin/includes/tab-settings.php:
|
1369 |
msgid "Import settings"
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#: admin/includes/tab-settings.php:
|
1373 |
msgid "Import pre-defined settings"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
-
#: admin/includes/tab-settings.php:
|
1377 |
msgid ""
|
1378 |
"Import the default settings to revert to the “Right after "
|
1379 |
"installing” state"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
-
#: admin/includes/tab-settings.php:
|
1383 |
msgid "Default settings"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: admin/includes/tab-settings.php:
|
1387 |
msgid ""
|
1388 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1389 |
"for the “Back-end target settings”"
|
1390 |
msgstr ""
|
1391 |
|
1392 |
-
#: admin/includes/tab-settings.php:
|
1393 |
msgid "Best for Back-end"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
-
#: admin/includes/tab-settings.php:
|
1397 |
msgid "Diagnose all DB tables"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: admin/includes/tab-settings.php:
|
1401 |
msgid "Diagnose now"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#: admin/includes/tab-settings.php:
|
1405 |
msgid ""
|
1406 |
"<dfn title=\"When you have some unexpected blocking experiences, please "
|
1407 |
"press the button to find the blocked requests at the end of dumped "
|
@@ -1411,34 +1471,34 @@ msgid ""
|
|
1411 |
"\">support forum</a> ]"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
-
#: admin/includes/tab-settings.php:
|
1415 |
msgid "Please copy & paste when submitting your issue to support forum"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
-
#: admin/includes/tab-settings.php:
|
1419 |
msgid "Show information"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
#: admin/includes/tab-settings.php:
|
1423 |
msgid ""
|
1424 |
"While Geolite2 / Maxmind and IP2Location will fetch the local databases, "
|
1425 |
"others will pass an IP address to the 3rd parties' API via HTTP."
|
1426 |
msgstr ""
|
1427 |
|
1428 |
-
#: admin/includes/tab-settings.php:
|
1429 |
msgid ""
|
1430 |
"Please select the appropriate APIs to fit the privacy law / regulation in "
|
1431 |
"your country / region."
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: admin/includes/tab-settings.php:
|
1435 |
#, php-format
|
1436 |
msgid ""
|
1437 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1438 |
"2.0.0+%s."
|
1439 |
msgstr ""
|
1440 |
|
1441 |
-
#: admin/includes/tab-settings.php:
|
1442 |
#, php-format
|
1443 |
msgid ""
|
1444 |
"Please refer to \"%sLiving with cache plugin%s\" for compatibility with "
|
@@ -1545,16 +1605,16 @@ msgstr ""
|
|
1545 |
msgid "Please set the proper condition to record IP address in cache."
|
1546 |
msgstr ""
|
1547 |
|
1548 |
-
#: classes/class-ip-geo-block-cron.php:
|
1549 |
#, php-format
|
1550 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1551 |
msgstr ""
|
1552 |
|
1553 |
-
#: classes/class-ip-geo-block-cron.php:
|
1554 |
msgid "Your database file is up-to-date."
|
1555 |
msgstr ""
|
1556 |
|
1557 |
-
#: classes/class-ip-geo-block-cron.php:
|
1558 |
msgid "gz or zip is not supported on your system."
|
1559 |
msgstr ""
|
1560 |
|
@@ -1590,12 +1650,19 @@ msgid ""
|
|
1590 |
"again."
|
1591 |
msgstr ""
|
1592 |
|
1593 |
-
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:
|
1594 |
-
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:
|
1595 |
-
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:
|
1596 |
msgid "Database file does not exist."
|
1597 |
msgstr ""
|
1598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1599 |
#: wp-content/mu-plugins/ip-geo-block-mu.php:72
|
1600 |
#, php-format
|
1601 |
msgid ""
|
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.17\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
+
"POT-Creation-Date: 2018-12-03 23:01+0900\n"
|
8 |
+
"PO-Revision-Date: 2018-12-03 23:35+0900\n"
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: admin/class-ip-geo-block-admin.php:296
|
30 |
msgid "Are you sure ?"
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: admin/class-ip-geo-block-admin.php:297
|
34 |
+
#: admin/class-ip-geo-block-admin.php:791
|
35 |
msgid "Open a new window"
|
36 |
msgstr ""
|
37 |
|
38 |
+
#: admin/class-ip-geo-block-admin.php:298 admin/includes/tab-settings.php:1528
|
39 |
msgid "Generate new link"
|
40 |
msgstr ""
|
41 |
|
42 |
+
#: admin/class-ip-geo-block-admin.php:299 admin/includes/tab-settings.php:1529
|
43 |
msgid "Delete current link"
|
44 |
msgstr ""
|
45 |
|
46 |
+
#: admin/class-ip-geo-block-admin.php:300
|
47 |
msgid ""
|
48 |
"Please add the following link to favorites / bookmarks in your browser : "
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: admin/class-ip-geo-block-admin.php:301
|
52 |
msgid "ajax for logged-in user"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: admin/class-ip-geo-block-admin.php:302
|
56 |
msgid "ajax for non logged-in user"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: admin/class-ip-geo-block-admin.php:303
|
60 |
#, php-format
|
61 |
msgid "[Found: %d]"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: admin/class-ip-geo-block-admin.php:304
|
65 |
#, php-format
|
66 |
msgid "Find and verify `%s` on “Logs” tab."
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: admin/class-ip-geo-block-admin.php:305
|
70 |
msgid "This feature is available with HTML5 compliant browsers."
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: admin/class-ip-geo-block-admin.php:306
|
74 |
msgid "The selected row cannot be found in the table."
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: admin/class-ip-geo-block-admin.php:307
|
78 |
+
#: admin/class-ip-geo-block-admin.php:1694
|
79 |
#, php-format
|
80 |
msgid "An error occurred while executing the ajax command `%s`."
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: admin/class-ip-geo-block-admin.php:311
|
84 |
msgid "No data available in table"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: admin/class-ip-geo-block-admin.php:312
|
88 |
msgid "No matching records found"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: admin/class-ip-geo-block-admin.php:313
|
92 |
#: admin/includes/class-admin-ajax.php:107
|
93 |
#: admin/includes/class-admin-ajax.php:240
|
94 |
#: admin/includes/tab-geolocation.php:74
|
95 |
msgid "IP address"
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: admin/class-ip-geo-block-admin.php:314
|
99 |
#: admin/includes/class-admin-ajax.php:108
|
100 |
#: admin/includes/class-admin-ajax.php:241
|
101 |
msgid "Code"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: admin/class-ip-geo-block-admin.php:315
|
105 |
#: admin/includes/class-admin-ajax.php:109
|
106 |
#: admin/includes/class-admin-ajax.php:242
|
107 |
msgid "ASN"
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: admin/class-ip-geo-block-admin.php:316
|
111 |
#: admin/includes/class-admin-ajax.php:243
|
112 |
msgid "Host name"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: admin/class-ip-geo-block-admin.php:317
|
116 |
#: admin/includes/class-admin-ajax.php:110
|
117 |
#: admin/includes/class-admin-ajax.php:244
|
118 |
msgid "Target"
|
119 |
msgstr ""
|
120 |
|
121 |
+
#: admin/class-ip-geo-block-admin.php:318
|
122 |
#: admin/includes/class-admin-ajax.php:245
|
123 |
msgid "Failure / Total"
|
124 |
msgstr ""
|
125 |
|
126 |
+
#: admin/class-ip-geo-block-admin.php:319
|
127 |
#: admin/includes/class-admin-ajax.php:246
|
128 |
msgid "Elapsed[sec]"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: admin/class-ip-geo-block-admin.php:320
|
132 |
#: admin/includes/class-admin-ajax.php:106
|
133 |
msgid "Time"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: admin/class-ip-geo-block-admin.php:321
|
137 |
#: admin/includes/class-admin-ajax.php:111
|
138 |
msgid "Result"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: admin/class-ip-geo-block-admin.php:322
|
142 |
#: admin/includes/class-admin-ajax.php:112
|
143 |
msgid "Request"
|
144 |
msgstr ""
|
145 |
|
146 |
+
#: admin/class-ip-geo-block-admin.php:323
|
147 |
#: admin/includes/class-admin-ajax.php:113
|
148 |
msgid "User agent"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: admin/class-ip-geo-block-admin.php:324
|
152 |
#: admin/includes/class-admin-ajax.php:114
|
153 |
msgid "HTTP headers"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: admin/class-ip-geo-block-admin.php:325
|
157 |
#: admin/includes/class-admin-ajax.php:115
|
158 |
msgid "$_POST data"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: admin/class-ip-geo-block-admin.php:351
|
162 |
msgid "Contribute on GitHub"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: admin/class-ip-geo-block-admin.php:365
|
166 |
+
#: admin/class-ip-geo-block-admin.php:491
|
167 |
+
#: admin/class-ip-geo-block-admin.php:732
|
168 |
+
#: admin/class-ip-geo-block-admin.php:752
|
169 |
+
#: admin/class-ip-geo-block-admin.php:768
|
170 |
msgid "Settings"
|
171 |
msgstr ""
|
172 |
|
173 |
+
#: admin/class-ip-geo-block-admin.php:459
|
174 |
#: admin/class-ip-geo-block-admin.php:460
|
175 |
+
#: admin/class-ip-geo-block-admin.php:470
|
176 |
#: admin/class-ip-geo-block-admin.php:471
|
177 |
+
#: admin/class-ip-geo-block-admin.php:480
|
178 |
+
#: admin/class-ip-geo-block-admin.php:490
|
|
|
179 |
msgid "IP Geo Block"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: admin/class-ip-geo-block-admin.php:481
|
183 |
+
#: admin/class-ip-geo-block-admin.php:731
|
184 |
+
#: admin/class-ip-geo-block-admin.php:749
|
185 |
+
#: admin/class-ip-geo-block-admin.php:766
|
186 |
msgid "Sites list"
|
187 |
msgstr ""
|
188 |
|
189 |
+
#: admin/class-ip-geo-block-admin.php:521
|
190 |
msgid "You need WordPress 3.7+."
|
191 |
msgstr ""
|
192 |
|
193 |
+
#: admin/class-ip-geo-block-admin.php:525
|
194 |
#, php-format
|
195 |
msgid ""
|
196 |
"Can not load Geolocation API libraries from <code>%s</code>. It seems to "
|
199 |
"contents of tokkonopapa/WordPress-IP-Geo-API as a zip file\">ZIP file</a> "
|
200 |
"from <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-"
|
201 |
"IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
202 |
+
"IP-Geo-API</a>. Try to deactivate IP Geo Block once and activate it again, "
|
203 |
+
"or install <code>ip-geo-api</code> with write permission according to <a rel="
|
204 |
+
"\"noreferrer\" href=\"https://www.ipgeoblock.com/codex/how-to-fix-permission-"
|
205 |
+
"troubles.html\" title=\"How can I fix permission troubles? | IP Geo Block"
|
206 |
+
"\">this instruction</a>."
|
207 |
msgstr ""
|
208 |
|
209 |
+
#: admin/class-ip-geo-block-admin.php:534
|
210 |
#, php-format
|
211 |
msgid ""
|
212 |
"You should select at least one API at <a href=\"%s\">Geolocation API "
|
214 |
"expires."
|
215 |
msgstr ""
|
216 |
|
217 |
+
#: admin/class-ip-geo-block-admin.php:543
|
218 |
#, php-format
|
219 |
msgid ""
|
220 |
"You should select at least one API for local database at <a href=\"%s"
|
222 |
"slow down the site."
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: admin/class-ip-geo-block-admin.php:554
|
226 |
#, php-format
|
227 |
msgid ""
|
228 |
"Now downloading geolocation databases in background. After a little while, "
|
230 |
"strong>” at <a href=\"%s\">Validation rules and behavior</a>."
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: admin/class-ip-geo-block-admin.php:560
|
234 |
#, php-format
|
235 |
msgid ""
|
236 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
237 |
"confirm it at <a href=\"%s\">Validation rules and behavior</a>."
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: admin/class-ip-geo-block-admin.php:569
|
241 |
msgid "Local database and matching rule have been updated."
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: admin/class-ip-geo-block-admin.php:580
|
245 |
msgid ""
|
246 |
"Once you logout, you will be unable to login again because the number of "
|
247 |
"login attempts reaches the limit."
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: admin/class-ip-geo-block-admin.php:582
|
251 |
#, php-format
|
252 |
msgid ""
|
253 |
"Please remove your IP address in “%1$sStatistics in IP address cache"
|
255 |
"yourself out."
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: admin/class-ip-geo-block-admin.php:593
|
259 |
msgid ""
|
260 |
"Once you logout, you will be unable to login again because your country code "
|
261 |
"or IP address is in the blacklist."
|
262 |
msgstr ""
|
263 |
|
264 |
+
#: admin/class-ip-geo-block-admin.php:594
|
265 |
msgid ""
|
266 |
"Once you logout, you will be unable to login again because your country code "
|
267 |
"or IP address is not in the whitelist."
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: admin/class-ip-geo-block-admin.php:598
|
271 |
#, php-format
|
272 |
msgid "Please check your “%sValidation rules and behavior%s”."
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: admin/class-ip-geo-block-admin.php:602
|
276 |
#, php-format
|
277 |
msgid ""
|
278 |
"Please confirm your local geolocation database files exist at “%sLocal "
|
280 |
"“%sStatistics in cache%s” section."
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: admin/class-ip-geo-block-admin.php:616
|
284 |
#, php-format
|
285 |
msgid ""
|
286 |
"Emergency login link is outdated. Please delete it once and generate again "
|
288 |
"favorites / bookmarks in your browser."
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: admin/class-ip-geo-block-admin.php:625
|
292 |
msgid ""
|
293 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
294 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
295 |
"select “init” action hook."
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: admin/class-ip-geo-block-admin.php:733
|
299 |
msgid "Statistics"
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: admin/class-ip-geo-block-admin.php:734
|
303 |
msgid "Logs"
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: admin/class-ip-geo-block-admin.php:735
|
307 |
msgid "Search"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: admin/class-ip-geo-block-admin.php:736
|
311 |
msgid "Attribution"
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: admin/class-ip-geo-block-admin.php:784
|
|
|
|
|
|
|
|
|
|
|
315 |
msgid "Toggle all"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: admin/class-ip-geo-block-admin.php:787
|
319 |
msgid ""
|
320 |
"Independent of “Privacy and record settings”, you can see all "
|
321 |
"the requests validated by this plugin in almost real time."
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: admin/class-ip-geo-block-admin.php:787 admin/includes/tab-accesslog.php:39
|
325 |
msgid "Live update"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: admin/class-ip-geo-block-admin.php:791
|
329 |
msgid "Open a new window on clicking the link in the chart."
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: admin/class-ip-geo-block-admin.php:815
|
333 |
msgid "Thanks for providing these great services for free."
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: admin/class-ip-geo-block-admin.php:816
|
337 |
msgid ""
|
338 |
"(Most browsers will redirect you to each site <a href=\"https://www."
|
339 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
340 |
"when you click the link</a>.)"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: admin/class-ip-geo-block-admin.php:821
|
344 |
msgid "Back to top"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: admin/class-ip-geo-block-admin.php:913
|
348 |
msgid "Enable"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: admin/class-ip-geo-block-admin.php:928
|
352 |
msgid "Select one"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: admin/class-ip-geo-block-admin.php:1363
|
356 |
msgid "You do not have sufficient permissions to access this page."
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: admin/class-ip-geo-block-admin.php:1390
|
360 |
#: admin/includes/class-admin-rewrite.php:194
|
361 |
+
#: classes/class-ip-geo-block-cron.php:228
|
362 |
+
#: classes/class-ip-geo-block-cron.php:332
|
363 |
+
#: classes/class-ip-geo-block-cron.php:410
|
364 |
+
#: classes/class-ip-geo-block-opts.php:482
|
365 |
#, php-format
|
366 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: admin/class-ip-geo-block-admin.php:1424
|
370 |
msgid "Settings saved."
|
371 |
msgstr ""
|
372 |
|
373 |
+
#: admin/class-ip-geo-block-admin.php:1529
|
374 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:91
|
375 |
+
msgid ""
|
376 |
+
"<span title=\"Show only passed entries whose country codes are in Whitelist."
|
377 |
+
"\">Passed in Whitelist</span>"
|
378 |
+
msgstr ""
|
379 |
+
|
380 |
+
#: admin/class-ip-geo-block-admin.php:1530
|
381 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:92
|
382 |
+
msgid ""
|
383 |
+
"<span title=\"Show only passed entries whose country codes are in Blacklist."
|
384 |
+
"\">Passed in Blacklist</span>"
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: admin/class-ip-geo-block-admin.php:1531
|
388 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:93
|
389 |
+
msgid ""
|
390 |
+
"<span title=\"Show only passed entries whose country codes are not in either "
|
391 |
+
"list.\">Passed not in List</span>"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: admin/class-ip-geo-block-admin.php:1532
|
395 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:94
|
396 |
+
msgid ""
|
397 |
+
"<span title=\"Show only blocked entries whose country codes are in Whitelist."
|
398 |
+
"\">Blocked in Whitelist</span>"
|
399 |
+
msgstr ""
|
400 |
+
|
401 |
+
#: admin/class-ip-geo-block-admin.php:1533
|
402 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:95
|
403 |
+
msgid ""
|
404 |
+
"<span title=\"Show only blocked entries whose country codes are in Blacklist."
|
405 |
+
"\">Blocked in Blacklist</span>"
|
406 |
+
msgstr ""
|
407 |
+
|
408 |
+
#: admin/class-ip-geo-block-admin.php:1534
|
409 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:96
|
410 |
+
msgid ""
|
411 |
+
"<span title=\"Show only blocked entries whose country codes are not in "
|
412 |
+
"either list.\">Blocked not in List</span>"
|
413 |
+
msgstr ""
|
414 |
+
|
415 |
#: admin/includes/class-admin-ajax.php:72
|
416 |
#: admin/includes/class-admin-ajax.php:75 admin/includes/tab-settings.php:84
|
417 |
#: admin/includes/tab-settings.php:103
|
430 |
msgstr ""
|
431 |
|
432 |
#: admin/includes/class-admin-rewrite.php:168
|
433 |
+
#: classes/class-ip-geo-block-cron.php:223
|
434 |
+
#: classes/class-ip-geo-block-cron.php:405
|
435 |
#, php-format
|
436 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
437 |
msgstr ""
|
455 |
msgid "Help"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:450
|
459 |
msgid "Comment post"
|
460 |
msgstr ""
|
461 |
|
462 |
+
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:451
|
463 |
msgid "XML-RPC"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:452
|
467 |
msgid "Login form"
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:453
|
471 |
msgid "Admin area"
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: admin/includes/tab-accesslog.php:59 admin/includes/tab-settings.php:455
|
475 |
msgid "Public facing pages"
|
476 |
msgstr ""
|
477 |
|
491 |
msgid "Reset"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: admin/includes/tab-accesslog.php:117
|
495 |
msgid "Preset filters"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: admin/includes/tab-accesslog.php:133 admin/includes/tab-statistics.php:238
|
499 |
msgid "Bulk action"
|
500 |
msgstr ""
|
501 |
|
502 |
+
#: admin/includes/tab-accesslog.php:144 admin/includes/tab-statistics.php:249
|
503 |
msgid "Remove entries by IP address"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: admin/includes/tab-accesslog.php:145 admin/includes/tab-statistics.php:250
|
507 |
msgid "Add IP address to “Whitelist”"
|
508 |
msgstr ""
|
509 |
|
510 |
+
#: admin/includes/tab-accesslog.php:146 admin/includes/tab-statistics.php:251
|
511 |
msgid "Add IP address to “Blacklist”"
|
512 |
msgstr ""
|
513 |
|
514 |
+
#: admin/includes/tab-accesslog.php:147 admin/includes/tab-statistics.php:252
|
515 |
msgid "Add AS number to “Whitelist”"
|
516 |
msgstr ""
|
517 |
|
518 |
+
#: admin/includes/tab-accesslog.php:148 admin/includes/tab-statistics.php:253
|
519 |
msgid "Add AS number to “Blacklist”"
|
520 |
msgstr ""
|
521 |
|
522 |
+
#: admin/includes/tab-accesslog.php:150 admin/includes/tab-network.php:56
|
523 |
#: admin/includes/tab-statistics.php:255
|
524 |
msgid "Apply"
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: admin/includes/tab-accesslog.php:157 admin/includes/tab-statistics.php:191
|
528 |
msgid "Clear logs"
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: admin/includes/tab-accesslog.php:165 admin/includes/tab-statistics.php:167
|
532 |
#: admin/includes/tab-statistics.php:199 admin/includes/tab-statistics.php:269
|
533 |
msgid "Clear all"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: admin/includes/tab-accesslog.php:174
|
537 |
msgid "Export logs"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: admin/includes/tab-accesslog.php:180 admin/includes/tab-settings.php:1560
|
541 |
#: admin/includes/tab-statistics.php:283
|
542 |
msgid "Export to the local file"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: admin/includes/tab-accesslog.php:180 admin/includes/tab-statistics.php:283
|
546 |
msgid "Export csv"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: admin/includes/tab-accesslog.php:206 admin/includes/tab-network.php:112
|
550 |
#: admin/includes/tab-statistics.php:410
|
551 |
#, php-format
|
552 |
msgid "[ %sRecord “Validation logs”%s ] is disabled."
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: admin/includes/tab-accesslog.php:207 admin/includes/tab-network.php:113
|
556 |
#: admin/includes/tab-statistics.php:411
|
557 |
msgid ""
|
558 |
"Please set the proper condition to record and analyze the validation logs."
|
570 |
msgid "Geolocation API"
|
571 |
msgstr ""
|
572 |
|
573 |
+
#: admin/includes/tab-geolocation.php:89 admin/includes/tab-settings.php:1105
|
574 |
msgid ""
|
575 |
"<dfn title=\"IP address is always encrypted on recording in Cache and Logs. "
|
576 |
"Moreover, this option replaces the end of IP address with “***” "
|
704 |
"country code</dfn>"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:827
|
708 |
msgid "Matching rule"
|
709 |
msgstr ""
|
710 |
|
800 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: admin/includes/tab-settings.php:304 admin/includes/tab-settings.php:516
|
804 |
+
#: admin/includes/tab-settings.php:661 admin/includes/tab-settings.php:1177
|
805 |
msgid "Disable"
|
806 |
msgstr ""
|
807 |
|
813 |
msgid "Verify file extension only"
|
814 |
msgstr ""
|
815 |
|
816 |
+
#: admin/includes/tab-settings.php:314
|
817 |
+
msgid ""
|
818 |
+
"<dfn title=\"Specify the table names to be verified for single site. This "
|
819 |
+
"verification will be skipped if empty.\">pre_update_option</dfn>"
|
820 |
+
msgstr ""
|
821 |
+
|
822 |
+
#: admin/includes/tab-settings.php:316
|
823 |
+
msgid ""
|
824 |
+
"<dfn title=\"Specify the table names to be verified for multisite. This "
|
825 |
+
"verification will be skipped if empty.\">pre_update_site_option</dfn>"
|
826 |
+
msgstr ""
|
827 |
+
|
828 |
+
#: admin/includes/tab-settings.php:321
|
829 |
+
msgid ""
|
830 |
+
"<dfn title=\"It prevents to manipulate metadata in database without admin "
|
831 |
+
"privilege.\">Prevent metadata alteration</dfn>"
|
832 |
+
msgstr ""
|
833 |
+
|
834 |
+
#: admin/includes/tab-settings.php:337
|
835 |
#, php-format
|
836 |
msgid ""
|
837 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
838 |
"directory.\">Response code</dfn> %s"
|
839 |
msgstr ""
|
840 |
|
841 |
+
#: admin/includes/tab-settings.php:366 admin/includes/tab-settings.php:910
|
842 |
msgid ""
|
843 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
844 |
"to a public facing page, visitors would not be blocked on the page to "
|
847 |
"\">Redirect URL</dfn>"
|
848 |
msgstr ""
|
849 |
|
850 |
+
#: admin/includes/tab-settings.php:383 admin/includes/tab-settings.php:928
|
851 |
msgid ""
|
852 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
853 |
"message</dfn>"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: admin/includes/tab-settings.php:401
|
857 |
msgid "Select when to run the validation."
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: admin/includes/tab-settings.php:401
|
861 |
msgid "Validation timing"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: admin/includes/tab-settings.php:412
|
865 |
msgid "“init” action hook"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: admin/includes/tab-settings.php:413
|
869 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: admin/includes/tab-settings.php:416
|
873 |
msgid ""
|
874 |
"Validate at “init” action hook in the same manner as typical "
|
875 |
"plugins."
|
876 |
msgstr ""
|
877 |
|
878 |
+
#: admin/includes/tab-settings.php:417
|
879 |
msgid ""
|
880 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
881 |
"on server but has <a rel='noreferrer' href='https://www.ipgeoblock.com/codex/"
|
883 |
"restrictions</a>."
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: admin/includes/tab-settings.php:425
|
887 |
msgid ""
|
888 |
"It enables to simulate the validation rules without actual blocking in order "
|
889 |
"to check the behavior of this plugin. The results can be found on “"
|
890 |
"Logs” tab."
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: admin/includes/tab-settings.php:425
|
894 |
msgid "Simulation mode"
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: admin/includes/tab-settings.php:442
|
898 |
msgid "Back-end target settings"
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: admin/includes/tab-settings.php:448
|
902 |
#, php-format
|
903 |
msgid "<dfn title=\"It enables to validate requests to %s.\">%s</dfn>"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: admin/includes/tab-settings.php:454
|
907 |
msgid "Other areas"
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: admin/includes/tab-settings.php:455
|
911 |
msgid "public facing pages"
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: admin/includes/tab-settings.php:471 admin/includes/tab-settings.php:517
|
915 |
+
#: admin/includes/tab-settings.php:549 admin/includes/tab-settings.php:555
|
916 |
+
#: admin/includes/tab-settings.php:820
|
917 |
msgid "Block by country"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: admin/includes/tab-settings.php:481
|
921 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: admin/includes/tab-settings.php:481
|
925 |
msgid "Message on comment form"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: admin/includes/tab-settings.php:494
|
929 |
msgid "None"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: admin/includes/tab-settings.php:495
|
933 |
msgid "Top"
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: admin/includes/tab-settings.php:496
|
937 |
msgid "Bottom"
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: admin/includes/tab-settings.php:518
|
941 |
msgid "Completely close"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: admin/includes/tab-settings.php:524
|
945 |
msgid "Action to login as a registered user."
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: admin/includes/tab-settings.php:524
|
949 |
msgid "Log in"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: admin/includes/tab-settings.php:525
|
953 |
msgid "Action to register new users."
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: admin/includes/tab-settings.php:525
|
957 |
msgid "Register"
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: admin/includes/tab-settings.php:526
|
961 |
msgid "Action to reset a password to create a new one."
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: admin/includes/tab-settings.php:526
|
965 |
msgid "Password Reset"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: admin/includes/tab-settings.php:527
|
969 |
msgid "Action to email a password to a registered user."
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: admin/includes/tab-settings.php:527
|
973 |
msgid "Lost Password"
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: admin/includes/tab-settings.php:528
|
977 |
msgid ""
|
978 |
"Action to show prompt to enter a password on password protected post and "
|
979 |
"page."
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: admin/includes/tab-settings.php:528
|
983 |
msgid "Password protected"
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: admin/includes/tab-settings.php:550
|
987 |
msgid ""
|
988 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
989 |
"actions</dfn>"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: admin/includes/tab-settings.php:556
|
993 |
msgid "Prevent Zero-day Exploit"
|
994 |
msgstr ""
|
995 |
|
996 |
+
#: admin/includes/tab-settings.php:560
|
997 |
msgid ""
|
998 |
+
"It will block a request related to the services for both “non-logged "
|
999 |
+
"in user” and “logged-in user”."
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: admin/includes/tab-settings.php:561
|
1003 |
msgid ""
|
1004 |
"Regardless of the country code, it will block a malicious request related to "
|
1005 |
+
"the services only for “logged-in user”."
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: admin/includes/tab-settings.php:567
|
1009 |
msgid ""
|
1010 |
"This is applied to “XML-RPC” and “Login form” when "
|
1011 |
"“IP address cache” in “Privacy and record settings” "
|
1013 |
"cache."
|
1014 |
msgstr ""
|
1015 |
|
1016 |
+
#: admin/includes/tab-settings.php:567
|
1017 |
msgid "Max failed login attempts per IP address"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: admin/includes/tab-settings.php:608
|
1021 |
msgid "admin post for logged-in user"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
+
#: admin/includes/tab-settings.php:609
|
1025 |
msgid "admin post for non logged-in user"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
+
#: admin/includes/tab-settings.php:631
|
1029 |
msgid "Admin ajax/post"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
+
#: admin/includes/tab-settings.php:645
|
1033 |
msgid ""
|
1034 |
"Specify the action name (“action=…”) or the page name "
|
1035 |
"(“page=…”) to prevent unintended blocking caused by "
|
1037 |
"Zero-day Exploit” (for logged-in user)."
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: admin/includes/tab-settings.php:645 admin/includes/tab-settings.php:723
|
1041 |
+
#: admin/includes/tab-settings.php:783
|
1042 |
msgid "Exceptions"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: admin/includes/tab-settings.php:646
|
1046 |
msgid "Toggle with non logged-in user"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: admin/includes/tab-settings.php:649
|
1050 |
msgid "Candidate actions/pages"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: admin/includes/tab-settings.php:663
|
1054 |
#, php-format
|
1055 |
msgid ""
|
1056 |
"Regardless of the country code, it will block a malicious request to <code>"
|
1057 |
"%s⋯/*.php</code>."
|
1058 |
msgstr ""
|
1059 |
|
1060 |
+
#: admin/includes/tab-settings.php:664
|
1061 |
msgid ""
|
1062 |
"Select the item which causes unintended blocking in order to exclude from "
|
1063 |
"the validation target. Grayed item indicates “INACTIVE”."
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: admin/includes/tab-settings.php:665
|
1067 |
#, php-format
|
1068 |
msgid ""
|
1069 |
"It configures “%s” to validate a direct request to the PHP file "
|
1071 |
"hidden files beginning with a dot by the server's configuration."
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: admin/includes/tab-settings.php:666
|
1075 |
msgid "Sorry, but your server type is not supported."
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: admin/includes/tab-settings.php:667
|
1079 |
msgid ""
|
1080 |
"You need to click “Save Changes” button for imported settings to "
|
1081 |
"take effect."
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: admin/includes/tab-settings.php:702 admin/includes/tab-settings.php:762
|
1085 |
msgid "Force to load WP core"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
+
#: admin/includes/tab-settings.php:707
|
1089 |
msgid "Plugins area"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
+
#: admin/includes/tab-settings.php:767
|
1093 |
msgid "Themes area"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: admin/includes/tab-settings.php:802
|
1097 |
msgid "Front-end target settings"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
+
#: admin/includes/tab-settings.php:837
|
1101 |
msgid "Follow “Validation rules and behavior”"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
+
#: admin/includes/tab-settings.php:879
|
1105 |
#, php-format
|
1106 |
msgid ""
|
1107 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
1109 |
"\">Response code</dfn> %s"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
+
#: admin/includes/tab-settings.php:943
|
1113 |
msgid ""
|
1114 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
+
#: admin/includes/tab-settings.php:955
|
1118 |
msgid ""
|
1119 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1120 |
"target.\">Post type</dfn>"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: admin/includes/tab-settings.php:967
|
1124 |
msgid ""
|
1125 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1126 |
"page as a blocking target.\">Category</dfn>"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
#: admin/includes/tab-settings.php:979
|
1130 |
msgid ""
|
1131 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1132 |
"a blocking target.\">Tag</dfn>"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
#: admin/includes/tab-settings.php:993
|
1136 |
msgid "Specify the validation target on front-end."
|
1137 |
msgstr ""
|
1138 |
|
1139 |
+
#: admin/includes/tab-settings.php:993
|
1140 |
msgid "Validation target"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: admin/includes/tab-settings.php:1004
|
1144 |
msgid "All requests"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: admin/includes/tab-settings.php:1005
|
1148 |
msgid "Specify the targets"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
+
#: admin/includes/tab-settings.php:1008
|
1152 |
msgid ""
|
1153 |
"Notice that “Validation timing” is deferred till “"
|
1154 |
"wp” action hook. It means that this feature would not be compatible "
|
1155 |
"with any page caching."
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: admin/includes/tab-settings.php:1018
|
1159 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1160 |
msgstr ""
|
1161 |
|
1162 |
+
#: admin/includes/tab-settings.php:1018
|
1163 |
msgid "Excluded actions"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
+
#: admin/includes/tab-settings.php:1034
|
1167 |
msgid ""
|
1168 |
"<dfn title=\"Specify the frequency of request for certain period of time."
|
1169 |
"\">Blocking condition</dfn>"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
+
#: admin/includes/tab-settings.php:1036
|
1173 |
#, php-format
|
1174 |
msgid "More than %1$s page view (PV) in %2$s seconds"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
+
#: admin/includes/tab-settings.php:1044
|
1178 |
msgid ""
|
1179 |
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1180 |
"behaved bots and crawlers</dfn>"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
+
#: admin/includes/tab-settings.php:1061
|
1184 |
msgid ""
|
1185 |
"A part of user agent string and a qualification connected with a separator "
|
1186 |
"that indicates an applicable rule and can be “:” (pass) or "
|
1190 |
"qualification”."
|
1191 |
msgstr ""
|
1192 |
|
1193 |
+
#: admin/includes/tab-settings.php:1061
|
1194 |
msgid "UA string and qualification"
|
1195 |
msgstr ""
|
1196 |
|
1197 |
+
#: admin/includes/tab-settings.php:1078
|
1198 |
msgid ""
|
1199 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1200 |
"server resources. If it is disabled, “HOST” and “"
|
1202 |
"return “true”."
|
1203 |
msgstr ""
|
1204 |
|
1205 |
+
#: admin/includes/tab-settings.php:1078
|
1206 |
msgid "Reverse DNS lookup"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
+
#: admin/includes/tab-settings.php:1097
|
1210 |
msgid "Privacy and record settings"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: admin/includes/tab-settings.php:1120
|
1214 |
msgid ""
|
1215 |
"<dfn title=\"This option restricts not to send IP address to the external "
|
1216 |
"Geolocation APIs.\">Do not send IP address to external APIs</dfn>"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
+
#: admin/includes/tab-settings.php:1135
|
1220 |
msgid ""
|
1221 |
"<dfn title=\"This option enables to record the IP address, country code and "
|
1222 |
"failure counter of login attempts into the cache on database to minimize the "
|
1223 |
"impact on site speed.\">Record “IP address cache”</dfn>"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: admin/includes/tab-settings.php:1150
|
1227 |
msgid ""
|
1228 |
"<dfn title=\"If user authentication fails consecutively beyond “Max "
|
1229 |
"number of failed login attempts per IP address”, subsequent login will "
|
1231 |
"dfn>"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: admin/includes/tab-settings.php:1166
|
1235 |
msgid ""
|
1236 |
"<dfn title=\"This option enables to record the validation logs including IP "
|
1237 |
"addresses.\">Record “Validation logs”</dfn>"
|
1238 |
msgstr ""
|
1239 |
|
1240 |
+
#: admin/includes/tab-settings.php:1178
|
1241 |
msgid "When blocked"
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: admin/includes/tab-settings.php:1179
|
1245 |
msgid "When passed"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: admin/includes/tab-settings.php:1180
|
1249 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: admin/includes/tab-settings.php:1181
|
1253 |
msgid "Unauthenticated visitor"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: admin/includes/tab-settings.php:1182
|
1257 |
msgid "Authenticated user"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: admin/includes/tab-settings.php:1183
|
1261 |
msgid "All the validation"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: admin/includes/tab-settings.php:1191
|
1265 |
#, php-format
|
1266 |
msgid ""
|
1267 |
"<dfn title=\"The maximum number of entries in the logs is also limited to %d."
|
1268 |
"\">Expiration time [days] for each entry</dfn>"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
+
#: admin/includes/tab-settings.php:1208
|
1272 |
msgid ""
|
1273 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST key to record "
|
1274 |
"with value</dfn>"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
+
#: admin/includes/tab-settings.php:1227
|
1278 |
msgid "Maximum entries in “Logs”"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: admin/includes/tab-settings.php:1244
|
1282 |
msgid ""
|
1283 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1284 |
"“Live update”</dfn>"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: admin/includes/tab-settings.php:1257
|
1288 |
msgid "Ordinary file"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: admin/includes/tab-settings.php:1258
|
1292 |
msgid "In-Memory"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
+
#: admin/includes/tab-settings.php:1261
|
1296 |
msgid "PDO_SQLITE driver not available"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: admin/includes/tab-settings.php:1262
|
1300 |
msgid ""
|
1301 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1302 |
"without conflict with other plugins."
|
1303 |
msgstr ""
|
1304 |
|
1305 |
+
#: admin/includes/tab-settings.php:1263
|
1306 |
msgid ""
|
1307 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1308 |
"with other plugins using this method."
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: admin/includes/tab-settings.php:1271
|
1312 |
msgid "Reset database source of “Live update”"
|
1313 |
msgstr ""
|
1314 |
|
1315 |
+
#: admin/includes/tab-settings.php:1279
|
1316 |
msgid "Reset now"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
+
#: admin/includes/tab-settings.php:1288 admin/includes/tab-settings.php:1449
|
1320 |
msgid ""
|
1321 |
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1322 |
"once and activate again."
|
1323 |
msgstr ""
|
1324 |
|
1325 |
+
#: admin/includes/tab-settings.php:1293
|
1326 |
msgid ""
|
1327 |
"<dfn title=\"This option enables to schedule the WP-Cron event to remove the "
|
1328 |
"expired entries from “IP address cache” and “Validation "
|
1329 |
"logs”.\">Interval [sec] to cleanup expired entries of IP address</dfn>"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: admin/includes/tab-settings.php:1302 admin/includes/tab-settings.php:1465
|
1333 |
#, php-format
|
1334 |
msgid "Next schedule: %s"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
+
#: admin/includes/tab-settings.php:1309
|
1338 |
msgid ""
|
1339 |
"<dfn title=\"This option enables to record the number blocked countries and "
|
1340 |
"the number of blocked requests per day.\">Record “Statistics of "
|
1341 |
"validation”</dfn>"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: admin/includes/tab-settings.php:1324
|
1345 |
msgid "Maximum period for “Statistics” [days]"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
+
#: admin/includes/tab-settings.php:1342
|
1349 |
msgid "Remove all settings and records at uninstallation"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: admin/includes/tab-settings.php:1359
|
1353 |
msgid "Geolocation API settings"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: admin/includes/tab-settings.php:1380
|
1357 |
msgid ""
|
1358 |
"<dfn title=\"IP address cache and local databases are scanned at the top "
|
1359 |
"priority.\">API selection and key settings</dfn>"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: admin/includes/tab-settings.php:1399
|
1363 |
msgid "Timeout for network API [sec]"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: admin/includes/tab-settings.php:1417
|
1367 |
msgid "Local database settings"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: admin/includes/tab-settings.php:1431
|
1371 |
msgid "database"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: admin/includes/tab-settings.php:1432 classes/class-ip-geo-block-cron.php:434
|
1375 |
#, php-format
|
1376 |
msgid "Last update: %s"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: admin/includes/tab-settings.php:1454
|
1380 |
msgid "Auto updating (once a month)"
|
1381 |
msgstr ""
|
1382 |
|
1383 |
+
#: admin/includes/tab-settings.php:1472
|
1384 |
msgid "Download database"
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: admin/includes/tab-settings.php:1480
|
1388 |
msgid "Download now"
|
1389 |
msgstr ""
|
1390 |
|
1391 |
+
#: admin/includes/tab-settings.php:1491
|
1392 |
msgid "Plugin settings"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
+
#: admin/includes/tab-settings.php:1503
|
1396 |
msgid ""
|
1397 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1398 |
"settings</dfn>"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: admin/includes/tab-settings.php:1521
|
1402 |
msgid ""
|
1403 |
"<dfn title=\"You can access to the login form with a specific key at "
|
1404 |
"emergency. Please add the generated link to favorites / bookmarks in your "
|
1406 |
"dfn>"
|
1407 |
msgstr ""
|
1408 |
|
1409 |
+
#: admin/includes/tab-settings.php:1537
|
1410 |
msgid ""
|
1411 |
"<dfn title=\"Valid key for Google Maps JavaScript API. Maps Embed API in "
|
1412 |
"iframe can be available without key in case it's empty.\">Google Maps API "
|
1413 |
"key</dfn>"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: admin/includes/tab-settings.php:1553
|
1417 |
msgid "Export / Import settings"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: admin/includes/tab-settings.php:1560
|
1421 |
msgid "Export settings"
|
1422 |
msgstr ""
|
1423 |
|
1424 |
+
#: admin/includes/tab-settings.php:1561
|
1425 |
msgid "Import from the local file"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
+
#: admin/includes/tab-settings.php:1561
|
1429 |
msgid "Import settings"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: admin/includes/tab-settings.php:1569
|
1433 |
msgid "Import pre-defined settings"
|
1434 |
msgstr ""
|
1435 |
|
1436 |
+
#: admin/includes/tab-settings.php:1576
|
1437 |
msgid ""
|
1438 |
"Import the default settings to revert to the “Right after "
|
1439 |
"installing” state"
|
1440 |
msgstr ""
|
1441 |
|
1442 |
+
#: admin/includes/tab-settings.php:1576
|
1443 |
msgid "Default settings"
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
#: admin/includes/tab-settings.php:1577
|
1447 |
msgid ""
|
1448 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1449 |
"for the “Back-end target settings”"
|
1450 |
msgstr ""
|
1451 |
|
1452 |
+
#: admin/includes/tab-settings.php:1577
|
1453 |
msgid "Best for Back-end"
|
1454 |
msgstr ""
|
1455 |
|
1456 |
+
#: admin/includes/tab-settings.php:1586
|
1457 |
msgid "Diagnose all DB tables"
|
1458 |
msgstr ""
|
1459 |
|
1460 |
+
#: admin/includes/tab-settings.php:1594
|
1461 |
msgid "Diagnose now"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
#: admin/includes/tab-settings.php:1603
|
1465 |
msgid ""
|
1466 |
"<dfn title=\"When you have some unexpected blocking experiences, please "
|
1467 |
"press the button to find the blocked requests at the end of dumped "
|
1471 |
"\">support forum</a> ]"
|
1472 |
msgstr ""
|
1473 |
|
1474 |
+
#: admin/includes/tab-settings.php:1610
|
1475 |
msgid "Please copy & paste when submitting your issue to support forum"
|
1476 |
msgstr ""
|
1477 |
|
1478 |
+
#: admin/includes/tab-settings.php:1610
|
1479 |
msgid "Show information"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
+
#: admin/includes/tab-settings.php:1627
|
1483 |
msgid ""
|
1484 |
"While Geolite2 / Maxmind and IP2Location will fetch the local databases, "
|
1485 |
"others will pass an IP address to the 3rd parties' API via HTTP."
|
1486 |
msgstr ""
|
1487 |
|
1488 |
+
#: admin/includes/tab-settings.php:1628
|
1489 |
msgid ""
|
1490 |
"Please select the appropriate APIs to fit the privacy law / regulation in "
|
1491 |
"your country / region."
|
1492 |
msgstr ""
|
1493 |
|
1494 |
+
#: admin/includes/tab-settings.php:1637
|
1495 |
#, php-format
|
1496 |
msgid ""
|
1497 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1498 |
"2.0.0+%s."
|
1499 |
msgstr ""
|
1500 |
|
1501 |
+
#: admin/includes/tab-settings.php:1645
|
1502 |
#, php-format
|
1503 |
msgid ""
|
1504 |
"Please refer to \"%sLiving with cache plugin%s\" for compatibility with "
|
1605 |
msgid "Please set the proper condition to record IP address in cache."
|
1606 |
msgstr ""
|
1607 |
|
1608 |
+
#: classes/class-ip-geo-block-cron.php:233
|
1609 |
#, php-format
|
1610 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1611 |
msgstr ""
|
1612 |
|
1613 |
+
#: classes/class-ip-geo-block-cron.php:312
|
1614 |
msgid "Your database file is up-to-date."
|
1615 |
msgstr ""
|
1616 |
|
1617 |
+
#: classes/class-ip-geo-block-cron.php:415
|
1618 |
msgid "gz or zip is not supported on your system."
|
1619 |
msgstr ""
|
1620 |
|
1650 |
"again."
|
1651 |
msgstr ""
|
1652 |
|
1653 |
+
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:154
|
1654 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:160
|
1655 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:252
|
1656 |
msgid "Database file does not exist."
|
1657 |
msgstr ""
|
1658 |
|
1659 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:158
|
1660 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:179
|
1661 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:207
|
1662 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
1663 |
+
msgid "Update service has already stopped."
|
1664 |
+
msgstr ""
|
1665 |
+
|
1666 |
#: wp-content/mu-plugins/ip-geo-block-mu.php:72
|
1667 |
#, php-format
|
1668 |
msgid ""
|
languages/ip-geo-block.pot
CHANGED
@@ -2,10 +2,10 @@
|
|
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 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
-
"POT-Creation-Date: 2018-
|
8 |
-
"PO-Revision-Date: 2018-
|
9 |
"Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
|
10 |
"Language-Team: \n"
|
11 |
"Language: en\n"
|
@@ -26,167 +26,171 @@ msgid ""
|
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: admin/class-ip-geo-block-admin.php:
|
30 |
msgid "Are you sure ?"
|
31 |
msgstr ""
|
32 |
|
33 |
-
#: admin/class-ip-geo-block-admin.php:
|
34 |
-
#: admin/class-ip-geo-block-admin.php:
|
35 |
msgid "Open a new window"
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: admin/class-ip-geo-block-admin.php:
|
39 |
msgid "Generate new link"
|
40 |
msgstr ""
|
41 |
|
42 |
-
#: admin/class-ip-geo-block-admin.php:
|
43 |
msgid "Delete current link"
|
44 |
msgstr ""
|
45 |
|
46 |
-
#: admin/class-ip-geo-block-admin.php:
|
47 |
msgid ""
|
48 |
"Please add the following link to favorites / bookmarks in your browser : "
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: admin/class-ip-geo-block-admin.php:
|
52 |
msgid "ajax for logged-in user"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: admin/class-ip-geo-block-admin.php:
|
56 |
msgid "ajax for non logged-in user"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: admin/class-ip-geo-block-admin.php:
|
60 |
#, php-format
|
61 |
msgid "[Found: %d]"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: admin/class-ip-geo-block-admin.php:
|
65 |
#, php-format
|
66 |
msgid "Find and verify `%s` on “Logs” tab."
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: admin/class-ip-geo-block-admin.php:
|
70 |
msgid "This feature is available with HTML5 compliant browsers."
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: admin/class-ip-geo-block-admin.php:
|
74 |
msgid "The selected row cannot be found in the table."
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: admin/class-ip-geo-block-admin.php:
|
78 |
-
#: admin/class-ip-geo-block-admin.php:
|
79 |
#, php-format
|
80 |
msgid "An error occurred while executing the ajax command `%s`."
|
81 |
msgstr ""
|
82 |
|
83 |
-
#: admin/class-ip-geo-block-admin.php:
|
84 |
msgid "No data available in table"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: admin/class-ip-geo-block-admin.php:
|
88 |
msgid "No matching records found"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: admin/class-ip-geo-block-admin.php:
|
92 |
#: admin/includes/class-admin-ajax.php:107
|
93 |
#: admin/includes/class-admin-ajax.php:240
|
94 |
#: admin/includes/tab-geolocation.php:74
|
95 |
msgid "IP address"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: admin/class-ip-geo-block-admin.php:
|
99 |
#: admin/includes/class-admin-ajax.php:108
|
100 |
#: admin/includes/class-admin-ajax.php:241
|
101 |
msgid "Code"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: admin/class-ip-geo-block-admin.php:
|
105 |
#: admin/includes/class-admin-ajax.php:109
|
106 |
#: admin/includes/class-admin-ajax.php:242
|
107 |
msgid "ASN"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: admin/class-ip-geo-block-admin.php:
|
111 |
#: admin/includes/class-admin-ajax.php:243
|
112 |
msgid "Host name"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: admin/class-ip-geo-block-admin.php:
|
116 |
#: admin/includes/class-admin-ajax.php:110
|
117 |
#: admin/includes/class-admin-ajax.php:244
|
118 |
msgid "Target"
|
119 |
msgstr ""
|
120 |
|
121 |
-
#: admin/class-ip-geo-block-admin.php:
|
122 |
#: admin/includes/class-admin-ajax.php:245
|
123 |
msgid "Failure / Total"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: admin/class-ip-geo-block-admin.php:
|
127 |
#: admin/includes/class-admin-ajax.php:246
|
128 |
msgid "Elapsed[sec]"
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: admin/class-ip-geo-block-admin.php:
|
132 |
#: admin/includes/class-admin-ajax.php:106
|
133 |
msgid "Time"
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: admin/class-ip-geo-block-admin.php:
|
137 |
#: admin/includes/class-admin-ajax.php:111
|
138 |
msgid "Result"
|
139 |
msgstr ""
|
140 |
|
141 |
-
#: admin/class-ip-geo-block-admin.php:
|
142 |
#: admin/includes/class-admin-ajax.php:112
|
143 |
msgid "Request"
|
144 |
msgstr ""
|
145 |
|
146 |
-
#: admin/class-ip-geo-block-admin.php:
|
147 |
#: admin/includes/class-admin-ajax.php:113
|
148 |
msgid "User agent"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: admin/class-ip-geo-block-admin.php:
|
152 |
#: admin/includes/class-admin-ajax.php:114
|
153 |
msgid "HTTP headers"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: admin/class-ip-geo-block-admin.php:
|
157 |
#: admin/includes/class-admin-ajax.php:115
|
158 |
msgid "$_POST data"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: admin/class-ip-geo-block-admin.php:
|
162 |
msgid "Contribute on GitHub"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: admin/class-ip-geo-block-admin.php:
|
166 |
-
#: admin/class-ip-geo-block-admin.php:
|
167 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
168 |
msgid "Settings"
|
169 |
msgstr ""
|
170 |
|
|
|
171 |
#: admin/class-ip-geo-block-admin.php:460
|
172 |
-
#: admin/class-ip-geo-block-admin.php:
|
173 |
#: admin/class-ip-geo-block-admin.php:471
|
174 |
-
#: admin/class-ip-geo-block-admin.php:
|
175 |
-
#: admin/class-ip-geo-block-admin.php:
|
176 |
-
#: admin/class-ip-geo-block-admin.php:492
|
177 |
msgid "IP Geo Block"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: admin/class-ip-geo-block-admin.php:
|
181 |
-
#: admin/class-ip-geo-block-admin.php:
|
|
|
|
|
182 |
msgid "Sites list"
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: admin/class-ip-geo-block-admin.php:
|
186 |
msgid "You need WordPress 3.7+."
|
187 |
msgstr ""
|
188 |
|
189 |
-
#: admin/class-ip-geo-block-admin.php:
|
190 |
#, php-format
|
191 |
msgid ""
|
192 |
"Can not load Geolocation API libraries from <code>%s</code>. It seems to "
|
@@ -195,13 +199,14 @@ msgid ""
|
|
195 |
"contents of tokkonopapa/WordPress-IP-Geo-API as a zip file\">ZIP file</a> "
|
196 |
"from <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-"
|
197 |
"IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
198 |
-
"IP-Geo-API</a>.
|
199 |
-
"according to <a rel
|
200 |
-
"how-to-fix-permission-
|
201 |
-
"troubles? | IP Geo Block
|
|
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: admin/class-ip-geo-block-admin.php:
|
205 |
#, php-format
|
206 |
msgid ""
|
207 |
"You should select at least one API at <a href=\"%s\">Geolocation API "
|
@@ -209,7 +214,7 @@ msgid ""
|
|
209 |
"expires."
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: admin/class-ip-geo-block-admin.php:
|
213 |
#, php-format
|
214 |
msgid ""
|
215 |
"You should select at least one API for local database at <a href=\"%s"
|
@@ -217,7 +222,7 @@ msgid ""
|
|
217 |
"slow down the site."
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: admin/class-ip-geo-block-admin.php:
|
221 |
#, php-format
|
222 |
msgid ""
|
223 |
"Now downloading geolocation databases in background. After a little while, "
|
@@ -225,24 +230,24 @@ msgid ""
|
|
225 |
"strong>” at <a href=\"%s\">Validation rules and behavior</a>."
|
226 |
msgstr ""
|
227 |
|
228 |
-
#: admin/class-ip-geo-block-admin.php:
|
229 |
#, php-format
|
230 |
msgid ""
|
231 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
232 |
"confirm it at <a href=\"%s\">Validation rules and behavior</a>."
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: admin/class-ip-geo-block-admin.php:
|
236 |
msgid "Local database and matching rule have been updated."
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: admin/class-ip-geo-block-admin.php:
|
240 |
msgid ""
|
241 |
"Once you logout, you will be unable to login again because the number of "
|
242 |
"login attempts reaches the limit."
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: admin/class-ip-geo-block-admin.php:
|
246 |
#, php-format
|
247 |
msgid ""
|
248 |
"Please remove your IP address in “%1$sStatistics in IP address cache"
|
@@ -250,24 +255,24 @@ msgid ""
|
|
250 |
"yourself out."
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: admin/class-ip-geo-block-admin.php:
|
254 |
msgid ""
|
255 |
"Once you logout, you will be unable to login again because your country code "
|
256 |
"or IP address is in the blacklist."
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: admin/class-ip-geo-block-admin.php:
|
260 |
msgid ""
|
261 |
"Once you logout, you will be unable to login again because your country code "
|
262 |
"or IP address is not in the whitelist."
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: admin/class-ip-geo-block-admin.php:
|
266 |
#, php-format
|
267 |
msgid "Please check your “%sValidation rules and behavior%s”."
|
268 |
msgstr ""
|
269 |
|
270 |
-
#: admin/class-ip-geo-block-admin.php:
|
271 |
#, php-format
|
272 |
msgid ""
|
273 |
"Please confirm your local geolocation database files exist at “%sLocal "
|
@@ -275,7 +280,7 @@ msgid ""
|
|
275 |
"“%sStatistics in cache%s” section."
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: admin/class-ip-geo-block-admin.php:
|
279 |
#, php-format
|
280 |
msgid ""
|
281 |
"Emergency login link is outdated. Please delete it once and generate again "
|
@@ -283,93 +288,130 @@ msgid ""
|
|
283 |
"favorites / bookmarks in your browser."
|
284 |
msgstr ""
|
285 |
|
286 |
-
#: admin/class-ip-geo-block-admin.php:
|
287 |
msgid ""
|
288 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
289 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
290 |
"select “init” action hook."
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: admin/class-ip-geo-block-admin.php:
|
294 |
msgid "Statistics"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: admin/class-ip-geo-block-admin.php:
|
298 |
msgid "Logs"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: admin/class-ip-geo-block-admin.php:
|
302 |
msgid "Search"
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: admin/class-ip-geo-block-admin.php:
|
306 |
msgid "Attribution"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: admin/class-ip-geo-block-admin.php:
|
310 |
-
#: admin/class-ip-geo-block-admin.php:770
|
311 |
-
msgid "Network"
|
312 |
-
msgstr ""
|
313 |
-
|
314 |
-
#: admin/class-ip-geo-block-admin.php:783
|
315 |
msgid "Toggle all"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: admin/class-ip-geo-block-admin.php:
|
319 |
msgid ""
|
320 |
"Independent of “Privacy and record settings”, you can see all "
|
321 |
"the requests validated by this plugin in almost real time."
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: admin/class-ip-geo-block-admin.php:
|
325 |
msgid "Live update"
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: admin/class-ip-geo-block-admin.php:
|
329 |
msgid "Open a new window on clicking the link in the chart."
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: admin/class-ip-geo-block-admin.php:
|
333 |
msgid "Thanks for providing these great services for free."
|
334 |
msgstr ""
|
335 |
|
336 |
-
#: admin/class-ip-geo-block-admin.php:
|
337 |
msgid ""
|
338 |
"(Most browsers will redirect you to each site <a href=\"https://www."
|
339 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
340 |
"when you click the link</a>.)"
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: admin/class-ip-geo-block-admin.php:
|
344 |
msgid "Back to top"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: admin/class-ip-geo-block-admin.php:
|
348 |
msgid "Enable"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: admin/class-ip-geo-block-admin.php:
|
352 |
msgid "Select one"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: admin/class-ip-geo-block-admin.php:
|
356 |
msgid "You do not have sufficient permissions to access this page."
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: admin/class-ip-geo-block-admin.php:
|
360 |
#: admin/includes/class-admin-rewrite.php:194
|
361 |
-
#: classes/class-ip-geo-block-cron.php:
|
362 |
-
#: classes/class-ip-geo-block-cron.php:
|
363 |
-
#: classes/class-ip-geo-block-cron.php:
|
364 |
-
#: classes/class-ip-geo-block-opts.php:
|
365 |
#, php-format
|
366 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: admin/class-ip-geo-block-admin.php:
|
370 |
msgid "Settings saved."
|
371 |
msgstr ""
|
372 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
#: admin/includes/class-admin-ajax.php:72
|
374 |
#: admin/includes/class-admin-ajax.php:75 admin/includes/tab-settings.php:84
|
375 |
#: admin/includes/tab-settings.php:103
|
@@ -388,8 +430,8 @@ msgid ""
|
|
388 |
msgstr ""
|
389 |
|
390 |
#: admin/includes/class-admin-rewrite.php:168
|
391 |
-
#: classes/class-ip-geo-block-cron.php:
|
392 |
-
#: classes/class-ip-geo-block-cron.php:
|
393 |
#, php-format
|
394 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
395 |
msgstr ""
|
@@ -413,23 +455,23 @@ msgstr ""
|
|
413 |
msgid "Help"
|
414 |
msgstr ""
|
415 |
|
416 |
-
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:
|
417 |
msgid "Comment post"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:
|
421 |
msgid "XML-RPC"
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:
|
425 |
msgid "Login form"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:
|
429 |
msgid "Admin area"
|
430 |
msgstr ""
|
431 |
|
432 |
-
#: admin/includes/tab-accesslog.php:59 admin/includes/tab-settings.php:
|
433 |
msgid "Public facing pages"
|
434 |
msgstr ""
|
435 |
|
@@ -449,68 +491,68 @@ msgstr ""
|
|
449 |
msgid "Reset"
|
450 |
msgstr ""
|
451 |
|
452 |
-
#: admin/includes/tab-accesslog.php:
|
453 |
msgid "Preset filters"
|
454 |
msgstr ""
|
455 |
|
456 |
-
#: admin/includes/tab-accesslog.php:
|
457 |
msgid "Bulk action"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: admin/includes/tab-accesslog.php:
|
461 |
msgid "Remove entries by IP address"
|
462 |
msgstr ""
|
463 |
|
464 |
-
#: admin/includes/tab-accesslog.php:
|
465 |
msgid "Add IP address to “Whitelist”"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: admin/includes/tab-accesslog.php:
|
469 |
msgid "Add IP address to “Blacklist”"
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: admin/includes/tab-accesslog.php:
|
473 |
msgid "Add AS number to “Whitelist”"
|
474 |
msgstr ""
|
475 |
|
476 |
-
#: admin/includes/tab-accesslog.php:
|
477 |
msgid "Add AS number to “Blacklist”"
|
478 |
msgstr ""
|
479 |
|
480 |
-
#: admin/includes/tab-accesslog.php:
|
481 |
#: admin/includes/tab-statistics.php:255
|
482 |
msgid "Apply"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: admin/includes/tab-accesslog.php:
|
486 |
msgid "Clear logs"
|
487 |
msgstr ""
|
488 |
|
489 |
-
#: admin/includes/tab-accesslog.php:
|
490 |
#: admin/includes/tab-statistics.php:199 admin/includes/tab-statistics.php:269
|
491 |
msgid "Clear all"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: admin/includes/tab-accesslog.php:
|
495 |
msgid "Export logs"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: admin/includes/tab-accesslog.php:
|
499 |
#: admin/includes/tab-statistics.php:283
|
500 |
msgid "Export to the local file"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: admin/includes/tab-accesslog.php:
|
504 |
msgid "Export csv"
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: admin/includes/tab-accesslog.php:
|
508 |
#: admin/includes/tab-statistics.php:410
|
509 |
#, php-format
|
510 |
msgid "[ %sRecord “Validation logs”%s ] is disabled."
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: admin/includes/tab-accesslog.php:
|
514 |
#: admin/includes/tab-statistics.php:411
|
515 |
msgid ""
|
516 |
"Please set the proper condition to record and analyze the validation logs."
|
@@ -528,7 +570,7 @@ msgstr ""
|
|
528 |
msgid "Geolocation API"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: admin/includes/tab-geolocation.php:89 admin/includes/tab-settings.php:
|
532 |
msgid ""
|
533 |
"<dfn title=\"IP address is always encrypted on recording in Cache and Logs. "
|
534 |
"Moreover, this option replaces the end of IP address with “***” "
|
@@ -662,7 +704,7 @@ msgid ""
|
|
662 |
"country code</dfn>"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:
|
666 |
msgid "Matching rule"
|
667 |
msgstr ""
|
668 |
|
@@ -758,8 +800,8 @@ msgid ""
|
|
758 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: admin/includes/tab-settings.php:304 admin/includes/tab-settings.php:
|
762 |
-
#: admin/includes/tab-settings.php:
|
763 |
msgid "Disable"
|
764 |
msgstr ""
|
765 |
|
@@ -771,14 +813,32 @@ msgstr ""
|
|
771 |
msgid "Verify file extension only"
|
772 |
msgstr ""
|
773 |
|
774 |
-
#: admin/includes/tab-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
775 |
#, php-format
|
776 |
msgid ""
|
777 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
778 |
"directory.\">Response code</dfn> %s"
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: admin/includes/tab-settings.php:
|
782 |
msgid ""
|
783 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
784 |
"to a public facing page, visitors would not be blocked on the page to "
|
@@ -787,35 +847,35 @@ msgid ""
|
|
787 |
"\">Redirect URL</dfn>"
|
788 |
msgstr ""
|
789 |
|
790 |
-
#: admin/includes/tab-settings.php:
|
791 |
msgid ""
|
792 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
793 |
"message</dfn>"
|
794 |
msgstr ""
|
795 |
|
796 |
-
#: admin/includes/tab-settings.php:
|
797 |
msgid "Select when to run the validation."
|
798 |
msgstr ""
|
799 |
|
800 |
-
#: admin/includes/tab-settings.php:
|
801 |
msgid "Validation timing"
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: admin/includes/tab-settings.php:
|
805 |
msgid "“init” action hook"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#: admin/includes/tab-settings.php:
|
809 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: admin/includes/tab-settings.php:
|
813 |
msgid ""
|
814 |
"Validate at “init” action hook in the same manner as typical "
|
815 |
"plugins."
|
816 |
msgstr ""
|
817 |
|
818 |
-
#: admin/includes/tab-settings.php:
|
819 |
msgid ""
|
820 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
821 |
"on server but has <a rel='noreferrer' href='https://www.ipgeoblock.com/codex/"
|
@@ -823,129 +883,129 @@ msgid ""
|
|
823 |
"restrictions</a>."
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: admin/includes/tab-settings.php:
|
827 |
msgid ""
|
828 |
"It enables to simulate the validation rules without actual blocking in order "
|
829 |
"to check the behavior of this plugin. The results can be found on “"
|
830 |
"Logs” tab."
|
831 |
msgstr ""
|
832 |
|
833 |
-
#: admin/includes/tab-settings.php:
|
834 |
msgid "Simulation mode"
|
835 |
msgstr ""
|
836 |
|
837 |
-
#: admin/includes/tab-settings.php:
|
838 |
msgid "Back-end target settings"
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: admin/includes/tab-settings.php:
|
842 |
#, php-format
|
843 |
msgid "<dfn title=\"It enables to validate requests to %s.\">%s</dfn>"
|
844 |
msgstr ""
|
845 |
|
846 |
-
#: admin/includes/tab-settings.php:
|
847 |
msgid "Other areas"
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: admin/includes/tab-settings.php:
|
851 |
msgid "public facing pages"
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: admin/includes/tab-settings.php:
|
855 |
-
#: admin/includes/tab-settings.php:
|
856 |
-
#: admin/includes/tab-settings.php:
|
857 |
msgid "Block by country"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: admin/includes/tab-settings.php:
|
861 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: admin/includes/tab-settings.php:
|
865 |
msgid "Message on comment form"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: admin/includes/tab-settings.php:
|
869 |
msgid "None"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: admin/includes/tab-settings.php:
|
873 |
msgid "Top"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: admin/includes/tab-settings.php:
|
877 |
msgid "Bottom"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: admin/includes/tab-settings.php:
|
881 |
msgid "Completely close"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: admin/includes/tab-settings.php:
|
885 |
msgid "Action to login as a registered user."
|
886 |
msgstr ""
|
887 |
|
888 |
-
#: admin/includes/tab-settings.php:
|
889 |
msgid "Log in"
|
890 |
msgstr ""
|
891 |
|
892 |
-
#: admin/includes/tab-settings.php:
|
893 |
msgid "Action to register new users."
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: admin/includes/tab-settings.php:
|
897 |
msgid "Register"
|
898 |
msgstr ""
|
899 |
|
900 |
-
#: admin/includes/tab-settings.php:
|
901 |
msgid "Action to reset a password to create a new one."
|
902 |
msgstr ""
|
903 |
|
904 |
-
#: admin/includes/tab-settings.php:
|
905 |
msgid "Password Reset"
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: admin/includes/tab-settings.php:
|
909 |
msgid "Action to email a password to a registered user."
|
910 |
msgstr ""
|
911 |
|
912 |
-
#: admin/includes/tab-settings.php:
|
913 |
msgid "Lost Password"
|
914 |
msgstr ""
|
915 |
|
916 |
-
#: admin/includes/tab-settings.php:
|
917 |
msgid ""
|
918 |
"Action to show prompt to enter a password on password protected post and "
|
919 |
"page."
|
920 |
msgstr ""
|
921 |
|
922 |
-
#: admin/includes/tab-settings.php:
|
923 |
msgid "Password protected"
|
924 |
msgstr ""
|
925 |
|
926 |
-
#: admin/includes/tab-settings.php:
|
927 |
msgid ""
|
928 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
929 |
"actions</dfn>"
|
930 |
msgstr ""
|
931 |
|
932 |
-
#: admin/includes/tab-settings.php:
|
933 |
msgid "Prevent Zero-day Exploit"
|
934 |
msgstr ""
|
935 |
|
936 |
-
#: admin/includes/tab-settings.php:
|
937 |
msgid ""
|
938 |
-
"It will block a request related to the services for both
|
939 |
-
"and
|
940 |
msgstr ""
|
941 |
|
942 |
-
#: admin/includes/tab-settings.php:
|
943 |
msgid ""
|
944 |
"Regardless of the country code, it will block a malicious request related to "
|
945 |
-
"the services only for
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: admin/includes/tab-settings.php:
|
949 |
msgid ""
|
950 |
"This is applied to “XML-RPC” and “Login form” when "
|
951 |
"“IP address cache” in “Privacy and record settings” "
|
@@ -953,23 +1013,23 @@ msgid ""
|
|
953 |
"cache."
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: admin/includes/tab-settings.php:
|
957 |
msgid "Max failed login attempts per IP address"
|
958 |
msgstr ""
|
959 |
|
960 |
-
#: admin/includes/tab-settings.php:
|
961 |
msgid "admin post for logged-in user"
|
962 |
msgstr ""
|
963 |
|
964 |
-
#: admin/includes/tab-settings.php:
|
965 |
msgid "admin post for non logged-in user"
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: admin/includes/tab-settings.php:
|
969 |
msgid "Admin ajax/post"
|
970 |
msgstr ""
|
971 |
|
972 |
-
#: admin/includes/tab-settings.php:
|
973 |
msgid ""
|
974 |
"Specify the action name (“action=…”) or the page name "
|
975 |
"(“page=…”) to prevent unintended blocking caused by "
|
@@ -977,33 +1037,33 @@ msgid ""
|
|
977 |
"Zero-day Exploit” (for logged-in user)."
|
978 |
msgstr ""
|
979 |
|
980 |
-
#: admin/includes/tab-settings.php:
|
981 |
-
#: admin/includes/tab-settings.php:
|
982 |
msgid "Exceptions"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: admin/includes/tab-settings.php:
|
986 |
msgid "Toggle with non logged-in user"
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: admin/includes/tab-settings.php:
|
990 |
msgid "Candidate actions/pages"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: admin/includes/tab-settings.php:
|
994 |
#, php-format
|
995 |
msgid ""
|
996 |
"Regardless of the country code, it will block a malicious request to <code>"
|
997 |
"%s⋯/*.php</code>."
|
998 |
msgstr ""
|
999 |
|
1000 |
-
#: admin/includes/tab-settings.php:
|
1001 |
msgid ""
|
1002 |
"Select the item which causes unintended blocking in order to exclude from "
|
1003 |
"the validation target. Grayed item indicates “INACTIVE”."
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: admin/includes/tab-settings.php:
|
1007 |
#, php-format
|
1008 |
msgid ""
|
1009 |
"It configures “%s” to validate a direct request to the PHP file "
|
@@ -1011,37 +1071,37 @@ msgid ""
|
|
1011 |
"hidden files beginning with a dot by the server's configuration."
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: admin/includes/tab-settings.php:
|
1015 |
msgid "Sorry, but your server type is not supported."
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: admin/includes/tab-settings.php:
|
1019 |
msgid ""
|
1020 |
"You need to click “Save Changes” button for imported settings to "
|
1021 |
"take effect."
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: admin/includes/tab-settings.php:
|
1025 |
msgid "Force to load WP core"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: admin/includes/tab-settings.php:
|
1029 |
msgid "Plugins area"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: admin/includes/tab-settings.php:
|
1033 |
msgid "Themes area"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: admin/includes/tab-settings.php:
|
1037 |
msgid "Front-end target settings"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: admin/includes/tab-settings.php:
|
1041 |
msgid "Follow “Validation rules and behavior”"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: admin/includes/tab-settings.php:
|
1045 |
#, php-format
|
1046 |
msgid ""
|
1047 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
@@ -1049,78 +1109,78 @@ msgid ""
|
|
1049 |
"\">Response code</dfn> %s"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: admin/includes/tab-settings.php:
|
1053 |
msgid ""
|
1054 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: admin/includes/tab-settings.php:
|
1058 |
msgid ""
|
1059 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1060 |
"target.\">Post type</dfn>"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
-
#: admin/includes/tab-settings.php:
|
1064 |
msgid ""
|
1065 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1066 |
"page as a blocking target.\">Category</dfn>"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: admin/includes/tab-settings.php:
|
1070 |
msgid ""
|
1071 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1072 |
"a blocking target.\">Tag</dfn>"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
-
#: admin/includes/tab-settings.php:
|
1076 |
msgid "Specify the validation target on front-end."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: admin/includes/tab-settings.php:
|
1080 |
msgid "Validation target"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: admin/includes/tab-settings.php:
|
1084 |
msgid "All requests"
|
1085 |
msgstr ""
|
1086 |
|
1087 |
-
#: admin/includes/tab-settings.php:
|
1088 |
msgid "Specify the targets"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: admin/includes/tab-settings.php:
|
1092 |
msgid ""
|
1093 |
"Notice that “Validation timing” is deferred till “"
|
1094 |
"wp” action hook. It means that this feature would not be compatible "
|
1095 |
"with any page caching."
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: admin/includes/tab-settings.php:
|
1099 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1100 |
msgstr ""
|
1101 |
|
1102 |
-
#: admin/includes/tab-settings.php:
|
1103 |
msgid "Excluded actions"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: admin/includes/tab-settings.php:
|
1107 |
msgid ""
|
1108 |
"<dfn title=\"Specify the frequency of request for certain period of time."
|
1109 |
"\">Blocking condition</dfn>"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#: admin/includes/tab-settings.php:
|
1113 |
#, php-format
|
1114 |
msgid "More than %1$s page view (PV) in %2$s seconds"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: admin/includes/tab-settings.php:
|
1118 |
msgid ""
|
1119 |
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1120 |
"behaved bots and crawlers</dfn>"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: admin/includes/tab-settings.php:
|
1124 |
msgid ""
|
1125 |
"A part of user agent string and a qualification connected with a separator "
|
1126 |
"that indicates an applicable rule and can be “:” (pass) or "
|
@@ -1130,11 +1190,11 @@ msgid ""
|
|
1130 |
"qualification”."
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: admin/includes/tab-settings.php:
|
1134 |
msgid "UA string and qualification"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: admin/includes/tab-settings.php:
|
1138 |
msgid ""
|
1139 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1140 |
"server resources. If it is disabled, “HOST” and “"
|
@@ -1142,28 +1202,28 @@ msgid ""
|
|
1142 |
"return “true”."
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: admin/includes/tab-settings.php:
|
1146 |
msgid "Reverse DNS lookup"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#: admin/includes/tab-settings.php:
|
1150 |
msgid "Privacy and record settings"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
#: admin/includes/tab-settings.php:
|
1154 |
msgid ""
|
1155 |
"<dfn title=\"This option restricts not to send IP address to the external "
|
1156 |
"Geolocation APIs.\">Do not send IP address to external APIs</dfn>"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
#: admin/includes/tab-settings.php:
|
1160 |
msgid ""
|
1161 |
"<dfn title=\"This option enables to record the IP address, country code and "
|
1162 |
"failure counter of login attempts into the cache on database to minimize the "
|
1163 |
"impact on site speed.\">Record “IP address cache”</dfn>"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
-
#: admin/includes/tab-settings.php:
|
1167 |
msgid ""
|
1168 |
"<dfn title=\"If user authentication fails consecutively beyond “Max "
|
1169 |
"number of failed login attempts per IP address”, subsequent login will "
|
@@ -1171,174 +1231,174 @@ msgid ""
|
|
1171 |
"dfn>"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
-
#: admin/includes/tab-settings.php:
|
1175 |
msgid ""
|
1176 |
"<dfn title=\"This option enables to record the validation logs including IP "
|
1177 |
"addresses.\">Record “Validation logs”</dfn>"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
-
#: admin/includes/tab-settings.php:
|
1181 |
msgid "When blocked"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
-
#: admin/includes/tab-settings.php:
|
1185 |
msgid "When passed"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
-
#: admin/includes/tab-settings.php:
|
1189 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: admin/includes/tab-settings.php:
|
1193 |
msgid "Unauthenticated visitor"
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#: admin/includes/tab-settings.php:
|
1197 |
msgid "Authenticated user"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: admin/includes/tab-settings.php:
|
1201 |
msgid "All the validation"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#: admin/includes/tab-settings.php:
|
1205 |
#, php-format
|
1206 |
msgid ""
|
1207 |
"<dfn title=\"The maximum number of entries in the logs is also limited to %d."
|
1208 |
"\">Expiration time [days] for each entry</dfn>"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
#: admin/includes/tab-settings.php:
|
1212 |
msgid ""
|
1213 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST key to record "
|
1214 |
"with value</dfn>"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: admin/includes/tab-settings.php:
|
1218 |
msgid "Maximum entries in “Logs”"
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: admin/includes/tab-settings.php:
|
1222 |
msgid ""
|
1223 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1224 |
"“Live update”</dfn>"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: admin/includes/tab-settings.php:
|
1228 |
msgid "Ordinary file"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: admin/includes/tab-settings.php:
|
1232 |
msgid "In-Memory"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: admin/includes/tab-settings.php:
|
1236 |
msgid "PDO_SQLITE driver not available"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: admin/includes/tab-settings.php:
|
1240 |
msgid ""
|
1241 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1242 |
"without conflict with other plugins."
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: admin/includes/tab-settings.php:
|
1246 |
msgid ""
|
1247 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1248 |
"with other plugins using this method."
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: admin/includes/tab-settings.php:
|
1252 |
msgid "Reset database source of “Live update”"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: admin/includes/tab-settings.php:
|
1256 |
msgid "Reset now"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: admin/includes/tab-settings.php:
|
1260 |
msgid ""
|
1261 |
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1262 |
"once and activate again."
|
1263 |
msgstr ""
|
1264 |
|
1265 |
-
#: admin/includes/tab-settings.php:
|
1266 |
msgid ""
|
1267 |
"<dfn title=\"This option enables to schedule the WP-Cron event to remove the "
|
1268 |
"expired entries from “IP address cache” and “Validation "
|
1269 |
"logs”.\">Interval [sec] to cleanup expired entries of IP address</dfn>"
|
1270 |
msgstr ""
|
1271 |
|
1272 |
-
#: admin/includes/tab-settings.php:
|
1273 |
#, php-format
|
1274 |
msgid "Next schedule: %s"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: admin/includes/tab-settings.php:
|
1278 |
msgid ""
|
1279 |
"<dfn title=\"This option enables to record the number blocked countries and "
|
1280 |
"the number of blocked requests per day.\">Record “Statistics of "
|
1281 |
"validation”</dfn>"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
-
#: admin/includes/tab-settings.php:
|
1285 |
msgid "Maximum period for “Statistics” [days]"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
-
#: admin/includes/tab-settings.php:
|
1289 |
msgid "Remove all settings and records at uninstallation"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
-
#: admin/includes/tab-settings.php:
|
1293 |
msgid "Geolocation API settings"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
-
#: admin/includes/tab-settings.php:
|
1297 |
msgid ""
|
1298 |
"<dfn title=\"IP address cache and local databases are scanned at the top "
|
1299 |
"priority.\">API selection and key settings</dfn>"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: admin/includes/tab-settings.php:
|
1303 |
msgid "Timeout for network API [sec]"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: admin/includes/tab-settings.php:
|
1307 |
msgid "Local database settings"
|
1308 |
msgstr ""
|
1309 |
|
1310 |
-
#: admin/includes/tab-settings.php:
|
1311 |
msgid "database"
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: admin/includes/tab-settings.php:
|
1315 |
#, php-format
|
1316 |
msgid "Last update: %s"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#: admin/includes/tab-settings.php:
|
1320 |
msgid "Auto updating (once a month)"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: admin/includes/tab-settings.php:
|
1324 |
msgid "Download database"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
-
#: admin/includes/tab-settings.php:
|
1328 |
msgid "Download now"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
-
#: admin/includes/tab-settings.php:
|
1332 |
msgid "Plugin settings"
|
1333 |
msgstr ""
|
1334 |
|
1335 |
-
#: admin/includes/tab-settings.php:
|
1336 |
msgid ""
|
1337 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1338 |
"settings</dfn>"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: admin/includes/tab-settings.php:
|
1342 |
msgid ""
|
1343 |
"<dfn title=\"You can access to the login form with a specific key at "
|
1344 |
"emergency. Please add the generated link to favorites / bookmarks in your "
|
@@ -1346,62 +1406,62 @@ msgid ""
|
|
1346 |
"dfn>"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#: admin/includes/tab-settings.php:
|
1350 |
msgid ""
|
1351 |
"<dfn title=\"Valid key for Google Maps JavaScript API. Maps Embed API in "
|
1352 |
"iframe can be available without key in case it's empty.\">Google Maps API "
|
1353 |
"key</dfn>"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
#: admin/includes/tab-settings.php:
|
1357 |
msgid "Export / Import settings"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: admin/includes/tab-settings.php:
|
1361 |
msgid "Export settings"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: admin/includes/tab-settings.php:
|
1365 |
msgid "Import from the local file"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#: admin/includes/tab-settings.php:
|
1369 |
msgid "Import settings"
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#: admin/includes/tab-settings.php:
|
1373 |
msgid "Import pre-defined settings"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
-
#: admin/includes/tab-settings.php:
|
1377 |
msgid ""
|
1378 |
"Import the default settings to revert to the “Right after "
|
1379 |
"installing” state"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
-
#: admin/includes/tab-settings.php:
|
1383 |
msgid "Default settings"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: admin/includes/tab-settings.php:
|
1387 |
msgid ""
|
1388 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1389 |
"for the “Back-end target settings”"
|
1390 |
msgstr ""
|
1391 |
|
1392 |
-
#: admin/includes/tab-settings.php:
|
1393 |
msgid "Best for Back-end"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
-
#: admin/includes/tab-settings.php:
|
1397 |
msgid "Diagnose all DB tables"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: admin/includes/tab-settings.php:
|
1401 |
msgid "Diagnose now"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#: admin/includes/tab-settings.php:
|
1405 |
msgid ""
|
1406 |
"<dfn title=\"When you have some unexpected blocking experiences, please "
|
1407 |
"press the button to find the blocked requests at the end of dumped "
|
@@ -1411,34 +1471,34 @@ msgid ""
|
|
1411 |
"\">support forum</a> ]"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
-
#: admin/includes/tab-settings.php:
|
1415 |
msgid "Please copy & paste when submitting your issue to support forum"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
-
#: admin/includes/tab-settings.php:
|
1419 |
msgid "Show information"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
#: admin/includes/tab-settings.php:
|
1423 |
msgid ""
|
1424 |
"While Geolite2 / Maxmind and IP2Location will fetch the local databases, "
|
1425 |
"others will pass an IP address to the 3rd parties' API via HTTP."
|
1426 |
msgstr ""
|
1427 |
|
1428 |
-
#: admin/includes/tab-settings.php:
|
1429 |
msgid ""
|
1430 |
"Please select the appropriate APIs to fit the privacy law / regulation in "
|
1431 |
"your country / region."
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: admin/includes/tab-settings.php:
|
1435 |
#, php-format
|
1436 |
msgid ""
|
1437 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1438 |
"2.0.0+%s."
|
1439 |
msgstr ""
|
1440 |
|
1441 |
-
#: admin/includes/tab-settings.php:
|
1442 |
#, php-format
|
1443 |
msgid ""
|
1444 |
"Please refer to \"%sLiving with cache plugin%s\" for compatibility with "
|
@@ -1545,16 +1605,16 @@ msgstr ""
|
|
1545 |
msgid "Please set the proper condition to record IP address in cache."
|
1546 |
msgstr ""
|
1547 |
|
1548 |
-
#: classes/class-ip-geo-block-cron.php:
|
1549 |
#, php-format
|
1550 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1551 |
msgstr ""
|
1552 |
|
1553 |
-
#: classes/class-ip-geo-block-cron.php:
|
1554 |
msgid "Your database file is up-to-date."
|
1555 |
msgstr ""
|
1556 |
|
1557 |
-
#: classes/class-ip-geo-block-cron.php:
|
1558 |
msgid "gz or zip is not supported on your system."
|
1559 |
msgstr ""
|
1560 |
|
@@ -1590,12 +1650,19 @@ msgid ""
|
|
1590 |
"again."
|
1591 |
msgstr ""
|
1592 |
|
1593 |
-
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:
|
1594 |
-
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:
|
1595 |
-
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:
|
1596 |
msgid "Database file does not exist."
|
1597 |
msgstr ""
|
1598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1599 |
#: wp-content/mu-plugins/ip-geo-block-mu.php:72
|
1600 |
#, php-format
|
1601 |
msgid ""
|
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.17\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ip-geo-block\n"
|
7 |
+
"POT-Creation-Date: 2018-12-03 23:01+0900\n"
|
8 |
+
"PO-Revision-Date: 2018-12-03 23:02+0900\n"
|
9 |
"Last-Translator: tokkonopapa <tokkonopapa@yahoo.com>\n"
|
10 |
"Language-Team: \n"
|
11 |
"Language: en\n"
|
26 |
"posted from outside your nation, and also prevents zero-day exploit."
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: admin/class-ip-geo-block-admin.php:296
|
30 |
msgid "Are you sure ?"
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: admin/class-ip-geo-block-admin.php:297
|
34 |
+
#: admin/class-ip-geo-block-admin.php:791
|
35 |
msgid "Open a new window"
|
36 |
msgstr ""
|
37 |
|
38 |
+
#: admin/class-ip-geo-block-admin.php:298 admin/includes/tab-settings.php:1528
|
39 |
msgid "Generate new link"
|
40 |
msgstr ""
|
41 |
|
42 |
+
#: admin/class-ip-geo-block-admin.php:299 admin/includes/tab-settings.php:1529
|
43 |
msgid "Delete current link"
|
44 |
msgstr ""
|
45 |
|
46 |
+
#: admin/class-ip-geo-block-admin.php:300
|
47 |
msgid ""
|
48 |
"Please add the following link to favorites / bookmarks in your browser : "
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: admin/class-ip-geo-block-admin.php:301
|
52 |
msgid "ajax for logged-in user"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: admin/class-ip-geo-block-admin.php:302
|
56 |
msgid "ajax for non logged-in user"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: admin/class-ip-geo-block-admin.php:303
|
60 |
#, php-format
|
61 |
msgid "[Found: %d]"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: admin/class-ip-geo-block-admin.php:304
|
65 |
#, php-format
|
66 |
msgid "Find and verify `%s` on “Logs” tab."
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: admin/class-ip-geo-block-admin.php:305
|
70 |
msgid "This feature is available with HTML5 compliant browsers."
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: admin/class-ip-geo-block-admin.php:306
|
74 |
msgid "The selected row cannot be found in the table."
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: admin/class-ip-geo-block-admin.php:307
|
78 |
+
#: admin/class-ip-geo-block-admin.php:1694
|
79 |
#, php-format
|
80 |
msgid "An error occurred while executing the ajax command `%s`."
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: admin/class-ip-geo-block-admin.php:311
|
84 |
msgid "No data available in table"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: admin/class-ip-geo-block-admin.php:312
|
88 |
msgid "No matching records found"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: admin/class-ip-geo-block-admin.php:313
|
92 |
#: admin/includes/class-admin-ajax.php:107
|
93 |
#: admin/includes/class-admin-ajax.php:240
|
94 |
#: admin/includes/tab-geolocation.php:74
|
95 |
msgid "IP address"
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: admin/class-ip-geo-block-admin.php:314
|
99 |
#: admin/includes/class-admin-ajax.php:108
|
100 |
#: admin/includes/class-admin-ajax.php:241
|
101 |
msgid "Code"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: admin/class-ip-geo-block-admin.php:315
|
105 |
#: admin/includes/class-admin-ajax.php:109
|
106 |
#: admin/includes/class-admin-ajax.php:242
|
107 |
msgid "ASN"
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: admin/class-ip-geo-block-admin.php:316
|
111 |
#: admin/includes/class-admin-ajax.php:243
|
112 |
msgid "Host name"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: admin/class-ip-geo-block-admin.php:317
|
116 |
#: admin/includes/class-admin-ajax.php:110
|
117 |
#: admin/includes/class-admin-ajax.php:244
|
118 |
msgid "Target"
|
119 |
msgstr ""
|
120 |
|
121 |
+
#: admin/class-ip-geo-block-admin.php:318
|
122 |
#: admin/includes/class-admin-ajax.php:245
|
123 |
msgid "Failure / Total"
|
124 |
msgstr ""
|
125 |
|
126 |
+
#: admin/class-ip-geo-block-admin.php:319
|
127 |
#: admin/includes/class-admin-ajax.php:246
|
128 |
msgid "Elapsed[sec]"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: admin/class-ip-geo-block-admin.php:320
|
132 |
#: admin/includes/class-admin-ajax.php:106
|
133 |
msgid "Time"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: admin/class-ip-geo-block-admin.php:321
|
137 |
#: admin/includes/class-admin-ajax.php:111
|
138 |
msgid "Result"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: admin/class-ip-geo-block-admin.php:322
|
142 |
#: admin/includes/class-admin-ajax.php:112
|
143 |
msgid "Request"
|
144 |
msgstr ""
|
145 |
|
146 |
+
#: admin/class-ip-geo-block-admin.php:323
|
147 |
#: admin/includes/class-admin-ajax.php:113
|
148 |
msgid "User agent"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: admin/class-ip-geo-block-admin.php:324
|
152 |
#: admin/includes/class-admin-ajax.php:114
|
153 |
msgid "HTTP headers"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: admin/class-ip-geo-block-admin.php:325
|
157 |
#: admin/includes/class-admin-ajax.php:115
|
158 |
msgid "$_POST data"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: admin/class-ip-geo-block-admin.php:351
|
162 |
msgid "Contribute on GitHub"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: admin/class-ip-geo-block-admin.php:365
|
166 |
+
#: admin/class-ip-geo-block-admin.php:491
|
167 |
+
#: admin/class-ip-geo-block-admin.php:732
|
168 |
+
#: admin/class-ip-geo-block-admin.php:752
|
169 |
+
#: admin/class-ip-geo-block-admin.php:768
|
170 |
msgid "Settings"
|
171 |
msgstr ""
|
172 |
|
173 |
+
#: admin/class-ip-geo-block-admin.php:459
|
174 |
#: admin/class-ip-geo-block-admin.php:460
|
175 |
+
#: admin/class-ip-geo-block-admin.php:470
|
176 |
#: admin/class-ip-geo-block-admin.php:471
|
177 |
+
#: admin/class-ip-geo-block-admin.php:480
|
178 |
+
#: admin/class-ip-geo-block-admin.php:490
|
|
|
179 |
msgid "IP Geo Block"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: admin/class-ip-geo-block-admin.php:481
|
183 |
+
#: admin/class-ip-geo-block-admin.php:731
|
184 |
+
#: admin/class-ip-geo-block-admin.php:749
|
185 |
+
#: admin/class-ip-geo-block-admin.php:766
|
186 |
msgid "Sites list"
|
187 |
msgstr ""
|
188 |
|
189 |
+
#: admin/class-ip-geo-block-admin.php:521
|
190 |
msgid "You need WordPress 3.7+."
|
191 |
msgstr ""
|
192 |
|
193 |
+
#: admin/class-ip-geo-block-admin.php:525
|
194 |
#, php-format
|
195 |
msgid ""
|
196 |
"Can not load Geolocation API libraries from <code>%s</code>. It seems to "
|
199 |
"contents of tokkonopapa/WordPress-IP-Geo-API as a zip file\">ZIP file</a> "
|
200 |
"from <a rel=\"noreferrer\" href=\"https://github.com/tokkonopapa/WordPress-"
|
201 |
"IP-Geo-API\" title=\"tokkonopapa/WordPress-IP-Geo-API - GitHub\">WordPress-"
|
202 |
+
"IP-Geo-API</a>. Try to deactivate IP Geo Block once and activate it again, "
|
203 |
+
"or install <code>ip-geo-api</code> with write permission according to <a rel="
|
204 |
+
"\"noreferrer\" href=\"https://www.ipgeoblock.com/codex/how-to-fix-permission-"
|
205 |
+
"troubles.html\" title=\"How can I fix permission troubles? | IP Geo Block"
|
206 |
+
"\">this instruction</a>."
|
207 |
msgstr ""
|
208 |
|
209 |
+
#: admin/class-ip-geo-block-admin.php:534
|
210 |
#, php-format
|
211 |
msgid ""
|
212 |
"You should select at least one API at <a href=\"%s\">Geolocation API "
|
214 |
"expires."
|
215 |
msgstr ""
|
216 |
|
217 |
+
#: admin/class-ip-geo-block-admin.php:543
|
218 |
#, php-format
|
219 |
msgid ""
|
220 |
"You should select at least one API for local database at <a href=\"%s"
|
222 |
"slow down the site."
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: admin/class-ip-geo-block-admin.php:554
|
226 |
#, php-format
|
227 |
msgid ""
|
228 |
"Now downloading geolocation databases in background. After a little while, "
|
230 |
"strong>” at <a href=\"%s\">Validation rules and behavior</a>."
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: admin/class-ip-geo-block-admin.php:560
|
234 |
#, php-format
|
235 |
msgid ""
|
236 |
"The “<strong>Matching rule</strong>” is not set properly. Please "
|
237 |
"confirm it at <a href=\"%s\">Validation rules and behavior</a>."
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: admin/class-ip-geo-block-admin.php:569
|
241 |
msgid "Local database and matching rule have been updated."
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: admin/class-ip-geo-block-admin.php:580
|
245 |
msgid ""
|
246 |
"Once you logout, you will be unable to login again because the number of "
|
247 |
"login attempts reaches the limit."
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: admin/class-ip-geo-block-admin.php:582
|
251 |
#, php-format
|
252 |
msgid ""
|
253 |
"Please remove your IP address in “%1$sStatistics in IP address cache"
|
255 |
"yourself out."
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: admin/class-ip-geo-block-admin.php:593
|
259 |
msgid ""
|
260 |
"Once you logout, you will be unable to login again because your country code "
|
261 |
"or IP address is in the blacklist."
|
262 |
msgstr ""
|
263 |
|
264 |
+
#: admin/class-ip-geo-block-admin.php:594
|
265 |
msgid ""
|
266 |
"Once you logout, you will be unable to login again because your country code "
|
267 |
"or IP address is not in the whitelist."
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: admin/class-ip-geo-block-admin.php:598
|
271 |
#, php-format
|
272 |
msgid "Please check your “%sValidation rules and behavior%s”."
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: admin/class-ip-geo-block-admin.php:602
|
276 |
#, php-format
|
277 |
msgid ""
|
278 |
"Please confirm your local geolocation database files exist at “%sLocal "
|
280 |
"“%sStatistics in cache%s” section."
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: admin/class-ip-geo-block-admin.php:616
|
284 |
#, php-format
|
285 |
msgid ""
|
286 |
"Emergency login link is outdated. Please delete it once and generate again "
|
288 |
"favorites / bookmarks in your browser."
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: admin/class-ip-geo-block-admin.php:625
|
292 |
msgid ""
|
293 |
"“mu-plugins” (ip-geo-block-mu.php) at “Validation "
|
294 |
"timing” is imcompatible with <strong>IP Geo Allow</strong>. Please "
|
295 |
"select “init” action hook."
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: admin/class-ip-geo-block-admin.php:733
|
299 |
msgid "Statistics"
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: admin/class-ip-geo-block-admin.php:734
|
303 |
msgid "Logs"
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: admin/class-ip-geo-block-admin.php:735
|
307 |
msgid "Search"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: admin/class-ip-geo-block-admin.php:736
|
311 |
msgid "Attribution"
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: admin/class-ip-geo-block-admin.php:784
|
|
|
|
|
|
|
|
|
|
|
315 |
msgid "Toggle all"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: admin/class-ip-geo-block-admin.php:787
|
319 |
msgid ""
|
320 |
"Independent of “Privacy and record settings”, you can see all "
|
321 |
"the requests validated by this plugin in almost real time."
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: admin/class-ip-geo-block-admin.php:787 admin/includes/tab-accesslog.php:39
|
325 |
msgid "Live update"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: admin/class-ip-geo-block-admin.php:791
|
329 |
msgid "Open a new window on clicking the link in the chart."
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: admin/class-ip-geo-block-admin.php:815
|
333 |
msgid "Thanks for providing these great services for free."
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: admin/class-ip-geo-block-admin.php:816
|
337 |
msgid ""
|
338 |
"(Most browsers will redirect you to each site <a href=\"https://www."
|
339 |
"ipgeoblock.com/etc/referer.html\" title=\"Referer Checker\">without referrer "
|
340 |
"when you click the link</a>.)"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: admin/class-ip-geo-block-admin.php:821
|
344 |
msgid "Back to top"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: admin/class-ip-geo-block-admin.php:913
|
348 |
msgid "Enable"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: admin/class-ip-geo-block-admin.php:928
|
352 |
msgid "Select one"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: admin/class-ip-geo-block-admin.php:1363
|
356 |
msgid "You do not have sufficient permissions to access this page."
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: admin/class-ip-geo-block-admin.php:1390
|
360 |
#: admin/includes/class-admin-rewrite.php:194
|
361 |
+
#: classes/class-ip-geo-block-cron.php:228
|
362 |
+
#: classes/class-ip-geo-block-cron.php:332
|
363 |
+
#: classes/class-ip-geo-block-cron.php:410
|
364 |
+
#: classes/class-ip-geo-block-opts.php:482
|
365 |
#, php-format
|
366 |
msgid "Unable to write <code>%s</code>. Please check the permission."
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: admin/class-ip-geo-block-admin.php:1424
|
370 |
msgid "Settings saved."
|
371 |
msgstr ""
|
372 |
|
373 |
+
#: admin/class-ip-geo-block-admin.php:1529
|
374 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:91
|
375 |
+
msgid ""
|
376 |
+
"<span title=\"Show only passed entries whose country codes are in Whitelist."
|
377 |
+
"\">Passed in Whitelist</span>"
|
378 |
+
msgstr ""
|
379 |
+
|
380 |
+
#: admin/class-ip-geo-block-admin.php:1530
|
381 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:92
|
382 |
+
msgid ""
|
383 |
+
"<span title=\"Show only passed entries whose country codes are in Blacklist."
|
384 |
+
"\">Passed in Blacklist</span>"
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: admin/class-ip-geo-block-admin.php:1531
|
388 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:93
|
389 |
+
msgid ""
|
390 |
+
"<span title=\"Show only passed entries whose country codes are not in either "
|
391 |
+
"list.\">Passed not in List</span>"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: admin/class-ip-geo-block-admin.php:1532
|
395 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:94
|
396 |
+
msgid ""
|
397 |
+
"<span title=\"Show only blocked entries whose country codes are in Whitelist."
|
398 |
+
"\">Blocked in Whitelist</span>"
|
399 |
+
msgstr ""
|
400 |
+
|
401 |
+
#: admin/class-ip-geo-block-admin.php:1533
|
402 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:95
|
403 |
+
msgid ""
|
404 |
+
"<span title=\"Show only blocked entries whose country codes are in Blacklist."
|
405 |
+
"\">Blocked in Blacklist</span>"
|
406 |
+
msgstr ""
|
407 |
+
|
408 |
+
#: admin/class-ip-geo-block-admin.php:1534
|
409 |
+
#: wp-content/ip-geo-api/drop-in-admin-sample.php:96
|
410 |
+
msgid ""
|
411 |
+
"<span title=\"Show only blocked entries whose country codes are not in "
|
412 |
+
"either list.\">Blocked not in List</span>"
|
413 |
+
msgstr ""
|
414 |
+
|
415 |
#: admin/includes/class-admin-ajax.php:72
|
416 |
#: admin/includes/class-admin-ajax.php:75 admin/includes/tab-settings.php:84
|
417 |
#: admin/includes/tab-settings.php:103
|
430 |
msgstr ""
|
431 |
|
432 |
#: admin/includes/class-admin-rewrite.php:168
|
433 |
+
#: classes/class-ip-geo-block-cron.php:223
|
434 |
+
#: classes/class-ip-geo-block-cron.php:405
|
435 |
#, php-format
|
436 |
msgid "Unable to read <code>%s</code>. Please check the permission."
|
437 |
msgstr ""
|
455 |
msgid "Help"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: admin/includes/tab-accesslog.php:55 admin/includes/tab-settings.php:450
|
459 |
msgid "Comment post"
|
460 |
msgstr ""
|
461 |
|
462 |
+
#: admin/includes/tab-accesslog.php:56 admin/includes/tab-settings.php:451
|
463 |
msgid "XML-RPC"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: admin/includes/tab-accesslog.php:57 admin/includes/tab-settings.php:452
|
467 |
msgid "Login form"
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: admin/includes/tab-accesslog.php:58 admin/includes/tab-settings.php:453
|
471 |
msgid "Admin area"
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: admin/includes/tab-accesslog.php:59 admin/includes/tab-settings.php:455
|
475 |
msgid "Public facing pages"
|
476 |
msgstr ""
|
477 |
|
491 |
msgid "Reset"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: admin/includes/tab-accesslog.php:117
|
495 |
msgid "Preset filters"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: admin/includes/tab-accesslog.php:133 admin/includes/tab-statistics.php:238
|
499 |
msgid "Bulk action"
|
500 |
msgstr ""
|
501 |
|
502 |
+
#: admin/includes/tab-accesslog.php:144 admin/includes/tab-statistics.php:249
|
503 |
msgid "Remove entries by IP address"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: admin/includes/tab-accesslog.php:145 admin/includes/tab-statistics.php:250
|
507 |
msgid "Add IP address to “Whitelist”"
|
508 |
msgstr ""
|
509 |
|
510 |
+
#: admin/includes/tab-accesslog.php:146 admin/includes/tab-statistics.php:251
|
511 |
msgid "Add IP address to “Blacklist”"
|
512 |
msgstr ""
|
513 |
|
514 |
+
#: admin/includes/tab-accesslog.php:147 admin/includes/tab-statistics.php:252
|
515 |
msgid "Add AS number to “Whitelist”"
|
516 |
msgstr ""
|
517 |
|
518 |
+
#: admin/includes/tab-accesslog.php:148 admin/includes/tab-statistics.php:253
|
519 |
msgid "Add AS number to “Blacklist”"
|
520 |
msgstr ""
|
521 |
|
522 |
+
#: admin/includes/tab-accesslog.php:150 admin/includes/tab-network.php:56
|
523 |
#: admin/includes/tab-statistics.php:255
|
524 |
msgid "Apply"
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: admin/includes/tab-accesslog.php:157 admin/includes/tab-statistics.php:191
|
528 |
msgid "Clear logs"
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: admin/includes/tab-accesslog.php:165 admin/includes/tab-statistics.php:167
|
532 |
#: admin/includes/tab-statistics.php:199 admin/includes/tab-statistics.php:269
|
533 |
msgid "Clear all"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: admin/includes/tab-accesslog.php:174
|
537 |
msgid "Export logs"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: admin/includes/tab-accesslog.php:180 admin/includes/tab-settings.php:1560
|
541 |
#: admin/includes/tab-statistics.php:283
|
542 |
msgid "Export to the local file"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: admin/includes/tab-accesslog.php:180 admin/includes/tab-statistics.php:283
|
546 |
msgid "Export csv"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: admin/includes/tab-accesslog.php:206 admin/includes/tab-network.php:112
|
550 |
#: admin/includes/tab-statistics.php:410
|
551 |
#, php-format
|
552 |
msgid "[ %sRecord “Validation logs”%s ] is disabled."
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: admin/includes/tab-accesslog.php:207 admin/includes/tab-network.php:113
|
556 |
#: admin/includes/tab-statistics.php:411
|
557 |
msgid ""
|
558 |
"Please set the proper condition to record and analyze the validation logs."
|
570 |
msgid "Geolocation API"
|
571 |
msgstr ""
|
572 |
|
573 |
+
#: admin/includes/tab-geolocation.php:89 admin/includes/tab-settings.php:1105
|
574 |
msgid ""
|
575 |
"<dfn title=\"IP address is always encrypted on recording in Cache and Logs. "
|
576 |
"Moreover, this option replaces the end of IP address with “***” "
|
704 |
"country code</dfn>"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: admin/includes/tab-settings.php:125 admin/includes/tab-settings.php:827
|
708 |
msgid "Matching rule"
|
709 |
msgstr ""
|
710 |
|
800 |
"this validation.\">Prevent malicious file uploading</dfn>"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: admin/includes/tab-settings.php:304 admin/includes/tab-settings.php:516
|
804 |
+
#: admin/includes/tab-settings.php:661 admin/includes/tab-settings.php:1177
|
805 |
msgid "Disable"
|
806 |
msgstr ""
|
807 |
|
813 |
msgid "Verify file extension only"
|
814 |
msgstr ""
|
815 |
|
816 |
+
#: admin/includes/tab-settings.php:314
|
817 |
+
msgid ""
|
818 |
+
"<dfn title=\"Specify the table names to be verified for single site. This "
|
819 |
+
"verification will be skipped if empty.\">pre_update_option</dfn>"
|
820 |
+
msgstr ""
|
821 |
+
|
822 |
+
#: admin/includes/tab-settings.php:316
|
823 |
+
msgid ""
|
824 |
+
"<dfn title=\"Specify the table names to be verified for multisite. This "
|
825 |
+
"verification will be skipped if empty.\">pre_update_site_option</dfn>"
|
826 |
+
msgstr ""
|
827 |
+
|
828 |
+
#: admin/includes/tab-settings.php:321
|
829 |
+
msgid ""
|
830 |
+
"<dfn title=\"It prevents to manipulate metadata in database without admin "
|
831 |
+
"privilege.\">Prevent metadata alteration</dfn>"
|
832 |
+
msgstr ""
|
833 |
+
|
834 |
+
#: admin/includes/tab-settings.php:337
|
835 |
#, php-format
|
836 |
msgid ""
|
837 |
"<dfn title=\"You can put your original 403.php and so on into your theme "
|
838 |
"directory.\">Response code</dfn> %s"
|
839 |
msgstr ""
|
840 |
|
841 |
+
#: admin/includes/tab-settings.php:366 admin/includes/tab-settings.php:910
|
842 |
msgid ""
|
843 |
"<dfn title=\"Specify the URL for response code 2xx and 3xx. If it is pointed "
|
844 |
"to a public facing page, visitors would not be blocked on the page to "
|
847 |
"\">Redirect URL</dfn>"
|
848 |
msgstr ""
|
849 |
|
850 |
+
#: admin/includes/tab-settings.php:383 admin/includes/tab-settings.php:928
|
851 |
msgid ""
|
852 |
"<dfn title=\"Specify the message for response code 4xx and 5xx.\">Response "
|
853 |
"message</dfn>"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: admin/includes/tab-settings.php:401
|
857 |
msgid "Select when to run the validation."
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: admin/includes/tab-settings.php:401
|
861 |
msgid "Validation timing"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: admin/includes/tab-settings.php:412
|
865 |
msgid "“init” action hook"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: admin/includes/tab-settings.php:413
|
869 |
msgid "“mu-plugins” (ip-geo-block-mu.php)"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: admin/includes/tab-settings.php:416
|
873 |
msgid ""
|
874 |
"Validate at “init” action hook in the same manner as typical "
|
875 |
"plugins."
|
876 |
msgstr ""
|
877 |
|
878 |
+
#: admin/includes/tab-settings.php:417
|
879 |
msgid ""
|
880 |
"Validate at an earlier phase than other typical plugins. It can reduce load "
|
881 |
"on server but has <a rel='noreferrer' href='https://www.ipgeoblock.com/codex/"
|
883 |
"restrictions</a>."
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: admin/includes/tab-settings.php:425
|
887 |
msgid ""
|
888 |
"It enables to simulate the validation rules without actual blocking in order "
|
889 |
"to check the behavior of this plugin. The results can be found on “"
|
890 |
"Logs” tab."
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: admin/includes/tab-settings.php:425
|
894 |
msgid "Simulation mode"
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: admin/includes/tab-settings.php:442
|
898 |
msgid "Back-end target settings"
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: admin/includes/tab-settings.php:448
|
902 |
#, php-format
|
903 |
msgid "<dfn title=\"It enables to validate requests to %s.\">%s</dfn>"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: admin/includes/tab-settings.php:454
|
907 |
msgid "Other areas"
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: admin/includes/tab-settings.php:455
|
911 |
msgid "public facing pages"
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: admin/includes/tab-settings.php:471 admin/includes/tab-settings.php:517
|
915 |
+
#: admin/includes/tab-settings.php:549 admin/includes/tab-settings.php:555
|
916 |
+
#: admin/includes/tab-settings.php:820
|
917 |
msgid "Block by country"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: admin/includes/tab-settings.php:481
|
921 |
msgid "The whole will be wrapped by <p> tag. Allowed tags: "
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: admin/includes/tab-settings.php:481
|
925 |
msgid "Message on comment form"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: admin/includes/tab-settings.php:494
|
929 |
msgid "None"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: admin/includes/tab-settings.php:495
|
933 |
msgid "Top"
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: admin/includes/tab-settings.php:496
|
937 |
msgid "Bottom"
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: admin/includes/tab-settings.php:518
|
941 |
msgid "Completely close"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: admin/includes/tab-settings.php:524
|
945 |
msgid "Action to login as a registered user."
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: admin/includes/tab-settings.php:524
|
949 |
msgid "Log in"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: admin/includes/tab-settings.php:525
|
953 |
msgid "Action to register new users."
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: admin/includes/tab-settings.php:525
|
957 |
msgid "Register"
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: admin/includes/tab-settings.php:526
|
961 |
msgid "Action to reset a password to create a new one."
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: admin/includes/tab-settings.php:526
|
965 |
msgid "Password Reset"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: admin/includes/tab-settings.php:527
|
969 |
msgid "Action to email a password to a registered user."
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: admin/includes/tab-settings.php:527
|
973 |
msgid "Lost Password"
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: admin/includes/tab-settings.php:528
|
977 |
msgid ""
|
978 |
"Action to show prompt to enter a password on password protected post and "
|
979 |
"page."
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: admin/includes/tab-settings.php:528
|
983 |
msgid "Password protected"
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: admin/includes/tab-settings.php:550
|
987 |
msgid ""
|
988 |
"<dfn title=\"Specify the individual action as a blocking target.\">Target "
|
989 |
"actions</dfn>"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: admin/includes/tab-settings.php:556
|
993 |
msgid "Prevent Zero-day Exploit"
|
994 |
msgstr ""
|
995 |
|
996 |
+
#: admin/includes/tab-settings.php:560
|
997 |
msgid ""
|
998 |
+
"It will block a request related to the services for both “non-logged "
|
999 |
+
"in user” and “logged-in user”."
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: admin/includes/tab-settings.php:561
|
1003 |
msgid ""
|
1004 |
"Regardless of the country code, it will block a malicious request related to "
|
1005 |
+
"the services only for “logged-in user”."
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: admin/includes/tab-settings.php:567
|
1009 |
msgid ""
|
1010 |
"This is applied to “XML-RPC” and “Login form” when "
|
1011 |
"“IP address cache” in “Privacy and record settings” "
|
1013 |
"cache."
|
1014 |
msgstr ""
|
1015 |
|
1016 |
+
#: admin/includes/tab-settings.php:567
|
1017 |
msgid "Max failed login attempts per IP address"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: admin/includes/tab-settings.php:608
|
1021 |
msgid "admin post for logged-in user"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
+
#: admin/includes/tab-settings.php:609
|
1025 |
msgid "admin post for non logged-in user"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
+
#: admin/includes/tab-settings.php:631
|
1029 |
msgid "Admin ajax/post"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
+
#: admin/includes/tab-settings.php:645
|
1033 |
msgid ""
|
1034 |
"Specify the action name (“action=…”) or the page name "
|
1035 |
"(“page=…”) to prevent unintended blocking caused by "
|
1037 |
"Zero-day Exploit” (for logged-in user)."
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: admin/includes/tab-settings.php:645 admin/includes/tab-settings.php:723
|
1041 |
+
#: admin/includes/tab-settings.php:783
|
1042 |
msgid "Exceptions"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: admin/includes/tab-settings.php:646
|
1046 |
msgid "Toggle with non logged-in user"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: admin/includes/tab-settings.php:649
|
1050 |
msgid "Candidate actions/pages"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: admin/includes/tab-settings.php:663
|
1054 |
#, php-format
|
1055 |
msgid ""
|
1056 |
"Regardless of the country code, it will block a malicious request to <code>"
|
1057 |
"%s⋯/*.php</code>."
|
1058 |
msgstr ""
|
1059 |
|
1060 |
+
#: admin/includes/tab-settings.php:664
|
1061 |
msgid ""
|
1062 |
"Select the item which causes unintended blocking in order to exclude from "
|
1063 |
"the validation target. Grayed item indicates “INACTIVE”."
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: admin/includes/tab-settings.php:665
|
1067 |
#, php-format
|
1068 |
msgid ""
|
1069 |
"It configures “%s” to validate a direct request to the PHP file "
|
1071 |
"hidden files beginning with a dot by the server's configuration."
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: admin/includes/tab-settings.php:666
|
1075 |
msgid "Sorry, but your server type is not supported."
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: admin/includes/tab-settings.php:667
|
1079 |
msgid ""
|
1080 |
"You need to click “Save Changes” button for imported settings to "
|
1081 |
"take effect."
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: admin/includes/tab-settings.php:702 admin/includes/tab-settings.php:762
|
1085 |
msgid "Force to load WP core"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
+
#: admin/includes/tab-settings.php:707
|
1089 |
msgid "Plugins area"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
+
#: admin/includes/tab-settings.php:767
|
1093 |
msgid "Themes area"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: admin/includes/tab-settings.php:802
|
1097 |
msgid "Front-end target settings"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
+
#: admin/includes/tab-settings.php:837
|
1101 |
msgid "Follow “Validation rules and behavior”"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
+
#: admin/includes/tab-settings.php:879
|
1105 |
#, php-format
|
1106 |
msgid ""
|
1107 |
"<dfn title=\"You can configure a different response code from the Back-end. "
|
1109 |
"\">Response code</dfn> %s"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
+
#: admin/includes/tab-settings.php:943
|
1113 |
msgid ""
|
1114 |
"<dfn title=\"Specify the individual page as a blocking target.\">Page</dfn>"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
+
#: admin/includes/tab-settings.php:955
|
1118 |
msgid ""
|
1119 |
"<dfn title=\"Specify the individual post type on a single page as a blocking "
|
1120 |
"target.\">Post type</dfn>"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: admin/includes/tab-settings.php:967
|
1124 |
msgid ""
|
1125 |
"<dfn title=\"Specify the individual category on a single page or archive "
|
1126 |
"page as a blocking target.\">Category</dfn>"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
#: admin/includes/tab-settings.php:979
|
1130 |
msgid ""
|
1131 |
"<dfn title=\"Specify the individual tag on a single page or archive page as "
|
1132 |
"a blocking target.\">Tag</dfn>"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
#: admin/includes/tab-settings.php:993
|
1136 |
msgid "Specify the validation target on front-end."
|
1137 |
msgstr ""
|
1138 |
|
1139 |
+
#: admin/includes/tab-settings.php:993
|
1140 |
msgid "Validation target"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: admin/includes/tab-settings.php:1004
|
1144 |
msgid "All requests"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: admin/includes/tab-settings.php:1005
|
1148 |
msgid "Specify the targets"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
+
#: admin/includes/tab-settings.php:1008
|
1152 |
msgid ""
|
1153 |
"Notice that “Validation timing” is deferred till “"
|
1154 |
"wp” action hook. It means that this feature would not be compatible "
|
1155 |
"with any page caching."
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: admin/includes/tab-settings.php:1018
|
1159 |
msgid "Specify the name of actions as exception that is invariably blocked."
|
1160 |
msgstr ""
|
1161 |
|
1162 |
+
#: admin/includes/tab-settings.php:1018
|
1163 |
msgid "Excluded actions"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
+
#: admin/includes/tab-settings.php:1034
|
1167 |
msgid ""
|
1168 |
"<dfn title=\"Specify the frequency of request for certain period of time."
|
1169 |
"\">Blocking condition</dfn>"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
+
#: admin/includes/tab-settings.php:1036
|
1173 |
#, php-format
|
1174 |
msgid "More than %1$s page view (PV) in %2$s seconds"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
+
#: admin/includes/tab-settings.php:1044
|
1178 |
msgid ""
|
1179 |
"<dfn title=\"It will validate the frequency of request.\">Block badly-"
|
1180 |
"behaved bots and crawlers</dfn>"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
+
#: admin/includes/tab-settings.php:1061
|
1184 |
msgid ""
|
1185 |
"A part of user agent string and a qualification connected with a separator "
|
1186 |
"that indicates an applicable rule and can be “:” (pass) or "
|
1190 |
"qualification”."
|
1191 |
msgstr ""
|
1192 |
|
1193 |
+
#: admin/includes/tab-settings.php:1061
|
1194 |
msgid "UA string and qualification"
|
1195 |
msgstr ""
|
1196 |
|
1197 |
+
#: admin/includes/tab-settings.php:1078
|
1198 |
msgid ""
|
1199 |
"It enables to verify the host by reverse DNS lookup which would spend some "
|
1200 |
"server resources. If it is disabled, “HOST” and “"
|
1202 |
"return “true”."
|
1203 |
msgstr ""
|
1204 |
|
1205 |
+
#: admin/includes/tab-settings.php:1078
|
1206 |
msgid "Reverse DNS lookup"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
+
#: admin/includes/tab-settings.php:1097
|
1210 |
msgid "Privacy and record settings"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: admin/includes/tab-settings.php:1120
|
1214 |
msgid ""
|
1215 |
"<dfn title=\"This option restricts not to send IP address to the external "
|
1216 |
"Geolocation APIs.\">Do not send IP address to external APIs</dfn>"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
+
#: admin/includes/tab-settings.php:1135
|
1220 |
msgid ""
|
1221 |
"<dfn title=\"This option enables to record the IP address, country code and "
|
1222 |
"failure counter of login attempts into the cache on database to minimize the "
|
1223 |
"impact on site speed.\">Record “IP address cache”</dfn>"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: admin/includes/tab-settings.php:1150
|
1227 |
msgid ""
|
1228 |
"<dfn title=\"If user authentication fails consecutively beyond “Max "
|
1229 |
"number of failed login attempts per IP address”, subsequent login will "
|
1231 |
"dfn>"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: admin/includes/tab-settings.php:1166
|
1235 |
msgid ""
|
1236 |
"<dfn title=\"This option enables to record the validation logs including IP "
|
1237 |
"addresses.\">Record “Validation logs”</dfn>"
|
1238 |
msgstr ""
|
1239 |
|
1240 |
+
#: admin/includes/tab-settings.php:1178
|
1241 |
msgid "When blocked"
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: admin/includes/tab-settings.php:1179
|
1245 |
msgid "When passed"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: admin/includes/tab-settings.php:1180
|
1249 |
msgid "When “blocked” or “passed (not in whitelist)”"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: admin/includes/tab-settings.php:1181
|
1253 |
msgid "Unauthenticated visitor"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: admin/includes/tab-settings.php:1182
|
1257 |
msgid "Authenticated user"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: admin/includes/tab-settings.php:1183
|
1261 |
msgid "All the validation"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: admin/includes/tab-settings.php:1191
|
1265 |
#, php-format
|
1266 |
msgid ""
|
1267 |
"<dfn title=\"The maximum number of entries in the logs is also limited to %d."
|
1268 |
"\">Expiration time [days] for each entry</dfn>"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
+
#: admin/includes/tab-settings.php:1208
|
1272 |
msgid ""
|
1273 |
"<dfn title=\"e.g. action, comment, log, pwd, FILES\">$_POST key to record "
|
1274 |
"with value</dfn>"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
+
#: admin/includes/tab-settings.php:1227
|
1278 |
msgid "Maximum entries in “Logs”"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: admin/includes/tab-settings.php:1244
|
1282 |
msgid ""
|
1283 |
"<dfn title=\"Select SQLite database source.\">Database source of SQLite for "
|
1284 |
"“Live update”</dfn>"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: admin/includes/tab-settings.php:1257
|
1288 |
msgid "Ordinary file"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: admin/includes/tab-settings.php:1258
|
1292 |
msgid "In-Memory"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
+
#: admin/includes/tab-settings.php:1261
|
1296 |
msgid "PDO_SQLITE driver not available"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: admin/includes/tab-settings.php:1262
|
1300 |
msgid ""
|
1301 |
"It takes a few tens of milliseconds as overhead. It can be safely used "
|
1302 |
"without conflict with other plugins."
|
1303 |
msgstr ""
|
1304 |
|
1305 |
+
#: admin/includes/tab-settings.php:1263
|
1306 |
msgid ""
|
1307 |
"It takes a few milliseconds as overhead. There is a possibility of conflict "
|
1308 |
"with other plugins using this method."
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: admin/includes/tab-settings.php:1271
|
1312 |
msgid "Reset database source of “Live update”"
|
1313 |
msgstr ""
|
1314 |
|
1315 |
+
#: admin/includes/tab-settings.php:1279
|
1316 |
msgid "Reset now"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
+
#: admin/includes/tab-settings.php:1288 admin/includes/tab-settings.php:1449
|
1320 |
msgid ""
|
1321 |
"Task could not be found in WP-Cron. Please try to deactivate this plugin "
|
1322 |
"once and activate again."
|
1323 |
msgstr ""
|
1324 |
|
1325 |
+
#: admin/includes/tab-settings.php:1293
|
1326 |
msgid ""
|
1327 |
"<dfn title=\"This option enables to schedule the WP-Cron event to remove the "
|
1328 |
"expired entries from “IP address cache” and “Validation "
|
1329 |
"logs”.\">Interval [sec] to cleanup expired entries of IP address</dfn>"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: admin/includes/tab-settings.php:1302 admin/includes/tab-settings.php:1465
|
1333 |
#, php-format
|
1334 |
msgid "Next schedule: %s"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
+
#: admin/includes/tab-settings.php:1309
|
1338 |
msgid ""
|
1339 |
"<dfn title=\"This option enables to record the number blocked countries and "
|
1340 |
"the number of blocked requests per day.\">Record “Statistics of "
|
1341 |
"validation”</dfn>"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: admin/includes/tab-settings.php:1324
|
1345 |
msgid "Maximum period for “Statistics” [days]"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
+
#: admin/includes/tab-settings.php:1342
|
1349 |
msgid "Remove all settings and records at uninstallation"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: admin/includes/tab-settings.php:1359
|
1353 |
msgid "Geolocation API settings"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: admin/includes/tab-settings.php:1380
|
1357 |
msgid ""
|
1358 |
"<dfn title=\"IP address cache and local databases are scanned at the top "
|
1359 |
"priority.\">API selection and key settings</dfn>"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: admin/includes/tab-settings.php:1399
|
1363 |
msgid "Timeout for network API [sec]"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: admin/includes/tab-settings.php:1417
|
1367 |
msgid "Local database settings"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: admin/includes/tab-settings.php:1431
|
1371 |
msgid "database"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: admin/includes/tab-settings.php:1432 classes/class-ip-geo-block-cron.php:434
|
1375 |
#, php-format
|
1376 |
msgid "Last update: %s"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: admin/includes/tab-settings.php:1454
|
1380 |
msgid "Auto updating (once a month)"
|
1381 |
msgstr ""
|
1382 |
|
1383 |
+
#: admin/includes/tab-settings.php:1472
|
1384 |
msgid "Download database"
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: admin/includes/tab-settings.php:1480
|
1388 |
msgid "Download now"
|
1389 |
msgstr ""
|
1390 |
|
1391 |
+
#: admin/includes/tab-settings.php:1491
|
1392 |
msgid "Plugin settings"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
+
#: admin/includes/tab-settings.php:1503
|
1396 |
msgid ""
|
1397 |
"<dfn title=\"Synchronize all settings over the network wide.\">Network wide "
|
1398 |
"settings</dfn>"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: admin/includes/tab-settings.php:1521
|
1402 |
msgid ""
|
1403 |
"<dfn title=\"You can access to the login form with a specific key at "
|
1404 |
"emergency. Please add the generated link to favorites / bookmarks in your "
|
1406 |
"dfn>"
|
1407 |
msgstr ""
|
1408 |
|
1409 |
+
#: admin/includes/tab-settings.php:1537
|
1410 |
msgid ""
|
1411 |
"<dfn title=\"Valid key for Google Maps JavaScript API. Maps Embed API in "
|
1412 |
"iframe can be available without key in case it's empty.\">Google Maps API "
|
1413 |
"key</dfn>"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: admin/includes/tab-settings.php:1553
|
1417 |
msgid "Export / Import settings"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: admin/includes/tab-settings.php:1560
|
1421 |
msgid "Export settings"
|
1422 |
msgstr ""
|
1423 |
|
1424 |
+
#: admin/includes/tab-settings.php:1561
|
1425 |
msgid "Import from the local file"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
+
#: admin/includes/tab-settings.php:1561
|
1429 |
msgid "Import settings"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: admin/includes/tab-settings.php:1569
|
1433 |
msgid "Import pre-defined settings"
|
1434 |
msgstr ""
|
1435 |
|
1436 |
+
#: admin/includes/tab-settings.php:1576
|
1437 |
msgid ""
|
1438 |
"Import the default settings to revert to the “Right after "
|
1439 |
"installing” state"
|
1440 |
msgstr ""
|
1441 |
|
1442 |
+
#: admin/includes/tab-settings.php:1576
|
1443 |
msgid "Default settings"
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
#: admin/includes/tab-settings.php:1577
|
1447 |
msgid ""
|
1448 |
"Import the preferred settings mainly by enabling Zero-day Exploit Prevention "
|
1449 |
"for the “Back-end target settings”"
|
1450 |
msgstr ""
|
1451 |
|
1452 |
+
#: admin/includes/tab-settings.php:1577
|
1453 |
msgid "Best for Back-end"
|
1454 |
msgstr ""
|
1455 |
|
1456 |
+
#: admin/includes/tab-settings.php:1586
|
1457 |
msgid "Diagnose all DB tables"
|
1458 |
msgstr ""
|
1459 |
|
1460 |
+
#: admin/includes/tab-settings.php:1594
|
1461 |
msgid "Diagnose now"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
#: admin/includes/tab-settings.php:1603
|
1465 |
msgid ""
|
1466 |
"<dfn title=\"When you have some unexpected blocking experiences, please "
|
1467 |
"press the button to find the blocked requests at the end of dumped "
|
1471 |
"\">support forum</a> ]"
|
1472 |
msgstr ""
|
1473 |
|
1474 |
+
#: admin/includes/tab-settings.php:1610
|
1475 |
msgid "Please copy & paste when submitting your issue to support forum"
|
1476 |
msgstr ""
|
1477 |
|
1478 |
+
#: admin/includes/tab-settings.php:1610
|
1479 |
msgid "Show information"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
+
#: admin/includes/tab-settings.php:1627
|
1483 |
msgid ""
|
1484 |
"While Geolite2 / Maxmind and IP2Location will fetch the local databases, "
|
1485 |
"others will pass an IP address to the 3rd parties' API via HTTP."
|
1486 |
msgstr ""
|
1487 |
|
1488 |
+
#: admin/includes/tab-settings.php:1628
|
1489 |
msgid ""
|
1490 |
"Please select the appropriate APIs to fit the privacy law / regulation in "
|
1491 |
"your country / region."
|
1492 |
msgstr ""
|
1493 |
|
1494 |
+
#: admin/includes/tab-settings.php:1637
|
1495 |
#, php-format
|
1496 |
msgid ""
|
1497 |
"Maxmind GeoLite2 databases and APIs need PHP version 5.4.0+ and %sPECL phar "
|
1498 |
"2.0.0+%s."
|
1499 |
msgstr ""
|
1500 |
|
1501 |
+
#: admin/includes/tab-settings.php:1645
|
1502 |
#, php-format
|
1503 |
msgid ""
|
1504 |
"Please refer to \"%sLiving with cache plugin%s\" for compatibility with "
|
1605 |
msgid "Please set the proper condition to record IP address in cache."
|
1606 |
msgstr ""
|
1607 |
|
1608 |
+
#: classes/class-ip-geo-block-cron.php:233
|
1609 |
#, php-format
|
1610 |
msgid "Can't lock <code>%s</code>. Please try again after a while."
|
1611 |
msgstr ""
|
1612 |
|
1613 |
+
#: classes/class-ip-geo-block-cron.php:312
|
1614 |
msgid "Your database file is up-to-date."
|
1615 |
msgstr ""
|
1616 |
|
1617 |
+
#: classes/class-ip-geo-block-cron.php:415
|
1618 |
msgid "gz or zip is not supported on your system."
|
1619 |
msgstr ""
|
1620 |
|
1650 |
"again."
|
1651 |
msgstr ""
|
1652 |
|
1653 |
+
#: wp-content/ip-geo-api/ip2location/class-ip2location.php:154
|
1654 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php:160
|
1655 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:252
|
1656 |
msgid "Database file does not exist."
|
1657 |
msgstr ""
|
1658 |
|
1659 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:158
|
1660 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:179
|
1661 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:207
|
1662 |
+
#: wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php:228
|
1663 |
+
msgid "Update service has already stopped."
|
1664 |
+
msgstr ""
|
1665 |
+
|
1666 |
#: wp-content/mu-plugins/ip-geo-block-mu.php:72
|
1667 |
#, php-format
|
1668 |
msgid ""
|
uninstall.php
CHANGED
@@ -27,6 +27,7 @@ class IP_Geo_Block_Uninstall {
|
|
27 |
*/
|
28 |
private static function delete_blog_options() {
|
29 |
delete_option( IP_Geo_Block::OPTION_NAME ); // @since 1.2.0
|
|
|
30 |
IP_Geo_Block_Logs::delete_tables();
|
31 |
}
|
32 |
|
27 |
*/
|
28 |
private static function delete_blog_options() {
|
29 |
delete_option( IP_Geo_Block::OPTION_NAME ); // @since 1.2.0
|
30 |
+
delete_option( IP_Geo_Block::OPTION_META ); // @since 3.0.17
|
31 |
IP_Geo_Block_Logs::delete_tables();
|
32 |
}
|
33 |
|
wp-content/ip-geo-api/drop-in-admin-sample.php
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Drop-in for IP Geo Block custom filters for admin
|
4 |
+
*
|
5 |
+
* This file should be named as `drop-in-admin.php`.
|
6 |
+
*
|
7 |
+
* @package IP_Geo_Block
|
8 |
+
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
9 |
+
* @license GPL-3.0
|
10 |
+
* @link http://www.ipgeoblock.com/
|
11 |
+
* @see http://www.ipgeoblock.com/codex/#filter-hooks
|
12 |
+
* @example Use `IP_Geo_Block::add_filter()` instead of `add_filter()`
|
13 |
+
*/
|
14 |
+
class_exists( 'IP_Geo_Block', FALSE ) or die;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Analyze entries in "Validation logs"
|
18 |
+
*
|
19 |
+
* @param array $logs An array including each entry where:
|
20 |
+
* Array (
|
21 |
+
* [0 DB row number] => 154
|
22 |
+
* [1 Target ] => comment
|
23 |
+
* [2 Time ] => 1534580897
|
24 |
+
* [3 IP address ] => 102.177.147.***
|
25 |
+
* [4 Country code ] => ZA
|
26 |
+
* [5 Result ] => blocked
|
27 |
+
* [6 AS number ] => AS328239
|
28 |
+
* [7 Request ] => POST[80]:/wp-comments-post.php
|
29 |
+
* [8 User agent ] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) ...
|
30 |
+
* [9 HTTP headers ] => HTTP_ORIGIN=http://localhost,HTTP_X_FORWARDED_FOR=102.177.147.***
|
31 |
+
* [10 $_POST data ] => comment=Hello.,author,email,url,comment_post_ID,comment_parent
|
32 |
+
* )
|
33 |
+
*
|
34 |
+
* And put a mark at "Target"
|
35 |
+
* ¹¹: Passed in Whitelist
|
36 |
+
* ¹²: Passed in Blacklist
|
37 |
+
* ¹³: Passed not in Lists
|
38 |
+
* ²¹: Blocked in Whitelist
|
39 |
+
* ²²: Blocked in Blacklist
|
40 |
+
* ²³: Blocked not in Lists
|
41 |
+
*/
|
42 |
+
function ip_geo_block_logs( $logs ) {
|
43 |
+
// Get settings of IP Geo Block
|
44 |
+
$settings = IP_Geo_Block::get_option();
|
45 |
+
|
46 |
+
// White/Black list for back-end
|
47 |
+
$white_backend = $settings['white_list'];
|
48 |
+
$black_backend = $settings['black_list'];
|
49 |
+
|
50 |
+
// White/Black list for front-end
|
51 |
+
if ( $settings['public']['matching_rule'] < 0 ) {
|
52 |
+
// Follow "Validation rule settings"
|
53 |
+
$white_frontend = $white_backend;
|
54 |
+
$black_frontend = $black_backend;
|
55 |
+
} else {
|
56 |
+
// Whitelist or Blacklist for "Public facing pages"
|
57 |
+
$white_frontend = $settings['public']['white_list'];
|
58 |
+
$black_frontend = $settings['public']['black_list'];
|
59 |
+
}
|
60 |
+
|
61 |
+
foreach ( $logs as $key => $log ) {
|
62 |
+
// Passed or Blocked
|
63 |
+
$mark = IP_Geo_Block::is_passed( $log[5] ) ? '¹' : '²';
|
64 |
+
|
65 |
+
// Whitelisted, Blacklisted or N/A
|
66 |
+
if ( 'public' === $log[1] ) {
|
67 |
+
$mark .= IP_Geo_Block::is_listed( $log[4], $white_frontend ) ? '¹' : (
|
68 |
+
IP_Geo_Block::is_listed( $log[4], $black_frontend ) ? '²' : '³' );
|
69 |
+
} else {
|
70 |
+
$mark .= IP_Geo_Block::is_listed( $log[4], $white_backend ) ? '¹' : (
|
71 |
+
IP_Geo_Block::is_listed( $log[4], $black_backend ) ? '²' : '³' );
|
72 |
+
}
|
73 |
+
|
74 |
+
// Put a mark at "Target"
|
75 |
+
$logs[ $key ][1] .= $mark;
|
76 |
+
}
|
77 |
+
|
78 |
+
return $logs;
|
79 |
+
}
|
80 |
+
|
81 |
+
IP_Geo_Block::add_filter( 'ip-geo-block-logs', 'ip_geo_block_logs' );
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Register UI "Preset filters" at "Search in logs"
|
85 |
+
*
|
86 |
+
* @param array $filters An empty array by default.
|
87 |
+
* @return array $filters The array of paired with 'title' and 'value'.
|
88 |
+
*/
|
89 |
+
function ip_geo_block_logs_preset( $filters ) {
|
90 |
+
return array(
|
91 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-happy" > </span>' . __( '<span title="Show only passed entries whose country codes are in Whitelist.">Passed in Whitelist</span>', 'ip-geo-block' ), 'value' => '¹¹' ),
|
92 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-grin2" > </span>' . __( '<span title="Show only passed entries whose country codes are in Blacklist.">Passed in Blacklist</span>', 'ip-geo-block' ), 'value' => '¹²' ),
|
93 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-cool" > </span>' . __( '<span title="Show only passed entries whose country codes are not in either list.">Passed not in List</span>', 'ip-geo-block' ), 'value' => '¹³' ),
|
94 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-confused" > </span>' . __( '<span title="Show only blocked entries whose country codes are in Whitelist.">Blocked in Whitelist</span>', 'ip-geo-block' ), 'value' => '²¹' ),
|
95 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-confused2"> </span>' . __( '<span title="Show only blocked entries whose country codes are in Blacklist.">Blocked in Blacklist</span>', 'ip-geo-block' ), 'value' => '²²' ),
|
96 |
+
array( 'title' => '<span class="ip-geo-block-icon ip-geo-block-icon-crying" > </span>' . __( '<span title="Show only blocked entries whose country codes are not in either list.">Blocked not in List</span>', 'ip-geo-block' ), 'value' => '²³' ),
|
97 |
+
);
|
98 |
+
}
|
99 |
+
|
100 |
+
IP_Geo_Block::add_filter( 'ip-geo-block-logs-preset', 'ip_geo_block_logs_preset' );
|
wp-content/ip-geo-api/ip2location/bcmath.php
CHANGED
@@ -33,7 +33,7 @@ else: // extension_loaded('gmp')
|
|
33 |
|
34 |
if ( ! function_exists('bcadd') ):
|
35 |
/**
|
36 |
-
* bcadd
|
37 |
* @link https://php.net/manual/en/function.bcadd.php
|
38 |
*/
|
39 |
function bcadd($Num1='0',$Num2='0',$Scale=null) {
|
@@ -89,7 +89,7 @@ endif; // ! function_exists('bcadd')
|
|
89 |
|
90 |
if ( ! function_exists('bcsub') ):
|
91 |
/**
|
92 |
-
* bcsub
|
93 |
* @link https://php.net/manual/en/function.bcsub.php
|
94 |
*/
|
95 |
function bcsub($Num1='0',$Num2='0',$Scale=null) {
|
@@ -145,7 +145,7 @@ endif; // ! function_exists('bcsub')
|
|
145 |
|
146 |
if ( ! function_exists('bcmul') ):
|
147 |
/**
|
148 |
-
* bcmul
|
149 |
* @link https://php.net/manual/en/function.bcmul.php
|
150 |
*/
|
151 |
function bcmul($Num1='0',$Num2='0') {
|
@@ -199,7 +199,7 @@ endif; // ! function_exists('bcmul')
|
|
199 |
|
200 |
if ( ! function_exists('bcpow') ):
|
201 |
/**
|
202 |
-
* bcpow
|
203 |
* @link https://php.net/manual/en/function.bcmul.php
|
204 |
*/
|
205 |
function bcpow($num, $power) {
|
33 |
|
34 |
if ( ! function_exists('bcadd') ):
|
35 |
/**
|
36 |
+
* bcadd - Add two arbitrary precision numbers.
|
37 |
* @link https://php.net/manual/en/function.bcadd.php
|
38 |
*/
|
39 |
function bcadd($Num1='0',$Num2='0',$Scale=null) {
|
89 |
|
90 |
if ( ! function_exists('bcsub') ):
|
91 |
/**
|
92 |
+
* bcsub - Subtract one arbitrary precision number from another.
|
93 |
* @link https://php.net/manual/en/function.bcsub.php
|
94 |
*/
|
95 |
function bcsub($Num1='0',$Num2='0',$Scale=null) {
|
145 |
|
146 |
if ( ! function_exists('bcmul') ):
|
147 |
/**
|
148 |
+
* bcmul - Multiply two arbitrary precision numbers.
|
149 |
* @link https://php.net/manual/en/function.bcmul.php
|
150 |
*/
|
151 |
function bcmul($Num1='0',$Num2='0') {
|
199 |
|
200 |
if ( ! function_exists('bcpow') ):
|
201 |
/**
|
202 |
+
* bcpow - Raise an arbitrary precision number to another.
|
203 |
* @link https://php.net/manual/en/function.bcmul.php
|
204 |
*/
|
205 |
function bcpow($num, $power) {
|
wp-content/ip-geo-api/ip2location/class-ip2location.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* IP Geo Block API class library for IP2Location
|
4 |
*
|
5 |
-
* @version 1.1.
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
@@ -54,7 +54,7 @@ class IP_Geo_Block_API_IP2Location extends IP_Geo_Block_API {
|
|
54 |
$type = IP_GEO_BLOCK_API_TYPE_IPV4;
|
55 |
$file = apply_filters(
|
56 |
IP_Geo_Block::PLUGIN_NAME . '-ip2location-path',
|
57 |
-
empty( $settings['IP2Location']['ipv4_path'] ) ?
|
58 |
$this->get_db_dir() . IP_GEO_BLOCK_IP2LOC_IPV4_DAT :
|
59 |
$settings['IP2Location']['ipv4_path']
|
60 |
);
|
@@ -62,7 +62,7 @@ class IP_Geo_Block_API_IP2Location extends IP_Geo_Block_API {
|
|
62 |
|
63 |
elseif ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) {
|
64 |
$type = IP_GEO_BLOCK_API_TYPE_IPV6;
|
65 |
-
$file = empty( $settings['IP2Location']['ipv6_path'] ) ?
|
66 |
$this->get_db_dir() . IP_GEO_BLOCK_IP2LOC_IPV6_DAT :
|
67 |
$settings['IP2Location']['ipv6_path'];
|
68 |
}
|
@@ -146,17 +146,21 @@ class IP_Geo_Block_API_IP2Location extends IP_Geo_Block_API {
|
|
146 |
}
|
147 |
|
148 |
public function add_settings_field( $field, $section, $option_slug, $option_name, $options, $callback, $str_path, $str_last ) {
|
|
|
|
|
|
|
149 |
$db = $options[ $field ];
|
150 |
$dir = $this->get_db_dir();
|
151 |
$msg = __( 'Database file does not exist.', 'ip-geo-block' );
|
152 |
|
153 |
// IPv4
|
154 |
-
if ( $db['ipv4_path'] )
|
155 |
-
$
|
156 |
-
|
157 |
-
|
|
|
158 |
|
159 |
-
if (
|
160 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv4_last'] ) );
|
161 |
else
|
162 |
$date = $msg;
|
@@ -172,19 +176,20 @@ class IP_Geo_Block_API_IP2Location extends IP_Geo_Block_API {
|
|
172 |
'option' => $option_name,
|
173 |
'field' => $field,
|
174 |
'sub-field' => 'ipv4_path',
|
175 |
-
'value' => $
|
176 |
'disabled' => TRUE,
|
177 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-ipv4" style="margin-left: 0.2em">' . $date . '</p>',
|
178 |
)
|
179 |
);
|
180 |
|
181 |
// IPv6
|
182 |
-
if ( $db['ipv6_path'] )
|
183 |
-
$
|
184 |
-
|
185 |
-
|
|
|
186 |
|
187 |
-
if (
|
188 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv6_last'] ) );
|
189 |
else
|
190 |
$date = $msg;
|
@@ -200,7 +205,7 @@ class IP_Geo_Block_API_IP2Location extends IP_Geo_Block_API {
|
|
200 |
'option' => $option_name,
|
201 |
'field' => $field,
|
202 |
'sub-field' => 'ipv6_path',
|
203 |
-
'value' => $
|
204 |
'disabled' => TRUE,
|
205 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-ipv6" style="margin-left: 0.2em">' . $date . '</p>',
|
206 |
)
|
2 |
/**
|
3 |
* IP Geo Block API class library for IP2Location
|
4 |
*
|
5 |
+
* @version 1.1.14
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
54 |
$type = IP_GEO_BLOCK_API_TYPE_IPV4;
|
55 |
$file = apply_filters(
|
56 |
IP_Geo_Block::PLUGIN_NAME . '-ip2location-path',
|
57 |
+
empty( $settings['IP2Location']['ipv4_path'] ) ?
|
58 |
$this->get_db_dir() . IP_GEO_BLOCK_IP2LOC_IPV4_DAT :
|
59 |
$settings['IP2Location']['ipv4_path']
|
60 |
);
|
62 |
|
63 |
elseif ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) {
|
64 |
$type = IP_GEO_BLOCK_API_TYPE_IPV6;
|
65 |
+
$file = empty( $settings['IP2Location']['ipv6_path'] ) ?
|
66 |
$this->get_db_dir() . IP_GEO_BLOCK_IP2LOC_IPV6_DAT :
|
67 |
$settings['IP2Location']['ipv6_path'];
|
68 |
}
|
146 |
}
|
147 |
|
148 |
public function add_settings_field( $field, $section, $option_slug, $option_name, $options, $callback, $str_path, $str_last ) {
|
149 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
150 |
+
$fs = IP_Geo_Block_FS::init( __FILE__ . '(' . __FUNCTION__ . ')' );
|
151 |
+
|
152 |
$db = $options[ $field ];
|
153 |
$dir = $this->get_db_dir();
|
154 |
$msg = __( 'Database file does not exist.', 'ip-geo-block' );
|
155 |
|
156 |
// IPv4
|
157 |
+
if ( $dir !== dirname( $db['ipv4_path'] ) . '/' )
|
158 |
+
$db['ipv4_path'] = $dir . IP_GEO_BLOCK_IP2LOC_IPV4_DAT;
|
159 |
+
|
160 |
+
// filter database file
|
161 |
+
$db['ipv4_path'] = apply_filters( IP_Geo_Block::PLUGIN_NAME . '-ip2location-path', $db['ipv4_path'] );
|
162 |
|
163 |
+
if ( $fs->exists( $db['ipv4_path'] ) )
|
164 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv4_last'] ) );
|
165 |
else
|
166 |
$date = $msg;
|
176 |
'option' => $option_name,
|
177 |
'field' => $field,
|
178 |
'sub-field' => 'ipv4_path',
|
179 |
+
'value' => $db['ipv4_path'],
|
180 |
'disabled' => TRUE,
|
181 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-ipv4" style="margin-left: 0.2em">' . $date . '</p>',
|
182 |
)
|
183 |
);
|
184 |
|
185 |
// IPv6
|
186 |
+
if ( $dir !== dirname( $db['ipv6_path'] ) . '/' )
|
187 |
+
$db['ipv6_path'] = $dir . IP_GEO_BLOCK_IP2LOC_IPV6_DAT;
|
188 |
+
|
189 |
+
// filter database file
|
190 |
+
$db['ipv6_path'] = apply_filters( IP_Geo_Block::PLUGIN_NAME . '-ip2location-path-ipv6', $db['ipv6_path'] );
|
191 |
|
192 |
+
if ( $fs->exists( $db['ipv6_path'] ) )
|
193 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv6_last'] ) );
|
194 |
else
|
195 |
$date = $msg;
|
205 |
'option' => $option_name,
|
206 |
'field' => $field,
|
207 |
'sub-field' => 'ipv6_path',
|
208 |
+
'value' => $db['ipv6_path'],
|
209 |
'disabled' => TRUE,
|
210 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-ipv6" style="margin-left: 0.2em">' . $date . '</p>',
|
211 |
)
|
wp-content/ip-geo-api/maxmind/class-maxmind-geolite2.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* IP Geo Block API class library for Maxmind
|
4 |
*
|
5 |
-
* @version 1.1.
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
@@ -41,10 +41,11 @@ class IP_Geo_Block_API_Geolite2 extends IP_Geo_Block_API {
|
|
41 |
|
42 |
private function location_city( $record ) {
|
43 |
return array(
|
44 |
-
'countryCode' => $record->isoCode,
|
45 |
-
'
|
46 |
-
'
|
47 |
-
'
|
|
|
48 |
);
|
49 |
}
|
50 |
|
@@ -62,17 +63,26 @@ class IP_Geo_Block_API_Geolite2 extends IP_Geo_Block_API {
|
|
62 |
$settings = IP_Geo_Block::get_option();
|
63 |
|
64 |
if ( empty( $args['ASN'] ) ) {
|
65 |
-
$file =
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
try {
|
67 |
$reader = new GeoIp2\Database\Reader( $file );
|
68 |
-
|
|
|
|
|
|
|
69 |
} catch ( Exception $e ) {
|
70 |
$res = array( 'countryCode' => NULL );
|
71 |
}
|
72 |
}
|
73 |
|
74 |
else {
|
75 |
-
$file = ! empty( $settings['
|
76 |
try {
|
77 |
$reader = new GeoIp2\Database\Reader( $file );
|
78 |
$res = $this->location_asnumber( $reader->asn( $ip ) );
|
@@ -86,7 +96,7 @@ class IP_Geo_Block_API_Geolite2 extends IP_Geo_Block_API {
|
|
86 |
|
87 |
private function get_db_dir() {
|
88 |
return IP_Geo_Block_Util::slashit( apply_filters(
|
89 |
-
IP_Geo_Block::PLUGIN_NAME . '-
|
90 |
) );
|
91 |
}
|
92 |
|
@@ -97,9 +107,12 @@ class IP_Geo_Block_API_Geolite2 extends IP_Geo_Block_API {
|
|
97 |
if ( $dir !== dirname( $db['ip_path'] ) . '/' )
|
98 |
$db['ip_path'] = $dir . IP_GEO_BLOCK_GEOLITE2_DB_IP;
|
99 |
|
|
|
|
|
|
|
100 |
$res['ip'] = IP_Geo_Block_Util::download_zip(
|
101 |
apply_filters(
|
102 |
-
IP_Geo_Block::PLUGIN_NAME . '-
|
103 |
IP_GEO_BLOCK_GEOLITE2_ZIP_IP
|
104 |
),
|
105 |
$args + array( 'method' => 'GET' ),
|
@@ -118,7 +131,7 @@ if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn_path'] ) ) :
|
|
118 |
|
119 |
$res['asn'] = IP_Geo_Block_Util::download_zip(
|
120 |
apply_filters(
|
121 |
-
IP_Geo_Block::PLUGIN_NAME . '-
|
122 |
IP_GEO_BLOCK_GEOLITE2_ZIP_ASN
|
123 |
),
|
124 |
$args + array( 'method' => 'GET' ),
|
@@ -139,17 +152,21 @@ endif; // ! empty( $db['use_asn'] ) || ! empty( $db['asn_path'] )
|
|
139 |
}
|
140 |
|
141 |
public function add_settings_field( $field, $section, $option_slug, $option_name, $options, $callback, $str_path, $str_last ) {
|
|
|
|
|
|
|
142 |
$db = $options[ $field ];
|
143 |
$dir = $this->get_db_dir();
|
144 |
$msg = __( 'Database file does not exist.', 'ip-geo-block' );
|
145 |
|
146 |
-
// IPv4
|
147 |
-
if ( $db['ip_path'] )
|
148 |
-
$
|
149 |
-
|
150 |
-
|
|
|
151 |
|
152 |
-
if (
|
153 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ip_last'] ) );
|
154 |
else
|
155 |
$date = $msg;
|
@@ -165,7 +182,7 @@ endif; // ! empty( $db['use_asn'] ) || ! empty( $db['asn_path'] )
|
|
165 |
'option' => $option_name,
|
166 |
'field' => $field,
|
167 |
'sub-field' => 'ip_path',
|
168 |
-
'value' => $
|
169 |
'disabled' => TRUE,
|
170 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-ip" style="margin-left: 0.2em">' . $date . '</p>',
|
171 |
)
|
@@ -174,12 +191,10 @@ endif; // ! empty( $db['use_asn'] ) || ! empty( $db['asn_path'] )
|
|
174 |
if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn_path'] ) ) :
|
175 |
|
176 |
// ASN for IPv4 and IPv6
|
177 |
-
if ( $db['asn_path'] )
|
178 |
-
$
|
179 |
-
else
|
180 |
-
$path = $dir . IP_GEO_BLOCK_GEOLITE2_DB_ASN;
|
181 |
|
182 |
-
if (
|
183 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['asn_last'] ) );
|
184 |
else
|
185 |
$date = $msg;
|
@@ -195,7 +210,7 @@ if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn_path'] ) ) :
|
|
195 |
'option' => $option_name,
|
196 |
'field' => $field,
|
197 |
'sub-field' => 'asn_path',
|
198 |
-
'value' => $
|
199 |
'disabled' => TRUE,
|
200 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-asn" style="margin-left: 0.2em">' . $date . '</p>',
|
201 |
)
|
2 |
/**
|
3 |
* IP Geo Block API class library for Maxmind
|
4 |
*
|
5 |
+
* @version 1.1.14
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
41 |
|
42 |
private function location_city( $record ) {
|
43 |
return array(
|
44 |
+
'countryCode' => $record->country->isoCode,
|
45 |
+
'countryName' => $record->country->names['en'],
|
46 |
+
'cityName' => $record->city->names['en'],
|
47 |
+
'latitude' => $record->location->latitude,
|
48 |
+
'longitude' => $record->location->longitude,
|
49 |
);
|
50 |
}
|
51 |
|
63 |
$settings = IP_Geo_Block::get_option();
|
64 |
|
65 |
if ( empty( $args['ASN'] ) ) {
|
66 |
+
$file = apply_filters( IP_Geo_Block::PLUGIN_NAME . '-geolite2-path',
|
67 |
+
( ! empty( $settings['Geolite2']['ip_path'] ) ?
|
68 |
+
$settings['Geolite2']['ip_path'] :
|
69 |
+
$this->get_db_dir() . IP_GEO_BLOCK_GEOLITE2_DB_IP
|
70 |
+
)
|
71 |
+
);
|
72 |
+
|
73 |
try {
|
74 |
$reader = new GeoIp2\Database\Reader( $file );
|
75 |
+
if ( 'GeoLite2-Country' === $reader->metadata()->databaseType )
|
76 |
+
$res = $this->location_country( $reader->country( $ip ) );
|
77 |
+
else
|
78 |
+
$res = $this->location_city( $reader->city( $ip ) );
|
79 |
} catch ( Exception $e ) {
|
80 |
$res = array( 'countryCode' => NULL );
|
81 |
}
|
82 |
}
|
83 |
|
84 |
else {
|
85 |
+
$file = ! empty( $settings['Geolite2']['asn_path'] ) ? $settings['Geolite2']['asn_path'] : $this->get_db_dir() . IP_GEO_BLOCK_GEOLITE2_DB_ASN;
|
86 |
try {
|
87 |
$reader = new GeoIp2\Database\Reader( $file );
|
88 |
$res = $this->location_asnumber( $reader->asn( $ip ) );
|
96 |
|
97 |
private function get_db_dir() {
|
98 |
return IP_Geo_Block_Util::slashit( apply_filters(
|
99 |
+
IP_Geo_Block::PLUGIN_NAME . '-geolite2-dir', dirname( __FILE__ ) . '/GeoLite2'
|
100 |
) );
|
101 |
}
|
102 |
|
107 |
if ( $dir !== dirname( $db['ip_path'] ) . '/' )
|
108 |
$db['ip_path'] = $dir . IP_GEO_BLOCK_GEOLITE2_DB_IP;
|
109 |
|
110 |
+
// filter database file
|
111 |
+
$db['ip_path'] = apply_filters( IP_Geo_Block::PLUGIN_NAME . '-geolite2-path', $db['ip_path'] );
|
112 |
+
|
113 |
$res['ip'] = IP_Geo_Block_Util::download_zip(
|
114 |
apply_filters(
|
115 |
+
IP_Geo_Block::PLUGIN_NAME . '-geolite2-zip-ip',
|
116 |
IP_GEO_BLOCK_GEOLITE2_ZIP_IP
|
117 |
),
|
118 |
$args + array( 'method' => 'GET' ),
|
131 |
|
132 |
$res['asn'] = IP_Geo_Block_Util::download_zip(
|
133 |
apply_filters(
|
134 |
+
IP_Geo_Block::PLUGIN_NAME . '-geolite2-zip-asn',
|
135 |
IP_GEO_BLOCK_GEOLITE2_ZIP_ASN
|
136 |
),
|
137 |
$args + array( 'method' => 'GET' ),
|
152 |
}
|
153 |
|
154 |
public function add_settings_field( $field, $section, $option_slug, $option_name, $options, $callback, $str_path, $str_last ) {
|
155 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
156 |
+
$fs = IP_Geo_Block_FS::init( __FILE__ . '(' . __FUNCTION__ . ')' );
|
157 |
+
|
158 |
$db = $options[ $field ];
|
159 |
$dir = $this->get_db_dir();
|
160 |
$msg = __( 'Database file does not exist.', 'ip-geo-block' );
|
161 |
|
162 |
+
// IPv4 & IPv6
|
163 |
+
if ( $dir !== dirname( $db['ip_path'] ) . '/' )
|
164 |
+
$db['ip_path'] = $dir . IP_GEO_BLOCK_GEOLITE2_DB_IP;
|
165 |
+
|
166 |
+
// filter database file
|
167 |
+
$db['ip_path'] = apply_filters( IP_Geo_Block::PLUGIN_NAME . '-geolite2-path', $db['ip_path'] );
|
168 |
|
169 |
+
if ( $fs->exists( $db['ip_path'] ) )
|
170 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ip_last'] ) );
|
171 |
else
|
172 |
$date = $msg;
|
182 |
'option' => $option_name,
|
183 |
'field' => $field,
|
184 |
'sub-field' => 'ip_path',
|
185 |
+
'value' => $db['ip_path'],
|
186 |
'disabled' => TRUE,
|
187 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-ip" style="margin-left: 0.2em">' . $date . '</p>',
|
188 |
)
|
191 |
if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn_path'] ) ) :
|
192 |
|
193 |
// ASN for IPv4 and IPv6
|
194 |
+
if ( $dir !== dirname( $db['asn_path'] ) . '/' )
|
195 |
+
$db['asn_path'] = $dir . IP_GEO_BLOCK_GEOLITE2_DB_ASN;
|
|
|
|
|
196 |
|
197 |
+
if ( $fs->exists( $db['asn_path'] ) )
|
198 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['asn_last'] ) );
|
199 |
else
|
200 |
$date = $msg;
|
210 |
'option' => $option_name,
|
211 |
'field' => $field,
|
212 |
'sub-field' => 'asn_path',
|
213 |
+
'value' => $db['asn_path'],
|
214 |
'disabled' => TRUE,
|
215 |
'after' => '<br /><p id="ip-geo-block-' . $field . '-asn" style="margin-left: 0.2em">' . $date . '</p>',
|
216 |
)
|
wp-content/ip-geo-api/maxmind/class-maxmind-legacy.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* IP Geo Block API class library for Maxmind
|
4 |
*
|
5 |
-
* @version 1.1.
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
@@ -125,15 +125,16 @@ class IP_Geo_Block_API_Maxmind extends IP_Geo_Block_API {
|
|
125 |
) );
|
126 |
}
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
public function download( &$db, $args ) {
|
129 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
130 |
-
$fs = IP_Geo_Block_FS::init( __FILE__ );
|
131 |
-
|
132 |
-
// GeoLite Legacy databases would be stopped to update and download
|
133 |
-
$available = array(
|
134 |
-
'update' => $_SERVER['REQUEST_TIME'] < strtotime( '2018-04-00' ), // April 1, 2018
|
135 |
-
'download' => $_SERVER['REQUEST_TIME'] < strtotime( '2019-01-02' ), // January 2, 2019
|
136 |
-
);
|
137 |
|
138 |
$dir = $this->get_db_dir();
|
139 |
|
@@ -141,7 +142,7 @@ class IP_Geo_Block_API_Maxmind extends IP_Geo_Block_API {
|
|
141 |
if ( $dir !== dirname( $db['ipv4_path'] ) . '/' )
|
142 |
$db['ipv4_path'] = $dir . IP_GEO_BLOCK_MAXMIND_IPV4_DAT;
|
143 |
|
144 |
-
if ( $fs->exists( $db['ipv4_path'] )
|
145 |
$res['ipv4'] = IP_Geo_Block_Util::download_zip(
|
146 |
apply_filters(
|
147 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-ipv4',
|
@@ -151,13 +152,18 @@ class IP_Geo_Block_API_Maxmind extends IP_Geo_Block_API {
|
|
151 |
$db['ipv4_path'],
|
152 |
$db['ipv4_last']
|
153 |
);
|
|
|
|
|
|
|
|
|
|
|
154 |
}
|
155 |
|
156 |
// IPv6
|
157 |
if ( $dir !== dirname( $db['ipv6_path'] ) . '/' )
|
158 |
$db['ipv6_path'] = $dir . IP_GEO_BLOCK_MAXMIND_IPV6_DAT;
|
159 |
|
160 |
-
if ( $fs->exists( $db['ipv6_path'] )
|
161 |
$res['ipv6'] = IP_Geo_Block_Util::download_zip(
|
162 |
apply_filters(
|
163 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-ipv6',
|
@@ -167,6 +173,11 @@ class IP_Geo_Block_API_Maxmind extends IP_Geo_Block_API {
|
|
167 |
$db['ipv6_path'],
|
168 |
$db['ipv6_last']
|
169 |
);
|
|
|
|
|
|
|
|
|
|
|
170 |
}
|
171 |
|
172 |
! empty( $res['ipv4']['filename'] ) and $db['ipv4_path'] = $res['ipv4']['filename'];
|
@@ -180,7 +191,7 @@ if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] ) ) :
|
|
180 |
if ( $dir !== dirname( $db['asn4_path'] ) . '/' )
|
181 |
$db['asn4_path'] = $dir . IP_GEO_BLOCK_MAXMIND_ASN4_DAT;
|
182 |
|
183 |
-
if ( $fs->exists( $db['asn4_path'] )
|
184 |
$res['asn4'] = IP_Geo_Block_Util::download_zip(
|
185 |
apply_filters(
|
186 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-asn4',
|
@@ -190,13 +201,18 @@ if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] ) ) :
|
|
190 |
$db['asn4_path'],
|
191 |
$db['asn4_last']
|
192 |
);
|
|
|
|
|
|
|
|
|
|
|
193 |
}
|
194 |
|
195 |
// ASN for IPv6
|
196 |
if ( $dir !== dirname( $db['asn6_path'] ) . '/' )
|
197 |
$db['asn6_path'] = $dir . IP_GEO_BLOCK_MAXMIND_ASN6_DAT;
|
198 |
|
199 |
-
if ( $fs->exists( $db['asn6_path'] )
|
200 |
$res['asn6'] = IP_Geo_Block_Util::download_zip(
|
201 |
apply_filters(
|
202 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-asn6',
|
@@ -206,6 +222,11 @@ if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] ) ) :
|
|
206 |
$db['asn6_path'],
|
207 |
$db['asn6_last']
|
208 |
);
|
|
|
|
|
|
|
|
|
|
|
209 |
}
|
210 |
|
211 |
! empty( $res['asn4']['filename'] ) and $db['asn4_path'] = $res['asn4']['filename'];
|
@@ -223,123 +244,126 @@ endif; // ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] )
|
|
223 |
}
|
224 |
|
225 |
public function add_settings_field( $field, $section, $option_slug, $option_name, $options, $callback, $str_path, $str_last ) {
|
|
|
|
|
|
|
226 |
$db = $options[ $field ];
|
227 |
$dir = $this->get_db_dir();
|
228 |
$msg = __( 'Database file does not exist.', 'ip-geo-block' );
|
229 |
|
230 |
// IPv4
|
231 |
-
if ( $db['ipv4_path'] )
|
232 |
-
$
|
233 |
-
else
|
234 |
-
$path = $dir . IP_GEO_BLOCK_MAXMIND_IPV4_DAT;
|
235 |
|
236 |
-
if (
|
237 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv4_last'] ) );
|
238 |
else
|
239 |
$date = $msg;
|
240 |
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
|
|
|
|
257 |
|
258 |
// IPv6
|
259 |
-
if ( $db['ipv6_path'] )
|
260 |
-
$
|
261 |
-
else
|
262 |
-
$path = $dir . IP_GEO_BLOCK_MAXMIND_IPV6_DAT;
|
263 |
|
264 |
-
if (
|
265 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv6_last'] ) );
|
266 |
else
|
267 |
$date = $msg;
|
268 |
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
|
|
|
|
285 |
|
286 |
if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] ) ) :
|
287 |
|
288 |
// ASN for IPv4
|
289 |
-
if ( $db['asn4_path'] )
|
290 |
-
$
|
291 |
-
else
|
292 |
-
$path = $dir . IP_GEO_BLOCK_MAXMIND_ASN4_DAT;
|
293 |
|
294 |
-
if (
|
295 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['asn4_last'] ) );
|
296 |
else
|
297 |
$date = $msg;
|
298 |
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
|
|
|
|
315 |
|
316 |
// ASN for IPv6
|
317 |
-
if ( $db['asn6_path'] )
|
318 |
-
$
|
319 |
-
else
|
320 |
-
$path = $dir . IP_GEO_BLOCK_MAXMIND_ASN6_DAT;
|
321 |
|
322 |
-
if (
|
323 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['asn6_last'] ) );
|
324 |
else
|
325 |
$date = $msg;
|
326 |
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
|
|
|
|
343 |
|
344 |
endif; // ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] )
|
345 |
|
2 |
/**
|
3 |
* IP Geo Block API class library for Maxmind
|
4 |
*
|
5 |
+
* @version 1.1.14
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
125 |
) );
|
126 |
}
|
127 |
|
128 |
+
private function available( $exists ) {
|
129 |
+
// GeoLite Legacy databases would be stopped to update and download
|
130 |
+
return $exists ?
|
131 |
+
$_SERVER['REQUEST_TIME'] < strtotime( '2018-04-01' ): // Update until April 1, 2018
|
132 |
+
$_SERVER['REQUEST_TIME'] < strtotime( '2019-01-02' ); // Available until January 2, 2019
|
133 |
+
}
|
134 |
+
|
135 |
public function download( &$db, $args ) {
|
136 |
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
137 |
+
$fs = IP_Geo_Block_FS::init( __FILE__ . '(' . __FUNCTION__ . ')' );
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
|
139 |
$dir = $this->get_db_dir();
|
140 |
|
142 |
if ( $dir !== dirname( $db['ipv4_path'] ) . '/' )
|
143 |
$db['ipv4_path'] = $dir . IP_GEO_BLOCK_MAXMIND_IPV4_DAT;
|
144 |
|
145 |
+
if ( $this->available( $fs->exists( $db['ipv4_path'] ) ) ) {
|
146 |
$res['ipv4'] = IP_Geo_Block_Util::download_zip(
|
147 |
apply_filters(
|
148 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-ipv4',
|
152 |
$db['ipv4_path'],
|
153 |
$db['ipv4_last']
|
154 |
);
|
155 |
+
} else {
|
156 |
+
$res['ipv4'] = array(
|
157 |
+
'code' => 503,
|
158 |
+
'message' => __( 'Update service has already stopped.', 'ip-geo-block' )
|
159 |
+
);
|
160 |
}
|
161 |
|
162 |
// IPv6
|
163 |
if ( $dir !== dirname( $db['ipv6_path'] ) . '/' )
|
164 |
$db['ipv6_path'] = $dir . IP_GEO_BLOCK_MAXMIND_IPV6_DAT;
|
165 |
|
166 |
+
if ( $this->available( $fs->exists( $db['ipv6_path'] ) ) ) {
|
167 |
$res['ipv6'] = IP_Geo_Block_Util::download_zip(
|
168 |
apply_filters(
|
169 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-ipv6',
|
173 |
$db['ipv6_path'],
|
174 |
$db['ipv6_last']
|
175 |
);
|
176 |
+
} else {
|
177 |
+
$res['ipv6'] = array(
|
178 |
+
'code' => 503,
|
179 |
+
'message' => __( 'Update service has already stopped.', 'ip-geo-block' )
|
180 |
+
);
|
181 |
}
|
182 |
|
183 |
! empty( $res['ipv4']['filename'] ) and $db['ipv4_path'] = $res['ipv4']['filename'];
|
191 |
if ( $dir !== dirname( $db['asn4_path'] ) . '/' )
|
192 |
$db['asn4_path'] = $dir . IP_GEO_BLOCK_MAXMIND_ASN4_DAT;
|
193 |
|
194 |
+
if ( $this->available( $fs->exists( $db['asn4_path'] ) ) ) {
|
195 |
$res['asn4'] = IP_Geo_Block_Util::download_zip(
|
196 |
apply_filters(
|
197 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-asn4',
|
201 |
$db['asn4_path'],
|
202 |
$db['asn4_last']
|
203 |
);
|
204 |
+
} else {
|
205 |
+
$res['asn4'] = array(
|
206 |
+
'code' => 503,
|
207 |
+
'message' => __( 'Update service has already stopped.', 'ip-geo-block' )
|
208 |
+
);
|
209 |
}
|
210 |
|
211 |
// ASN for IPv6
|
212 |
if ( $dir !== dirname( $db['asn6_path'] ) . '/' )
|
213 |
$db['asn6_path'] = $dir . IP_GEO_BLOCK_MAXMIND_ASN6_DAT;
|
214 |
|
215 |
+
if ( $this->available( $fs->exists( $db['asn6_path'] ) ) ) {
|
216 |
$res['asn6'] = IP_Geo_Block_Util::download_zip(
|
217 |
apply_filters(
|
218 |
IP_Geo_Block::PLUGIN_NAME . '-maxmind-zip-asn6',
|
222 |
$db['asn6_path'],
|
223 |
$db['asn6_last']
|
224 |
);
|
225 |
+
} else {
|
226 |
+
$res['asn6'] = array(
|
227 |
+
'code' => 503,
|
228 |
+
'message' => __( 'Update service has already stopped.', 'ip-geo-block' )
|
229 |
+
);
|
230 |
}
|
231 |
|
232 |
! empty( $res['asn4']['filename'] ) and $db['asn4_path'] = $res['asn4']['filename'];
|
244 |
}
|
245 |
|
246 |
public function add_settings_field( $field, $section, $option_slug, $option_name, $options, $callback, $str_path, $str_last ) {
|
247 |
+
require_once IP_GEO_BLOCK_PATH . 'classes/class-ip-geo-block-file.php';
|
248 |
+
$fs = IP_Geo_Block_FS::init( __FILE__ . '(' . __FUNCTION__ . ')' );
|
249 |
+
|
250 |
$db = $options[ $field ];
|
251 |
$dir = $this->get_db_dir();
|
252 |
$msg = __( 'Database file does not exist.', 'ip-geo-block' );
|
253 |
|
254 |
// IPv4
|
255 |
+
if ( $dir !== dirname( $db['ipv4_path'] ) . '/' )
|
256 |
+
$db['ipv4_path'] = $dir . IP_GEO_BLOCK_MAXMIND_IPV4_DAT;
|
|
|
|
|
257 |
|
258 |
+
if ( $exists = $fs->exists( $db['ipv4_path'] ) )
|
259 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv4_last'] ) );
|
260 |
else
|
261 |
$date = $msg;
|
262 |
|
263 |
+
if ( $exists || $this->available( $exists ) ) {
|
264 |
+
add_settings_field(
|
265 |
+
$option_name . $field . '_ipv4',
|
266 |
+
"$field $str_path<br />(<a rel='noreferrer' href='" . IP_GEO_BLOCK_MAXMIND_DOWNLOAD . "' title='" . IP_GEO_BLOCK_MAXMIND_IPV4_ZIP . "'>IPv4</a>)",
|
267 |
+
$callback,
|
268 |
+
$option_slug,
|
269 |
+
$section,
|
270 |
+
array(
|
271 |
+
'type' => 'text',
|
272 |
+
'option' => $option_name,
|
273 |
+
'field' => $field,
|
274 |
+
'sub-field' => 'ipv4_path',
|
275 |
+
'value' => $db['ipv4_path'],
|
276 |
+
'disabled' => TRUE,
|
277 |
+
'after' => '<br /><p id="ip-geo-block-' . $field . '-ipv4" style="margin-left: 0.2em">' . $date . '</p>',
|
278 |
+
)
|
279 |
+
);
|
280 |
+
}
|
281 |
|
282 |
// IPv6
|
283 |
+
if ( $dir !== dirname( $db['ipv6_path'] ) . '/' )
|
284 |
+
$db['ipv6_path'] = $dir . IP_GEO_BLOCK_MAXMIND_IPV6_DAT;
|
|
|
|
|
285 |
|
286 |
+
if ( $exists = $fs->exists( $db['ipv6_path'] ) )
|
287 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['ipv6_last'] ) );
|
288 |
else
|
289 |
$date = $msg;
|
290 |
|
291 |
+
if ( $exists || $this->available( $exists ) ) {
|
292 |
+
add_settings_field(
|
293 |
+
$option_name . $field . '_ipv6',
|
294 |
+
"$field $str_path<br />(<a rel='noreferrer' href='" . IP_GEO_BLOCK_MAXMIND_DOWNLOAD . "' title='" . IP_GEO_BLOCK_MAXMIND_IPV6_ZIP . "'>IPv6</a>)",
|
295 |
+
$callback,
|
296 |
+
$option_slug,
|
297 |
+
$section,
|
298 |
+
array(
|
299 |
+
'type' => 'text',
|
300 |
+
'option' => $option_name,
|
301 |
+
'field' => $field,
|
302 |
+
'sub-field' => 'ipv6_path',
|
303 |
+
'value' => $db['ipv6_path'],
|
304 |
+
'disabled' => TRUE,
|
305 |
+
'after' => '<br /><p id="ip-geo-block-' . $field . '-ipv6" style="margin-left: 0.2em">' . $date . '</p>',
|
306 |
+
)
|
307 |
+
);
|
308 |
+
}
|
309 |
|
310 |
if ( ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] ) ) :
|
311 |
|
312 |
// ASN for IPv4
|
313 |
+
if ( $dir !== dirname( $db['asn4_path'] ) . '/' )
|
314 |
+
$db['asn4_path'] = $dir . IP_GEO_BLOCK_MAXMIND_ASN4_DAT;
|
|
|
|
|
315 |
|
316 |
+
if ( $exists = $fs->exists( $db['asn4_path'] ) )
|
317 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['asn4_last'] ) );
|
318 |
else
|
319 |
$date = $msg;
|
320 |
|
321 |
+
if ( $exists || $this->available( $exists ) ) {
|
322 |
+
add_settings_field(
|
323 |
+
$option_name . $field . '_asn4',
|
324 |
+
"$field $str_path<br />(<a rel='noreferrer' href='" . IP_GEO_BLOCK_MAXMIND_DOWNLOAD . "' title='" . IP_GEO_BLOCK_MAXMIND_ASN4_ZIP . "'>ASN for IPv4</a>)",
|
325 |
+
$callback,
|
326 |
+
$option_slug,
|
327 |
+
$section,
|
328 |
+
array(
|
329 |
+
'type' => 'text',
|
330 |
+
'option' => $option_name,
|
331 |
+
'field' => $field,
|
332 |
+
'sub-field' => 'asn4_path',
|
333 |
+
'value' => $db['asn4_path'],
|
334 |
+
'disabled' => TRUE,
|
335 |
+
'after' => '<br /><p id="ip-geo-block-' . $field . '-asn4" style="margin-left: 0.2em">' . $date . '</p>',
|
336 |
+
)
|
337 |
+
);
|
338 |
+
}
|
339 |
|
340 |
// ASN for IPv6
|
341 |
+
if ( $dir !== dirname( $db['asn6_path'] ) . '/' )
|
342 |
+
$db['asn6_path'] = $dir . IP_GEO_BLOCK_MAXMIND_ASN6_DAT;
|
|
|
|
|
343 |
|
344 |
+
if ( $exists = $fs->exists( $db['asn6_path'] ) )
|
345 |
$date = sprintf( $str_last, IP_Geo_Block_Util::localdate( $db['asn6_last'] ) );
|
346 |
else
|
347 |
$date = $msg;
|
348 |
|
349 |
+
if ( $exists || $this->available( $exists ) ) {
|
350 |
+
add_settings_field(
|
351 |
+
$option_name . $field . '_asn6',
|
352 |
+
"$field $str_path<br />(<a rel='noreferrer' href='" . IP_GEO_BLOCK_MAXMIND_DOWNLOAD . "' title='" . IP_GEO_BLOCK_MAXMIND_ASN6_ZIP . "'>ASN for IPv6</a>)",
|
353 |
+
$callback,
|
354 |
+
$option_slug,
|
355 |
+
$section,
|
356 |
+
array(
|
357 |
+
'type' => 'text',
|
358 |
+
'option' => $option_name,
|
359 |
+
'field' => $field,
|
360 |
+
'sub-field' => 'asn6_path',
|
361 |
+
'value' => $db['asn6_path'],
|
362 |
+
'disabled' => TRUE,
|
363 |
+
'after' => '<br /><p id="ip-geo-block-' . $field . '-asn6" style="margin-left: 0.2em">' . $date . '</p>',
|
364 |
+
)
|
365 |
+
);
|
366 |
+
}
|
367 |
|
368 |
endif; // ! empty( $db['use_asn'] ) || ! empty( $db['asn4_path'] )
|
369 |
|
wp-content/ip-geo-api/maxmind/class-maxmind.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* IP Geo Block API class library for Maxmind
|
4 |
*
|
5 |
-
* @version 1.1.
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
@@ -10,10 +10,16 @@
|
|
10 |
*/
|
11 |
class_exists( 'IP_Geo_Block_API', FALSE ) or die;
|
12 |
|
13 |
-
|
|
|
14 |
|
15 |
-
|
|
|
|
|
16 |
|
17 |
-
|
|
|
|
|
|
|
18 |
|
19 |
-
|
2 |
/**
|
3 |
* IP Geo Block API class library for Maxmind
|
4 |
*
|
5 |
+
* @version 1.1.14
|
6 |
* @author tokkonopapa <tokkonopapa@yahoo.com>
|
7 |
* @license GPL-3.0
|
8 |
* @link https://www.ipgeoblock.com/
|
10 |
*/
|
11 |
class_exists( 'IP_Geo_Block_API', FALSE ) or die;
|
12 |
|
13 |
+
function ip_geo_block_setup_maxmind() {
|
14 |
+
$path = dirname( __FILE__ );
|
15 |
|
16 |
+
// GeoLite2 requires PHP 5.4+ (WordPress 3.7 requires PHP 5.2.4)
|
17 |
+
if ( version_compare( PHP_VERSION, '5.4' ) >= 0 )
|
18 |
+
require_once $path . '/class-maxmind-geolite2.php';
|
19 |
|
20 |
+
// GeoLite Legacy
|
21 |
+
if ( file_exists( $path . '/class-maxmind-legacy.php' ) )
|
22 |
+
require_once $path . '/class-maxmind-legacy.php';
|
23 |
+
}
|
24 |
|
25 |
+
ip_geo_block_setup_maxmind();
|