Version Description
Download this release
Release Info
Developer | paultgoodchild |
Plugin | Shield Security for WordPress |
Version | 14.0.0 |
Comparing to | |
See all releases |
Code changes from version 13.0.6 to 14.0.0
- cl.json +89 -0
- config/admin_access_restriction.json +3 -2
- config/audit_trail.json +4 -1
- config/autoupdates.json +4 -1
- config/comments_filter.json +6 -3
- config/data.json +51 -2
- config/deprecated/admin_access_restriction.php +3 -2
- config/deprecated/audit_trail.php +4 -1
- config/deprecated/autoupdates.php +4 -1
- config/deprecated/comments_filter.php +6 -3
- config/deprecated/data.php +51 -2
- config/deprecated/firewall.php +3 -0
- config/deprecated/hack_protect.php +9 -37
- config/deprecated/headers.php +3 -0
- config/deprecated/ips.php +6 -3
- config/deprecated/license.php +19 -16
- config/deprecated/lockdown.php +8 -9
- config/deprecated/login_protect.php +94 -36
- config/deprecated/plugin.php +3 -0
- config/deprecated/reporting.php +3 -0
- config/deprecated/sessions.php +2 -2
- config/deprecated/traffic.php +9 -6
- config/deprecated/user_management.php +10 -7
- config/firewall.json +3 -0
- config/hack_protect.json +9 -37
- config/headers.json +3 -0
- config/ips.json +6 -3
- config/license.json +19 -16
- config/lockdown.json +3 -0
- config/login_protect.json +94 -36
- config/plugin.json +3 -0
- config/reporting.json +3 -0
- config/sessions.json +2 -2
- config/traffic.json +9 -6
- config/user_management.json +10 -7
- icwp-wpsf.php +1 -1
- init.php +15 -7
- languages/wp-simple-firewall-en_GB.mo +0 -0
- languages/wp-simple-firewall-en_GB.po +8785 -5867
- languages/wp-simple-firewall-nl_NL.mo +0 -0
- plugin-spec.php +37 -29
- plugin.json +37 -29
- readme.txt +1 -1
- resources/css/plugin.css +35 -36
- resources/css/shield/login2fa.css +37 -0
- resources/js/login/u2f.js +0 -42
- resources/js/plugin.js +26 -12
- resources/js/shield/audit_trail.js +2 -0
- resources/js/shield/login2fa.js +144 -0
- resources/js/shield/notbot.js +2 -2
- resources/js/shield/userprofile.js +79 -2
- src/lib/functions/functions.php +10 -18
- src/lib/src/Controller/Admin/MainAdminMenu.php +10 -5
- src/lib/src/Controller/Ajax/Init.php +1 -1
- src/lib/src/Controller/Assets/Enqueue.php +3 -1
- src/lib/src/Controller/Assets/Paths.php +7 -1
- src/lib/src/Controller/Controller.php +33 -36
- src/lib/src/Controller/I18n/LoadTextDomain.php +3 -3
- src/lib/src/Databases/Common/AlignTableWithSchema.php +0 -4
- src/lib/src/Databases/Common/TableSchema.php +0 -2
- src/lib/src/Databases/Events/Common.php +0 -4
- src/lib/src/Functions/functions.php +68 -0
- src/lib/src/Modules/AuditTrail/AjaxHandler.php +1 -1
- src/lib/src/Modules/AuditTrail/Lib/AuditLogger.php +13 -1
- src/lib/src/Modules/AuditTrail/Lib/AuditMessageBuilder.php +3 -1
- src/lib/src/Modules/AuditTrail/Lib/LogTable/DelegateAjaxHandler.php +0 -4
- src/lib/src/Modules/AuditTrail/Lib/LogTable/LoadRawTableData.php +3 -4
- src/lib/src/Modules/AuditTrail/ModCon.php +0 -8
- src/lib/src/Modules/AuditTrail/WpCli.php +4 -7
- src/lib/src/Modules/Base/ModCon.php +8 -24
- src/lib/src/Modules/Base/Options.php +25 -15
- src/lib/src/Modules/Base/Options/BuildForDisplay.php +0 -2
- src/lib/src/Modules/Base/Strings.php +1 -1
- src/lib/src/Modules/Base/UI.php +1 -1
- src/lib/src/Modules/Base/WpCli.php +35 -15
- src/lib/src/Modules/Base/WpCli/BaseWpCliCmd.php +16 -25
- src/lib/src/Modules/Base/WpCli/ModuleStandard.php +16 -20
- src/lib/src/Modules/BaseShield/WpCli.php +12 -0
- src/lib/src/Modules/Data/DB/UserMeta/MetaRecords.php +45 -0
- src/lib/src/Modules/Data/DB/UserMeta/Ops/Common.php +24 -0
- src/lib/src/Modules/Data/DB/UserMeta/Ops/Delete.php +10 -0
- src/lib/src/Modules/Data/DB/UserMeta/Ops/Handler.php +9 -0
- src/lib/src/Modules/Data/DB/UserMeta/Ops/Insert.php +9 -0
- src/lib/src/Modules/Data/DB/UserMeta/Ops/Record.php +29 -0
- src/lib/src/Modules/Data/DB/UserMeta/Ops/Select.php +10 -0
- src/lib/src/Modules/Data/ModCon.php +6 -0
- src/lib/src/Modules/Events/Lib/EventsListener.php +14 -13
- src/lib/src/Modules/Events/Lib/EventsService.php +1 -10
- src/lib/src/Modules/HackGuard/Lib/FileLocker/FileLockerController.php +0 -10
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/Base.php +18 -0
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/BaseAction.php +4 -5
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/BaseBulk.php +3 -0
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/CleanStale.php +31 -0
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/CreateNew.php +2 -3
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/DeleteAll.php +5 -6
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/Load.php +2 -3
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/ScheduleBuildAll.php +18 -19
- src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/TouchAll.php +13 -11
- src/lib/src/Modules/HackGuard/ModCon.php +5 -19
- src/lib/src/Modules/HackGuard/Render/ScanResults/SectionMalware.php +1 -7
- src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPluginThemesBase.php +0 -1
- src/lib/src/Modules/HackGuard/Scan/Controller/Afs.php +5 -4
- src/lib/src/Modules/HackGuard/Scan/Controller/Base.php +0 -24
- src/lib/src/Modules/HackGuard/Scan/Controller/Mal.php +0 -37
- src/lib/src/Modules/HackGuard/Scan/Controller/Ptg.php +0 -56
- src/lib/src/Modules/HackGuard/Scan/Controller/Ufc.php +0 -24
- src/lib/src/Modules/HackGuard/Scan/Controller/Wcf.php +0 -45
- src/lib/src/Modules/HackGuard/Scan/Queue/Controller.php +0 -6
- src/lib/src/Modules/HackGuard/Scan/Queue/QueueProcessorConsumer.php +0 -30
- src/lib/src/Modules/HackGuard/Scan/Utilities/ConvertLegacyResults.php +0 -201
- src/lib/src/Modules/HackGuard/UI.php +6 -3
- src/lib/src/Modules/HackGuard/Upgrade.php +0 -4
- src/lib/src/Modules/HackGuard/WpCli.php +4 -7
- src/lib/src/Modules/Headers/Processor.php +0 -15
- src/lib/src/Modules/IPs/Components/QueryIpBlock.php +0 -4
- src/lib/src/Modules/IPs/Lib/BlockRequest.php +60 -57
- src/lib/src/Modules/IPs/Lib/Bots/BotEventListener.php +1 -1
- src/lib/src/Modules/IPs/Lib/Bots/BotSignalsController.php +1 -1
- src/lib/src/Modules/IPs/Lib/Bots/NotBot/InsertNotBotJs.php +1 -1
- src/lib/src/Modules/IPs/Lib/Bots/NotBot/NotBotHandler.php +1 -1
- src/lib/src/Modules/IPs/Lib/Bots/ShieldNET/BuildData.php +1 -1
- src/lib/src/Modules/IPs/Strings.php +0 -3
- src/lib/src/Modules/IPs/Upgrade.php +0 -1
- src/lib/src/Modules/IPs/WpCli.php +6 -9
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/Base.php +5 -0
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/ContactForm7.php +13 -2
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/ElementorPro.php +1 -2
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/FluentForms.php +1 -2
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/KaliForms.php +1 -1
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/SuperForms.php +1 -1
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/SupportCandy.php +1 -2
- src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/WPForms.php +1 -1
- src/lib/src/Modules/Integrations/Options.php +0 -12
- src/lib/src/Modules/License/Lib/LicenseHandler.php +29 -17
- src/lib/src/Modules/License/Lib/WpHashes/ApiTokenManager.php +1 -1
- src/lib/src/Modules/License/UI.php +37 -27
- src/lib/src/Modules/License/WpCli.php +4 -7
- src/lib/src/Modules/Lockdown/ModCon.php +0 -3
- src/lib/src/Modules/LoginGuard/AjaxHandler.php +210 -20
- src/lib/src/Modules/LoginGuard/Lib/AntiBot/AntibotSetup.php +1 -1
- src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php +39 -24
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/CouldNotValidate2FA.php +7 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/LoginCancelException.php +7 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/NoActiveProvidersForUserException.php +7 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/NoLoginIntentForUserException.php +7 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/NotValidUserException.php +7 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/TooManyAttemptsException.php +7 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentPage.php +0 -170
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestCapture.php +153 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestValidate.php +68 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginRequestCapture.php +90 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaController.php +98 -237
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php +85 -33
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Profiles/RenderCustomForms.php +2 -1
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php +20 -39
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BaseProvider.php +105 -133
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php +92 -172
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php +61 -122
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/ProviderInterface.php +0 -55
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php +199 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php +105 -130
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php +28 -40
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php +137 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderLoginIntentPage.php +101 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php +294 -0
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/UserProfile.php +0 -33
- src/lib/src/Modules/LoginGuard/Lib/TwoFactor/ValidateLoginIntentRequest.php +0 -66
- src/lib/src/Modules/LoginGuard/ModCon.php +35 -32
- src/lib/src/Modules/LoginGuard/Options.php +19 -16
- src/lib/src/Modules/LoginGuard/Processor.php +2 -7
- src/lib/src/Modules/LoginGuard/Strings.php +48 -11
- src/lib/src/Modules/Plugin/AjaxHandler.php +6 -6
- src/lib/src/Modules/Plugin/Lib/Debug/Collate.php +1 -1
- src/lib/src/Modules/Plugin/Lib/TestCacheDirWrite.php +10 -3
- src/lib/src/Modules/Plugin/ModCon.php +1 -1
- src/lib/src/Modules/Plugin/WpCli.php +7 -10
- src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Restrictions/Users.php +4 -4
- src/lib/src/Modules/SecurityAdmin/WpCli.php +7 -10
- src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php +3 -3
- src/lib/src/Modules/Traffic/ModCon.php +0 -8
- src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php +16 -19
- src/lib/src/Modules/UserManagement/Lib/Registration/EmailValidate.php +17 -19
- src/lib/src/Modules/UserManagement/Lib/Suspend/Base.php +10 -11
- src/lib/src/Modules/UserManagement/Lib/Suspend/Idle.php +8 -14
- src/lib/src/Modules/UserManagement/Lib/Suspend/PasswordExpiry.php +8 -31
- src/{lib/src/Modules/UserManagement/Lib/Suspend/Suspended.php → li} +0 -0
cl.json
CHANGED
@@ -1,4 +1,93 @@
|
|
1 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
"13.0": {
|
3 |
"version": "13.0",
|
4 |
"released_at": 1636970660,
|
1 |
{
|
2 |
+
"14.0": {
|
3 |
+
"version": "14.0",
|
4 |
+
"released_at": 1643364060,
|
5 |
+
"hrefs": {
|
6 |
+
"release": "https://shsec.io/shieldrelease140",
|
7 |
+
"upgrade": "https://shsec.io/shieldupgradeguide140"
|
8 |
+
},
|
9 |
+
"title": "Two-Factor Authentication Overhaul",
|
10 |
+
"description": [
|
11 |
+
],
|
12 |
+
"items": [
|
13 |
+
{
|
14 |
+
"type": "new",
|
15 |
+
"pro_only": false,
|
16 |
+
"title": "WP Login Style 2FA Screen",
|
17 |
+
"description": [
|
18 |
+
"Users can complete their 2FA login using the UI they're most familiar with."
|
19 |
+
]
|
20 |
+
},
|
21 |
+
{
|
22 |
+
"type": "new",
|
23 |
+
"pro_only": false,
|
24 |
+
"title": "Custom Redirect For Hide WP Login & Admin",
|
25 |
+
"description": [
|
26 |
+
"Rather than display an unfriendly 404 error page for the hidden login page, you can decide to redirect requests to any page you wish."
|
27 |
+
]
|
28 |
+
},
|
29 |
+
{
|
30 |
+
"type": "new",
|
31 |
+
"pro_only": false,
|
32 |
+
"title": "Easier Access To User 2FA Settings with WP Admin Menu",
|
33 |
+
"description": [
|
34 |
+
"Users can now update their 2FA account settings from a dedicated WP admin page."
|
35 |
+
]
|
36 |
+
},
|
37 |
+
{
|
38 |
+
"type": "new",
|
39 |
+
"pro_only": false,
|
40 |
+
"title": "Improved 2FA User Experience",
|
41 |
+
"description": [
|
42 |
+
"Smoother, faster, more reliable and more secure 2FA experience."
|
43 |
+
]
|
44 |
+
},
|
45 |
+
{
|
46 |
+
"type": "changed",
|
47 |
+
"pro_only": false,
|
48 |
+
"title": "Mutli-factor Authentication Removed",
|
49 |
+
"description": [
|
50 |
+
"The option to force users to supply ALL two-factor authentication options has been removed."
|
51 |
+
]
|
52 |
+
},
|
53 |
+
{
|
54 |
+
"type": "improved",
|
55 |
+
"pro_only": false,
|
56 |
+
"title": "Dedicated table for User meta information",
|
57 |
+
"description": [
|
58 |
+
"This allows for new filters and better user status on the WP Admin User page."
|
59 |
+
]
|
60 |
+
},
|
61 |
+
{
|
62 |
+
"type": "improved",
|
63 |
+
"pro_only": false,
|
64 |
+
"title": "Updated Translations - Dutch (thanks J.P.!)",
|
65 |
+
"description": [
|
66 |
+
]
|
67 |
+
},
|
68 |
+
{
|
69 |
+
"type": "improved",
|
70 |
+
"pro_only": false,
|
71 |
+
"title": "Further page caching mitigation for NotBot",
|
72 |
+
"description": [
|
73 |
+
]
|
74 |
+
},
|
75 |
+
{
|
76 |
+
"type": "changed",
|
77 |
+
"pro_only": false,
|
78 |
+
"title": "Updated Bootstrap Libraries",
|
79 |
+
"description": [
|
80 |
+
]
|
81 |
+
},
|
82 |
+
{
|
83 |
+
"type": "fixed",
|
84 |
+
"pro_only": false,
|
85 |
+
"title": "Various bugs and errors",
|
86 |
+
"description": [
|
87 |
+
]
|
88 |
+
}
|
89 |
+
]
|
90 |
+
},
|
91 |
"13.0": {
|
92 |
"version": "13.0",
|
93 |
"released_at": 1636970660,
|
config/admin_access_restriction.json
CHANGED
@@ -17,7 +17,8 @@
|
|
17 |
"order": 20
|
18 |
},
|
19 |
"wpcli": {
|
20 |
-
"
|
|
|
21 |
},
|
22 |
"admin_notices": {
|
23 |
"certain-options-restricted": {
|
@@ -127,8 +128,8 @@
|
|
127 |
"key": "admin_access_timeout",
|
128 |
"section": "section_security_admin_settings",
|
129 |
"advanced": true,
|
130 |
-
"default": 30,
|
131 |
"type": "integer",
|
|
|
132 |
"min": 1,
|
133 |
"link_info": "https://shsec.io/41",
|
134 |
"link_blog": "",
|
17 |
"order": 20
|
18 |
},
|
19 |
"wpcli": {
|
20 |
+
"enabled": true,
|
21 |
+
"cmd_base": "secadmin"
|
22 |
},
|
23 |
"admin_notices": {
|
24 |
"certain-options-restricted": {
|
128 |
"key": "admin_access_timeout",
|
129 |
"section": "section_security_admin_settings",
|
130 |
"advanced": true,
|
|
|
131 |
"type": "integer",
|
132 |
+
"default": 30,
|
133 |
"min": 1,
|
134 |
"link_info": "https://shsec.io/41",
|
135 |
"link_blog": "",
|
config/audit_trail.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 110
|
18 |
},
|
|
|
|
|
|
|
19 |
"menu_items": [
|
20 |
{
|
21 |
"title": "Audit Trail",
|
@@ -137,9 +140,9 @@
|
|
137 |
{
|
138 |
"key": "audit_trail_auto_clean",
|
139 |
"section": "section_localdb",
|
|
|
140 |
"default": 7,
|
141 |
"min": 1,
|
142 |
-
"type": "integer",
|
143 |
"link_info": "https://shsec.io/a2",
|
144 |
"link_blog": "https://shsec.io/a1",
|
145 |
"beacon_id": 375,
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 110
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"menu_items": [
|
23 |
{
|
24 |
"title": "Audit Trail",
|
140 |
{
|
141 |
"key": "audit_trail_auto_clean",
|
142 |
"section": "section_localdb",
|
143 |
+
"type": "integer",
|
144 |
"default": 7,
|
145 |
"min": 1,
|
|
|
146 |
"link_info": "https://shsec.io/a2",
|
147 |
"link_blog": "https://shsec.io/a1",
|
148 |
"beacon_id": 375,
|
config/autoupdates.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 60
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"slug": "section_automatic_updates_for_wordpress_components",
|
@@ -130,8 +133,8 @@
|
|
130 |
"key": "update_delay",
|
131 |
"section": "section_options",
|
132 |
"premium": true,
|
133 |
-
"default": "0",
|
134 |
"type": "integer",
|
|
|
135 |
"link_info": "https://shsec.io/e5",
|
136 |
"link_blog": "",
|
137 |
"beacon_id": 137,
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 60
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"slug": "section_automatic_updates_for_wordpress_components",
|
133 |
"key": "update_delay",
|
134 |
"section": "section_options",
|
135 |
"premium": true,
|
|
|
136 |
"type": "integer",
|
137 |
+
"default": 0,
|
138 |
"link_info": "https://shsec.io/e5",
|
139 |
"link_blog": "",
|
140 |
"beacon_id": 137,
|
config/comments_filter.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 50
|
18 |
},
|
|
|
|
|
|
|
19 |
"admin_notices": {
|
20 |
"akismet-running": {
|
21 |
"id": "akismet-running",
|
@@ -98,9 +101,9 @@
|
|
98 |
{
|
99 |
"key": "trusted_commenter_minimum",
|
100 |
"section": "section_bot_comment_spam_common",
|
|
|
101 |
"default": 1,
|
102 |
"min": 1,
|
103 |
-
"type": "integer",
|
104 |
"link_info": "https://shsec.io/fu",
|
105 |
"link_blog": "",
|
106 |
"beacon_id": 152,
|
@@ -309,9 +312,9 @@
|
|
309 |
{
|
310 |
"key": "comments_cooldown",
|
311 |
"section": "section_non_ui",
|
|
|
312 |
"default": 10,
|
313 |
-
"min": 0
|
314 |
-
"type": "integer"
|
315 |
},
|
316 |
{
|
317 |
"key": "human_spam_items",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 50
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"admin_notices": {
|
23 |
"akismet-running": {
|
24 |
"id": "akismet-running",
|
101 |
{
|
102 |
"key": "trusted_commenter_minimum",
|
103 |
"section": "section_bot_comment_spam_common",
|
104 |
+
"type": "integer",
|
105 |
"default": 1,
|
106 |
"min": 1,
|
|
|
107 |
"link_info": "https://shsec.io/fu",
|
108 |
"link_blog": "",
|
109 |
"beacon_id": 152,
|
312 |
{
|
313 |
"key": "comments_cooldown",
|
314 |
"section": "section_non_ui",
|
315 |
+
"type": "integer",
|
316 |
"default": 10,
|
317 |
+
"min": 0
|
|
|
318 |
},
|
319 |
{
|
320 |
"key": "human_spam_items",
|
config/data.json
CHANGED
@@ -23,8 +23,9 @@
|
|
23 |
],
|
24 |
"definitions": {
|
25 |
"db_handler_classes": {
|
26 |
-
"ips":
|
27 |
-
"req_logs":
|
|
|
28 |
},
|
29 |
"db_table_ips": {
|
30 |
"autoexpire": 0,
|
@@ -68,6 +69,54 @@
|
|
68 |
"macro_type": "meta"
|
69 |
}
|
70 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
72 |
}
|
73 |
}
|
23 |
],
|
24 |
"definitions": {
|
25 |
"db_handler_classes": {
|
26 |
+
"ips": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\Data\\DB\\IPs\\Ops\\Handler",
|
27 |
+
"req_logs": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\Data\\DB\\ReqLogs\\Ops\\Handler",
|
28 |
+
"user_meta": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\Data\\DB\\UserMeta\\Ops\\Handler"
|
29 |
},
|
30 |
"db_table_ips": {
|
31 |
"autoexpire": 0,
|
69 |
"macro_type": "meta"
|
70 |
}
|
71 |
}
|
72 |
+
},
|
73 |
+
"db_table_user_meta": {
|
74 |
+
"slug": "user_meta",
|
75 |
+
"autoexpire": 0,
|
76 |
+
"has_updated_at": true,
|
77 |
+
"has_deleted_at": false,
|
78 |
+
"cols_custom": {
|
79 |
+
"user_id": {
|
80 |
+
"macro_type": "unsigned_int",
|
81 |
+
"type": "bigint",
|
82 |
+
"length": 11,
|
83 |
+
"attr": [
|
84 |
+
"UNIQUE"
|
85 |
+
]
|
86 |
+
}
|
87 |
+
},
|
88 |
+
"cols_timestamps": {
|
89 |
+
"backupcode_ready_at": {
|
90 |
+
"comment": "Backup Code Ready"
|
91 |
+
},
|
92 |
+
"email_ready_at": {
|
93 |
+
"comment": "Email Ready"
|
94 |
+
},
|
95 |
+
"ga_ready_at": {
|
96 |
+
"comment": "Google Auth Ready"
|
97 |
+
},
|
98 |
+
"u2f_ready_at": {
|
99 |
+
"comment": "U2F Ready"
|
100 |
+
},
|
101 |
+
"yubi_ready_at": {
|
102 |
+
"comment": "Yubikey Ready"
|
103 |
+
},
|
104 |
+
"first_seen_at": {
|
105 |
+
"comment": "User First Seen"
|
106 |
+
},
|
107 |
+
"last_login_at": {
|
108 |
+
"comment": "Last Login At"
|
109 |
+
},
|
110 |
+
"last_2fa_verified_at": {
|
111 |
+
"comment": "Last 2FA Verified"
|
112 |
+
},
|
113 |
+
"hard_suspended_at": {
|
114 |
+
"comment": "Hard Suspend"
|
115 |
+
},
|
116 |
+
"pass_started_at": {
|
117 |
+
"comment": "Password First Seen or Set"
|
118 |
+
}
|
119 |
+
}
|
120 |
}
|
121 |
}
|
122 |
}
|
config/deprecated/admin_access_restriction.php
CHANGED
@@ -17,7 +17,8 @@
|
|
17 |
"order": 20
|
18 |
},
|
19 |
"wpcli": {
|
20 |
-
"
|
|
|
21 |
},
|
22 |
"admin_notices": {
|
23 |
"certain-options-restricted": {
|
@@ -127,8 +128,8 @@
|
|
127 |
"key": "admin_access_timeout",
|
128 |
"section": "section_security_admin_settings",
|
129 |
"advanced": true,
|
130 |
-
"default": 30,
|
131 |
"type": "integer",
|
|
|
132 |
"min": 1,
|
133 |
"link_info": "https://shsec.io/41",
|
134 |
"link_blog": "",
|
17 |
"order": 20
|
18 |
},
|
19 |
"wpcli": {
|
20 |
+
"enabled": true,
|
21 |
+
"cmd_base": "secadmin"
|
22 |
},
|
23 |
"admin_notices": {
|
24 |
"certain-options-restricted": {
|
128 |
"key": "admin_access_timeout",
|
129 |
"section": "section_security_admin_settings",
|
130 |
"advanced": true,
|
|
|
131 |
"type": "integer",
|
132 |
+
"default": 30,
|
133 |
"min": 1,
|
134 |
"link_info": "https://shsec.io/41",
|
135 |
"link_blog": "",
|
config/deprecated/audit_trail.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 110
|
18 |
},
|
|
|
|
|
|
|
19 |
"menu_items": [
|
20 |
{
|
21 |
"title": "Audit Trail",
|
@@ -137,9 +140,9 @@
|
|
137 |
{
|
138 |
"key": "audit_trail_auto_clean",
|
139 |
"section": "section_localdb",
|
|
|
140 |
"default": 7,
|
141 |
"min": 1,
|
142 |
-
"type": "integer",
|
143 |
"link_info": "https://shsec.io/a2",
|
144 |
"link_blog": "https://shsec.io/a1",
|
145 |
"beacon_id": 375,
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 110
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"menu_items": [
|
23 |
{
|
24 |
"title": "Audit Trail",
|
140 |
{
|
141 |
"key": "audit_trail_auto_clean",
|
142 |
"section": "section_localdb",
|
143 |
+
"type": "integer",
|
144 |
"default": 7,
|
145 |
"min": 1,
|
|
|
146 |
"link_info": "https://shsec.io/a2",
|
147 |
"link_blog": "https://shsec.io/a1",
|
148 |
"beacon_id": 375,
|
config/deprecated/autoupdates.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 60
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"slug": "section_automatic_updates_for_wordpress_components",
|
@@ -130,8 +133,8 @@
|
|
130 |
"key": "update_delay",
|
131 |
"section": "section_options",
|
132 |
"premium": true,
|
133 |
-
"default": "0",
|
134 |
"type": "integer",
|
|
|
135 |
"link_info": "https://shsec.io/e5",
|
136 |
"link_blog": "",
|
137 |
"beacon_id": 137,
|
16 |
"run_if_wpcli": true,
|
17 |
"order": 60
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"slug": "section_automatic_updates_for_wordpress_components",
|
133 |
"key": "update_delay",
|
134 |
"section": "section_options",
|
135 |
"premium": true,
|
|
|
136 |
"type": "integer",
|
137 |
+
"default": 0,
|
138 |
"link_info": "https://shsec.io/e5",
|
139 |
"link_blog": "",
|
140 |
"beacon_id": 137,
|
config/deprecated/comments_filter.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 50
|
18 |
},
|
|
|
|
|
|
|
19 |
"admin_notices": {
|
20 |
"akismet-running": {
|
21 |
"id": "akismet-running",
|
@@ -98,9 +101,9 @@
|
|
98 |
{
|
99 |
"key": "trusted_commenter_minimum",
|
100 |
"section": "section_bot_comment_spam_common",
|
|
|
101 |
"default": 1,
|
102 |
"min": 1,
|
103 |
-
"type": "integer",
|
104 |
"link_info": "https://shsec.io/fu",
|
105 |
"link_blog": "",
|
106 |
"beacon_id": 152,
|
@@ -309,9 +312,9 @@
|
|
309 |
{
|
310 |
"key": "comments_cooldown",
|
311 |
"section": "section_non_ui",
|
|
|
312 |
"default": 10,
|
313 |
-
"min": 0
|
314 |
-
"type": "integer"
|
315 |
},
|
316 |
{
|
317 |
"key": "human_spam_items",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 50
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"admin_notices": {
|
23 |
"akismet-running": {
|
24 |
"id": "akismet-running",
|
101 |
{
|
102 |
"key": "trusted_commenter_minimum",
|
103 |
"section": "section_bot_comment_spam_common",
|
104 |
+
"type": "integer",
|
105 |
"default": 1,
|
106 |
"min": 1,
|
|
|
107 |
"link_info": "https://shsec.io/fu",
|
108 |
"link_blog": "",
|
109 |
"beacon_id": 152,
|
312 |
{
|
313 |
"key": "comments_cooldown",
|
314 |
"section": "section_non_ui",
|
315 |
+
"type": "integer",
|
316 |
"default": 10,
|
317 |
+
"min": 0
|
|
|
318 |
},
|
319 |
{
|
320 |
"key": "human_spam_items",
|
config/deprecated/data.php
CHANGED
@@ -23,8 +23,9 @@
|
|
23 |
],
|
24 |
"definitions": {
|
25 |
"db_handler_classes": {
|
26 |
-
"ips":
|
27 |
-
"req_logs":
|
|
|
28 |
},
|
29 |
"db_table_ips": {
|
30 |
"autoexpire": 0,
|
@@ -68,6 +69,54 @@
|
|
68 |
"macro_type": "meta"
|
69 |
}
|
70 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
72 |
}
|
73 |
}
|
23 |
],
|
24 |
"definitions": {
|
25 |
"db_handler_classes": {
|
26 |
+
"ips": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\Data\\DB\\IPs\\Ops\\Handler",
|
27 |
+
"req_logs": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\Data\\DB\\ReqLogs\\Ops\\Handler",
|
28 |
+
"user_meta": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\Data\\DB\\UserMeta\\Ops\\Handler"
|
29 |
},
|
30 |
"db_table_ips": {
|
31 |
"autoexpire": 0,
|
69 |
"macro_type": "meta"
|
70 |
}
|
71 |
}
|
72 |
+
},
|
73 |
+
"db_table_user_meta": {
|
74 |
+
"slug": "user_meta",
|
75 |
+
"autoexpire": 0,
|
76 |
+
"has_updated_at": true,
|
77 |
+
"has_deleted_at": false,
|
78 |
+
"cols_custom": {
|
79 |
+
"user_id": {
|
80 |
+
"macro_type": "unsigned_int",
|
81 |
+
"type": "bigint",
|
82 |
+
"length": 11,
|
83 |
+
"attr": [
|
84 |
+
"UNIQUE"
|
85 |
+
]
|
86 |
+
}
|
87 |
+
},
|
88 |
+
"cols_timestamps": {
|
89 |
+
"backupcode_ready_at": {
|
90 |
+
"comment": "Backup Code Ready"
|
91 |
+
},
|
92 |
+
"email_ready_at": {
|
93 |
+
"comment": "Email Ready"
|
94 |
+
},
|
95 |
+
"ga_ready_at": {
|
96 |
+
"comment": "Google Auth Ready"
|
97 |
+
},
|
98 |
+
"u2f_ready_at": {
|
99 |
+
"comment": "U2F Ready"
|
100 |
+
},
|
101 |
+
"yubi_ready_at": {
|
102 |
+
"comment": "Yubikey Ready"
|
103 |
+
},
|
104 |
+
"first_seen_at": {
|
105 |
+
"comment": "User First Seen"
|
106 |
+
},
|
107 |
+
"last_login_at": {
|
108 |
+
"comment": "Last Login At"
|
109 |
+
},
|
110 |
+
"last_2fa_verified_at": {
|
111 |
+
"comment": "Last 2FA Verified"
|
112 |
+
},
|
113 |
+
"hard_suspended_at": {
|
114 |
+
"comment": "Hard Suspend"
|
115 |
+
},
|
116 |
+
"pass_started_at": {
|
117 |
+
"comment": "Password First Seen or Set"
|
118 |
+
}
|
119 |
+
}
|
120 |
}
|
121 |
}
|
122 |
}
|
config/deprecated/firewall.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 30
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"slug": "section_firewall_blocking_options",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 30
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"slug": "section_firewall_blocking_options",
|
config/deprecated/hack_protect.php
CHANGED
@@ -17,7 +17,8 @@
|
|
17 |
"run_if_wpcli": true
|
18 |
},
|
19 |
"wpcli": {
|
20 |
-
"
|
|
|
21 |
},
|
22 |
"menu_items": [
|
23 |
{
|
@@ -358,18 +359,18 @@
|
|
358 |
{
|
359 |
"key": "realtime_scan_last_at",
|
360 |
"section": "section_non_ui",
|
361 |
-
"transferable": false,
|
362 |
-
"tracking_exclude": true,
|
363 |
"type": "integer",
|
364 |
-
"default": 0
|
|
|
|
|
365 |
},
|
366 |
{
|
367 |
"key": "legacy_db_conversion_at",
|
368 |
"section": "section_non_ui",
|
369 |
-
"transferable": false,
|
370 |
-
"tracking_exclude": true,
|
371 |
"type": "integer",
|
372 |
-
"default": 0
|
|
|
|
|
373 |
}
|
374 |
],
|
375 |
"definitions": {
|
@@ -539,9 +540,7 @@
|
|
539 |
}
|
540 |
},
|
541 |
"db_classes": {
|
542 |
-
"filelocker": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\FileLocker\\Handler"
|
543 |
-
"scanner": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\Scanner\\Handler",
|
544 |
-
"scanq": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\ScanQueue\\Handler"
|
545 |
},
|
546 |
"db_table_filelocker": {
|
547 |
"slug": "filelocker",
|
@@ -559,33 +558,6 @@
|
|
559 |
"notified_at": "Notification Sent"
|
560 |
}
|
561 |
},
|
562 |
-
"db_table_scanner": {
|
563 |
-
"slug": "scanner",
|
564 |
-
"cols_custom": {
|
565 |
-
"hash": "varchar(32) NOT NULL DEFAULT '' COMMENT 'Unique Item Hash'",
|
566 |
-
"meta": "text COMMENT 'Relevant Item Data'",
|
567 |
-
"scan": "varchar(10) NOT NULL DEFAULT 0 COMMENT 'Scan Type'",
|
568 |
-
"severity": "int(3) NOT NULL DEFAULT 1 COMMENT 'Severity'"
|
569 |
-
},
|
570 |
-
"cols_timestamps": {
|
571 |
-
"ignored_at": "Scan Result Ignored",
|
572 |
-
"notified_at": "Scan Notifiation Sent",
|
573 |
-
"attempt_repair_at": "Attempted Repair At"
|
574 |
-
}
|
575 |
-
},
|
576 |
-
"db_table_scanq": {
|
577 |
-
"slug": "scanq",
|
578 |
-
"cols_custom": {
|
579 |
-
"scan": "varchar(3) NOT NULL DEFAULT '' COMMENT 'Scan Slug'",
|
580 |
-
"items": "text COMMENT 'Array of scan items'",
|
581 |
-
"results": "text COMMENT 'Array of results'",
|
582 |
-
"meta": "text COMMENT 'Meta Data'"
|
583 |
-
},
|
584 |
-
"cols_timestamps": {
|
585 |
-
"started_at": "Scan Started",
|
586 |
-
"finished_at": "Scan Completed"
|
587 |
-
}
|
588 |
-
},
|
589 |
"table_name_filelocker": "filelocker",
|
590 |
"url_mal_sigs_simple": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_raw.txt",
|
591 |
"url_mal_sigs_regex": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_re.txt",
|
17 |
"run_if_wpcli": true
|
18 |
},
|
19 |
"wpcli": {
|
20 |
+
"enabled": true,
|
21 |
+
"root": "hack_guard"
|
22 |
},
|
23 |
"menu_items": [
|
24 |
{
|
359 |
{
|
360 |
"key": "realtime_scan_last_at",
|
361 |
"section": "section_non_ui",
|
|
|
|
|
362 |
"type": "integer",
|
363 |
+
"default": 0,
|
364 |
+
"transferable": false,
|
365 |
+
"tracking_exclude": true
|
366 |
},
|
367 |
{
|
368 |
"key": "legacy_db_conversion_at",
|
369 |
"section": "section_non_ui",
|
|
|
|
|
370 |
"type": "integer",
|
371 |
+
"default": 0,
|
372 |
+
"transferable": false,
|
373 |
+
"tracking_exclude": true
|
374 |
}
|
375 |
],
|
376 |
"definitions": {
|
540 |
}
|
541 |
},
|
542 |
"db_classes": {
|
543 |
+
"filelocker": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\FileLocker\\Handler"
|
|
|
|
|
544 |
},
|
545 |
"db_table_filelocker": {
|
546 |
"slug": "filelocker",
|
558 |
"notified_at": "Notification Sent"
|
559 |
}
|
560 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
561 |
"table_name_filelocker": "filelocker",
|
562 |
"url_mal_sigs_simple": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_raw.txt",
|
563 |
"url_mal_sigs_regex": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_re.txt",
|
config/deprecated/headers.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 80
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"primary": true,
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 80
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"primary": true,
|
config/deprecated/ips.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 100
|
18 |
},
|
|
|
|
|
|
|
19 |
"menu_items": [
|
20 |
{
|
21 |
"title": "IP Manager",
|
@@ -154,8 +157,8 @@
|
|
154 |
{
|
155 |
"key": "antibot_high_reputation_minimum",
|
156 |
"section": "section_antibot",
|
157 |
-
"default": 200,
|
158 |
"type": "integer",
|
|
|
159 |
"min": 0,
|
160 |
"link_info": "https://shsec.io/jy",
|
161 |
"link_blog": "https://shsec.io/jz",
|
@@ -180,8 +183,8 @@
|
|
180 |
{
|
181 |
"key": "transgression_limit",
|
182 |
"section": "section_auto_black_list",
|
183 |
-
"default": 10,
|
184 |
"type": "integer",
|
|
|
185 |
"link_info": "https://shsec.io/wpsf24",
|
186 |
"link_blog": "https://shsec.io/wpsf26",
|
187 |
"beacon_id": 207,
|
@@ -715,7 +718,7 @@
|
|
715 |
}
|
716 |
},
|
717 |
"db_classes": {
|
718 |
-
"ip_lists":
|
719 |
},
|
720 |
"ip_lists_table_name": "ip_lists",
|
721 |
"db_table_ip_lists": {
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 100
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"menu_items": [
|
23 |
{
|
24 |
"title": "IP Manager",
|
157 |
{
|
158 |
"key": "antibot_high_reputation_minimum",
|
159 |
"section": "section_antibot",
|
|
|
160 |
"type": "integer",
|
161 |
+
"default": 200,
|
162 |
"min": 0,
|
163 |
"link_info": "https://shsec.io/jy",
|
164 |
"link_blog": "https://shsec.io/jz",
|
183 |
{
|
184 |
"key": "transgression_limit",
|
185 |
"section": "section_auto_black_list",
|
|
|
186 |
"type": "integer",
|
187 |
+
"default": 10,
|
188 |
"link_info": "https://shsec.io/wpsf24",
|
189 |
"link_blog": "https://shsec.io/wpsf26",
|
190 |
"beacon_id": 207,
|
718 |
}
|
719 |
},
|
720 |
"db_classes": {
|
721 |
+
"ip_lists": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\IPs\\Handler"
|
722 |
},
|
723 |
"ip_lists_table_name": "ip_lists",
|
724 |
"db_table_ip_lists": {
|
config/deprecated/license.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_verified_bot": true,
|
17 |
"run_if_wpcli": true
|
18 |
},
|
|
|
|
|
|
|
19 |
"admin_notices": {
|
20 |
"wphashes-token-fail": {
|
21 |
"id": "wphashes-token-fail",
|
@@ -60,37 +63,37 @@
|
|
60 |
{
|
61 |
"key": "license_activated_at",
|
62 |
"section": "section_non_ui",
|
63 |
-
"transferable": false,
|
64 |
"type": "integer",
|
65 |
-
"default": 0
|
|
|
66 |
},
|
67 |
{
|
68 |
"key": "license_deactivated_at",
|
69 |
"section": "section_non_ui",
|
70 |
-
"transferable": false,
|
71 |
"type": "integer",
|
72 |
-
"default": 0
|
|
|
73 |
},
|
74 |
{
|
75 |
"key": "license_last_checked_at",
|
76 |
"section": "section_non_ui",
|
77 |
-
"transferable": false,
|
78 |
"type": "integer",
|
79 |
-
"default": 0
|
|
|
80 |
},
|
81 |
{
|
82 |
"key": "last_warning_email_sent_at",
|
83 |
"section": "section_non_ui",
|
84 |
-
"transferable": false,
|
85 |
"type": "integer",
|
86 |
-
"default": 0
|
|
|
87 |
},
|
88 |
{
|
89 |
"key": "last_deactivated_email_sent_at",
|
90 |
"section": "section_non_ui",
|
91 |
-
"transferable": false,
|
92 |
"type": "integer",
|
93 |
-
"default": 0
|
|
|
94 |
},
|
95 |
{
|
96 |
"key": "last_errors",
|
@@ -102,10 +105,10 @@
|
|
102 |
{
|
103 |
"key": "last_error_at",
|
104 |
"section": "section_non_ui",
|
105 |
-
"sensitive": true,
|
106 |
-
"transferable": false,
|
107 |
"type": "integer",
|
108 |
-
"default": 0
|
|
|
|
|
109 |
},
|
110 |
{
|
111 |
"key": "keyless_handshake_hash",
|
@@ -118,10 +121,10 @@
|
|
118 |
{
|
119 |
"key": "keyless_handshake_until",
|
120 |
"section": "section_non_ui",
|
121 |
-
"sensitive": true,
|
122 |
-
"transferable": false,
|
123 |
"type": "integer",
|
124 |
-
"default": 0
|
|
|
|
|
125 |
},
|
126 |
{
|
127 |
"key": "license_data",
|
16 |
"run_if_verified_bot": true,
|
17 |
"run_if_wpcli": true
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"admin_notices": {
|
23 |
"wphashes-token-fail": {
|
24 |
"id": "wphashes-token-fail",
|
63 |
{
|
64 |
"key": "license_activated_at",
|
65 |
"section": "section_non_ui",
|
|
|
66 |
"type": "integer",
|
67 |
+
"default": 0,
|
68 |
+
"transferable": false
|
69 |
},
|
70 |
{
|
71 |
"key": "license_deactivated_at",
|
72 |
"section": "section_non_ui",
|
|
|
73 |
"type": "integer",
|
74 |
+
"default": 0,
|
75 |
+
"transferable": false
|
76 |
},
|
77 |
{
|
78 |
"key": "license_last_checked_at",
|
79 |
"section": "section_non_ui",
|
|
|
80 |
"type": "integer",
|
81 |
+
"default": 0,
|
82 |
+
"transferable": false
|
83 |
},
|
84 |
{
|
85 |
"key": "last_warning_email_sent_at",
|
86 |
"section": "section_non_ui",
|
|
|
87 |
"type": "integer",
|
88 |
+
"default": 0,
|
89 |
+
"transferable": false
|
90 |
},
|
91 |
{
|
92 |
"key": "last_deactivated_email_sent_at",
|
93 |
"section": "section_non_ui",
|
|
|
94 |
"type": "integer",
|
95 |
+
"default": 0,
|
96 |
+
"transferable": false
|
97 |
},
|
98 |
{
|
99 |
"key": "last_errors",
|
105 |
{
|
106 |
"key": "last_error_at",
|
107 |
"section": "section_non_ui",
|
|
|
|
|
108 |
"type": "integer",
|
109 |
+
"default": 0,
|
110 |
+
"sensitive": true,
|
111 |
+
"transferable": false
|
112 |
},
|
113 |
{
|
114 |
"key": "keyless_handshake_hash",
|
121 |
{
|
122 |
"key": "keyless_handshake_until",
|
123 |
"section": "section_non_ui",
|
|
|
|
|
124 |
"type": "integer",
|
125 |
+
"default": 0,
|
126 |
+
"sensitive": true,
|
127 |
+
"transferable": false
|
128 |
},
|
129 |
{
|
130 |
"key": "license_data",
|
config/deprecated/lockdown.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 90
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"primary": true,
|
@@ -103,11 +106,14 @@
|
|
103 |
},
|
104 |
{
|
105 |
"key": "api_namespace_exclusions",
|
106 |
-
"section": "
|
107 |
"default": [
|
108 |
"contact-form-7",
|
109 |
"jetpack",
|
110 |
-
"
|
|
|
|
|
|
|
111 |
],
|
112 |
"type": "array",
|
113 |
"link_info": "",
|
@@ -175,13 +181,6 @@
|
|
175 |
}
|
176 |
],
|
177 |
"definitions": {
|
178 |
-
"default_restapi_exclusions": [
|
179 |
-
"contact-form-7",
|
180 |
-
"jetpack",
|
181 |
-
"tho",
|
182 |
-
"wpstatistics",
|
183 |
-
"woocommerce"
|
184 |
-
],
|
185 |
"events": {
|
186 |
"block_anonymous_restapi": {
|
187 |
"audit_params": [
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 90
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"primary": true,
|
106 |
},
|
107 |
{
|
108 |
"key": "api_namespace_exclusions",
|
109 |
+
"section": "section_apixml",
|
110 |
"default": [
|
111 |
"contact-form-7",
|
112 |
"jetpack",
|
113 |
+
"tho",
|
114 |
+
"woocommerce",
|
115 |
+
"tribe",
|
116 |
+
"wpstatistics"
|
117 |
],
|
118 |
"type": "array",
|
119 |
"link_info": "",
|
181 |
}
|
182 |
],
|
183 |
"definitions": {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
"events": {
|
185 |
"block_anonymous_restapi": {
|
186 |
"audit_params": [
|
config/deprecated/login_protect.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
|
|
|
|
|
|
19 |
"admin_notices": {
|
20 |
"email-verification-sent": {
|
21 |
"id": "email-verification-sent",
|
@@ -142,33 +145,81 @@
|
|
142 |
"link_info": "https://shsec.io/5q",
|
143 |
"link_blog": "https://shsec.io/5r",
|
144 |
"beacon_id": 316,
|
145 |
-
"name": "Hide Login
|
146 |
-
"summary": "
|
147 |
"description": "Creating a path here will disable your 'wp-login.php'. Only letters and numbers are permitted: abc123"
|
148 |
},
|
149 |
{
|
150 |
-
"key": "
|
151 |
-
"section": "
|
152 |
-
"
|
153 |
-
"
|
154 |
-
"
|
155 |
-
"
|
156 |
-
"
|
157 |
-
"
|
158 |
-
"
|
159 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
},
|
161 |
{
|
162 |
"key": "mfa_skip",
|
163 |
"section": "section_multifactor_authentication",
|
164 |
"premium": true,
|
|
|
165 |
"default": 0,
|
166 |
"min": 0,
|
167 |
-
"type": "integer",
|
168 |
"link_info": "https://shsec.io/b1",
|
169 |
"link_blog": "",
|
170 |
"beacon_id": 141,
|
171 |
-
"name": "
|
172 |
"summary": "A User Can Bypass Multi-Factor Authentication (MFA) For The Set Number Of Days",
|
173 |
"description": "Enter the number of days a user can bypass future MFA after a successful MFA-login. 0 to disable."
|
174 |
},
|
@@ -197,6 +248,19 @@
|
|
197 |
"summary": "Allow Users To Use Google Authenticator",
|
198 |
"description": "When enabled, users will have the option to add Google Authenticator to their WordPress user profile."
|
199 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
{
|
201 |
"key": "enable_email_authentication",
|
202 |
"section": "section_2fa_email",
|
@@ -210,22 +274,22 @@
|
|
210 |
"description": "All users will be required to verify their login by email-based two-factor authentication."
|
211 |
},
|
212 |
{
|
213 |
-
"key":
|
214 |
-
"section":
|
215 |
-
"advanced":
|
216 |
-
"type":
|
217 |
-
"default":
|
218 |
"contributor",
|
219 |
"author",
|
220 |
"editor",
|
221 |
"administrator"
|
222 |
],
|
223 |
-
"link_info":
|
224 |
-
"link_blog":
|
225 |
-
"beacon_id":
|
226 |
-
"name":
|
227 |
-
"summary":
|
228 |
-
"description":
|
229 |
},
|
230 |
{
|
231 |
"key": "email_any_user_set",
|
@@ -287,9 +351,9 @@
|
|
287 |
{
|
288 |
"key": "login_limit_interval",
|
289 |
"section": "section_brute_force_login_protection",
|
290 |
-
"default": "5",
|
291 |
-
"min": 0,
|
292 |
"type": "integer",
|
|
|
|
|
293 |
"link_info": "https://shsec.io/3q",
|
294 |
"link_blog": "https://shsec.io/9o",
|
295 |
"beacon_id": 242,
|
@@ -448,18 +512,12 @@
|
|
448 |
"sensitive": true,
|
449 |
"type": "text",
|
450 |
"default": ""
|
451 |
-
},
|
452 |
-
{
|
453 |
-
"key": "use_login_intent_page",
|
454 |
-
"section": "section_non_ui",
|
455 |
-
"transferable": false,
|
456 |
-
"type": "boolean",
|
457 |
-
"value": true
|
458 |
}
|
459 |
],
|
460 |
"definitions": {
|
461 |
-
"login_intent_timeout":
|
462 |
-
"
|
|
|
463 |
"2fa_verify_success": {
|
464 |
"audit_params": [
|
465 |
"user_login",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"admin_notices": {
|
23 |
"email-verification-sent": {
|
24 |
"id": "email-verification-sent",
|
145 |
"link_info": "https://shsec.io/5q",
|
146 |
"link_blog": "https://shsec.io/5r",
|
147 |
"beacon_id": 316,
|
148 |
+
"name": "Hide WP Login & Admin",
|
149 |
+
"summary": "Hide The WordPress Login And Admin Areas",
|
150 |
"description": "Creating a path here will disable your 'wp-login.php'. Only letters and numbers are permitted: abc123"
|
151 |
},
|
152 |
{
|
153 |
+
"key": "rename_wplogin_redirect",
|
154 |
+
"section": "section_rename_wplogin",
|
155 |
+
"advanced": true,
|
156 |
+
"sensitive": true,
|
157 |
+
"default": "",
|
158 |
+
"type": "text",
|
159 |
+
"link_info": "https://shsec.io/5q",
|
160 |
+
"link_blog": "https://shsec.io/5r",
|
161 |
+
"beacon_id": 455,
|
162 |
+
"name": "WP Login & Admin Redirect",
|
163 |
+
"summary": "Automatic Redirect URL For Hidden Pages",
|
164 |
+
"description": "Automatically redirect requests to this location for the hidden pages."
|
165 |
+
},
|
166 |
+
{
|
167 |
+
"key": "mfa_verify_page",
|
168 |
+
"section": "section_multifactor_authentication",
|
169 |
+
"default": "custom_shield",
|
170 |
+
"type": "select",
|
171 |
+
"value_options": [
|
172 |
+
{
|
173 |
+
"value_key": "custom_shield",
|
174 |
+
"text": "Custom Shield MFA Page"
|
175 |
+
},
|
176 |
+
{
|
177 |
+
"value_key": "wp_login",
|
178 |
+
"text": "WP Login Page (beta)"
|
179 |
+
}
|
180 |
+
],
|
181 |
+
"link_info": "",
|
182 |
+
"link_blog": "",
|
183 |
+
"beacon_id": 0,
|
184 |
+
"name": "MFA Verification Page",
|
185 |
+
"summary": "Type Of MFA Verification Page",
|
186 |
+
"description": "Choose the page type for MFA verification"
|
187 |
+
},
|
188 |
+
{
|
189 |
+
"key": "mfa_user_setup_pages",
|
190 |
+
"section": "section_multifactor_authentication",
|
191 |
+
"type": "multiple_select",
|
192 |
+
"default": [
|
193 |
+
"profile"
|
194 |
+
],
|
195 |
+
"value_options": [
|
196 |
+
{
|
197 |
+
"value_key": "profile",
|
198 |
+
"text": "WP User Profile Page"
|
199 |
+
},
|
200 |
+
{
|
201 |
+
"value_key": "dedicated",
|
202 |
+
"text": "Dedicated WP Admin Page"
|
203 |
+
}
|
204 |
+
],
|
205 |
+
"link_info": "",
|
206 |
+
"link_blog": "",
|
207 |
+
"beacon_id": 456,
|
208 |
+
"name": "User 2FA Setup",
|
209 |
+
"summary": "User 2FA Setup Page Locations",
|
210 |
+
"description": "Pages available to users to configure 2FA."
|
211 |
},
|
212 |
{
|
213 |
"key": "mfa_skip",
|
214 |
"section": "section_multifactor_authentication",
|
215 |
"premium": true,
|
216 |
+
"type": "integer",
|
217 |
"default": 0,
|
218 |
"min": 0,
|
|
|
219 |
"link_info": "https://shsec.io/b1",
|
220 |
"link_blog": "",
|
221 |
"beacon_id": 141,
|
222 |
+
"name": "2FA Remember Me",
|
223 |
"summary": "A User Can Bypass Multi-Factor Authentication (MFA) For The Set Number Of Days",
|
224 |
"description": "Enter the number of days a user can bypass future MFA after a successful MFA-login. 0 to disable."
|
225 |
},
|
248 |
"summary": "Allow Users To Use Google Authenticator",
|
249 |
"description": "When enabled, users will have the option to add Google Authenticator to their WordPress user profile."
|
250 |
},
|
251 |
+
{
|
252 |
+
"key": "enable_sms_auth",
|
253 |
+
"section": "section_non_ui",
|
254 |
+
"premium": true,
|
255 |
+
"default": "N",
|
256 |
+
"type": "checkbox",
|
257 |
+
"link_info": "",
|
258 |
+
"link_blog": "",
|
259 |
+
"beacon_id": 245,
|
260 |
+
"name": "Enable SMS Auth",
|
261 |
+
"summary": "Enable SMS Authentication",
|
262 |
+
"description": "When enabled, users will have the option to add SMS Auth to their WordPress user profile."
|
263 |
+
},
|
264 |
{
|
265 |
"key": "enable_email_authentication",
|
266 |
"section": "section_2fa_email",
|
274 |
"description": "All users will be required to verify their login by email-based two-factor authentication."
|
275 |
},
|
276 |
{
|
277 |
+
"key": "two_factor_auth_user_roles",
|
278 |
+
"section": "section_2fa_email",
|
279 |
+
"advanced": true,
|
280 |
+
"type": "array",
|
281 |
+
"default": [
|
282 |
"contributor",
|
283 |
"author",
|
284 |
"editor",
|
285 |
"administrator"
|
286 |
],
|
287 |
+
"link_info": "https://shsec.io/4v",
|
288 |
+
"link_blog": "",
|
289 |
+
"beacon_id": 243,
|
290 |
+
"name": "Enforce - Email Authentication",
|
291 |
+
"summary": "All User Roles Subject To Email Authentication",
|
292 |
+
"description": "Enforces email-based authentication on all users with the selected roles. Note: This setting only applies to email authentication."
|
293 |
},
|
294 |
{
|
295 |
"key": "email_any_user_set",
|
351 |
{
|
352 |
"key": "login_limit_interval",
|
353 |
"section": "section_brute_force_login_protection",
|
|
|
|
|
354 |
"type": "integer",
|
355 |
+
"default": 5,
|
356 |
+
"min": 0,
|
357 |
"link_info": "https://shsec.io/3q",
|
358 |
"link_blog": "https://shsec.io/9o",
|
359 |
"beacon_id": 242,
|
512 |
"sensitive": true,
|
513 |
"type": "text",
|
514 |
"default": ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
}
|
516 |
],
|
517 |
"definitions": {
|
518 |
+
"login_intent_timeout": 5,
|
519 |
+
"login_intent_max_attempts": 5,
|
520 |
+
"events": {
|
521 |
"2fa_verify_success": {
|
522 |
"audit_params": [
|
523 |
"user_login",
|
config/deprecated/plugin.php
CHANGED
@@ -17,6 +17,9 @@
|
|
17 |
"run_if_wpcli": true,
|
18 |
"order": 10
|
19 |
},
|
|
|
|
|
|
|
20 |
"admin_notices": {
|
21 |
"plugin-too-old": {
|
22 |
"id": "plugin-too-old",
|
17 |
"run_if_wpcli": true,
|
18 |
"order": 10
|
19 |
},
|
20 |
+
"wpcli": {
|
21 |
+
"enabled": true
|
22 |
+
},
|
23 |
"admin_notices": {
|
24 |
"plugin-too-old": {
|
25 |
"id": "plugin-too-old",
|
config/deprecated/reporting.php
CHANGED
@@ -14,6 +14,9 @@
|
|
14 |
"run_if_wpcli": true,
|
15 |
"tracking_exclude": true
|
16 |
},
|
|
|
|
|
|
|
17 |
"menu_items": [
|
18 |
{
|
19 |
"title": "Stats (beta)",
|
14 |
"run_if_wpcli": true,
|
15 |
"tracking_exclude": true
|
16 |
},
|
17 |
+
"wpcli": {
|
18 |
+
"enabled": true
|
19 |
+
},
|
20 |
"menu_items": [
|
21 |
{
|
22 |
"title": "Stats (beta)",
|
config/deprecated/sessions.php
CHANGED
@@ -50,8 +50,8 @@
|
|
50 |
"key": "autoadd_sessions_started_at",
|
51 |
"section": "section_non_ui",
|
52 |
"type": "integer",
|
53 |
-
"
|
54 |
-
"
|
55 |
}
|
56 |
],
|
57 |
"definitions": {
|
50 |
"key": "autoadd_sessions_started_at",
|
51 |
"section": "section_non_ui",
|
52 |
"type": "integer",
|
53 |
+
"default": 0,
|
54 |
+
"transferable": false
|
55 |
}
|
56 |
],
|
57 |
"definitions": {
|
config/deprecated/traffic.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 110
|
18 |
},
|
|
|
|
|
|
|
19 |
"menu_items": [
|
20 |
{
|
21 |
"title": "Traffic Log",
|
@@ -165,9 +168,9 @@
|
|
165 |
"key": "auto_clean",
|
166 |
"section": "section_traffic_options",
|
167 |
"advanced": true,
|
|
|
168 |
"default": 7,
|
169 |
"min": 1,
|
170 |
-
"type": "integer",
|
171 |
"link_info": "",
|
172 |
"link_blog": "",
|
173 |
"name": "Auto Expiry Cleaning",
|
@@ -190,9 +193,9 @@
|
|
190 |
{
|
191 |
"key": "limit_requests",
|
192 |
"section": "section_traffic_limiter",
|
193 |
-
"default": "60",
|
194 |
-
"min": 0,
|
195 |
"type": "integer",
|
|
|
|
|
196 |
"link_info": "",
|
197 |
"link_blog": "",
|
198 |
"name": "Max Request Limit",
|
@@ -202,9 +205,9 @@
|
|
202 |
{
|
203 |
"key": "limit_time_span",
|
204 |
"section": "section_traffic_limiter",
|
205 |
-
"default": "60",
|
206 |
-
"min": 0,
|
207 |
"type": "integer",
|
|
|
|
|
208 |
"link_info": "",
|
209 |
"link_blog": "",
|
210 |
"name": "Request Limit Time Interval",
|
@@ -213,7 +216,7 @@
|
|
213 |
}
|
214 |
],
|
215 |
"definitions": {
|
216 |
-
"events":
|
217 |
"request_limit_exceeded": {
|
218 |
"audit_params": [
|
219 |
"requests",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 110
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"menu_items": [
|
23 |
{
|
24 |
"title": "Traffic Log",
|
168 |
"key": "auto_clean",
|
169 |
"section": "section_traffic_options",
|
170 |
"advanced": true,
|
171 |
+
"type": "integer",
|
172 |
"default": 7,
|
173 |
"min": 1,
|
|
|
174 |
"link_info": "",
|
175 |
"link_blog": "",
|
176 |
"name": "Auto Expiry Cleaning",
|
193 |
{
|
194 |
"key": "limit_requests",
|
195 |
"section": "section_traffic_limiter",
|
|
|
|
|
196 |
"type": "integer",
|
197 |
+
"default": 60,
|
198 |
+
"min": 0,
|
199 |
"link_info": "",
|
200 |
"link_blog": "",
|
201 |
"name": "Max Request Limit",
|
205 |
{
|
206 |
"key": "limit_time_span",
|
207 |
"section": "section_traffic_limiter",
|
|
|
|
|
208 |
"type": "integer",
|
209 |
+
"default": 60,
|
210 |
+
"min": 0,
|
211 |
"link_info": "",
|
212 |
"link_blog": "",
|
213 |
"name": "Request Limit Time Interval",
|
216 |
}
|
217 |
],
|
218 |
"definitions": {
|
219 |
+
"events": {
|
220 |
"request_limit_exceeded": {
|
221 |
"audit_params": [
|
222 |
"requests",
|
config/deprecated/user_management.php
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"slug": "section_user_session_management",
|
@@ -129,9 +132,9 @@
|
|
129 |
{
|
130 |
"key": "session_timeout_interval",
|
131 |
"section": "section_user_session_management",
|
|
|
132 |
"default": 2,
|
133 |
"min": 0,
|
134 |
-
"type": "integer",
|
135 |
"link_info": "",
|
136 |
"link_blog": "",
|
137 |
"name": "Session Timeout",
|
@@ -141,9 +144,9 @@
|
|
141 |
{
|
142 |
"key": "session_idle_timeout_interval",
|
143 |
"section": "section_user_session_management",
|
|
|
144 |
"default": 48,
|
145 |
"min": 0,
|
146 |
-
"type": "integer",
|
147 |
"link_info": "https://support.getshieldsecurity.com/support/solutions/articles/3000070590",
|
148 |
"link_blog": "",
|
149 |
"beacon_id": 397,
|
@@ -166,9 +169,9 @@
|
|
166 |
{
|
167 |
"key": "session_username_concurrent_limit",
|
168 |
"section": "section_user_session_management",
|
|
|
169 |
"default": 0,
|
170 |
"min": 0,
|
171 |
-
"type": "integer",
|
172 |
"link_info": "",
|
173 |
"link_blog": "",
|
174 |
"name": "Max Simultaneous Sessions",
|
@@ -269,7 +272,7 @@
|
|
269 |
"section": "section_passwords",
|
270 |
"premium": true,
|
271 |
"type": "integer",
|
272 |
-
"default":
|
273 |
"link_info": "",
|
274 |
"link_blog": "",
|
275 |
"name": "Minimum Length",
|
@@ -327,7 +330,7 @@
|
|
327 |
"section": "section_passwords",
|
328 |
"premium": true,
|
329 |
"type": "integer",
|
330 |
-
"default":
|
331 |
"min": 0,
|
332 |
"link_info": "",
|
333 |
"link_blog": "",
|
@@ -395,9 +398,9 @@
|
|
395 |
{
|
396 |
"key": "autoadd_sessions_started_at",
|
397 |
"section": "section_non_ui",
|
398 |
-
"transferable": false,
|
399 |
"type": "integer",
|
400 |
-
"default": 0
|
|
|
401 |
},
|
402 |
{
|
403 |
"key": "hard_suspended_userids",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"slug": "section_user_session_management",
|
132 |
{
|
133 |
"key": "session_timeout_interval",
|
134 |
"section": "section_user_session_management",
|
135 |
+
"type": "integer",
|
136 |
"default": 2,
|
137 |
"min": 0,
|
|
|
138 |
"link_info": "",
|
139 |
"link_blog": "",
|
140 |
"name": "Session Timeout",
|
144 |
{
|
145 |
"key": "session_idle_timeout_interval",
|
146 |
"section": "section_user_session_management",
|
147 |
+
"type": "integer",
|
148 |
"default": 48,
|
149 |
"min": 0,
|
|
|
150 |
"link_info": "https://support.getshieldsecurity.com/support/solutions/articles/3000070590",
|
151 |
"link_blog": "",
|
152 |
"beacon_id": 397,
|
169 |
{
|
170 |
"key": "session_username_concurrent_limit",
|
171 |
"section": "section_user_session_management",
|
172 |
+
"type": "integer",
|
173 |
"default": 0,
|
174 |
"min": 0,
|
|
|
175 |
"link_info": "",
|
176 |
"link_blog": "",
|
177 |
"name": "Max Simultaneous Sessions",
|
272 |
"section": "section_passwords",
|
273 |
"premium": true,
|
274 |
"type": "integer",
|
275 |
+
"default": 12,
|
276 |
"link_info": "",
|
277 |
"link_blog": "",
|
278 |
"name": "Minimum Length",
|
330 |
"section": "section_passwords",
|
331 |
"premium": true,
|
332 |
"type": "integer",
|
333 |
+
"default": 60,
|
334 |
"min": 0,
|
335 |
"link_info": "",
|
336 |
"link_blog": "",
|
398 |
{
|
399 |
"key": "autoadd_sessions_started_at",
|
400 |
"section": "section_non_ui",
|
|
|
401 |
"type": "integer",
|
402 |
+
"default": 0,
|
403 |
+
"transferable": false
|
404 |
},
|
405 |
{
|
406 |
"key": "hard_suspended_userids",
|
config/firewall.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 30
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"slug": "section_firewall_blocking_options",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 30
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"slug": "section_firewall_blocking_options",
|
config/hack_protect.json
CHANGED
@@ -17,7 +17,8 @@
|
|
17 |
"run_if_wpcli": true
|
18 |
},
|
19 |
"wpcli": {
|
20 |
-
"
|
|
|
21 |
},
|
22 |
"menu_items": [
|
23 |
{
|
@@ -358,18 +359,18 @@
|
|
358 |
{
|
359 |
"key": "realtime_scan_last_at",
|
360 |
"section": "section_non_ui",
|
361 |
-
"transferable": false,
|
362 |
-
"tracking_exclude": true,
|
363 |
"type": "integer",
|
364 |
-
"default": 0
|
|
|
|
|
365 |
},
|
366 |
{
|
367 |
"key": "legacy_db_conversion_at",
|
368 |
"section": "section_non_ui",
|
369 |
-
"transferable": false,
|
370 |
-
"tracking_exclude": true,
|
371 |
"type": "integer",
|
372 |
-
"default": 0
|
|
|
|
|
373 |
}
|
374 |
],
|
375 |
"definitions": {
|
@@ -539,9 +540,7 @@
|
|
539 |
}
|
540 |
},
|
541 |
"db_classes": {
|
542 |
-
"filelocker": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\FileLocker\\Handler"
|
543 |
-
"scanner": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\Scanner\\Handler",
|
544 |
-
"scanq": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\ScanQueue\\Handler"
|
545 |
},
|
546 |
"db_table_filelocker": {
|
547 |
"slug": "filelocker",
|
@@ -559,33 +558,6 @@
|
|
559 |
"notified_at": "Notification Sent"
|
560 |
}
|
561 |
},
|
562 |
-
"db_table_scanner": {
|
563 |
-
"slug": "scanner",
|
564 |
-
"cols_custom": {
|
565 |
-
"hash": "varchar(32) NOT NULL DEFAULT '' COMMENT 'Unique Item Hash'",
|
566 |
-
"meta": "text COMMENT 'Relevant Item Data'",
|
567 |
-
"scan": "varchar(10) NOT NULL DEFAULT 0 COMMENT 'Scan Type'",
|
568 |
-
"severity": "int(3) NOT NULL DEFAULT 1 COMMENT 'Severity'"
|
569 |
-
},
|
570 |
-
"cols_timestamps": {
|
571 |
-
"ignored_at": "Scan Result Ignored",
|
572 |
-
"notified_at": "Scan Notifiation Sent",
|
573 |
-
"attempt_repair_at": "Attempted Repair At"
|
574 |
-
}
|
575 |
-
},
|
576 |
-
"db_table_scanq": {
|
577 |
-
"slug": "scanq",
|
578 |
-
"cols_custom": {
|
579 |
-
"scan": "varchar(3) NOT NULL DEFAULT '' COMMENT 'Scan Slug'",
|
580 |
-
"items": "text COMMENT 'Array of scan items'",
|
581 |
-
"results": "text COMMENT 'Array of results'",
|
582 |
-
"meta": "text COMMENT 'Meta Data'"
|
583 |
-
},
|
584 |
-
"cols_timestamps": {
|
585 |
-
"started_at": "Scan Started",
|
586 |
-
"finished_at": "Scan Completed"
|
587 |
-
}
|
588 |
-
},
|
589 |
"table_name_filelocker": "filelocker",
|
590 |
"url_mal_sigs_simple": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_raw.txt",
|
591 |
"url_mal_sigs_regex": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_re.txt",
|
17 |
"run_if_wpcli": true
|
18 |
},
|
19 |
"wpcli": {
|
20 |
+
"enabled": true,
|
21 |
+
"root": "hack_guard"
|
22 |
},
|
23 |
"menu_items": [
|
24 |
{
|
359 |
{
|
360 |
"key": "realtime_scan_last_at",
|
361 |
"section": "section_non_ui",
|
|
|
|
|
362 |
"type": "integer",
|
363 |
+
"default": 0,
|
364 |
+
"transferable": false,
|
365 |
+
"tracking_exclude": true
|
366 |
},
|
367 |
{
|
368 |
"key": "legacy_db_conversion_at",
|
369 |
"section": "section_non_ui",
|
|
|
|
|
370 |
"type": "integer",
|
371 |
+
"default": 0,
|
372 |
+
"transferable": false,
|
373 |
+
"tracking_exclude": true
|
374 |
}
|
375 |
],
|
376 |
"definitions": {
|
540 |
}
|
541 |
},
|
542 |
"db_classes": {
|
543 |
+
"filelocker": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\FileLocker\\Handler"
|
|
|
|
|
544 |
},
|
545 |
"db_table_filelocker": {
|
546 |
"slug": "filelocker",
|
558 |
"notified_at": "Notification Sent"
|
559 |
}
|
560 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
561 |
"table_name_filelocker": "filelocker",
|
562 |
"url_mal_sigs_simple": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_raw.txt",
|
563 |
"url_mal_sigs_regex": "https://raw.githubusercontent.com/scr34m/php-malware-scanner/master/definitions/patterns_re.txt",
|
config/headers.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 80
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"primary": true,
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 80
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"primary": true,
|
config/ips.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 100
|
18 |
},
|
|
|
|
|
|
|
19 |
"menu_items": [
|
20 |
{
|
21 |
"title": "IP Manager",
|
@@ -154,8 +157,8 @@
|
|
154 |
{
|
155 |
"key": "antibot_high_reputation_minimum",
|
156 |
"section": "section_antibot",
|
157 |
-
"default": 200,
|
158 |
"type": "integer",
|
|
|
159 |
"min": 0,
|
160 |
"link_info": "https://shsec.io/jy",
|
161 |
"link_blog": "https://shsec.io/jz",
|
@@ -180,8 +183,8 @@
|
|
180 |
{
|
181 |
"key": "transgression_limit",
|
182 |
"section": "section_auto_black_list",
|
183 |
-
"default": 10,
|
184 |
"type": "integer",
|
|
|
185 |
"link_info": "https://shsec.io/wpsf24",
|
186 |
"link_blog": "https://shsec.io/wpsf26",
|
187 |
"beacon_id": 207,
|
@@ -715,7 +718,7 @@
|
|
715 |
}
|
716 |
},
|
717 |
"db_classes": {
|
718 |
-
"ip_lists":
|
719 |
},
|
720 |
"ip_lists_table_name": "ip_lists",
|
721 |
"db_table_ip_lists": {
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 100
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"menu_items": [
|
23 |
{
|
24 |
"title": "IP Manager",
|
157 |
{
|
158 |
"key": "antibot_high_reputation_minimum",
|
159 |
"section": "section_antibot",
|
|
|
160 |
"type": "integer",
|
161 |
+
"default": 200,
|
162 |
"min": 0,
|
163 |
"link_info": "https://shsec.io/jy",
|
164 |
"link_blog": "https://shsec.io/jz",
|
183 |
{
|
184 |
"key": "transgression_limit",
|
185 |
"section": "section_auto_black_list",
|
|
|
186 |
"type": "integer",
|
187 |
+
"default": 10,
|
188 |
"link_info": "https://shsec.io/wpsf24",
|
189 |
"link_blog": "https://shsec.io/wpsf26",
|
190 |
"beacon_id": 207,
|
718 |
}
|
719 |
},
|
720 |
"db_classes": {
|
721 |
+
"ip_lists": "\\FernleafSystems\\Wordpress\\Plugin\\Shield\\Databases\\IPs\\Handler"
|
722 |
},
|
723 |
"ip_lists_table_name": "ip_lists",
|
724 |
"db_table_ip_lists": {
|
config/license.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_verified_bot": true,
|
17 |
"run_if_wpcli": true
|
18 |
},
|
|
|
|
|
|
|
19 |
"admin_notices": {
|
20 |
"wphashes-token-fail": {
|
21 |
"id": "wphashes-token-fail",
|
@@ -60,37 +63,37 @@
|
|
60 |
{
|
61 |
"key": "license_activated_at",
|
62 |
"section": "section_non_ui",
|
63 |
-
"transferable": false,
|
64 |
"type": "integer",
|
65 |
-
"default": 0
|
|
|
66 |
},
|
67 |
{
|
68 |
"key": "license_deactivated_at",
|
69 |
"section": "section_non_ui",
|
70 |
-
"transferable": false,
|
71 |
"type": "integer",
|
72 |
-
"default": 0
|
|
|
73 |
},
|
74 |
{
|
75 |
"key": "license_last_checked_at",
|
76 |
"section": "section_non_ui",
|
77 |
-
"transferable": false,
|
78 |
"type": "integer",
|
79 |
-
"default": 0
|
|
|
80 |
},
|
81 |
{
|
82 |
"key": "last_warning_email_sent_at",
|
83 |
"section": "section_non_ui",
|
84 |
-
"transferable": false,
|
85 |
"type": "integer",
|
86 |
-
"default": 0
|
|
|
87 |
},
|
88 |
{
|
89 |
"key": "last_deactivated_email_sent_at",
|
90 |
"section": "section_non_ui",
|
91 |
-
"transferable": false,
|
92 |
"type": "integer",
|
93 |
-
"default": 0
|
|
|
94 |
},
|
95 |
{
|
96 |
"key": "last_errors",
|
@@ -102,10 +105,10 @@
|
|
102 |
{
|
103 |
"key": "last_error_at",
|
104 |
"section": "section_non_ui",
|
105 |
-
"sensitive": true,
|
106 |
-
"transferable": false,
|
107 |
"type": "integer",
|
108 |
-
"default": 0
|
|
|
|
|
109 |
},
|
110 |
{
|
111 |
"key": "keyless_handshake_hash",
|
@@ -118,10 +121,10 @@
|
|
118 |
{
|
119 |
"key": "keyless_handshake_until",
|
120 |
"section": "section_non_ui",
|
121 |
-
"sensitive": true,
|
122 |
-
"transferable": false,
|
123 |
"type": "integer",
|
124 |
-
"default": 0
|
|
|
|
|
125 |
},
|
126 |
{
|
127 |
"key": "license_data",
|
16 |
"run_if_verified_bot": true,
|
17 |
"run_if_wpcli": true
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"admin_notices": {
|
23 |
"wphashes-token-fail": {
|
24 |
"id": "wphashes-token-fail",
|
63 |
{
|
64 |
"key": "license_activated_at",
|
65 |
"section": "section_non_ui",
|
|
|
66 |
"type": "integer",
|
67 |
+
"default": 0,
|
68 |
+
"transferable": false
|
69 |
},
|
70 |
{
|
71 |
"key": "license_deactivated_at",
|
72 |
"section": "section_non_ui",
|
|
|
73 |
"type": "integer",
|
74 |
+
"default": 0,
|
75 |
+
"transferable": false
|
76 |
},
|
77 |
{
|
78 |
"key": "license_last_checked_at",
|
79 |
"section": "section_non_ui",
|
|
|
80 |
"type": "integer",
|
81 |
+
"default": 0,
|
82 |
+
"transferable": false
|
83 |
},
|
84 |
{
|
85 |
"key": "last_warning_email_sent_at",
|
86 |
"section": "section_non_ui",
|
|
|
87 |
"type": "integer",
|
88 |
+
"default": 0,
|
89 |
+
"transferable": false
|
90 |
},
|
91 |
{
|
92 |
"key": "last_deactivated_email_sent_at",
|
93 |
"section": "section_non_ui",
|
|
|
94 |
"type": "integer",
|
95 |
+
"default": 0,
|
96 |
+
"transferable": false
|
97 |
},
|
98 |
{
|
99 |
"key": "last_errors",
|
105 |
{
|
106 |
"key": "last_error_at",
|
107 |
"section": "section_non_ui",
|
|
|
|
|
108 |
"type": "integer",
|
109 |
+
"default": 0,
|
110 |
+
"sensitive": true,
|
111 |
+
"transferable": false
|
112 |
},
|
113 |
{
|
114 |
"key": "keyless_handshake_hash",
|
121 |
{
|
122 |
"key": "keyless_handshake_until",
|
123 |
"section": "section_non_ui",
|
|
|
|
|
124 |
"type": "integer",
|
125 |
+
"default": 0,
|
126 |
+
"sensitive": true,
|
127 |
+
"transferable": false
|
128 |
},
|
129 |
{
|
130 |
"key": "license_data",
|
config/lockdown.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 90
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"primary": true,
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 90
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"primary": true,
|
config/login_protect.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
|
|
|
|
|
|
19 |
"admin_notices": {
|
20 |
"email-verification-sent": {
|
21 |
"id": "email-verification-sent",
|
@@ -142,33 +145,81 @@
|
|
142 |
"link_info": "https://shsec.io/5q",
|
143 |
"link_blog": "https://shsec.io/5r",
|
144 |
"beacon_id": 316,
|
145 |
-
"name": "Hide Login
|
146 |
-
"summary": "
|
147 |
"description": "Creating a path here will disable your 'wp-login.php'. Only letters and numbers are permitted: abc123"
|
148 |
},
|
149 |
{
|
150 |
-
"key": "
|
151 |
-
"section": "
|
152 |
-
"
|
153 |
-
"
|
154 |
-
"
|
155 |
-
"
|
156 |
-
"
|
157 |
-
"
|
158 |
-
"
|
159 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
},
|
161 |
{
|
162 |
"key": "mfa_skip",
|
163 |
"section": "section_multifactor_authentication",
|
164 |
"premium": true,
|
|
|
165 |
"default": 0,
|
166 |
"min": 0,
|
167 |
-
"type": "integer",
|
168 |
"link_info": "https://shsec.io/b1",
|
169 |
"link_blog": "",
|
170 |
"beacon_id": 141,
|
171 |
-
"name": "
|
172 |
"summary": "A User Can Bypass Multi-Factor Authentication (MFA) For The Set Number Of Days",
|
173 |
"description": "Enter the number of days a user can bypass future MFA after a successful MFA-login. 0 to disable."
|
174 |
},
|
@@ -197,6 +248,19 @@
|
|
197 |
"summary": "Allow Users To Use Google Authenticator",
|
198 |
"description": "When enabled, users will have the option to add Google Authenticator to their WordPress user profile."
|
199 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
{
|
201 |
"key": "enable_email_authentication",
|
202 |
"section": "section_2fa_email",
|
@@ -210,22 +274,22 @@
|
|
210 |
"description": "All users will be required to verify their login by email-based two-factor authentication."
|
211 |
},
|
212 |
{
|
213 |
-
"key":
|
214 |
-
"section":
|
215 |
-
"advanced":
|
216 |
-
"type":
|
217 |
-
"default":
|
218 |
"contributor",
|
219 |
"author",
|
220 |
"editor",
|
221 |
"administrator"
|
222 |
],
|
223 |
-
"link_info":
|
224 |
-
"link_blog":
|
225 |
-
"beacon_id":
|
226 |
-
"name":
|
227 |
-
"summary":
|
228 |
-
"description":
|
229 |
},
|
230 |
{
|
231 |
"key": "email_any_user_set",
|
@@ -287,9 +351,9 @@
|
|
287 |
{
|
288 |
"key": "login_limit_interval",
|
289 |
"section": "section_brute_force_login_protection",
|
290 |
-
"default": "5",
|
291 |
-
"min": 0,
|
292 |
"type": "integer",
|
|
|
|
|
293 |
"link_info": "https://shsec.io/3q",
|
294 |
"link_blog": "https://shsec.io/9o",
|
295 |
"beacon_id": 242,
|
@@ -448,18 +512,12 @@
|
|
448 |
"sensitive": true,
|
449 |
"type": "text",
|
450 |
"default": ""
|
451 |
-
},
|
452 |
-
{
|
453 |
-
"key": "use_login_intent_page",
|
454 |
-
"section": "section_non_ui",
|
455 |
-
"transferable": false,
|
456 |
-
"type": "boolean",
|
457 |
-
"value": true
|
458 |
}
|
459 |
],
|
460 |
"definitions": {
|
461 |
-
"login_intent_timeout":
|
462 |
-
"
|
|
|
463 |
"2fa_verify_success": {
|
464 |
"audit_params": [
|
465 |
"user_login",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"admin_notices": {
|
23 |
"email-verification-sent": {
|
24 |
"id": "email-verification-sent",
|
145 |
"link_info": "https://shsec.io/5q",
|
146 |
"link_blog": "https://shsec.io/5r",
|
147 |
"beacon_id": 316,
|
148 |
+
"name": "Hide WP Login & Admin",
|
149 |
+
"summary": "Hide The WordPress Login And Admin Areas",
|
150 |
"description": "Creating a path here will disable your 'wp-login.php'. Only letters and numbers are permitted: abc123"
|
151 |
},
|
152 |
{
|
153 |
+
"key": "rename_wplogin_redirect",
|
154 |
+
"section": "section_rename_wplogin",
|
155 |
+
"advanced": true,
|
156 |
+
"sensitive": true,
|
157 |
+
"default": "",
|
158 |
+
"type": "text",
|
159 |
+
"link_info": "https://shsec.io/5q",
|
160 |
+
"link_blog": "https://shsec.io/5r",
|
161 |
+
"beacon_id": 455,
|
162 |
+
"name": "WP Login & Admin Redirect",
|
163 |
+
"summary": "Automatic Redirect URL For Hidden Pages",
|
164 |
+
"description": "Automatically redirect requests to this location for the hidden pages."
|
165 |
+
},
|
166 |
+
{
|
167 |
+
"key": "mfa_verify_page",
|
168 |
+
"section": "section_multifactor_authentication",
|
169 |
+
"default": "custom_shield",
|
170 |
+
"type": "select",
|
171 |
+
"value_options": [
|
172 |
+
{
|
173 |
+
"value_key": "custom_shield",
|
174 |
+
"text": "Custom Shield MFA Page"
|
175 |
+
},
|
176 |
+
{
|
177 |
+
"value_key": "wp_login",
|
178 |
+
"text": "WP Login Page (beta)"
|
179 |
+
}
|
180 |
+
],
|
181 |
+
"link_info": "",
|
182 |
+
"link_blog": "",
|
183 |
+
"beacon_id": 0,
|
184 |
+
"name": "MFA Verification Page",
|
185 |
+
"summary": "Type Of MFA Verification Page",
|
186 |
+
"description": "Choose the page type for MFA verification"
|
187 |
+
},
|
188 |
+
{
|
189 |
+
"key": "mfa_user_setup_pages",
|
190 |
+
"section": "section_multifactor_authentication",
|
191 |
+
"type": "multiple_select",
|
192 |
+
"default": [
|
193 |
+
"profile"
|
194 |
+
],
|
195 |
+
"value_options": [
|
196 |
+
{
|
197 |
+
"value_key": "profile",
|
198 |
+
"text": "WP User Profile Page"
|
199 |
+
},
|
200 |
+
{
|
201 |
+
"value_key": "dedicated",
|
202 |
+
"text": "Dedicated WP Admin Page"
|
203 |
+
}
|
204 |
+
],
|
205 |
+
"link_info": "",
|
206 |
+
"link_blog": "",
|
207 |
+
"beacon_id": 456,
|
208 |
+
"name": "User 2FA Setup",
|
209 |
+
"summary": "User 2FA Setup Page Locations",
|
210 |
+
"description": "Pages available to users to configure 2FA."
|
211 |
},
|
212 |
{
|
213 |
"key": "mfa_skip",
|
214 |
"section": "section_multifactor_authentication",
|
215 |
"premium": true,
|
216 |
+
"type": "integer",
|
217 |
"default": 0,
|
218 |
"min": 0,
|
|
|
219 |
"link_info": "https://shsec.io/b1",
|
220 |
"link_blog": "",
|
221 |
"beacon_id": 141,
|
222 |
+
"name": "2FA Remember Me",
|
223 |
"summary": "A User Can Bypass Multi-Factor Authentication (MFA) For The Set Number Of Days",
|
224 |
"description": "Enter the number of days a user can bypass future MFA after a successful MFA-login. 0 to disable."
|
225 |
},
|
248 |
"summary": "Allow Users To Use Google Authenticator",
|
249 |
"description": "When enabled, users will have the option to add Google Authenticator to their WordPress user profile."
|
250 |
},
|
251 |
+
{
|
252 |
+
"key": "enable_sms_auth",
|
253 |
+
"section": "section_non_ui",
|
254 |
+
"premium": true,
|
255 |
+
"default": "N",
|
256 |
+
"type": "checkbox",
|
257 |
+
"link_info": "",
|
258 |
+
"link_blog": "",
|
259 |
+
"beacon_id": 245,
|
260 |
+
"name": "Enable SMS Auth",
|
261 |
+
"summary": "Enable SMS Authentication",
|
262 |
+
"description": "When enabled, users will have the option to add SMS Auth to their WordPress user profile."
|
263 |
+
},
|
264 |
{
|
265 |
"key": "enable_email_authentication",
|
266 |
"section": "section_2fa_email",
|
274 |
"description": "All users will be required to verify their login by email-based two-factor authentication."
|
275 |
},
|
276 |
{
|
277 |
+
"key": "two_factor_auth_user_roles",
|
278 |
+
"section": "section_2fa_email",
|
279 |
+
"advanced": true,
|
280 |
+
"type": "array",
|
281 |
+
"default": [
|
282 |
"contributor",
|
283 |
"author",
|
284 |
"editor",
|
285 |
"administrator"
|
286 |
],
|
287 |
+
"link_info": "https://shsec.io/4v",
|
288 |
+
"link_blog": "",
|
289 |
+
"beacon_id": 243,
|
290 |
+
"name": "Enforce - Email Authentication",
|
291 |
+
"summary": "All User Roles Subject To Email Authentication",
|
292 |
+
"description": "Enforces email-based authentication on all users with the selected roles. Note: This setting only applies to email authentication."
|
293 |
},
|
294 |
{
|
295 |
"key": "email_any_user_set",
|
351 |
{
|
352 |
"key": "login_limit_interval",
|
353 |
"section": "section_brute_force_login_protection",
|
|
|
|
|
354 |
"type": "integer",
|
355 |
+
"default": 5,
|
356 |
+
"min": 0,
|
357 |
"link_info": "https://shsec.io/3q",
|
358 |
"link_blog": "https://shsec.io/9o",
|
359 |
"beacon_id": 242,
|
512 |
"sensitive": true,
|
513 |
"type": "text",
|
514 |
"default": ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
}
|
516 |
],
|
517 |
"definitions": {
|
518 |
+
"login_intent_timeout": 5,
|
519 |
+
"login_intent_max_attempts": 5,
|
520 |
+
"events": {
|
521 |
"2fa_verify_success": {
|
522 |
"audit_params": [
|
523 |
"user_login",
|
config/plugin.json
CHANGED
@@ -17,6 +17,9 @@
|
|
17 |
"run_if_wpcli": true,
|
18 |
"order": 10
|
19 |
},
|
|
|
|
|
|
|
20 |
"admin_notices": {
|
21 |
"plugin-too-old": {
|
22 |
"id": "plugin-too-old",
|
17 |
"run_if_wpcli": true,
|
18 |
"order": 10
|
19 |
},
|
20 |
+
"wpcli": {
|
21 |
+
"enabled": true
|
22 |
+
},
|
23 |
"admin_notices": {
|
24 |
"plugin-too-old": {
|
25 |
"id": "plugin-too-old",
|
config/reporting.json
CHANGED
@@ -14,6 +14,9 @@
|
|
14 |
"run_if_wpcli": true,
|
15 |
"tracking_exclude": true
|
16 |
},
|
|
|
|
|
|
|
17 |
"menu_items": [
|
18 |
{
|
19 |
"title": "Stats (beta)",
|
14 |
"run_if_wpcli": true,
|
15 |
"tracking_exclude": true
|
16 |
},
|
17 |
+
"wpcli": {
|
18 |
+
"enabled": true
|
19 |
+
},
|
20 |
"menu_items": [
|
21 |
{
|
22 |
"title": "Stats (beta)",
|
config/sessions.json
CHANGED
@@ -50,8 +50,8 @@
|
|
50 |
"key": "autoadd_sessions_started_at",
|
51 |
"section": "section_non_ui",
|
52 |
"type": "integer",
|
53 |
-
"
|
54 |
-
"
|
55 |
}
|
56 |
],
|
57 |
"definitions": {
|
50 |
"key": "autoadd_sessions_started_at",
|
51 |
"section": "section_non_ui",
|
52 |
"type": "integer",
|
53 |
+
"default": 0,
|
54 |
+
"transferable": false
|
55 |
}
|
56 |
],
|
57 |
"definitions": {
|
config/traffic.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 110
|
18 |
},
|
|
|
|
|
|
|
19 |
"menu_items": [
|
20 |
{
|
21 |
"title": "Traffic Log",
|
@@ -165,9 +168,9 @@
|
|
165 |
"key": "auto_clean",
|
166 |
"section": "section_traffic_options",
|
167 |
"advanced": true,
|
|
|
168 |
"default": 7,
|
169 |
"min": 1,
|
170 |
-
"type": "integer",
|
171 |
"link_info": "",
|
172 |
"link_blog": "",
|
173 |
"name": "Auto Expiry Cleaning",
|
@@ -190,9 +193,9 @@
|
|
190 |
{
|
191 |
"key": "limit_requests",
|
192 |
"section": "section_traffic_limiter",
|
193 |
-
"default": "60",
|
194 |
-
"min": 0,
|
195 |
"type": "integer",
|
|
|
|
|
196 |
"link_info": "",
|
197 |
"link_blog": "",
|
198 |
"name": "Max Request Limit",
|
@@ -202,9 +205,9 @@
|
|
202 |
{
|
203 |
"key": "limit_time_span",
|
204 |
"section": "section_traffic_limiter",
|
205 |
-
"default": "60",
|
206 |
-
"min": 0,
|
207 |
"type": "integer",
|
|
|
|
|
208 |
"link_info": "",
|
209 |
"link_blog": "",
|
210 |
"name": "Request Limit Time Interval",
|
@@ -213,7 +216,7 @@
|
|
213 |
}
|
214 |
],
|
215 |
"definitions": {
|
216 |
-
"events":
|
217 |
"request_limit_exceeded": {
|
218 |
"audit_params": [
|
219 |
"requests",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 110
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"menu_items": [
|
23 |
{
|
24 |
"title": "Traffic Log",
|
168 |
"key": "auto_clean",
|
169 |
"section": "section_traffic_options",
|
170 |
"advanced": true,
|
171 |
+
"type": "integer",
|
172 |
"default": 7,
|
173 |
"min": 1,
|
|
|
174 |
"link_info": "",
|
175 |
"link_blog": "",
|
176 |
"name": "Auto Expiry Cleaning",
|
193 |
{
|
194 |
"key": "limit_requests",
|
195 |
"section": "section_traffic_limiter",
|
|
|
|
|
196 |
"type": "integer",
|
197 |
+
"default": 60,
|
198 |
+
"min": 0,
|
199 |
"link_info": "",
|
200 |
"link_blog": "",
|
201 |
"name": "Max Request Limit",
|
205 |
{
|
206 |
"key": "limit_time_span",
|
207 |
"section": "section_traffic_limiter",
|
|
|
|
|
208 |
"type": "integer",
|
209 |
+
"default": 60,
|
210 |
+
"min": 0,
|
211 |
"link_info": "",
|
212 |
"link_blog": "",
|
213 |
"name": "Request Limit Time Interval",
|
216 |
}
|
217 |
],
|
218 |
"definitions": {
|
219 |
+
"events": {
|
220 |
"request_limit_exceeded": {
|
221 |
"audit_params": [
|
222 |
"requests",
|
config/user_management.json
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
|
|
|
|
|
|
19 |
"sections": [
|
20 |
{
|
21 |
"slug": "section_user_session_management",
|
@@ -129,9 +132,9 @@
|
|
129 |
{
|
130 |
"key": "session_timeout_interval",
|
131 |
"section": "section_user_session_management",
|
|
|
132 |
"default": 2,
|
133 |
"min": 0,
|
134 |
-
"type": "integer",
|
135 |
"link_info": "",
|
136 |
"link_blog": "",
|
137 |
"name": "Session Timeout",
|
@@ -141,9 +144,9 @@
|
|
141 |
{
|
142 |
"key": "session_idle_timeout_interval",
|
143 |
"section": "section_user_session_management",
|
|
|
144 |
"default": 48,
|
145 |
"min": 0,
|
146 |
-
"type": "integer",
|
147 |
"link_info": "https://support.getshieldsecurity.com/support/solutions/articles/3000070590",
|
148 |
"link_blog": "",
|
149 |
"beacon_id": 397,
|
@@ -166,9 +169,9 @@
|
|
166 |
{
|
167 |
"key": "session_username_concurrent_limit",
|
168 |
"section": "section_user_session_management",
|
|
|
169 |
"default": 0,
|
170 |
"min": 0,
|
171 |
-
"type": "integer",
|
172 |
"link_info": "",
|
173 |
"link_blog": "",
|
174 |
"name": "Max Simultaneous Sessions",
|
@@ -269,7 +272,7 @@
|
|
269 |
"section": "section_passwords",
|
270 |
"premium": true,
|
271 |
"type": "integer",
|
272 |
-
"default":
|
273 |
"link_info": "",
|
274 |
"link_blog": "",
|
275 |
"name": "Minimum Length",
|
@@ -327,7 +330,7 @@
|
|
327 |
"section": "section_passwords",
|
328 |
"premium": true,
|
329 |
"type": "integer",
|
330 |
-
"default":
|
331 |
"min": 0,
|
332 |
"link_info": "",
|
333 |
"link_blog": "",
|
@@ -395,9 +398,9 @@
|
|
395 |
{
|
396 |
"key": "autoadd_sessions_started_at",
|
397 |
"section": "section_non_ui",
|
398 |
-
"transferable": false,
|
399 |
"type": "integer",
|
400 |
-
"default": 0
|
|
|
401 |
},
|
402 |
{
|
403 |
"key": "hard_suspended_userids",
|
16 |
"run_if_wpcli": false,
|
17 |
"order": 40
|
18 |
},
|
19 |
+
"wpcli": {
|
20 |
+
"enabled": true
|
21 |
+
},
|
22 |
"sections": [
|
23 |
{
|
24 |
"slug": "section_user_session_management",
|
132 |
{
|
133 |
"key": "session_timeout_interval",
|
134 |
"section": "section_user_session_management",
|
135 |
+
"type": "integer",
|
136 |
"default": 2,
|
137 |
"min": 0,
|
|
|
138 |
"link_info": "",
|
139 |
"link_blog": "",
|
140 |
"name": "Session Timeout",
|
144 |
{
|
145 |
"key": "session_idle_timeout_interval",
|
146 |
"section": "section_user_session_management",
|
147 |
+
"type": "integer",
|
148 |
"default": 48,
|
149 |
"min": 0,
|
|
|
150 |
"link_info": "https://support.getshieldsecurity.com/support/solutions/articles/3000070590",
|
151 |
"link_blog": "",
|
152 |
"beacon_id": 397,
|
169 |
{
|
170 |
"key": "session_username_concurrent_limit",
|
171 |
"section": "section_user_session_management",
|
172 |
+
"type": "integer",
|
173 |
"default": 0,
|
174 |
"min": 0,
|
|
|
175 |
"link_info": "",
|
176 |
"link_blog": "",
|
177 |
"name": "Max Simultaneous Sessions",
|
272 |
"section": "section_passwords",
|
273 |
"premium": true,
|
274 |
"type": "integer",
|
275 |
+
"default": 12,
|
276 |
"link_info": "",
|
277 |
"link_blog": "",
|
278 |
"name": "Minimum Length",
|
330 |
"section": "section_passwords",
|
331 |
"premium": true,
|
332 |
"type": "integer",
|
333 |
+
"default": 60,
|
334 |
"min": 0,
|
335 |
"link_info": "",
|
336 |
"link_blog": "",
|
398 |
{
|
399 |
"key": "autoadd_sessions_started_at",
|
400 |
"section": "section_non_ui",
|
|
|
401 |
"type": "integer",
|
402 |
+
"default": 0,
|
403 |
+
"transferable": false
|
404 |
},
|
405 |
{
|
406 |
"key": "hard_suspended_userids",
|
icwp-wpsf.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Shield Security
|
4 |
* Plugin URI: https://shsec.io/2f
|
5 |
* Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
|
6 |
-
* Version:
|
7 |
* Text Domain: wp-simple-firewall
|
8 |
* Domain Path: /languages
|
9 |
* Author: Shield Security
|
3 |
* Plugin Name: Shield Security
|
4 |
* Plugin URI: https://shsec.io/2f
|
5 |
* Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
|
6 |
+
* Version: 14.0.0
|
7 |
* Text Domain: wp-simple-firewall
|
8 |
* Domain Path: /languages
|
9 |
* Author: Shield Security
|
init.php
CHANGED
@@ -16,32 +16,39 @@ class ICWP_WPSF_Shield_Security {
|
|
16 |
*/
|
17 |
private static $oInstance = null;
|
18 |
|
|
|
|
|
|
|
|
|
|
|
19 |
/**
|
20 |
* @param Shield\Controller\Controller $controller
|
21 |
*/
|
22 |
private function __construct( Shield\Controller\Controller $controller ) {
|
23 |
-
$controller
|
|
|
|
|
|
|
|
|
24 |
}
|
25 |
|
26 |
/**
|
27 |
-
* @return Shield\Controller\Controller
|
28 |
* @throws \Exception
|
29 |
*/
|
30 |
-
public function getController() {
|
31 |
return Shield\Controller\Controller::GetInstance();
|
32 |
}
|
33 |
|
34 |
/**
|
35 |
-
* @param Shield\Controller\Controller $oController
|
36 |
* @return self
|
37 |
* @throws \Exception
|
38 |
*/
|
39 |
-
public static function GetInstance( Shield\Controller\Controller $
|
40 |
if ( is_null( self::$oInstance ) ) {
|
41 |
-
if ( !$
|
42 |
throw new \Exception( 'Trying to create a Shield Plugin instance without a valid Controller' );
|
43 |
}
|
44 |
-
self::$oInstance = new self( $
|
45 |
}
|
46 |
return self::$oInstance;
|
47 |
}
|
@@ -50,6 +57,7 @@ class ICWP_WPSF_Shield_Security {
|
|
50 |
try {
|
51 |
$oICWP_Wpsf_Controller = Shield\Controller\Controller::GetInstance( $rootFile );
|
52 |
$oICWP_Wpsf = ICWP_WPSF_Shield_Security::GetInstance( $oICWP_Wpsf_Controller );
|
|
|
53 |
}
|
54 |
catch ( \Exception $e ) {
|
55 |
if ( is_admin() ) {
|
16 |
*/
|
17 |
private static $oInstance = null;
|
18 |
|
19 |
+
/**
|
20 |
+
* @var Shield\Controller\Controller
|
21 |
+
*/
|
22 |
+
private $con;
|
23 |
+
|
24 |
/**
|
25 |
* @param Shield\Controller\Controller $controller
|
26 |
*/
|
27 |
private function __construct( Shield\Controller\Controller $controller ) {
|
28 |
+
$this->con = $controller;
|
29 |
+
}
|
30 |
+
|
31 |
+
public function start() {
|
32 |
+
$this->con->loadAllFeatures();
|
33 |
}
|
34 |
|
35 |
/**
|
|
|
36 |
* @throws \Exception
|
37 |
*/
|
38 |
+
public function getController() :Shield\Controller\Controller {
|
39 |
return Shield\Controller\Controller::GetInstance();
|
40 |
}
|
41 |
|
42 |
/**
|
|
|
43 |
* @return self
|
44 |
* @throws \Exception
|
45 |
*/
|
46 |
+
public static function GetInstance( Shield\Controller\Controller $con = null ) {
|
47 |
if ( is_null( self::$oInstance ) ) {
|
48 |
+
if ( !$con instanceof Shield\Controller\Controller ) {
|
49 |
throw new \Exception( 'Trying to create a Shield Plugin instance without a valid Controller' );
|
50 |
}
|
51 |
+
self::$oInstance = new self( $con );
|
52 |
}
|
53 |
return self::$oInstance;
|
54 |
}
|
57 |
try {
|
58 |
$oICWP_Wpsf_Controller = Shield\Controller\Controller::GetInstance( $rootFile );
|
59 |
$oICWP_Wpsf = ICWP_WPSF_Shield_Security::GetInstance( $oICWP_Wpsf_Controller );
|
60 |
+
$oICWP_Wpsf->start();
|
61 |
}
|
62 |
catch ( \Exception $e ) {
|
63 |
if ( is_admin() ) {
|
languages/wp-simple-firewall-en_GB.mo
CHANGED
Binary file
|
languages/wp-simple-firewall-en_GB.po
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: WPSF v2.0\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
6 |
"Last-Translator: \n"
|
7 |
"Language-Team: \n"
|
8 |
"Language: en_GB\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"
|
|
|
13 |
"X-Poedit-KeywordsList: _wpsf__;gettext;gettext_noop;_wpsf_e;_n;_n:1,2;__;_e\n"
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
"X-Poedit-SearchPathExcluded-0: .git\n"
|
19 |
"X-Poedit-SearchPathExcluded-1: .idea\n"
|
@@ -22,10385 +22,13303 @@ msgstr ""
|
|
22 |
"X-Poedit-SearchPathExcluded-4: src/lib/vendor\n"
|
23 |
"X-Poedit-SearchPathExcluded-5: resources\n"
|
24 |
|
25 |
-
#: src/
|
26 |
-
|
27 |
-
msgid "Security Admin session has timed-out."
|
28 |
-
msgstr ""
|
29 |
-
|
30 |
-
#: src/features/admin_access_restriction.php:332
|
31 |
-
msgid "Reload now?"
|
32 |
-
msgstr ""
|
33 |
-
|
34 |
-
#: src/features/admin_access_restriction.php:333
|
35 |
-
msgid "Security Admin session has nearly timed-out."
|
36 |
-
msgstr ""
|
37 |
-
|
38 |
-
#: src/features/admin_access_restriction.php:351
|
39 |
-
#: src/features/admin_access_restriction.php:364
|
40 |
-
#: src/lib/src/Modules/Plugin/Strings.php:399
|
41 |
-
#: src/lib/src/Modules/Plugin/Strings.php:401
|
42 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:35
|
43 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:38
|
44 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:102
|
45 |
-
#: src/lib/src/Tables/Render/Sessions.php:36 src/wizards/base_wpsf.php:59
|
46 |
-
msgid "Security Admin"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: src/features/admin_access_restriction.php:352
|
50 |
-
#, php-format
|
51 |
-
msgid "Prevent Tampering With %s Settings"
|
52 |
-
msgstr ""
|
53 |
-
|
54 |
-
#: src/features/admin_access_restriction.php:367
|
55 |
-
msgid "Security plugin is protected against tampering"
|
56 |
-
msgstr ""
|
57 |
-
|
58 |
-
#: src/features/admin_access_restriction.php:368
|
59 |
-
msgid "Security plugin is vulnerable to tampering"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: src/
|
63 |
-
msgid "
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: src/
|
67 |
-
msgid "
|
|
|
|
|
68 |
msgstr ""
|
69 |
|
70 |
-
#: src/
|
71 |
-
msgid "
|
|
|
|
|
72 |
msgstr ""
|
73 |
|
74 |
-
#: src/
|
75 |
-
msgid "
|
|
|
|
|
76 |
msgstr ""
|
77 |
|
78 |
-
#: src/
|
79 |
-
msgid "
|
80 |
msgstr ""
|
81 |
|
82 |
-
#: src/
|
83 |
-
msgid "
|
84 |
msgstr ""
|
85 |
|
86 |
-
#: src/
|
87 |
-
|
|
|
88 |
msgstr ""
|
89 |
|
90 |
-
#: src/
|
91 |
-
msgid "
|
92 |
msgstr ""
|
93 |
|
94 |
-
#: src/
|
95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: src/
|
99 |
-
#: src/features/autoupdates.php:168 src/features/hack_protect.php:754
|
100 |
-
#: src/features/hack_protect.php:775 src/features/hack_protect.php:796
|
101 |
-
#: src/features/hack_protect.php:817 src/features/hack_protect.php:838
|
102 |
-
#: src/features/hack_protect.php:859 src/features/insights.php:274
|
103 |
-
#: src/features/insights.php:662 src/features/insights.php:675
|
104 |
-
#: src/features/insights.php:702 src/features/insights.php:715
|
105 |
-
#: src/features/insights.php:741 src/features/insights.php:753
|
106 |
-
#: src/features/lockdown.php:81 src/features/user_management.php:313
|
107 |
#, php-format
|
108 |
-
msgid "
|
109 |
-
msgstr ""
|
110 |
-
|
111 |
-
#: src/features/admin_access_restriction.php:420
|
112 |
-
#: src/features/autoupdates.php:168 src/features/hack_protect.php:754
|
113 |
-
#: src/features/hack_protect.php:775 src/features/hack_protect.php:796
|
114 |
-
#: src/features/hack_protect.php:817 src/features/hack_protect.php:838
|
115 |
-
#: src/features/hack_protect.php:859 src/features/insights.php:275
|
116 |
-
#: src/features/insights.php:753 src/features/lockdown.php:81
|
117 |
-
#: src/features/user_management.php:313 src/lib/src/Modules/Base/Strings.php:36
|
118 |
-
#: src/lib/src/Modules/Base/Strings.php:53
|
119 |
-
#: src/lib/src/Modules/Insights/Strings.php:66
|
120 |
-
msgid "Options"
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: src/
|
124 |
-
msgid "
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: src/
|
128 |
-
|
129 |
-
"
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: src/
|
133 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: src/
|
137 |
#, php-format
|
138 |
msgid "[%s] Audit Trail Entries"
|
139 |
msgstr ""
|
140 |
|
141 |
-
#: src/
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
#: src/features/audit_trail.php:121
|
146 |
-
msgid "Track Activity: What, Who, When, Where"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: src/features/audit_trail.php:134
|
150 |
-
msgid "users"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: src/features/audit_trail.php:135
|
154 |
-
msgid "plugins"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
#: src/features/audit_trail.php:136
|
158 |
-
msgid "themes"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: src/
|
162 |
-
msgid "
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: src/
|
166 |
-
msgid "
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: src/
|
170 |
-
|
171 |
-
msgid "Audit Areas"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: src/
|
175 |
-
msgid "
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: src/
|
179 |
-
|
180 |
-
msgid "No areas are set to be audited: %s"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: src/
|
184 |
-
msgid "
|
|
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: src/
|
188 |
-
|
189 |
-
msgid "Important events aren't being audited: %s"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: src/
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
msgid "Audit Trail"
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: src/
|
200 |
-
|
201 |
-
msgid "Maximum Audit Trail entries limited to %s"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: src/
|
205 |
-
|
206 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:226
|
207 |
-
#: src/lib/src/Modules/Plugin/Strings.php:405
|
208 |
-
msgid "Automatic Updates"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: src/
|
212 |
-
msgid "
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: src/
|
216 |
-
#, php-format
|
217 |
msgid ""
|
218 |
-
"
|
219 |
-
|
220 |
-
|
221 |
-
#: src/features/autoupdates.php:190
|
222 |
-
msgid "Control WordPress Automatic Updates"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: src/
|
226 |
-
msgid "
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: src/
|
230 |
-
msgid "
|
|
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: src/
|
234 |
-
msgid "
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: src/
|
238 |
-
msgid "Core
|
239 |
msgstr ""
|
240 |
|
241 |
-
#: src/
|
242 |
-
msgid "
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: src/
|
246 |
-
msgid "
|
|
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: src/
|
250 |
-
|
251 |
-
msgid "Update Delay"
|
252 |
msgstr ""
|
253 |
|
254 |
-
#: src/
|
255 |
-
msgid "
|
|
|
256 |
msgstr ""
|
257 |
|
258 |
-
#: src/
|
259 |
-
msgid "
|
260 |
msgstr ""
|
261 |
|
262 |
-
#: src/
|
263 |
-
msgid "
|
264 |
msgstr ""
|
265 |
|
266 |
-
#: src/
|
267 |
-
|
268 |
-
|
|
|
|
|
|
|
269 |
msgstr ""
|
270 |
|
271 |
-
#: src/
|
272 |
-
|
273 |
-
msgid "%s isn't automatically updated"
|
274 |
msgstr ""
|
275 |
|
276 |
-
#: src/
|
277 |
-
|
278 |
-
#: src/wizards/plugin.php:550 src/wizards/plugin.php:695
|
279 |
-
msgid "Disabled"
|
280 |
msgstr ""
|
281 |
|
282 |
-
#: src/
|
283 |
-
msgid ""
|
284 |
-
"Unfortunately your WordPress and/or PHP versions are too old to support this "
|
285 |
-
"feature."
|
286 |
msgstr ""
|
287 |
|
288 |
-
#: src/
|
289 |
-
msgid "
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: src/
|
293 |
-
msgid "
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: src/
|
297 |
-
|
298 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:195
|
299 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:269
|
300 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:265
|
301 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:308
|
302 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:315
|
303 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:130
|
304 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:138
|
305 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:233
|
306 |
-
msgid "Default"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: src/
|
310 |
-
msgid "
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: src/
|
314 |
-
|
315 |
-
msgid "Support Forums"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: src/
|
319 |
-
msgid "
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: src/
|
323 |
-
msgid "
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: src/
|
327 |
-
msgid "
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: src/
|
331 |
-
msgid "
|
|
|
|
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: src/
|
335 |
-
|
336 |
-
msgid "Please wait %s seconds before posting your comment."
|
337 |
msgstr ""
|
338 |
|
339 |
-
#: src/
|
340 |
-
msgid "
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: src/
|
344 |
-
msgid "
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: src/
|
348 |
-
msgid "
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: src/
|
352 |
-
|
353 |
-
msgid "Bot SPAM"
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: src/
|
357 |
-
msgid "
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: src/
|
361 |
-
msgid "
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: src/
|
365 |
-
|
366 |
-
msgid "Human SPAM"
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: src/
|
370 |
-
msgid "
|
371 |
msgstr ""
|
372 |
|
373 |
-
#: src/
|
374 |
-
msgid "
|
375 |
msgstr ""
|
376 |
|
377 |
-
#: src/
|
378 |
-
|
379 |
-
|
|
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: src/
|
383 |
-
msgid "
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: src/
|
387 |
-
|
388 |
-
|
|
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: src/
|
392 |
-
#: src/lib/src/Modules/
|
393 |
-
|
394 |
-
#: src/lib/src/Modules/Events/Strings.php:182
|
395 |
-
#: src/lib/src/Modules/Events/Strings.php:186
|
396 |
-
#: src/lib/src/Modules/Events/Strings.php:190
|
397 |
-
#: src/lib/src/Modules/Events/Strings.php:194
|
398 |
-
#: src/lib/src/Modules/Events/Strings.php:198
|
399 |
-
#: src/lib/src/Modules/Events/Strings.php:202
|
400 |
-
#: src/lib/src/Modules/Firewall/Strings.php:24
|
401 |
-
#: src/lib/src/Modules/Plugin/Strings.php:411
|
402 |
-
msgid "Firewall"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: src/
|
406 |
-
|
|
|
|
|
|
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: src/
|
410 |
-
|
|
|
|
|
|
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: src/
|
414 |
-
msgid "
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: src/
|
418 |
-
msgid "
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: src/
|
422 |
-
msgid "
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: src/
|
426 |
-
|
|
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: src/
|
430 |
-
|
431 |
-
|
|
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: src/
|
435 |
-
|
|
|
|
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: src/
|
439 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: src/
|
443 |
-
|
444 |
-
#: src/lib/src/Tables/Build/ScanBase.php:62
|
445 |
-
#: src/lib/src/Tables/Build/Sessions.php:68
|
446 |
-
#: src/lib/src/Tables/Build/Traffic.php:109
|
447 |
-
msgid "Yes"
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: src/
|
451 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: src/
|
455 |
-
|
|
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: src/
|
459 |
-
msgid "
|
460 |
msgstr ""
|
461 |
|
462 |
-
#: src/
|
463 |
-
#: src/lib/src/Modules/
|
464 |
-
#: src/lib/src/Modules/
|
465 |
-
#: src/
|
466 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: src/
|
470 |
-
|
471 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: src/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
475 |
#, php-format
|
476 |
-
msgid ""
|
477 |
-
"Sorry, this feature is not available because we cannot write to disk at this "
|
478 |
-
"location: \"%s\""
|
479 |
msgstr ""
|
480 |
|
481 |
-
#: src/
|
482 |
-
|
483 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
msgstr ""
|
485 |
|
486 |
-
#: src/
|
487 |
msgid ""
|
488 |
-
"
|
489 |
-
|
490 |
-
|
491 |
-
#: src/features/hack_protect.php:559
|
492 |
-
#, php-format
|
493 |
-
msgid "The %s file isn't writable and so can't be further protected."
|
494 |
-
msgstr ""
|
495 |
-
|
496 |
-
#: src/features/hack_protect.php:744 src/features/insights.php:290
|
497 |
-
msgid "Scans"
|
498 |
msgstr ""
|
499 |
|
500 |
-
#: src/
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
#: src/
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
#: src/
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
#: src/
|
513 |
-
#: src/
|
514 |
-
#: src/
|
515 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
516 |
msgstr ""
|
517 |
|
518 |
-
#: src/
|
519 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
520 |
msgstr ""
|
521 |
|
522 |
-
#: src/
|
523 |
-
|
|
|
524 |
msgstr ""
|
525 |
|
526 |
-
#: src/
|
527 |
-
msgid "
|
528 |
msgstr ""
|
529 |
|
530 |
-
#: src/
|
531 |
-
|
|
|
|
|
532 |
msgstr ""
|
533 |
|
534 |
-
#: src/
|
535 |
-
msgid ""
|
536 |
-
"Scan and remove any files that are not meant to be in the WP core "
|
537 |
-
"directories."
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: src/
|
541 |
-
msgid "
|
542 |
msgstr ""
|
543 |
|
544 |
-
#: src/
|
545 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: src/
|
549 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
550 |
msgstr ""
|
551 |
|
552 |
-
#: src/
|
553 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
554 |
msgstr ""
|
555 |
|
556 |
-
#: src/
|
557 |
-
msgid "
|
558 |
msgstr ""
|
559 |
|
560 |
-
#: src/
|
561 |
-
msgid "
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: src/
|
565 |
-
msgid "
|
566 |
msgstr ""
|
567 |
|
568 |
-
#: src/
|
569 |
msgid ""
|
570 |
-
"
|
|
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: src/
|
574 |
-
|
|
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: src/
|
578 |
-
msgid "
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: src/
|
582 |
-
msgid "
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: src/
|
586 |
msgid ""
|
587 |
-
"
|
|
|
588 |
msgstr ""
|
589 |
|
590 |
-
#: src/
|
591 |
-
#: src/features/hack_protect.php:1012
|
592 |
#, php-format
|
593 |
-
msgid "
|
594 |
-
msgstr ""
|
595 |
-
|
596 |
-
#: src/features/hack_protect.php:860
|
597 |
-
msgid "Automatic detection of Malware is recommended."
|
598 |
msgstr ""
|
599 |
|
600 |
-
#: src/
|
601 |
-
msgid "
|
602 |
-
msgstr ""
|
603 |
-
|
604 |
-
#: src/features/hack_protect.php:869
|
605 |
-
msgid ""
|
606 |
-
"Files identified as potential malware should be examined as soon as possible."
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: src/
|
610 |
-
|
611 |
-
#: src/lib/src/Modules/Plugin/Strings.php:413
|
612 |
-
msgid "Hack Guard"
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: src/
|
616 |
-
msgid "
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: src/
|
620 |
-
msgid "
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: src/
|
624 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: src/
|
628 |
-
|
|
|
629 |
msgstr ""
|
630 |
|
631 |
-
#: src/
|
632 |
-
msgid "
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: src/
|
636 |
-
msgid "Core
|
637 |
msgstr ""
|
638 |
|
639 |
-
#: src/
|
640 |
-
msgid "Core
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: src/
|
644 |
-
msgid "
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: src/
|
648 |
-
msgid "Core
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: src/
|
652 |
-
msgid "Core
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: src/
|
656 |
-
|
657 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:26
|
658 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:118
|
659 |
-
msgid "Unrecognised Files"
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: src/
|
663 |
-
msgid "Core
|
664 |
msgstr ""
|
665 |
|
666 |
-
#: src/
|
667 |
-
|
|
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: src/
|
671 |
-
msgid "
|
672 |
msgstr ""
|
673 |
|
674 |
-
#: src/
|
675 |
-
msgid "
|
676 |
msgstr ""
|
677 |
|
678 |
-
#: src/
|
679 |
-
msgid "
|
680 |
msgstr ""
|
681 |
|
682 |
-
#: src/
|
683 |
-
|
|
|
684 |
msgstr ""
|
685 |
|
686 |
-
#: src/
|
687 |
-
|
|
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: src/
|
691 |
-
msgid "
|
692 |
msgstr ""
|
693 |
|
694 |
-
#: src/
|
695 |
-
|
|
|
|
|
|
|
|
|
696 |
msgstr ""
|
697 |
|
698 |
-
#: src/
|
699 |
-
|
|
|
|
|
|
|
|
|
|
|
700 |
msgstr ""
|
701 |
|
702 |
-
#: src/
|
703 |
-
|
|
|
|
|
704 |
msgstr ""
|
705 |
|
706 |
-
#: src/
|
707 |
-
#: src/lib/src/Modules/
|
708 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:
|
709 |
-
|
|
|
710 |
msgstr ""
|
711 |
|
712 |
-
#: src/
|
713 |
-
msgid "
|
714 |
msgstr ""
|
715 |
|
716 |
-
#: src/
|
717 |
-
msgid "Plugins
|
718 |
msgstr ""
|
719 |
|
720 |
-
#: src/
|
721 |
#, php-format
|
722 |
-
msgid "%s
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: src/
|
726 |
-
msgid "
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: src/
|
730 |
-
msgid "
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: src/
|
734 |
-
msgid "
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: src/
|
738 |
-
|
|
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: src/
|
742 |
-
msgid "
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: src/
|
746 |
-
|
|
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: src/
|
750 |
-
msgid "
|
751 |
msgstr ""
|
752 |
|
753 |
-
#: src/
|
754 |
-
|
|
|
755 |
msgstr ""
|
756 |
|
757 |
-
#: src/
|
758 |
-
msgid "
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: src/
|
762 |
-
msgid "
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: src/
|
766 |
-
msgid "
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: src/
|
770 |
-
|
|
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: src/
|
774 |
-
msgid "
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: src/
|
778 |
-
|
|
|
|
|
|
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: src/
|
782 |
-
msgid "
|
783 |
msgstr ""
|
784 |
|
785 |
-
#: src/
|
786 |
-
|
|
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: src/
|
790 |
-
|
791 |
-
msgid "Offenses required for IP block: %s"
|
792 |
msgstr ""
|
793 |
|
794 |
-
#: src/
|
795 |
#, php-format
|
796 |
-
msgid "
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: src/
|
800 |
-
msgid "
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: src/
|
804 |
-
|
|
|
|
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: src/
|
|
|
808 |
#, php-format
|
809 |
-
msgid "
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: src/
|
813 |
-
|
814 |
-
msgid "IP addresses that have tripped %s defenses."
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: src/
|
818 |
-
msgid "
|
|
|
|
|
819 |
msgstr ""
|
820 |
|
821 |
-
#: src/
|
822 |
-
msgid "
|
823 |
msgstr ""
|
824 |
|
825 |
-
#: src/
|
826 |
-
msgid "
|
|
|
|
|
827 |
msgstr ""
|
828 |
|
829 |
-
#: src/
|
830 |
-
msgid "
|
831 |
msgstr ""
|
832 |
|
833 |
-
#: src/
|
834 |
-
|
|
|
835 |
msgstr ""
|
836 |
|
837 |
-
#: src/
|
838 |
-
msgid "
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: src/
|
842 |
-
|
|
|
|
|
|
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: src/
|
846 |
-
msgid "
|
847 |
msgstr ""
|
848 |
|
849 |
-
#: src/
|
850 |
-
msgid "
|
851 |
msgstr ""
|
852 |
|
853 |
-
#: src/
|
854 |
-
msgid "
|
855 |
msgstr ""
|
856 |
|
857 |
-
#: src/
|
858 |
-
msgid "
|
859 |
msgstr ""
|
860 |
|
861 |
-
#: src/
|
862 |
-
msgid "
|
863 |
msgstr ""
|
864 |
|
865 |
-
#: src/
|
866 |
-
msgid "
|
867 |
msgstr ""
|
868 |
|
869 |
-
#: src/
|
870 |
-
#: src/lib/src/
|
871 |
-
msgid "
|
872 |
msgstr ""
|
873 |
|
874 |
-
#: src/
|
875 |
-
msgid "
|
876 |
msgstr ""
|
877 |
|
878 |
-
#: src/
|
879 |
-
msgid "
|
880 |
msgstr ""
|
881 |
|
882 |
-
#: src/
|
883 |
-
msgid "
|
884 |
msgstr ""
|
885 |
|
886 |
-
#: src/
|
887 |
-
msgid "
|
|
|
|
|
888 |
msgstr ""
|
889 |
|
890 |
-
#: src/
|
891 |
-
msgid ""
|
892 |
-
"Some sessions may have expired but haven't been automatically cleaned from "
|
893 |
-
"the database yet"
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: src/
|
897 |
-
|
898 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:16
|
899 |
-
#: src/lib/src/Tables/Render/AdminNotes.php:31
|
900 |
-
#: src/processors/loginprotect_intentprovider_backup.php:164
|
901 |
-
#: src/processors/loginprotect_intentprovider_email.php:155
|
902 |
-
#: src/processors/user_management.php:203
|
903 |
-
#: src/processors/user_management.php:235
|
904 |
-
msgid "Username"
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: src/
|
908 |
-
|
|
|
|
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: src/
|
912 |
-
msgid "
|
|
|
|
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: src/
|
916 |
-
msgid "
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: src/
|
920 |
-
msgid "
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: src/
|
924 |
-
msgid "
|
|
|
|
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: src/
|
928 |
-
msgid "
|
929 |
-
msgstr ""
|
930 |
-
|
931 |
-
#: src/features/insights.php:278
|
932 |
-
msgid "Positive Security"
|
933 |
-
msgstr ""
|
934 |
-
|
935 |
-
#: src/features/insights.php:279
|
936 |
-
msgid "Potential Warning"
|
937 |
-
msgstr ""
|
938 |
-
|
939 |
-
#: src/features/insights.php:280
|
940 |
-
msgid "Potential Danger"
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: src/
|
944 |
-
msgid "
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: src/
|
948 |
-
msgid "
|
|
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: src/
|
952 |
-
msgid "
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: src/
|
956 |
-
msgid "
|
|
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: src/
|
960 |
-
|
961 |
-
msgid "Users"
|
962 |
msgstr ""
|
963 |
|
964 |
-
#: src/
|
965 |
-
msgid "
|
|
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: src/
|
969 |
-
msgid "
|
970 |
msgstr ""
|
971 |
|
972 |
-
#: src/
|
973 |
-
msgid "
|
974 |
msgstr ""
|
975 |
|
976 |
-
#: src/
|
977 |
-
|
978 |
-
|
|
|
|
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: src/
|
982 |
-
|
983 |
-
msgid "Export"
|
984 |
msgstr ""
|
985 |
|
986 |
-
#: src/
|
987 |
-
msgid "
|
988 |
msgstr ""
|
989 |
|
990 |
-
#: src/
|
991 |
-
msgid "
|
|
|
|
|
992 |
msgstr ""
|
993 |
|
994 |
-
#: src/
|
995 |
-
msgid "
|
996 |
msgstr ""
|
997 |
|
998 |
-
#: src/
|
999 |
-
msgid "
|
1000 |
msgstr ""
|
1001 |
|
1002 |
-
#: src/
|
1003 |
-
msgid "Site"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: src/
|
1007 |
-
msgid "
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: src/
|
1011 |
#, php-format
|
1012 |
-
msgid "
|
|
|
|
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: src/
|
1016 |
-
msgid "
|
|
|
|
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: src/
|
1020 |
-
|
|
|
|
|
|
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: src/
|
1024 |
-
|
|
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: src/
|
1028 |
-
|
1029 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:213
|
1030 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:214
|
1031 |
-
#: src/lib/src/Modules/Autoupdates/Strings.php:123
|
1032 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:143
|
1033 |
-
msgid "Plugins"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: src/
|
1037 |
-
msgid "
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: src/
|
1041 |
-
|
1042 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: src/
|
1046 |
-
msgid "
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: src/
|
1050 |
-
|
1051 |
-
msgid "
|
1052 |
msgstr ""
|
1053 |
|
1054 |
-
#: src/
|
1055 |
-
|
1056 |
-
|
|
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: src/
|
1060 |
-
|
1061 |
-
msgid "Updates should be applied as early as possible."
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#: src/
|
1065 |
-
|
1066 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:219
|
1067 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:220
|
1068 |
-
#: src/lib/src/Modules/Autoupdates/Strings.php:135
|
1069 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:162
|
1070 |
-
msgid "Themes"
|
1071 |
msgstr ""
|
1072 |
|
1073 |
-
#: src/
|
1074 |
-
|
1075 |
-
msgid "%s inactive themes(s)"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: src/
|
1079 |
-
msgid "
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: src/
|
1083 |
-
|
1084 |
-
|
|
|
|
|
|
|
1085 |
msgstr ""
|
1086 |
|
1087 |
-
#: src/
|
1088 |
-
|
|
|
|
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: src/
|
1092 |
-
msgid "
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: src/
|
1096 |
-
|
|
|
|
|
|
|
|
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: src/
|
1100 |
-
msgid "
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: src/
|
1104 |
-
|
|
|
1105 |
msgstr ""
|
1106 |
|
1107 |
-
#: src/
|
1108 |
-
msgid "
|
1109 |
msgstr ""
|
1110 |
|
1111 |
-
#: src/
|
1112 |
-
msgid "
|
1113 |
msgstr ""
|
1114 |
|
1115 |
-
#: src/
|
1116 |
-
msgid "
|
1117 |
msgstr ""
|
1118 |
|
1119 |
-
#: src/
|
1120 |
-
|
|
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: src/
|
1124 |
-
msgid "
|
1125 |
msgstr ""
|
1126 |
|
1127 |
-
#: src/
|
1128 |
-
|
1129 |
-
msgid "Offenses"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#: src/
|
1133 |
-
|
|
|
|
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: src/
|
1137 |
-
|
|
|
|
|
|
|
|
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: src/
|
1141 |
-
|
|
|
|
|
|
|
|
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#: src/
|
1145 |
-
|
|
|
|
|
|
|
|
|
|
|
1146 |
msgstr ""
|
1147 |
|
1148 |
-
#: src/
|
1149 |
-
msgid "
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: src/
|
1153 |
-
msgid "
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: src/
|
1157 |
-
#: src/lib/src/Modules/
|
1158 |
-
|
1159 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:81
|
1160 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:109
|
1161 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:118
|
1162 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:136
|
1163 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:213
|
1164 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:221
|
1165 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:235
|
1166 |
-
#: src/lib/src/Modules/Plugin/Strings.php:101
|
1167 |
-
#: src/lib/src/Modules/Plugin/Strings.php:105
|
1168 |
-
#: src/lib/src/Modules/Plugin/Strings.php:201
|
1169 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:120
|
1170 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:139
|
1171 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:146
|
1172 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:167
|
1173 |
-
#: src/lib/src/Modules/Traffic/Strings.php:127
|
1174 |
-
#: src/lib/src/Tables/Render/AdminNotes.php:30
|
1175 |
-
#: src/processors/hackprotect_scan_ptg.php:161
|
1176 |
-
msgid "Note"
|
1177 |
msgstr ""
|
1178 |
|
1179 |
-
#: src/
|
1180 |
-
msgid "
|
1181 |
msgstr ""
|
1182 |
|
1183 |
-
#: src/
|
1184 |
-
msgid "
|
1185 |
msgstr ""
|
1186 |
|
1187 |
-
#: src/
|
1188 |
-
|
1189 |
-
|
|
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: src/
|
1193 |
-
|
1194 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:259
|
1195 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:283
|
1196 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:284
|
1197 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:367
|
1198 |
-
#: src/lib/src/Modules/IPs/Strings.php:66
|
1199 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:130
|
1200 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:143
|
1201 |
-
#: src/lib/src/Modules/Plugin/AdminNotices.php:88
|
1202 |
-
#: src/lib/src/Modules/Plugin/Strings.php:217
|
1203 |
-
#: src/lib/src/Modules/Traffic/Strings.php:54
|
1204 |
-
#: src/processors/hackprotect_scan_apc.php:100
|
1205 |
-
#: src/processors/hackprotect_scan_mal.php:119
|
1206 |
-
#: src/processors/hackprotect_scan_ptg.php:617
|
1207 |
-
#: src/processors/hackprotect_scan_ufc.php:85
|
1208 |
-
#: src/processors/hackprotect_scan_wcf.php:71
|
1209 |
-
#: src/processors/hackprotect_scan_wpv.php:261
|
1210 |
-
#: src/processors/loginprotect_wplogin.php:75
|
1211 |
-
#: src/processors/loginprotect_wplogin.php:93
|
1212 |
-
msgid "Warning"
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: src/
|
1216 |
-
msgid ""
|
1217 |
-
"Repeated login attempts that fail will result in a complete ban of your IP "
|
1218 |
-
"Address."
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: src/
|
1222 |
-
|
1223 |
-
msgid ""
|
1224 |
-
"You have %s remaining offenses(s) against this site and then your IP address "
|
1225 |
-
"will be completely blocked."
|
1226 |
msgstr ""
|
1227 |
|
1228 |
-
#: src/
|
1229 |
-
msgid "
|
1230 |
msgstr ""
|
1231 |
|
1232 |
-
#: src/
|
1233 |
-
msgid "
|
1234 |
msgstr ""
|
1235 |
|
1236 |
-
#: src/
|
1237 |
-
msgid "
|
1238 |
msgstr ""
|
1239 |
|
1240 |
-
#: src/
|
1241 |
-
|
1242 |
-
msgid "
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: src/
|
1246 |
-
|
1247 |
-
msgid "If this problem persists, please contact support: %s"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: src/
|
1251 |
-
msgid "
|
1252 |
msgstr ""
|
1253 |
|
1254 |
-
#: src/
|
1255 |
-
msgid "
|
1256 |
msgstr ""
|
1257 |
|
1258 |
-
#: src/
|
1259 |
-
msgid "
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: src/
|
1263 |
-
msgid "
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: src/
|
1267 |
-
msgid "
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: src/
|
1271 |
-
msgid "
|
1272 |
msgstr ""
|
1273 |
|
1274 |
-
#: src/
|
1275 |
-
|
|
|
|
|
|
|
1276 |
msgstr ""
|
1277 |
|
1278 |
-
#: src/
|
1279 |
-
msgid "
|
1280 |
msgstr ""
|
1281 |
|
1282 |
-
#: src/
|
1283 |
-
msgid "
|
1284 |
msgstr ""
|
1285 |
|
1286 |
-
#: src/
|
1287 |
-
msgid "
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
#: src/
|
1291 |
-
|
|
|
1292 |
msgstr ""
|
1293 |
|
1294 |
-
#: src/
|
1295 |
-
|
|
|
|
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: src/
|
1299 |
-
|
|
|
|
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: src/
|
1303 |
-
msgid "
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: src/
|
1307 |
-
|
|
|
|
|
1308 |
msgstr ""
|
1309 |
|
1310 |
-
#: src/
|
1311 |
-
|
|
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: src/
|
1315 |
-
|
|
|
|
|
1316 |
msgstr ""
|
1317 |
|
1318 |
-
#: src/
|
1319 |
-
|
|
|
|
|
1320 |
msgstr ""
|
1321 |
|
1322 |
-
#: src/
|
1323 |
-
msgid ""
|
1324 |
-
"Before enabling 2-factor email authentication for your WordPress site, you "
|
1325 |
-
"must verify you can receive this email."
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: src/
|
1329 |
msgid ""
|
1330 |
-
"This
|
1331 |
-
"
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: src/
|
1335 |
-
|
1336 |
-
msgid "Click the verify link: %s"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: src/
|
1340 |
-
|
1341 |
-
msgid "Here's your code for the guided wizard: %s"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#: src/
|
1345 |
-
|
|
|
1346 |
msgstr ""
|
1347 |
|
1348 |
-
#: src/
|
1349 |
-
msgid "
|
1350 |
msgstr ""
|
1351 |
|
1352 |
-
#: src/
|
1353 |
-
msgid "
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
#: src/
|
1357 |
-
msgid "
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: src/
|
1361 |
-
msgid "
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: src/
|
1365 |
-
|
1366 |
-
#: src/lib/src/Modules/Firewall/Strings.php:161
|
1367 |
-
msgid "Administrators"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
-
#: src/
|
1371 |
-
msgid "
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: src/
|
1375 |
-
|
|
|
1376 |
msgstr ""
|
1377 |
|
1378 |
-
#: src/
|
1379 |
-
|
1380 |
-
msgid "Support for login protection with %s is a Pro-only feature."
|
1381 |
msgstr ""
|
1382 |
|
1383 |
-
#: src/
|
1384 |
-
msgid ""
|
1385 |
-
"2FA by email demands that your WP site is properly configured to send email."
|
1386 |
msgstr ""
|
1387 |
|
1388 |
-
#: src/
|
1389 |
msgid ""
|
1390 |
-
"
|
1391 |
-
"
|
1392 |
msgstr ""
|
1393 |
|
1394 |
-
#: src/
|
1395 |
-
|
1396 |
-
#: src/processors/lockdown.php:96
|
1397 |
-
msgid "Learn More."
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: src/
|
1401 |
-
|
1402 |
-
#: src/lib/src/Modules/Plugin/Strings.php:420 src/wizards/plugin.php:549
|
1403 |
-
#: src/wizards/plugin.php:554
|
1404 |
-
msgid "Login Guard"
|
1405 |
msgstr ""
|
1406 |
|
1407 |
-
#: src/
|
1408 |
-
msgid "
|
1409 |
msgstr ""
|
1410 |
|
1411 |
-
#: src/
|
1412 |
-
msgid "
|
|
|
|
|
1413 |
msgstr ""
|
1414 |
|
1415 |
-
#: src/
|
1416 |
-
msgid "
|
1417 |
msgstr ""
|
1418 |
|
1419 |
-
#: src/
|
1420 |
-
|
|
|
1421 |
msgstr ""
|
1422 |
|
1423 |
-
#: src/
|
1424 |
-
|
|
|
1425 |
msgstr ""
|
1426 |
|
1427 |
-
#: src/
|
1428 |
-
|
|
|
|
|
1429 |
msgstr ""
|
1430 |
|
1431 |
-
#: src/
|
1432 |
-
|
|
|
1433 |
msgstr ""
|
1434 |
|
1435 |
-
#: src/
|
1436 |
-
|
|
|
1437 |
msgstr ""
|
1438 |
|
1439 |
-
#: src/
|
1440 |
-
|
|
|
1441 |
msgstr ""
|
1442 |
|
1443 |
-
#: src/
|
1444 |
-
|
|
|
1445 |
msgstr ""
|
1446 |
|
1447 |
-
#: src/
|
1448 |
-
|
|
|
1449 |
msgstr ""
|
1450 |
|
1451 |
-
#: src/
|
1452 |
-
|
|
|
1453 |
msgstr ""
|
1454 |
|
1455 |
-
#: src/
|
1456 |
-
|
|
|
1457 |
msgstr ""
|
1458 |
|
1459 |
-
#: src/
|
1460 |
-
msgid "
|
1461 |
msgstr ""
|
1462 |
|
1463 |
-
#: src/
|
1464 |
-
|
1465 |
-
msgid "General Settings"
|
1466 |
msgstr ""
|
1467 |
|
1468 |
-
#: src/
|
1469 |
-
|
1470 |
-
msgid "General %s Settings"
|
1471 |
msgstr ""
|
1472 |
|
1473 |
-
#: src/
|
1474 |
-
msgid "
|
1475 |
msgstr ""
|
1476 |
|
1477 |
-
#: src/
|
1478 |
-
|
1479 |
-
msgid "Visitor IP address source is: %s"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
-
#: src/
|
1483 |
-
msgid "
|
|
|
|
|
1484 |
msgstr ""
|
1485 |
|
1486 |
-
#: src/
|
1487 |
-
|
1488 |
-
msgid "Email address for reports set to: %s"
|
1489 |
msgstr ""
|
1490 |
|
1491 |
-
#: src/
|
1492 |
#, php-format
|
1493 |
-
msgid "
|
1494 |
msgstr ""
|
1495 |
|
1496 |
-
#: src/
|
1497 |
-
msgid "
|
1498 |
msgstr ""
|
1499 |
|
1500 |
-
#: src/
|
1501 |
-
msgid "
|
1502 |
msgstr ""
|
1503 |
|
1504 |
-
#: src/
|
1505 |
-
msgid "
|
1506 |
msgstr ""
|
1507 |
|
1508 |
-
#: src/
|
1509 |
-
|
1510 |
-
"
|
1511 |
-
"correctly configured."
|
1512 |
msgstr ""
|
1513 |
|
1514 |
-
#: src/
|
1515 |
#, php-format
|
1516 |
-
msgid "%s
|
1517 |
msgstr ""
|
1518 |
|
1519 |
-
#: src/
|
1520 |
-
|
|
|
1521 |
msgstr ""
|
1522 |
|
1523 |
-
#: src/
|
1524 |
-
|
1525 |
-
|
|
|
1526 |
msgstr ""
|
1527 |
|
1528 |
-
#: src/
|
1529 |
-
|
1530 |
-
msgid "Weak"
|
1531 |
msgstr ""
|
1532 |
|
1533 |
-
#: src/
|
1534 |
-
|
1535 |
-
|
1536 |
-
msgid "Medium"
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#: src/
|
1540 |
-
|
1541 |
-
|
|
|
1542 |
msgstr ""
|
1543 |
|
1544 |
-
#: src/
|
1545 |
-
|
1546 |
-
msgid "Very Strong"
|
1547 |
msgstr ""
|
1548 |
|
1549 |
-
#: src/
|
1550 |
-
msgid "
|
|
|
|
|
1551 |
msgstr ""
|
1552 |
|
1553 |
-
#: src/
|
1554 |
-
msgid "
|
1555 |
msgstr ""
|
1556 |
|
1557 |
-
#: src/
|
1558 |
-
|
1559 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:45
|
1560 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:46
|
1561 |
-
msgid "Password Policies"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#: src/
|
1565 |
-
|
|
|
1566 |
msgstr ""
|
1567 |
|
1568 |
-
#: src/
|
1569 |
-
msgid "
|
1570 |
msgstr ""
|
1571 |
|
1572 |
-
#: src/
|
1573 |
-
|
1574 |
-
#: src/lib/src/Modules/Sessions/Strings.php:24
|
1575 |
-
#: src/lib/src/Modules/Traffic/Strings.php:43
|
1576 |
-
#: src/lib/src/Modules/Traffic/Strings.php:53
|
1577 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:40
|
1578 |
-
msgid "User Management"
|
1579 |
msgstr ""
|
1580 |
|
1581 |
-
#: src/
|
1582 |
-
|
|
|
1583 |
msgstr ""
|
1584 |
|
1585 |
-
#: src/
|
1586 |
-
msgid "
|
1587 |
msgstr ""
|
1588 |
|
1589 |
-
#: src/
|
1590 |
-
|
1591 |
-
msgid "Idle sessions are terminated after %s hours"
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#: src/
|
1595 |
-
msgid "
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#: src/
|
1599 |
-
msgid "
|
1600 |
msgstr ""
|
1601 |
|
1602 |
-
#: src/
|
1603 |
-
msgid "
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#: src/
|
1607 |
-
msgid "
|
1608 |
msgstr ""
|
1609 |
|
1610 |
-
#: src/
|
1611 |
-
|
|
|
1612 |
msgstr ""
|
1613 |
|
1614 |
-
#: src/
|
1615 |
-
msgid "
|
1616 |
msgstr ""
|
1617 |
|
1618 |
-
#: src/
|
1619 |
-
msgid "
|
1620 |
msgstr ""
|
1621 |
|
1622 |
-
#: src/
|
1623 |
-
|
|
|
|
|
|
|
|
|
|
|
1624 |
msgstr ""
|
1625 |
|
1626 |
-
#: src/
|
1627 |
-
msgid "
|
1628 |
msgstr ""
|
1629 |
|
1630 |
-
#: src/lib/src/
|
1631 |
-
msgid "
|
1632 |
msgstr ""
|
1633 |
|
1634 |
-
#: src/lib/src/Modules/
|
1635 |
-
msgid "
|
1636 |
msgstr ""
|
1637 |
|
1638 |
-
#: src/lib/src/Modules/
|
1639 |
-
msgid "
|
1640 |
msgstr ""
|
1641 |
|
1642 |
-
#: src/lib/src/Modules/
|
1643 |
-
msgid "
|
1644 |
msgstr ""
|
1645 |
|
1646 |
-
#: src/lib/src/Modules/
|
1647 |
#, php-format
|
1648 |
-
msgid "
|
1649 |
msgstr ""
|
1650 |
|
1651 |
-
#: src/lib/src/Modules/
|
1652 |
-
msgid "
|
1653 |
msgstr ""
|
1654 |
|
1655 |
-
#: src/lib/src/Modules/
|
1656 |
-
|
1657 |
-
msgid "Plugin \"%s\" was activated."
|
1658 |
msgstr ""
|
1659 |
|
1660 |
-
#: src/lib/src/Modules/
|
1661 |
#, php-format
|
1662 |
-
msgid "
|
1663 |
msgstr ""
|
1664 |
|
1665 |
-
#: src/lib/src/Modules/
|
1666 |
#, php-format
|
1667 |
-
msgid ""
|
1668 |
-
"An attempt was made to edit the plugin file \"%s\" directly through the "
|
1669 |
-
"WordPress editor."
|
1670 |
msgstr ""
|
1671 |
|
1672 |
-
#: src/lib/src/Modules/
|
1673 |
-
|
1674 |
-
|
|
|
|
|
1675 |
msgstr ""
|
1676 |
|
1677 |
-
#: src/lib/src/Modules/
|
1678 |
-
|
1679 |
-
msgid ""
|
1680 |
-
"An attempt was made to edit the theme file \"%s\" directly through the "
|
1681 |
-
"WordPress editor."
|
1682 |
msgstr ""
|
1683 |
|
1684 |
-
#: src/lib/src/Modules/
|
1685 |
-
|
1686 |
-
msgid "WordPress Core was updated from \"%s\" to \"%s\"."
|
1687 |
msgstr ""
|
1688 |
|
1689 |
-
#: src/lib/src/Modules/
|
1690 |
-
|
1691 |
-
msgid "
|
1692 |
msgstr ""
|
1693 |
|
1694 |
-
#: src/lib/src/Modules/
|
1695 |
-
|
1696 |
-
msgid "WordPress Post entitled \"%s\" was permanently deleted from trash."
|
1697 |
msgstr ""
|
1698 |
|
1699 |
-
#: src/lib/src/Modules/
|
1700 |
-
|
1701 |
-
msgid "Post entitled \"%s\" was trashed."
|
1702 |
msgstr ""
|
1703 |
|
1704 |
-
#: src/lib/src/Modules/
|
1705 |
-
|
1706 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:48
|
1707 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:52
|
1708 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:56
|
1709 |
-
#, php-format
|
1710 |
-
msgid "Post Type: %s"
|
1711 |
msgstr ""
|
1712 |
|
1713 |
-
#: src/lib/src/Modules/
|
1714 |
-
|
1715 |
-
msgid "Post entitled \"%s\" was recoverd from trash."
|
1716 |
msgstr ""
|
1717 |
|
1718 |
-
#: src/lib/src/Modules/
|
1719 |
-
|
1720 |
-
|
|
|
|
|
|
|
|
|
1721 |
msgstr ""
|
1722 |
|
1723 |
-
#: src/lib/src/Modules/
|
1724 |
-
|
1725 |
-
msgid "Post entitled \"%s\" was published."
|
1726 |
msgstr ""
|
1727 |
|
1728 |
-
#: src/lib/src/Modules/
|
1729 |
-
|
1730 |
-
msgid "
|
1731 |
msgstr ""
|
1732 |
|
1733 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
1734 |
#, php-format
|
1735 |
-
msgid "
|
|
|
|
|
1736 |
msgstr ""
|
1737 |
|
1738 |
-
#: src/lib/src/Modules/
|
1739 |
-
msgid "
|
1740 |
msgstr ""
|
1741 |
|
1742 |
-
#: src/lib/src/Modules/
|
1743 |
-
|
1744 |
-
msgid "New username is \"%s\" with email address \"%s\"."
|
1745 |
msgstr ""
|
1746 |
|
1747 |
-
#: src/lib/src/Modules/
|
1748 |
-
msgid "
|
1749 |
msgstr ""
|
1750 |
|
1751 |
-
#: src/lib/src/Modules/
|
1752 |
-
|
1753 |
-
msgid "Username was \"%s\" with email address \"%s\"."
|
1754 |
msgstr ""
|
1755 |
|
1756 |
-
#: src/lib/src/Modules/
|
1757 |
#, php-format
|
1758 |
-
msgid "
|
1759 |
msgstr ""
|
1760 |
|
1761 |
-
#: src/lib/src/Modules/
|
1762 |
-
msgid "
|
1763 |
msgstr ""
|
1764 |
|
1765 |
-
#: src/lib/src/Modules/
|
1766 |
-
|
1767 |
-
"
|
1768 |
-
"that an attempt was made."
|
1769 |
msgstr ""
|
1770 |
|
1771 |
-
#: src/lib/src/Modules/
|
1772 |
-
|
1773 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1774 |
msgstr ""
|
1775 |
|
1776 |
-
#: src/lib/src/Modules/
|
1777 |
#, php-format
|
1778 |
-
msgid "
|
1779 |
msgstr ""
|
1780 |
|
1781 |
-
#: src/lib/src/Modules/
|
1782 |
-
|
1783 |
-
msgid "Attempting to log email, but data was not of the correct type (%s)"
|
1784 |
msgstr ""
|
1785 |
|
1786 |
-
#: src/lib/src/Modules/
|
1787 |
-
msgid "
|
|
|
|
|
1788 |
msgstr ""
|
1789 |
|
1790 |
-
#: src/lib/src/Modules/
|
1791 |
-
msgid "
|
1792 |
msgstr ""
|
1793 |
|
1794 |
-
#: src/lib/src/Modules/
|
1795 |
-
#: src/
|
1796 |
-
|
1797 |
-
msgid "Emails"
|
1798 |
msgstr ""
|
1799 |
|
1800 |
-
#: src/lib/src/Modules/
|
1801 |
-
|
1802 |
-
msgid "Time"
|
1803 |
msgstr ""
|
1804 |
|
1805 |
-
#: src/lib/src/Modules/
|
1806 |
-
|
1807 |
-
#: src/lib/src/Tables/Render/AuditTrail.php:69
|
1808 |
-
msgid "Message"
|
1809 |
msgstr ""
|
1810 |
|
1811 |
-
#: src/lib/src/Modules/
|
1812 |
-
msgid "
|
|
|
|
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#: src/lib/src/Modules/
|
1816 |
-
|
1817 |
-
#: src/lib/src/Modules/Plugin/Strings.php:391
|
1818 |
-
#: src/lib/src/Tables/Render/IpBase.php:21
|
1819 |
-
#: src/lib/src/Tables/Render/IpBlack.php:16
|
1820 |
-
#: src/lib/src/Tables/Render/IpWhite.php:12 src/processors/firewall.php:403
|
1821 |
-
#: src/processors/loginprotect_intentprovider_backup.php:165
|
1822 |
-
#: src/processors/loginprotect_intentprovider_email.php:156
|
1823 |
-
#: src/processors/user_management.php:205
|
1824 |
-
#: src/processors/user_management.php:236
|
1825 |
-
msgid "IP Address"
|
1826 |
msgstr ""
|
1827 |
|
1828 |
-
#: src/lib/src/Modules/
|
1829 |
-
|
1830 |
-
#: src/lib/src/Tables/Build/Sessions.php:72
|
1831 |
-
#: src/lib/src/Tables/Build/Traffic.php:136
|
1832 |
-
msgid "You"
|
1833 |
msgstr ""
|
1834 |
|
1835 |
-
#: src/lib/src/Modules/
|
1836 |
-
msgid "
|
1837 |
msgstr ""
|
1838 |
|
1839 |
-
#: src/lib/src/Modules/
|
1840 |
-
|
1841 |
-
|
1842 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:38
|
1843 |
-
#: src/lib/src/Modules/Firewall/Strings.php:19
|
1844 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:90
|
1845 |
-
#: src/lib/src/Modules/Headers/Strings.php:19
|
1846 |
-
#: src/lib/src/Modules/IPs/Strings.php:24
|
1847 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:30
|
1848 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:68
|
1849 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:34
|
1850 |
-
#: src/lib/src/Modules/Sessions/Strings.php:20
|
1851 |
-
#: src/lib/src/Modules/Statistics/Strings.php:20
|
1852 |
-
#: src/lib/src/Modules/Statistics/Strings.php:29
|
1853 |
-
#: src/lib/src/Modules/Traffic/Strings.php:31
|
1854 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:36
|
1855 |
-
msgid "On"
|
1856 |
msgstr ""
|
1857 |
|
1858 |
-
#: src/lib/src/Modules/
|
1859 |
-
|
1860 |
-
#: src/lib/src/Modules/Base/Strings.php:41
|
1861 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:38
|
1862 |
-
#: src/lib/src/Modules/Firewall/Strings.php:19
|
1863 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:90
|
1864 |
-
#: src/lib/src/Modules/Headers/Strings.php:19
|
1865 |
-
#: src/lib/src/Modules/IPs/Strings.php:24
|
1866 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:30
|
1867 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:68
|
1868 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:34
|
1869 |
-
#: src/lib/src/Modules/Sessions/Strings.php:20
|
1870 |
-
#: src/lib/src/Modules/Statistics/Strings.php:20
|
1871 |
-
#: src/lib/src/Modules/Statistics/Strings.php:29
|
1872 |
-
#: src/lib/src/Modules/Traffic/Strings.php:31
|
1873 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:36
|
1874 |
-
msgid "Off"
|
1875 |
msgstr ""
|
1876 |
|
1877 |
-
#: src/lib/src/Modules/
|
1878 |
-
#: src/lib/src/Modules/
|
1879 |
-
#: src/lib/src/Modules/
|
1880 |
-
#: src/lib/src/Modules/
|
1881 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:
|
1882 |
-
#: src/lib/src/Modules/
|
1883 |
-
#: src/lib/src/Modules/
|
1884 |
-
#: src/lib/src/Modules/
|
1885 |
-
#: src/lib/src/Modules/
|
1886 |
-
#: src/lib/src/Modules/
|
1887 |
-
#: src/lib/src/Modules/
|
1888 |
-
#: src/lib/src/Modules/
|
1889 |
-
#: src/lib/src/Modules/
|
1890 |
-
#: src/lib/src/Modules/
|
1891 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1892 |
#, php-format
|
1893 |
-
msgid "Enable
|
1894 |
msgstr ""
|
1895 |
|
1896 |
-
#: src/lib/src/Modules/
|
1897 |
-
|
1898 |
-
|
1899 |
-
|
1900 |
-
|
1901 |
-
#: src/lib/src/Modules/
|
1902 |
-
|
1903 |
-
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
-
#: src/lib/src/Modules/
|
1908 |
-
|
1909 |
-
|
1910 |
-
|
1911 |
-
#: src/lib/src/Modules/
|
1912 |
-
|
1913 |
-
|
1914 |
-
|
1915 |
-
#: src/lib/src/Modules/
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
1919 |
-
#: src/lib/src/Modules/
|
1920 |
-
|
1921 |
-
|
1922 |
-
|
1923 |
-
|
1924 |
-
|
1925 |
-
#: src/lib/src/Modules/
|
1926 |
-
|
1927 |
-
|
1928 |
-
|
1929 |
-
|
1930 |
-
|
1931 |
-
#: src/lib/src/Modules/
|
1932 |
-
|
1933 |
-
|
1934 |
-
|
1935 |
-
|
1936 |
-
|
1937 |
-
#: src/lib/src/Modules/
|
1938 |
-
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
#: src/lib/src/Modules/
|
1943 |
-
#: src/lib/src/Modules/
|
1944 |
-
#: src/lib/src/Modules/
|
1945 |
-
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
1949 |
-
#: src/lib/src/Modules/
|
1950 |
-
|
1951 |
-
|
1952 |
-
|
1953 |
-
|
1954 |
-
#: src/lib/src/Modules/
|
1955 |
-
|
1956 |
-
|
1957 |
-
|
1958 |
-
#: src/lib/src/Modules/
|
1959 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1960 |
msgstr ""
|
1961 |
|
1962 |
-
#: src/lib/src/Modules/
|
1963 |
-
msgid ""
|
1964 |
-
"The Audit Trail is designed so you can look back on events and analyse what "
|
1965 |
-
"happened and what may have gone wrong."
|
1966 |
msgstr ""
|
1967 |
|
1968 |
-
#: src/lib/src/Modules/
|
1969 |
-
|
1970 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:139
|
1971 |
-
#: src/lib/src/Modules/Autoupdates/Strings.php:25
|
1972 |
-
#: src/lib/src/Modules/Autoupdates/Strings.php:33
|
1973 |
-
#: src/lib/src/Modules/Autoupdates/Strings.php:45
|
1974 |
-
#: src/lib/src/Modules/Autoupdates/Strings.php:54
|
1975 |
-
#: src/lib/src/Modules/Base/Strings.php:148
|
1976 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:42
|
1977 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:58
|
1978 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:68
|
1979 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:76
|
1980 |
-
#: src/lib/src/Modules/Firewall/Strings.php:24
|
1981 |
-
#: src/lib/src/Modules/Firewall/Strings.php:32
|
1982 |
-
#: src/lib/src/Modules/Firewall/Strings.php:43
|
1983 |
-
#: src/lib/src/Modules/Firewall/Strings.php:52
|
1984 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:85
|
1985 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:94
|
1986 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:103
|
1987 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:113
|
1988 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:122
|
1989 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:132
|
1990 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:141
|
1991 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:150
|
1992 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:159
|
1993 |
-
#: src/lib/src/Modules/Headers/Strings.php:23
|
1994 |
-
#: src/lib/src/Modules/Headers/Strings.php:31
|
1995 |
-
#: src/lib/src/Modules/Headers/Strings.php:40
|
1996 |
-
#: src/lib/src/Modules/IPs/Strings.php:28
|
1997 |
-
#: src/lib/src/Modules/IPs/Strings.php:38
|
1998 |
-
#: src/lib/src/Modules/IPs/Strings.php:54
|
1999 |
-
#: src/lib/src/Modules/IPs/Strings.php:64
|
2000 |
-
#: src/lib/src/Modules/IPs/Strings.php:77
|
2001 |
-
#: src/lib/src/Modules/IPs/Strings.php:88
|
2002 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:35
|
2003 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:43
|
2004 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:52
|
2005 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:61
|
2006 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:71
|
2007 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:80
|
2008 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:90
|
2009 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:108
|
2010 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:127
|
2011 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:242
|
2012 |
-
#: src/lib/src/Modules/Plugin/Strings.php:99
|
2013 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:38
|
2014 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:47
|
2015 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:56
|
2016 |
-
#: src/lib/src/Modules/Sessions/Strings.php:24
|
2017 |
-
#: src/lib/src/Modules/Statistics/Strings.php:24
|
2018 |
-
#: src/lib/src/Modules/Statistics/Strings.php:33
|
2019 |
-
#: src/lib/src/Modules/Statistics/Strings.php:41
|
2020 |
-
#: src/lib/src/Modules/Traffic/Strings.php:35
|
2021 |
-
#: src/lib/src/Modules/Traffic/Strings.php:43
|
2022 |
-
#: src/lib/src/Modules/Traffic/Strings.php:53
|
2023 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:40
|
2024 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:49
|
2025 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:58
|
2026 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:67
|
2027 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:76
|
2028 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:86
|
2029 |
-
msgid "Recommendation"
|
2030 |
msgstr ""
|
2031 |
|
2032 |
-
#: src/lib/src/Modules/
|
2033 |
-
|
2034 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:42
|
2035 |
-
#: src/lib/src/Modules/Firewall/Strings.php:24
|
2036 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:94
|
2037 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:103
|
2038 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:113
|
2039 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:122
|
2040 |
-
#: src/lib/src/Modules/IPs/Strings.php:28
|
2041 |
-
#: src/lib/src/Modules/IPs/Strings.php:38
|
2042 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:35
|
2043 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:71
|
2044 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:38
|
2045 |
-
#: src/lib/src/Modules/Sessions/Strings.php:24
|
2046 |
-
#: src/lib/src/Modules/Statistics/Strings.php:24
|
2047 |
-
#: src/lib/src/Modules/Statistics/Strings.php:33
|
2048 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:40
|
2049 |
-
#, php-format
|
2050 |
-
msgid "Keep the %s feature turned on."
|
2051 |
msgstr ""
|
2052 |
|
2053 |
-
#: src/lib/src/Modules/
|
2054 |
-
|
2055 |
-
msgid "Audit Trail Options"
|
2056 |
msgstr ""
|
2057 |
|
2058 |
-
#: src/lib/src/Modules/
|
2059 |
-
msgid "
|
2060 |
msgstr ""
|
2061 |
|
2062 |
-
#: src/lib/src/Modules/
|
2063 |
-
#: src/lib/src/
|
2064 |
-
|
2065 |
-
#: src/lib/src/Modules/Traffic/Strings.php:53
|
2066 |
-
msgid "These settings are dependent on your requirements."
|
2067 |
msgstr ""
|
2068 |
|
2069 |
-
#: src/lib/src/Modules/
|
2070 |
-
msgid "
|
2071 |
msgstr ""
|
2072 |
|
2073 |
-
#: src/lib/src/Modules/
|
2074 |
-
msgid "
|
2075 |
msgstr ""
|
2076 |
|
2077 |
-
#: src/lib/src/Modules/
|
2078 |
-
|
2079 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:104
|
2080 |
-
#: src/lib/src/Modules/Firewall/Strings.php:80
|
2081 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:187
|
2082 |
-
#: src/lib/src/Modules/Headers/Strings.php:67
|
2083 |
-
#: src/lib/src/Modules/IPs/Strings.php:117
|
2084 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:89
|
2085 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:164
|
2086 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:102
|
2087 |
-
#: src/lib/src/Modules/Sessions/Strings.php:50
|
2088 |
-
#: src/lib/src/Modules/Traffic/Strings.php:83
|
2089 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:113
|
2090 |
-
#, php-format
|
2091 |
-
msgid "Enable %s Module"
|
2092 |
msgstr ""
|
2093 |
|
2094 |
-
#: src/lib/src/Modules/
|
2095 |
-
|
2096 |
-
#: src/lib/src/Modules/Firewall/Strings.php:81
|
2097 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:188
|
2098 |
-
#: src/lib/src/Modules/Headers/Strings.php:68
|
2099 |
-
#: src/lib/src/Modules/IPs/Strings.php:118
|
2100 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:90
|
2101 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:165
|
2102 |
-
#: src/lib/src/Modules/Sessions/Strings.php:51
|
2103 |
-
#: src/lib/src/Modules/Traffic/Strings.php:84
|
2104 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:114
|
2105 |
-
#, php-format
|
2106 |
-
msgid "Enable (or Disable) The %s Module"
|
2107 |
msgstr ""
|
2108 |
|
2109 |
-
#: src/lib/src/Modules/
|
2110 |
-
|
2111 |
-
#: src/lib/src/Modules/CommentsFilter/Strings.php:106
|
2112 |
-
#: src/lib/src/Modules/Firewall/Strings.php:82
|
2113 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:189
|
2114 |
-
#: src/lib/src/Modules/Headers/Strings.php:69
|
2115 |
-
#: src/lib/src/Modules/IPs/Strings.php:119
|
2116 |
-
#: src/lib/src/Modules/Lockdown/Strings.php:91
|
2117 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:166
|
2118 |
-
#: src/lib/src/Modules/Sessions/Strings.php:52
|
2119 |
-
#: src/lib/src/Modules/Traffic/Strings.php:85
|
2120 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:115
|
2121 |
-
#, php-format
|
2122 |
-
msgid "Un-Checking this option will completely disable the %s module."
|
2123 |
msgstr ""
|
2124 |
|
2125 |
-
#: src/lib/src/Modules/
|
2126 |
-
msgid "
|
2127 |
msgstr ""
|
2128 |
|
2129 |
-
#: src/lib/src/Modules/
|
2130 |
-
msgid "
|
2131 |
msgstr ""
|
2132 |
|
2133 |
-
#: src/lib/src/Modules/
|
2134 |
-
msgid ""
|
2135 |
-
"Automatically remove any audit trail entries when this limit is exceeded."
|
2136 |
msgstr ""
|
2137 |
|
2138 |
-
#: src/lib/src/Modules/
|
2139 |
-
msgid "
|
2140 |
msgstr ""
|
2141 |
|
2142 |
-
#: src/lib/src/Modules/
|
2143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2144 |
msgstr ""
|
2145 |
|
2146 |
-
#: src/lib/src/Modules/
|
2147 |
-
msgid ""
|
2148 |
-
"Events older than the number of days specified will be automatically cleaned "
|
2149 |
-
"from the database."
|
2150 |
msgstr ""
|
2151 |
|
2152 |
-
#: src/lib/src/Modules/
|
2153 |
-
|
2154 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:209
|
2155 |
-
msgid "Users And Logins"
|
2156 |
msgstr ""
|
2157 |
|
2158 |
-
#: src/lib/src/Modules/
|
2159 |
-
|
2160 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:220
|
2161 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:226
|
2162 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:232
|
2163 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:238
|
2164 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:244
|
2165 |
-
#, php-format
|
2166 |
-
msgid "Enable Audit Context - %s"
|
2167 |
msgstr ""
|
2168 |
|
2169 |
-
#: src/lib/src/Modules/
|
2170 |
-
|
2171 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:221
|
2172 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:227
|
2173 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:233
|
2174 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:239
|
2175 |
-
#: src/lib/src/Modules/AuditTrail/Strings.php:245
|
2176 |
-
#, php-format
|
2177 |
-
msgid ""
|
2178 |
-
"When this context is enabled, the audit trail will track activity relating "
|
2179 |
-
"to: %s"
|
2180 |
msgstr ""
|
2181 |
|
2182 |
-
#: src/lib/src/Modules/
|
2183 |
-
msgid "
|
2184 |
msgstr ""
|
2185 |
|
2186 |
-
#: src/lib/src/Modules/
|
2187 |
-
msgid "
|
2188 |
msgstr ""
|
2189 |
|
2190 |
-
#: src/lib/src/Modules/
|
2191 |
-
|
2192 |
-
msgid "Posts And Pages"
|
2193 |
msgstr ""
|
2194 |
|
2195 |
-
#: src/lib/src/Modules/
|
2196 |
-
|
|
|
|
|
2197 |
msgstr ""
|
2198 |
|
2199 |
-
#: src/lib/src/Modules/
|
2200 |
-
|
2201 |
-
msgid "WordPress And Settings"
|
2202 |
msgstr ""
|
2203 |
|
2204 |
-
#: src/lib/src/Modules/
|
2205 |
-
|
|
|
2206 |
msgstr ""
|
2207 |
|
2208 |
-
#: src/lib/src/Modules/
|
2209 |
-
msgid "
|
2210 |
msgstr ""
|
2211 |
|
2212 |
-
#: src/lib/src/Modules/
|
2213 |
-
msgid "
|
2214 |
msgstr ""
|
2215 |
|
2216 |
-
#: src/lib/src/Modules/
|
2217 |
-
msgid "
|
2218 |
msgstr ""
|
2219 |
|
2220 |
-
#: src/lib/src/Modules/
|
2221 |
-
msgid ""
|
2222 |
-
"Tracking major changes to your site will help you monitor and catch "
|
2223 |
-
"malicious damage."
|
2224 |
msgstr ""
|
2225 |
|
2226 |
-
#: src/lib/src/Modules/
|
2227 |
-
msgid "
|
2228 |
msgstr ""
|
2229 |
|
2230 |
-
#: src/lib/src/Modules/
|
2231 |
-
msgid "
|
2232 |
msgstr ""
|
2233 |
|
2234 |
-
#: src/lib/src/Modules/
|
2235 |
-
msgid ""
|
2236 |
-
"The number of snapshots to take per week. For daily snapshots, select 7."
|
2237 |
msgstr ""
|
2238 |
|
2239 |
-
#: src/lib/src/Modules/
|
2240 |
-
msgid "
|
2241 |
msgstr ""
|
2242 |
|
2243 |
-
#: src/lib/src/Modules/
|
2244 |
-
msgid ""
|
2245 |
-
"However, increased snapshots provide more granular information on when major "
|
2246 |
-
"site changes occurred."
|
2247 |
msgstr ""
|
2248 |
|
2249 |
-
#: src/lib/src/Modules/
|
2250 |
-
msgid "
|
2251 |
msgstr ""
|
2252 |
|
2253 |
-
#: src/lib/src/Modules/
|
2254 |
-
msgid "
|
2255 |
msgstr ""
|
2256 |
|
2257 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2258 |
msgid ""
|
2259 |
-
"
|
2260 |
-
"
|
2261 |
msgstr ""
|
2262 |
|
2263 |
-
#: src/lib/src/Modules/
|
|
|
2264 |
msgid ""
|
2265 |
-
"You
|
|
|
2266 |
msgstr ""
|
2267 |
|
2268 |
-
#: src/lib/src/Modules/
|
2269 |
-
msgid "
|
2270 |
msgstr ""
|
2271 |
|
2272 |
-
#: src/lib/src/Modules/
|
2273 |
-
|
2274 |
-
msgid "
|
|
|
|
|
|
|
|
|
2275 |
msgstr ""
|
2276 |
|
2277 |
-
#: src/lib/src/Modules/
|
2278 |
-
msgid "
|
2279 |
msgstr ""
|
2280 |
|
2281 |
-
#: src/lib/src/Modules/
|
2282 |
-
msgid "
|
2283 |
msgstr ""
|
2284 |
|
2285 |
-
#: src/lib/src/Modules/
|
2286 |
-
|
|
|
2287 |
msgstr ""
|
2288 |
|
2289 |
-
#: src/lib/src/Modules/
|
2290 |
msgid ""
|
2291 |
-
"
|
2292 |
-
"you choose what exactly gets updated automatically."
|
2293 |
msgstr ""
|
2294 |
|
2295 |
-
#: src/lib/src/Modules/
|
2296 |
-
|
|
|
|
|
2297 |
msgstr ""
|
2298 |
|
2299 |
-
#: src/lib/src/Modules/
|
2300 |
-
msgid ""
|
2301 |
-
"If you never want WordPress to automatically update anything on your site, "
|
2302 |
-
"turn on this option."
|
2303 |
msgstr ""
|
2304 |
|
2305 |
-
#: src/lib/src/Modules/
|
2306 |
-
|
|
|
2307 |
msgstr ""
|
2308 |
|
2309 |
-
#: src/lib/src/Modules/
|
2310 |
-
|
2311 |
-
msgid "Turn Off"
|
2312 |
msgstr ""
|
2313 |
|
2314 |
-
#: src/lib/src/Modules/
|
2315 |
-
msgid "
|
2316 |
msgstr ""
|
2317 |
|
2318 |
-
#: src/lib/src/Modules/
|
2319 |
-
|
2320 |
-
msgid ""
|
2321 |
-
"Allows the %s plugin to automatically update itself when an update is "
|
2322 |
-
"available."
|
2323 |
msgstr ""
|
2324 |
|
2325 |
-
#: src/lib/src/Modules/
|
2326 |
-
msgid "
|
2327 |
msgstr ""
|
2328 |
|
2329 |
-
#: src/lib/src/Modules/
|
2330 |
-
msgid "
|
2331 |
msgstr ""
|
2332 |
|
2333 |
-
#: src/lib/src/Modules/
|
2334 |
-
msgid "
|
2335 |
msgstr ""
|
2336 |
|
2337 |
-
#: src/lib/src/Modules/
|
2338 |
-
msgid "
|
2339 |
msgstr ""
|
2340 |
|
2341 |
-
#: src/lib/src/Modules/
|
2342 |
-
msgid "
|
2343 |
msgstr ""
|
2344 |
|
2345 |
-
#: src/lib/src/Modules/
|
2346 |
-
msgid "
|
2347 |
msgstr ""
|
2348 |
|
2349 |
-
#: src/lib/src/Modules/
|
2350 |
-
|
2351 |
-
msgid "Auto-Update Options"
|
2352 |
msgstr ""
|
2353 |
|
2354 |
-
#: src/lib/src/Modules/
|
2355 |
-
msgid "
|
2356 |
msgstr ""
|
2357 |
|
2358 |
-
#: src/lib/src/Modules/
|
2359 |
-
msgid "
|
2360 |
msgstr ""
|
2361 |
|
2362 |
-
#: src/lib/src/Modules/
|
2363 |
-
msgid "
|
2364 |
msgstr ""
|
2365 |
|
2366 |
-
#: src/lib/src/Modules/
|
2367 |
-
|
2368 |
-
|
2369 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2370 |
msgstr ""
|
2371 |
|
2372 |
-
#: src/lib/src/Modules/
|
2373 |
-
msgid "
|
2374 |
msgstr ""
|
2375 |
|
2376 |
-
#: src/lib/src/Modules/
|
2377 |
-
|
|
|
|
|
2378 |
msgstr ""
|
2379 |
|
2380 |
-
#: src/lib/src/Modules/
|
2381 |
-
|
2382 |
-
msgid ""
|
2383 |
-
"Regardless of any other settings, automatically update the \"%s\" plugin."
|
2384 |
msgstr ""
|
2385 |
|
2386 |
-
#: src/lib/src/Modules/
|
2387 |
-
msgid "
|
2388 |
msgstr ""
|
2389 |
|
2390 |
-
#: src/lib/src/Modules/
|
2391 |
-
|
|
|
|
|
2392 |
msgstr ""
|
2393 |
|
2394 |
-
#: src/lib/src/Modules/
|
2395 |
-
msgid ""
|
2396 |
-
"At least automatically upgrading minor versions is recommended (and is the "
|
2397 |
-
"WordPress default)."
|
2398 |
msgstr ""
|
2399 |
|
2400 |
-
#: src/lib/src/Modules/
|
2401 |
-
|
|
|
2402 |
msgstr ""
|
2403 |
|
2404 |
-
#: src/lib/src/Modules/
|
2405 |
-
msgid "
|
2406 |
msgstr ""
|
2407 |
|
2408 |
-
#: src/lib/src/Modules/
|
2409 |
-
msgid ""
|
2410 |
-
"Note: Automatic updates for translations are enabled on WordPress by default."
|
2411 |
msgstr ""
|
2412 |
|
2413 |
-
#: src/lib/src/Modules/
|
2414 |
-
msgid "
|
2415 |
msgstr ""
|
2416 |
|
2417 |
-
#: src/lib/src/Modules/
|
2418 |
-
msgid ""
|
2419 |
-
"Note: Automatic updates for plugins are disabled on WordPress by default."
|
2420 |
msgstr ""
|
2421 |
|
2422 |
-
#: src/lib/src/Modules/
|
2423 |
-
msgid "
|
2424 |
msgstr ""
|
2425 |
|
2426 |
-
#: src/lib/src/Modules/
|
2427 |
-
|
|
|
|
|
2428 |
msgstr ""
|
2429 |
|
2430 |
-
#: src/lib/src/Modules/
|
2431 |
-
msgid ""
|
2432 |
-
"Turning this on will provide an option on the plugins page to select whether "
|
2433 |
-
"a plugin is automatically updated."
|
2434 |
msgstr ""
|
2435 |
|
2436 |
-
#: src/lib/src/Modules/
|
2437 |
-
|
|
|
2438 |
msgstr ""
|
2439 |
|
2440 |
-
#: src/lib/src/Modules/
|
2441 |
-
msgid ""
|
2442 |
-
"Note: Automatic updates for themes are disabled on WordPress by default."
|
2443 |
msgstr ""
|
2444 |
|
2445 |
-
#: src/lib/src/Modules/
|
2446 |
-
msgid "
|
2447 |
msgstr ""
|
2448 |
|
2449 |
-
#: src/lib/src/Modules/
|
2450 |
-
msgid "
|
2451 |
msgstr ""
|
2452 |
|
2453 |
-
#: src/lib/src/Modules/
|
2454 |
-
|
2455 |
-
"
|
2456 |
-
"disabled by default. Check this box to ignore version control systems and "
|
2457 |
-
"allow automatic updates."
|
2458 |
msgstr ""
|
2459 |
|
2460 |
-
#: src/lib/src/Modules/
|
2461 |
-
msgid "
|
2462 |
msgstr ""
|
2463 |
|
2464 |
-
#: src/lib/src/Modules/
|
2465 |
-
msgid "
|
2466 |
msgstr ""
|
2467 |
|
2468 |
-
#: src/lib/src/Modules/
|
2469 |
msgid ""
|
2470 |
-
"
|
2471 |
-
"
|
2472 |
msgstr ""
|
2473 |
|
2474 |
-
#: src/lib/src/Modules/
|
2475 |
-
|
|
|
|
|
2476 |
msgstr ""
|
2477 |
|
2478 |
-
#: src/lib/src/Modules/
|
2479 |
-
msgid "
|
2480 |
msgstr ""
|
2481 |
|
2482 |
-
#: src/lib/src/Modules/
|
2483 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2484 |
msgstr ""
|
2485 |
|
2486 |
-
#: src/lib/src/Modules/
|
2487 |
-
msgid "
|
|
|
|
|
2488 |
msgstr ""
|
2489 |
|
2490 |
-
#: src/lib/src/Modules/
|
2491 |
#, php-format
|
2492 |
msgid ""
|
2493 |
-
"
|
2494 |
-
"
|
2495 |
msgstr ""
|
2496 |
|
2497 |
-
#: src/lib/src/Modules/
|
2498 |
-
msgid ""
|
2499 |
-
"This helps ensure updates are more stable before they're automatically "
|
2500 |
-
"applied to your site."
|
2501 |
msgstr ""
|
2502 |
|
2503 |
-
#: src/lib/src/Modules/
|
2504 |
-
|
2505 |
-
msgid "%s Plugin options updated successfully."
|
2506 |
msgstr ""
|
2507 |
|
2508 |
-
#: src/lib/src/Modules/
|
2509 |
-
|
2510 |
-
|
|
|
|
|
|
|
2511 |
msgstr ""
|
2512 |
|
2513 |
-
#: src/lib/src/Modules/
|
2514 |
-
msgid "
|
|
|
|
|
2515 |
msgstr ""
|
2516 |
|
2517 |
-
#: src/lib/src/Modules/
|
2518 |
-
|
|
|
|
|
2519 |
msgstr ""
|
2520 |
|
2521 |
-
#: src/lib/src/Modules/
|
2522 |
-
|
2523 |
-
|
|
|
2524 |
msgstr ""
|
2525 |
|
2526 |
-
#: src/lib/src/Modules/
|
2527 |
-
msgid "
|
2528 |
msgstr ""
|
2529 |
|
2530 |
-
#: src/lib/src/Modules/
|
2531 |
-
|
2532 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:75
|
2533 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:180
|
2534 |
-
msgid "White Label"
|
2535 |
msgstr ""
|
2536 |
|
2537 |
-
#: src/lib/src/Modules/
|
2538 |
-
|
2539 |
-
|
|
|
2540 |
msgstr ""
|
2541 |
|
2542 |
-
#: src/lib/src/Modules/
|
2543 |
-
msgid "
|
2544 |
msgstr ""
|
2545 |
|
2546 |
-
#: src/lib/src/Modules/
|
2547 |
-
msgid "
|
2548 |
msgstr ""
|
2549 |
|
2550 |
-
#: src/lib/src/Modules/
|
2551 |
-
msgid "
|
|
|
|
|
2552 |
msgstr ""
|
2553 |
|
2554 |
-
#: src/lib/src/Modules/
|
2555 |
-
msgid "
|
2556 |
msgstr ""
|
2557 |
|
2558 |
-
#: src/lib/src/Modules/
|
2559 |
-
msgid "
|
2560 |
msgstr ""
|
2561 |
|
2562 |
-
#: src/lib/src/Modules/
|
2563 |
-
|
2564 |
-
msgid "
|
|
|
|
|
2565 |
msgstr ""
|
2566 |
|
2567 |
-
#: src/lib/src/Modules/
|
2568 |
-
msgid "
|
|
|
|
|
2569 |
msgstr ""
|
2570 |
|
2571 |
-
#: src/lib/src/Modules/
|
2572 |
-
|
|
|
2573 |
msgstr ""
|
2574 |
|
2575 |
-
#: src/lib/src/Modules/
|
2576 |
-
|
2577 |
-
#: src/lib/src/Tables/Build/Sessions.php:68
|
2578 |
-
#: src/lib/src/Tables/Build/Traffic.php:85
|
2579 |
-
#: src/lib/src/Tables/Build/Traffic.php:109
|
2580 |
-
msgid "No"
|
2581 |
msgstr ""
|
2582 |
|
2583 |
-
#: src/lib/src/Modules/
|
2584 |
-
msgid "
|
2585 |
msgstr ""
|
2586 |
|
2587 |
-
#: src/lib/src/Modules/
|
2588 |
-
msgid "
|
2589 |
msgstr ""
|
2590 |
|
2591 |
-
#: src/lib/src/Modules/
|
2592 |
-
msgid "
|
2593 |
msgstr ""
|
2594 |
|
2595 |
-
#: src/lib/src/Modules/
|
2596 |
-
|
2597 |
-
#: src/lib/src/Tables/Render/Sessions.php:38
|
2598 |
-
msgid "Logged-In"
|
2599 |
msgstr ""
|
2600 |
|
2601 |
-
#: src/lib/src/Modules/
|
2602 |
-
msgid "
|
|
|
|
|
2603 |
msgstr ""
|
2604 |
|
2605 |
-
#: src/lib/src/Modules/
|
2606 |
-
|
2607 |
-
msgid "Save %s Settings"
|
2608 |
msgstr ""
|
2609 |
|
2610 |
-
#: src/lib/src/Modules/
|
2611 |
-
msgid "
|
2612 |
msgstr ""
|
2613 |
|
2614 |
-
#: src/lib/src/Modules/
|
2615 |
-
msgid "
|
|
|
2616 |
msgstr ""
|
2617 |
|
2618 |
-
#: src/lib/src/Modules/
|
2619 |
-
|
|
|
2620 |
msgstr ""
|
2621 |
|
2622 |
-
#: src/lib/src/Modules/
|
2623 |
-
msgid "
|
2624 |
msgstr ""
|
2625 |
|
2626 |
-
#: src/lib/src/Modules/
|
2627 |
-
msgid "
|
|
|
2628 |
msgstr ""
|
2629 |
|
2630 |
-
#: src/lib/src/Modules/
|
2631 |
-
msgid "
|
|
|
|
|
2632 |
msgstr ""
|
2633 |
|
2634 |
-
#: src/lib/src/Modules/
|
2635 |
-
msgid "
|
2636 |
msgstr ""
|
2637 |
|
2638 |
-
#: src/lib/src/Modules/
|
2639 |
-
msgid "
|
2640 |
msgstr ""
|
2641 |
|
2642 |
-
#: src/lib/src/Modules/
|
2643 |
-
msgid "
|
|
|
|
|
2644 |
msgstr ""
|
2645 |
|
2646 |
-
#: src/lib/src/Modules/
|
2647 |
-
|
2648 |
-
|
2649 |
-
|
2650 |
msgstr ""
|
2651 |
|
2652 |
-
#: src/lib/src/Modules/
|
2653 |
-
msgid "
|
|
|
2654 |
msgstr ""
|
2655 |
|
2656 |
-
#: src/lib/src/Modules/
|
2657 |
-
msgid "
|
|
|
|
|
2658 |
msgstr ""
|
2659 |
|
2660 |
-
#: src/lib/src/Modules/
|
2661 |
-
msgid "
|
|
|
|
|
2662 |
msgstr ""
|
2663 |
|
2664 |
-
#: src/lib/src/Modules/
|
2665 |
-
|
2666 |
-
|
|
|
2667 |
msgstr ""
|
2668 |
|
2669 |
-
#: src/lib/src/Modules/
|
2670 |
-
|
2671 |
-
msgid "Loading"
|
2672 |
msgstr ""
|
2673 |
|
2674 |
-
#: src/lib/src/Modules/
|
2675 |
-
msgid "
|
2676 |
msgstr ""
|
2677 |
|
2678 |
-
#: src/lib/src/Modules/
|
2679 |
msgid ""
|
2680 |
-
"
|
2681 |
-
"
|
2682 |
msgstr ""
|
2683 |
|
2684 |
-
#: src/lib/src/Modules/
|
2685 |
-
msgid "
|
|
|
|
|
2686 |
msgstr ""
|
2687 |
|
2688 |
-
#: src/lib/src/Modules/
|
2689 |
-
msgid "
|
2690 |
msgstr ""
|
2691 |
|
2692 |
-
#: src/lib/src/Modules/
|
2693 |
-
msgid "
|
2694 |
msgstr ""
|
2695 |
|
2696 |
-
#: src/lib/src/Modules/
|
2697 |
-
|
|
|
2698 |
msgstr ""
|
2699 |
|
2700 |
-
#: src/lib/src/Modules/
|
2701 |
-
msgid "
|
|
|
|
|
2702 |
msgstr ""
|
2703 |
|
2704 |
-
#: src/lib/src/Modules/
|
2705 |
-
msgid "
|
|
|
|
|
2706 |
msgstr ""
|
2707 |
|
2708 |
-
#: src/lib/src/Modules/
|
2709 |
-
msgid "
|
|
|
|
|
2710 |
msgstr ""
|
2711 |
|
2712 |
-
#: src/lib/src/Modules/
|
2713 |
-
msgid "
|
|
|
|
|
2714 |
msgstr ""
|
2715 |
|
2716 |
-
#: src/lib/src/Modules/
|
2717 |
-
msgid "
|
|
|
|
|
2718 |
msgstr ""
|
2719 |
|
2720 |
-
#: src/lib/src/Modules/
|
2721 |
-
msgid "
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: src/lib/src/Modules/
|
2725 |
-
msgid "
|
2726 |
msgstr ""
|
2727 |
|
2728 |
-
#: src/lib/src/Modules/
|
2729 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2730 |
msgstr ""
|
2731 |
|
2732 |
-
#: src/lib/src/Modules/
|
2733 |
msgid ""
|
2734 |
-
"
|
2735 |
-
"
|
2736 |
msgstr ""
|
2737 |
|
2738 |
-
#: src/lib/src/Modules/
|
2739 |
-
msgid "
|
2740 |
msgstr ""
|
2741 |
|
2742 |
-
#: src/lib/src/Modules/
|
2743 |
-
msgid "
|
2744 |
msgstr ""
|
2745 |
|
2746 |
-
#: src/lib/src/Modules/
|
2747 |
-
msgid "
|
2748 |
msgstr ""
|
2749 |
|
2750 |
-
#: src/lib/src/Modules/
|
2751 |
msgid ""
|
2752 |
-
"
|
2753 |
-
"
|
2754 |
msgstr ""
|
2755 |
|
2756 |
-
#: src/lib/src/Modules/
|
2757 |
-
msgid "
|
|
|
2758 |
msgstr ""
|
2759 |
|
2760 |
-
#: src/lib/src/Modules/
|
2761 |
-
msgid "
|
2762 |
msgstr ""
|
2763 |
|
2764 |
-
#: src/lib/src/Modules/
|
2765 |
-
msgid "
|
2766 |
msgstr ""
|
2767 |
|
2768 |
-
#: src/lib/src/Modules/
|
2769 |
-
msgid "
|
|
|
2770 |
msgstr ""
|
2771 |
|
2772 |
-
#: src/lib/src/Modules/
|
2773 |
msgid ""
|
2774 |
-
"
|
2775 |
-
"
|
2776 |
msgstr ""
|
2777 |
|
2778 |
-
#: src/lib/src/Modules/
|
2779 |
-
msgid "
|
|
|
|
|
2780 |
msgstr ""
|
2781 |
|
2782 |
-
#: src/lib/src/Modules/
|
2783 |
-
|
2784 |
-
msgid "To reset any message to its default, enter the text exactly: %s"
|
2785 |
msgstr ""
|
2786 |
|
2787 |
-
#: src/lib/src/Modules/
|
2788 |
-
msgid "
|
2789 |
msgstr ""
|
2790 |
|
2791 |
-
#: src/lib/src/Modules/
|
2792 |
msgid ""
|
2793 |
-
"
|
2794 |
-
"
|
2795 |
-
msgstr ""
|
2796 |
-
|
2797 |
-
#: src/lib/src/Modules/CommentsFilter/AdminNotices.php:39
|
2798 |
-
msgid "This is not recommended and you should disable Akismet."
|
2799 |
msgstr ""
|
2800 |
|
2801 |
-
#: src/lib/src/Modules/
|
2802 |
-
msgid "
|
2803 |
msgstr ""
|
2804 |
|
2805 |
-
#: src/lib/src/Modules/
|
2806 |
-
|
2807 |
-
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:43
|
2808 |
-
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:47
|
2809 |
-
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:51
|
2810 |
-
#, php-format
|
2811 |
-
msgid "Failed Bot Test (%s)"
|
2812 |
msgstr ""
|
2813 |
|
2814 |
-
#: src/lib/src/Modules/
|
2815 |
-
msgid "
|
2816 |
msgstr ""
|
2817 |
|
2818 |
-
#: src/lib/src/Modules/
|
2819 |
-
msgid "
|
2820 |
msgstr ""
|
2821 |
|
2822 |
-
#: src/lib/src/Modules/
|
2823 |
-
msgid "
|
2824 |
msgstr ""
|
2825 |
|
2826 |
-
#: src/lib/src/Modules/
|
2827 |
-
msgid "
|
|
|
|
|
2828 |
msgstr ""
|
2829 |
|
2830 |
-
#: src/lib/src/Modules/
|
2831 |
-
msgid "
|
2832 |
msgstr ""
|
2833 |
|
2834 |
-
#: src/lib/src/Modules/
|
2835 |
-
|
2836 |
-
|
2837 |
-
|
2838 |
msgstr ""
|
2839 |
|
2840 |
-
#: src/lib/src/Modules/
|
2841 |
-
msgid "
|
2842 |
msgstr ""
|
2843 |
|
2844 |
-
#: src/lib/src/Modules/
|
2845 |
-
|
|
|
|
|
|
|
2846 |
msgstr ""
|
2847 |
|
2848 |
-
#: src/lib/src/Modules/
|
2849 |
-
|
2850 |
-
msgid "
|
2851 |
msgstr ""
|
2852 |
|
2853 |
-
#: src/lib/src/Modules/
|
2854 |
-
|
2855 |
-
msgid "Reason: %s"
|
2856 |
msgstr ""
|
2857 |
|
2858 |
-
#: src/lib/src/Modules/
|
2859 |
-
msgid "
|
|
|
|
|
2860 |
msgstr ""
|
2861 |
|
2862 |
-
#: src/lib/src/Modules/
|
2863 |
-
msgid "
|
2864 |
msgstr ""
|
2865 |
|
2866 |
-
#: src/lib/src/Modules/
|
2867 |
-
msgid "
|
|
|
2868 |
msgstr ""
|
2869 |
|
2870 |
-
#: src/lib/src/Modules/
|
2871 |
-
msgid "
|
2872 |
msgstr ""
|
2873 |
|
2874 |
-
#: src/lib/src/Modules/
|
2875 |
-
|
2876 |
-
msgid ""
|
2877 |
-
"The Comments Filter can block 100% of automated spam bots and also offer the "
|
2878 |
-
"option to analyse human-generated spam."
|
2879 |
msgstr ""
|
2880 |
|
2881 |
-
#: src/lib/src/Modules/
|
2882 |
-
msgid "
|
2883 |
msgstr ""
|
2884 |
|
2885 |
-
#: src/lib/src/Modules/
|
2886 |
-
msgid "
|
2887 |
msgstr ""
|
2888 |
|
2889 |
-
#: src/lib/src/Modules/
|
2890 |
-
msgid "
|
2891 |
msgstr ""
|
2892 |
|
2893 |
-
#: src/lib/src/Modules/
|
2894 |
-
msgid "
|
2895 |
msgstr ""
|
2896 |
|
2897 |
-
#: src/lib/src/Modules/
|
2898 |
-
|
2899 |
-
msgid "%s Comment SPAM Protection"
|
2900 |
msgstr ""
|
2901 |
|
2902 |
-
#: src/lib/src/Modules/
|
2903 |
-
msgid "
|
2904 |
msgstr ""
|
2905 |
|
2906 |
-
#: src/lib/src/Modules/
|
2907 |
-
|
2908 |
-
msgid "Blocks 100% of all automated bot-generated comment SPAM."
|
2909 |
msgstr ""
|
2910 |
|
2911 |
-
#: src/lib/src/Modules/
|
2912 |
-
|
2913 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:108
|
2914 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:127
|
2915 |
-
#: src/lib/src/Modules/Plugin/Strings.php:100
|
2916 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:47
|
2917 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:56
|
2918 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:49
|
2919 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:58
|
2920 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:67
|
2921 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:76
|
2922 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:86
|
2923 |
-
msgid "Use of this feature is highly recommend."
|
2924 |
msgstr ""
|
2925 |
|
2926 |
-
#: src/lib/src/Modules/
|
2927 |
-
msgid "
|
2928 |
msgstr ""
|
2929 |
|
2930 |
-
#: src/lib/src/Modules/
|
2931 |
-
|
2932 |
-
msgid "Keep this turned on."
|
2933 |
msgstr ""
|
2934 |
|
2935 |
-
#: src/lib/src/Modules/
|
2936 |
-
|
2937 |
-
msgid "%s Comment SPAM Protection Filter"
|
2938 |
msgstr ""
|
2939 |
|
2940 |
-
#: src/lib/src/Modules/
|
2941 |
-
|
2942 |
-
msgid "Human"
|
2943 |
msgstr ""
|
2944 |
|
2945 |
-
#: src/lib/src/Modules/
|
2946 |
-
msgid "
|
2947 |
msgstr ""
|
2948 |
|
2949 |
-
#: src/lib/src/Modules/
|
2950 |
-
msgid ""
|
2951 |
-
"This tool, unlike other SPAM tools such as Akismet, will not send your "
|
2952 |
-
"comment data to 3rd party services for analysis."
|
2953 |
msgstr ""
|
2954 |
|
2955 |
-
#: src/lib/src/Modules/
|
2956 |
-
msgid "
|
2957 |
msgstr ""
|
2958 |
|
2959 |
-
#: src/lib/src/Modules/
|
2960 |
-
|
2961 |
-
msgid "Comment SPAM Protection"
|
2962 |
msgstr ""
|
2963 |
|
2964 |
-
#: src/lib/src/Modules/
|
2965 |
-
msgid "
|
2966 |
msgstr ""
|
2967 |
|
2968 |
-
#: src/lib/src/Modules/
|
2969 |
-
msgid "
|
2970 |
msgstr ""
|
2971 |
|
2972 |
-
#: src/lib/src/Modules/
|
2973 |
-
|
2974 |
-
"
|
2975 |
-
"and their comments are no longer scanned."
|
2976 |
msgstr ""
|
2977 |
|
2978 |
-
#: src/lib/src/Modules/
|
2979 |
-
msgid "
|
2980 |
msgstr ""
|
2981 |
|
2982 |
-
#: src/lib/src/Modules/
|
2983 |
-
msgid "
|
2984 |
msgstr ""
|
2985 |
|
2986 |
-
#: src/lib/src/Modules/
|
2987 |
-
msgid "
|
2988 |
msgstr ""
|
2989 |
|
2990 |
-
#: src/lib/src/Modules/
|
2991 |
-
msgid ""
|
2992 |
-
"Shield doesn't normally scan comments from logged-in or registered users."
|
2993 |
msgstr ""
|
2994 |
|
2995 |
-
#: src/lib/src/Modules/
|
2996 |
-
|
|
|
2997 |
msgstr ""
|
2998 |
|
2999 |
-
#: src/lib/src/Modules/
|
3000 |
-
|
3001 |
-
|
3002 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:368
|
3003 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:222
|
3004 |
-
#: src/lib/src/Modules/Plugin/Strings.php:242
|
3005 |
-
#: src/lib/src/Modules/Plugin/Strings.php:249
|
3006 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:70
|
3007 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:213
|
3008 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:230
|
3009 |
-
#: src/processors/hackprotect_scan_mal.php:148
|
3010 |
-
#: src/processors/loginprotect_intentprovider_backup.php:29
|
3011 |
-
msgid "Important"
|
3012 |
msgstr ""
|
3013 |
|
3014 |
-
#: src/lib/src/Modules/
|
3015 |
-
|
3016 |
-
msgid "Take a new line for each user role."
|
3017 |
msgstr ""
|
3018 |
|
3019 |
-
#: src/lib/src/Modules/
|
3020 |
-
|
3021 |
-
msgid "Available Roles"
|
3022 |
msgstr ""
|
3023 |
|
3024 |
-
#: src/lib/src/Modules/
|
3025 |
-
|
3026 |
-
msgid "
|
3027 |
msgstr ""
|
3028 |
|
3029 |
-
#: src/lib/src/Modules/
|
3030 |
#, php-format
|
3031 |
-
msgid "
|
3032 |
msgstr ""
|
3033 |
|
3034 |
-
#: src/lib/src/Modules/
|
3035 |
-
msgid ""
|
3036 |
-
"Scans the content of WordPress comments for keywords that are indicative of "
|
3037 |
-
"SPAM and marks the comment according to your preferred setting below."
|
3038 |
msgstr ""
|
3039 |
|
3040 |
-
#: src/lib/src/Modules/
|
3041 |
-
msgid "
|
3042 |
msgstr ""
|
3043 |
|
3044 |
-
#: src/lib/src/Modules/
|
3045 |
-
msgid "
|
3046 |
msgstr ""
|
3047 |
|
3048 |
-
#: src/lib/src/Modules/
|
3049 |
-
msgid ""
|
3050 |
-
"When a user submits a comment, only the selected parts of the comment data "
|
3051 |
-
"will be scanned for SPAM content."
|
3052 |
msgstr ""
|
3053 |
|
3054 |
-
#: src/lib/src/Modules/
|
3055 |
-
|
3056 |
-
msgid "Recommended: %s"
|
3057 |
msgstr ""
|
3058 |
|
3059 |
-
#: src/lib/src/Modules/
|
3060 |
-
msgid "
|
3061 |
msgstr ""
|
3062 |
|
3063 |
-
#: src/lib/src/Modules/
|
3064 |
-
|
3065 |
-
msgid "Default SPAM Action"
|
3066 |
msgstr ""
|
3067 |
|
3068 |
-
#: src/lib/src/Modules/
|
3069 |
-
|
3070 |
-
msgid "How To Categorise Comments When Identified To Be SPAM"
|
3071 |
msgstr ""
|
3072 |
|
3073 |
-
#: src/lib/src/Modules/
|
3074 |
-
#: src/lib/src/
|
3075 |
-
|
3076 |
-
msgid ""
|
3077 |
-
"When a comment is detected as being SPAM from %s, the comment will be "
|
3078 |
-
"categorised based on this setting."
|
3079 |
msgstr ""
|
3080 |
|
3081 |
-
#: src/lib/src/Modules/
|
3082 |
-
msgid "
|
3083 |
msgstr ""
|
3084 |
|
3085 |
-
#: src/lib/src/Modules/
|
3086 |
-
|
|
|
|
|
3087 |
msgstr ""
|
3088 |
|
3089 |
-
#: src/lib/src/Modules/
|
3090 |
-
msgid "
|
|
|
|
|
3091 |
msgstr ""
|
3092 |
|
3093 |
-
#: src/lib/src/Modules/
|
3094 |
-
msgid "
|
3095 |
msgstr ""
|
3096 |
|
3097 |
-
#: src/lib/src/Modules/
|
3098 |
-
msgid "
|
|
|
3099 |
msgstr ""
|
3100 |
|
3101 |
-
#: src/lib/src/Modules/
|
3102 |
-
msgid ""
|
3103 |
-
"Unlike Akismet, your data is never sent off-site to 3rd party processing "
|
3104 |
-
"servers."
|
3105 |
msgstr ""
|
3106 |
|
3107 |
-
#: src/lib/src/Modules/
|
3108 |
-
msgid "
|
3109 |
msgstr ""
|
3110 |
|
3111 |
-
#: src/lib/src/Modules/
|
3112 |
-
msgid "
|
3113 |
msgstr ""
|
3114 |
|
3115 |
-
#: src/lib/src/Modules/
|
3116 |
-
msgid "
|
3117 |
msgstr ""
|
3118 |
|
3119 |
-
#: src/lib/src/Modules/
|
3120 |
-
msgid ""
|
3121 |
-
"By forcing a comments cooldown period, you restrict a Spambot's ability to "
|
3122 |
-
"post multiple times to your posts."
|
3123 |
msgstr ""
|
3124 |
|
3125 |
-
#: src/lib/src/Modules/
|
3126 |
-
msgid "
|
3127 |
msgstr ""
|
3128 |
|
3129 |
-
#: src/lib/src/Modules/
|
3130 |
-
msgid "
|
3131 |
msgstr ""
|
3132 |
|
3133 |
-
#: src/lib/src/Modules/
|
3134 |
-
msgid ""
|
3135 |
-
"Default: 600 seconds (10 minutes). Each visitor is given a unique 'Token' so "
|
3136 |
-
"they can comment. This restricts spambots, but we need to force these tokens "
|
3137 |
-
"to expire and at the same time not bother the visitors."
|
3138 |
msgstr ""
|
3139 |
|
3140 |
-
#: src/lib/src/Modules/
|
3141 |
-
msgid "
|
3142 |
msgstr ""
|
3143 |
|
3144 |
-
#: src/lib/src/Modules/
|
3145 |
-
|
|
|
|
|
3146 |
msgstr ""
|
3147 |
|
3148 |
-
#: src/lib/src/Modules/
|
3149 |
-
msgid "
|
3150 |
msgstr ""
|
3151 |
|
3152 |
-
#: src/lib/src/Modules/
|
3153 |
-
|
3154 |
-
|
3155 |
-
|
3156 |
-
#, php-format
|
3157 |
-
msgid "Default Message: %s"
|
3158 |
msgstr ""
|
3159 |
|
3160 |
-
#: src/lib/src/Modules/
|
3161 |
-
|
3162 |
-
msgid "Please check the box to confirm you're not a spammer"
|
3163 |
msgstr ""
|
3164 |
|
3165 |
-
#: src/lib/src/Modules/
|
3166 |
-
|
|
|
|
|
|
|
3167 |
msgstr ""
|
3168 |
|
3169 |
-
#: src/lib/src/Modules/
|
3170 |
-
msgid "
|
3171 |
msgstr ""
|
3172 |
|
3173 |
-
#: src/lib/src/Modules/
|
3174 |
-
|
3175 |
-
|
3176 |
-
|
3177 |
msgstr ""
|
3178 |
|
3179 |
-
#: src/lib/src/Modules/
|
3180 |
-
#: src/lib/src/Modules/
|
3181 |
-
msgid "
|
3182 |
msgstr ""
|
3183 |
|
3184 |
-
#: src/lib/src/Modules/
|
3185 |
-
|
3186 |
-
#: src/lib/src/Modules/Plugin/Strings.php:255
|
3187 |
-
msgid ""
|
3188 |
-
"You can choose the reCAPTCHA display format that best suits your site, "
|
3189 |
-
"including the new Invisible Recaptcha"
|
3190 |
msgstr ""
|
3191 |
|
3192 |
-
#: src/lib/src/Modules/
|
3193 |
-
msgid "
|
3194 |
msgstr ""
|
3195 |
|
3196 |
-
#: src/lib/src/Modules/
|
3197 |
-
|
|
|
3198 |
msgstr ""
|
3199 |
|
3200 |
-
#: src/lib/src/Modules/
|
3201 |
-
msgid ""
|
3202 |
-
"This alert message is displayed when a visitor attempts to submit a comment "
|
3203 |
-
"without checking the box."
|
3204 |
msgstr ""
|
3205 |
|
3206 |
-
#: src/lib/src/Modules/
|
3207 |
-
msgid "
|
3208 |
msgstr ""
|
3209 |
|
3210 |
-
#: src/lib/src/Modules/
|
3211 |
-
|
3212 |
-
|
3213 |
msgstr ""
|
3214 |
|
3215 |
-
#: src/lib/src/Modules/
|
3216 |
-
#, php-format
|
3217 |
msgid ""
|
3218 |
-
"
|
3219 |
-
"
|
3220 |
msgstr ""
|
3221 |
|
3222 |
-
#: src/lib/src/Modules/
|
3223 |
-
|
3224 |
-
msgid "
|
3225 |
msgstr ""
|
3226 |
|
3227 |
-
#: src/lib/src/Modules/
|
3228 |
-
msgid "
|
3229 |
msgstr ""
|
3230 |
|
3231 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
3232 |
msgid ""
|
3233 |
-
"
|
3234 |
-
"
|
3235 |
msgstr ""
|
3236 |
|
3237 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
|
|
3238 |
msgid ""
|
3239 |
-
"
|
3240 |
-
"
|
3241 |
msgstr ""
|
3242 |
|
3243 |
-
#: src/lib/src/Modules/
|
3244 |
-
|
|
|
|
|
3245 |
msgstr ""
|
3246 |
|
3247 |
-
#: src/lib/src/Modules/
|
3248 |
-
|
3249 |
-
|
3250 |
msgstr ""
|
3251 |
|
3252 |
-
#: src/lib/src/Modules/
|
3253 |
-
msgid "
|
3254 |
msgstr ""
|
3255 |
|
3256 |
-
#: src/lib/src/Modules/
|
3257 |
-
msgid "
|
3258 |
msgstr ""
|
3259 |
|
3260 |
-
#: src/lib/src/Modules/
|
3261 |
-
|
3262 |
-
"
|
3263 |
-
"sent every second. This is useful in case you get hit by a bot attack. Zero "
|
3264 |
-
"(0) turns this off. Suggested: 10"
|
3265 |
msgstr ""
|
3266 |
|
3267 |
-
#: src/lib/src/Modules/
|
3268 |
-
|
|
|
3269 |
msgstr ""
|
3270 |
|
3271 |
-
#: src/lib/src/Modules/
|
3272 |
-
|
|
|
|
|
3273 |
msgstr ""
|
3274 |
|
3275 |
-
#: src/lib/src/Modules/
|
3276 |
-
msgid "
|
3277 |
msgstr ""
|
3278 |
|
3279 |
-
#: src/lib/src/Modules/
|
3280 |
-
|
|
|
3281 |
msgstr ""
|
3282 |
|
3283 |
-
#: src/lib/src/Modules/
|
3284 |
-
|
|
|
|
|
3285 |
msgstr ""
|
3286 |
|
3287 |
-
#: src/lib/src/Modules/
|
3288 |
-
|
|
|
3289 |
msgstr ""
|
3290 |
|
3291 |
-
#: src/lib/src/Modules/
|
3292 |
-
|
|
|
|
|
3293 |
msgstr ""
|
3294 |
|
3295 |
-
#: src/lib/src/Modules/
|
3296 |
-
|
|
|
3297 |
msgstr ""
|
3298 |
|
3299 |
-
#: src/lib/src/Modules/
|
3300 |
-
msgid "
|
3301 |
msgstr ""
|
3302 |
|
3303 |
-
#: src/lib/src/Modules/
|
3304 |
-
|
3305 |
-
|
3306 |
msgstr ""
|
3307 |
|
3308 |
-
#: src/lib/src/Modules/
|
3309 |
-
msgid "
|
3310 |
msgstr ""
|
3311 |
|
3312 |
-
#: src/lib/src/Modules/
|
3313 |
-
|
|
|
3314 |
msgstr ""
|
3315 |
|
3316 |
-
#: src/lib/src/Modules/
|
3317 |
-
msgid "
|
3318 |
msgstr ""
|
3319 |
|
3320 |
-
#: src/lib/src/Modules/
|
3321 |
-
msgid "
|
3322 |
msgstr ""
|
3323 |
|
3324 |
-
#: src/lib/src/Modules/
|
3325 |
-
msgid "
|
3326 |
msgstr ""
|
3327 |
|
3328 |
-
#: src/lib/src/Modules/
|
3329 |
-
|
|
|
3330 |
msgstr ""
|
3331 |
|
3332 |
-
#: src/lib/src/Modules/
|
3333 |
-
msgid "
|
|
|
3334 |
msgstr ""
|
3335 |
|
3336 |
-
#: src/lib/src/Modules/
|
3337 |
-
|
3338 |
-
#: src/lib/src/Modules/Events/Strings.php:50
|
3339 |
-
#: src/lib/src/Modules/Events/Strings.php:54
|
3340 |
-
#: src/lib/src/Modules/Events/Strings.php:58
|
3341 |
-
#: src/lib/src/Modules/Events/Strings.php:62
|
3342 |
-
#: src/lib/src/Modules/Events/Strings.php:66
|
3343 |
-
msgid "Bot Detection"
|
3344 |
msgstr ""
|
3345 |
|
3346 |
-
#: src/lib/src/Modules/
|
3347 |
-
|
3348 |
-
msgid "Fake Web Crawler"
|
3349 |
msgstr ""
|
3350 |
|
3351 |
-
#: src/lib/src/Modules/
|
3352 |
-
|
3353 |
-
msgid "
|
3354 |
msgstr ""
|
3355 |
|
3356 |
-
#: src/lib/src/Modules/
|
3357 |
-
|
3358 |
-
msgid "Failed Login"
|
3359 |
msgstr ""
|
3360 |
|
3361 |
-
#: src/lib/src/Modules/
|
3362 |
-
msgid "
|
3363 |
msgstr ""
|
3364 |
|
3365 |
-
#: src/lib/src/Modules/
|
3366 |
-
msgid "
|
3367 |
msgstr ""
|
3368 |
|
3369 |
-
#: src/lib/src/Modules/
|
3370 |
-
|
3371 |
-
#: src/lib/src/Modules/Events/Strings.php:78
|
3372 |
-
#: src/lib/src/Modules/Events/Strings.php:82
|
3373 |
-
#: src/lib/src/Modules/Events/Strings.php:86
|
3374 |
-
#: src/lib/src/Modules/Events/Strings.php:90
|
3375 |
-
msgid "Alert Sent"
|
3376 |
msgstr ""
|
3377 |
|
3378 |
-
#: src/lib/src/Modules/
|
3379 |
-
msgid "
|
3380 |
msgstr ""
|
3381 |
|
3382 |
-
#: src/lib/src/Modules/
|
3383 |
-
msgid "
|
3384 |
msgstr ""
|
3385 |
|
3386 |
-
#: src/lib/src/Modules/
|
3387 |
-
|
|
|
3388 |
msgstr ""
|
3389 |
|
3390 |
-
#: src/lib/src/Modules/
|
3391 |
-
|
|
|
3392 |
msgstr ""
|
3393 |
|
3394 |
-
#: src/lib/src/Modules/
|
3395 |
-
|
|
|
3396 |
msgstr ""
|
3397 |
|
3398 |
-
#: src/lib/src/Modules/
|
3399 |
-
msgid "
|
3400 |
msgstr ""
|
3401 |
|
3402 |
-
#: src/lib/src/Modules/
|
3403 |
-
|
3404 |
-
#: src/lib/src/Modules/Events/Strings.php:102
|
3405 |
-
#: src/lib/src/Modules/Events/Strings.php:106
|
3406 |
-
#: src/lib/src/Modules/Events/Strings.php:110
|
3407 |
-
#: src/lib/src/Modules/Events/Strings.php:114
|
3408 |
-
msgid "Scan Completed"
|
3409 |
msgstr ""
|
3410 |
|
3411 |
-
#: src/lib/src/Modules/
|
3412 |
-
#: src/lib/src/Modules/
|
3413 |
-
|
3414 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:128
|
3415 |
-
msgid "Abandoned Plugins"
|
3416 |
msgstr ""
|
3417 |
|
3418 |
-
#: src/lib/src/Modules/
|
3419 |
-
#: src/lib/src/Modules/
|
3420 |
-
|
3421 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:146
|
3422 |
-
msgid "Malware"
|
3423 |
msgstr ""
|
3424 |
|
3425 |
-
#: src/lib/src/Modules/
|
3426 |
-
|
3427 |
-
|
3428 |
-
msgid "WP Core Files"
|
3429 |
msgstr ""
|
3430 |
|
3431 |
-
#: src/lib/src/Modules/
|
3432 |
-
|
3433 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:28
|
3434 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:99
|
3435 |
-
msgid "Vulnerabilities"
|
3436 |
msgstr ""
|
3437 |
|
3438 |
-
#: src/lib/src/Modules/
|
3439 |
-
|
3440 |
-
#: src/lib/src/Modules/Events/Strings.php:126
|
3441 |
-
#: src/lib/src/Modules/Events/Strings.php:130
|
3442 |
-
#: src/lib/src/Modules/Events/Strings.php:134
|
3443 |
-
#: src/lib/src/Modules/Events/Strings.php:138
|
3444 |
-
msgid "Scan Item Discovered"
|
3445 |
msgstr ""
|
3446 |
|
3447 |
-
#: src/lib/src/Modules/
|
3448 |
-
|
3449 |
-
msgid "
|
3450 |
msgstr ""
|
3451 |
|
3452 |
-
#: src/lib/src/Modules/
|
3453 |
-
|
3454 |
-
msgid "Directory Traversal"
|
3455 |
msgstr ""
|
3456 |
|
3457 |
-
#: src/lib/src/Modules/
|
3458 |
-
|
3459 |
-
#: src/lib/src/Modules/Firewall/Strings.php:197 src/processors/firewall.php:433
|
3460 |
-
msgid "WordPress Terms"
|
3461 |
msgstr ""
|
3462 |
|
3463 |
-
#: src/lib/src/Modules/
|
3464 |
-
|
3465 |
-
#: src/lib/src/Modules/Firewall/Strings.php:200 src/processors/firewall.php:436
|
3466 |
-
msgid "Field Truncation"
|
3467 |
msgstr ""
|
3468 |
|
3469 |
-
#: src/lib/src/Modules/
|
3470 |
-
|
3471 |
-
#: src/lib/src/Modules/Firewall/Strings.php:203 src/processors/firewall.php:439
|
3472 |
-
msgid "SQL Queries"
|
3473 |
msgstr ""
|
3474 |
|
3475 |
-
#: src/lib/src/Modules/
|
3476 |
-
|
3477 |
-
msgid "
|
3478 |
msgstr ""
|
3479 |
|
3480 |
-
#: src/lib/src/Modules/
|
3481 |
-
|
3482 |
-
msgid "
|
3483 |
msgstr ""
|
3484 |
|
3485 |
-
#: src/lib/src/Modules/
|
3486 |
-
|
3487 |
-
|
3488 |
-
msgid "PHP Code"
|
3489 |
msgstr ""
|
3490 |
|
3491 |
-
#: src/lib/src/Modules/
|
3492 |
-
|
3493 |
-
msgid "
|
3494 |
msgstr ""
|
3495 |
|
3496 |
-
#: src/lib/src/Modules/
|
3497 |
-
|
|
|
3498 |
msgstr ""
|
3499 |
|
3500 |
-
#: src/lib/src/Modules/
|
3501 |
-
|
|
|
3502 |
msgstr ""
|
3503 |
|
3504 |
-
#: src/lib/src/Modules/
|
3505 |
-
|
|
|
3506 |
msgstr ""
|
3507 |
|
3508 |
-
#: src/lib/src/Modules/
|
3509 |
-
|
|
|
3510 |
msgstr ""
|
3511 |
|
3512 |
-
#: src/lib/src/Modules/
|
3513 |
-
|
|
|
3514 |
msgstr ""
|
3515 |
|
3516 |
-
#: src/lib/src/Modules/
|
3517 |
-
|
|
|
3518 |
msgstr ""
|
3519 |
|
3520 |
-
#: src/lib/src/Modules/
|
3521 |
-
msgid "
|
3522 |
msgstr ""
|
3523 |
|
3524 |
-
#: src/lib/src/Modules/
|
3525 |
-
msgid "
|
3526 |
msgstr ""
|
3527 |
|
3528 |
-
#: src/lib/src/Modules/
|
3529 |
-
msgid "
|
3530 |
msgstr ""
|
3531 |
|
3532 |
-
#: src/lib/src/Modules/
|
3533 |
-
msgid "
|
3534 |
msgstr ""
|
3535 |
|
3536 |
-
#: src/lib/src/Modules/
|
3537 |
-
msgid "
|
3538 |
msgstr ""
|
3539 |
|
3540 |
-
#: src/lib/src/Modules/
|
3541 |
-
|
3542 |
-
#: src/lib/src/Modules/Events/Strings.php:225
|
3543 |
-
msgid "SPAM Blocked"
|
3544 |
msgstr ""
|
3545 |
|
3546 |
-
#: src/lib/src/Modules/
|
3547 |
-
msgid "
|
3548 |
msgstr ""
|
3549 |
|
3550 |
-
#: src/lib/src/Modules/
|
3551 |
-
|
3552 |
-
|
3553 |
-
msgid "Blocked"
|
3554 |
msgstr ""
|
3555 |
|
3556 |
-
#: src/lib/src/Modules/
|
3557 |
-
|
|
|
3558 |
msgstr ""
|
3559 |
|
3560 |
-
#: src/lib/src/Modules/
|
3561 |
-
msgid "
|
3562 |
msgstr ""
|
3563 |
|
3564 |
-
#: src/lib/src/Modules/
|
3565 |
-
msgid "
|
3566 |
msgstr ""
|
3567 |
|
3568 |
-
#: src/lib/src/Modules/
|
3569 |
-
msgid "
|
3570 |
msgstr ""
|
3571 |
|
3572 |
-
#: src/lib/src/Modules/
|
3573 |
-
msgid "
|
3574 |
msgstr ""
|
3575 |
|
3576 |
-
#: src/lib/src/Modules/
|
3577 |
-
msgid "
|
3578 |
msgstr ""
|
3579 |
|
3580 |
-
#: src/lib/src/Modules/
|
3581 |
-
msgid "
|
3582 |
msgstr ""
|
3583 |
|
3584 |
-
#: src/lib/src/Modules/
|
3585 |
-
msgid "
|
3586 |
msgstr ""
|
3587 |
|
3588 |
-
#: src/lib/src/Modules/
|
3589 |
-
|
|
|
3590 |
msgstr ""
|
3591 |
|
3592 |
-
#: src/lib/src/Modules/
|
3593 |
-
msgid "
|
|
|
3594 |
msgstr ""
|
3595 |
|
3596 |
-
#: src/lib/src/Modules/
|
3597 |
-
msgid "
|
3598 |
msgstr ""
|
3599 |
|
3600 |
-
#: src/lib/src/Modules/
|
3601 |
-
msgid "
|
3602 |
msgstr ""
|
3603 |
|
3604 |
-
#: src/lib/src/Modules/
|
3605 |
-
msgid "
|
3606 |
msgstr ""
|
3607 |
|
3608 |
-
#: src/lib/src/Modules/
|
3609 |
-
|
|
|
3610 |
msgstr ""
|
3611 |
|
3612 |
-
#: src/lib/src/Modules/
|
3613 |
-
msgid "
|
3614 |
msgstr ""
|
3615 |
|
3616 |
-
#: src/lib/src/Modules/
|
3617 |
-
msgid "
|
3618 |
msgstr ""
|
3619 |
|
3620 |
-
#: src/lib/src/Modules/
|
3621 |
-
|
|
|
|
|
3622 |
msgstr ""
|
3623 |
|
3624 |
-
#: src/lib/src/Modules/
|
3625 |
-
msgid "
|
3626 |
msgstr ""
|
3627 |
|
3628 |
-
#: src/lib/src/Modules/
|
3629 |
-
msgid "
|
3630 |
msgstr ""
|
3631 |
|
3632 |
-
#: src/lib/src/Modules/
|
3633 |
-
msgid "
|
3634 |
msgstr ""
|
3635 |
|
3636 |
-
#: src/lib/src/Modules/
|
3637 |
-
msgid "
|
3638 |
msgstr ""
|
3639 |
|
3640 |
-
#: src/lib/src/Modules/
|
3641 |
-
msgid "
|
3642 |
msgstr ""
|
3643 |
|
3644 |
-
#: src/lib/src/Modules/
|
3645 |
-
msgid "
|
3646 |
msgstr ""
|
3647 |
|
3648 |
-
#: src/lib/src/Modules/
|
3649 |
-
msgid "
|
3650 |
msgstr ""
|
3651 |
|
3652 |
-
#: src/lib/src/Modules/
|
3653 |
-
msgid "
|
3654 |
msgstr ""
|
3655 |
|
3656 |
-
#: src/lib/src/Modules/
|
3657 |
-
msgid ""
|
3658 |
-
"The Firewall is designed to analyse data sent to your website and block any "
|
3659 |
-
"requests that appear to be malicious."
|
3660 |
msgstr ""
|
3661 |
|
3662 |
-
#: src/lib/src/Modules/
|
3663 |
-
msgid "
|
3664 |
msgstr ""
|
3665 |
|
3666 |
-
#: src/lib/src/Modules/
|
3667 |
-
msgid "
|
3668 |
msgstr ""
|
3669 |
|
3670 |
-
#: src/lib/src/Modules/
|
3671 |
-
msgid "
|
3672 |
msgstr ""
|
3673 |
|
3674 |
-
#: src/lib/src/Modules/
|
3675 |
-
msgid ""
|
3676 |
-
"If you find an incompatibility or something stops working, un-check 1 option "
|
3677 |
-
"at a time until you find the problem or review the Audit Trail."
|
3678 |
msgstr ""
|
3679 |
|
3680 |
-
#: src/lib/src/Modules/
|
3681 |
-
msgid "
|
3682 |
msgstr ""
|
3683 |
|
3684 |
-
#: src/lib/src/Modules/
|
3685 |
-
msgid "
|
3686 |
msgstr ""
|
3687 |
|
3688 |
-
#: src/lib/src/Modules/
|
3689 |
-
msgid ""
|
3690 |
-
"Here you choose how the plugin will respond when it detects malicious data."
|
3691 |
msgstr ""
|
3692 |
|
3693 |
-
#: src/lib/src/Modules/
|
3694 |
-
|
3695 |
-
msgid "Choose the option \"%s\"."
|
3696 |
msgstr ""
|
3697 |
|
3698 |
-
#: src/lib/src/Modules/
|
3699 |
-
msgid "
|
3700 |
msgstr ""
|
3701 |
|
3702 |
-
#: src/lib/src/Modules/
|
3703 |
-
msgid "
|
3704 |
msgstr ""
|
3705 |
|
3706 |
-
#: src/lib/src/Modules/
|
3707 |
-
msgid "
|
3708 |
msgstr ""
|
3709 |
|
3710 |
-
#: src/lib/src/Modules/
|
3711 |
-
msgid ""
|
3712 |
-
"In principle you should not need to whitelist anything or anyone unless you "
|
3713 |
-
"have discovered a collision with another plugin."
|
3714 |
msgstr ""
|
3715 |
|
3716 |
-
#: src/lib/src/Modules/
|
3717 |
-
msgid ""
|
3718 |
-
"Do not whitelist anything unless you are confident in what you are doing."
|
3719 |
msgstr ""
|
3720 |
|
3721 |
-
#: src/lib/src/Modules/
|
3722 |
-
msgid "
|
3723 |
msgstr ""
|
3724 |
|
3725 |
-
#: src/lib/src/Modules/
|
3726 |
-
msgid "
|
3727 |
msgstr ""
|
3728 |
|
3729 |
-
#: src/lib/src/Modules/
|
3730 |
-
msgid "
|
3731 |
msgstr ""
|
3732 |
|
3733 |
-
#: src/lib/src/Modules/
|
3734 |
-
msgid ""
|
3735 |
-
"The firewall tests GET and POST, but with this option checked it will also "
|
3736 |
-
"check COOKIE values."
|
3737 |
msgstr ""
|
3738 |
|
3739 |
-
#: src/lib/src/Modules/
|
3740 |
-
msgid "
|
|
|
|
|
3741 |
msgstr ""
|
3742 |
|
3743 |
-
#: src/lib/src/Modules/
|
3744 |
-
msgid "
|
3745 |
msgstr ""
|
3746 |
|
3747 |
-
#: src/lib/src/Modules/
|
3748 |
-
#, php-format
|
3749 |
msgid ""
|
3750 |
-
"
|
3751 |
-
"
|
3752 |
msgstr ""
|
3753 |
|
3754 |
-
#: src/lib/src/Modules/
|
3755 |
-
msgid "
|
3756 |
msgstr ""
|
3757 |
|
3758 |
-
#: src/lib/src/Modules/
|
3759 |
-
|
3760 |
-
msgid "This will block sql in application parameters (e.g. %s, etc)."
|
3761 |
msgstr ""
|
3762 |
|
3763 |
-
#: src/lib/src/Modules/
|
3764 |
-
|
|
|
3765 |
msgstr ""
|
3766 |
|
3767 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
3768 |
msgid ""
|
3769 |
-
"
|
3770 |
-
"
|
3771 |
msgstr ""
|
3772 |
|
3773 |
-
#: src/lib/src/Modules/
|
3774 |
-
msgid "
|
|
|
3775 |
msgstr ""
|
3776 |
|
3777 |
-
#: src/lib/src/Modules/
|
3778 |
-
msgid "
|
3779 |
msgstr ""
|
3780 |
|
3781 |
-
#: src/lib/src/Modules/
|
3782 |
-
|
3783 |
-
|
|
|
3784 |
msgstr ""
|
3785 |
|
3786 |
-
#: src/lib/src/Modules/
|
3787 |
-
|
|
|
3788 |
msgstr ""
|
3789 |
|
3790 |
-
#: src/lib/src/Modules/
|
3791 |
-
msgid "
|
|
|
|
|
3792 |
msgstr ""
|
3793 |
|
3794 |
-
#: src/lib/src/Modules/
|
3795 |
-
msgid "
|
3796 |
msgstr ""
|
3797 |
|
3798 |
-
#: src/lib/src/Modules/
|
3799 |
-
msgid "
|
|
|
|
|
3800 |
msgstr ""
|
3801 |
|
3802 |
-
#: src/lib/src/Modules/
|
3803 |
-
msgid "
|
3804 |
msgstr ""
|
3805 |
|
3806 |
-
#: src/lib/src/Modules/
|
3807 |
-
msgid "
|
3808 |
msgstr ""
|
3809 |
|
3810 |
-
#: src/lib/src/Modules/
|
3811 |
-
msgid "
|
|
|
|
|
3812 |
msgstr ""
|
3813 |
|
3814 |
-
#: src/lib/src/Modules/
|
3815 |
-
msgid "
|
|
|
|
|
3816 |
msgstr ""
|
3817 |
|
3818 |
-
#: src/lib/src/Modules/
|
3819 |
msgid ""
|
3820 |
-
"
|
3821 |
-
"
|
3822 |
msgstr ""
|
3823 |
|
3824 |
-
#: src/lib/src/Modules/
|
3825 |
-
msgid "
|
|
|
|
|
3826 |
msgstr ""
|
3827 |
|
3828 |
-
#: src/lib/src/Modules/
|
3829 |
-
|
|
|
3830 |
msgstr ""
|
3831 |
|
3832 |
-
#: src/lib/src/Modules/
|
3833 |
-
|
3834 |
-
|
3835 |
-
"submitted to your site."
|
3836 |
msgstr ""
|
3837 |
|
3838 |
-
#: src/lib/src/Modules/
|
3839 |
-
msgid "
|
3840 |
msgstr ""
|
3841 |
|
3842 |
-
#: src/lib/src/Modules/
|
3843 |
-
|
|
|
3844 |
msgstr ""
|
3845 |
|
3846 |
-
#: src/lib/src/Modules/
|
3847 |
-
msgid "
|
3848 |
msgstr ""
|
3849 |
|
3850 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
3851 |
msgid ""
|
3852 |
-
"
|
3853 |
-
"the firewall blocks you"
|
3854 |
msgstr ""
|
3855 |
|
3856 |
-
#: src/lib/src/Modules/
|
3857 |
-
|
|
|
3858 |
msgstr ""
|
3859 |
|
3860 |
-
#: src/lib/src/Modules/
|
3861 |
msgid ""
|
3862 |
-
"
|
3863 |
-
"
|
3864 |
msgstr ""
|
3865 |
|
3866 |
-
#: src/lib/src/Modules/
|
|
|
3867 |
msgid ""
|
3868 |
-
"
|
3869 |
-
"
|
3870 |
msgstr ""
|
3871 |
|
3872 |
-
#: src/lib/src/Modules/
|
3873 |
-
|
|
|
3874 |
msgstr ""
|
3875 |
|
3876 |
-
#: src/lib/src/Modules/
|
3877 |
msgid ""
|
3878 |
-
"
|
|
|
3879 |
msgstr ""
|
3880 |
|
3881 |
-
#: src/lib/src/Modules/
|
3882 |
msgid ""
|
3883 |
-
"
|
3884 |
-
"
|
3885 |
msgstr ""
|
3886 |
|
3887 |
-
#: src/lib/src/Modules/
|
3888 |
-
|
3889 |
-
|
3890 |
-
msgid "Ignore %s"
|
3891 |
msgstr ""
|
3892 |
|
3893 |
-
#: src/lib/src/Modules/
|
3894 |
msgid ""
|
3895 |
-
"
|
3896 |
-
"
|
3897 |
msgstr ""
|
3898 |
|
3899 |
-
#: src/lib/src/Modules/
|
3900 |
-
|
|
|
3901 |
msgstr ""
|
3902 |
|
3903 |
-
#: src/lib/src/Modules/
|
3904 |
-
|
|
|
3905 |
msgstr ""
|
3906 |
|
3907 |
-
#: src/lib/src/Modules/
|
3908 |
-
|
|
|
3909 |
msgstr ""
|
3910 |
|
3911 |
-
#: src/lib/src/Modules/
|
3912 |
#, php-format
|
3913 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
3914 |
msgstr ""
|
3915 |
|
3916 |
-
#: src/lib/src/Modules/
|
3917 |
-
|
|
|
3918 |
msgstr ""
|
3919 |
|
3920 |
-
#: src/lib/src/Modules/
|
3921 |
-
|
3922 |
-
#: src/lib/src/Modules/Firewall/Strings.php:200
|
3923 |
-
#: src/lib/src/Modules/Firewall/Strings.php:203
|
3924 |
-
#: src/lib/src/Modules/Firewall/Strings.php:206
|
3925 |
-
#: src/lib/src/Modules/Firewall/Strings.php:209
|
3926 |
-
#: src/lib/src/Modules/Firewall/Strings.php:212
|
3927 |
-
#: src/lib/src/Modules/Firewall/Strings.php:215 src/processors/firewall.php:203
|
3928 |
-
#, php-format
|
3929 |
-
msgid "Firewall Trigger: %s."
|
3930 |
msgstr ""
|
3931 |
|
3932 |
-
#: src/lib/src/Modules/
|
|
|
3933 |
#, php-format
|
3934 |
-
msgid "
|
3935 |
msgstr ""
|
3936 |
|
3937 |
-
#: src/lib/src/Modules/
|
|
|
3938 |
#, php-format
|
3939 |
-
msgid "
|
3940 |
msgstr ""
|
3941 |
|
3942 |
-
#: src/lib/src/Modules/
|
3943 |
-
msgid "
|
3944 |
msgstr ""
|
3945 |
|
3946 |
-
#: src/lib/src/Modules/
|
3947 |
-
|
3948 |
-
|
3949 |
msgstr ""
|
3950 |
|
3951 |
-
#: src/lib/src/Modules/
|
3952 |
-
msgid "
|
3953 |
msgstr ""
|
3954 |
|
3955 |
-
#: src/lib/src/Modules/
|
3956 |
-
msgid "
|
3957 |
msgstr ""
|
3958 |
|
3959 |
-
#: src/lib/src/Modules/
|
3960 |
-
msgid "
|
3961 |
msgstr ""
|
3962 |
|
3963 |
-
#: src/lib/src/Modules/
|
3964 |
-
msgid "
|
3965 |
msgstr ""
|
3966 |
|
3967 |
-
#: src/lib/src/Modules/
|
3968 |
-
|
3969 |
-
#: src/lib/src/Tables/Build/Traffic.php:118
|
3970 |
-
#: src/lib/src/Tables/Build/Traffic.php:127
|
3971 |
-
msgid "Unknown"
|
3972 |
msgstr ""
|
3973 |
|
3974 |
-
#: src/lib/src/Modules/
|
3975 |
-
|
3976 |
-
msgid "Firewall Block Response: %s."
|
3977 |
msgstr ""
|
3978 |
|
3979 |
-
#: src/lib/src/Modules/
|
3980 |
-
msgid "
|
3981 |
msgstr ""
|
3982 |
|
3983 |
-
#: src/lib/src/Modules/
|
3984 |
-
msgid "
|
3985 |
msgstr ""
|
3986 |
|
3987 |
-
#: src/lib/src/Modules/
|
3988 |
-
msgid "
|
3989 |
msgstr ""
|
3990 |
|
3991 |
-
#: src/lib/src/Modules/
|
3992 |
-
msgid "
|
3993 |
msgstr ""
|
3994 |
|
3995 |
-
#: src/lib/src/Modules/
|
3996 |
-
msgid "
|
3997 |
msgstr ""
|
3998 |
|
3999 |
-
#: src/lib/src/Modules/
|
4000 |
-
|
|
|
4001 |
msgstr ""
|
4002 |
|
4003 |
-
#: src/lib/src/Modules/
|
4004 |
-
msgid "
|
4005 |
msgstr ""
|
4006 |
|
4007 |
-
#: src/lib/src/Modules/
|
4008 |
-
|
|
|
4009 |
msgstr ""
|
4010 |
|
4011 |
-
#: src/lib/src/Modules/
|
4012 |
-
msgid "
|
4013 |
msgstr ""
|
4014 |
|
4015 |
-
#: src/lib/src/Modules/
|
4016 |
-
|
4017 |
-
msgid "%s of %s scans remaining."
|
4018 |
msgstr ""
|
4019 |
|
4020 |
-
#: src/lib/src/Modules/
|
4021 |
-
msgid "
|
4022 |
msgstr ""
|
4023 |
|
4024 |
-
#: src/lib/src/Modules/
|
4025 |
-
msgid "
|
4026 |
msgstr ""
|
4027 |
|
4028 |
-
#: src/lib/src/Modules/
|
4029 |
-
|
4030 |
-
msgid "Scans completed."
|
4031 |
msgstr ""
|
4032 |
|
4033 |
-
#: src/lib/src/Modules/
|
4034 |
-
|
4035 |
-
#: src/lib/src/Modules/License/AjaxHandler.php:88
|
4036 |
-
msgid "Reloading page"
|
4037 |
msgstr ""
|
4038 |
|
4039 |
-
#: src/lib/src/Modules/
|
4040 |
-
|
|
|
|
|
4041 |
msgstr ""
|
4042 |
|
4043 |
-
#: src/lib/src/Modules/
|
4044 |
-
msgid "
|
4045 |
msgstr ""
|
4046 |
|
4047 |
-
#: src/lib/src/Modules/
|
4048 |
-
msgid "
|
4049 |
msgstr ""
|
4050 |
|
4051 |
-
#: src/lib/src/Modules/
|
4052 |
-
|
4053 |
-
msgid "%s scan alert sent."
|
4054 |
msgstr ""
|
4055 |
|
4056 |
-
#: src/lib/src/Modules/
|
4057 |
-
|
4058 |
-
msgid "Alert sent to %s via %s."
|
4059 |
msgstr ""
|
4060 |
|
4061 |
-
#: src/lib/src/Modules/
|
4062 |
-
|
4063 |
-
msgid "%s scan completed and items were discovered."
|
4064 |
msgstr ""
|
4065 |
|
4066 |
-
#: src/lib/src/Modules/
|
4067 |
-
msgid ""
|
4068 |
-
"These items wont display in results if you've previously marked them as "
|
4069 |
-
"ignored."
|
4070 |
msgstr ""
|
4071 |
|
4072 |
-
#: src/lib/src/Modules/
|
4073 |
-
|
4074 |
-
msgid "%s scan repaired a item found in the scan."
|
4075 |
msgstr ""
|
4076 |
|
4077 |
-
#: src/lib/src/Modules/
|
4078 |
-
|
4079 |
-
msgid "Item repaired: \"%s\""
|
4080 |
msgstr ""
|
4081 |
|
4082 |
-
#: src/lib/src/Modules/
|
4083 |
-
|
4084 |
-
msgid "
|
4085 |
msgstr ""
|
4086 |
|
4087 |
-
#: src/lib/src/Modules/
|
4088 |
-
|
4089 |
-
msgid "Failed repair item: \"%s\""
|
4090 |
msgstr ""
|
4091 |
|
4092 |
-
#: src/lib/src/Modules/
|
4093 |
-
|
4094 |
-
#: src/processors/hack_protect.php:126
|
4095 |
-
msgid "Scan Options"
|
4096 |
msgstr ""
|
4097 |
|
4098 |
-
#: src/lib/src/Modules/
|
4099 |
-
msgid "
|
4100 |
msgstr ""
|
4101 |
|
4102 |
-
#: src/lib/src/Modules/
|
4103 |
-
msgid "
|
4104 |
msgstr ""
|
4105 |
|
4106 |
-
#: src/lib/src/Modules/
|
4107 |
-
msgid "
|
4108 |
msgstr ""
|
4109 |
|
4110 |
-
#: src/lib/src/Modules/
|
4111 |
-
msgid "
|
4112 |
msgstr ""
|
4113 |
|
4114 |
-
#: src/lib/src/Modules/
|
4115 |
-
msgid "
|
4116 |
msgstr ""
|
4117 |
|
4118 |
-
#: src/lib/src/Modules/
|
4119 |
-
msgid ""
|
4120 |
-
"Hack Guard is a set of tools to warn you and protect you against hacks on "
|
4121 |
-
"your site."
|
4122 |
msgstr ""
|
4123 |
|
4124 |
-
#: src/lib/src/Modules/
|
4125 |
-
|
4126 |
-
#: src/lib/src/Modules/HackGuard/Strings.php:214
|
4127 |
-
msgid "Vulnerabilities Scanner"
|
4128 |
msgstr ""
|
4129 |
|
4130 |
-
#: src/lib/src/Modules/
|
4131 |
-
msgid ""
|
4132 |
-
|
4133 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
4134 |
msgstr ""
|
4135 |
|
4136 |
-
#: src/lib/src/Modules/
|
|
|
4137 |
msgid ""
|
4138 |
-
"
|
4139 |
-
"
|
4140 |
msgstr ""
|
4141 |
|
4142 |
-
#: src/lib/src/Modules/
|
4143 |
-
|
|
|
|
|
4144 |
msgstr ""
|
4145 |
|
4146 |
-
#: src/lib/src/Modules/
|
4147 |
-
|
|
|
4148 |
msgstr ""
|
4149 |
|
4150 |
-
#: src/lib/src/Modules/
|
4151 |
-
|
4152 |
-
|
4153 |
-
|
|
|
4154 |
msgstr ""
|
4155 |
|
4156 |
-
#: src/lib/src/Modules/
|
4157 |
-
|
4158 |
-
msgid "Unrecognised Files Scanner"
|
4159 |
msgstr ""
|
4160 |
|
4161 |
-
#: src/lib/src/Modules/
|
4162 |
-
msgid "
|
4163 |
msgstr ""
|
4164 |
|
4165 |
-
#: src/lib/src/Modules/
|
4166 |
-
|
4167 |
-
msgid "Enable The Abandoned Plugin Scanner"
|
4168 |
msgstr ""
|
4169 |
|
4170 |
-
#: src/lib/src/Modules/
|
4171 |
msgid ""
|
4172 |
-
"
|
4173 |
-
"
|
4174 |
msgstr ""
|
4175 |
|
4176 |
-
#: src/lib/src/Modules/
|
4177 |
-
msgid "
|
4178 |
msgstr ""
|
4179 |
|
4180 |
-
#: src/lib/src/Modules/
|
4181 |
-
|
|
|
4182 |
msgstr ""
|
4183 |
|
4184 |
-
#: src/lib/src/Modules/
|
4185 |
-
msgid "
|
4186 |
msgstr ""
|
4187 |
|
4188 |
-
#: src/lib/src/Modules/
|
4189 |
-
msgid "
|
|
|
|
|
4190 |
msgstr ""
|
4191 |
|
4192 |
-
#: src/lib/src/Modules/
|
4193 |
-
msgid "
|
4194 |
msgstr ""
|
4195 |
|
4196 |
-
#: src/lib/src/Modules/
|
4197 |
-
msgid "
|
4198 |
msgstr ""
|
4199 |
|
4200 |
-
#: src/lib/src/Modules/
|
4201 |
-
msgid "
|
4202 |
msgstr ""
|
4203 |
|
4204 |
-
#: src/lib/src/Modules/
|
4205 |
-
|
4206 |
-
msgid "Integrity Checks"
|
4207 |
msgstr ""
|
4208 |
|
4209 |
-
#: src/lib/src/Modules/
|
4210 |
-
msgid "
|
4211 |
msgstr ""
|
4212 |
|
4213 |
-
#: src/lib/src/Modules/
|
4214 |
-
msgid "
|
4215 |
msgstr ""
|
4216 |
|
4217 |
-
#: src/lib/src/Modules/
|
4218 |
-
msgid "
|
|
|
|
|
4219 |
msgstr ""
|
4220 |
|
4221 |
-
#: src/lib/src/Modules/
|
4222 |
-
msgid "
|
4223 |
msgstr ""
|
4224 |
|
4225 |
-
#: src/lib/src/Modules/
|
4226 |
-
|
|
|
|
|
4227 |
msgstr ""
|
4228 |
|
4229 |
-
#: src/lib/src/Modules/
|
4230 |
-
|
|
|
|
|
4231 |
msgstr ""
|
4232 |
|
4233 |
-
#: src/lib/src/Modules/
|
4234 |
-
|
|
|
4235 |
msgstr ""
|
4236 |
|
4237 |
-
#: src/lib/src/Modules/
|
4238 |
-
|
|
|
4239 |
msgstr ""
|
4240 |
|
4241 |
-
#: src/lib/src/Modules/
|
4242 |
-
msgid ""
|
4243 |
-
"How long the automated scans should wait before repeating a notification "
|
4244 |
-
"about an item."
|
4245 |
msgstr ""
|
4246 |
|
4247 |
-
#: src/lib/src/Modules/
|
4248 |
-
msgid "
|
|
|
|
|
4249 |
msgstr ""
|
4250 |
|
4251 |
-
#: src/lib/src/Modules/
|
4252 |
-
msgid "
|
|
|
|
|
4253 |
msgstr ""
|
4254 |
|
4255 |
-
#: src/lib/src/Modules/
|
4256 |
-
msgid "
|
4257 |
msgstr ""
|
4258 |
|
4259 |
-
#: src/lib/src/Modules/
|
4260 |
-
msgid "
|
4261 |
msgstr ""
|
4262 |
|
4263 |
-
#: src/lib/src/Modules/
|
4264 |
msgid ""
|
4265 |
-
"
|
4266 |
-
"
|
4267 |
msgstr ""
|
4268 |
|
4269 |
-
#: src/lib/src/Modules/
|
4270 |
#, php-format
|
4271 |
-
msgid "
|
|
|
|
|
4272 |
msgstr ""
|
4273 |
|
4274 |
-
#: src/lib/src/Modules/
|
4275 |
-
msgid "
|
|
|
|
|
4276 |
msgstr ""
|
4277 |
|
4278 |
-
#: src/lib/src/Modules/
|
4279 |
-
msgid ""
|
4280 |
-
"Runs a scan of all your plugins against a database of known WordPress plugin "
|
4281 |
-
"vulnerabilities."
|
4282 |
msgstr ""
|
4283 |
|
4284 |
-
#: src/lib/src/Modules/
|
4285 |
-
msgid "
|
4286 |
msgstr ""
|
4287 |
|
4288 |
-
#: src/lib/src/Modules/
|
4289 |
-
msgid "
|
4290 |
msgstr ""
|
4291 |
|
4292 |
-
#: src/lib/src/Modules/
|
4293 |
msgid ""
|
4294 |
-
"
|
4295 |
-
"
|
4296 |
msgstr ""
|
4297 |
|
4298 |
-
#: src/lib/src/Modules/
|
4299 |
-
msgid "
|
4300 |
msgstr ""
|
4301 |
|
4302 |
-
#: src/lib/src/Modules/
|
4303 |
-
msgid ""
|
4304 |
-
"When an update becomes available, automatically apply updates to items with "
|
4305 |
-
"known vulnerabilities."
|
4306 |
msgstr ""
|
4307 |
|
4308 |
-
#: src/lib/src/Modules/
|
4309 |
-
|
4310 |
-
msgid "Highlight Plugins"
|
4311 |
msgstr ""
|
4312 |
|
4313 |
-
#: src/lib/src/Modules/
|
4314 |
-
msgid "
|
|
|
4315 |
msgstr ""
|
4316 |
|
4317 |
-
#: src/lib/src/Modules/
|
4318 |
-
msgid "
|
4319 |
msgstr ""
|
4320 |
|
4321 |
-
#: src/lib/src/Modules/
|
4322 |
-
msgid "WP
|
4323 |
msgstr ""
|
4324 |
|
4325 |
-
#: src/lib/src/Modules/
|
4326 |
-
msgid "
|
4327 |
msgstr ""
|
4328 |
|
4329 |
-
#: src/lib/src/Modules/
|
4330 |
msgid ""
|
4331 |
-
"
|
4332 |
-
"WordPress
|
4333 |
msgstr ""
|
4334 |
|
4335 |
-
#: src/lib/src/Modules/
|
4336 |
-
msgid "
|
4337 |
msgstr ""
|
4338 |
|
4339 |
-
#: src/lib/src/Modules/
|
4340 |
-
msgid "
|
4341 |
msgstr ""
|
4342 |
|
4343 |
-
#: src/lib/src/Modules/
|
4344 |
-
msgid "Automatically
|
4345 |
msgstr ""
|
4346 |
|
4347 |
-
#: src/lib/src/Modules/
|
4348 |
-
msgid ""
|
4349 |
-
"Attempts to automatically repair WordPress Core files with the official "
|
4350 |
-
"WordPress file data, for files that have been altered or are missing."
|
4351 |
msgstr ""
|
4352 |
|
4353 |
-
#: src/lib/src/Modules/
|
4354 |
-
msgid "
|
4355 |
msgstr ""
|
4356 |
|
4357 |
-
#: src/lib/src/Modules/
|
4358 |
-
msgid ""
|
4359 |
-
"Scans for, and automatically deletes, any files in your core WordPress "
|
4360 |
-
"folders that are not part of your WordPress installation."
|
4361 |
msgstr ""
|
4362 |
|
4363 |
-
#: src/lib/src/Modules/
|
4364 |
-
msgid "
|
4365 |
msgstr ""
|
4366 |
|
4367 |
-
#: src/lib/src/Modules/
|
4368 |
-
|
|
|
4369 |
msgstr ""
|
4370 |
|
4371 |
-
#: src/lib/src/Modules/
|
4372 |
msgid ""
|
4373 |
-
"
|
|
|
|
|
|
|
|
|
4374 |
msgstr ""
|
4375 |
|
4376 |
-
#: src/lib/src/Modules/
|
4377 |
msgid ""
|
4378 |
-
"
|
4379 |
-
"
|
4380 |
msgstr ""
|
4381 |
|
4382 |
-
#: src/lib/src/Modules/
|
4383 |
-
msgid "
|
4384 |
msgstr ""
|
4385 |
|
4386 |
-
#: src/lib/src/Modules/
|
4387 |
-
|
|
|
4388 |
msgstr ""
|
4389 |
|
4390 |
-
#: src/lib/src/Modules/
|
4391 |
-
msgid "
|
4392 |
msgstr ""
|
4393 |
|
4394 |
-
#: src/lib/src/Modules/
|
4395 |
-
msgid "
|
4396 |
msgstr ""
|
4397 |
|
4398 |
-
#: src/lib/src/Modules/
|
4399 |
-
msgid "
|
4400 |
msgstr ""
|
4401 |
|
4402 |
-
#: src/lib/src/Modules/
|
4403 |
-
msgid "
|
4404 |
msgstr ""
|
4405 |
|
4406 |
-
#: src/lib/src/Modules/
|
4407 |
-
msgid "
|
4408 |
msgstr ""
|
4409 |
|
4410 |
-
#: src/lib/src/Modules/
|
4411 |
-
msgid "
|
4412 |
msgstr ""
|
4413 |
|
4414 |
-
#: src/lib/src/Modules/
|
4415 |
-
msgid "
|
4416 |
msgstr ""
|
4417 |
|
4418 |
-
#: src/lib/src/Modules/
|
4419 |
-
msgid ""
|
4420 |
-
"Detects changes made to critical user account information that were made "
|
4421 |
-
"directly on the database and outside of the WordPress system."
|
4422 |
msgstr ""
|
4423 |
|
4424 |
-
#: src/lib/src/Modules/
|
4425 |
-
msgid "
|
4426 |
msgstr ""
|
4427 |
|
4428 |
-
#: src/lib/src/Modules/
|
4429 |
-
msgid ""
|
4430 |
-
"Enabling this option for every page low may slow down your site with large "
|
4431 |
-
"numbers of users."
|
4432 |
msgstr ""
|
4433 |
|
4434 |
-
#: src/lib/src/Modules/
|
4435 |
-
msgid ""
|
4436 |
-
"This option may cause critical problem with 3rd party plugins that manage "
|
4437 |
-
"user accounts."
|
4438 |
msgstr ""
|
4439 |
|
4440 |
-
#: src/lib/src/Modules/
|
4441 |
-
|
4442 |
-
#: src/lib/src/Modules/Headers/Strings.php:99
|
4443 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:180
|
4444 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:198
|
4445 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:204
|
4446 |
-
#, php-format
|
4447 |
-
msgid "Enable %s"
|
4448 |
msgstr ""
|
4449 |
|
4450 |
-
#: src/lib/src/Modules/
|
4451 |
-
msgid "
|
4452 |
msgstr ""
|
4453 |
|
4454 |
-
#: src/lib/src/Modules/
|
4455 |
-
msgid "
|
4456 |
msgstr ""
|
4457 |
|
4458 |
-
#: src/lib/src/Modules/
|
4459 |
-
msgid ""
|
4460 |
-
"When enabled the Guard will automatically scan for changes to your Plugin "
|
4461 |
-
"and Theme files."
|
4462 |
msgstr ""
|
4463 |
|
4464 |
-
#: src/lib/src/Modules/
|
4465 |
-
msgid "
|
4466 |
msgstr ""
|
4467 |
|
4468 |
-
#: src/lib/src/Modules/
|
4469 |
-
msgid "
|
4470 |
msgstr ""
|
4471 |
|
4472 |
-
#: src/lib/src/Modules/
|
4473 |
-
msgid ""
|
4474 |
-
"The Guard normally scans only the top level of a folder. Increasing depth "
|
4475 |
-
"will increase scan times."
|
4476 |
msgstr ""
|
4477 |
|
4478 |
-
#: src/lib/src/Modules/
|
4479 |
-
|
4480 |
-
msgid ""
|
4481 |
-
"Setting it to %s will remove this limit and all sub-folders will be scanned "
|
4482 |
-
"- not recommended"
|
4483 |
msgstr ""
|
4484 |
|
4485 |
-
#: src/lib/src/Modules/
|
4486 |
-
msgid "
|
4487 |
msgstr ""
|
4488 |
|
4489 |
-
#: src/lib/src/Modules/
|
4490 |
-
msgid "
|
|
|
4491 |
msgstr ""
|
4492 |
|
4493 |
-
#: src/lib/src/Modules/
|
4494 |
-
msgid "
|
4495 |
msgstr ""
|
4496 |
|
4497 |
-
#: src/lib/src/Modules/
|
4498 |
-
msgid "
|
4499 |
msgstr ""
|
4500 |
|
4501 |
-
#: src/lib/src/Modules/
|
4502 |
-
msgid "
|
4503 |
msgstr ""
|
4504 |
|
4505 |
-
#: src/lib/src/Modules/
|
4506 |
-
msgid "
|
4507 |
msgstr ""
|
4508 |
|
4509 |
-
#: src/lib/src/Modules/
|
4510 |
-
msgid "
|
4511 |
msgstr ""
|
4512 |
|
4513 |
-
#: src/lib/src/Modules/
|
4514 |
-
msgid ""
|
4515 |
-
"Show links to re-install plugins and offer re-install when activating "
|
4516 |
-
"plugins."
|
4517 |
msgstr ""
|
4518 |
|
4519 |
-
#: src/lib/src/Modules/
|
4520 |
-
msgid "
|
4521 |
msgstr ""
|
4522 |
|
4523 |
-
#: src/lib/src/Modules/
|
4524 |
-
msgid "
|
4525 |
msgstr ""
|
4526 |
|
4527 |
-
#: src/lib/src/Modules/
|
4528 |
-
msgid "
|
4529 |
msgstr ""
|
4530 |
|
4531 |
-
#: src/lib/src/Modules/
|
4532 |
-
msgid "
|
4533 |
msgstr ""
|
4534 |
|
4535 |
-
#: src/lib/src/Modules/
|
4536 |
-
msgid "
|
4537 |
msgstr ""
|
4538 |
|
4539 |
-
#: src/lib/src/Modules/
|
4540 |
-
msgid "
|
4541 |
msgstr ""
|
4542 |
|
4543 |
-
#: src/lib/src/Modules/
|
4544 |
-
msgid ""
|
4545 |
-
"Automatically run scanner to detect files infected with malware signatures."
|
4546 |
msgstr ""
|
4547 |
|
4548 |
-
#: src/lib/src/Modules/
|
4549 |
-
msgid "
|
4550 |
msgstr ""
|
4551 |
|
4552 |
-
#: src/lib/src/Modules/
|
4553 |
-
msgid "
|
4554 |
msgstr ""
|
4555 |
|
4556 |
-
#: src/lib/src/Modules/
|
4557 |
-
msgid "
|
4558 |
msgstr ""
|
4559 |
|
4560 |
-
#: src/lib/src/Modules/
|
4561 |
-
msgid "
|
4562 |
msgstr ""
|
4563 |
|
4564 |
-
#: src/lib/src/Modules/
|
4565 |
-
msgid "
|
4566 |
msgstr ""
|
4567 |
|
4568 |
-
#: src/lib/src/Modules/
|
4569 |
-
msgid "
|
4570 |
msgstr ""
|
4571 |
|
4572 |
-
#: src/lib/src/Modules/
|
4573 |
-
|
|
|
4574 |
msgstr ""
|
4575 |
|
4576 |
-
#: src/lib/src/Modules/
|
4577 |
-
msgid ""
|
4578 |
-
"Also deletes suspected files if they weren't originally distributed with the "
|
4579 |
-
"plugin."
|
4580 |
msgstr ""
|
4581 |
|
4582 |
-
#: src/lib/src/Modules/
|
4583 |
-
msgid "
|
4584 |
msgstr ""
|
4585 |
|
4586 |
-
#: src/lib/src/Modules/
|
4587 |
-
msgid "
|
|
|
|
|
4588 |
msgstr ""
|
4589 |
|
4590 |
-
#: src/lib/src/Modules/
|
|
|
|
|
4591 |
msgid ""
|
4592 |
-
"
|
4593 |
-
"
|
4594 |
msgstr ""
|
4595 |
|
4596 |
-
#: src/lib/src/Modules/
|
|
|
4597 |
msgid ""
|
4598 |
-
"
|
4599 |
-
"in scan results, but it's actually clean."
|
4600 |
msgstr ""
|
4601 |
|
4602 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
4603 |
msgid ""
|
4604 |
-
"
|
4605 |
-
"
|
4606 |
msgstr ""
|
4607 |
|
4608 |
-
#: src/lib/src/Modules/
|
4609 |
msgid ""
|
4610 |
-
"
|
4611 |
-
"
|
4612 |
msgstr ""
|
4613 |
|
4614 |
-
#: src/lib/src/Modules/
|
4615 |
-
msgid "
|
4616 |
msgstr ""
|
4617 |
|
4618 |
-
#: src/lib/src/Modules/
|
4619 |
-
msgid ""
|
4620 |
-
|
4621 |
-
|
|
|
|
|
4622 |
msgstr ""
|
4623 |
|
4624 |
-
#: src/lib/src/Modules/
|
4625 |
-
msgid ""
|
4626 |
-
"The higher the confidence threshold you select, the more likely that 'false "
|
4627 |
-
"positives' will appears in your scan results."
|
4628 |
msgstr ""
|
4629 |
|
4630 |
-
#: src/lib/src/Modules/
|
4631 |
-
msgid ""
|
4632 |
-
"Disabling network intelligence turns off 'false positive confidence' levels."
|
4633 |
msgstr ""
|
4634 |
|
4635 |
-
#: src/lib/src/Modules/
|
4636 |
-
msgid ""
|
4637 |
-
"You will no longer benefit from the intelligence gathered from the entire "
|
4638 |
-
"network."
|
4639 |
msgstr ""
|
4640 |
|
4641 |
-
#: src/lib/src/Modules/
|
4642 |
-
msgid "
|
4643 |
msgstr ""
|
4644 |
|
4645 |
-
#: src/lib/src/Modules/
|
4646 |
-
|
4647 |
-
|
4648 |
-
#: src/processors/hackprotect_scan_wcf.php:112
|
4649 |
-
#: src/processors/hackprotect_scan_wpv.php:201
|
4650 |
-
#: src/processors/loginprotect_intent.php:285
|
4651 |
-
msgid "More Info"
|
4652 |
msgstr ""
|
4653 |
|
4654 |
-
#: src/lib/src/Modules/
|
4655 |
-
|
4656 |
-
"
|
4657 |
-
"network becomes."
|
4658 |
msgstr ""
|
4659 |
|
4660 |
-
#: src/lib/src/Modules/
|
4661 |
-
|
|
|
4662 |
msgstr ""
|
4663 |
|
4664 |
-
#: src/lib/src/Modules/
|
4665 |
-
|
|
|
|
|
|
|
|
|
4666 |
msgstr ""
|
4667 |
|
4668 |
-
#: src/lib/src/Modules/
|
4669 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4670 |
msgstr ""
|
4671 |
|
4672 |
-
#: src/lib/src/Modules/
|
4673 |
-
msgid ""
|
4674 |
-
"This could break your site if code removal leaves remaining code in an "
|
4675 |
-
"inconsistent state."
|
4676 |
msgstr ""
|
4677 |
|
4678 |
-
#: src/lib/src/Modules/
|
4679 |
-
msgid ""
|
4680 |
-
"Only applies to files that don't fall under the other categories for "
|
4681 |
-
"automatic repair."
|
4682 |
msgstr ""
|
4683 |
|
4684 |
-
#: src/lib/src/Modules/
|
4685 |
-
msgid "
|
4686 |
msgstr ""
|
4687 |
|
4688 |
-
#: src/lib/src/Modules/
|
4689 |
-
msgid "
|
4690 |
msgstr ""
|
4691 |
|
4692 |
-
#: src/lib/src/Modules/
|
4693 |
-
msgid "
|
4694 |
msgstr ""
|
4695 |
|
4696 |
-
#: src/lib/src/Modules/
|
4697 |
-
|
4698 |
msgid ""
|
4699 |
-
"
|
4700 |
-
"headers."
|
4701 |
msgstr ""
|
4702 |
|
4703 |
-
#: src/lib/src/Modules/
|
4704 |
-
|
4705 |
-
|
4706 |
-
msgid ""
|
4707 |
-
"Enabling these features are advised, but you must test them on your site "
|
4708 |
-
"thoroughly."
|
4709 |
msgstr ""
|
4710 |
|
4711 |
-
#: src/lib/src/Modules/
|
4712 |
-
|
|
|
4713 |
msgstr ""
|
4714 |
|
4715 |
-
#: src/lib/src/Modules/
|
4716 |
-
msgid "
|
4717 |
msgstr ""
|
4718 |
|
4719 |
-
#: src/lib/src/Modules/
|
4720 |
-
|
4721 |
-
#: src/lib/src/Modules/Headers/Strings.php:99
|
4722 |
-
msgid "Content Security Policy"
|
4723 |
msgstr ""
|
4724 |
|
4725 |
-
#: src/lib/src/Modules/
|
4726 |
-
msgid ""
|
4727 |
-
"Restrict the sources and types of content that may be loaded and processed "
|
4728 |
-
"by visitor browsers."
|
4729 |
msgstr ""
|
4730 |
|
4731 |
-
#: src/lib/src/Modules/
|
4732 |
-
msgid "
|
4733 |
msgstr ""
|
4734 |
|
4735 |
-
#: src/lib/src/Modules/
|
4736 |
-
msgid "
|
|
|
|
|
4737 |
msgstr ""
|
4738 |
|
4739 |
-
#: src/lib/src/Modules/
|
4740 |
msgid ""
|
4741 |
-
"
|
4742 |
-
"iFrame."
|
4743 |
msgstr ""
|
4744 |
|
4745 |
-
#: src/lib/src/Modules/
|
4746 |
-
msgid "
|
|
|
|
|
4747 |
msgstr ""
|
4748 |
|
4749 |
-
#: src/lib/src/Modules/
|
4750 |
-
msgid "
|
4751 |
msgstr ""
|
4752 |
|
4753 |
-
#: src/lib/src/Modules/
|
4754 |
-
msgid "
|
4755 |
msgstr ""
|
4756 |
|
4757 |
-
#: src/lib/src/Modules/
|
4758 |
-
msgid ""
|
4759 |
-
"The Referrer Policy Header allows you to control when and what referral "
|
4760 |
-
"information a browser may pass along with links clicked on your site."
|
4761 |
msgstr ""
|
4762 |
|
4763 |
-
#: src/lib/src/Modules/
|
4764 |
-
msgid "
|
4765 |
msgstr ""
|
4766 |
|
4767 |
-
#: src/lib/src/Modules/
|
4768 |
-
|
|
|
|
|
|
|
4769 |
msgstr ""
|
4770 |
|
4771 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
4772 |
msgid ""
|
4773 |
-
"
|
4774 |
-
"
|
4775 |
msgstr ""
|
4776 |
|
4777 |
-
#: src/lib/src/Modules/
|
4778 |
-
msgid "
|
4779 |
msgstr ""
|
4780 |
|
4781 |
-
#: src/lib/src/Modules/
|
4782 |
-
|
|
|
|
|
4783 |
msgstr ""
|
4784 |
|
4785 |
-
#: src/lib/src/Modules/
|
4786 |
-
msgid "
|
4787 |
msgstr ""
|
4788 |
|
4789 |
-
#: src/lib/src/Modules/
|
4790 |
-
msgid ""
|
4791 |
-
"Allows for permission and restriction of all resources loaded on your site."
|
4792 |
msgstr ""
|
4793 |
|
4794 |
-
#: src/lib/src/Modules/
|
4795 |
-
msgid "
|
4796 |
msgstr ""
|
4797 |
|
4798 |
-
#: src/lib/src/Modules/
|
4799 |
-
msgid "
|
|
|
|
|
4800 |
msgstr ""
|
4801 |
|
4802 |
-
#: src/lib/src/Modules/
|
4803 |
-
msgid "
|
4804 |
msgstr ""
|
4805 |
|
4806 |
-
#: src/lib/src/Modules/
|
4807 |
msgid ""
|
4808 |
-
"
|
4809 |
-
"
|
4810 |
msgstr ""
|
4811 |
|
4812 |
-
#: src/lib/src/Modules/
|
4813 |
-
|
|
|
4814 |
msgstr ""
|
4815 |
|
4816 |
-
#: src/lib/src/Modules/
|
4817 |
-
msgid "
|
4818 |
msgstr ""
|
4819 |
|
4820 |
-
#: src/lib/src/Modules/
|
4821 |
-
|
4822 |
-
"
|
4823 |
msgstr ""
|
4824 |
|
4825 |
-
#: src/lib/src/Modules/
|
4826 |
-
msgid "
|
4827 |
msgstr ""
|
4828 |
|
4829 |
-
#: src/lib/src/Modules/
|
4830 |
-
msgid "
|
4831 |
msgstr ""
|
4832 |
|
4833 |
-
#: src/lib/src/Modules/
|
4834 |
-
msgid ""
|
4835 |
-
"Allows use of embedded data directives, most commonly used for images and "
|
4836 |
-
"fonts."
|
4837 |
msgstr ""
|
4838 |
|
4839 |
-
#: src/lib/src/Modules/
|
4840 |
-
msgid "
|
4841 |
msgstr ""
|
4842 |
|
4843 |
-
#: src/lib/src/Modules/
|
4844 |
-
msgid "
|
4845 |
msgstr ""
|
4846 |
|
4847 |
-
#: src/lib/src/Modules/
|
4848 |
-
msgid "
|
4849 |
msgstr ""
|
4850 |
|
4851 |
-
#: src/lib/src/Modules/
|
4852 |
-
msgid "
|
4853 |
msgstr ""
|
4854 |
|
4855 |
-
#: src/lib/src/Modules/
|
4856 |
-
msgid "
|
4857 |
msgstr ""
|
4858 |
|
4859 |
-
#: src/lib/src/Modules/
|
4860 |
-
msgid "
|
4861 |
msgstr ""
|
4862 |
|
4863 |
-
#: src/lib/src/Modules/
|
4864 |
-
|
|
|
|
|
|
|
|
|
4865 |
msgstr ""
|
4866 |
|
4867 |
-
#: src/lib/src/Modules/
|
4868 |
-
msgid "
|
4869 |
msgstr ""
|
4870 |
|
4871 |
-
#: src/lib/src/Modules/
|
4872 |
-
msgid ""
|
4873 |
-
"You can explicitly state which hosts/domain from which content may be loaded."
|
4874 |
msgstr ""
|
4875 |
|
4876 |
-
#: src/lib/src/Modules/
|
4877 |
-
msgid ""
|
4878 |
-
"Take great care and test your site as you may block legitimate resources."
|
4879 |
msgstr ""
|
4880 |
|
4881 |
-
#: src/lib/src/Modules/
|
4882 |
-
msgid "
|
|
|
|
|
4883 |
msgstr ""
|
4884 |
|
4885 |
-
#: src/lib/src/Modules/
|
4886 |
msgid ""
|
4887 |
-
"
|
4888 |
-
"
|
4889 |
msgstr ""
|
4890 |
|
4891 |
-
#: src/lib/src/Modules/
|
4892 |
-
|
4893 |
-
msgid "%s is ignoring you"
|
4894 |
msgstr ""
|
4895 |
|
4896 |
-
#: src/lib/src/Modules/
|
4897 |
-
#: src/lib/src/Modules/Plugin/Strings.php:383 src/processors/plugin.php:84
|
4898 |
#, php-format
|
4899 |
-
msgid "
|
4900 |
msgstr ""
|
4901 |
|
4902 |
-
#: src/lib/src/Modules/
|
4903 |
-
|
4904 |
-
|
|
|
|
|
|
|
4905 |
msgstr ""
|
4906 |
|
4907 |
-
#: src/lib/src/Modules/
|
4908 |
-
msgid "
|
4909 |
msgstr ""
|
4910 |
|
4911 |
-
#: src/lib/src/Modules/
|
4912 |
-
msgid "
|
4913 |
msgstr ""
|
4914 |
|
4915 |
-
#: src/lib/src/Modules/
|
4916 |
-
msgid "
|
4917 |
msgstr ""
|
4918 |
|
4919 |
-
#: src/lib/src/Modules/
|
4920 |
-
msgid "
|
4921 |
msgstr ""
|
4922 |
|
4923 |
-
#: src/lib/src/Modules/
|
4924 |
-
msgid "
|
4925 |
msgstr ""
|
4926 |
|
4927 |
-
#: src/lib/src/Modules/
|
4928 |
-
|
4929 |
-
"
|
4930 |
msgstr ""
|
4931 |
|
4932 |
-
#: src/lib/src/Modules/
|
4933 |
-
msgid "
|
4934 |
msgstr ""
|
4935 |
|
4936 |
-
#: src/lib/src/Modules/
|
4937 |
-
msgid "
|
4938 |
msgstr ""
|
4939 |
|
4940 |
-
#: src/lib/src/Modules/
|
4941 |
-
msgid "
|
4942 |
msgstr ""
|
4943 |
|
4944 |
-
#: src/lib/src/Modules/
|
4945 |
-
msgid "
|
4946 |
msgstr ""
|
4947 |
|
4948 |
-
#: src/lib/src/Modules/
|
4949 |
-
msgid "
|
4950 |
msgstr ""
|
4951 |
|
4952 |
-
#: src/lib/src/Modules/
|
4953 |
-
|
|
|
4954 |
msgstr ""
|
4955 |
|
4956 |
-
#: src/lib/src/Modules/
|
4957 |
-
msgid "
|
4958 |
msgstr ""
|
4959 |
|
4960 |
-
#: src/lib/src/Modules/
|
4961 |
msgid ""
|
4962 |
-
"
|
4963 |
-
"
|
4964 |
msgstr ""
|
4965 |
|
4966 |
-
#: src/lib/src/Modules/
|
4967 |
-
|
4968 |
-
|
4969 |
-
|
4970 |
msgstr ""
|
4971 |
|
4972 |
-
#: src/lib/src/Modules/
|
4973 |
-
msgid "
|
4974 |
msgstr ""
|
4975 |
|
4976 |
-
#: src/lib/src/Modules/
|
4977 |
-
msgid "
|
4978 |
msgstr ""
|
4979 |
|
4980 |
-
#: src/lib/src/Modules/
|
4981 |
-
msgid "
|
4982 |
msgstr ""
|
4983 |
|
4984 |
-
#: src/lib/src/Modules/
|
4985 |
-
msgid ""
|
4986 |
-
"The Automatic IP Black List system will block the IP addresses of naughty "
|
4987 |
-
"visitors after a specified number of offenses."
|
4988 |
msgstr ""
|
4989 |
|
4990 |
-
#: src/lib/src/Modules/
|
4991 |
-
|
4992 |
-
msgid "Automatic IP Black List"
|
4993 |
msgstr ""
|
4994 |
|
4995 |
-
#: src/lib/src/Modules/
|
4996 |
-
msgid ""
|
4997 |
-
"Think of 'offenses' as just a counter for the number of times a visitor does "
|
4998 |
-
"something bad."
|
4999 |
msgstr ""
|
5000 |
|
5001 |
-
#: src/lib/src/Modules/
|
5002 |
-
|
5003 |
-
msgid ""
|
5004 |
-
"When the counter reaches the limit below (default: %s), %s will block that "
|
5005 |
-
"IP completely."
|
5006 |
msgstr ""
|
5007 |
|
5008 |
-
#: src/lib/src/Modules/
|
5009 |
-
msgid "
|
5010 |
msgstr ""
|
5011 |
|
5012 |
-
#: src/lib/src/Modules/
|
5013 |
-
msgid "
|
5014 |
msgstr ""
|
5015 |
|
5016 |
-
#: src/lib/src/Modules/
|
5017 |
msgid ""
|
5018 |
-
"
|
5019 |
-
"
|
5020 |
msgstr ""
|
5021 |
|
5022 |
-
#: src/lib/src/Modules/
|
5023 |
-
msgid ""
|
5024 |
-
"Bot-Trap monitors a set of typical bot behaviours to help identify probing "
|
5025 |
-
"bots."
|
5026 |
msgstr ""
|
5027 |
|
5028 |
-
#: src/lib/src/Modules/
|
5029 |
-
msgid "
|
5030 |
msgstr ""
|
5031 |
|
5032 |
-
#: src/lib/src/Modules/
|
5033 |
-
msgid "
|
5034 |
msgstr ""
|
5035 |
|
5036 |
-
#: src/lib/src/Modules/
|
5037 |
-
msgid "
|
5038 |
msgstr ""
|
5039 |
|
5040 |
-
#: src/lib/src/Modules/
|
5041 |
-
|
5042 |
-
#: src/lib/src/Modules/IPs/Strings.php:86
|
5043 |
-
msgid "Summary"
|
5044 |
msgstr ""
|
5045 |
|
5046 |
-
#: src/lib/src/Modules/
|
5047 |
-
msgid ""
|
5048 |
-
"Certain bots are designed to test your logins and this feature lets you "
|
5049 |
-
"decide how to handle them."
|
5050 |
msgstr ""
|
5051 |
|
5052 |
-
#: src/lib/src/Modules/
|
5053 |
-
|
5054 |
-
|
5055 |
-
msgid "Enable as many options as possible."
|
5056 |
msgstr ""
|
5057 |
|
5058 |
-
#: src/lib/src/Modules/
|
5059 |
-
msgid ""
|
5060 |
-
"Legitimate users may get their password wrong, so take care not to block "
|
5061 |
-
"this."
|
5062 |
msgstr ""
|
5063 |
|
5064 |
-
#: src/lib/src/Modules/
|
5065 |
-
msgid "
|
5066 |
msgstr ""
|
5067 |
|
5068 |
-
#: src/lib/src/Modules/
|
5069 |
-
msgid "
|
5070 |
msgstr ""
|
5071 |
|
5072 |
-
#: src/lib/src/Modules/
|
5073 |
msgid ""
|
5074 |
-
"
|
5075 |
-
"probing bots."
|
5076 |
msgstr ""
|
5077 |
|
5078 |
-
#: src/lib/src/Modules/
|
5079 |
-
msgid "
|
5080 |
msgstr ""
|
5081 |
|
5082 |
-
#: src/lib/src/Modules/
|
5083 |
-
msgid "
|
5084 |
msgstr ""
|
5085 |
|
5086 |
-
#: src/lib/src/Modules/
|
5087 |
-
msgid ""
|
5088 |
-
"Detect characteristics and behaviour commonly associated with illegitimate "
|
5089 |
-
"bots."
|
5090 |
msgstr ""
|
5091 |
|
5092 |
-
#: src/lib/src/Modules/
|
5093 |
-
msgid "
|
5094 |
msgstr ""
|
5095 |
|
5096 |
-
#: src/lib/src/Modules/
|
5097 |
-
msgid ""
|
5098 |
-
"Visitor IP address will be Black Listed after X bad actions on your site"
|
5099 |
msgstr ""
|
5100 |
|
5101 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5102 |
#, php-format
|
5103 |
-
msgid ""
|
5104 |
-
"A black mark is set against an IP address each time a visitor trips the "
|
5105 |
-
"defenses of the %s plugin."
|
5106 |
msgstr ""
|
5107 |
|
5108 |
-
#: src/lib/src/Modules/
|
5109 |
-
|
5110 |
-
"
|
5111 |
-
"blocked from accessing the site."
|
5112 |
msgstr ""
|
5113 |
|
5114 |
-
#: src/lib/src/Modules/
|
5115 |
#, php-format
|
5116 |
-
msgid "
|
5117 |
msgstr ""
|
5118 |
|
5119 |
-
#: src/lib/src/Modules/
|
5120 |
-
msgid "
|
5121 |
msgstr ""
|
5122 |
|
5123 |
-
#: src/lib/src/Modules/
|
5124 |
-
msgid "
|
5125 |
msgstr ""
|
5126 |
|
5127 |
-
#: src/lib/src/Modules/
|
5128 |
-
msgid "
|
5129 |
msgstr ""
|
5130 |
|
5131 |
-
#: src/lib/src/Modules/
|
5132 |
-
msgid ""
|
5133 |
-
"You should allow IP addresses on the black list to be eventually removed "
|
5134 |
-
"over time."
|
5135 |
msgstr ""
|
5136 |
|
5137 |
-
#: src/lib/src/Modules/
|
5138 |
-
msgid ""
|
5139 |
-
"Shorter IP black lists are more efficient and a more intelligent use of an "
|
5140 |
-
"IP-based blocking system."
|
5141 |
msgstr ""
|
5142 |
|
5143 |
-
#: src/lib/src/Modules/
|
5144 |
-
msgid "
|
5145 |
msgstr ""
|
5146 |
|
5147 |
-
#: src/lib/src/Modules/
|
5148 |
-
msgid "
|
5149 |
msgstr ""
|
5150 |
|
5151 |
-
#: src/lib/src/Modules/
|
5152 |
-
|
5153 |
-
"
|
5154 |
msgstr ""
|
5155 |
|
5156 |
-
#: src/lib/src/Modules/
|
5157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5158 |
msgstr ""
|
5159 |
|
5160 |
-
#: src/lib/src/Modules/
|
5161 |
-
|
|
|
5162 |
msgstr ""
|
5163 |
|
5164 |
-
#: src/lib/src/Modules/
|
5165 |
-
msgid "
|
5166 |
msgstr ""
|
5167 |
|
5168 |
-
#: src/lib/src/Modules/
|
5169 |
-
msgid "
|
5170 |
msgstr ""
|
5171 |
|
5172 |
-
#: src/lib/src/Modules/
|
5173 |
-
msgid "
|
5174 |
msgstr ""
|
5175 |
|
5176 |
-
#: src/lib/src/Modules/
|
5177 |
-
msgid ""
|
5178 |
-
"This message is displayed if the visitor triggered the IP Offense system and "
|
5179 |
-
"reports how many offenses remain before being blocked."
|
5180 |
msgstr ""
|
5181 |
|
5182 |
-
#: src/lib/src/Modules/
|
5183 |
-
|
|
|
5184 |
msgstr ""
|
5185 |
|
5186 |
-
#: src/lib/src/Modules/
|
5187 |
-
msgid "
|
5188 |
msgstr ""
|
5189 |
|
5190 |
-
#: src/lib/src/Modules/
|
5191 |
-
msgid "
|
5192 |
msgstr ""
|
5193 |
|
5194 |
-
#: src/lib/src/Modules/
|
5195 |
-
msgid ""
|
5196 |
-
"Care should be taken to ensure you don't have legitimate links on your site "
|
5197 |
-
"that are 404s."
|
5198 |
msgstr ""
|
5199 |
|
5200 |
-
#: src/lib/src/Modules/
|
5201 |
-
msgid "
|
5202 |
msgstr ""
|
5203 |
|
5204 |
-
#: src/lib/src/Modules/
|
5205 |
-
msgid "
|
|
|
|
|
5206 |
msgstr ""
|
5207 |
|
5208 |
-
#: src/lib/src/Modules/
|
5209 |
msgid ""
|
5210 |
-
"
|
|
|
5211 |
msgstr ""
|
5212 |
|
5213 |
-
#: src/lib/src/Modules/
|
5214 |
-
|
5215 |
-
"
|
5216 |
-
"site needs it."
|
5217 |
msgstr ""
|
5218 |
|
5219 |
-
#: src/lib/src/Modules/
|
5220 |
-
|
5221 |
-
"
|
5222 |
-
"sure."
|
5223 |
msgstr ""
|
5224 |
|
5225 |
-
#: src/lib/src/Modules/
|
5226 |
-
msgid "
|
5227 |
msgstr ""
|
5228 |
|
5229 |
-
#: src/lib/src/Modules/
|
5230 |
-
msgid "
|
5231 |
msgstr ""
|
5232 |
|
5233 |
-
#: src/lib/src/Modules/
|
5234 |
-
msgid ""
|
5235 |
-
"This works because legitimate web crawlers respect 'robots.txt' and "
|
5236 |
-
"'nofollow' directives."
|
5237 |
msgstr ""
|
5238 |
|
5239 |
-
#: src/lib/src/Modules/
|
5240 |
-
msgid "
|
5241 |
msgstr ""
|
5242 |
|
5243 |
-
#: src/lib/src/Modules/
|
5244 |
-
msgid "
|
|
|
|
|
5245 |
msgstr ""
|
5246 |
|
5247 |
-
#: src/lib/src/Modules/
|
5248 |
-
msgid "
|
5249 |
msgstr ""
|
5250 |
|
5251 |
-
#: src/lib/src/Modules/
|
5252 |
-
msgid "
|
5253 |
msgstr ""
|
5254 |
|
5255 |
-
#: src/lib/src/Modules/
|
5256 |
-
msgid "
|
5257 |
msgstr ""
|
5258 |
|
5259 |
-
#: src/lib/src/Modules/
|
5260 |
msgid ""
|
5261 |
-
"
|
5262 |
-
"
|
5263 |
msgstr ""
|
5264 |
|
5265 |
-
#: src/lib/src/Modules/
|
5266 |
-
msgid "
|
5267 |
msgstr ""
|
5268 |
|
5269 |
-
#: src/lib/src/Modules/
|
5270 |
-
msgid ""
|
5271 |
-
"Identify a Bot when it presents as an official web crawler, but analysis "
|
5272 |
-
"shows it's fake."
|
5273 |
msgstr ""
|
5274 |
|
5275 |
-
#: src/lib/src/Modules/
|
5276 |
-
msgid "
|
5277 |
msgstr ""
|
5278 |
|
5279 |
-
#: src/lib/src/Modules/
|
5280 |
-
msgid "
|
5281 |
msgstr ""
|
5282 |
|
5283 |
-
#: src/lib/src/Modules/
|
5284 |
-
msgid "
|
5285 |
msgstr ""
|
5286 |
|
5287 |
-
#: src/lib/src/Modules/
|
5288 |
-
msgid "
|
|
|
5289 |
msgstr ""
|
5290 |
|
5291 |
-
#: src/lib/src/Modules/
|
5292 |
-
|
5293 |
-
msgid "A custom %s offense was registered on the site."
|
5294 |
msgstr ""
|
5295 |
|
5296 |
-
#: src/lib/src/Modules/
|
5297 |
-
msgid "
|
5298 |
msgstr ""
|
5299 |
|
5300 |
-
#: src/lib/src/Modules/
|
5301 |
-
|
5302 |
-
msgid "Auto Black List offenses counter was incremented from %s to %s."
|
5303 |
msgstr ""
|
5304 |
|
5305 |
-
#: src/lib/src/Modules/
|
5306 |
-
|
5307 |
-
msgid "IP blocked after incrementing offenses from %s to %s."
|
5308 |
msgstr ""
|
5309 |
|
5310 |
-
#: src/lib/src/Modules/
|
5311 |
-
|
5312 |
-
|
|
|
5313 |
msgstr ""
|
5314 |
|
5315 |
-
#: src/lib/src/Modules/
|
5316 |
-
|
5317 |
-
msgid "404 detected at \"%s\"."
|
5318 |
msgstr ""
|
5319 |
|
5320 |
-
#: src/lib/src/Modules/
|
5321 |
-
|
5322 |
-
msgid "Fake Web Crawler detected at \"%s\"."
|
5323 |
msgstr ""
|
5324 |
|
5325 |
-
#: src/lib/src/Modules/
|
5326 |
-
|
5327 |
-
|
|
|
5328 |
msgstr ""
|
5329 |
|
5330 |
-
#: src/lib/src/Modules/
|
5331 |
-
|
5332 |
-
|
|
|
5333 |
msgstr ""
|
5334 |
|
5335 |
-
#: src/lib/src/Modules/
|
5336 |
-
|
5337 |
-
msgid "Attempted login with invalid user \"%s\"."
|
5338 |
msgstr ""
|
5339 |
|
5340 |
-
#: src/lib/src/Modules/
|
5341 |
-
|
5342 |
-
msgid "
|
|
|
|
|
5343 |
msgstr ""
|
5344 |
|
5345 |
-
#: src/lib/src/Modules/
|
5346 |
-
|
5347 |
-
|
|
|
|
|
5348 |
msgstr ""
|
5349 |
|
5350 |
-
#: src/lib/src/Modules/
|
5351 |
-
msgid "
|
5352 |
msgstr ""
|
5353 |
|
5354 |
-
#: src/lib/src/Modules/
|
5355 |
-
msgid "
|
5356 |
msgstr ""
|
5357 |
|
5358 |
-
#: src/lib/src/Modules/
|
5359 |
-
msgid "
|
|
|
|
|
5360 |
msgstr ""
|
5361 |
|
5362 |
-
#: src/lib/src/Modules/
|
5363 |
-
|
|
|
5364 |
msgstr ""
|
5365 |
|
5366 |
-
#: src/lib/src/Modules/
|
5367 |
-
|
|
|
5368 |
msgstr ""
|
5369 |
|
5370 |
-
#: src/lib/src/Modules/
|
5371 |
-
msgid "
|
|
|
|
|
5372 |
msgstr ""
|
5373 |
|
5374 |
-
#: src/lib/src/Modules/
|
5375 |
-
msgid "
|
5376 |
msgstr ""
|
5377 |
|
5378 |
-
#: src/lib/src/Modules/
|
5379 |
-
msgid "
|
5380 |
msgstr ""
|
5381 |
|
5382 |
-
#: src/lib/src/Modules/
|
5383 |
-
msgid "
|
|
|
5384 |
msgstr ""
|
5385 |
|
5386 |
-
#: src/lib/src/Modules/
|
5387 |
-
msgid "
|
5388 |
msgstr ""
|
5389 |
|
5390 |
-
#: src/lib/src/Modules/
|
5391 |
-
msgid "
|
5392 |
msgstr ""
|
5393 |
|
5394 |
-
#: src/lib/src/Modules/
|
5395 |
-
msgid "
|
|
|
|
|
5396 |
msgstr ""
|
5397 |
|
5398 |
-
#: src/lib/src/Modules/
|
5399 |
-
msgid "
|
5400 |
msgstr ""
|
5401 |
|
5402 |
-
#: src/lib/src/Modules/
|
5403 |
-
msgid "
|
5404 |
msgstr ""
|
5405 |
|
5406 |
-
#: src/lib/src/Modules/
|
5407 |
-
msgid "
|
5408 |
msgstr ""
|
5409 |
|
5410 |
-
#: src/lib/src/Modules/
|
5411 |
-
|
|
|
5412 |
msgstr ""
|
5413 |
|
5414 |
-
#: src/lib/src/Modules/
|
5415 |
-
|
|
|
5416 |
msgstr ""
|
5417 |
|
5418 |
-
#: src/lib/src/Modules/
|
5419 |
-
msgid "
|
5420 |
msgstr ""
|
5421 |
|
5422 |
-
#: src/lib/src/Modules/
|
5423 |
-
msgid "
|
5424 |
msgstr ""
|
5425 |
|
5426 |
-
#: src/lib/src/Modules/
|
5427 |
-
msgid "
|
5428 |
msgstr ""
|
5429 |
|
5430 |
-
#: src/lib/src/Modules/
|
5431 |
-
msgid "
|
5432 |
msgstr ""
|
5433 |
|
5434 |
-
#: src/lib/src/Modules/
|
5435 |
-
|
|
|
5436 |
msgstr ""
|
5437 |
|
5438 |
-
#: src/lib/src/Modules/
|
5439 |
-
msgid "
|
5440 |
msgstr ""
|
5441 |
|
5442 |
-
#: src/lib/src/Modules/
|
5443 |
-
msgid "
|
|
|
|
|
5444 |
msgstr ""
|
5445 |
|
5446 |
-
#: src/lib/src/Modules/
|
5447 |
-
msgid "
|
5448 |
msgstr ""
|
5449 |
|
5450 |
-
#: src/lib/src/Modules/
|
5451 |
-
msgid "
|
5452 |
msgstr ""
|
5453 |
|
5454 |
-
#: src/lib/src/Modules/
|
5455 |
-
msgid "
|
5456 |
msgstr ""
|
5457 |
|
5458 |
-
#: src/lib/src/Modules/
|
5459 |
-
msgid "
|
|
|
|
|
5460 |
msgstr ""
|
5461 |
|
5462 |
-
#: src/lib/src/Modules/
|
5463 |
-
msgid "
|
5464 |
msgstr ""
|
5465 |
|
5466 |
-
#: src/lib/src/Modules/
|
5467 |
-
msgid "
|
5468 |
msgstr ""
|
5469 |
|
5470 |
-
#: src/lib/src/Modules/
|
5471 |
-
msgid "
|
5472 |
msgstr ""
|
5473 |
|
5474 |
-
#: src/lib/src/Modules/
|
5475 |
-
msgid "
|
5476 |
msgstr ""
|
5477 |
|
5478 |
-
#: src/lib/src/Modules/
|
5479 |
-
msgid "
|
|
|
|
|
5480 |
msgstr ""
|
5481 |
|
5482 |
-
#: src/lib/src/Modules/
|
5483 |
-
msgid "
|
5484 |
msgstr ""
|
5485 |
|
5486 |
-
#: src/lib/src/Modules/
|
5487 |
-
msgid "
|
5488 |
msgstr ""
|
5489 |
|
5490 |
-
#: src/lib/src/Modules/
|
5491 |
-
msgid "
|
|
|
|
|
5492 |
msgstr ""
|
5493 |
|
5494 |
-
#: src/lib/src/Modules/
|
5495 |
-
msgid "
|
5496 |
msgstr ""
|
5497 |
|
5498 |
-
#: src/lib/src/Modules/
|
5499 |
-
|
5500 |
-
msgid "%s Security Insights"
|
5501 |
msgstr ""
|
5502 |
|
5503 |
-
#: src/lib/src/Modules/
|
5504 |
-
msgid "
|
|
|
|
|
5505 |
msgstr ""
|
5506 |
|
5507 |
-
#: src/lib/src/Modules/
|
5508 |
-
msgid "
|
5509 |
msgstr ""
|
5510 |
|
5511 |
-
#: src/lib/src/Modules/
|
5512 |
-
|
5513 |
-
|
|
|
5514 |
msgstr ""
|
5515 |
|
5516 |
-
#: src/lib/src/Modules/
|
5517 |
#, php-format
|
5518 |
-
msgid "
|
5519 |
msgstr ""
|
5520 |
|
5521 |
-
#: src/lib/src/Modules/
|
5522 |
-
|
|
|
|
|
5523 |
msgstr ""
|
5524 |
|
5525 |
-
#: src/lib/src/Modules/
|
5526 |
-
msgid "
|
|
|
|
|
5527 |
msgstr ""
|
5528 |
|
5529 |
-
#: src/lib/src/Modules/
|
5530 |
-
msgid "
|
5531 |
msgstr ""
|
5532 |
|
5533 |
-
#: src/lib/src/Modules/
|
5534 |
-
msgid "
|
5535 |
msgstr ""
|
5536 |
|
5537 |
-
#: src/lib/src/Modules/
|
5538 |
-
msgid "
|
|
|
5539 |
msgstr ""
|
5540 |
|
5541 |
-
#: src/lib/src/Modules/
|
5542 |
-
msgid "
|
5543 |
msgstr ""
|
5544 |
|
5545 |
-
#: src/lib/src/Modules/
|
5546 |
-
msgid "
|
5547 |
msgstr ""
|
5548 |
|
5549 |
-
#: src/lib/src/Modules/
|
5550 |
-
|
5551 |
-
msgid "
|
5552 |
msgstr ""
|
5553 |
|
5554 |
-
#: src/lib/src/Modules/
|
5555 |
-
|
5556 |
-
|
5557 |
msgstr ""
|
5558 |
|
5559 |
-
#: src/lib/src/Modules/
|
5560 |
-
|
5561 |
-
|
5562 |
-
|
5563 |
-
msgstr
|
5564 |
-
msgstr[1] ""
|
5565 |
|
5566 |
-
#: src/lib/src/Modules/
|
5567 |
-
msgid "
|
5568 |
msgstr ""
|
5569 |
|
5570 |
-
#: src/lib/src/Modules/
|
5571 |
-
msgid "
|
5572 |
msgstr ""
|
5573 |
|
5574 |
-
#: src/lib/src/Modules/
|
5575 |
-
msgid "
|
5576 |
msgstr ""
|
5577 |
|
5578 |
-
#: src/lib/src/Modules/
|
5579 |
-
|
|
|
5580 |
msgstr ""
|
5581 |
|
5582 |
-
#: src/lib/src/Modules/
|
5583 |
-
|
|
|
5584 |
msgstr ""
|
5585 |
|
5586 |
-
#: src/lib/src/Modules/
|
5587 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
5588 |
msgstr ""
|
5589 |
|
5590 |
-
#: src/lib/src/Modules/
|
5591 |
-
msgid "
|
5592 |
msgstr ""
|
5593 |
|
5594 |
-
#: src/lib/src/Modules/
|
5595 |
-
msgid "
|
5596 |
msgstr ""
|
5597 |
|
5598 |
-
#: src/lib/src/Modules/
|
5599 |
-
|
5600 |
-
msgid "Activate this site URL in your %s control panel"
|
5601 |
msgstr ""
|
5602 |
|
5603 |
-
#: src/lib/src/Modules/
|
5604 |
-
msgid "
|
5605 |
msgstr ""
|
5606 |
|
5607 |
-
#: src/lib/src/Modules/
|
5608 |
#, php-format
|
5609 |
-
msgid "
|
5610 |
msgstr ""
|
5611 |
|
5612 |
-
#: src/lib/src/Modules/
|
5613 |
-
|
|
|
5614 |
msgstr ""
|
5615 |
|
5616 |
-
#: src/lib/src/Modules/
|
5617 |
-
msgid "
|
5618 |
msgstr ""
|
5619 |
|
5620 |
-
#: src/lib/src/Modules/
|
5621 |
-
msgid "
|
5622 |
msgstr ""
|
5623 |
|
5624 |
-
#: src/lib/src/Modules/
|
5625 |
-
msgid "
|
|
|
|
|
5626 |
msgstr ""
|
5627 |
|
5628 |
-
#: src/lib/src/Modules/
|
5629 |
-
|
5630 |
-
#: src/lib/src/Tables/Render/ScanBase.php:46
|
5631 |
-
#: src/lib/src/Tables/Render/ScanPtg.php:27
|
5632 |
-
msgid "Status"
|
5633 |
msgstr ""
|
5634 |
|
5635 |
-
#: src/lib/src/Modules/
|
5636 |
-
msgid "
|
5637 |
msgstr ""
|
5638 |
|
5639 |
-
#: src/lib/src/Modules/
|
5640 |
-
msgid "
|
|
|
5641 |
msgstr ""
|
5642 |
|
5643 |
-
#: src/lib/src/Modules/
|
5644 |
-
msgid "
|
5645 |
msgstr ""
|
5646 |
|
5647 |
-
#: src/lib/src/Modules/
|
5648 |
-
msgid "
|
5649 |
msgstr ""
|
5650 |
|
5651 |
-
#: src/lib/src/Modules/
|
5652 |
-
msgid "
|
5653 |
msgstr ""
|
5654 |
|
5655 |
-
#: src/lib/src/Modules/
|
5656 |
-
msgid "
|
5657 |
msgstr ""
|
5658 |
|
5659 |
-
#: src/lib/src/Modules/
|
5660 |
-
msgid "
|
5661 |
msgstr ""
|
5662 |
|
5663 |
-
#: src/lib/src/Modules/
|
5664 |
-
|
5665 |
-
msgid "Blocked Anonymous API Access through \"%s\" namespace"
|
5666 |
msgstr ""
|
5667 |
|
5668 |
-
#: src/lib/src/Modules/
|
5669 |
msgid ""
|
5670 |
-
"
|
5671 |
-
"
|
5672 |
msgstr ""
|
5673 |
|
5674 |
-
#: src/lib/src/Modules/
|
5675 |
-
msgid "
|
5676 |
msgstr ""
|
5677 |
|
5678 |
-
#: src/lib/src/Modules/
|
5679 |
-
|
5680 |
-
msgid "API & XML-RPC"
|
5681 |
msgstr ""
|
5682 |
|
5683 |
-
#: src/lib/src/Modules/
|
5684 |
-
msgid "
|
5685 |
msgstr ""
|
5686 |
|
5687 |
-
#: src/lib/src/Modules/
|
5688 |
msgid ""
|
5689 |
-
"
|
5690 |
-
"
|
5691 |
msgstr ""
|
5692 |
|
5693 |
-
#: src/lib/src/Modules/
|
5694 |
-
msgid "
|
5695 |
msgstr ""
|
5696 |
|
5697 |
-
#: src/lib/src/Modules/
|
5698 |
-
msgid "
|
5699 |
msgstr ""
|
5700 |
|
5701 |
-
#: src/lib/src/Modules/
|
5702 |
-
msgid "
|
5703 |
msgstr ""
|
5704 |
|
5705 |
-
#: src/lib/src/Modules/
|
5706 |
-
msgid "
|
|
|
|
|
5707 |
msgstr ""
|
5708 |
|
5709 |
-
#: src/lib/src/Modules/
|
5710 |
-
msgid "
|
5711 |
msgstr ""
|
5712 |
|
5713 |
-
#: src/lib/src/Modules/
|
5714 |
-
msgid "
|
5715 |
msgstr ""
|
5716 |
|
5717 |
-
#: src/lib/src/Modules/
|
5718 |
msgid ""
|
5719 |
-
"
|
5720 |
-
"
|
5721 |
msgstr ""
|
5722 |
|
5723 |
-
#: src/lib/src/Modules/
|
5724 |
-
msgid "
|
5725 |
msgstr ""
|
5726 |
|
5727 |
-
#: src/lib/src/Modules/
|
5728 |
-
|
5729 |
-
#, php-format
|
5730 |
-
msgid "Disable %s"
|
5731 |
msgstr ""
|
5732 |
|
5733 |
-
#: src/lib/src/Modules/
|
5734 |
-
|
5735 |
-
|
5736 |
-
|
5737 |
msgstr ""
|
5738 |
|
5739 |
-
#: src/lib/src/Modules/
|
5740 |
-
|
5741 |
-
|
|
|
5742 |
msgstr ""
|
5743 |
|
5744 |
-
#: src/lib/src/Modules/
|
5745 |
-
|
5746 |
-
msgid "Anonymous Rest API"
|
5747 |
msgstr ""
|
5748 |
|
5749 |
-
#: src/lib/src/Modules/
|
5750 |
-
msgid "
|
5751 |
msgstr ""
|
5752 |
|
5753 |
-
#: src/lib/src/Modules/
|
5754 |
-
msgid "
|
|
|
|
|
5755 |
msgstr ""
|
5756 |
|
5757 |
-
#: src/lib/src/Modules/
|
5758 |
-
msgid "
|
|
|
|
|
5759 |
msgstr ""
|
5760 |
|
5761 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
5762 |
msgid ""
|
5763 |
-
"
|
5764 |
-
"restriction."
|
5765 |
msgstr ""
|
5766 |
|
5767 |
-
#: src/lib/src/Modules/
|
5768 |
-
msgid "
|
5769 |
msgstr ""
|
5770 |
|
5771 |
-
#: src/lib/src/Modules/
|
5772 |
-
msgid "
|
5773 |
msgstr ""
|
5774 |
|
5775 |
-
#: src/lib/src/Modules/
|
5776 |
msgid ""
|
5777 |
-
"
|
5778 |
-
"
|
5779 |
msgstr ""
|
5780 |
|
5781 |
-
#: src/lib/src/Modules/
|
5782 |
-
msgid "
|
|
|
|
|
5783 |
msgstr ""
|
5784 |
|
5785 |
-
#: src/lib/src/Modules/
|
5786 |
-
msgid "
|
5787 |
msgstr ""
|
5788 |
|
5789 |
-
#: src/lib/src/Modules/
|
5790 |
-
msgid "
|
5791 |
msgstr ""
|
5792 |
|
5793 |
-
#: src/lib/src/Modules/
|
5794 |
msgid ""
|
5795 |
-
"
|
|
|
5796 |
msgstr ""
|
5797 |
|
5798 |
-
#: src/lib/src/Modules/
|
5799 |
-
msgid "
|
5800 |
msgstr ""
|
5801 |
|
5802 |
-
#: src/lib/src/Modules/
|
5803 |
-
msgid "
|
5804 |
msgstr ""
|
5805 |
|
5806 |
-
#: src/lib/src/Modules/
|
5807 |
-
msgid "
|
|
|
|
|
5808 |
msgstr ""
|
5809 |
|
5810 |
-
#: src/lib/src/Modules/
|
5811 |
-
msgid ""
|
5812 |
-
"Enter how you would like your WordPress version displayed publicly. Leave "
|
5813 |
-
"blank to disable this feature."
|
5814 |
msgstr ""
|
5815 |
|
5816 |
-
#: src/lib/src/Modules/
|
5817 |
-
msgid ""
|
5818 |
-
"This may interfere with WordPress plugins that rely on the $wp_version "
|
5819 |
-
"variable."
|
5820 |
msgstr ""
|
5821 |
|
5822 |
-
#: src/lib/src/Modules/
|
5823 |
-
msgid "
|
|
|
|
|
5824 |
msgstr ""
|
5825 |
|
5826 |
-
#: src/lib/src/Modules/
|
5827 |
-
msgid "
|
5828 |
msgstr ""
|
5829 |
|
5830 |
-
#: src/lib/src/Modules/
|
5831 |
msgid ""
|
5832 |
-
"
|
5833 |
-
"site is WordPress and its current version."
|
5834 |
msgstr ""
|
5835 |
|
5836 |
-
#: src/lib/src/Modules/
|
5837 |
-
msgid "
|
|
|
5838 |
msgstr ""
|
5839 |
|
5840 |
-
#: src/lib/src/Modules/
|
5841 |
-
msgid "
|
|
|
|
|
5842 |
msgstr ""
|
5843 |
|
5844 |
-
#: src/lib/src/Modules/
|
5845 |
-
|
5846 |
-
|
|
|
5847 |
msgstr ""
|
5848 |
|
5849 |
-
#: src/lib/src/Modules/
|
|
|
5850 |
msgid ""
|
5851 |
-
"
|
|
|
5852 |
msgstr ""
|
5853 |
|
5854 |
-
#: src/lib/src/Modules/LoginGuard/
|
5855 |
-
msgid "
|
5856 |
msgstr ""
|
5857 |
|
5858 |
-
#: src/lib/src/Modules/LoginGuard/
|
5859 |
msgid ""
|
5860 |
-
"
|
5861 |
-
"your
|
5862 |
msgstr ""
|
5863 |
|
5864 |
-
#: src/lib/src/Modules/LoginGuard/
|
5865 |
-
msgid "
|
|
|
|
|
5866 |
msgstr ""
|
5867 |
|
5868 |
-
#: src/lib/src/Modules/
|
5869 |
#, php-format
|
5870 |
-
msgid "
|
5871 |
msgstr ""
|
5872 |
|
5873 |
-
#: src/lib/src/Modules/
|
5874 |
-
|
|
|
|
|
5875 |
msgstr ""
|
5876 |
|
5877 |
-
#: src/lib/src/Modules/
|
5878 |
-
msgid "
|
|
|
|
|
5879 |
msgstr ""
|
5880 |
|
5881 |
-
#: src/lib/src/Modules/
|
5882 |
-
msgid "
|
|
|
|
|
5883 |
msgstr ""
|
5884 |
|
5885 |
-
#: src/lib/src/Modules/
|
5886 |
-
msgid "
|
5887 |
msgstr ""
|
5888 |
|
5889 |
-
#: src/lib/src/Modules/
|
5890 |
-
|
|
|
|
|
5891 |
msgstr ""
|
5892 |
|
5893 |
-
#: src/lib/src/Modules/
|
5894 |
-
|
|
|
5895 |
msgstr ""
|
5896 |
|
5897 |
-
#: src/lib/src/Modules/
|
5898 |
-
msgid "
|
5899 |
msgstr ""
|
5900 |
|
5901 |
-
#: src/lib/src/Modules/
|
5902 |
-
msgid "The
|
5903 |
msgstr ""
|
5904 |
|
5905 |
-
#: src/lib/src/Modules/
|
5906 |
-
msgid ""
|
5907 |
-
"If you attempt to login again too quickly you may be blocked from accessing "
|
5908 |
-
"this site entirely."
|
5909 |
msgstr ""
|
5910 |
|
5911 |
-
#: src/lib/src/Modules/
|
5912 |
-
msgid ""
|
5913 |
-
"If you share this website with others, you may also block their access to "
|
5914 |
-
"the site."
|
5915 |
msgstr ""
|
5916 |
|
5917 |
-
#: src/lib/src/Modules/
|
|
|
5918 |
msgid ""
|
5919 |
-
"
|
5920 |
-
"
|
5921 |
msgstr ""
|
5922 |
|
5923 |
-
#: src/lib/src/Modules/
|
5924 |
-
msgid "
|
5925 |
msgstr ""
|
5926 |
|
5927 |
-
#: src/lib/src/Modules/
|
5928 |
-
|
|
|
5929 |
msgstr ""
|
5930 |
|
5931 |
-
#: src/lib/src/Modules/
|
5932 |
-
msgid "
|
5933 |
msgstr ""
|
5934 |
|
5935 |
-
#: src/lib/src/Modules/
|
5936 |
-
|
5937 |
-
msgid "User \"%s\" attempted \"%s\" but Bot checkbox was not found."
|
5938 |
msgstr ""
|
5939 |
|
5940 |
-
#: src/lib/src/Modules/
|
5941 |
-
msgid "
|
5942 |
msgstr ""
|
5943 |
|
5944 |
-
#: src/lib/src/Modules/
|
5945 |
#, php-format
|
5946 |
-
msgid "
|
5947 |
msgstr ""
|
5948 |
|
5949 |
-
#: src/lib/src/Modules/
|
5950 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:30
|
5951 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:36
|
5952 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:42
|
5953 |
#, php-format
|
5954 |
-
msgid "
|
|
|
|
|
5955 |
msgstr ""
|
5956 |
|
5957 |
-
#: src/lib/src/Modules/
|
5958 |
-
|
5959 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:39
|
5960 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:45
|
5961 |
-
#, php-format
|
5962 |
-
msgid "User \"%s\" failed to verify their identity using %s."
|
5963 |
msgstr ""
|
5964 |
|
5965 |
-
#: src/lib/src/Modules/
|
5966 |
#, php-format
|
5967 |
-
msgid "
|
5968 |
msgstr ""
|
5969 |
|
5970 |
-
#: src/lib/src/Modules/
|
5971 |
#, php-format
|
5972 |
-
msgid "
|
5973 |
-
msgstr ""
|
5974 |
-
|
5975 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:70
|
5976 |
-
msgid ""
|
5977 |
-
"Login Guard blocks all automated and brute force attempts to log in to your "
|
5978 |
-
"site."
|
5979 |
msgstr ""
|
5980 |
|
5981 |
-
#: src/lib/src/Modules/
|
5982 |
-
msgid "
|
5983 |
msgstr ""
|
5984 |
|
5985 |
-
#: src/lib/src/Modules/
|
5986 |
msgid ""
|
5987 |
-
"
|
5988 |
-
"
|
5989 |
msgstr ""
|
5990 |
|
5991 |
-
#: src/lib/src/Modules/
|
5992 |
-
msgid "
|
5993 |
msgstr ""
|
5994 |
|
5995 |
-
#: src/lib/src/Modules/
|
5996 |
-
msgid "
|
5997 |
msgstr ""
|
5998 |
|
5999 |
-
#: src/lib/src/Modules/
|
6000 |
-
msgid ""
|
6001 |
-
"To hide your wp-login.php page from brute force attacks and hacking attempts "
|
6002 |
-
"- if your login page cannot be found, no-one can login."
|
6003 |
msgstr ""
|
6004 |
|
6005 |
-
#: src/lib/src/Modules/
|
6006 |
-
msgid ""
|
6007 |
-
"This is not required for complete security and if your site has irregular or "
|
6008 |
-
"inconsistent configuration it may not work for you."
|
6009 |
msgstr ""
|
6010 |
|
6011 |
-
#: src/lib/src/Modules/
|
6012 |
-
|
6013 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:69
|
6014 |
-
msgid "Multi-Factor Authentication"
|
6015 |
msgstr ""
|
6016 |
|
6017 |
-
#: src/lib/src/Modules/
|
6018 |
-
msgid "
|
6019 |
msgstr ""
|
6020 |
|
6021 |
-
#: src/lib/src/Modules/
|
6022 |
-
|
6023 |
-
msgid ""
|
6024 |
-
"Verifies the identity of users who log in to your site - i.e. they are who "
|
6025 |
-
"they say they are."
|
6026 |
msgstr ""
|
6027 |
|
6028 |
-
#: src/lib/src/Modules/
|
6029 |
-
|
6030 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:118
|
6031 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:136
|
6032 |
-
msgid "You may combine multiple authentication factors for increased security."
|
6033 |
msgstr ""
|
6034 |
|
6035 |
-
#: src/lib/src/Modules/
|
6036 |
-
msgid "
|
6037 |
msgstr ""
|
6038 |
|
6039 |
-
#: src/lib/src/Modules/
|
6040 |
-
|
|
|
6041 |
msgstr ""
|
6042 |
|
6043 |
-
#: src/lib/src/Modules/
|
6044 |
-
|
6045 |
-
"
|
6046 |
-
"time-passwords."
|
6047 |
msgstr ""
|
6048 |
|
6049 |
-
#: src/lib/src/Modules/
|
6050 |
-
#: src/lib/src/Modules/UserManagement/
|
6051 |
-
msgid "
|
6052 |
msgstr ""
|
6053 |
|
6054 |
-
#: src/lib/src/Modules/
|
6055 |
-
msgid "
|
6056 |
msgstr ""
|
6057 |
|
6058 |
-
#: src/lib/src/Modules/
|
6059 |
-
msgid "
|
6060 |
msgstr ""
|
6061 |
|
6062 |
-
#: src/lib/src/Modules/
|
6063 |
-
msgid ""
|
6064 |
-
"Verifies the identity of users who log in to your site using Google "
|
6065 |
-
"Authenticator one-time-passwords."
|
6066 |
msgstr ""
|
6067 |
|
6068 |
-
#: src/lib/src/Modules/
|
6069 |
-
msgid "
|
6070 |
msgstr ""
|
6071 |
|
6072 |
-
#: src/lib/src/Modules/
|
6073 |
-
|
|
|
6074 |
msgstr ""
|
6075 |
|
6076 |
-
#: src/lib/src/Modules/
|
6077 |
-
|
6078 |
-
"
|
6079 |
msgstr ""
|
6080 |
|
6081 |
-
#: src/lib/src/Modules/
|
6082 |
-
msgid "
|
6083 |
msgstr ""
|
6084 |
|
6085 |
-
#: src/lib/src/Modules/
|
6086 |
-
|
6087 |
-
msgid "Yubikey"
|
6088 |
msgstr ""
|
6089 |
|
6090 |
-
#: src/lib/src/Modules/
|
6091 |
-
msgid ""
|
6092 |
-
"Verifies the identity of users who log in to your site using Yubikey one-"
|
6093 |
-
"time-passwords."
|
6094 |
msgstr ""
|
6095 |
|
6096 |
-
#: src/lib/src/Modules/
|
6097 |
-
msgid "
|
6098 |
msgstr ""
|
6099 |
|
6100 |
-
#: src/lib/src/Modules/
|
6101 |
-
msgid "
|
6102 |
msgstr ""
|
6103 |
|
6104 |
-
#: src/lib/src/Modules/
|
6105 |
-
msgid "
|
6106 |
msgstr ""
|
6107 |
|
6108 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
6109 |
#, php-format
|
6110 |
-
msgid "
|
6111 |
msgstr ""
|
6112 |
|
6113 |
-
#: src/lib/src/Modules/
|
6114 |
#, php-format
|
6115 |
-
msgid "
|
|
|
6116 |
msgstr ""
|
6117 |
|
6118 |
-
#: src/lib/src/Modules/
|
6119 |
-
msgid "
|
6120 |
msgstr ""
|
6121 |
|
6122 |
-
#: src/lib/src/Modules/
|
6123 |
-
|
6124 |
-
"
|
6125 |
-
"user login. Disable to require only one to login."
|
6126 |
msgstr ""
|
6127 |
|
6128 |
-
#: src/lib/src/Modules/
|
6129 |
-
msgid "
|
6130 |
msgstr ""
|
6131 |
|
6132 |
-
#: src/lib/src/Modules/
|
6133 |
-
msgid ""
|
6134 |
-
"A User Can By-Pass Multi-Factor Authentication (MFA) For The Set Number Of "
|
6135 |
-
"Days"
|
6136 |
msgstr ""
|
6137 |
|
6138 |
-
#: src/lib/src/Modules/
|
6139 |
-
msgid ""
|
6140 |
-
"Enter the number of days a user can by-pass future MFA after a successful "
|
6141 |
-
"MFA-login. 0 to disable."
|
6142 |
msgstr ""
|
6143 |
|
6144 |
-
#: src/lib/src/Modules/
|
6145 |
-
msgid "
|
6146 |
msgstr ""
|
6147 |
|
6148 |
-
#: src/lib/src/Modules/
|
6149 |
-
msgid "
|
6150 |
msgstr ""
|
6151 |
|
6152 |
-
#: src/lib/src/Modules/
|
6153 |
-
msgid ""
|
6154 |
-
"Allow users to generate a backup code that can be used to login if MFA "
|
6155 |
-
"factors are unavailable."
|
6156 |
msgstr ""
|
6157 |
|
6158 |
-
#: src/lib/src/Modules/
|
6159 |
-
|
6160 |
-
|
6161 |
-
#: src/processors/loginprotect_intentprovider_ga.php:52
|
6162 |
-
#: src/processors/loginprotect_intentprovider_ga.php:54
|
6163 |
-
#: src/processors/loginprotect_intentprovider_ga.php:188
|
6164 |
-
msgid "Google Authenticator"
|
6165 |
msgstr ""
|
6166 |
|
6167 |
-
#: src/lib/src/Modules/
|
6168 |
-
msgid "
|
6169 |
msgstr ""
|
6170 |
|
6171 |
-
#: src/lib/src/Modules/
|
6172 |
-
msgid ""
|
6173 |
-
"When enabled, users will have the option to add Google Authenticator to "
|
6174 |
-
"their WordPress user profile"
|
6175 |
msgstr ""
|
6176 |
|
6177 |
-
#: src/lib/src/Modules/
|
6178 |
-
#: src/lib/src/Modules/
|
6179 |
-
|
6180 |
-
#: src/processors/loginprotect_intentprovider_email.php:198
|
6181 |
-
#: src/processors/loginprotect_intentprovider_email.php:199
|
6182 |
-
msgid "Email Authentication"
|
6183 |
msgstr ""
|
6184 |
|
6185 |
-
#: src/lib/src/Modules/
|
6186 |
-
|
6187 |
-
msgid "Two-Factor Login Authentication By %s"
|
6188 |
msgstr ""
|
6189 |
|
6190 |
-
#: src/lib/src/Modules/
|
6191 |
-
|
6192 |
-
#: src/processors/user_management.php:204
|
6193 |
-
msgid "Email"
|
6194 |
msgstr ""
|
6195 |
|
6196 |
-
#: src/lib/src/Modules/
|
|
|
6197 |
msgid ""
|
6198 |
-
"
|
6199 |
-
"
|
6200 |
msgstr ""
|
6201 |
|
6202 |
-
#: src/lib/src/Modules/
|
6203 |
-
msgid "
|
6204 |
msgstr ""
|
6205 |
|
6206 |
-
#: src/lib/src/Modules/
|
6207 |
-
msgid "
|
6208 |
msgstr ""
|
6209 |
|
6210 |
-
#: src/lib/src/Modules/
|
|
|
6211 |
msgid ""
|
6212 |
-
"
|
6213 |
msgstr ""
|
6214 |
|
6215 |
-
#: src/lib/src/Modules/
|
6216 |
#, php-format
|
6217 |
-
msgid "
|
6218 |
-
|
6219 |
-
|
6220 |
-
#: src/lib/src/Modules/LoginGuard/Strings.php:217
|
6221 |
-
#: src/lib/src/Modules/Plugin/Strings.php:94
|
6222 |
-
#: src/lib/src/Modules/Plugin/Strings.php:95
|
6223 |
-
msgid "Google reCAPTCHA"
|
6224 |
msgstr ""
|
6225 |
|
6226 |
-
#: src/lib/src/Modules/
|
6227 |
-
|
|
|
6228 |
msgstr ""
|
6229 |
|
6230 |
-
#: src/lib/src/Modules/
|
|
|
6231 |
msgid ""
|
6232 |
-
"
|
|
|
6233 |
msgstr ""
|
6234 |
|
6235 |
-
#: src/lib/src/Modules/
|
6236 |
-
|
6237 |
-
msgid "
|
6238 |
msgstr ""
|
6239 |
|
6240 |
-
#: src/lib/src/Modules/
|
6241 |
-
|
6242 |
-
msgid "Light Theme"
|
6243 |
msgstr ""
|
6244 |
|
6245 |
-
#: src/lib/src/Modules/
|
6246 |
-
|
6247 |
-
"
|
6248 |
msgstr ""
|
6249 |
|
6250 |
-
#: src/lib/src/Modules/
|
|
|
6251 |
msgid ""
|
6252 |
-
"
|
6253 |
-
"
|
6254 |
msgstr ""
|
6255 |
|
6256 |
-
#: src/lib/src/Modules/
|
6257 |
-
msgid "
|
6258 |
msgstr ""
|
6259 |
|
6260 |
-
#: src/lib/src/Modules/
|
6261 |
-
msgid "
|
6262 |
msgstr ""
|
6263 |
|
6264 |
-
#: src/lib/src/Modules/
|
6265 |
-
msgid "
|
6266 |
msgstr ""
|
6267 |
|
6268 |
-
#: src/lib/src/Modules/
|
6269 |
-
|
6270 |
-
msgid "Use with 3rd party systems such as %s, requires a Pro license."
|
6271 |
msgstr ""
|
6272 |
|
6273 |
-
#: src/lib/src/Modules/
|
6274 |
-
msgid "
|
6275 |
msgstr ""
|
6276 |
|
6277 |
-
#: src/lib/src/Modules/
|
6278 |
-
msgid "
|
6279 |
msgstr ""
|
6280 |
|
6281 |
-
#: src/lib/src/Modules/
|
6282 |
msgid ""
|
6283 |
-
"
|
6284 |
-
"
|
6285 |
msgstr ""
|
6286 |
|
6287 |
-
#: src/lib/src/Modules/
|
6288 |
-
msgid "
|
|
|
|
|
6289 |
msgstr ""
|
6290 |
|
6291 |
-
#: src/lib/src/Modules/
|
6292 |
-
msgid "
|
6293 |
msgstr ""
|
6294 |
|
6295 |
-
#: src/lib/src/Modules/
|
6296 |
-
msgid "
|
6297 |
msgstr ""
|
6298 |
|
6299 |
-
#: src/lib/src/Modules/
|
6300 |
-
msgid ""
|
6301 |
-
"Important: This is experimental. Please contact support for further "
|
6302 |
-
"assistance."
|
6303 |
msgstr ""
|
6304 |
|
6305 |
-
#: src/lib/src/Modules/
|
6306 |
-
msgid "
|
6307 |
msgstr ""
|
6308 |
|
6309 |
-
#: src/lib/src/Modules/
|
6310 |
-
msgid ""
|
6311 |
-
"Enter The Selectors Of The 3rd Party Login Forms For Use With AntiBot JS"
|
6312 |
msgstr ""
|
6313 |
|
6314 |
-
#: src/lib/src/Modules/
|
6315 |
-
msgid "
|
6316 |
msgstr ""
|
6317 |
|
6318 |
-
#: src/lib/src/Modules/
|
6319 |
-
msgid "
|
6320 |
msgstr ""
|
6321 |
|
6322 |
-
#: src/lib/src/Modules/
|
6323 |
-
msgid "
|
|
|
6324 |
msgstr ""
|
6325 |
|
6326 |
-
#: src/lib/src/Modules/
|
6327 |
-
msgid "
|
6328 |
msgstr ""
|
6329 |
|
6330 |
-
#: src/lib/src/Modules/
|
6331 |
-
msgid "
|
6332 |
msgstr ""
|
6333 |
|
6334 |
-
#: src/lib/src/Modules/
|
6335 |
-
msgid "
|
6336 |
msgstr ""
|
6337 |
|
6338 |
-
#: src/lib/src/Modules/
|
6339 |
msgid ""
|
6340 |
-
"
|
6341 |
-
"
|
6342 |
msgstr ""
|
6343 |
|
6344 |
-
#: src/lib/src/Modules/
|
6345 |
-
msgid "
|
6346 |
msgstr ""
|
6347 |
|
6348 |
-
#: src/lib/src/Modules/
|
6349 |
-
msgid "User
|
6350 |
msgstr ""
|
6351 |
|
6352 |
-
#: src/lib/src/Modules/
|
6353 |
-
msgid "
|
6354 |
msgstr ""
|
6355 |
|
6356 |
-
#: src/lib/src/Modules/
|
|
|
6357 |
msgid ""
|
6358 |
-
"
|
6359 |
-
"
|
6360 |
msgstr ""
|
6361 |
|
6362 |
-
#: src/lib/src/Modules/
|
6363 |
-
msgid "
|
6364 |
msgstr ""
|
6365 |
|
6366 |
-
#: src/lib/src/Modules/
|
6367 |
-
msgid "
|
6368 |
msgstr ""
|
6369 |
|
6370 |
-
#: src/lib/src/Modules/
|
6371 |
msgid ""
|
6372 |
-
"
|
6373 |
-
"Yubikey Authentication"
|
6374 |
msgstr ""
|
6375 |
|
6376 |
-
#: src/lib/src/Modules/
|
6377 |
-
msgid "
|
6378 |
msgstr ""
|
6379 |
|
6380 |
-
#: src/lib/src/Modules/
|
6381 |
-
msgid "
|
6382 |
msgstr ""
|
6383 |
|
6384 |
-
#: src/lib/src/Modules/
|
6385 |
msgid ""
|
6386 |
-
"
|
6387 |
-
"
|
6388 |
msgstr ""
|
6389 |
|
6390 |
-
#: src/lib/src/Modules/
|
6391 |
-
msgid ""
|
6392 |
-
"Please review the info link on how to obtain your own Yubikey App ID and API "
|
6393 |
-
"Key."
|
6394 |
msgstr ""
|
6395 |
|
6396 |
-
#: src/lib/src/Modules/
|
6397 |
-
msgid "
|
6398 |
msgstr ""
|
6399 |
|
6400 |
-
#: src/lib/src/Modules/
|
6401 |
-
msgid "
|
6402 |
msgstr ""
|
6403 |
|
6404 |
-
#: src/lib/src/Modules/
|
6405 |
msgid ""
|
6406 |
-
"
|
6407 |
-
"
|
6408 |
msgstr ""
|
6409 |
|
6410 |
-
#: src/lib/src/Modules/
|
6411 |
-
msgid ""
|
6412 |
-
"Please review the info link on how to get your own Yubikey App ID and API "
|
6413 |
-
"Key."
|
6414 |
msgstr ""
|
6415 |
|
6416 |
-
#: src/lib/src/Modules/
|
6417 |
-
msgid "
|
6418 |
msgstr ""
|
6419 |
|
6420 |
-
#: src/lib/src/Modules/
|
6421 |
-
msgid ""
|
6422 |
-
"This method for Yubikeys is no longer supported. Please see your user profile"
|
6423 |
msgstr ""
|
6424 |
|
6425 |
-
#: src/lib/src/Modules/
|
6426 |
-
msgid "
|
6427 |
msgstr ""
|
6428 |
|
6429 |
-
#: src/lib/src/Modules/
|
6430 |
-
msgid "
|
6431 |
msgstr ""
|
6432 |
|
6433 |
-
#: src/lib/src/Modules/
|
6434 |
-
msgid ""
|
6435 |
-
|
6436 |
-
|
|
|
|
|
6437 |
msgstr ""
|
6438 |
|
6439 |
-
#: src/lib/src/Modules/
|
6440 |
msgid ""
|
6441 |
-
"
|
6442 |
-
"provide the first 12 characters of the yubikey."
|
6443 |
msgstr ""
|
6444 |
|
6445 |
-
#: src/lib/src/Modules/
|
6446 |
-
msgid "
|
6447 |
msgstr ""
|
6448 |
|
6449 |
-
#: src/lib/src/Modules/
|
6450 |
-
msgid "
|
6451 |
msgstr ""
|
6452 |
|
6453 |
-
#: src/lib/src/Modules/
|
6454 |
msgid ""
|
6455 |
-
"
|
6456 |
-
"
|
6457 |
msgstr ""
|
6458 |
|
6459 |
-
#: src/lib/src/Modules/
|
6460 |
-
msgid "
|
6461 |
msgstr ""
|
6462 |
|
6463 |
-
#: src/lib/src/Modules/
|
6464 |
-
|
|
|
6465 |
msgstr ""
|
6466 |
|
6467 |
-
#: src/lib/src/Modules/
|
6468 |
msgid ""
|
6469 |
-
"
|
6470 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6471 |
msgstr ""
|
6472 |
|
6473 |
-
#: src/lib/src/Modules/Plugin/
|
6474 |
#, php-format
|
6475 |
-
msgid "
|
6476 |
msgstr ""
|
6477 |
|
6478 |
-
#: src/lib/src/Modules/Plugin/
|
6479 |
#, php-format
|
6480 |
-
msgid "
|
6481 |
msgstr ""
|
6482 |
|
6483 |
-
#: src/lib/src/Modules/Plugin/
|
6484 |
-
msgid "
|
6485 |
msgstr ""
|
6486 |
|
6487 |
-
#: src/lib/src/Modules/Plugin/
|
6488 |
-
|
|
|
6489 |
msgstr ""
|
6490 |
|
6491 |
-
#: src/lib/src/Modules/Plugin/
|
6492 |
-
msgid "
|
6493 |
msgstr ""
|
6494 |
|
6495 |
-
#: src/lib/src/Modules/Plugin/
|
6496 |
-
msgid "
|
6497 |
msgstr ""
|
6498 |
|
6499 |
-
#: src/lib/src/Modules/Plugin/
|
6500 |
-
|
|
|
|
|
6501 |
msgstr ""
|
6502 |
|
6503 |
-
#: src/lib/src/Modules/Plugin/
|
6504 |
#, php-format
|
6505 |
-
msgid "
|
6506 |
msgstr ""
|
6507 |
|
6508 |
-
#: src/lib/src/Modules/Plugin/
|
6509 |
-
msgid "
|
6510 |
msgstr ""
|
6511 |
|
6512 |
-
#: src/lib/src/Modules/Plugin/
|
6513 |
-
msgid "
|
6514 |
msgstr ""
|
6515 |
|
6516 |
-
#: src/lib/src/Modules/Plugin/
|
6517 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6518 |
msgstr ""
|
6519 |
|
6520 |
-
#: src/lib/src/Modules/Plugin/
|
6521 |
-
|
6522 |
-
msgid "
|
6523 |
msgstr ""
|
6524 |
|
6525 |
-
#: src/lib/src/Modules/Plugin/
|
6526 |
-
|
6527 |
-
msgid ""
|
6528 |
-
"The welcome wizard will help you get setup quickly and become familiar with "
|
6529 |
-
"some of the core %s features"
|
6530 |
msgstr ""
|
6531 |
|
6532 |
-
#: src/lib/src/Modules/Plugin/
|
6533 |
-
msgid "
|
6534 |
msgstr ""
|
6535 |
|
6536 |
-
#: src/lib/src/Modules/Plugin/
|
6537 |
-
|
6538 |
-
msgid "Make %s even better by sharing usage info?"
|
6539 |
msgstr ""
|
6540 |
|
6541 |
-
#: src/lib/src/Modules/Plugin/
|
6542 |
-
|
6543 |
-
msgid "
|
6544 |
msgstr ""
|
6545 |
|
6546 |
-
#: src/lib/src/Modules/Plugin/
|
6547 |
-
msgid "
|
6548 |
msgstr ""
|
6549 |
|
6550 |
-
#: src/lib/src/Modules/Plugin/
|
6551 |
msgid ""
|
6552 |
-
"
|
6553 |
-
"your site."
|
6554 |
msgstr ""
|
6555 |
|
6556 |
-
#: src/lib/src/Modules/Plugin/
|
6557 |
-
msgid "
|
6558 |
msgstr ""
|
6559 |
|
6560 |
-
#: src/lib/src/Modules/Plugin/
|
6561 |
-
msgid "
|
6562 |
msgstr ""
|
6563 |
|
6564 |
-
#: src/lib/src/Modules/Plugin/
|
6565 |
-
|
|
|
6566 |
msgstr ""
|
6567 |
|
6568 |
-
#: src/lib/src/Modules/Plugin/
|
6569 |
-
msgid "
|
6570 |
msgstr ""
|
6571 |
|
6572 |
-
#: src/lib/src/Modules/Plugin/
|
6573 |
-
msgid "
|
6574 |
msgstr ""
|
6575 |
|
6576 |
-
#: src/lib/src/Modules/Plugin/
|
6577 |
-
msgid "
|
6578 |
msgstr ""
|
6579 |
|
6580 |
-
#: src/lib/src/Modules/Plugin/
|
6581 |
-
msgid "
|
6582 |
msgstr ""
|
6583 |
|
6584 |
-
#: src/lib/src/Modules/Plugin/
|
6585 |
-
|
|
|
6586 |
msgstr ""
|
6587 |
|
6588 |
-
#: src/lib/src/Modules/Plugin/
|
6589 |
-
msgid "
|
6590 |
msgstr ""
|
6591 |
|
6592 |
-
#: src/lib/src/Modules/Plugin/
|
6593 |
-
|
6594 |
-
msgid "No items selected."
|
6595 |
msgstr ""
|
6596 |
|
6597 |
-
#: src/lib/src/Modules/Plugin/
|
6598 |
-
|
6599 |
-
msgid "Not a supported action."
|
6600 |
msgstr ""
|
6601 |
|
6602 |
-
#: src/lib/src/Modules/Plugin/
|
6603 |
-
|
6604 |
-
msgid "Selected items were deleted."
|
6605 |
msgstr ""
|
6606 |
|
6607 |
-
#: src/lib/src/Modules/Plugin/
|
6608 |
-
msgid "
|
6609 |
msgstr ""
|
6610 |
|
6611 |
-
#: src/lib/src/Modules/Plugin/
|
6612 |
-
msgid "
|
6613 |
msgstr ""
|
6614 |
|
6615 |
-
#: src/lib/src/Modules/Plugin/
|
6616 |
-
msgid "
|
6617 |
msgstr ""
|
6618 |
|
6619 |
-
#: src/lib/src/Modules/Plugin/
|
6620 |
-
msgid "
|
6621 |
msgstr ""
|
6622 |
|
6623 |
-
#: src/lib/src/Modules/Plugin/
|
6624 |
-
|
6625 |
-
msgid "Please check the box to confirm your intent to overwrite settings"
|
6626 |
msgstr ""
|
6627 |
|
6628 |
-
#: src/lib/src/Modules/Plugin/
|
6629 |
-
msgid "
|
6630 |
msgstr ""
|
6631 |
|
6632 |
-
#: src/lib/src/Modules/Plugin/
|
6633 |
-
|
|
|
6634 |
msgstr ""
|
6635 |
|
6636 |
-
#: src/lib/src/Modules/Plugin/
|
6637 |
-
msgid "
|
6638 |
msgstr ""
|
6639 |
|
6640 |
-
#: src/lib/src/Modules/Plugin/
|
6641 |
-
msgid "
|
6642 |
msgstr ""
|
6643 |
|
6644 |
-
#: src/lib/src/Modules/Plugin/
|
6645 |
-
msgid "
|
6646 |
msgstr ""
|
6647 |
|
6648 |
-
#: src/lib/src/Modules/Plugin/
|
6649 |
-
|
6650 |
-
msgid "%s Plugin Badge"
|
6651 |
msgstr ""
|
6652 |
|
6653 |
-
#: src/lib/src/Modules/Plugin/
|
6654 |
-
|
6655 |
-
msgid ""
|
6656 |
-
"You can now help spread the word about the %s plugin anywhere on your site"
|
6657 |
msgstr ""
|
6658 |
|
6659 |
-
#: src/lib/src/Modules/Plugin/
|
6660 |
-
msgid "
|
6661 |
msgstr ""
|
6662 |
|
6663 |
-
#: src/lib/src/Modules/Plugin/
|
6664 |
-
|
6665 |
-
msgid "This Site Is Protected By %s"
|
6666 |
msgstr ""
|
6667 |
|
6668 |
-
#: src/lib/src/Modules/Plugin/
|
6669 |
-
msgid "
|
6670 |
msgstr ""
|
6671 |
|
6672 |
-
#: src/lib/src/Modules/Plugin/
|
6673 |
-
msgid "
|
6674 |
msgstr ""
|
6675 |
|
6676 |
-
#: src/lib/src/Modules/Plugin/
|
6677 |
-
msgid "
|
6678 |
msgstr ""
|
6679 |
|
6680 |
-
#: src/lib/src/Modules/Plugin/
|
6681 |
-
msgid "
|
6682 |
msgstr ""
|
6683 |
|
6684 |
-
#: src/lib/src/Modules/Plugin/
|
6685 |
#, php-format
|
6686 |
-
msgid "
|
6687 |
msgstr ""
|
6688 |
|
6689 |
-
#: src/lib/src/Modules/Plugin/
|
6690 |
-
|
6691 |
-
|
|
|
6692 |
msgstr ""
|
6693 |
|
6694 |
-
#: src/lib/src/Modules/Plugin/
|
6695 |
-
|
6696 |
-
msgid "Options imported from site: %s"
|
6697 |
msgstr ""
|
6698 |
|
6699 |
-
#: src/lib/src/Modules/Plugin/
|
6700 |
-
|
6701 |
-
msgid "Site added to export white list: %s"
|
6702 |
msgstr ""
|
6703 |
|
6704 |
-
#: src/lib/src/Modules/Plugin/
|
6705 |
#, php-format
|
6706 |
-
msgid "
|
6707 |
msgstr ""
|
6708 |
|
6709 |
-
#: src/lib/src/Modules/Plugin/
|
6710 |
-
|
6711 |
-
msgid "Master Site URL set: %s"
|
6712 |
msgstr ""
|
6713 |
|
6714 |
-
#: src/lib/src/Modules/Plugin/
|
6715 |
-
msgid "
|
6716 |
msgstr ""
|
6717 |
|
6718 |
-
#: src/lib/src/Modules/Plugin/
|
6719 |
-
msgid "
|
6720 |
msgstr ""
|
6721 |
|
6722 |
-
#: src/lib/src/Modules/Plugin/
|
6723 |
-
|
6724 |
-
msgid "Plugin Defaults"
|
6725 |
msgstr ""
|
6726 |
|
6727 |
-
#: src/lib/src/Modules/Plugin/
|
6728 |
-
msgid "
|
|
|
|
|
6729 |
msgstr ""
|
6730 |
|
6731 |
-
#: src/lib/src/Modules/Plugin/
|
6732 |
-
msgid ""
|
6733 |
-
"Automatically import options, and deploy configurations across your entire "
|
6734 |
-
"network."
|
6735 |
msgstr ""
|
6736 |
|
6737 |
-
#: src/lib/src/Modules/Plugin/
|
6738 |
-
msgid "
|
6739 |
msgstr ""
|
6740 |
|
6741 |
-
#: src/lib/src/Modules/Plugin/
|
6742 |
-
msgid "
|
6743 |
msgstr ""
|
6744 |
|
6745 |
-
#: src/lib/src/Modules/Plugin/
|
6746 |
-
|
|
|
6747 |
msgstr ""
|
6748 |
|
6749 |
-
#: src/lib/src/Modules/Plugin/
|
6750 |
#, php-format
|
6751 |
-
msgid "
|
6752 |
msgstr ""
|
6753 |
|
6754 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6755 |
-
msgid "
|
6756 |
msgstr ""
|
6757 |
|
6758 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6759 |
-
|
|
|
6760 |
msgstr ""
|
6761 |
|
6762 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6763 |
-
|
6764 |
-
msgid "Invisible Google reCAPTCHA is available with %s Pro."
|
6765 |
msgstr ""
|
6766 |
|
6767 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6768 |
-
|
6769 |
-
msgid "Duo Security"
|
6770 |
msgstr ""
|
6771 |
|
6772 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6773 |
-
|
6774 |
-
msgid "Enable %s Protection"
|
6775 |
msgstr ""
|
6776 |
|
6777 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6778 |
-
msgid "
|
6779 |
msgstr ""
|
6780 |
|
6781 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6782 |
-
msgid ""
|
6783 |
-
"You can keep the security plugin activated, but temporarily disable all "
|
6784 |
-
"protection it provides."
|
6785 |
msgstr ""
|
6786 |
|
6787 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6788 |
-
msgid "
|
6789 |
msgstr ""
|
6790 |
|
6791 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6792 |
-
msgid "
|
6793 |
msgstr ""
|
6794 |
|
6795 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6796 |
-
msgid ""
|
6797 |
-
"Allows us to gather information on statistics and features in-use across our "
|
6798 |
-
"client installations."
|
6799 |
msgstr ""
|
6800 |
|
6801 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6802 |
-
msgid ""
|
6803 |
-
"This information is strictly anonymous and contains no personally, or "
|
6804 |
-
"otherwise, identifiable data."
|
6805 |
msgstr ""
|
6806 |
|
6807 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6808 |
-
msgid "
|
6809 |
msgstr ""
|
6810 |
|
6811 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6812 |
-
msgid "
|
6813 |
msgstr ""
|
6814 |
|
6815 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6816 |
-
msgid "
|
6817 |
msgstr ""
|
6818 |
|
6819 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6820 |
-
msgid ""
|
6821 |
-
"There are many possible ways to detect visitor IP addresses. If Auto-Detect "
|
6822 |
-
"is not working, please select yours from the list."
|
6823 |
msgstr ""
|
6824 |
|
6825 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6826 |
-
msgid ""
|
6827 |
-
"If the option you select becomes unavailable, we will revert to auto "
|
6828 |
-
"detection."
|
6829 |
msgstr ""
|
6830 |
|
6831 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6832 |
-
|
6833 |
-
msgid "Current source is: %s (%s)"
|
6834 |
msgstr ""
|
6835 |
|
6836 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6837 |
-
msgid "
|
6838 |
msgstr ""
|
6839 |
|
6840 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6841 |
-
msgid "
|
6842 |
msgstr ""
|
6843 |
|
6844 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6845 |
-
|
6846 |
-
msgid "If this is empty, it will default to the blog admin email address: %s"
|
6847 |
msgstr ""
|
6848 |
|
6849 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6850 |
-
msgid "
|
6851 |
msgstr ""
|
6852 |
|
6853 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6854 |
-
msgid "
|
6855 |
msgstr ""
|
6856 |
|
6857 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6858 |
-
msgid ""
|
6859 |
-
"Disable this option to hide certain plugin admin notices about available "
|
6860 |
-
"updates and post-update notices."
|
6861 |
msgstr ""
|
6862 |
|
6863 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6864 |
-
|
|
|
6865 |
msgstr ""
|
6866 |
|
6867 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6868 |
-
msgid "
|
6869 |
msgstr ""
|
6870 |
|
6871 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6872 |
-
msgid ""
|
6873 |
-
"Enabling this option helps support the plugin by spreading the word about it "
|
6874 |
-
"on your website."
|
6875 |
msgstr ""
|
6876 |
|
6877 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6878 |
-
msgid ""
|
6879 |
-
"The plugin badge also lets visitors know your are taking your website "
|
6880 |
-
"security seriously."
|
6881 |
msgstr ""
|
6882 |
|
6883 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6884 |
-
msgid "
|
|
|
|
|
6885 |
msgstr ""
|
6886 |
|
6887 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6888 |
-
msgid "
|
6889 |
msgstr ""
|
6890 |
|
6891 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6892 |
-
msgid "
|
|
|
|
|
6893 |
msgstr ""
|
6894 |
|
6895 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6896 |
-
msgid "
|
6897 |
msgstr ""
|
6898 |
|
6899 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6900 |
-
msgid "
|
6901 |
msgstr ""
|
6902 |
|
6903 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6904 |
-
msgid "
|
6905 |
msgstr ""
|
6906 |
|
6907 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6908 |
-
msgid ""
|
6909 |
-
"Enable this if you need XML-RPC functionality e.g. if you use the WordPress "
|
6910 |
-
"iPhone/Android App."
|
6911 |
msgstr ""
|
6912 |
|
6913 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6914 |
-
|
|
|
6915 |
msgstr ""
|
6916 |
|
6917 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6918 |
-
msgid "
|
6919 |
msgstr ""
|
6920 |
|
6921 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6922 |
-
|
|
|
6923 |
msgstr ""
|
6924 |
|
6925 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6926 |
-
|
|
|
6927 |
msgstr ""
|
6928 |
|
6929 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6930 |
-
msgid "
|
|
|
|
|
6931 |
msgstr ""
|
6932 |
|
6933 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6934 |
-
msgid "
|
6935 |
msgstr ""
|
6936 |
|
6937 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6938 |
-
msgid "
|
6939 |
msgstr ""
|
6940 |
|
6941 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6942 |
-
msgid "
|
6943 |
msgstr ""
|
6944 |
|
6945 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6946 |
-
|
|
|
6947 |
msgstr ""
|
6948 |
|
6949 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6950 |
-
msgid "
|
6951 |
msgstr ""
|
6952 |
|
6953 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6954 |
-
msgid "
|
6955 |
msgstr ""
|
6956 |
|
6957 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6958 |
-
msgid "
|
6959 |
msgstr ""
|
6960 |
|
6961 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6962 |
-
|
|
|
6963 |
msgstr ""
|
6964 |
|
6965 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6966 |
-
|
6967 |
-
"
|
6968 |
-
"those from the Master Import Site."
|
6969 |
msgstr ""
|
6970 |
|
6971 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6972 |
-
|
|
|
6973 |
msgstr ""
|
6974 |
|
6975 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6976 |
-
msgid "
|
6977 |
msgstr ""
|
6978 |
|
6979 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6980 |
msgid ""
|
6981 |
-
"
|
6982 |
-
"
|
6983 |
msgstr ""
|
6984 |
|
6985 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6986 |
-
|
6987 |
-
#: src/processors/plugin_importexport.php:63
|
6988 |
-
msgid "Secret Key"
|
6989 |
msgstr ""
|
6990 |
|
6991 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
6992 |
-
msgid "
|
6993 |
msgstr ""
|
6994 |
|
6995 |
#: src/lib/src/Modules/Plugin/Strings.php:229
|
6996 |
-
msgid ""
|
6997 |
-
"Keep this Secret Key private as it will allow the import and export of "
|
6998 |
-
"options."
|
6999 |
msgstr ""
|
7000 |
|
7001 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7002 |
-
msgid "
|
7003 |
msgstr ""
|
7004 |
|
7005 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7006 |
-
msgid "
|
|
|
|
|
|
|
|
|
7007 |
msgstr ""
|
7008 |
|
7009 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7010 |
-
msgid "
|
|
|
|
|
7011 |
msgstr ""
|
7012 |
|
7013 |
#: src/lib/src/Modules/Plugin/Strings.php:239
|
7014 |
-
msgid "
|
|
|
|
|
7015 |
msgstr ""
|
7016 |
|
7017 |
#: src/lib/src/Modules/Plugin/Strings.php:240
|
7018 |
-
msgid "
|
7019 |
msgstr ""
|
7020 |
|
7021 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7022 |
-
msgid "
|
7023 |
msgstr ""
|
7024 |
|
7025 |
#: src/lib/src/Modules/Plugin/Strings.php:246
|
7026 |
-
msgid "
|
7027 |
msgstr ""
|
7028 |
|
7029 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7030 |
-
msgid "
|
|
|
|
|
7031 |
msgstr ""
|
7032 |
|
7033 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7034 |
-
msgid "
|
7035 |
msgstr ""
|
7036 |
|
7037 |
#: src/lib/src/Modules/Plugin/Strings.php:254
|
7038 |
-
msgid "
|
7039 |
msgstr ""
|
7040 |
|
7041 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7042 |
-
msgid "
|
|
|
|
|
7043 |
msgstr ""
|
7044 |
|
7045 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7046 |
-
msgid "
|
|
|
|
|
7047 |
msgstr ""
|
7048 |
|
7049 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7050 |
-
|
7051 |
-
|
7052 |
-
|
7053 |
msgstr ""
|
7054 |
|
7055 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7056 |
-
|
7057 |
-
#: src/lib/src/Tables/Render/Base.php:203
|
7058 |
-
#: src/lib/src/Tables/Render/ScanMal.php:35
|
7059 |
-
#: src/lib/src/Tables/Render/ScanUfc.php:29
|
7060 |
-
msgid "Delete"
|
7061 |
msgstr ""
|
7062 |
|
7063 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7064 |
-
|
7065 |
-
msgid "
|
7066 |
msgstr ""
|
7067 |
|
7068 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7069 |
-
msgid "
|
|
|
|
|
7070 |
msgstr ""
|
7071 |
|
7072 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7073 |
-
msgid "
|
7074 |
msgstr ""
|
7075 |
|
7076 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7077 |
-
msgid "
|
7078 |
msgstr ""
|
7079 |
|
7080 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7081 |
-
msgid "
|
|
|
|
|
7082 |
msgstr ""
|
7083 |
|
7084 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7085 |
-
|
|
|
|
|
7086 |
msgstr ""
|
7087 |
|
7088 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7089 |
-
msgid "
|
7090 |
msgstr ""
|
7091 |
|
7092 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7093 |
-
msgid "
|
7094 |
msgstr ""
|
7095 |
|
7096 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7097 |
-
msgid "
|
7098 |
msgstr ""
|
7099 |
|
7100 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7101 |
-
msgid "
|
|
|
|
|
7102 |
msgstr ""
|
7103 |
|
7104 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7105 |
-
msgid "
|
7106 |
msgstr ""
|
7107 |
|
7108 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7109 |
-
msgid "
|
7110 |
msgstr ""
|
7111 |
|
7112 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7113 |
-
msgid "
|
|
|
|
|
7114 |
msgstr ""
|
7115 |
|
7116 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7117 |
-
msgid "
|
|
|
|
|
7118 |
msgstr ""
|
7119 |
|
7120 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7121 |
-
msgid "
|
|
|
|
|
7122 |
msgstr ""
|
7123 |
|
7124 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7125 |
-
msgid "
|
7126 |
msgstr ""
|
7127 |
|
7128 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7129 |
-
msgid "
|
7130 |
msgstr ""
|
7131 |
|
7132 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7133 |
-
msgid "
|
7134 |
msgstr ""
|
7135 |
|
7136 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7137 |
-
msgid "
|
7138 |
msgstr ""
|
7139 |
|
7140 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7141 |
-
msgid "
|
7142 |
msgstr ""
|
7143 |
|
7144 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7145 |
-
msgid "
|
7146 |
msgstr ""
|
7147 |
|
7148 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7149 |
-
msgid "
|
7150 |
msgstr ""
|
7151 |
|
7152 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7153 |
-
msgid "
|
7154 |
msgstr ""
|
7155 |
|
7156 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7157 |
-
msgid "
|
7158 |
msgstr ""
|
7159 |
|
7160 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7161 |
-
msgid "
|
|
|
|
|
7162 |
msgstr ""
|
7163 |
|
7164 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7165 |
-
msgid "
|
|
|
|
|
7166 |
msgstr ""
|
7167 |
|
7168 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7169 |
-
msgid "
|
|
|
|
|
7170 |
msgstr ""
|
7171 |
|
7172 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7173 |
-
msgid "
|
7174 |
msgstr ""
|
7175 |
|
7176 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7177 |
-
msgid "
|
7178 |
msgstr ""
|
7179 |
|
7180 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7181 |
-
msgid "
|
7182 |
msgstr ""
|
7183 |
|
7184 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7185 |
-
msgid "
|
|
|
|
|
7186 |
msgstr ""
|
7187 |
|
7188 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7189 |
-
msgid "
|
7190 |
msgstr ""
|
7191 |
|
7192 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7193 |
-
msgid "
|
7194 |
msgstr ""
|
7195 |
|
7196 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7197 |
-
msgid "
|
7198 |
msgstr ""
|
7199 |
|
7200 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7201 |
-
msgid "
|
7202 |
msgstr ""
|
7203 |
|
7204 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7205 |
-
msgid "
|
|
|
|
|
|
|
|
|
7206 |
msgstr ""
|
7207 |
|
7208 |
#: src/lib/src/Modules/Plugin/Strings.php:346
|
7209 |
-
msgid "
|
7210 |
msgstr ""
|
7211 |
|
7212 |
#: src/lib/src/Modules/Plugin/Strings.php:347
|
7213 |
-
msgid "
|
7214 |
msgstr ""
|
7215 |
|
7216 |
#: src/lib/src/Modules/Plugin/Strings.php:348
|
7217 |
-
msgid "
|
7218 |
-
msgstr ""
|
7219 |
-
|
7220 |
-
#: src/lib/src/Modules/Plugin/Strings.php:349
|
7221 |
-
msgid "On: Block All iFrames"
|
7222 |
-
msgstr ""
|
7223 |
-
|
7224 |
-
#: src/lib/src/Modules/Plugin/Strings.php:350
|
7225 |
-
msgid "Default: Full Referrer URL (aka 'Unsafe URL')"
|
7226 |
-
msgstr ""
|
7227 |
-
|
7228 |
-
#: src/lib/src/Modules/Plugin/Strings.php:351
|
7229 |
-
msgid "No Referrer"
|
7230 |
-
msgstr ""
|
7231 |
-
|
7232 |
-
#: src/lib/src/Modules/Plugin/Strings.php:352
|
7233 |
-
msgid "No Referrer When Downgrade"
|
7234 |
msgstr ""
|
7235 |
|
7236 |
#: src/lib/src/Modules/Plugin/Strings.php:353
|
7237 |
-
msgid "
|
7238 |
msgstr ""
|
7239 |
|
7240 |
#: src/lib/src/Modules/Plugin/Strings.php:354
|
7241 |
-
msgid "
|
7242 |
-
msgstr ""
|
7243 |
-
|
7244 |
-
#: src/lib/src/Modules/Plugin/Strings.php:355
|
7245 |
-
msgid "Strict Origin"
|
7246 |
msgstr ""
|
7247 |
|
7248 |
#: src/lib/src/Modules/Plugin/Strings.php:356
|
7249 |
-
msgid "
|
7250 |
msgstr ""
|
7251 |
|
7252 |
#: src/lib/src/Modules/Plugin/Strings.php:357
|
7253 |
-
msgid "
|
7254 |
msgstr ""
|
7255 |
|
7256 |
#: src/lib/src/Modules/Plugin/Strings.php:358
|
7257 |
-
msgid "
|
7258 |
-
|
7259 |
-
|
7260 |
-
#: src/lib/src/Modules/Plugin/Strings.php:359
|
7261 |
-
msgid "Disabled - Don't Send This Header"
|
7262 |
-
msgstr ""
|
7263 |
-
|
7264 |
-
#: src/lib/src/Modules/Plugin/Strings.php:360
|
7265 |
-
msgid "Minute"
|
7266 |
-
msgstr ""
|
7267 |
-
|
7268 |
-
#: src/lib/src/Modules/Plugin/Strings.php:361
|
7269 |
-
msgid "Hour"
|
7270 |
-
msgstr ""
|
7271 |
-
|
7272 |
-
#: src/lib/src/Modules/Plugin/Strings.php:362
|
7273 |
-
msgid "Day"
|
7274 |
msgstr ""
|
7275 |
|
7276 |
#: src/lib/src/Modules/Plugin/Strings.php:363
|
7277 |
-
msgid "
|
7278 |
msgstr ""
|
7279 |
|
7280 |
#: src/lib/src/Modules/Plugin/Strings.php:364
|
7281 |
-
msgid "
|
7282 |
msgstr ""
|
7283 |
|
7284 |
#: src/lib/src/Modules/Plugin/Strings.php:365
|
7285 |
-
msgid "
|
7286 |
-
|
7287 |
-
|
7288 |
-
#: src/lib/src/Modules/Plugin/Strings.php:366
|
7289 |
-
msgid "Audit Log Only"
|
7290 |
-
msgstr ""
|
7291 |
-
|
7292 |
-
#: src/lib/src/Modules/Plugin/Strings.php:367
|
7293 |
-
msgid "Increment Offense Counter"
|
7294 |
msgstr ""
|
7295 |
|
7296 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7297 |
-
msgid "
|
7298 |
msgstr ""
|
7299 |
|
7300 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7301 |
-
msgid "
|
|
|
|
|
7302 |
msgstr ""
|
7303 |
|
7304 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7305 |
-
msgid "
|
7306 |
msgstr ""
|
7307 |
|
7308 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7309 |
-
msgid "
|
7310 |
msgstr ""
|
7311 |
|
7312 |
#: src/lib/src/Modules/Plugin/Strings.php:381
|
7313 |
-
msgid "
|
7314 |
msgstr ""
|
7315 |
|
7316 |
#: src/lib/src/Modules/Plugin/Strings.php:382
|
7317 |
-
msgid ""
|
7318 |
-
"Any IP addresses on this list will by-pass all Plugin Security Checking."
|
7319 |
msgstr ""
|
7320 |
|
7321 |
#: src/lib/src/Modules/Plugin/Strings.php:384
|
7322 |
-
msgid "
|
7323 |
msgstr ""
|
7324 |
|
7325 |
#: src/lib/src/Modules/Plugin/Strings.php:385
|
7326 |
-
#, php-format
|
7327 |
-
msgid "Recommendation - %s"
|
7328 |
-
msgstr ""
|
7329 |
-
|
7330 |
-
#: src/lib/src/Modules/Plugin/Strings.php:386
|
7331 |
-
msgid "Blacklist"
|
7332 |
-
msgstr ""
|
7333 |
-
|
7334 |
-
#: src/lib/src/Modules/Plugin/Strings.php:387
|
7335 |
-
msgid "Logging"
|
7336 |
-
msgstr ""
|
7337 |
-
|
7338 |
-
#: src/lib/src/Modules/Plugin/Strings.php:388
|
7339 |
-
#, php-format
|
7340 |
-
msgid ""
|
7341 |
-
"User \"%s\" was forcefully logged out as they were not verified by either "
|
7342 |
-
"cookie or IP address (or both)."
|
7343 |
-
msgstr ""
|
7344 |
-
|
7345 |
-
#: src/lib/src/Modules/Plugin/Strings.php:389
|
7346 |
-
#, php-format
|
7347 |
msgid ""
|
7348 |
-
"
|
7349 |
-
|
7350 |
-
|
7351 |
-
#: src/lib/src/Modules/Plugin/Strings.php:390
|
7352 |
-
msgid "Cookie"
|
7353 |
-
msgstr ""
|
7354 |
-
|
7355 |
-
#: src/lib/src/Modules/Plugin/Strings.php:392
|
7356 |
-
#: src/lib/src/Tables/Build/Traffic.php:140
|
7357 |
-
msgid "IP"
|
7358 |
msgstr ""
|
7359 |
|
7360 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7361 |
-
msgid ""
|
7362 |
-
"This will restrict all user login sessions to a single browser. Use this if "
|
7363 |
-
"your users have dynamic IP addresses."
|
7364 |
msgstr ""
|
7365 |
|
7366 |
#: src/lib/src/Modules/Plugin/Strings.php:394
|
7367 |
-
msgid ""
|
7368 |
-
"All users will be required to authenticate their login by email-based two-"
|
7369 |
-
"factor authentication, when logging in from a new IP address"
|
7370 |
-
msgstr ""
|
7371 |
-
|
7372 |
-
#: src/lib/src/Modules/Plugin/Strings.php:395
|
7373 |
-
msgid "2-Factor Auth"
|
7374 |
msgstr ""
|
7375 |
|
7376 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7377 |
-
msgid "
|
7378 |
msgstr ""
|
7379 |
|
7380 |
#: src/lib/src/Modules/Plugin/Strings.php:397
|
7381 |
-
msgid "
|
7382 |
msgstr ""
|
7383 |
|
7384 |
#: src/lib/src/Modules/Plugin/Strings.php:398
|
7385 |
-
|
7386 |
-
"
|
7387 |
-
"default."
|
7388 |
-
msgstr ""
|
7389 |
-
|
7390 |
-
#: src/lib/src/Modules/Plugin/Strings.php:400
|
7391 |
-
msgid "Protect your security plugin not just your WordPress site"
|
7392 |
msgstr ""
|
7393 |
|
7394 |
#: src/lib/src/Modules/Plugin/Strings.php:403
|
7395 |
-
msgid "Get a view on what happens on your site, when it happens"
|
7396 |
-
msgstr ""
|
7397 |
-
|
7398 |
#: src/lib/src/Modules/Plugin/Strings.php:404
|
7399 |
-
msgid "
|
7400 |
msgstr ""
|
7401 |
|
7402 |
#: src/lib/src/Modules/Plugin/Strings.php:406
|
7403 |
-
msgid "
|
7404 |
msgstr ""
|
7405 |
|
7406 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7407 |
-
msgid "
|
7408 |
msgstr ""
|
7409 |
|
7410 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7411 |
-
msgid "
|
7412 |
msgstr ""
|
7413 |
|
7414 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7415 |
-
msgid "
|
|
|
|
|
7416 |
msgstr ""
|
7417 |
|
7418 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7419 |
-
msgid "
|
7420 |
msgstr ""
|
7421 |
|
7422 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7423 |
-
msgid "
|
7424 |
msgstr ""
|
7425 |
|
7426 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7427 |
-
|
|
|
|
|
7428 |
msgstr ""
|
7429 |
|
7430 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7431 |
-
|
|
|
7432 |
msgstr ""
|
7433 |
|
7434 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7435 |
-
msgid ""
|
7436 |
-
"Block brute force attacks and secure user identities with Two-Factor "
|
7437 |
-
"Authentication"
|
7438 |
msgstr ""
|
7439 |
|
7440 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7441 |
-
msgid "
|
7442 |
msgstr ""
|
7443 |
|
7444 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7445 |
-
msgid "
|
7446 |
msgstr ""
|
7447 |
|
7448 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7449 |
-
msgid "
|
7450 |
msgstr ""
|
7451 |
|
7452 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7453 |
-
msgid "
|
7454 |
msgstr ""
|
7455 |
|
7456 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7457 |
-
msgid "
|
7458 |
msgstr ""
|
7459 |
|
7460 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7461 |
-
msgid "
|
7462 |
msgstr ""
|
7463 |
|
7464 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7465 |
-
msgid "
|
7466 |
msgstr ""
|
7467 |
|
7468 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7469 |
-
msgid ""
|
7470 |
-
"Get true user sessions and control account sharing, session duration and "
|
7471 |
-
"timeouts"
|
7472 |
msgstr ""
|
7473 |
|
7474 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7475 |
-
msgid "
|
7476 |
msgstr ""
|
7477 |
|
7478 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7479 |
-
msgid "
|
7480 |
msgstr ""
|
7481 |
|
7482 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7483 |
-
msgid "
|
7484 |
msgstr ""
|
7485 |
|
7486 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7487 |
-
msgid "
|
7488 |
msgstr ""
|
7489 |
|
7490 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7491 |
-
msgid "
|
7492 |
msgstr ""
|
7493 |
|
7494 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7495 |
-
msgid "
|
7496 |
msgstr ""
|
7497 |
|
7498 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7499 |
-
msgid "
|
7500 |
msgstr ""
|
7501 |
|
7502 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7503 |
-
msgid "
|
7504 |
msgstr ""
|
7505 |
|
7506 |
-
#: src/lib/src/Modules/Plugin/Strings.php:
|
7507 |
-
msgid "
|
7508 |
msgstr ""
|
7509 |
|
7510 |
-
#: src/lib/src/Modules/
|
7511 |
-
|
7512 |
-
#, php-format
|
7513 |
-
msgid "%s Security Restrictions Applied"
|
7514 |
msgstr ""
|
7515 |
|
7516 |
-
#: src/lib/src/Modules/
|
7517 |
-
msgid ""
|
7518 |
-
"Altering certain options has been restricted by your WordPress security "
|
7519 |
-
"administrator."
|
7520 |
msgstr ""
|
7521 |
|
7522 |
-
#: src/lib/src/Modules/
|
7523 |
-
msgid ""
|
7524 |
-
"Repeated failed attempts to authenticate will probably lock you out of this "
|
7525 |
-
"site."
|
7526 |
msgstr ""
|
7527 |
|
7528 |
-
#: src/lib/src/Modules/
|
7529 |
-
msgid "
|
7530 |
msgstr ""
|
7531 |
|
7532 |
-
#: src/lib/src/Modules/
|
7533 |
-
|
7534 |
-
#, php-format
|
7535 |
-
msgid "Go here to manage settings and authenticate with the %s plugin."
|
7536 |
msgstr ""
|
7537 |
|
7538 |
-
#: src/lib/src/Modules/
|
7539 |
-
msgid ""
|
7540 |
-
"Editing existing administrators, promoting existing users to the "
|
7541 |
-
"administrator role, or deleting administrator users is currently restricted."
|
7542 |
msgstr ""
|
7543 |
|
7544 |
-
#: src/lib/src/Modules/
|
7545 |
-
msgid ""
|
7546 |
-
"Please authenticate with the Security Admin system before attempting any "
|
7547 |
-
"administrator user modifications."
|
7548 |
msgstr ""
|
7549 |
|
7550 |
-
#: src/lib/src/Modules/
|
7551 |
-
|
7552 |
-
#: src/processors/admin_access_restriction.php:494
|
7553 |
-
msgid "Security Admin Login"
|
7554 |
msgstr ""
|
7555 |
|
7556 |
-
#: src/lib/src/Modules/
|
7557 |
-
msgid "
|
7558 |
msgstr ""
|
7559 |
|
7560 |
-
#: src/lib/src/Modules/
|
7561 |
-
msgid "
|
7562 |
msgstr ""
|
7563 |
|
7564 |
-
#: src/lib/src/Modules/
|
7565 |
-
msgid "
|
7566 |
msgstr ""
|
7567 |
|
7568 |
-
#: src/lib/src/Modules/
|
7569 |
-
msgid "
|
7570 |
msgstr ""
|
7571 |
|
7572 |
-
#: src/lib/src/Modules/
|
7573 |
-
msgid "
|
7574 |
msgstr ""
|
7575 |
|
7576 |
-
#: src/lib/src/Modules/
|
7577 |
-
|
7578 |
-
msgid "Attempts remaining: %s."
|
7579 |
msgstr ""
|
7580 |
|
7581 |
-
#: src/lib/src/Modules/
|
7582 |
-
msgid "
|
7583 |
msgstr ""
|
7584 |
|
7585 |
-
#: src/lib/src/Modules/
|
7586 |
-
msgid "
|
7587 |
msgstr ""
|
7588 |
|
7589 |
-
#: src/lib/src/Modules/
|
7590 |
-
msgid "
|
7591 |
msgstr ""
|
7592 |
|
7593 |
-
#: src/lib/src/Modules/
|
7594 |
-
msgid "
|
7595 |
msgstr ""
|
7596 |
|
7597 |
-
#: src/lib/src/Modules/
|
7598 |
-
|
7599 |
-
msgid ""
|
7600 |
-
"Restricts access to this plugin preventing unauthorized changes to your "
|
7601 |
-
"security settings."
|
7602 |
msgstr ""
|
7603 |
|
7604 |
-
#: src/lib/src/Modules/
|
7605 |
-
msgid "
|
7606 |
msgstr ""
|
7607 |
|
7608 |
-
#: src/lib/src/Modules/
|
7609 |
-
msgid "
|
7610 |
msgstr ""
|
7611 |
|
7612 |
-
#: src/lib/src/Modules/
|
7613 |
-
msgid "
|
7614 |
msgstr ""
|
7615 |
|
7616 |
-
#: src/lib/src/Modules/
|
7617 |
-
msgid "
|
7618 |
msgstr ""
|
7619 |
|
7620 |
-
#: src/lib/src/Modules/
|
7621 |
-
msgid ""
|
7622 |
-
"Restricts access to key WordPress areas for all users not authenticated with "
|
7623 |
-
"the Security Admin Access system."
|
7624 |
msgstr ""
|
7625 |
|
7626 |
-
#: src/lib/src/Modules/
|
7627 |
-
msgid "
|
7628 |
msgstr ""
|
7629 |
|
7630 |
-
#: src/lib/src/Modules/
|
7631 |
-
|
7632 |
-
msgid "Rename and re-brand the %s plugin for your client site installations."
|
7633 |
msgstr ""
|
7634 |
|
7635 |
-
#: src/lib/src/Modules/
|
7636 |
-
msgid "
|
7637 |
msgstr ""
|
7638 |
|
7639 |
-
#: src/lib/src/Modules/
|
7640 |
-
msgid "
|
7641 |
msgstr ""
|
7642 |
|
7643 |
-
#: src/lib/src/Modules/
|
7644 |
-
msgid ""
|
7645 |
-
"Enable this with great care and consideration. Ensure that you set a key "
|
7646 |
-
"that you have set an access key that you will remember."
|
7647 |
msgstr ""
|
7648 |
|
7649 |
-
#: src/lib/src/Modules/
|
7650 |
-
msgid "
|
7651 |
msgstr ""
|
7652 |
|
7653 |
-
#: src/lib/src/Modules/
|
7654 |
-
msgid "
|
7655 |
msgstr ""
|
7656 |
|
7657 |
-
#: src/lib/src/Modules/
|
7658 |
-
|
7659 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:145
|
7660 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:152
|
7661 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:158
|
7662 |
-
#: src/lib/src/Modules/SecurityAdmin/Strings.php:164
|
7663 |
-
msgid "Careful"
|
7664 |
msgstr ""
|
7665 |
|
7666 |
-
#: src/lib/src/Modules/
|
7667 |
-
msgid ""
|
7668 |
-
"If you forget this, you could potentially lock yourself out from using this "
|
7669 |
-
"plugin."
|
7670 |
msgstr ""
|
7671 |
|
7672 |
-
#: src/lib/src/Modules/
|
7673 |
-
msgid "
|
7674 |
msgstr ""
|
7675 |
|
7676 |
-
#: src/lib/src/Modules/
|
7677 |
-
msgid "
|
7678 |
msgstr ""
|
7679 |
|
7680 |
-
#: src/lib/src/Modules/
|
7681 |
-
|
7682 |
-
msgid "To delete the current security key, type exactly \"%s\" and save."
|
7683 |
msgstr ""
|
7684 |
|
7685 |
-
#: src/lib/src/Modules/
|
7686 |
-
msgid "
|
7687 |
msgstr ""
|
7688 |
|
7689 |
-
#: src/lib/src/Modules/
|
7690 |
-
msgid "
|
7691 |
msgstr ""
|
7692 |
|
7693 |
-
#: src/lib/src/Modules/
|
7694 |
-
|
7695 |
-
"
|
7696 |
-
"security key."
|
7697 |
msgstr ""
|
7698 |
|
7699 |
-
#: src/lib/src/Modules/
|
7700 |
-
|
|
|
7701 |
msgstr ""
|
7702 |
|
7703 |
-
#: src/lib/src/Modules/
|
7704 |
-
|
|
|
|
|
7705 |
msgstr ""
|
7706 |
|
7707 |
-
#: src/lib/src/Modules/
|
7708 |
-
|
|
|
7709 |
msgstr ""
|
7710 |
|
7711 |
-
#: src/lib/src/Modules/
|
7712 |
-
|
|
|
7713 |
msgstr ""
|
7714 |
|
7715 |
-
#: src/lib/src/Modules/
|
7716 |
-
msgid "
|
7717 |
msgstr ""
|
7718 |
|
7719 |
-
#: src/lib/src/Modules/
|
7720 |
-
msgid "
|
7721 |
msgstr ""
|
7722 |
|
7723 |
-
#: src/lib/src/Modules/
|
7724 |
-
msgid "
|
7725 |
msgstr ""
|
7726 |
|
7727 |
-
#: src/lib/src/Modules/
|
7728 |
-
msgid "
|
7729 |
msgstr ""
|
7730 |
|
7731 |
-
#: src/lib/src/Modules/
|
7732 |
-
msgid "
|
7733 |
msgstr ""
|
7734 |
|
7735 |
-
#: src/lib/src/Modules/
|
7736 |
-
|
7737 |
-
|
|
|
|
|
7738 |
#, php-format
|
7739 |
-
msgid "
|
7740 |
msgstr ""
|
7741 |
|
7742 |
-
#: src/lib/src/Modules/
|
7743 |
-
msgid "
|
7744 |
msgstr ""
|
7745 |
|
7746 |
-
#: src/lib/src/Modules/
|
7747 |
-
msgid "
|
7748 |
msgstr ""
|
7749 |
|
7750 |
-
#: src/lib/src/Modules/
|
|
|
7751 |
msgid ""
|
7752 |
-
"
|
7753 |
-
"
|
7754 |
msgstr ""
|
7755 |
|
7756 |
-
#: src/lib/src/Modules/
|
7757 |
-
|
|
|
|
|
7758 |
msgstr ""
|
7759 |
|
7760 |
-
#: src/lib/src/Modules/
|
7761 |
-
msgid "
|
7762 |
msgstr ""
|
7763 |
|
7764 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
|
|
|
|
7765 |
msgid ""
|
7766 |
-
"This will restrict
|
7767 |
-
"
|
7768 |
msgstr ""
|
7769 |
|
7770 |
-
#: src/lib/src/Modules/
|
7771 |
-
msgid "
|
|
|
|
|
7772 |
msgstr ""
|
7773 |
|
7774 |
-
#: src/lib/src/Modules/
|
7775 |
-
msgid "
|
7776 |
msgstr ""
|
7777 |
|
7778 |
-
#: src/lib/src/Modules/
|
7779 |
-
msgid ""
|
7780 |
-
"This will restrict the ability of WordPress administrators from creating, "
|
7781 |
-
"modifying or promoting other administrators."
|
7782 |
msgstr ""
|
7783 |
|
7784 |
-
#: src/lib/src/Modules/
|
7785 |
-
msgid "
|
7786 |
msgstr ""
|
7787 |
|
7788 |
-
#: src/lib/src/Modules/
|
7789 |
msgid ""
|
7790 |
-
"
|
7791 |
-
"
|
7792 |
msgstr ""
|
7793 |
|
7794 |
-
#: src/lib/src/Modules/
|
7795 |
-
|
7796 |
-
msgid "%s and %s"
|
7797 |
msgstr ""
|
7798 |
|
7799 |
-
#: src/lib/src/Modules/
|
7800 |
-
msgid "
|
7801 |
msgstr ""
|
7802 |
|
7803 |
-
#: src/lib/src/Modules/
|
7804 |
-
msgid "
|
7805 |
msgstr ""
|
7806 |
|
7807 |
-
#: src/lib/src/Modules/
|
7808 |
-
msgid "
|
7809 |
msgstr ""
|
7810 |
|
7811 |
-
#: src/lib/src/Modules/
|
7812 |
-
msgid "
|
7813 |
msgstr ""
|
7814 |
|
7815 |
-
#: src/lib/src/Modules/
|
7816 |
-
msgid "
|
7817 |
msgstr ""
|
7818 |
|
7819 |
-
#: src/lib/src/Modules/
|
7820 |
-
|
7821 |
-
msgid "Hide available %s updates from non-security administrators."
|
7822 |
msgstr ""
|
7823 |
|
7824 |
-
#: src/lib/src/Modules/
|
7825 |
-
|
7826 |
-
msgid "Plugin Name"
|
7827 |
msgstr ""
|
7828 |
|
7829 |
-
#: src/lib/src/Modules/
|
7830 |
-
msgid "
|
7831 |
msgstr ""
|
7832 |
|
7833 |
-
#: src/lib/src/Modules/
|
7834 |
-
msgid "
|
7835 |
msgstr ""
|
7836 |
|
7837 |
-
#: src/lib/src/Modules/
|
7838 |
-
msgid "
|
7839 |
msgstr ""
|
7840 |
|
7841 |
-
#: src/lib/src/Modules/
|
7842 |
-
msgid "
|
7843 |
msgstr ""
|
7844 |
|
7845 |
-
#: src/lib/src/Modules/
|
7846 |
-
#, php-format
|
7847 |
msgid ""
|
7848 |
-
"
|
|
|
7849 |
msgstr ""
|
7850 |
|
7851 |
-
#: src/lib/src/Modules/
|
7852 |
-
msgid "
|
7853 |
msgstr ""
|
7854 |
|
7855 |
-
#: src/lib/src/Modules/
|
7856 |
-
msgid "
|
7857 |
msgstr ""
|
7858 |
|
7859 |
-
#: src/lib/src/Modules/
|
7860 |
-
msgid "
|
7861 |
msgstr ""
|
7862 |
|
7863 |
-
#: src/lib/src/Modules/
|
7864 |
-
msgid "
|
7865 |
msgstr ""
|
7866 |
|
7867 |
-
#: src/lib/src/Modules/
|
7868 |
-
msgid "
|
7869 |
msgstr ""
|
7870 |
|
7871 |
-
#: src/lib/src/Modules/
|
7872 |
-
msgid "
|
7873 |
msgstr ""
|
7874 |
|
7875 |
-
#: src/lib/src/Modules/
|
7876 |
-
|
|
|
|
|
|
|
|
|
|
|
7877 |
msgstr ""
|
7878 |
|
7879 |
-
#: src/lib/src/Modules/
|
7880 |
msgid ""
|
7881 |
-
"
|
7882 |
-
"
|
7883 |
msgstr ""
|
7884 |
|
7885 |
-
#: src/lib/src/Modules/
|
7886 |
-
msgid "
|
7887 |
msgstr ""
|
7888 |
|
7889 |
-
#: src/lib/src/Modules/
|
7890 |
-
msgid "
|
7891 |
msgstr ""
|
7892 |
|
7893 |
-
#: src/lib/src/Modules/
|
7894 |
-
msgid "
|
7895 |
msgstr ""
|
7896 |
|
7897 |
-
#: src/lib/src/Modules/
|
7898 |
-
|
7899 |
-
#, php-format
|
7900 |
-
msgid "The %s should measure %s."
|
7901 |
msgstr ""
|
7902 |
|
7903 |
-
#: src/lib/src/Modules/
|
7904 |
-
msgid "
|
7905 |
msgstr ""
|
7906 |
|
7907 |
-
#: src/lib/src/Modules/
|
7908 |
-
msgid "
|
7909 |
msgstr ""
|
7910 |
|
7911 |
-
#: src/lib/src/Modules/
|
7912 |
-
msgid "
|
7913 |
msgstr ""
|
7914 |
|
7915 |
-
#: src/lib/src/Modules/
|
7916 |
-
msgid "
|
7917 |
msgstr ""
|
7918 |
|
7919 |
-
#: src/lib/src/Modules/
|
7920 |
-
msgid "
|
7921 |
msgstr ""
|
7922 |
|
7923 |
-
#: src/lib/src/Modules/
|
7924 |
-
|
7925 |
-
msgid "2FA Login Logo URL"
|
7926 |
msgstr ""
|
7927 |
|
7928 |
-
#: src/lib/src/Modules/
|
7929 |
-
msgid ""
|
7930 |
-
"The URL of the logo to display on the Two-Factor Authentication login page."
|
7931 |
msgstr ""
|
7932 |
|
7933 |
-
#: src/lib/src/Modules/
|
7934 |
-
|
|
|
7935 |
msgstr ""
|
7936 |
|
7937 |
-
#: src/lib/src/Modules/
|
7938 |
-
|
|
|
7939 |
msgstr ""
|
7940 |
|
7941 |
-
#: src/lib/src/Modules/
|
7942 |
-
msgid "
|
7943 |
msgstr ""
|
7944 |
|
7945 |
-
#: src/lib/src/Modules/
|
7946 |
-
msgid "
|
|
|
|
|
7947 |
msgstr ""
|
7948 |
|
7949 |
-
#: src/lib/src/Modules/
|
7950 |
msgid ""
|
7951 |
-
"
|
7952 |
-
"the
|
7953 |
msgstr ""
|
7954 |
|
7955 |
-
#: src/lib/src/Modules/
|
7956 |
-
msgid "
|
7957 |
msgstr ""
|
7958 |
|
7959 |
-
#: src/lib/src/Modules/
|
7960 |
-
msgid "
|
7961 |
msgstr ""
|
7962 |
|
7963 |
-
#: src/lib/src/Modules/
|
7964 |
-
|
7965 |
-
"
|
7966 |
-
"originating site."
|
7967 |
msgstr ""
|
7968 |
|
7969 |
-
#: src/lib/src/Modules/
|
7970 |
-
msgid "
|
7971 |
msgstr ""
|
7972 |
|
7973 |
-
#: src/lib/src/Modules/
|
7974 |
-
|
7975 |
-
msgid "Visitor exceeded the maximum allowable requests (%s) within %s seconds."
|
7976 |
msgstr ""
|
7977 |
|
7978 |
-
#: src/lib/src/Modules/
|
7979 |
-
msgid "
|
7980 |
msgstr ""
|
7981 |
|
7982 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
7983 |
msgid ""
|
7984 |
-
"
|
7985 |
-
"
|
7986 |
msgstr ""
|
7987 |
|
7988 |
-
#: src/lib/src/Modules/
|
7989 |
-
msgid "
|
|
|
|
|
7990 |
msgstr ""
|
7991 |
|
7992 |
-
#: src/lib/src/Modules/
|
7993 |
-
msgid "
|
7994 |
msgstr ""
|
7995 |
|
7996 |
-
#: src/lib/src/Modules/
|
7997 |
-
msgid "
|
7998 |
msgstr ""
|
7999 |
|
8000 |
-
#: src/lib/src/Modules/
|
8001 |
-
msgid "
|
8002 |
msgstr ""
|
8003 |
|
8004 |
-
#: src/lib/src/Modules/
|
8005 |
-
msgid "
|
8006 |
msgstr ""
|
8007 |
|
8008 |
-
#: src/lib/src/Modules/
|
8009 |
-
msgid "
|
8010 |
msgstr ""
|
8011 |
|
8012 |
-
#: src/lib/src/Modules/
|
8013 |
-
msgid "
|
8014 |
msgstr ""
|
8015 |
|
8016 |
-
#: src/lib/src/Modules/
|
8017 |
-
msgid ""
|
8018 |
-
"You could block legitimate visitors who load many pages in quick succession "
|
8019 |
-
"on your site."
|
8020 |
msgstr ""
|
8021 |
|
8022 |
-
#: src/lib/src/Modules/
|
8023 |
-
msgid "
|
|
|
|
|
8024 |
msgstr ""
|
8025 |
|
8026 |
-
#: src/lib/src/Modules/
|
8027 |
-
msgid "
|
8028 |
msgstr ""
|
8029 |
|
8030 |
-
#: src/lib/src/Modules/
|
8031 |
-
msgid ""
|
8032 |
-
"Select request types that you don't want to appear in the traffic viewer."
|
8033 |
msgstr ""
|
8034 |
|
8035 |
-
#: src/lib/src/Modules/
|
8036 |
-
msgid ""
|
8037 |
-
"If a request matches any exclusion rule, it will not show on the traffic "
|
8038 |
-
"viewer."
|
8039 |
msgstr ""
|
8040 |
|
8041 |
-
#: src/lib/src/Modules/
|
8042 |
-
msgid "
|
8043 |
msgstr ""
|
8044 |
|
8045 |
-
#: src/lib/src/Modules/
|
8046 |
-
msgid "
|
8047 |
msgstr ""
|
8048 |
|
8049 |
-
#: src/lib/src/Modules/
|
8050 |
msgid ""
|
8051 |
-
"
|
8052 |
-
"
|
8053 |
msgstr ""
|
8054 |
|
8055 |
-
#: src/lib/src/Modules/
|
8056 |
-
msgid "
|
8057 |
msgstr ""
|
8058 |
|
8059 |
-
#: src/lib/src/Modules/
|
8060 |
-
msgid "
|
|
|
|
|
8061 |
msgstr ""
|
8062 |
|
8063 |
-
#: src/lib/src/Modules/
|
8064 |
-
msgid "
|
8065 |
msgstr ""
|
8066 |
|
8067 |
-
#: src/lib/src/Modules/
|
8068 |
-
msgid "
|
8069 |
msgstr ""
|
8070 |
|
8071 |
-
#: src/lib/src/Modules/
|
8072 |
-
msgid "
|
8073 |
msgstr ""
|
8074 |
|
8075 |
-
#: src/lib/src/Modules/
|
8076 |
-
msgid "
|
8077 |
msgstr ""
|
8078 |
|
8079 |
-
#: src/lib/src/Modules/
|
8080 |
-
msgid "
|
8081 |
msgstr ""
|
8082 |
|
8083 |
-
#: src/lib/src/Modules/
|
8084 |
-
msgid "
|
8085 |
msgstr ""
|
8086 |
|
8087 |
-
#: src/lib/src/Modules/
|
8088 |
-
msgid "
|
8089 |
msgstr ""
|
8090 |
|
8091 |
-
#: src/lib/src/Modules/
|
8092 |
-
msgid "
|
8093 |
msgstr ""
|
8094 |
|
8095 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
8096 |
msgid ""
|
8097 |
-
"
|
8098 |
-
"
|
8099 |
msgstr ""
|
8100 |
|
8101 |
-
#: src/lib/src/Modules/
|
|
|
|
|
|
|
|
|
8102 |
msgid ""
|
8103 |
-
"
|
8104 |
-
"
|
8105 |
msgstr ""
|
8106 |
|
8107 |
-
#: src/lib/src/Modules/
|
8108 |
-
|
|
|
8109 |
msgstr ""
|
8110 |
|
8111 |
-
#: src/lib/src/Modules/
|
8112 |
-
msgid "
|
8113 |
msgstr ""
|
8114 |
|
8115 |
-
#: src/lib/src/Modules/
|
8116 |
-
msgid "
|
8117 |
msgstr ""
|
8118 |
|
8119 |
-
#: src/lib/src/Modules/
|
8120 |
msgid ""
|
8121 |
-
"
|
8122 |
-
"
|
8123 |
msgstr ""
|
8124 |
|
8125 |
-
#: src/lib/src/Modules/
|
8126 |
-
msgid "
|
8127 |
msgstr ""
|
8128 |
|
8129 |
-
#: src/lib/src/Modules/
|
8130 |
-
|
8131 |
-
|
|
|
8132 |
msgstr ""
|
8133 |
|
8134 |
-
#: src/lib/src/Modules/
|
8135 |
-
#: src/lib/src/Modules/
|
8136 |
-
|
8137 |
-
msgid "Use %s to test for excessive requests within a %s minutes interval."
|
8138 |
msgstr ""
|
8139 |
|
8140 |
-
#: src/lib/src/Modules/
|
8141 |
-
msgid "
|
8142 |
msgstr ""
|
8143 |
|
8144 |
-
#: src/lib/src/Modules/
|
8145 |
-
msgid "
|
8146 |
msgstr ""
|
8147 |
|
8148 |
-
#: src/lib/src/Modules/
|
8149 |
-
|
8150 |
-
|
|
|
8151 |
msgstr ""
|
8152 |
|
8153 |
-
#: src/lib/src/Modules/
|
8154 |
-
msgid "
|
8155 |
msgstr ""
|
8156 |
|
8157 |
-
#: src/lib/src/Modules/
|
8158 |
-
msgid "
|
8159 |
msgstr ""
|
8160 |
|
8161 |
-
#: src/lib/src/Modules/
|
8162 |
-
|
8163 |
-
msgid "Please logout if you want to delete your own session."
|
8164 |
msgstr ""
|
8165 |
|
8166 |
-
#: src/lib/src/Modules/
|
8167 |
-
msgid "
|
8168 |
msgstr ""
|
8169 |
|
8170 |
-
#: src/lib/src/Modules/
|
8171 |
-
msgid "
|
8172 |
msgstr ""
|
8173 |
|
8174 |
-
#: src/lib/src/Modules/
|
8175 |
-
msgid "
|
8176 |
msgstr ""
|
8177 |
|
8178 |
-
#: src/lib/src/Modules/
|
8179 |
-
msgid "
|
8180 |
msgstr ""
|
8181 |
|
8182 |
-
#: src/lib/src/Modules/
|
8183 |
-
msgid "
|
8184 |
msgstr ""
|
8185 |
|
8186 |
-
#: src/lib/src/Modules/
|
8187 |
-
|
|
|
|
|
|
|
|
|
8188 |
msgstr ""
|
8189 |
|
8190 |
-
#: src/lib/src/Modules/
|
8191 |
-
|
8192 |
-
msgid "Last Activity At"
|
8193 |
msgstr ""
|
8194 |
|
8195 |
-
#: src/lib/src/Modules/
|
8196 |
-
msgid "
|
8197 |
msgstr ""
|
8198 |
|
8199 |
-
#: src/lib/src/Modules/
|
8200 |
-
msgid "
|
8201 |
msgstr ""
|
8202 |
|
8203 |
-
#: src/lib/src/Modules/
|
8204 |
-
|
8205 |
-
|
8206 |
-
"sessions."
|
8207 |
msgstr ""
|
8208 |
|
8209 |
-
#: src/lib/src/Modules/
|
8210 |
-
msgid ""
|
8211 |
-
"User Management offers real user sessions, finer control over user session "
|
8212 |
-
"time-out, and ensures users have logged-in in a correct manner."
|
8213 |
msgstr ""
|
8214 |
|
8215 |
-
#: src/lib/src/Modules/
|
8216 |
-
msgid "
|
8217 |
msgstr ""
|
8218 |
|
8219 |
-
#: src/lib/src/Modules/
|
8220 |
-
msgid "
|
8221 |
msgstr ""
|
8222 |
|
8223 |
-
#: src/lib/src/Modules/
|
8224 |
-
msgid "
|
8225 |
msgstr ""
|
8226 |
|
8227 |
-
#: src/lib/src/Modules/
|
8228 |
-
|
8229 |
-
"
|
8230 |
-
"your site when you are not expecting it."
|
8231 |
msgstr ""
|
8232 |
|
8233 |
-
#: src/lib/src/Modules/
|
8234 |
-
msgid "
|
8235 |
msgstr ""
|
8236 |
|
8237 |
-
#: src/lib/src/Modules/
|
8238 |
-
|
|
|
|
|
8239 |
msgstr ""
|
8240 |
|
8241 |
-
#: src/lib/src/Modules/
|
8242 |
-
msgid "
|
|
|
|
|
8243 |
msgstr ""
|
8244 |
|
8245 |
-
#: src/lib/src/Modules/
|
8246 |
msgid ""
|
8247 |
-
"
|
8248 |
-
"
|
8249 |
msgstr ""
|
8250 |
|
8251 |
-
#: src/lib/src/Modules/
|
8252 |
-
msgid "
|
8253 |
msgstr ""
|
8254 |
|
8255 |
-
#: src/lib/src/Modules/
|
8256 |
-
|
|
|
|
|
8257 |
msgstr ""
|
8258 |
|
8259 |
-
#: src/lib/src/Modules/
|
8260 |
-
msgid "
|
|
|
|
|
8261 |
msgstr ""
|
8262 |
|
8263 |
-
#: src/lib/src/Modules/
|
8264 |
-
msgid "
|
|
|
|
|
8265 |
msgstr ""
|
8266 |
|
8267 |
-
#: src/lib/src/Modules/
|
8268 |
-
|
|
|
|
|
8269 |
msgstr ""
|
8270 |
|
8271 |
-
#: src/lib/src/Modules/
|
8272 |
-
msgid "
|
8273 |
msgstr ""
|
8274 |
|
8275 |
-
#: src/lib/src/Modules/
|
8276 |
-
msgid ""
|
8277 |
-
"If you would like to be notified every time an administrator user logs into "
|
8278 |
-
"this WordPress site, enter a notification email address."
|
8279 |
msgstr ""
|
8280 |
|
8281 |
-
#: src/lib/src/Modules/
|
8282 |
-
msgid "
|
8283 |
msgstr ""
|
8284 |
|
8285 |
-
#: src/lib/src/Modules/
|
8286 |
-
msgid "
|
8287 |
msgstr ""
|
8288 |
|
8289 |
-
#: src/lib/src/Modules/
|
8290 |
-
|
|
|
8291 |
msgstr ""
|
8292 |
|
8293 |
-
#: src/lib/src/Modules/
|
8294 |
-
msgid "
|
8295 |
msgstr ""
|
8296 |
|
8297 |
-
#: src/lib/src/Modules/
|
8298 |
msgid ""
|
8299 |
-
"
|
8300 |
-
"account."
|
8301 |
msgstr ""
|
8302 |
|
8303 |
-
#: src/lib/src/Modules/
|
8304 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8305 |
msgstr ""
|
8306 |
|
8307 |
-
#: src/lib/src/Modules/
|
8308 |
-
msgid "
|
8309 |
msgstr ""
|
8310 |
|
8311 |
-
#: src/lib/src/Modules/
|
8312 |
-
msgid ""
|
8313 |
-
"WordPress default is 2 days, or 14 days if you check the \"Remember Me\" box."
|
8314 |
msgstr ""
|
8315 |
|
8316 |
-
#: src/lib/src/Modules/
|
8317 |
-
msgid "
|
8318 |
msgstr ""
|
8319 |
|
8320 |
-
#: src/lib/src/Modules/
|
8321 |
-
|
8322 |
-
msgid "This cannot be less than %s."
|
8323 |
msgstr ""
|
8324 |
|
8325 |
-
#: src/lib/src/Modules/
|
8326 |
-
msgid "
|
8327 |
msgstr ""
|
8328 |
|
8329 |
-
#: src/lib/src/Modules/
|
8330 |
-
|
|
|
8331 |
msgstr ""
|
8332 |
|
8333 |
-
#: src/lib/src/Modules/
|
8334 |
-
msgid ""
|
8335 |
-
"If the user is inactive for the number of hours specified, they will be "
|
8336 |
-
"forcefully logged out next time they return."
|
8337 |
msgstr ""
|
8338 |
|
8339 |
-
#: src/lib/src/Modules/
|
8340 |
#, php-format
|
8341 |
-
msgid "
|
|
|
8342 |
msgstr ""
|
8343 |
|
8344 |
-
#: src/lib/src/Modules/
|
8345 |
-
msgid "
|
8346 |
msgstr ""
|
8347 |
|
8348 |
-
#: src/lib/src/Modules/
|
8349 |
-
msgid "
|
|
|
|
|
8350 |
msgstr ""
|
8351 |
|
8352 |
-
#: src/lib/src/Modules/
|
8353 |
msgid ""
|
8354 |
-
"
|
8355 |
-
"
|
|
|
|
|
|
|
|
|
8356 |
msgstr ""
|
8357 |
|
8358 |
-
#: src/lib/src/Modules/
|
|
|
8359 |
msgid ""
|
8360 |
-
"
|
8361 |
-
"
|
8362 |
msgstr ""
|
8363 |
|
8364 |
-
#: src/lib/src/Modules/
|
8365 |
-
msgid "
|
8366 |
msgstr ""
|
8367 |
|
8368 |
-
#: src/lib/src/Modules/
|
8369 |
-
msgid "
|
|
|
|
|
8370 |
msgstr ""
|
8371 |
|
8372 |
-
#: src/lib/src/Modules/
|
8373 |
msgid ""
|
8374 |
-
"
|
8375 |
-
"
|
8376 |
msgstr ""
|
8377 |
|
8378 |
-
#: src/lib/src/Modules/
|
8379 |
-
msgid "
|
8380 |
msgstr ""
|
8381 |
|
8382 |
-
#: src/lib/src/Modules/
|
8383 |
-
msgid "
|
|
|
8384 |
msgstr ""
|
8385 |
|
8386 |
-
#: src/lib/src/Modules/
|
8387 |
-
|
|
|
8388 |
msgstr ""
|
8389 |
|
8390 |
-
#: src/lib/src/Modules/
|
8391 |
-
msgid "
|
8392 |
msgstr ""
|
8393 |
|
8394 |
-
#: src/lib/src/Modules/
|
8395 |
-
msgid "
|
8396 |
msgstr ""
|
8397 |
|
8398 |
-
#: src/lib/src/Modules/
|
8399 |
-
msgid "
|
|
|
|
|
|
|
|
|
8400 |
msgstr ""
|
8401 |
|
8402 |
-
#: src/lib/src/Modules/
|
8403 |
msgid ""
|
8404 |
-
"
|
8405 |
-
"of \"pwned\" passwords."
|
8406 |
msgstr ""
|
8407 |
|
8408 |
-
#: src/lib/src/Modules/
|
8409 |
-
msgid "
|
8410 |
msgstr ""
|
8411 |
|
8412 |
-
#: src/lib/src/Modules/
|
8413 |
-
msgid "
|
8414 |
msgstr ""
|
8415 |
|
8416 |
-
#: src/lib/src/Modules/
|
8417 |
-
msgid ""
|
8418 |
-
"All passwords that a user sets must be at least this many characters in "
|
8419 |
-
"length."
|
8420 |
msgstr ""
|
8421 |
|
8422 |
-
#: src/lib/src/Modules/
|
8423 |
-
|
8424 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:223
|
8425 |
-
msgid "Set to Zero(0) to disable."
|
8426 |
msgstr ""
|
8427 |
|
8428 |
-
#: src/lib/src/Modules/
|
8429 |
-
msgid "
|
8430 |
msgstr ""
|
8431 |
|
8432 |
-
#: src/lib/src/Modules/
|
8433 |
-
|
|
|
|
|
|
|
8434 |
msgstr ""
|
8435 |
|
8436 |
-
#: src/lib/src/Modules/
|
8437 |
-
msgid "
|
8438 |
msgstr ""
|
8439 |
|
8440 |
-
#: src/lib/src/Modules/
|
8441 |
-
msgid "
|
8442 |
msgstr ""
|
8443 |
|
8444 |
-
#: src/lib/src/Modules/
|
8445 |
-
msgid "
|
8446 |
msgstr ""
|
8447 |
|
8448 |
-
#: src/lib/src/Modules/
|
8449 |
msgid ""
|
8450 |
-
"
|
8451 |
-
"
|
8452 |
msgstr ""
|
8453 |
|
8454 |
-
#: src/lib/src/Modules/
|
8455 |
-
msgid "
|
8456 |
msgstr ""
|
8457 |
|
8458 |
-
#: src/lib/src/Modules/
|
8459 |
-
|
|
|
8460 |
msgstr ""
|
8461 |
|
8462 |
-
#: src/lib/src/Modules/
|
8463 |
-
msgid "
|
8464 |
msgstr ""
|
8465 |
|
8466 |
-
#: src/lib/src/Modules/
|
8467 |
-
msgid ""
|
8468 |
-
"Users will be forced to reset their passwords after the number of days "
|
8469 |
-
"specified."
|
8470 |
msgstr ""
|
8471 |
|
8472 |
-
#: src/lib/src/Modules/
|
8473 |
-
msgid "
|
|
|
|
|
8474 |
msgstr ""
|
8475 |
|
8476 |
-
#: src/lib/src/Modules/
|
8477 |
-
msgid "
|
8478 |
msgstr ""
|
8479 |
|
8480 |
-
#: src/lib/src/Modules/
|
8481 |
-
|
|
|
|
|
|
|
|
|
|
|
8482 |
msgstr ""
|
8483 |
|
8484 |
-
#: src/lib/src/Modules/
|
8485 |
-
msgid "
|
|
|
|
|
8486 |
msgstr ""
|
8487 |
|
8488 |
-
#: src/lib/src/Modules/
|
8489 |
-
msgid "
|
8490 |
msgstr ""
|
8491 |
|
8492 |
-
#: src/lib/src/Modules/
|
8493 |
-
msgid ""
|
8494 |
-
"Automatically suspends login by users and requires password reset to "
|
8495 |
-
"unsuspend."
|
8496 |
msgstr ""
|
8497 |
|
8498 |
-
#: src/lib/src/Modules/
|
8499 |
-
|
|
|
8500 |
msgstr ""
|
8501 |
|
8502 |
-
#: src/lib/src/Modules/
|
8503 |
-
msgid "
|
8504 |
msgstr ""
|
8505 |
|
8506 |
-
#: src/lib/src/Modules/
|
8507 |
-
msgid "
|
8508 |
msgstr ""
|
8509 |
|
8510 |
-
#: src/lib/src/Modules/
|
8511 |
-
msgid ""
|
8512 |
-
"Automatically suspends login for idle accounts and requires password reset "
|
8513 |
-
"to unsuspend."
|
8514 |
msgstr ""
|
8515 |
|
8516 |
-
#: src/lib/src/Modules/
|
8517 |
-
msgid "
|
|
|
|
|
8518 |
msgstr ""
|
8519 |
|
8520 |
-
#: src/lib/src/Modules/
|
8521 |
-
msgid "
|
8522 |
msgstr ""
|
8523 |
|
8524 |
-
#: src/lib/src/Modules/
|
8525 |
-
msgid "
|
8526 |
msgstr ""
|
8527 |
|
8528 |
-
#: src/lib/src/Modules/
|
8529 |
-
msgid ""
|
8530 |
-
"Automatic suspension for idle accounts applies only to the roles you specify."
|
8531 |
msgstr ""
|
8532 |
|
8533 |
-
#: src/lib/src/Modules/
|
8534 |
-
msgid "
|
8535 |
msgstr ""
|
8536 |
|
8537 |
-
#: src/lib/src/Modules/
|
8538 |
-
msgid "
|
8539 |
msgstr ""
|
8540 |
|
8541 |
-
#: src/lib/src/Modules/
|
8542 |
-
msgid "
|
8543 |
msgstr ""
|
8544 |
|
8545 |
-
#: src/lib/src/Modules/
|
8546 |
-
msgid "
|
8547 |
msgstr ""
|
8548 |
|
8549 |
-
#: src/lib/src/Modules/
|
8550 |
-
|
8551 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:271
|
8552 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:275
|
8553 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:279
|
8554 |
-
#: src/lib/src/Modules/UserManagement/Strings.php:283
|
8555 |
-
msgid "Logging out."
|
8556 |
msgstr ""
|
8557 |
|
8558 |
-
#: src/lib/src/Modules/
|
8559 |
-
msgid "
|
|
|
|
|
8560 |
msgstr ""
|
8561 |
|
8562 |
-
#: src/lib/src/Modules/
|
8563 |
-
|
|
|
8564 |
msgstr ""
|
8565 |
|
8566 |
-
#: src/lib/src/Modules/
|
8567 |
-
msgid "
|
8568 |
msgstr ""
|
8569 |
|
8570 |
-
#: src/lib/src/Modules/
|
8571 |
-
msgid "
|
8572 |
msgstr ""
|
8573 |
|
8574 |
-
#: src/lib/src/Modules/
|
8575 |
-
msgid ""
|
8576 |
-
"Unable to verify the current User Session. Forcefully logging out session."
|
8577 |
msgstr ""
|
8578 |
|
8579 |
-
#: src/lib/src/Modules/
|
|
|
|
|
8580 |
#, php-format
|
8581 |
-
msgid "
|
8582 |
msgstr ""
|
8583 |
|
8584 |
-
#: src/lib/src/Modules/
|
8585 |
-
|
8586 |
-
msgid "User ID %s unsuspended by admin (%s)"
|
8587 |
msgstr ""
|
8588 |
|
8589 |
-
#: src/lib/src/Modules/
|
8590 |
-
msgid "
|
8591 |
msgstr ""
|
8592 |
|
8593 |
-
#: src/lib/src/Modules/
|
8594 |
-
|
8595 |
-
|
|
|
8596 |
msgstr ""
|
8597 |
|
8598 |
-
#: src/lib/src/Modules/
|
8599 |
-
|
8600 |
-
msgid "Reset"
|
8601 |
msgstr ""
|
8602 |
|
8603 |
-
#: src/lib/src/Modules/
|
8604 |
-
msgid "
|
8605 |
msgstr ""
|
8606 |
|
8607 |
-
#: src/lib/src/Modules/
|
8608 |
-
msgid "
|
|
|
|
|
8609 |
msgstr ""
|
8610 |
|
8611 |
-
#: src/lib/src/Modules/
|
8612 |
-
msgid "
|
8613 |
msgstr ""
|
8614 |
|
8615 |
-
#: src/lib/src/
|
8616 |
-
|
8617 |
-
msgid "%s not installed from WordPress.org."
|
8618 |
msgstr ""
|
8619 |
|
8620 |
-
#: src/lib/src/
|
8621 |
-
|
8622 |
-
|
8623 |
-
|
8624 |
msgstr ""
|
8625 |
|
8626 |
-
#: src/lib/src/
|
8627 |
-
msgid "
|
8628 |
msgstr ""
|
8629 |
|
8630 |
-
#: src/lib/src/
|
8631 |
-
msgid "
|
|
|
|
|
8632 |
msgstr ""
|
8633 |
|
8634 |
-
#: src/lib/src/
|
8635 |
-
|
|
|
8636 |
msgstr ""
|
8637 |
|
8638 |
-
#: src/lib/src/
|
8639 |
-
|
8640 |
-
msgid "No entries to display."
|
8641 |
msgstr ""
|
8642 |
|
8643 |
-
#: src/lib/src/
|
8644 |
-
msgid "
|
8645 |
msgstr ""
|
8646 |
|
8647 |
-
#: src/lib/src/
|
8648 |
-
|
8649 |
-
msgid "Potential Malware Detected"
|
8650 |
msgstr ""
|
8651 |
|
8652 |
-
#: src/lib/src/
|
8653 |
-
msgid "
|
8654 |
msgstr ""
|
8655 |
|
8656 |
-
#: src/lib/src/
|
8657 |
-
msgid "
|
8658 |
msgstr ""
|
8659 |
|
8660 |
-
#: src/lib/src/
|
8661 |
-
|
|
|
8662 |
msgstr ""
|
8663 |
|
8664 |
-
#: src/lib/src/
|
8665 |
-
|
|
|
8666 |
msgstr ""
|
8667 |
|
8668 |
-
#: src/lib/src/
|
8669 |
-
|
8670 |
-
msgid "Modified"
|
8671 |
msgstr ""
|
8672 |
|
8673 |
-
#: src/lib/src/
|
8674 |
-
|
8675 |
-
msgid "Missing"
|
8676 |
msgstr ""
|
8677 |
|
8678 |
-
#: src/lib/src/
|
8679 |
-
|
8680 |
-
msgid "Unrecognised"
|
8681 |
msgstr ""
|
8682 |
|
8683 |
-
#: src/lib/src/
|
8684 |
-
msgid "
|
8685 |
msgstr ""
|
8686 |
|
8687 |
-
#: src/lib/src/
|
8688 |
-
msgid "
|
|
|
|
|
8689 |
msgstr ""
|
8690 |
|
8691 |
-
#: src/lib/src/
|
8692 |
-
msgid "
|
8693 |
msgstr ""
|
8694 |
|
8695 |
-
#: src/lib/src/
|
8696 |
-
|
8697 |
-
#: src/lib/src/Tables/Render/IpBase.php:26
|
8698 |
-
#: src/lib/src/Tables/Render/Traffic.php:15
|
8699 |
-
msgid "Date"
|
8700 |
msgstr ""
|
8701 |
|
8702 |
-
#: src/lib/src/
|
8703 |
-
|
|
|
|
|
8704 |
msgstr ""
|
8705 |
|
8706 |
-
#: src/lib/src/
|
8707 |
-
msgid "
|
8708 |
msgstr ""
|
8709 |
|
8710 |
-
#: src/lib/src/
|
8711 |
-
|
8712 |
-
#: src/lib/src/Tables/Render/Sessions.php:35
|
8713 |
-
#: src/lib/src/Tables/Render/Traffic.php:13
|
8714 |
-
msgid "Details"
|
8715 |
msgstr ""
|
8716 |
|
8717 |
-
#: src/lib/src/
|
8718 |
-
msgid "
|
8719 |
msgstr ""
|
8720 |
|
8721 |
-
#: src/lib/src/
|
8722 |
-
|
8723 |
-
#: src/lib/src/Tables/Render/ScanWcf.php:29
|
8724 |
-
msgid "Repair"
|
8725 |
msgstr ""
|
8726 |
|
8727 |
-
#: src/lib/src/
|
8728 |
-
|
8729 |
-
#: src/lib/src/Tables/Render/ScanMal.php:34
|
8730 |
-
#: src/lib/src/Tables/Render/ScanUfc.php:30
|
8731 |
-
#: src/lib/src/Tables/Render/ScanWcf.php:30
|
8732 |
-
#: src/lib/src/Tables/Render/ScanWpv.php:65
|
8733 |
-
msgid "Ignore"
|
8734 |
msgstr ""
|
8735 |
|
8736 |
-
#: src/lib/src/
|
8737 |
-
|
8738 |
-
msgid "Label"
|
8739 |
msgstr ""
|
8740 |
|
8741 |
-
#: src/lib/src/
|
8742 |
-
msgid "
|
8743 |
msgstr ""
|
8744 |
|
8745 |
-
#: src/lib/src/
|
8746 |
-
msgid "
|
|
|
|
|
8747 |
msgstr ""
|
8748 |
|
8749 |
-
#: src/lib/src/
|
8750 |
-
msgid "
|
8751 |
msgstr ""
|
8752 |
|
8753 |
-
#: src/lib/src/
|
8754 |
-
msgid "
|
8755 |
msgstr ""
|
8756 |
|
8757 |
-
#: src/lib/src/
|
8758 |
-
msgid "
|
8759 |
msgstr ""
|
8760 |
|
8761 |
-
#: src/lib/src/
|
8762 |
-
#: src/
|
8763 |
-
|
8764 |
-
msgid "
|
8765 |
msgstr ""
|
8766 |
|
8767 |
-
#: src/lib/src/
|
8768 |
-
|
8769 |
-
#: src/lib/src/Tables/Render/ScanPtg.php:28
|
8770 |
-
#: src/lib/src/Tables/Render/ScanWpv.php:77
|
8771 |
-
msgid "Discovered"
|
8772 |
msgstr ""
|
8773 |
|
8774 |
-
#: src/lib/src/
|
8775 |
-
msgid "
|
8776 |
msgstr ""
|
8777 |
|
8778 |
-
#: src/lib/src/
|
8779 |
-
|
8780 |
-
msgid "File"
|
8781 |
msgstr ""
|
8782 |
|
8783 |
-
#: src/lib/src/
|
8784 |
-
msgid "
|
8785 |
msgstr ""
|
8786 |
|
8787 |
-
#: src/lib/src/
|
8788 |
-
msgid "
|
8789 |
msgstr ""
|
8790 |
|
8791 |
-
#: src/lib/src/
|
8792 |
-
|
|
|
8793 |
msgstr ""
|
8794 |
|
8795 |
-
#: src/lib/src/
|
8796 |
-
msgid "
|
|
|
|
|
8797 |
msgstr ""
|
8798 |
|
8799 |
-
#: src/lib/src/
|
8800 |
-
msgid "
|
|
|
|
|
8801 |
msgstr ""
|
8802 |
|
8803 |
-
#: src/lib/src/
|
8804 |
-
|
8805 |
-
msgid "Discard"
|
8806 |
msgstr ""
|
8807 |
|
8808 |
-
#: src/lib/src/
|
8809 |
-
|
|
|
8810 |
msgstr ""
|
8811 |
|
8812 |
-
#: src/lib/src/
|
8813 |
-
|
8814 |
-
msgid "Whoops."
|
8815 |
msgstr ""
|
8816 |
|
8817 |
-
#: src/lib/src/
|
8818 |
-
msgid "
|
8819 |
msgstr ""
|
8820 |
|
8821 |
-
#: src/lib/src/
|
8822 |
-
msgid "
|
8823 |
msgstr ""
|
8824 |
|
8825 |
-
#: src/lib/src/
|
8826 |
-
msgid "
|
8827 |
msgstr ""
|
8828 |
|
8829 |
-
#: src/
|
8830 |
msgid ""
|
8831 |
-
"
|
8832 |
msgstr ""
|
8833 |
|
8834 |
-
#: src/
|
8835 |
-
|
8836 |
-
msgid "Editing this option is currently restricted."
|
8837 |
msgstr ""
|
8838 |
|
8839 |
-
#: src/
|
8840 |
-
msgid "
|
8841 |
msgstr ""
|
8842 |
|
8843 |
-
#: src/
|
8844 |
-
|
8845 |
-
msgid ""
|
8846 |
-
"This is a quick notification from the %s that WordPress Automatic Updates "
|
8847 |
-
"just completed on your site with the following results."
|
8848 |
msgstr ""
|
8849 |
|
8850 |
-
#: src/
|
8851 |
-
msgid "
|
|
|
|
|
8852 |
msgstr ""
|
8853 |
|
8854 |
-
#: src/
|
8855 |
-
|
8856 |
-
msgid "Plugin \"%s\" auto-updated from \"%s\" to version \"%s\""
|
8857 |
msgstr ""
|
8858 |
|
8859 |
-
#: src/
|
8860 |
-
msgid "
|
8861 |
msgstr ""
|
8862 |
|
8863 |
-
#: src/
|
8864 |
-
|
8865 |
-
msgid "Theme \"%s\" auto-updated from \"%s\" to version \"%s\""
|
8866 |
msgstr ""
|
8867 |
|
8868 |
-
#: src/
|
8869 |
-
msgid "
|
8870 |
msgstr ""
|
8871 |
|
8872 |
-
#: src/
|
8873 |
-
|
|
|
8874 |
msgstr ""
|
8875 |
|
8876 |
-
#: src/
|
8877 |
-
#: src/processors/loginprotect_intentprovider_backup.php:170
|
8878 |
#, php-format
|
8879 |
-
msgid "
|
8880 |
-
|
|
|
|
|
8881 |
|
8882 |
-
#: src/
|
8883 |
-
msgid "
|
8884 |
msgstr ""
|
8885 |
|
8886 |
-
#: src/
|
8887 |
msgid ""
|
8888 |
-
"
|
8889 |
-
|
8890 |
-
|
8891 |
-
#: src/processors/email.php:53
|
8892 |
-
msgid "Hi !"
|
8893 |
-
msgstr ""
|
8894 |
-
|
8895 |
-
#: src/processors/email.php:65
|
8896 |
-
#, php-format
|
8897 |
-
msgid "Email sent from the %s Plugin v%s, on %s."
|
8898 |
msgstr ""
|
8899 |
|
8900 |
-
#: src/
|
8901 |
-
msgid "
|
8902 |
msgstr ""
|
8903 |
|
8904 |
-
#: src/
|
8905 |
-
|
8906 |
-
|
|
|
8907 |
msgstr ""
|
8908 |
|
8909 |
-
#: src/
|
8910 |
-
msgid "
|
8911 |
msgstr ""
|
8912 |
|
8913 |
-
#: src/
|
8914 |
-
msgid "
|
8915 |
msgstr ""
|
8916 |
|
8917 |
-
#: src/
|
8918 |
-
|
8919 |
-
msgid "%s Statistics"
|
8920 |
msgstr ""
|
8921 |
|
8922 |
-
#: src/
|
8923 |
-
msgid "
|
8924 |
msgstr ""
|
8925 |
|
8926 |
-
#: src/
|
8927 |
-
|
8928 |
-
msgid "%s has blocked a page visit to your site."
|
8929 |
msgstr ""
|
8930 |
|
8931 |
-
#: src/
|
8932 |
-
msgid "
|
8933 |
msgstr ""
|
8934 |
|
8935 |
-
#: src/
|
8936 |
-
|
8937 |
-
msgid "You can look up the offending IP Address here: %s"
|
8938 |
msgstr ""
|
8939 |
|
8940 |
-
#: src/
|
8941 |
-
msgid "
|
8942 |
msgstr ""
|
8943 |
|
8944 |
-
#: src/
|
8945 |
-
msgid "
|
|
|
|
|
8946 |
msgstr ""
|
8947 |
|
8948 |
-
#: src/
|
8949 |
-
|
8950 |
-
msgid "Last Scan: %s"
|
8951 |
msgstr ""
|
8952 |
|
8953 |
-
#: src/
|
8954 |
-
msgid "
|
8955 |
msgstr ""
|
8956 |
|
8957 |
-
#: src/
|
8958 |
-
msgid "
|
8959 |
msgstr ""
|
8960 |
|
8961 |
-
#: src/
|
8962 |
-
msgid "
|
8963 |
msgstr ""
|
8964 |
|
8965 |
-
#: src/
|
8966 |
-
msgid "
|
8967 |
msgstr ""
|
8968 |
|
8969 |
-
#: src/
|
8970 |
-
msgid "
|
|
|
|
|
8971 |
msgstr ""
|
8972 |
|
8973 |
-
#: src/
|
8974 |
-
msgid "
|
|
|
8975 |
msgstr ""
|
8976 |
|
8977 |
-
#: src/
|
8978 |
-
msgid "
|
|
|
8979 |
msgstr ""
|
8980 |
|
8981 |
-
#: src/
|
8982 |
-
msgid "
|
8983 |
msgstr ""
|
8984 |
|
8985 |
-
#: src/
|
8986 |
-
msgid "
|
8987 |
msgstr ""
|
8988 |
|
8989 |
-
#: src/
|
8990 |
msgid ""
|
8991 |
-
"
|
|
|
8992 |
msgstr ""
|
8993 |
|
8994 |
-
#: src/
|
8995 |
-
msgid "
|
8996 |
msgstr ""
|
8997 |
|
8998 |
-
#: src/
|
8999 |
-
msgid "
|
9000 |
msgstr ""
|
9001 |
|
9002 |
-
#: src/
|
9003 |
-
msgid "
|
9004 |
msgstr ""
|
9005 |
|
9006 |
-
#: src/
|
9007 |
-
msgid "
|
9008 |
msgstr ""
|
9009 |
|
9010 |
-
#: src/
|
9011 |
-
msgid "
|
9012 |
msgstr ""
|
9013 |
|
9014 |
-
#: src/
|
9015 |
-
msgid ""
|
9016 |
-
"Detect changes to core WordPress files when compared to the official "
|
9017 |
-
"distribution"
|
9018 |
msgstr ""
|
9019 |
|
9020 |
-
#: src/
|
9021 |
-
msgid ""
|
9022 |
-
"Detect files which aren't part of the official WordPress.org distribution"
|
9023 |
msgstr ""
|
9024 |
|
9025 |
-
#: src/
|
9026 |
-
msgid "
|
|
|
|
|
9027 |
msgstr ""
|
9028 |
|
9029 |
-
#: src/
|
9030 |
-
msgid "
|
9031 |
msgstr ""
|
9032 |
|
9033 |
-
#: src/
|
9034 |
-
|
9035 |
-
#: src/processors/hack_protect.php:280 src/processors/hack_protect.php:300
|
9036 |
-
#: src/processors/hack_protect.php:308 src/processors/hack_protect.php:309
|
9037 |
-
#: src/processors/hack_protect.php:310
|
9038 |
-
msgid "unknown"
|
9039 |
msgstr ""
|
9040 |
|
9041 |
-
#: src/
|
9042 |
-
|
9043 |
-
|
9044 |
-
|
9045 |
msgstr ""
|
9046 |
|
9047 |
-
#: src/
|
9048 |
-
msgid "
|
|
|
|
|
9049 |
msgstr ""
|
9050 |
|
9051 |
-
#: src/
|
9052 |
-
msgid "
|
9053 |
msgstr ""
|
9054 |
|
9055 |
-
#: src/
|
9056 |
-
msgid "
|
|
|
|
|
9057 |
msgstr ""
|
9058 |
|
9059 |
-
#: src/
|
9060 |
-
msgid "
|
9061 |
msgstr ""
|
9062 |
|
9063 |
-
#: src/
|
9064 |
-
|
9065 |
-
msgid "Re-Install"
|
9066 |
msgstr ""
|
9067 |
|
9068 |
-
#: src/
|
9069 |
-
msgid "
|
|
|
|
|
9070 |
msgstr ""
|
9071 |
|
9072 |
-
#: src/
|
9073 |
-
msgid "
|
9074 |
msgstr ""
|
9075 |
|
9076 |
-
#: src/
|
9077 |
-
|
|
|
9078 |
msgstr ""
|
9079 |
|
9080 |
-
#: src/
|
|
|
9081 |
#, php-format
|
9082 |
-
msgid "%s
|
9083 |
msgstr ""
|
9084 |
|
9085 |
-
#: src/
|
9086 |
msgid ""
|
9087 |
-
"
|
9088 |
msgstr ""
|
9089 |
|
9090 |
-
#: src/
|
9091 |
-
|
9092 |
-
|
|
|
9093 |
msgstr ""
|
9094 |
|
9095 |
-
#: src/
|
9096 |
#, php-format
|
9097 |
-
msgid "
|
9098 |
msgstr ""
|
9099 |
|
9100 |
-
#: src/
|
9101 |
-
msgid "
|
9102 |
msgstr ""
|
9103 |
|
9104 |
-
#: src/
|
9105 |
-
|
|
|
9106 |
msgstr ""
|
9107 |
|
9108 |
-
#: src/
|
9109 |
-
|
9110 |
-
msgid "
|
9111 |
msgstr ""
|
9112 |
|
9113 |
-
#: src/
|
9114 |
-
msgid ""
|
9115 |
-
"You must examine the file(s) carefully to determine whether suspicious code "
|
9116 |
-
"is really present."
|
9117 |
msgstr ""
|
9118 |
|
9119 |
-
#: src/
|
9120 |
-
|
9121 |
-
msgid ""
|
9122 |
-
"The %s Malware Scanner searches for common malware patterns and so false "
|
9123 |
-
"positives (detection errors) are to be expected sometimes."
|
9124 |
msgstr ""
|
9125 |
|
9126 |
-
#: src/
|
9127 |
-
|
9128 |
-
#: src/processors/hackprotect_scan_ufc.php:115
|
9129 |
-
#: src/processors/hackprotect_scan_wcf.php:98
|
9130 |
-
#: src/processors/user_management.php:202
|
9131 |
-
#: src/processors/user_management.php:234
|
9132 |
-
msgid "Site URL"
|
9133 |
msgstr ""
|
9134 |
|
9135 |
-
#: src/
|
9136 |
-
|
9137 |
-
#, php-format
|
9138 |
-
msgid "%s has already attempted to repair the files."
|
9139 |
msgstr ""
|
9140 |
|
9141 |
-
#: src/
|
9142 |
-
|
9143 |
-
msgid ""
|
9144 |
-
"But, you should always check these files to ensure everything is as you "
|
9145 |
-
"expect."
|
9146 |
msgstr ""
|
9147 |
|
9148 |
-
#: src/
|
9149 |
-
|
9150 |
-
msgid ""
|
9151 |
-
"You should review these files and replace them with official versions if "
|
9152 |
-
"required."
|
9153 |
msgstr ""
|
9154 |
|
9155 |
-
#: src/
|
9156 |
-
|
9157 |
-
msgid ""
|
9158 |
-
"Alternatively you can have the plugin attempt to repair/replace these files "
|
9159 |
-
"automatically."
|
9160 |
msgstr ""
|
9161 |
|
9162 |
-
#: src/
|
9163 |
-
|
9164 |
-
#: src/processors/hackprotect_scan_wcf.php:117
|
9165 |
-
msgid "We recommend you run the scanner to review your site"
|
9166 |
msgstr ""
|
9167 |
|
9168 |
-
#: src/
|
9169 |
-
|
9170 |
-
#: src/processors/hackprotect_scan_wcf.php:122
|
9171 |
-
msgid "More Info On This Scanner"
|
9172 |
msgstr ""
|
9173 |
|
9174 |
-
#: src/
|
9175 |
-
msgid "
|
9176 |
msgstr ""
|
9177 |
|
9178 |
-
#: src/
|
9179 |
-
msgid "
|
9180 |
msgstr ""
|
9181 |
|
9182 |
-
#: src/
|
9183 |
-
msgid ""
|
9184 |
-
"WordPress will now download and install the latest available version of this "
|
9185 |
-
"plugin."
|
9186 |
msgstr ""
|
9187 |
|
9188 |
-
#: src/
|
9189 |
-
msgid ""
|
9190 |
-
"In case of possible failure, it may be better to do this while the plugin is "
|
9191 |
-
"inactive."
|
9192 |
msgstr ""
|
9193 |
|
9194 |
-
#: src/
|
9195 |
-
msgid "
|
9196 |
msgstr ""
|
9197 |
|
9198 |
-
#: src/
|
9199 |
-
msgid "
|
9200 |
msgstr ""
|
9201 |
|
9202 |
-
#: src/
|
9203 |
-
msgid ""
|
9204 |
-
"You can choose to 'Activate Only' (not recommended), or close this message "
|
9205 |
-
"to cancel activation."
|
9206 |
msgstr ""
|
9207 |
|
9208 |
-
#: src/
|
9209 |
-
|
9210 |
-
msgid ""
|
9211 |
-
"For best security practices, %s will download and re-install the latest "
|
9212 |
-
"available version of this plugin."
|
9213 |
msgstr ""
|
9214 |
|
9215 |
-
#: src/
|
9216 |
-
|
9217 |
-
msgid ""
|
9218 |
-
"%s has detected at least 1 Plugins/Themes have been modified on your site."
|
9219 |
msgstr ""
|
9220 |
|
9221 |
-
#: src/
|
9222 |
-
msgid ""
|
9223 |
-
"You will receive only 1 email notification about these changes in a 1 week "
|
9224 |
-
"period."
|
9225 |
msgstr ""
|
9226 |
|
9227 |
-
#: src/
|
9228 |
-
msgid "
|
9229 |
msgstr ""
|
9230 |
|
9231 |
-
#: src/
|
9232 |
-
|
|
|
9233 |
msgstr ""
|
9234 |
|
9235 |
-
#: src/
|
9236 |
-
msgid "
|
|
|
9237 |
msgstr ""
|
9238 |
|
9239 |
-
#: src/
|
9240 |
-
msgid "
|
|
|
|
|
9241 |
msgstr ""
|
9242 |
|
9243 |
-
#: src/
|
9244 |
-
msgid "
|
|
|
9245 |
msgstr ""
|
9246 |
|
9247 |
-
#: src/
|
9248 |
-
|
9249 |
-
msgid "The %s Unrecognised File Scanner found files which you need to review."
|
9250 |
msgstr ""
|
9251 |
|
9252 |
-
#: src/
|
9253 |
-
|
|
|
9254 |
msgstr ""
|
9255 |
|
9256 |
-
#: src/
|
9257 |
-
|
9258 |
-
msgid "%s has attempted to delete these files based on your current settings."
|
9259 |
msgstr ""
|
9260 |
|
9261 |
-
#: src/
|
9262 |
-
msgid "
|
9263 |
msgstr ""
|
9264 |
|
9265 |
-
#: src/
|
9266 |
#, php-format
|
9267 |
-
msgid "
|
9268 |
msgstr ""
|
9269 |
|
9270 |
-
#: src/
|
9271 |
-
msgid "
|
9272 |
msgstr ""
|
9273 |
|
9274 |
-
#: src/
|
9275 |
-
msgid "
|
9276 |
msgstr ""
|
9277 |
|
9278 |
-
#: src/
|
9279 |
-
msgid "
|
9280 |
msgstr ""
|
9281 |
|
9282 |
-
#: src/
|
9283 |
#, php-format
|
9284 |
-
msgid ""
|
9285 |
-
"%s has discovered that the currently installed version of the %s plugin has "
|
9286 |
-
"known security vulnerabilities."
|
9287 |
msgstr ""
|
9288 |
|
9289 |
-
#: src/
|
9290 |
-
msgid "
|
9291 |
msgstr ""
|
9292 |
|
9293 |
-
#: src/
|
9294 |
-
msgid "
|
9295 |
msgstr ""
|
9296 |
|
9297 |
-
#: src/
|
9298 |
-
msgid "
|
9299 |
msgstr ""
|
9300 |
|
9301 |
-
#: src/
|
9302 |
-
|
9303 |
-
msgid "
|
9304 |
msgstr ""
|
9305 |
|
9306 |
-
#: src/
|
9307 |
-
|
|
|
9308 |
msgstr ""
|
9309 |
|
9310 |
-
#: src/
|
9311 |
-
|
9312 |
-
msgid "Vulnerability Title: %s"
|
9313 |
msgstr ""
|
9314 |
|
9315 |
-
#: src/
|
9316 |
-
|
9317 |
-
msgid "Vulnerability Type: %s"
|
9318 |
msgstr ""
|
9319 |
|
9320 |
-
#: src/
|
9321 |
-
|
9322 |
-
msgid "Fixed Version: %s"
|
9323 |
msgstr ""
|
9324 |
|
9325 |
-
#: src/
|
9326 |
-
|
9327 |
-
msgid "
|
9328 |
msgstr ""
|
9329 |
|
9330 |
-
#: src/
|
9331 |
-
msgid "
|
9332 |
msgstr ""
|
9333 |
|
9334 |
-
#: src/
|
9335 |
-
msgid "
|
9336 |
msgstr ""
|
9337 |
|
9338 |
-
#: src/
|
9339 |
-
|
9340 |
-
msgid "
|
9341 |
msgstr ""
|
9342 |
|
9343 |
-
#: src/
|
9344 |
-
|
9345 |
-
msgid "Time remaining on black list: %s"
|
9346 |
msgstr ""
|
9347 |
|
9348 |
-
#: src/
|
9349 |
-
|
9350 |
-
|
9351 |
-
msgid_plural "%s minutes"
|
9352 |
-
msgstr[0] ""
|
9353 |
-
msgstr[1] ""
|
9354 |
|
9355 |
-
#: src/
|
9356 |
-
|
9357 |
-
msgid ""
|
9358 |
-
"You tripped the security plugin defenses a total of %s times making you a "
|
9359 |
-
"suspect."
|
9360 |
msgstr ""
|
9361 |
|
9362 |
-
#: src/
|
9363 |
msgid ""
|
9364 |
-
"
|
9365 |
-
"
|
9366 |
msgstr ""
|
9367 |
|
9368 |
-
#: src/
|
9369 |
-
msgid "
|
9370 |
msgstr ""
|
9371 |
|
9372 |
-
#: src/
|
9373 |
-
msgid ""
|
9374 |
-
"You can automatically unblock your IP address by clicking the button below."
|
9375 |
msgstr ""
|
9376 |
|
9377 |
-
#: src/
|
9378 |
-
msgid "
|
9379 |
msgstr ""
|
9380 |
|
9381 |
-
#: src/
|
9382 |
-
|
|
|
9383 |
msgstr ""
|
9384 |
|
9385 |
-
#: src/
|
9386 |
-
|
|
|
9387 |
msgstr ""
|
9388 |
|
9389 |
-
#: src/
|
9390 |
#, php-format
|
9391 |
msgid ""
|
9392 |
-
"
|
9393 |
-
"
|
9394 |
msgstr ""
|
9395 |
|
9396 |
-
#: src/
|
9397 |
#, php-format
|
9398 |
-
msgid "
|
9399 |
msgstr ""
|
9400 |
|
9401 |
-
#: src/
|
9402 |
-
msgid "
|
|
|
|
|
9403 |
msgstr ""
|
9404 |
|
9405 |
-
#: src/
|
9406 |
-
|
9407 |
-
msgid "You must wait %s seconds before attempting this action again."
|
9408 |
msgstr ""
|
9409 |
|
9410 |
-
#: src/
|
9411 |
-
|
|
|
9412 |
msgstr ""
|
9413 |
|
9414 |
-
#: src/
|
9415 |
-
msgid "
|
9416 |
msgstr ""
|
9417 |
|
9418 |
-
#: src/
|
9419 |
-
|
|
|
9420 |
msgstr ""
|
9421 |
|
9422 |
-
#: src/
|
9423 |
-
msgid "
|
9424 |
msgstr ""
|
9425 |
|
9426 |
-
#: src/
|
9427 |
-
msgid "
|
|
|
|
|
9428 |
msgstr ""
|
9429 |
|
9430 |
-
#: src/
|
9431 |
-
msgid "
|
9432 |
msgstr ""
|
9433 |
|
9434 |
-
#: src/
|
9435 |
-
msgid "
|
9436 |
msgstr ""
|
9437 |
|
9438 |
-
#: src/
|
9439 |
-
msgid "
|
9440 |
msgstr ""
|
9441 |
|
9442 |
-
#: src/
|
9443 |
-
msgid "
|
9444 |
msgstr ""
|
9445 |
|
9446 |
-
#: src/
|
9447 |
-
msgid "
|
9448 |
msgstr ""
|
9449 |
|
9450 |
-
#: src/
|
9451 |
-
msgid "
|
|
|
9452 |
msgstr ""
|
9453 |
|
9454 |
-
#: src/
|
9455 |
-
msgid "
|
9456 |
msgstr ""
|
9457 |
|
9458 |
-
#: src/
|
9459 |
-
msgid "
|
9460 |
msgstr ""
|
9461 |
|
9462 |
-
#: src/
|
9463 |
-
msgid "
|
9464 |
msgstr ""
|
9465 |
|
9466 |
-
#: src/
|
9467 |
-
|
9468 |
-
msgid "%s Login Verification"
|
9469 |
msgstr ""
|
9470 |
|
9471 |
-
#: src/
|
9472 |
-
|
9473 |
-
|
|
|
|
|
9474 |
msgstr ""
|
9475 |
|
9476 |
-
#: src/
|
9477 |
-
|
9478 |
-
msgid "%s day"
|
9479 |
-
msgid_plural "%s days"
|
9480 |
-
msgstr[0] ""
|
9481 |
-
msgstr[1] ""
|
9482 |
-
|
9483 |
-
#: src/processors/loginprotect_intentprovider_backup.php:24
|
9484 |
-
msgid "Generate ONE-Time Backup 2FA Login Code"
|
9485 |
msgstr ""
|
9486 |
|
9487 |
-
#: src/
|
9488 |
-
msgid "
|
9489 |
msgstr ""
|
9490 |
|
9491 |
-
#: src/
|
9492 |
-
msgid ""
|
9493 |
-
"Backup login codes are not available if you do not have any other two-factor "
|
9494 |
-
"authentication modes active."
|
9495 |
msgstr ""
|
9496 |
|
9497 |
-
#: src/
|
9498 |
-
msgid ""
|
9499 |
-
"Click to generate a backup login code for your two-factor authentication."
|
9500 |
msgstr ""
|
9501 |
|
9502 |
-
#: src/
|
9503 |
-
msgid ""
|
9504 |
-
"This code will be displayed only once and you may use it to verify your "
|
9505 |
-
"login only once."
|
9506 |
msgstr ""
|
9507 |
|
9508 |
-
#: src/
|
9509 |
-
msgid "
|
|
|
|
|
9510 |
msgstr ""
|
9511 |
|
9512 |
-
#: src/
|
9513 |
-
msgid "
|
9514 |
msgstr ""
|
9515 |
|
9516 |
-
#: src/
|
9517 |
-
|
9518 |
-
msgid ""
|
9519 |
-
"Use your Google Authenticator app to scan this QR code and enter the one "
|
9520 |
-
"time password below."
|
9521 |
msgstr ""
|
9522 |
|
9523 |
-
#: src/
|
9524 |
-
|
9525 |
-
msgid ""
|
9526 |
-
"If you have a problem with scanning the QR code enter this code manually "
|
9527 |
-
"into the app."
|
9528 |
msgstr ""
|
9529 |
|
9530 |
-
#: src/
|
9531 |
-
|
9532 |
-
msgid "Check the box to remove Google Authenticator login authentication."
|
9533 |
msgstr ""
|
9534 |
|
9535 |
-
#: src/
|
9536 |
-
|
9537 |
-
#, php-format
|
9538 |
-
msgid "Remove %s"
|
9539 |
msgstr ""
|
9540 |
|
9541 |
-
#: src/
|
9542 |
-
msgid "
|
9543 |
msgstr ""
|
9544 |
|
9545 |
-
#: src/
|
9546 |
-
#: src/
|
9547 |
-
msgid "
|
9548 |
msgstr ""
|
9549 |
|
9550 |
-
#: src/
|
9551 |
-
|
9552 |
-
msgid "Scan This QR Code"
|
9553 |
msgstr ""
|
9554 |
|
9555 |
-
#: src/
|
9556 |
-
msgid "
|
9557 |
msgstr ""
|
9558 |
|
9559 |
-
#: src/
|
9560 |
-
|
9561 |
-
|
9562 |
-
|
9563 |
-
msgid "Sorry, %s may not be added to another user's account."
|
9564 |
msgstr ""
|
9565 |
|
9566 |
-
#: src/
|
9567 |
-
#: src/processors/loginprotect_intentprovider_ga.php:54
|
9568 |
-
#: src/processors/loginprotect_intentprovider_yubikey.php:43
|
9569 |
-
#, php-format
|
9570 |
msgid ""
|
9571 |
-
"
|
9572 |
-
"
|
9573 |
msgstr ""
|
9574 |
|
9575 |
-
#: src/
|
9576 |
-
msgid "
|
9577 |
msgstr ""
|
9578 |
|
9579 |
-
#: src/
|
9580 |
-
|
9581 |
-
#: src/processors/loginprotect_intentprovider_ga.php:55
|
9582 |
-
#: src/processors/loginprotect_intentprovider_yubikey.php:44
|
9583 |
-
#, php-format
|
9584 |
-
msgid "Provided by %s"
|
9585 |
msgstr ""
|
9586 |
|
9587 |
-
#: src/
|
9588 |
-
|
9589 |
-
#: src/processors/loginprotect_intentprovider_yubikey.php:45
|
9590 |
-
msgid "Understand how to remove Google Authenticator"
|
9591 |
msgstr ""
|
9592 |
|
9593 |
-
#: src/
|
9594 |
-
msgid "
|
|
|
|
|
9595 |
msgstr ""
|
9596 |
|
9597 |
-
#: src/
|
9598 |
-
msgid "
|
9599 |
msgstr ""
|
9600 |
|
9601 |
-
#: src/
|
9602 |
-
msgid ""
|
9603 |
-
"This is a quick notice to inform you that your Backup Login code was just "
|
9604 |
-
"used."
|
9605 |
msgstr ""
|
9606 |
|
9607 |
-
#: src/
|
9608 |
-
msgid "
|
9609 |
msgstr ""
|
9610 |
|
9611 |
-
#: src/
|
9612 |
msgid ""
|
9613 |
-
"
|
9614 |
-
"
|
9615 |
-
msgstr ""
|
9616 |
-
|
9617 |
-
#: src/processors/loginprotect_intentprovider_backup.php:162
|
9618 |
-
#: src/processors/loginprotect_intentprovider_email.php:153
|
9619 |
-
msgid "Login Details"
|
9620 |
msgstr ""
|
9621 |
|
9622 |
-
#: src/
|
9623 |
-
|
9624 |
-
msgid "URL"
|
9625 |
msgstr ""
|
9626 |
|
9627 |
-
#: src/
|
9628 |
-
msgid "
|
9629 |
msgstr ""
|
9630 |
|
9631 |
-
#: src/
|
9632 |
-
msgid "
|
9633 |
msgstr ""
|
9634 |
|
9635 |
-
#: src/
|
9636 |
-
msgid "
|
9637 |
msgstr ""
|
9638 |
|
9639 |
-
#: src/
|
9640 |
-
msgid "Email
|
9641 |
msgstr ""
|
9642 |
|
9643 |
-
#: src/
|
9644 |
-
msgid "
|
|
|
|
|
9645 |
msgstr ""
|
9646 |
|
9647 |
-
#: src/
|
9648 |
-
msgid "
|
9649 |
msgstr ""
|
9650 |
|
9651 |
-
#: src/
|
9652 |
-
|
9653 |
-
msgid "Verification Code: %s"
|
9654 |
msgstr ""
|
9655 |
|
9656 |
-
#: src/
|
9657 |
-
msgid "
|
9658 |
msgstr ""
|
9659 |
|
9660 |
-
#: src/
|
9661 |
-
msgid "
|
9662 |
msgstr ""
|
9663 |
|
9664 |
-
#: src/
|
9665 |
-
msgid "
|
|
|
|
|
9666 |
msgstr ""
|
9667 |
|
9668 |
-
#: src/
|
9669 |
-
msgid "
|
9670 |
msgstr ""
|
9671 |
|
9672 |
-
#: src/
|
9673 |
-
msgid "
|
9674 |
msgstr ""
|
9675 |
|
9676 |
-
#: src/
|
9677 |
-
|
9678 |
-
|
9679 |
msgstr ""
|
9680 |
|
9681 |
-
#: src/
|
9682 |
-
|
9683 |
-
msgid "Google Authenticator was successfully removed from the account."
|
9684 |
msgstr ""
|
9685 |
|
9686 |
-
#: src/
|
9687 |
-
|
9688 |
-
"
|
9689 |
-
"code is correct."
|
9690 |
msgstr ""
|
9691 |
|
9692 |
-
#: src/
|
9693 |
-
|
9694 |
-
msgid "One Time Password (OTP) was not valid."
|
9695 |
msgstr ""
|
9696 |
|
9697 |
-
#: src/
|
9698 |
-
|
9699 |
-
msgid "Please try again."
|
9700 |
msgstr ""
|
9701 |
|
9702 |
-
#: src/
|
9703 |
msgid ""
|
9704 |
-
"
|
9705 |
-
"
|
9706 |
msgstr ""
|
9707 |
|
9708 |
-
#: src/
|
9709 |
-
|
9710 |
-
"
|
9711 |
-
"but it failed."
|
9712 |
msgstr ""
|
9713 |
|
9714 |
-
#: src/
|
9715 |
-
|
9716 |
-
msgid "%s was successfully added to your account."
|
9717 |
msgstr ""
|
9718 |
|
9719 |
-
#: src/
|
9720 |
-
msgid "
|
9721 |
msgstr ""
|
9722 |
|
9723 |
-
#: src/
|
9724 |
msgid ""
|
9725 |
-
"
|
9726 |
-
"
|
9727 |
msgstr ""
|
9728 |
|
9729 |
-
#: src/
|
9730 |
-
msgid "
|
|
|
|
|
9731 |
msgstr ""
|
9732 |
|
9733 |
-
#: src/
|
9734 |
-
msgid "
|
9735 |
msgstr ""
|
9736 |
|
9737 |
-
#: src/
|
9738 |
-
msgid "
|
9739 |
msgstr ""
|
9740 |
|
9741 |
-
#: src/
|
9742 |
-
msgid "
|
|
|
|
|
9743 |
msgstr ""
|
9744 |
|
9745 |
-
#: src/
|
9746 |
-
msgid "
|
9747 |
msgstr ""
|
9748 |
|
9749 |
-
#: src/
|
9750 |
-
msgid "
|
9751 |
msgstr ""
|
9752 |
|
9753 |
-
#: src/
|
9754 |
-
msgid "
|
9755 |
msgstr ""
|
9756 |
|
9757 |
-
#: src/
|
9758 |
-
msgid "
|
9759 |
msgstr ""
|
9760 |
|
9761 |
-
#: src/
|
9762 |
msgid ""
|
9763 |
-
"
|
9764 |
-
"
|
9765 |
msgstr ""
|
9766 |
|
9767 |
-
#: src/
|
9768 |
-
msgid "
|
9769 |
msgstr ""
|
9770 |
|
9771 |
-
#: src/
|
9772 |
-
|
9773 |
-
msgid "Yubikey OTP"
|
9774 |
msgstr ""
|
9775 |
|
9776 |
-
#: src/
|
9777 |
-
msgid "
|
|
|
9778 |
msgstr ""
|
9779 |
|
9780 |
-
#: src/
|
9781 |
-
|
9782 |
-
msgid "%s was removed from your profile."
|
9783 |
msgstr ""
|
9784 |
|
9785 |
-
#: src/
|
9786 |
-
|
9787 |
-
msgid "Yubikey Device"
|
9788 |
msgstr ""
|
9789 |
|
9790 |
-
#: src/
|
9791 |
-
|
9792 |
-
msgid "%s was added to your profile."
|
9793 |
msgstr ""
|
9794 |
|
9795 |
-
#: src/
|
9796 |
-
msgid "
|
9797 |
msgstr ""
|
9798 |
|
9799 |
-
#: src/
|
9800 |
-
msgid "Use
|
9801 |
msgstr ""
|
9802 |
|
9803 |
-
#: src/
|
9804 |
msgid ""
|
9805 |
-
"
|
9806 |
-
"
|
9807 |
msgstr ""
|
9808 |
|
9809 |
-
#: src/
|
9810 |
-
|
9811 |
-
#, php-format
|
9812 |
-
msgid ""
|
9813 |
-
"Can not use the Rename WP Login feature because you have the \"%s\" plugin "
|
9814 |
-
"installed and it is active."
|
9815 |
msgstr ""
|
9816 |
|
9817 |
-
#: src/
|
9818 |
-
|
|
|
|
|
|
|
9819 |
msgid ""
|
9820 |
-
"
|
|
|
9821 |
msgstr ""
|
9822 |
|
9823 |
-
#: src/
|
9824 |
-
|
|
|
|
|
9825 |
msgstr ""
|
9826 |
|
9827 |
-
#: src/
|
9828 |
-
|
9829 |
-
msgid ""
|
9830 |
-
"Can not use the Rename WP Login feature because you have chosen a path (\"%s"
|
9831 |
-
"\") that is reserved on your WordPress site."
|
9832 |
msgstr ""
|
9833 |
|
9834 |
-
#: src/
|
9835 |
-
msgid ""
|
9836 |
-
"Your login URL is unchanged because your current hosting/PHP configuration "
|
9837 |
-
"cannot parse the necessary information."
|
9838 |
msgstr ""
|
9839 |
|
9840 |
-
#: src/
|
9841 |
-
|
9842 |
-
msgid "%s is provided by %s"
|
9843 |
msgstr ""
|
9844 |
|
9845 |
-
#: src/
|
9846 |
-
|
9847 |
-
msgid "Days Installed: %s"
|
9848 |
msgstr ""
|
9849 |
|
9850 |
-
#: src/
|
9851 |
-
msgid "
|
9852 |
msgstr ""
|
9853 |
|
9854 |
-
#: src/
|
9855 |
-
msgid "
|
|
|
|
|
9856 |
msgstr ""
|
9857 |
|
9858 |
-
#: src/
|
9859 |
-
msgid "
|
9860 |
msgstr ""
|
9861 |
|
9862 |
-
#: src/
|
9863 |
-
msgid "
|
9864 |
msgstr ""
|
9865 |
|
9866 |
-
#: src/
|
9867 |
-
msgid "
|
9868 |
msgstr ""
|
9869 |
|
9870 |
-
#: src/
|
9871 |
-
msgid "
|
|
|
|
|
9872 |
msgstr ""
|
9873 |
|
9874 |
-
#: src/
|
9875 |
-
msgid "
|
9876 |
msgstr ""
|
9877 |
|
9878 |
-
#: src/
|
9879 |
-
msgid "
|
9880 |
msgstr ""
|
9881 |
|
9882 |
-
#: src/
|
9883 |
-
msgid "
|
9884 |
msgstr ""
|
9885 |
|
9886 |
-
#: src/
|
9887 |
-
msgid "
|
9888 |
msgstr ""
|
9889 |
|
9890 |
-
#: src/
|
9891 |
-
msgid "
|
9892 |
msgstr ""
|
9893 |
|
9894 |
-
#: src/
|
9895 |
-
|
9896 |
-
|
|
|
9897 |
msgstr ""
|
9898 |
|
9899 |
-
#: src/
|
9900 |
-
msgid "
|
9901 |
msgstr ""
|
9902 |
|
9903 |
-
#: src/
|
9904 |
-
msgid "
|
9905 |
msgstr ""
|
9906 |
|
9907 |
-
#: src/
|
9908 |
-
|
9909 |
-
msgid "The secret key is found in: %s"
|
9910 |
msgstr ""
|
9911 |
|
9912 |
-
#: src/
|
9913 |
-
msgid "
|
|
|
|
|
9914 |
msgstr ""
|
9915 |
|
9916 |
-
#: src/
|
9917 |
-
msgid "
|
9918 |
msgstr ""
|
9919 |
|
9920 |
-
#: src/
|
9921 |
-
msgid "
|
9922 |
msgstr ""
|
9923 |
|
9924 |
-
#: src/
|
9925 |
-
msgid "
|
9926 |
msgstr ""
|
9927 |
|
9928 |
-
#: src/
|
9929 |
msgid ""
|
9930 |
-
"
|
9931 |
-
"site after the automatic import"
|
9932 |
msgstr ""
|
9933 |
|
9934 |
-
#: src/
|
9935 |
-
msgid "
|
9936 |
msgstr ""
|
9937 |
|
9938 |
-
#: src/
|
9939 |
-
msgid "
|
9940 |
msgstr ""
|
9941 |
|
9942 |
-
#: src/
|
9943 |
-
msgid "
|
|
|
|
|
9944 |
msgstr ""
|
9945 |
|
9946 |
-
#: src/
|
9947 |
-
msgid "
|
9948 |
msgstr ""
|
9949 |
|
9950 |
-
#: src/
|
9951 |
-
msgid "
|
9952 |
msgstr ""
|
9953 |
|
9954 |
-
#: src/
|
9955 |
-
msgid "
|
9956 |
msgstr ""
|
9957 |
|
9958 |
-
#: src/
|
9959 |
-
|
|
|
9960 |
msgstr ""
|
9961 |
|
9962 |
-
#: src/
|
9963 |
-
|
|
|
|
|
9964 |
msgstr ""
|
9965 |
|
9966 |
-
#: src/
|
9967 |
-
|
9968 |
-
#, php-format
|
9969 |
-
msgid "Not currently running %s Pro."
|
9970 |
msgstr ""
|
9971 |
|
9972 |
-
#: src/
|
9973 |
-
|
9974 |
-
msgid "Export of options is currently disabled."
|
9975 |
msgstr ""
|
9976 |
|
9977 |
-
#: src/
|
9978 |
-
|
|
|
9979 |
msgstr ""
|
9980 |
|
9981 |
-
#: src/
|
9982 |
-
|
|
|
9983 |
msgstr ""
|
9984 |
|
9985 |
-
#: src/
|
9986 |
-
|
|
|
9987 |
msgstr ""
|
9988 |
|
9989 |
-
#: src/
|
9990 |
-
|
9991 |
-
msgid "User Status"
|
9992 |
msgstr ""
|
9993 |
|
9994 |
-
#: src/
|
9995 |
-
msgid "
|
9996 |
msgstr ""
|
9997 |
|
9998 |
-
#: src/
|
9999 |
-
msgid "
|
10000 |
msgstr ""
|
10001 |
|
10002 |
-
#: src/
|
10003 |
-
|
10004 |
-
msgid ""
|
10005 |
-
"As requested, %s is notifying you of a successful %s login to a WordPress "
|
10006 |
-
"site that you manage."
|
10007 |
msgstr ""
|
10008 |
|
10009 |
-
#: src/
|
10010 |
-
|
10011 |
-
msgid "
|
10012 |
msgstr ""
|
10013 |
|
10014 |
-
#: src/
|
10015 |
-
msgid ""
|
10016 |
-
"This user may now be subject to additional Two-Factor Authentication before "
|
10017 |
-
"completing their login."
|
10018 |
msgstr ""
|
10019 |
|
10020 |
-
#: src/
|
10021 |
-
|
|
|
|
|
|
|
10022 |
msgstr ""
|
10023 |
|
10024 |
-
#: src/
|
10025 |
-
|
10026 |
-
msgid "Thanks."
|
10027 |
msgstr ""
|
10028 |
|
10029 |
-
#: src/
|
10030 |
-
#: src/
|
10031 |
-
msgid "
|
10032 |
msgstr ""
|
10033 |
|
10034 |
-
#: src/
|
10035 |
-
|
10036 |
-
msgid "%s Just Logged Into %s"
|
10037 |
msgstr ""
|
10038 |
|
10039 |
-
#: src/
|
10040 |
-
|
10041 |
-
msgid "%s is notifying you of a successful login to your WordPress account."
|
10042 |
msgstr ""
|
10043 |
|
10044 |
-
#: src/
|
10045 |
-
|
|
|
10046 |
msgstr ""
|
10047 |
|
10048 |
-
#: src/
|
10049 |
-
|
10050 |
-
"
|
10051 |
-
"immediately."
|
10052 |
msgstr ""
|
10053 |
|
10054 |
-
#: src/
|
10055 |
-
|
|
|
10056 |
msgstr ""
|
10057 |
|
10058 |
-
#: src/
|
10059 |
-
|
10060 |
-
msgid "Your password has expired (after %s days)."
|
10061 |
msgstr ""
|
10062 |
|
10063 |
-
#: src/
|
10064 |
-
msgid ""
|
10065 |
-
"Your password doesn't meet requirements set by your security administrator."
|
10066 |
msgstr ""
|
10067 |
|
10068 |
-
#: src/
|
10069 |
-
msgid ""
|
10070 |
-
"For your security, please use the password section below to update your "
|
10071 |
-
"password."
|
10072 |
msgstr ""
|
10073 |
|
10074 |
-
#: src/
|
10075 |
-
msgid ""
|
10076 |
-
"Your security administrator has imposed requirements for password quality."
|
10077 |
msgstr ""
|
10078 |
|
10079 |
-
#: src/
|
10080 |
-
|
|
|
10081 |
msgstr ""
|
10082 |
|
10083 |
-
#: src/
|
10084 |
-
|
10085 |
-
msgid "Password length (%s) too short (min: %s characters)"
|
10086 |
msgstr ""
|
10087 |
|
10088 |
-
#: src/
|
10089 |
-
#: src/
|
10090 |
-
msgid "
|
10091 |
msgstr ""
|
10092 |
|
10093 |
-
#: src/
|
10094 |
-
msgid "
|
10095 |
msgstr ""
|
10096 |
|
10097 |
-
#: src/
|
10098 |
-
#: src/
|
10099 |
-
|
10100 |
-
msgid "%s times"
|
10101 |
msgstr ""
|
10102 |
|
10103 |
-
#: src/
|
10104 |
-
msgid "
|
10105 |
msgstr ""
|
10106 |
|
10107 |
-
#: src/
|
10108 |
-
msgid "
|
10109 |
msgstr ""
|
10110 |
|
10111 |
-
#: src/
|
10112 |
-
msgid "
|
10113 |
msgstr ""
|
10114 |
|
10115 |
-
#: src/
|
10116 |
-
msgid "
|
10117 |
msgstr ""
|
10118 |
|
10119 |
-
#: src/
|
10120 |
#, php-format
|
10121 |
-
msgid "
|
10122 |
-
|
|
|
|
|
10123 |
|
10124 |
-
#: src/
|
10125 |
-
msgid "
|
10126 |
msgstr ""
|
10127 |
|
10128 |
-
#: src/
|
10129 |
-
msgid "
|
10130 |
msgstr ""
|
10131 |
|
10132 |
-
#: src/
|
10133 |
-
msgid "
|
10134 |
msgstr ""
|
10135 |
|
10136 |
-
#: src/
|
10137 |
-
|
10138 |
-
#: src/processors/usermanagement_suspend.php:156
|
10139 |
-
msgid "Suspended"
|
10140 |
msgstr ""
|
10141 |
|
10142 |
-
#: src/
|
10143 |
-
|
|
|
|
|
|
|
10144 |
msgstr ""
|
10145 |
|
10146 |
-
#: src/
|
10147 |
-
|
|
|
10148 |
msgstr ""
|
10149 |
|
10150 |
-
#: src/
|
10151 |
-
|
|
|
10152 |
msgstr ""
|
10153 |
|
10154 |
-
#: src/
|
10155 |
-
|
10156 |
-
"
|
10157 |
-
"administrator."
|
10158 |
msgstr ""
|
10159 |
|
10160 |
-
#: src/wizards/base.php:
|
10161 |
msgid "Next Step"
|
10162 |
msgstr ""
|
10163 |
|
10164 |
-
#: src/wizards/base.php:
|
10165 |
#, php-format
|
10166 |
msgid "%s Wizard"
|
10167 |
msgstr ""
|
10168 |
|
10169 |
-
#: src/wizards/base.php:
|
10170 |
msgid "No Access"
|
10171 |
msgstr ""
|
10172 |
|
10173 |
-
#: src/wizards/base_wpsf.php:
|
10174 |
-
msgid "Security Admin
|
10175 |
msgstr ""
|
10176 |
|
10177 |
-
#: src/wizards/login_protect.php:
|
10178 |
#, php-format
|
10179 |
msgid "%s Multi-Factor Authentication Wizard"
|
10180 |
msgstr ""
|
10181 |
|
10182 |
-
#: src/wizards/login_protect.php:
|
10183 |
msgid "Invalid email address"
|
10184 |
msgstr ""
|
10185 |
|
10186 |
-
#: src/wizards/login_protect.php:
|
10187 |
msgid "Verification email sent (please check your email including your SPAM)."
|
10188 |
msgstr ""
|
10189 |
|
10190 |
-
#: src/wizards/login_protect.php:
|
10191 |
msgid ""
|
10192 |
"Enter the code from the email into the form above and click the button to "
|
10193 |
"verify."
|
10194 |
msgstr ""
|
10195 |
|
10196 |
-
#: src/wizards/
|
10197 |
-
msgid "Code was empty."
|
10198 |
-
msgstr ""
|
10199 |
-
|
10200 |
-
#: src/wizards/login_protect.php:143
|
10201 |
-
msgid "Google Authenticator was enabled for the site."
|
10202 |
-
msgstr ""
|
10203 |
-
|
10204 |
-
#: src/wizards/login_protect.php:158
|
10205 |
-
#, php-format
|
10206 |
-
msgid "Multi-Factor Authentication was %s for the site."
|
10207 |
-
msgstr ""
|
10208 |
-
|
10209 |
-
#: src/wizards/login_protect.php:159
|
10210 |
-
msgid "enabled"
|
10211 |
-
msgstr ""
|
10212 |
-
|
10213 |
-
#: src/wizards/login_protect.php:159
|
10214 |
-
msgid "disabled"
|
10215 |
-
msgstr ""
|
10216 |
-
|
10217 |
-
#: src/wizards/plugin.php:14
|
10218 |
#, php-format
|
10219 |
msgid "%s Welcome Wizard"
|
10220 |
msgstr ""
|
10221 |
|
10222 |
-
#: src/wizards/plugin.php:
|
10223 |
msgid "Where to find Shield"
|
10224 |
msgstr ""
|
10225 |
|
10226 |
-
#: src/wizards/plugin.php:
|
10227 |
msgid "Accessing Each Module"
|
10228 |
msgstr ""
|
10229 |
|
10230 |
-
#: src/wizards/plugin.php:
|
10231 |
msgid "Accessing Options"
|
10232 |
msgstr ""
|
10233 |
|
10234 |
-
#: src/wizards/plugin.php:
|
10235 |
msgid "Launching Wizards"
|
10236 |
msgstr ""
|
10237 |
|
10238 |
-
#: src/wizards/plugin.php:
|
10239 |
msgid "Finding Help"
|
10240 |
msgstr ""
|
10241 |
|
10242 |
-
#: src/wizards/plugin.php:
|
10243 |
msgid "Actions (not Options)"
|
10244 |
msgstr ""
|
10245 |
|
10246 |
-
#: src/wizards/plugin.php:
|
10247 |
msgid "Help For Each Option"
|
10248 |
msgstr ""
|
10249 |
|
10250 |
-
#: src/wizards/plugin.php:
|
10251 |
msgid "Module On/Off Switch"
|
10252 |
msgstr ""
|
10253 |
|
10254 |
-
#: src/wizards/plugin.php:
|
10255 |
#, php-format
|
10256 |
msgid "You'll find the main %s settings in the left-hand WordPress menu."
|
10257 |
msgstr ""
|
10258 |
|
10259 |
-
#: src/wizards/plugin.php:
|
10260 |
msgid ""
|
10261 |
"Shield is split up into independent modules for accessing the options of "
|
10262 |
"each feature."
|
10263 |
msgstr ""
|
10264 |
|
10265 |
-
#: src/wizards/plugin.php:
|
10266 |
msgid ""
|
10267 |
"When you load a module, you can access the options by clicking on the "
|
10268 |
"Options Panel link."
|
10269 |
msgstr ""
|
10270 |
|
10271 |
-
#: src/wizards/plugin.php:
|
10272 |
msgid "Launch helpful walk-through wizards for modules that have them."
|
10273 |
msgstr ""
|
10274 |
|
10275 |
-
#: src/wizards/plugin.php:
|
10276 |
msgid ""
|
10277 |
"Each module also has a brief overview help section - there is more in-depth "
|
10278 |
"help available."
|
10279 |
msgstr ""
|
10280 |
|
10281 |
-
#: src/wizards/plugin.php:
|
10282 |
msgid ""
|
10283 |
"Certain modules have extra actions and features, e.g. Audit Trail Viewer."
|
10284 |
msgstr ""
|
10285 |
|
10286 |
-
#: src/wizards/plugin.php:
|
10287 |
msgid "Note: Not all modules have the actions section"
|
10288 |
msgstr ""
|
10289 |
|
10290 |
-
#: src/wizards/plugin.php:
|
10291 |
msgid ""
|
10292 |
"Each module has an Enable/Disable checkbox to turn on/off all processing for "
|
10293 |
"that module"
|
10294 |
msgstr ""
|
10295 |
|
10296 |
-
#: src/wizards/plugin.php:
|
10297 |
msgid ""
|
10298 |
"To help you understand each option, most of them have a more info link, and/"
|
10299 |
"or a blog link, to read more"
|
10300 |
msgstr ""
|
10301 |
|
10302 |
-
#: src/wizards/plugin.php:
|
10303 |
msgid "IP address was empty."
|
10304 |
msgstr ""
|
10305 |
|
10306 |
-
#: src/wizards/plugin.php:
|
10307 |
msgid "IP address wasn't a valid public IP address."
|
10308 |
msgstr ""
|
10309 |
|
10310 |
-
#: src/wizards/plugin.php:
|
10311 |
-
msgid "
|
10312 |
msgstr ""
|
10313 |
|
10314 |
-
#: src/wizards/plugin.php:
|
10315 |
msgid "Success!"
|
10316 |
msgstr ""
|
10317 |
|
10318 |
-
#: src/wizards/plugin.php:
|
10319 |
msgid "License was found and successfully installed."
|
10320 |
msgstr ""
|
10321 |
|
10322 |
-
#: src/wizards/plugin.php:
|
10323 |
msgid "License could not be found."
|
10324 |
msgstr ""
|
10325 |
|
10326 |
-
#: src/wizards/plugin.php:
|
10327 |
msgid "Options imported successfully to your site."
|
10328 |
msgstr ""
|
10329 |
|
10330 |
-
#: src/wizards/plugin.php:
|
10331 |
msgid "Secret key was empty."
|
10332 |
msgstr ""
|
10333 |
|
10334 |
-
#: src/wizards/plugin.php:
|
10335 |
msgid "Secret key was not 40 characters long."
|
10336 |
msgstr ""
|
10337 |
|
10338 |
-
#: src/wizards/plugin.php:
|
10339 |
msgid ""
|
10340 |
"Secret key contains invalid characters - it should be letters and numbers "
|
10341 |
"only."
|
10342 |
msgstr ""
|
10343 |
|
10344 |
-
#: src/wizards/plugin.php:
|
10345 |
msgid "Source site URL could not be parsed correctly."
|
10346 |
msgstr ""
|
10347 |
|
10348 |
-
#: src/wizards/plugin.php:
|
10349 |
msgid "Could not parse the response from the site."
|
10350 |
msgstr ""
|
10351 |
|
10352 |
-
#: src/wizards/plugin.php:
|
10353 |
msgid "Check the secret key is correct for the remote site."
|
10354 |
msgstr ""
|
10355 |
|
10356 |
-
#: src/wizards/plugin.php:
|
10357 |
msgid "Failure response returned from the site."
|
10358 |
msgstr ""
|
10359 |
|
10360 |
-
#: src/wizards/plugin.php:
|
10361 |
#, php-format
|
10362 |
msgid "Remote site responded with - %s"
|
10363 |
msgstr ""
|
10364 |
|
10365 |
-
#: src/wizards/plugin.php:
|
10366 |
msgid "Data returned from the site was empty."
|
10367 |
msgstr ""
|
10368 |
|
10369 |
-
#: src/wizards/plugin.php:
|
10370 |
-
msgid "Security Admin
|
10371 |
msgstr ""
|
10372 |
|
10373 |
-
#: src/wizards/plugin.php:
|
10374 |
-
|
10375 |
-
#: src/wizards/plugin.php:679
|
10376 |
-
msgid "No changes were made as no option was selected"
|
10377 |
msgstr ""
|
10378 |
|
10379 |
-
#: src/wizards/plugin.php:
|
10380 |
-
|
10381 |
-
msgid "Enabled"
|
10382 |
msgstr ""
|
10383 |
|
10384 |
-
#: src/wizards/plugin.php:
|
10385 |
-
#: src/wizards/plugin.php:
|
10386 |
-
|
10387 |
-
msgid "%s setting could not be changed at this time."
|
10388 |
msgstr ""
|
10389 |
|
10390 |
-
#: src/wizards/plugin.php:
|
10391 |
-
|
|
|
|
|
10392 |
msgstr ""
|
10393 |
|
10394 |
-
#: src/wizards/plugin.php:
|
10395 |
-
|
|
|
|
|
|
|
10396 |
msgstr ""
|
10397 |
|
10398 |
-
#: src/wizards/plugin.php:
|
10399 |
-
|
|
|
10400 |
msgstr ""
|
10401 |
|
10402 |
-
#: src/wizards/plugin.php:
|
10403 |
-
msgid "
|
10404 |
msgstr ""
|
10405 |
|
10406 |
#~ msgid "Google"
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: WPSF v2.0\n"
|
4 |
+
"POT-Creation-Date: 2022-02-01 15:09+0000\n"
|
5 |
+
"PO-Revision-Date: 2022-02-01 15:09+0000\n"
|
6 |
"Last-Translator: \n"
|
7 |
"Language-Team: \n"
|
8 |
"Language: en_GB\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
13 |
+
"X-Generator: Poedit 3.0.1\n"
|
14 |
"X-Poedit-KeywordsList: _wpsf__;gettext;gettext_noop;_wpsf_e;_n;_n:1,2;__;_e\n"
|
15 |
"X-Poedit-Basepath: ..\n"
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
|
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
"X-Poedit-SearchPathExcluded-0: .git\n"
|
19 |
"X-Poedit-SearchPathExcluded-1: .idea\n"
|
22 |
"X-Poedit-SearchPathExcluded-4: src/lib/vendor\n"
|
23 |
"X-Poedit-SearchPathExcluded-5: resources\n"
|
24 |
|
25 |
+
#: src/lib/src/Controller/Controller.php:658
|
26 |
+
msgid "Update Now To Keep Your Security Current With The Latest Features."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: src/lib/src/Modules/AuditTrail/AdminNotices.php:46
|
30 |
+
msgid "Your Security Audit Log Is Brand New"
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: src/lib/src/Modules/AuditTrail/AdminNotices.php:48
|
34 |
+
msgid ""
|
35 |
+
"We've completely completely rewritten the security audit log making it more "
|
36 |
+
"detailed, searchable, faster, and more."
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: src/lib/src/Modules/AuditTrail/AdminNotices.php:49
|
40 |
+
msgid ""
|
41 |
+
"Every effort has been made to convert old data to the new format, but it "
|
42 |
+
"wasn't 100% possible."
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: src/lib/src/Modules/AuditTrail/AdminNotices.php:50
|
46 |
+
msgid ""
|
47 |
+
"Some older events may have missing data, but all new events will populate "
|
48 |
+
"properly."
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: src/lib/src/Modules/AuditTrail/AdminNotices.php:52
|
52 |
+
msgid "Click here to read more about the changes"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: src/lib/src/Modules/AuditTrail/Auditors/Emails.php:21
|
56 |
+
msgid "not provided"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: src/lib/src/Modules/AuditTrail/Insights/OverviewCards.php:20
|
60 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:208
|
61 |
+
msgid "Audit Areas"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: src/lib/src/Modules/AuditTrail/Insights/OverviewCards.php:22
|
65 |
+
msgid "All important events on your site are being logged"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: src/lib/src/Modules/AuditTrail/Insights/OverviewCards.php:27
|
69 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:189
|
70 |
+
#: src/lib/src/Modules/AuditTrail/UI.php:22
|
71 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:50
|
72 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:159
|
73 |
+
#: src/lib/src/Modules/Insights/UI.php:199
|
74 |
+
#: src/lib/src/Modules/Insights/UI.php:200
|
75 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:212
|
76 |
+
#: src/lib/src/Modules/Plugin/Strings.php:530 src/wizards/plugin.php:591
|
77 |
+
#: src/wizards/plugin.php:596
|
78 |
+
msgid "Audit Trail"
|
79 |
msgstr ""
|
80 |
|
81 |
+
#: src/lib/src/Modules/AuditTrail/Insights/OverviewCards.php:29
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
#, php-format
|
83 |
+
msgid "Audit Trail entries limited to maximum %s days"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
msgstr ""
|
85 |
|
86 |
+
#: src/lib/src/Modules/AuditTrail/Insights/OverviewCards.php:38
|
87 |
+
msgid "Activity Audit Log"
|
88 |
msgstr ""
|
89 |
|
90 |
+
#: src/lib/src/Modules/AuditTrail/Lib/AuditMessageBuilder.php:29
|
91 |
+
#, php-format
|
92 |
+
msgid "This event repeated %s times in the last 24hrs."
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: src/lib/src/Modules/AuditTrail/Lib/LogTable/LoadRawTableData.php:27
|
96 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:88
|
97 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:126
|
98 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:193
|
99 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:194
|
100 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:198
|
101 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:60
|
102 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:66
|
103 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:72
|
104 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:100
|
105 |
+
msgid "Unknown"
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: src/lib/src/Modules/AuditTrail/ModCon.php:98
|
109 |
#, php-format
|
110 |
msgid "[%s] Audit Trail Entries"
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: src/lib/src/Modules/AuditTrail/ModCon.php:100
|
114 |
+
#, php-format
|
115 |
+
msgid "[%s] Audit Trail Entries referencing the given user."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:15
|
119 |
+
msgid "Plugin Activated"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:17
|
123 |
+
msgid "Plugin \"{{plugin}}\" was activated."
|
124 |
msgstr ""
|
125 |
|
126 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:21
|
127 |
+
msgid "Plugin Deactivated"
|
|
|
128 |
msgstr ""
|
129 |
|
130 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:23
|
131 |
+
msgid "Plugin \"{{plugin}}\" was deactivated."
|
132 |
msgstr ""
|
133 |
|
134 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:27
|
135 |
+
msgid "Plugin Upgraded"
|
|
|
136 |
msgstr ""
|
137 |
|
138 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:29
|
139 |
+
msgid ""
|
140 |
+
"Plugin \"{{plugin}}\" was upgraded from version {{from}} to version {{to}}."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:33
|
144 |
+
msgid "Plugin File Edited"
|
|
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:35
|
148 |
+
msgid ""
|
149 |
+
"An attempt was made to edit the plugin file \"{{file}}\" directly through "
|
150 |
+
"the WordPress editor."
|
|
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:39
|
154 |
+
msgid "Theme Activated"
|
|
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:41
|
158 |
+
msgid "Theme \"{{theme}}\" was activated."
|
|
|
|
|
|
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:45
|
162 |
+
msgid "Theme File Edited"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:47
|
|
|
166 |
msgid ""
|
167 |
+
"An attempt was made to edit the theme file \"{{file}}\" directly through the "
|
168 |
+
"WordPress editor."
|
|
|
|
|
|
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:51
|
172 |
+
msgid "Theme Upgraded"
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:53
|
176 |
+
msgid ""
|
177 |
+
"Theme \"{{theme}}\" was upgraded from version {{from}} to version {{to}}."
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:57
|
181 |
+
msgid "WP Core Updated"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:59
|
185 |
+
msgid "WordPress Core was updated from \"{{from}}\" to \"{{to}}\"."
|
186 |
msgstr ""
|
187 |
|
188 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:63
|
189 |
+
msgid "Permalinks Updated"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:65
|
193 |
+
msgid ""
|
194 |
+
"WordPress Permalinks Structure was updated from \"{{from}}\" to \"{{to}}\"."
|
195 |
msgstr ""
|
196 |
|
197 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:69
|
198 |
+
msgid "Post Deleted"
|
|
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:71
|
202 |
+
msgid ""
|
203 |
+
"WordPress Post entitled \"{{title}}\" was permanently deleted from trash."
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:75
|
207 |
+
msgid "Post Trashed"
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:77
|
211 |
+
msgid "Post entitled \"{{title}}\" was trashed."
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:78
|
215 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:85
|
216 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:92
|
217 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:99
|
218 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:106
|
219 |
+
msgid "Post Type: {{type}}"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:82
|
223 |
+
msgid "Post Recovered"
|
|
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:84
|
227 |
+
msgid "Post entitled \"{{title}}\" was recovered from trash."
|
|
|
|
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:89
|
231 |
+
msgid "Post Updated"
|
|
|
|
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:91
|
235 |
+
msgid "Post entitled \"{{title}}\" was updated."
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:96
|
239 |
+
msgid "Post Published"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:98
|
243 |
+
msgid "Post entitled \"{{title}}\" was published."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:103
|
247 |
+
msgid "Post Unpublished"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:105
|
251 |
+
msgid "Post entitled \"{{title}}\" was unpublished."
|
|
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:110
|
255 |
+
msgid "User Login"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:112
|
259 |
+
msgid "Attempted user login by \"{{user_login}}\" was successful."
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:116
|
263 |
+
msgid "User Login By App Password"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:118
|
267 |
+
msgid ""
|
268 |
+
"Attempted login by \"{{user_login}}\" using application password was "
|
269 |
+
"successful."
|
270 |
msgstr ""
|
271 |
|
272 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:122
|
273 |
+
msgid "User Registered"
|
|
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:124
|
277 |
+
msgid "New WordPress user registered."
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:125
|
281 |
+
msgid "New username is \"{{user_login}}\" with email address \"{{email}}\"."
|
282 |
msgstr ""
|
283 |
|
284 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:129
|
285 |
+
msgid "User Deleted"
|
286 |
msgstr ""
|
287 |
|
288 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:131
|
289 |
+
msgid "WordPress user deleted."
|
|
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:132
|
293 |
+
msgid "Username was \"{{user_login}}\" with email address \"{{email}}\"."
|
294 |
msgstr ""
|
295 |
|
296 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:136
|
297 |
+
msgid "User Deleted And Reassigned"
|
298 |
msgstr ""
|
299 |
|
300 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:138
|
301 |
+
msgid "Deleted user posts were reassigned to user \"{{user_login}}\"."
|
|
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:142
|
305 |
+
msgid "Email Sent"
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:144
|
309 |
+
msgid "There was an attempt to send an email using the \"wp_mail\" function."
|
310 |
msgstr ""
|
311 |
|
312 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:145
|
313 |
+
msgid ""
|
314 |
+
"This log entry doesn't mean it was sent or received successfully, but only "
|
315 |
+
"that an attempt was made."
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:146
|
319 |
+
msgid "It was sent to \"{{to}}\" with the subject \"{{subject}}\"."
|
320 |
msgstr ""
|
321 |
|
322 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:148
|
323 |
+
msgid ""
|
324 |
+
"The \"wp_mail\" function was called from the file \"{{bt_file}}\" on line "
|
325 |
+
"{{bt_line}}."
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:159
|
329 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:500
|
330 |
+
msgid "Users"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:160
|
334 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:122
|
335 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPlugins.php:62
|
336 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:166
|
337 |
+
msgid "Plugins"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:161
|
341 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:128
|
342 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionThemes.php:64
|
343 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:185
|
344 |
+
msgid "Themes"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:162
|
348 |
+
msgid "WordPress"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:163
|
352 |
+
msgid "Posts"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:164
|
356 |
+
msgid "Emails"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:165
|
360 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:235
|
361 |
+
msgid "Time"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:166
|
365 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:422
|
366 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:43
|
367 |
+
msgid "Event"
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:167
|
371 |
+
#: src/lib/src/Modules/IPs/Strings.php:154
|
372 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:128
|
373 |
+
msgid "Message"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:168
|
377 |
+
#: src/lib/src/Modules/Base/Strings.php:57
|
378 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:205
|
379 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:236
|
380 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:420
|
381 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:116
|
382 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:108
|
383 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:208
|
384 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:233
|
385 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:89
|
386 |
+
#: src/lib/src/Modules/UserManagement/UI.php:32
|
387 |
+
#: src/lib/src/Tables/Render/WpListTable/AdminNotes.php:27
|
388 |
+
msgid "Username"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:169
|
392 |
+
msgid "Category"
|
|
|
|
|
|
|
|
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:170
|
396 |
+
#: src/lib/src/Modules/Base/Strings.php:68
|
397 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:206
|
398 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:117
|
399 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:109
|
400 |
+
#: src/lib/src/Modules/Plugin/Strings.php:519
|
401 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:210
|
402 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:234
|
403 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:87
|
404 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:75
|
405 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBase.php:17
|
406 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:33
|
407 |
+
#: src/lib/src/Tables/Render/WpListTable/IpWhite.php:12
|
408 |
+
msgid "IP Address"
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:171
|
412 |
+
#: src/lib/src/Tables/Build/Ip.php:70 src/lib/src/Tables/Build/Sessions.php:77
|
413 |
+
msgid "You"
|
414 |
msgstr ""
|
415 |
|
416 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:172
|
417 |
+
msgid "There are currently no audit entries in this section."
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:184
|
421 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:19
|
422 |
+
#: src/lib/src/Modules/Base/Strings.php:46
|
423 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:71
|
424 |
+
#: src/lib/src/Modules/Firewall/Strings.php:19
|
425 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:114
|
426 |
+
#: src/lib/src/Modules/Headers/Strings.php:19
|
427 |
+
#: src/lib/src/Modules/IPs/Strings.php:174
|
428 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:39
|
429 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:78
|
430 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:40
|
431 |
+
#: src/lib/src/Modules/Sessions/Strings.php:52
|
432 |
+
#: src/lib/src/Modules/Traffic/Strings.php:34
|
433 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:109
|
434 |
+
msgid "On"
|
435 |
msgstr ""
|
436 |
|
437 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:184
|
438 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:19
|
439 |
+
#: src/lib/src/Modules/Base/Strings.php:47
|
440 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:71
|
441 |
+
#: src/lib/src/Modules/Firewall/Strings.php:19
|
442 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:114
|
443 |
+
#: src/lib/src/Modules/Headers/Strings.php:19
|
444 |
+
#: src/lib/src/Modules/IPs/Strings.php:174
|
445 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:39
|
446 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:78
|
447 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:40
|
448 |
+
#: src/lib/src/Modules/Sessions/Strings.php:52
|
449 |
+
#: src/lib/src/Modules/Traffic/Strings.php:34
|
450 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:109
|
451 |
+
msgid "Off"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:185
|
455 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:20
|
456 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:72
|
457 |
+
#: src/lib/src/Modules/Firewall/Strings.php:20
|
458 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:115
|
459 |
+
#: src/lib/src/Modules/Headers/Strings.php:20
|
460 |
+
#: src/lib/src/Modules/IPs/Strings.php:175
|
461 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:40
|
462 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:76
|
463 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:41
|
464 |
+
#: src/lib/src/Modules/Sessions/Strings.php:53
|
465 |
+
#: src/lib/src/Modules/Traffic/Strings.php:35
|
466 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:110
|
467 |
#, php-format
|
468 |
+
msgid "Enable Module: %s"
|
|
|
|
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:188
|
472 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:196
|
473 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:205
|
474 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:22
|
475 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:30
|
476 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:40
|
477 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:51
|
478 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:61
|
479 |
+
#: src/lib/src/Modules/Base/Strings.php:192
|
480 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:74
|
481 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:83
|
482 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:90
|
483 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:99
|
484 |
+
#: src/lib/src/Modules/Firewall/Strings.php:23
|
485 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:109
|
486 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:117
|
487 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:126
|
488 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:136
|
489 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:147
|
490 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:158
|
491 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:223
|
492 |
+
#: src/lib/src/Modules/Headers/Strings.php:23
|
493 |
+
#: src/lib/src/Modules/Headers/Strings.php:31
|
494 |
+
#: src/lib/src/Modules/Headers/Strings.php:40
|
495 |
+
#: src/lib/src/Modules/IPs/Strings.php:177
|
496 |
+
#: src/lib/src/Modules/IPs/Strings.php:187
|
497 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:43
|
498 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:51
|
499 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:60
|
500 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:69
|
501 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:80
|
502 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:89
|
503 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:98
|
504 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:107
|
505 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:117
|
506 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:126
|
507 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:135
|
508 |
+
#: src/lib/src/Modules/Plugin/Strings.php:136
|
509 |
+
#: src/lib/src/Modules/Plugin/Strings.php:144
|
510 |
+
#: src/lib/src/Modules/Plugin/Strings.php:152
|
511 |
+
#: src/lib/src/Modules/Plugin/Strings.php:171
|
512 |
+
#: src/lib/src/Modules/Reporting/Strings.php:99
|
513 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:43
|
514 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:52
|
515 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:61
|
516 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:71
|
517 |
+
#: src/lib/src/Modules/Sessions/Strings.php:55
|
518 |
+
#: src/lib/src/Modules/Traffic/Strings.php:37
|
519 |
+
#: src/lib/src/Modules/Traffic/Strings.php:46
|
520 |
+
#: src/lib/src/Modules/Traffic/Strings.php:55
|
521 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:112
|
522 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:121
|
523 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:130
|
524 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:139
|
525 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:148
|
526 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:158
|
527 |
+
msgid "Purpose"
|
528 |
msgstr ""
|
529 |
|
530 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:188
|
531 |
msgid ""
|
532 |
+
"The Audit Trail is designed so you can look back on events and analyse what "
|
533 |
+
"happened and what may have gone wrong."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:189
|
537 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:197
|
538 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:206
|
539 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:23
|
540 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:31
|
541 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:43
|
542 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:52
|
543 |
+
#: src/lib/src/Modules/Base/Strings.php:193
|
544 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:75
|
545 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:91
|
546 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:100
|
547 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:186
|
548 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:215
|
549 |
+
#: src/lib/src/Modules/Firewall/Strings.php:24
|
550 |
+
#: src/lib/src/Modules/Firewall/Strings.php:32
|
551 |
+
#: src/lib/src/Modules/Firewall/Strings.php:43
|
552 |
+
#: src/lib/src/Modules/Firewall/Strings.php:52
|
553 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:118
|
554 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:127
|
555 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:138
|
556 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:149
|
557 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:160
|
558 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:224
|
559 |
+
#: src/lib/src/Modules/Headers/Strings.php:24
|
560 |
+
#: src/lib/src/Modules/Headers/Strings.php:32
|
561 |
+
#: src/lib/src/Modules/Headers/Strings.php:41
|
562 |
+
#: src/lib/src/Modules/IPs/Strings.php:178
|
563 |
+
#: src/lib/src/Modules/IPs/Strings.php:188
|
564 |
+
#: src/lib/src/Modules/IPs/Strings.php:204
|
565 |
+
#: src/lib/src/Modules/IPs/Strings.php:217
|
566 |
+
#: src/lib/src/Modules/IPs/Strings.php:228
|
567 |
+
#: src/lib/src/Modules/IPs/Strings.php:393
|
568 |
+
#: src/lib/src/Modules/Integrations/Strings.php:54
|
569 |
+
#: src/lib/src/Modules/Integrations/Strings.php:67
|
570 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:44
|
571 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:52
|
572 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:61
|
573 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:70
|
574 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:81
|
575 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:90
|
576 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:108
|
577 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:127
|
578 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:309
|
579 |
+
#: src/lib/src/Modules/Plugin/Strings.php:173
|
580 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:44
|
581 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:53
|
582 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:62
|
583 |
+
#: src/lib/src/Modules/Sessions/Strings.php:56
|
584 |
+
#: src/lib/src/Modules/Traffic/Strings.php:38
|
585 |
+
#: src/lib/src/Modules/Traffic/Strings.php:47
|
586 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:113
|
587 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:122
|
588 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:131
|
589 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:140
|
590 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:149
|
591 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:159
|
592 |
+
msgid "Recommendation"
|
593 |
msgstr ""
|
594 |
|
595 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:189
|
596 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:23
|
597 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:75
|
598 |
+
#: src/lib/src/Modules/Firewall/Strings.php:24
|
599 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:118
|
600 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:127
|
601 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:139
|
602 |
+
#: src/lib/src/Modules/IPs/Strings.php:178
|
603 |
+
#: src/lib/src/Modules/IPs/Strings.php:188
|
604 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:44
|
605 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:81
|
606 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:44
|
607 |
+
#: src/lib/src/Modules/Sessions/Strings.php:56
|
608 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:113
|
609 |
+
#, php-format
|
610 |
+
msgid "Keep the %s feature turned on."
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:194
|
614 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:199
|
615 |
+
msgid "Log To DB"
|
616 |
msgstr ""
|
617 |
|
618 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:196
|
619 |
+
msgid "Provides finer control over the audit trail itself."
|
620 |
msgstr ""
|
621 |
|
622 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:197
|
623 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:206
|
624 |
+
#: src/lib/src/Modules/Traffic/Strings.php:47
|
625 |
+
msgid "These settings are dependent on your requirements."
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:203
|
629 |
+
msgid "Enable Audit Areas"
|
|
|
|
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:205
|
633 |
+
msgid "Specify which types of actions on your site are logged."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:234
|
637 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:86
|
638 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:130
|
639 |
+
#: src/lib/src/Modules/Firewall/Strings.php:80
|
640 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:183
|
641 |
+
#: src/lib/src/Modules/Headers/Strings.php:68
|
642 |
+
#: src/lib/src/Modules/IPs/Strings.php:254
|
643 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:96
|
644 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:165
|
645 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:108
|
646 |
+
#: src/lib/src/Modules/Sessions/Strings.php:82
|
647 |
+
#: src/lib/src/Modules/Traffic/Strings.php:86
|
648 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:186
|
649 |
+
#, php-format
|
650 |
+
msgid "Enable %s Module"
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:235
|
654 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:87
|
655 |
+
#: src/lib/src/Modules/Firewall/Strings.php:81
|
656 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:184
|
657 |
+
#: src/lib/src/Modules/Headers/Strings.php:69
|
658 |
+
#: src/lib/src/Modules/IPs/Strings.php:255
|
659 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:97
|
660 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:166
|
661 |
+
#: src/lib/src/Modules/Sessions/Strings.php:83
|
662 |
+
#: src/lib/src/Modules/Traffic/Strings.php:87
|
663 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:187
|
664 |
+
#, php-format
|
665 |
+
msgid "Enable (or Disable) The %s Module"
|
666 |
msgstr ""
|
667 |
|
668 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:236
|
669 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:88
|
670 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:132
|
671 |
+
#: src/lib/src/Modules/Firewall/Strings.php:82
|
672 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:185
|
673 |
+
#: src/lib/src/Modules/Headers/Strings.php:70
|
674 |
+
#: src/lib/src/Modules/IPs/Strings.php:256
|
675 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:98
|
676 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:167
|
677 |
+
#: src/lib/src/Modules/Sessions/Strings.php:84
|
678 |
+
#: src/lib/src/Modules/Traffic/Strings.php:88
|
679 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:188
|
680 |
+
#, php-format
|
681 |
+
msgid "Un-Checking this option will completely disable the %s module."
|
682 |
msgstr ""
|
683 |
|
684 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:240
|
685 |
+
msgid "Logging Level"
|
686 |
msgstr ""
|
687 |
|
688 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:241
|
689 |
+
msgid "Logging Level For DB-Based Logs"
|
690 |
msgstr ""
|
691 |
|
692 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:243
|
693 |
+
msgid "Specify the logging levels when using the local database."
|
694 |
msgstr ""
|
695 |
|
696 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:244
|
697 |
msgid ""
|
698 |
+
"Debug and Info logging should only be enabled when investigating specific "
|
699 |
+
"problems."
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:247
|
703 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:275
|
704 |
+
msgid "View all event details and their assigned levels"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:253
|
708 |
+
msgid "Auto Clean"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:254
|
712 |
+
msgid "Automatically Purge Audit Log Entries Older Than The Set Number Of Days"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:256
|
716 |
msgid ""
|
717 |
+
"Events older than the number of days specified will be automatically cleaned "
|
718 |
+
"from the database."
|
719 |
msgstr ""
|
720 |
|
721 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:259
|
|
|
722 |
#, php-format
|
723 |
+
msgid "Upgrade to PRO to increase limit beyond %s days."
|
|
|
|
|
|
|
|
|
724 |
msgstr ""
|
725 |
|
726 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:265
|
727 |
+
msgid "File Logging Level"
|
|
|
|
|
|
|
|
|
|
|
728 |
msgstr ""
|
729 |
|
730 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:266
|
731 |
+
msgid "Logging Level For File-Based Logs"
|
|
|
|
|
732 |
msgstr ""
|
733 |
|
734 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:268
|
735 |
+
msgid "Specify the logging levels when using the local filesystem."
|
736 |
msgstr ""
|
737 |
|
738 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:270
|
739 |
+
msgid "Log File Location"
|
740 |
msgstr ""
|
741 |
|
742 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:278
|
743 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/ScanAlerts.php:40
|
744 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:81
|
745 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:48
|
746 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:227
|
747 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:231
|
748 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:255
|
749 |
+
#: src/lib/src/Modules/IPs/UI.php:84 src/lib/src/Modules/Integrations/UI.php:34
|
750 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:109
|
751 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:118
|
752 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:136
|
753 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:186
|
754 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:207
|
755 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:209
|
756 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:273
|
757 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:294
|
758 |
+
#: src/lib/src/Modules/Plugin/Strings.php:175
|
759 |
+
#: src/lib/src/Modules/Plugin/Strings.php:179
|
760 |
+
#: src/lib/src/Modules/Plugin/Strings.php:338
|
761 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:135
|
762 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:162
|
763 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:169
|
764 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:190
|
765 |
+
#: src/lib/src/Modules/Traffic/Strings.php:145
|
766 |
+
#: src/lib/src/Tables/Render/WpListTable/AdminNotes.php:26
|
767 |
+
msgid "Note"
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: src/lib/src/Modules/AuditTrail/Strings.php:279
|
771 |
+
#, php-format
|
772 |
+
msgid "Log files will be rotated daily up to a limit of %s."
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: src/lib/src/Modules/AuditTrail/UI.php:22
|
776 |
+
msgid "Logs"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:23
|
780 |
+
msgid "Core Update"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:26
|
784 |
+
msgid "WordPress Core is up-to-date"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:27
|
788 |
+
msgid "No WordPress Core upgrades waiting to be applied"
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:29
|
792 |
+
msgid "Core upgrades should be applied as early as possible."
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:34
|
796 |
+
msgid "Auto Core Updates"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:37
|
800 |
+
msgid "Minor WP Core updates will be installed automatically"
|
|
|
|
|
|
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:38
|
804 |
+
msgid "Minor WP Core updates will not be installed automatically"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:44
|
808 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:152
|
809 |
+
msgid "Update Delay"
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:47
|
813 |
+
msgid "Automatic updates are applied after a short delay"
|
814 |
msgstr ""
|
815 |
|
816 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:48
|
817 |
+
msgid "Automatic updates are applied immediately"
|
818 |
msgstr ""
|
819 |
|
820 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:56
|
821 |
+
msgid "Self Auto-Update"
|
822 |
msgstr ""
|
823 |
|
824 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:59
|
825 |
+
#, php-format
|
826 |
+
msgid "%s upgrades are installed automatically"
|
827 |
msgstr ""
|
828 |
|
829 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:60
|
830 |
+
#, php-format
|
831 |
+
msgid "%s upgrades aren't installed automatically"
|
832 |
msgstr ""
|
833 |
|
834 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:70
|
835 |
+
msgid "Automatic Updates Are Not Disabled As Expected."
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:72
|
839 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPlugins.php:62
|
840 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionThemes.php:64
|
841 |
+
#: src/lib/src/Modules/Insights/UI.php:48
|
842 |
+
#, php-format
|
843 |
+
msgid "Go To %s"
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:72
|
847 |
+
#: src/lib/src/Modules/Base/Strings.php:42
|
848 |
+
#: src/lib/src/Modules/Base/Strings.php:61
|
849 |
+
#: src/lib/src/Modules/Base/Strings.php:123
|
850 |
+
#: src/lib/src/Modules/Insights/Strings.php:19
|
851 |
+
#: src/lib/src/Modules/Insights/UI.php:49
|
852 |
+
msgid "Options"
|
853 |
msgstr ""
|
854 |
|
855 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:73
|
856 |
+
#, php-format
|
857 |
+
msgid ""
|
858 |
+
"A plugin/theme other than %s is affecting your automatic update settings."
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:87
|
862 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:23
|
863 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:210
|
864 |
+
#: src/lib/src/Modules/Plugin/Strings.php:533
|
865 |
+
msgid "Automatic Updates"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:91
|
869 |
+
msgid "Controlling WordPress Automatic Updates"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:100
|
873 |
+
msgid "Inactive Plugins"
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:103
|
877 |
#, php-format
|
878 |
+
msgid "There are %s inactive and unused plugins"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:104
|
882 |
+
msgid "There appears to be no unused plugins"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:106
|
886 |
+
msgid "Unused plugins should be removed."
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:111
|
890 |
+
msgid "Plugin Updates"
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:114
|
894 |
+
#, php-format
|
895 |
+
msgid "There are %s plugin updates available to be applied"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:115
|
899 |
+
msgid "All available plugin updates have been applied"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:117
|
903 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:146
|
904 |
+
msgid "Updates should be applied as early as possible."
|
905 |
msgstr ""
|
906 |
|
907 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:129
|
908 |
+
msgid "Inactive Themes"
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:132
|
912 |
+
#, php-format
|
913 |
+
msgid "There are %s inactive and unused themes"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:133
|
917 |
+
msgid "There appears to be no unused themes"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:135
|
921 |
+
msgid "Unused themes should be removed."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:140
|
925 |
+
msgid "Theme Updates"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:143
|
929 |
+
#, php-format
|
930 |
+
msgid "There are %s theme updates available to be applied"
|
931 |
msgstr ""
|
932 |
|
933 |
+
#: src/lib/src/Modules/Autoupdates/Insights/OverviewCards.php:144
|
934 |
+
msgid "All available theme updates have been applied"
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:357
|
938 |
+
#, php-format
|
939 |
+
msgid ""
|
940 |
+
"This is a quick notification from the %s that WordPress Automatic Updates "
|
941 |
+
"just completed on your site with the following results."
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:370
|
945 |
+
msgid "Plugins Updated:"
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:378
|
949 |
+
#, php-format
|
950 |
+
msgid "Plugin \"%s\" auto-updated from \"%s\" to version \"%s\""
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:395
|
954 |
+
msgid "Themes Updated:"
|
|
|
955 |
msgstr ""
|
956 |
|
957 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:403
|
958 |
#, php-format
|
959 |
+
msgid "Theme \"%s\" auto-updated from \"%s\" to version \"%s\""
|
960 |
msgstr ""
|
961 |
|
962 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:418
|
963 |
+
msgid "WordPress Core Updated:"
|
964 |
msgstr ""
|
965 |
|
966 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:437
|
967 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:45
|
968 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:63
|
969 |
+
msgid "Thank you."
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:443
|
973 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:108
|
974 |
#, php-format
|
975 |
+
msgid "Notice: %s"
|
976 |
msgstr ""
|
977 |
|
978 |
+
#: src/lib/src/Modules/Autoupdates/Processor.php:443
|
979 |
+
msgid "Automatic Updates Completed"
|
|
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:22
|
983 |
+
msgid ""
|
984 |
+
"Automatic Updates lets you manage the WordPress automatic updates engine so "
|
985 |
+
"you choose what exactly gets updated automatically."
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:28
|
989 |
+
msgid "Disable ALL WordPress Automatic Updates"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:30
|
993 |
+
msgid ""
|
994 |
+
"If you never want WordPress to automatically update anything on your site, "
|
995 |
+
"turn on this option."
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:31
|
999 |
+
msgid "Do not turn on this option unless you really need to block updates."
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:33
|
1003 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:192
|
1004 |
+
msgid "Turn Off"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:37
|
1008 |
+
msgid "Automatic Plugin Self-Update"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:41
|
1012 |
+
#, php-format
|
1013 |
+
msgid ""
|
1014 |
+
"Allows the %s plugin to automatically update itself when an update is "
|
1015 |
+
"available."
|
1016 |
msgstr ""
|
1017 |
|
1018 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:43
|
1019 |
+
msgid "Keep this option turned on."
|
1020 |
msgstr ""
|
1021 |
|
1022 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:45
|
1023 |
+
msgid "Self-Update"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:49
|
1027 |
+
msgid "Automatic Updates For WordPress Components"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:51
|
1031 |
+
msgid "Control how automatic updates for each WordPress component is handled."
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:52
|
1035 |
+
msgid "You should at least allow minor updates for the WordPress core."
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:54
|
1039 |
+
msgid "WordPress Components"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:58
|
1043 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:59
|
1044 |
+
msgid "Auto-Update Options"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:61
|
1048 |
+
msgid "Make adjustments to how automatic updates are handled on your site."
|
1049 |
msgstr ""
|
1050 |
|
1051 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:92
|
1052 |
+
msgid "Disable All"
|
1053 |
msgstr ""
|
1054 |
|
1055 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:93
|
1056 |
+
msgid "Completely Disable WordPress Automatic Updates"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:94
|
1060 |
+
msgid ""
|
1061 |
+
"When selected, regardless of any other settings, all WordPress automatic "
|
1062 |
+
"updates on this site will be completely disabled!"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:98
|
1066 |
+
msgid "Auto Update Plugin"
|
|
|
|
|
1067 |
msgstr ""
|
1068 |
|
1069 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:99
|
1070 |
+
msgid "Always Automatically Update This Plugin"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1071 |
msgstr ""
|
1072 |
|
1073 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:102
|
1074 |
+
#, php-format
|
1075 |
+
msgid ""
|
1076 |
+
"Regardless of any other settings, automatically update the \"%s\" plugin."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:105
|
1080 |
+
msgid ""
|
1081 |
+
"The plugin will normally automatically update after approximately 2 days, if "
|
1082 |
+
"left to decide."
|
1083 |
msgstr ""
|
1084 |
|
1085 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:110
|
1086 |
+
msgid "WordPress Core Updates"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:111
|
1090 |
+
msgid "Decide how the WordPress Core will automatically update, if at all"
|
1091 |
msgstr ""
|
1092 |
|
1093 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:112
|
1094 |
+
msgid ""
|
1095 |
+
"At least automatically upgrading minor versions is recommended (and is the "
|
1096 |
+
"WordPress default)."
|
1097 |
msgstr ""
|
1098 |
|
1099 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:116
|
1100 |
+
msgid "Translations"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:117
|
1104 |
+
msgid "Automatically Update Translations"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:118
|
1108 |
+
msgid ""
|
1109 |
+
"Note: Automatic updates for translations are enabled on WordPress by default."
|
1110 |
msgstr ""
|
1111 |
|
1112 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:123
|
1113 |
+
msgid "Automatically Update All Plugins"
|
1114 |
msgstr ""
|
1115 |
|
1116 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:124
|
1117 |
+
msgid ""
|
1118 |
+
"Note: Automatic updates for plugins are disabled on WordPress by default."
|
1119 |
msgstr ""
|
1120 |
|
1121 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:129
|
1122 |
+
msgid "Automatically Update Themes"
|
|
|
1123 |
msgstr ""
|
1124 |
|
1125 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:130
|
1126 |
+
msgid ""
|
1127 |
+
"Note: Automatic updates for themes are disabled on WordPress by default."
|
1128 |
msgstr ""
|
1129 |
|
1130 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:134
|
1131 |
+
msgid "Ignore Version Control"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:135
|
1135 |
+
msgid "Ignore Version Control Systems Such As GIT and SVN"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:136
|
1139 |
+
msgid ""
|
1140 |
+
"If you use SVN or GIT and WordPress detects it, automatic updates are "
|
1141 |
+
"disabled by default. Check this box to ignore version control systems and "
|
1142 |
+
"allow automatic updates."
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:140
|
1146 |
+
msgid "Send Report Email"
|
|
|
1147 |
msgstr ""
|
1148 |
|
1149 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:141
|
1150 |
+
msgid "Send email notices after automatic updates"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:142
|
1154 |
+
msgid ""
|
1155 |
+
"You can turn on/off email notices from automatic updates by un/checking this "
|
1156 |
+
"box."
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:146
|
1160 |
+
msgid "Report Email Address"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:147
|
1164 |
+
msgid "Where to send upgrade notification reports"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:148
|
1168 |
+
msgid "If this is empty, it will default to the Site Admin email address"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:153
|
1172 |
+
msgid "Delay Automatic Updates For Period Of Stability"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:154
|
1176 |
#, php-format
|
1177 |
+
msgid ""
|
1178 |
+
"%s will delay upgrades until the new update has been available for the set "
|
1179 |
+
"number of days."
|
1180 |
msgstr ""
|
1181 |
|
1182 |
+
#: src/lib/src/Modules/Autoupdates/Strings.php:155
|
1183 |
+
msgid ""
|
1184 |
+
"This helps ensure updates are more stable before they're automatically "
|
1185 |
+
"applied to your site."
|
1186 |
msgstr ""
|
1187 |
|
1188 |
+
#: src/lib/src/Modules/Base/Insights/OverviewCards.php:51
|
1189 |
+
#: src/wizards/plugin.php:592 src/wizards/plugin.php:625
|
1190 |
+
#: src/wizards/plugin.php:660 src/wizards/plugin.php:728
|
1191 |
+
#: src/wizards/plugin.php:766
|
1192 |
+
msgid "Disabled"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: src/lib/src/Modules/Base/Insights/OverviewCards.php:52
|
1196 |
+
#: src/lib/src/Modules/Base/UI.php:150 src/lib/src/Modules/Base/UI.php:161
|
1197 |
+
msgid "All features of this module are completely disabled"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: src/lib/src/Modules/Base/ModCon.php:839
|
1201 |
+
msgid "You don't currently have permission to save settings."
|
|
|
|
|
|
|
|
|
|
|
1202 |
msgstr ""
|
1203 |
|
1204 |
+
#: src/lib/src/Modules/Base/ModCon.php:924
|
1205 |
+
msgid "Password values do not match."
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: src/lib/src/Modules/Base/ModCon.php:1031
|
1209 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:192
|
1210 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:290
|
1211 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:332
|
1212 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:386
|
1213 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:393
|
1214 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:146
|
1215 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:211
|
1216 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:321
|
1217 |
+
msgid "Default"
|
1218 |
msgstr ""
|
1219 |
|
1220 |
+
#: src/lib/src/Modules/Base/ModCon.php:1038
|
1221 |
+
msgid "For more information:"
|
1222 |
msgstr ""
|
1223 |
|
1224 |
+
#: src/lib/src/Modules/Base/ModCon.php:1039
|
1225 |
+
#: src/lib/src/Modules/Plugin/Strings.php:560
|
1226 |
+
msgid "Support Forums"
|
1227 |
msgstr ""
|
1228 |
|
1229 |
+
#: src/lib/src/Modules/Base/Options/BuildForDisplay.php:67
|
1230 |
+
msgid ""
|
1231 |
+
"Unfortunately your WordPress and/or PHP versions are too old to support this "
|
1232 |
+
"feature."
|
1233 |
msgstr ""
|
1234 |
|
1235 |
+
#: src/lib/src/Modules/Base/Options/BuildForDisplay.php:223
|
1236 |
+
msgid "unavailable"
|
|
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: src/lib/src/Modules/Base/Strings.php:23
|
1240 |
+
msgid "More Scans"
|
|
|
|
|
|
|
|
|
|
|
1241 |
msgstr ""
|
1242 |
|
1243 |
+
#: src/lib/src/Modules/Base/Strings.php:24
|
1244 |
+
msgid "Malware Scanner"
|
|
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: src/lib/src/Modules/Base/Strings.php:25
|
1248 |
+
msgid "Scan Every Hour"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
+
#: src/lib/src/Modules/Base/Strings.php:26
|
1252 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:405
|
1253 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:68
|
1254 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:81
|
1255 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:203
|
1256 |
+
msgid "White Label"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
+
#: src/lib/src/Modules/Base/Strings.php:27
|
1260 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:291
|
1261 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:189
|
1262 |
+
msgid "Import/Export"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
+
#: src/lib/src/Modules/Base/Strings.php:28
|
1266 |
+
msgid "Better Bot Detection"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: src/lib/src/Modules/Base/Strings.php:29
|
1270 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:488
|
1271 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:54
|
1272 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:118
|
1273 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:119
|
1274 |
+
msgid "Password Policies"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
+
#: src/lib/src/Modules/Base/Strings.php:30
|
1278 |
+
msgid "WooCommerce Support"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: src/lib/src/Modules/Base/Strings.php:31
|
1282 |
+
#: src/lib/src/Modules/Integrations/Strings.php:94
|
1283 |
+
msgid "MainWP Integration"
|
1284 |
msgstr ""
|
1285 |
|
1286 |
+
#: src/lib/src/Modules/Base/Strings.php:34
|
1287 |
+
msgid "and much more!"
|
1288 |
msgstr ""
|
1289 |
|
1290 |
+
#: src/lib/src/Modules/Base/Strings.php:40
|
1291 |
+
msgid "Watch Help Video"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
+
#: src/lib/src/Modules/Base/Strings.php:41
|
1295 |
+
msgid "Save Options"
|
1296 |
msgstr ""
|
1297 |
|
1298 |
+
#: src/lib/src/Modules/Base/Strings.php:43
|
1299 |
+
#: src/lib/src/Modules/Base/Strings.php:65
|
1300 |
+
msgid "Help"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: src/lib/src/Modules/Base/Strings.php:44
|
1304 |
+
msgid "Wizards"
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: src/lib/src/Modules/Base/Strings.php:44
|
1308 |
+
msgid "No Wizards"
|
|
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: src/lib/src/Modules/Base/Strings.php:45
|
1312 |
+
#: src/lib/src/Modules/Insights/Lib/Requests/DynamicPageLoader.php:84
|
1313 |
+
#: src/lib/src/Modules/Insights/UI.php:222
|
1314 |
+
msgid "Configuration"
|
1315 |
msgstr ""
|
1316 |
|
1317 |
+
#: src/lib/src/Modules/Base/Strings.php:48
|
1318 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:46
|
1319 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:157
|
1320 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:145
|
1321 |
+
#: src/lib/src/Tables/Build/Ip.php:65 src/lib/src/Tables/Build/Sessions.php:65
|
1322 |
+
msgid "Yes"
|
1323 |
msgstr ""
|
1324 |
|
1325 |
+
#: src/lib/src/Modules/Base/Strings.php:49
|
1326 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:158
|
1327 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:34
|
1328 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:145
|
1329 |
+
#: src/lib/src/Tables/Build/Ip.php:65 src/lib/src/Tables/Build/Sessions.php:65
|
1330 |
+
msgid "No"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
+
#: src/lib/src/Modules/Base/Strings.php:50
|
1334 |
+
#: src/lib/src/Modules/HackGuard/UI.php:42
|
1335 |
+
#: src/lib/src/Modules/HackGuard/UI.php:120
|
1336 |
+
#: src/lib/src/Modules/License/UI.php:34
|
1337 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:158
|
1338 |
+
#: src/lib/src/Modules/Plugin/Strings.php:453
|
1339 |
+
msgid "Never"
|
1340 |
msgstr ""
|
1341 |
|
1342 |
+
#: src/lib/src/Modules/Base/Strings.php:51
|
1343 |
+
msgid "Until"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
+
#: src/lib/src/Modules/Base/Strings.php:52
|
1347 |
+
msgid "Since"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
+
#: src/lib/src/Modules/Base/Strings.php:53
|
1351 |
+
#: src/lib/src/Modules/Insights/Lib/OverviewCards.php:27
|
1352 |
+
msgid "Info"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1353 |
msgstr ""
|
1354 |
|
1355 |
+
#: src/lib/src/Modules/Base/Strings.php:54
|
1356 |
+
msgid "Read the HelpDesk article for this option"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
+
#: src/lib/src/Modules/Base/Strings.php:55
|
1360 |
+
msgid "Read our Blog article for this option"
|
1361 |
msgstr ""
|
1362 |
|
1363 |
+
#: src/lib/src/Modules/Base/Strings.php:56
|
1364 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:118
|
1365 |
+
#: src/lib/src/Tables/Render/WpListTable/Sessions.php:40
|
1366 |
+
msgid "Logged-In"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: src/lib/src/Modules/Base/Strings.php:58
|
1370 |
+
msgid "Blog"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1371 |
msgstr ""
|
1372 |
|
1373 |
+
#: src/lib/src/Modules/Base/Strings.php:59
|
1374 |
+
msgid "Save Settings"
|
|
|
|
|
1375 |
msgstr ""
|
1376 |
|
1377 |
+
#: src/lib/src/Modules/Base/Strings.php:62
|
1378 |
+
msgid "Configure Module"
|
|
|
|
|
|
|
1379 |
msgstr ""
|
1380 |
|
1381 |
+
#: src/lib/src/Modules/Base/Strings.php:63
|
1382 |
+
msgid "Actions and Info"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
+
#: src/lib/src/Modules/Base/Strings.php:64
|
1386 |
+
msgid "Perform actions for this module"
|
1387 |
msgstr ""
|
1388 |
|
1389 |
+
#: src/lib/src/Modules/Base/Strings.php:66
|
1390 |
+
msgid "Learn More"
|
1391 |
msgstr ""
|
1392 |
|
1393 |
+
#: src/lib/src/Modules/Base/Strings.php:67
|
1394 |
+
#: src/lib/src/Modules/Plugin/Strings.php:375
|
1395 |
+
msgid "Installation ID"
|
1396 |
msgstr ""
|
1397 |
|
1398 |
+
#: src/lib/src/Modules/Base/Strings.php:69
|
1399 |
+
msgid "Select"
|
|
|
1400 |
msgstr ""
|
1401 |
|
1402 |
+
#: src/lib/src/Modules/Base/Strings.php:70
|
1403 |
+
msgid "Clear Filters"
|
1404 |
msgstr ""
|
1405 |
|
1406 |
+
#: src/lib/src/Modules/Base/Strings.php:71
|
1407 |
+
msgid "Apply Filters"
|
1408 |
msgstr ""
|
1409 |
|
1410 |
+
#: src/lib/src/Modules/Base/Strings.php:72
|
1411 |
+
msgid "Jump To Module Settings"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
+
#: src/lib/src/Modules/Base/Strings.php:73
|
1415 |
+
msgid "This Page"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
+
#: src/lib/src/Modules/Base/Strings.php:74
|
1419 |
+
msgid "Find Plugin Option"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
+
#: src/lib/src/Modules/Base/Strings.php:75
|
1423 |
+
msgid "Type below to search all plugin options"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
#: src/lib/src/Modules/Base/Strings.php:76
|
1427 |
+
#: src/lib/src/Modules/Insights/UI.php:314
|
1428 |
+
#: src/lib/src/Modules/Insights/UI.php:352
|
1429 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:35
|
1430 |
+
msgid "Pro Only"
|
1431 |
msgstr ""
|
1432 |
|
1433 |
+
#: src/lib/src/Modules/Base/Strings.php:77
|
1434 |
+
msgid "This is a pro-only feature"
|
1435 |
msgstr ""
|
1436 |
|
1437 |
+
#: src/lib/src/Modules/Base/Strings.php:78
|
1438 |
+
msgid "Go Pro!"
|
1439 |
msgstr ""
|
1440 |
|
1441 |
+
#: src/lib/src/Modules/Base/Strings.php:80
|
1442 |
+
msgid "Please upgrade to Pro to control this option"
|
1443 |
msgstr ""
|
1444 |
|
1445 |
+
#: src/lib/src/Modules/Base/Strings.php:82
|
1446 |
+
#: src/lib/src/Modules/Base/Strings.php:87
|
1447 |
+
msgid "Mode"
|
1448 |
msgstr ""
|
1449 |
|
1450 |
+
#: src/lib/src/Modules/Base/Strings.php:83
|
1451 |
+
#: src/lib/src/Modules/Base/Strings.php:86
|
1452 |
+
#: src/lib/src/Modules/Base/Strings.php:88
|
1453 |
+
msgid "Simple"
|
1454 |
msgstr ""
|
1455 |
|
1456 |
+
#: src/lib/src/Modules/Base/Strings.php:84
|
1457 |
+
#: src/lib/src/Modules/Base/Strings.php:86
|
1458 |
+
#: src/lib/src/Modules/Base/Strings.php:88
|
1459 |
+
msgid "Advanced"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: src/lib/src/Modules/Base/Strings.php:85
|
1463 |
+
msgid "Switch To"
|
1464 |
msgstr ""
|
1465 |
|
1466 |
+
#: src/lib/src/Modules/Base/Strings.php:90
|
1467 |
+
#: src/lib/src/Modules/Insights/UI.php:193
|
1468 |
+
#: src/lib/src/Modules/Plugin/Strings.php:550
|
1469 |
+
msgid "Dashboard"
|
1470 |
msgstr ""
|
1471 |
|
1472 |
+
#: src/lib/src/Modules/Base/Strings.php:91
|
1473 |
+
#, php-format
|
1474 |
+
msgid "%s Dashboard"
|
1475 |
msgstr ""
|
1476 |
|
1477 |
+
#: src/lib/src/Modules/Base/Strings.php:93
|
1478 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:52
|
1479 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:233
|
1480 |
+
msgid "Description"
|
1481 |
msgstr ""
|
1482 |
|
1483 |
+
#: src/lib/src/Modules/Base/Strings.php:94
|
1484 |
+
#: src/lib/src/Modules/LoginGuard/Lib/AntiBot/ProtectionProviders/GaspJs.php:43
|
1485 |
+
#: src/lib/src/Modules/LoginGuard/Lib/AntiBot/ProtectionProviders/GaspJs.php:121
|
1486 |
+
msgid "Loading"
|
1487 |
msgstr ""
|
1488 |
|
1489 |
+
#: src/lib/src/Modules/Base/Strings.php:95
|
1490 |
+
msgid "Plugin Access Restricted"
|
|
|
|
|
1491 |
msgstr ""
|
1492 |
|
1493 |
+
#: src/lib/src/Modules/Base/Strings.php:96
|
1494 |
msgid ""
|
1495 |
+
"This security plugin is restricted to administrators with the Security Admin "
|
1496 |
+
"PIN."
|
1497 |
msgstr ""
|
1498 |
|
1499 |
+
#: src/lib/src/Modules/Base/Strings.php:97
|
1500 |
+
msgid "Please provide the Security Admin PIN to manage this plugin."
|
|
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
#: src/lib/src/Modules/Base/Strings.php:98
|
1504 |
+
msgid "To manage this plugin you must enter the Security Admin PIN."
|
|
|
1505 |
msgstr ""
|
1506 |
|
1507 |
+
#: src/lib/src/Modules/Base/Strings.php:99
|
1508 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:114
|
1509 |
+
msgid "Security Admin PIN"
|
1510 |
msgstr ""
|
1511 |
|
1512 |
+
#: src/lib/src/Modules/Base/Strings.php:100
|
1513 |
+
msgid "Submit Security Admin PIN"
|
1514 |
msgstr ""
|
1515 |
|
1516 |
+
#: src/lib/src/Modules/Base/Strings.php:101
|
1517 |
+
msgid "Forgotten PIN"
|
1518 |
msgstr ""
|
1519 |
|
1520 |
+
#: src/lib/src/Modules/Base/Strings.php:102
|
1521 |
+
msgid "Supply Password"
|
1522 |
msgstr ""
|
1523 |
|
1524 |
+
#: src/lib/src/Modules/Base/Strings.php:103
|
1525 |
+
msgid "Confirm Password"
|
1526 |
msgstr ""
|
1527 |
|
1528 |
+
#: src/lib/src/Modules/Base/Strings.php:104
|
1529 |
+
msgid "Show help video for this section"
|
|
|
|
|
1530 |
msgstr ""
|
1531 |
|
1532 |
+
#: src/lib/src/Modules/Base/Strings.php:106
|
1533 |
+
msgid "offense"
|
1534 |
msgstr ""
|
1535 |
|
1536 |
+
#: src/lib/src/Modules/Base/Strings.php:107
|
1537 |
+
#: src/lib/src/Modules/Insights/UI.php:207
|
1538 |
+
msgid "Debug"
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: src/lib/src/Modules/Base/Strings.php:109
|
1542 |
+
msgid "Agree To Privacy Policy"
|
|
|
1543 |
msgstr ""
|
1544 |
|
1545 |
+
#: src/lib/src/Modules/Base/Strings.php:110
|
1546 |
+
msgid "I confirm that I've read and I agree to the Privacy Policy"
|
|
|
1547 |
msgstr ""
|
1548 |
|
1549 |
+
#: src/lib/src/Modules/Base/Strings.php:111
|
1550 |
msgid ""
|
1551 |
+
"We treat your information under our strict, and GDPR-compliant, privacy "
|
1552 |
+
"policy."
|
1553 |
msgstr ""
|
1554 |
|
1555 |
+
#: src/lib/src/Modules/Base/Strings.php:112
|
1556 |
+
msgid "Privacy Policy"
|
|
|
|
|
1557 |
msgstr ""
|
1558 |
|
1559 |
+
#: src/lib/src/Modules/Base/Strings.php:113
|
1560 |
+
msgid "We never SPAM and you can remove yourself at any time."
|
|
|
|
|
|
|
1561 |
msgstr ""
|
1562 |
|
1563 |
+
#: src/lib/src/Modules/Base/Strings.php:115
|
1564 |
+
msgid "Pro features include"
|
1565 |
msgstr ""
|
1566 |
|
1567 |
+
#: src/lib/src/Modules/Base/Strings.php:116
|
1568 |
+
msgid ""
|
1569 |
+
"Join The 1,000s Who've Already Upgraded Their WordPress Security To Better "
|
1570 |
+
"Protect Their Sites."
|
1571 |
msgstr ""
|
1572 |
|
1573 |
+
#: src/lib/src/Modules/Base/Strings.php:118
|
1574 |
+
msgid "Get Pro Protection"
|
1575 |
msgstr ""
|
1576 |
|
1577 |
+
#: src/lib/src/Modules/Base/Strings.php:120
|
1578 |
+
#: src/lib/src/Modules/Insights/Strings.php:16
|
1579 |
+
msgid "recommendation"
|
1580 |
msgstr ""
|
1581 |
|
1582 |
+
#: src/lib/src/Modules/Base/Strings.php:121
|
1583 |
+
#: src/lib/src/Modules/Insights/Strings.php:17
|
1584 |
+
msgid "suggestion"
|
1585 |
msgstr ""
|
1586 |
|
1587 |
+
#: src/lib/src/Modules/Base/Strings.php:122
|
1588 |
+
#: src/lib/src/Modules/Insights/Strings.php:18
|
1589 |
+
#, php-format
|
1590 |
+
msgid "Welcome To %s Security Insights Dashboard"
|
1591 |
msgstr ""
|
1592 |
|
1593 |
+
#: src/lib/src/Modules/Base/Strings.php:124
|
1594 |
+
#: src/lib/src/Modules/Insights/Strings.php:20
|
1595 |
+
msgid "Sorry, this feature is included with Pro subscriptions."
|
1596 |
msgstr ""
|
1597 |
|
1598 |
+
#: src/lib/src/Modules/Base/Strings.php:125
|
1599 |
+
#: src/lib/src/Modules/Insights/Strings.php:21
|
1600 |
+
msgid "This feature isn't currently enabled."
|
1601 |
msgstr ""
|
1602 |
|
1603 |
+
#: src/lib/src/Modules/Base/Strings.php:126
|
1604 |
+
#: src/lib/src/Modules/Insights/Strings.php:22
|
1605 |
+
msgid "You can get this feature (along with loads more) by going Pro."
|
1606 |
msgstr ""
|
1607 |
|
1608 |
+
#: src/lib/src/Modules/Base/Strings.php:127
|
1609 |
+
#: src/lib/src/Modules/Insights/Strings.php:23
|
1610 |
+
msgid "Please turn on this feature in the options."
|
1611 |
msgstr ""
|
1612 |
|
1613 |
+
#: src/lib/src/Modules/Base/Strings.php:128
|
1614 |
+
#: src/lib/src/Modules/Insights/Strings.php:24
|
1615 |
+
msgid "There are no important security notices at this time."
|
1616 |
msgstr ""
|
1617 |
|
1618 |
+
#: src/lib/src/Modules/Base/Strings.php:129
|
1619 |
+
#: src/lib/src/Modules/Insights/Strings.php:25
|
1620 |
+
msgid "This is wonderful!"
|
1621 |
msgstr ""
|
1622 |
|
1623 |
+
#: src/lib/src/Modules/Base/Strings.php:130
|
1624 |
+
#: src/lib/src/Modules/Insights/Strings.php:26
|
1625 |
+
msgid "YYYY-MM-DD"
|
1626 |
msgstr ""
|
1627 |
|
1628 |
+
#: src/lib/src/Modules/Base/Strings.php:133
|
1629 |
+
msgid "Is this option included with import/export?"
|
1630 |
msgstr ""
|
1631 |
|
1632 |
+
#: src/lib/src/Modules/Base/Strings.php:136
|
1633 |
+
msgid "Search for a plugin option"
|
|
|
1634 |
msgstr ""
|
1635 |
|
1636 |
+
#: src/lib/src/Modules/Base/Strings.php:189
|
1637 |
+
msgid "User Messages"
|
|
|
1638 |
msgstr ""
|
1639 |
|
1640 |
+
#: src/lib/src/Modules/Base/Strings.php:190
|
1641 |
+
msgid "Messages"
|
1642 |
msgstr ""
|
1643 |
|
1644 |
+
#: src/lib/src/Modules/Base/Strings.php:192
|
1645 |
+
msgid "Customize the messages displayed to the user."
|
|
|
1646 |
msgstr ""
|
1647 |
|
1648 |
+
#: src/lib/src/Modules/Base/Strings.php:193
|
1649 |
+
msgid ""
|
1650 |
+
"Use this section if you need to communicate to the user in a particular "
|
1651 |
+
"manner."
|
1652 |
msgstr ""
|
1653 |
|
1654 |
+
#: src/lib/src/Modules/Base/Strings.php:194
|
1655 |
+
msgid "Hint"
|
|
|
1656 |
msgstr ""
|
1657 |
|
1658 |
+
#: src/lib/src/Modules/Base/Strings.php:194
|
1659 |
#, php-format
|
1660 |
+
msgid "To reset any message to its default, enter the text exactly: %s"
|
1661 |
msgstr ""
|
1662 |
|
1663 |
+
#: src/lib/src/Modules/Base/UI.php:149 src/lib/src/Modules/Base/UI.php:159
|
1664 |
+
msgid "Module Disabled"
|
1665 |
msgstr ""
|
1666 |
|
1667 |
+
#: src/lib/src/Modules/Base/WpCli/ModuleStandard.php:132
|
1668 |
+
msgid "No value set."
|
1669 |
msgstr ""
|
1670 |
|
1671 |
+
#: src/lib/src/Modules/Base/WpCli/ModuleStandard.php:142
|
1672 |
+
msgid "\"Y\" = Turned On; \"N\" = Turned Off"
|
1673 |
msgstr ""
|
1674 |
|
1675 |
+
#: src/lib/src/Modules/Base/WpCli/ModuleStandard.php:145
|
1676 |
+
#, php-format
|
1677 |
+
msgid "Current value: %s"
|
|
|
1678 |
msgstr ""
|
1679 |
|
1680 |
+
#: src/lib/src/Modules/BaseShield/AjaxHandler.php:49
|
1681 |
#, php-format
|
1682 |
+
msgid "%s Plugin options updated successfully."
|
1683 |
msgstr ""
|
1684 |
|
1685 |
+
#: src/lib/src/Modules/BaseShield/AjaxHandler.php:53
|
1686 |
+
#, php-format
|
1687 |
+
msgid "Failed to update %s plugin options."
|
1688 |
msgstr ""
|
1689 |
|
1690 |
+
#: src/lib/src/Modules/BaseShield/ModCon.php:113
|
1691 |
+
msgid ""
|
1692 |
+
"If you've forgotten your PIN, a link can be sent to the plugin administrator "
|
1693 |
+
"email address to remove this restriction."
|
1694 |
msgstr ""
|
1695 |
|
1696 |
+
#: src/lib/src/Modules/BaseShield/ModCon.php:114
|
1697 |
+
msgid "Click here to send the verification email."
|
|
|
1698 |
msgstr ""
|
1699 |
|
1700 |
+
#: src/lib/src/Modules/BaseShield/ModCon.php:115
|
1701 |
+
#, php-format
|
1702 |
+
msgid "Email will be sent to %s"
|
|
|
1703 |
msgstr ""
|
1704 |
|
1705 |
+
#: src/lib/src/Modules/BaseShield/ModCon.php:117
|
1706 |
+
msgid ""
|
1707 |
+
"The Security Administrator has restricted the use of the email override "
|
1708 |
+
"feature."
|
1709 |
msgstr ""
|
1710 |
|
1711 |
+
#: src/lib/src/Modules/CommentsFilter/AdminNotices.php:34
|
1712 |
+
msgid "Akismet Anti-SPAM plugin is also running"
|
|
|
1713 |
msgstr ""
|
1714 |
|
1715 |
+
#: src/lib/src/Modules/CommentsFilter/AdminNotices.php:35
|
1716 |
+
msgid ""
|
1717 |
+
"It appears you have Akismet Anti-SPAM running alongside the our human Anti-"
|
1718 |
+
"SPAM filter."
|
1719 |
msgstr ""
|
1720 |
|
1721 |
+
#: src/lib/src/Modules/CommentsFilter/AdminNotices.php:36
|
1722 |
+
msgid "This is not recommended and you should disable Akismet."
|
1723 |
msgstr ""
|
1724 |
|
1725 |
+
#: src/lib/src/Modules/CommentsFilter/AdminNotices.php:37
|
1726 |
+
msgid "Click to deactivate Akismet now."
|
|
|
|
|
|
|
1727 |
msgstr ""
|
1728 |
|
1729 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:21
|
1730 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:93
|
1731 |
+
msgid "Bot SPAM"
|
1732 |
msgstr ""
|
1733 |
|
1734 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:24
|
1735 |
+
msgid "Bot SPAM comments are blocked"
|
1736 |
msgstr ""
|
1737 |
|
1738 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:25
|
1739 |
+
msgid "There is no protection against Bot SPAM comments"
|
|
|
|
|
|
|
|
|
|
|
1740 |
msgstr ""
|
1741 |
|
1742 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:29
|
1743 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:103
|
1744 |
+
msgid "Human SPAM"
|
1745 |
msgstr ""
|
1746 |
|
1747 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:32
|
1748 |
+
msgid "Comments posted by humans are checked for SPAM"
|
1749 |
msgstr ""
|
1750 |
|
1751 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:33
|
1752 |
+
msgid "Comments posted by humans aren't checked for SPAM"
|
|
|
1753 |
msgstr ""
|
1754 |
|
1755 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:42
|
1756 |
+
msgid "SPAM Blocking"
|
1757 |
msgstr ""
|
1758 |
|
1759 |
+
#: src/lib/src/Modules/CommentsFilter/Insights/OverviewCards.php:46
|
1760 |
+
msgid "Block Bot & Human Comment SPAM"
|
1761 |
msgstr ""
|
1762 |
|
1763 |
+
#: src/lib/src/Modules/CommentsFilter/ModCon.php:43
|
1764 |
+
msgid "I'm not a spammer."
|
1765 |
msgstr ""
|
1766 |
|
1767 |
+
#: src/lib/src/Modules/CommentsFilter/ModCon.php:46
|
1768 |
+
msgid "Please check the box to confirm you're not a spammer."
|
1769 |
msgstr ""
|
1770 |
|
1771 |
+
#: src/lib/src/Modules/CommentsFilter/ModCon.php:49
|
1772 |
+
#, php-format
|
1773 |
+
msgid "Please wait %s seconds before posting your comment."
|
1774 |
msgstr ""
|
1775 |
|
1776 |
+
#: src/lib/src/Modules/CommentsFilter/ModCon.php:52
|
1777 |
+
msgid "Please reload this page to post a comment."
|
1778 |
msgstr ""
|
1779 |
|
1780 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/AntiBot.php:21
|
1781 |
+
msgid "Failed AntiBot Verification"
|
1782 |
msgstr ""
|
1783 |
|
1784 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:33
|
1785 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:38
|
1786 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:44
|
1787 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:48
|
1788 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:52
|
1789 |
+
#, php-format
|
1790 |
+
msgid "Failed Bot Test (%s)"
|
1791 |
msgstr ""
|
1792 |
|
1793 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:33
|
1794 |
+
msgid "checkbox"
|
1795 |
msgstr ""
|
1796 |
|
1797 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:38
|
1798 |
+
msgid "honeypot"
|
1799 |
msgstr ""
|
1800 |
|
1801 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:44
|
1802 |
+
msgid "cooldown"
|
1803 |
msgstr ""
|
1804 |
|
1805 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:48
|
1806 |
+
msgid "expired"
|
1807 |
msgstr ""
|
1808 |
|
1809 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Bot.php:52
|
1810 |
+
msgid "token"
|
1811 |
msgstr ""
|
1812 |
|
1813 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Human.php:49
|
1814 |
#, php-format
|
1815 |
+
msgid "Human SPAM filter found \"%s\" in \"%s\""
|
1816 |
msgstr ""
|
1817 |
|
1818 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Scanner.php:58
|
1819 |
+
msgid "Trash"
|
1820 |
msgstr ""
|
1821 |
|
1822 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Scanner.php:62
|
1823 |
+
msgid "Pending Moderation"
|
|
|
1824 |
msgstr ""
|
1825 |
|
1826 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Scanner.php:70
|
1827 |
#, php-format
|
1828 |
+
msgid "%s marked this comment as \"%s\"."
|
1829 |
msgstr ""
|
1830 |
|
1831 |
+
#: src/lib/src/Modules/CommentsFilter/Scan/Scanner.php:72
|
1832 |
#, php-format
|
1833 |
+
msgid "Reason: %s"
|
|
|
|
|
1834 |
msgstr ""
|
1835 |
|
1836 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:17
|
1837 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:26
|
1838 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:36
|
1839 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:45
|
1840 |
+
msgid "SPAM Blocked"
|
1841 |
msgstr ""
|
1842 |
|
1843 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:18
|
1844 |
+
msgid "AntiBot System"
|
|
|
|
|
|
|
1845 |
msgstr ""
|
1846 |
|
1847 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:21
|
1848 |
+
msgid "Blocked SPAM comment that failed AntiBot tests."
|
|
|
1849 |
msgstr ""
|
1850 |
|
1851 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:27
|
1852 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:97
|
1853 |
+
msgid "Human"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:30
|
1857 |
+
msgid "Blocked human SPAM comment containing suspicious content."
|
|
|
1858 |
msgstr ""
|
1859 |
|
1860 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:31
|
1861 |
+
msgid "Human SPAM filter found \"{{word}}\" in \"{{key}}\""
|
|
|
1862 |
msgstr ""
|
1863 |
|
1864 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:37
|
1865 |
+
msgid "Bot"
|
|
|
|
|
|
|
|
|
|
|
1866 |
msgstr ""
|
1867 |
|
1868 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:40
|
1869 |
+
msgid "Blocked SPAM comment from Bot."
|
|
|
1870 |
msgstr ""
|
1871 |
|
1872 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:46
|
1873 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:209
|
1874 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:266
|
1875 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:42
|
1876 |
+
#: src/lib/src/Modules/Plugin/Strings.php:168
|
1877 |
+
#: src/lib/src/Modules/Plugin/Strings.php:169
|
1878 |
+
msgid "CAPTCHA"
|
1879 |
msgstr ""
|
1880 |
|
1881 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:49
|
1882 |
+
msgid "Blocked SPAM comment that failed reCAPTCHA."
|
|
|
1883 |
msgstr ""
|
1884 |
|
1885 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:53
|
1886 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:55
|
1887 |
+
msgid "Comment SPAM Blocked."
|
1888 |
msgstr ""
|
1889 |
|
1890 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:72
|
1891 |
+
msgid "Comments SPAM Protection"
|
1892 |
+
msgstr ""
|
1893 |
+
|
1894 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:74
|
1895 |
#, php-format
|
1896 |
+
msgid ""
|
1897 |
+
"The Comments Filter can block 100% of automated spam bots and also offer the "
|
1898 |
+
"option to analyse human-generated spam."
|
1899 |
msgstr ""
|
1900 |
|
1901 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:75
|
1902 |
+
msgid "Comments Filter"
|
1903 |
msgstr ""
|
1904 |
|
1905 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:80
|
1906 |
+
msgid "Common Settings"
|
|
|
1907 |
msgstr ""
|
1908 |
|
1909 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:81
|
1910 |
+
msgid "Common Settings For All SPAM Scanning"
|
1911 |
msgstr ""
|
1912 |
|
1913 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:83
|
1914 |
+
msgid "Settings that apply to all comment SPAM scanning."
|
|
|
1915 |
msgstr ""
|
1916 |
|
1917 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:88
|
1918 |
#, php-format
|
1919 |
+
msgid "%s Comment SPAM Protection"
|
1920 |
msgstr ""
|
1921 |
|
1922 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:88
|
1923 |
+
msgid "Automatic Bot"
|
1924 |
msgstr ""
|
1925 |
|
1926 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:90
|
1927 |
+
#, php-format
|
1928 |
+
msgid "Blocks 100% of all automated bot-generated comment SPAM."
|
|
|
1929 |
msgstr ""
|
1930 |
|
1931 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:91
|
1932 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:100
|
1933 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:108
|
1934 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:127
|
1935 |
+
#: src/lib/src/Modules/Plugin/Strings.php:174
|
1936 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:53
|
1937 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:62
|
1938 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:122
|
1939 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:131
|
1940 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:140
|
1941 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:149
|
1942 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:159
|
1943 |
+
msgid "Use of this feature is highly recommend."
|
1944 |
msgstr ""
|
1945 |
|
1946 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:97
|
1947 |
#, php-format
|
1948 |
+
msgid "%s Comment SPAM Protection Filter"
|
1949 |
msgstr ""
|
1950 |
|
1951 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:99
|
1952 |
+
msgid "Uses a 3rd party SPAM dictionary to detect human-based comment SPAM."
|
|
|
1953 |
msgstr ""
|
1954 |
|
1955 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:101
|
1956 |
+
msgid ""
|
1957 |
+
"This tool, unlike other SPAM tools such as Akismet, will not send your "
|
1958 |
+
"comment data to 3rd party services for analysis."
|
1959 |
msgstr ""
|
1960 |
|
1961 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:131
|
1962 |
+
msgid "Enable (or Disable) The Comment SPAM Protection Feature"
|
1963 |
msgstr ""
|
1964 |
|
1965 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:132
|
1966 |
+
#: src/wizards/plugin.php:765 src/wizards/plugin.php:770
|
1967 |
+
msgid "Comment SPAM Protection"
|
|
|
1968 |
msgstr ""
|
1969 |
|
1970 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:136
|
1971 |
+
msgid "Trusted Commenter Minimum"
|
|
|
1972 |
msgstr ""
|
1973 |
|
1974 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:137
|
1975 |
+
msgid "Minimum Number Of Approved Comments Before Commenter Is Trusted"
|
|
|
|
|
1976 |
msgstr ""
|
1977 |
|
1978 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:138
|
1979 |
+
msgid ""
|
1980 |
+
"Specify how many approved comments must exist before a commenter is trusted "
|
1981 |
+
"and their comments are no longer scanned."
|
1982 |
msgstr ""
|
1983 |
|
1984 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:139
|
1985 |
+
msgid "Normally WordPress will trust after 1 comment."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1986 |
msgstr ""
|
1987 |
|
1988 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:143
|
1989 |
+
msgid "Trusted User Roles"
|
|
|
|
|
|
|
1990 |
msgstr ""
|
1991 |
|
1992 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:144
|
1993 |
+
msgid "Comments From Users With These Roles Will Never Be Scanned"
|
1994 |
msgstr ""
|
1995 |
|
1996 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:145
|
1997 |
+
msgid ""
|
1998 |
+
"Shield doesn't normally scan comments from logged-in or registered users."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999 |
msgstr ""
|
2000 |
|
2001 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:146
|
2002 |
+
msgid "Specify user roles here that shouldn't be scanned."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2003 |
msgstr ""
|
2004 |
|
2005 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:147
|
2006 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:159
|
2007 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:233
|
2008 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:245
|
2009 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:256
|
2010 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:357
|
2011 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:399
|
2012 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:208
|
2013 |
+
#: src/lib/src/Modules/IPs/UI.php:90 src/lib/src/Modules/IPs/UI.php:98
|
2014 |
+
#: src/lib/src/Modules/Integrations/Strings.php:100
|
2015 |
+
#: src/lib/src/Modules/Integrations/Strings.php:113
|
2016 |
+
#: src/lib/src/Modules/Integrations/UI.php:61
|
2017 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:112
|
2018 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:34
|
2019 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:190
|
2020 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:257
|
2021 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:274
|
2022 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:284
|
2023 |
+
#: src/lib/src/Modules/Plugin/Strings.php:387
|
2024 |
+
#: src/lib/src/Modules/Plugin/Strings.php:398
|
2025 |
+
#: src/lib/src/Modules/Plugin/Strings.php:407
|
2026 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:36
|
2027 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:76
|
2028 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:123
|
2029 |
+
#: src/lib/src/Modules/Traffic/Strings.php:56
|
2030 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:301
|
2031 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:318
|
2032 |
+
msgid "Important"
|
2033 |
+
msgstr ""
|
2034 |
+
|
2035 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:147
|
2036 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:318
|
2037 |
+
msgid "Take a new line for each user role."
|
2038 |
+
msgstr ""
|
2039 |
+
|
2040 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:148
|
2041 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:319
|
2042 |
+
msgid "Available Roles"
|
2043 |
+
msgstr ""
|
2044 |
+
|
2045 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:153
|
2046 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:278
|
2047 |
+
msgid "AntiBot Detection Engine (ADE)"
|
2048 |
+
msgstr ""
|
2049 |
+
|
2050 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:154
|
2051 |
+
msgid "Use ADE To Detect SPAM Bots And Block Comment SPAM"
|
2052 |
+
msgstr ""
|
2053 |
+
|
2054 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:156
|
2055 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:281
|
2056 |
+
#, php-format
|
2057 |
+
msgid ""
|
2058 |
+
"AntiBot Detection Engine is %s's exclusive bot-detection technology that "
|
2059 |
+
"removes the needs for CAPTCHA and other challenges."
|
2060 |
+
msgstr ""
|
2061 |
+
|
2062 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:158
|
2063 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:283
|
2064 |
+
msgid ""
|
2065 |
+
"This feature is designed to replace the CAPTCHA and Bot Protection options."
|
2066 |
+
msgstr ""
|
2067 |
+
|
2068 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:160
|
2069 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:285
|
2070 |
+
msgid ""
|
2071 |
+
"Switching on this feature will disable the CAPTCHA and Bot Protection "
|
2072 |
+
"settings."
|
2073 |
+
msgstr ""
|
2074 |
+
|
2075 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:165
|
2076 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:166
|
2077 |
+
msgid "Human SPAM Filter"
|
2078 |
+
msgstr ""
|
2079 |
+
|
2080 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:166
|
2081 |
+
#, php-format
|
2082 |
+
msgid "Enable (or Disable) The %s Feature"
|
2083 |
+
msgstr ""
|
2084 |
+
|
2085 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:168
|
2086 |
+
msgid ""
|
2087 |
+
"Most SPAM is automatic, by bots, but sometimes Humans also post comments to "
|
2088 |
+
"your site and these bypass Bot Detection rules."
|
2089 |
+
msgstr ""
|
2090 |
+
|
2091 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:169
|
2092 |
+
msgid ""
|
2093 |
+
"When this happens, you can scan the content for keywords that are typical of "
|
2094 |
+
"SPAM."
|
2095 |
+
msgstr ""
|
2096 |
+
|
2097 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:174
|
2098 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:195
|
2099 |
+
msgid "SPAM Action"
|
2100 |
+
msgstr ""
|
2101 |
+
|
2102 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:175
|
2103 |
+
msgid "How To Categorise Comments When Identified To Be SPAM"
|
2104 |
+
msgstr ""
|
2105 |
+
|
2106 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:176
|
2107 |
+
#, php-format
|
2108 |
+
msgid ""
|
2109 |
+
"When a comment is detected as being SPAM from %s, the comment will be "
|
2110 |
+
"categorised based on this setting."
|
2111 |
+
msgstr ""
|
2112 |
+
|
2113 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:176
|
2114 |
+
msgid "a human commenter"
|
2115 |
+
msgstr ""
|
2116 |
+
|
2117 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:180
|
2118 |
+
msgid "SPAM Bot Protection"
|
2119 |
+
msgstr ""
|
2120 |
+
|
2121 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:183
|
2122 |
+
msgid "Block 100% Comment SPAM From Automated Bots"
|
2123 |
+
msgstr ""
|
2124 |
+
|
2125 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:187
|
2126 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:216
|
2127 |
+
msgid ""
|
2128 |
+
"Use the newer AntiBot Detection Engine to detect SPAM instead of CAPTCHAs."
|
2129 |
+
msgstr ""
|
2130 |
+
|
2131 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:189
|
2132 |
+
msgid "Highly effective detection for the most common types of comment SPAM."
|
2133 |
+
msgstr ""
|
2134 |
+
|
2135 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:190
|
2136 |
+
msgid "Bonus"
|
2137 |
+
msgstr ""
|
2138 |
+
|
2139 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:190
|
2140 |
+
msgid ""
|
2141 |
+
"Unlike Akismet, your data is never sent off-site to 3rd party processing "
|
2142 |
+
"servers."
|
2143 |
+
msgstr ""
|
2144 |
+
|
2145 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:196
|
2146 |
+
msgid "Where To Put SPAM Comments"
|
2147 |
+
msgstr ""
|
2148 |
+
|
2149 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:197
|
2150 |
+
#, php-format
|
2151 |
+
msgid ""
|
2152 |
+
"When a comment is detected as being SPAM, %s will put the comment in the "
|
2153 |
+
"specified folder."
|
2154 |
+
msgstr ""
|
2155 |
+
|
2156 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:202
|
2157 |
+
msgid "GASP Checkbox Message"
|
2158 |
+
msgstr ""
|
2159 |
+
|
2160 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:203
|
2161 |
+
msgid "If you want a custom checkbox message, please provide this here"
|
2162 |
+
msgstr ""
|
2163 |
+
|
2164 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:204
|
2165 |
+
msgid "You can customise the message beside the checkbox."
|
2166 |
+
msgstr ""
|
2167 |
+
|
2168 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:205
|
2169 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:233
|
2170 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:240
|
2171 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:247
|
2172 |
+
#, php-format
|
2173 |
+
msgid "Default Message: %s"
|
2174 |
+
msgstr ""
|
2175 |
+
|
2176 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:205
|
2177 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:233
|
2178 |
+
msgid "Please check the box to confirm you're not a spammer"
|
2179 |
+
msgstr ""
|
2180 |
+
|
2181 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:212
|
2182 |
+
msgid "Enable CAPTCHA To Protect Against SPAM Comments"
|
2183 |
+
msgstr ""
|
2184 |
+
|
2185 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:217
|
2186 |
+
msgid ""
|
2187 |
+
"You can choose the CAPTCHA display format that best suits your site, "
|
2188 |
+
"including the newer Invisible CAPTCHA, when you upgrade to PRO."
|
2189 |
+
msgstr ""
|
2190 |
+
|
2191 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:224
|
2192 |
+
msgid "Please remember to provide your CAPTCHA keys."
|
2193 |
+
msgstr ""
|
2194 |
+
|
2195 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:230
|
2196 |
+
msgid "GASP Alert Message"
|
2197 |
+
msgstr ""
|
2198 |
+
|
2199 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:231
|
2200 |
+
msgid "If you want a custom alert message, please provide this here"
|
2201 |
+
msgstr ""
|
2202 |
+
|
2203 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:232
|
2204 |
+
msgid ""
|
2205 |
+
"This alert message is displayed when a visitor attempts to submit a comment "
|
2206 |
+
"without checking the box."
|
2207 |
+
msgstr ""
|
2208 |
+
|
2209 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:237
|
2210 |
+
msgid "GASP Wait Message"
|
2211 |
+
msgstr ""
|
2212 |
+
|
2213 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:238
|
2214 |
+
msgid ""
|
2215 |
+
"If you want a custom submit-button wait message, please provide this here."
|
2216 |
+
msgstr ""
|
2217 |
+
|
2218 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:239
|
2219 |
+
#, php-format
|
2220 |
+
msgid ""
|
2221 |
+
"Where you see the '%s' this will be the number of seconds. You must ensure "
|
2222 |
+
"you include 1, and only 1, of these."
|
2223 |
+
msgstr ""
|
2224 |
+
|
2225 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:240
|
2226 |
+
#, php-format
|
2227 |
+
msgid "Please wait %s seconds before posting your comment"
|
2228 |
+
msgstr ""
|
2229 |
+
|
2230 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:244
|
2231 |
+
msgid "GASP Reload Message"
|
2232 |
+
msgstr ""
|
2233 |
+
|
2234 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:245
|
2235 |
+
msgid ""
|
2236 |
+
"If you want a custom message when the comment token has expired, please "
|
2237 |
+
"provide this here."
|
2238 |
+
msgstr ""
|
2239 |
+
|
2240 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:246
|
2241 |
+
msgid ""
|
2242 |
+
"This message is displayed on the submit-button when the comment token is "
|
2243 |
+
"expired"
|
2244 |
+
msgstr ""
|
2245 |
+
|
2246 |
+
#: src/lib/src/Modules/CommentsFilter/Strings.php:247
|
2247 |
+
msgid "Please reload this page to post a comment"
|
2248 |
+
msgstr ""
|
2249 |
+
|
2250 |
+
#: src/lib/src/Modules/Comms/Strings.php:15
|
2251 |
+
msgid "SureSend Fail"
|
2252 |
+
msgstr ""
|
2253 |
+
|
2254 |
+
#: src/lib/src/Modules/Comms/Strings.php:17
|
2255 |
+
msgid "Failed to send email (type: {{slug}}) to \"{{email}}\" using SureSend."
|
2256 |
+
msgstr ""
|
2257 |
+
|
2258 |
+
#: src/lib/src/Modules/Comms/Strings.php:21
|
2259 |
+
msgid "SureSend Success"
|
2260 |
+
msgstr ""
|
2261 |
+
|
2262 |
+
#: src/lib/src/Modules/Comms/Strings.php:23
|
2263 |
+
msgid ""
|
2264 |
+
"Successfully sent email (type: {{slug}}) to \"{{email}}\" using SureSend."
|
2265 |
+
msgstr ""
|
2266 |
+
|
2267 |
+
#: src/lib/src/Modules/Comms/Strings.php:37
|
2268 |
+
#: src/lib/src/Modules/Comms/Strings.php:38
|
2269 |
+
#: src/lib/src/Modules/Plugin/Strings.php:158
|
2270 |
+
#: src/lib/src/Modules/Plugin/Strings.php:159
|
2271 |
+
msgid "SureSend Email"
|
2272 |
+
msgstr ""
|
2273 |
+
|
2274 |
+
#: src/lib/src/Modules/Comms/Strings.php:61
|
2275 |
+
msgid "SureSend Emails"
|
2276 |
+
msgstr ""
|
2277 |
+
|
2278 |
+
#: src/lib/src/Modules/Comms/Strings.php:62
|
2279 |
+
msgid "Select Which Shield Emails Should Be Sent Using SureSend"
|
2280 |
+
msgstr ""
|
2281 |
+
|
2282 |
+
#: src/lib/src/Modules/Comms/Strings.php:64
|
2283 |
+
msgid "SureSend is a dedicated email delivery service from Shield Security."
|
2284 |
+
msgstr ""
|
2285 |
+
|
2286 |
+
#: src/lib/src/Modules/Comms/Strings.php:65
|
2287 |
+
msgid ""
|
2288 |
+
"The purpose is the improve WordPress email reliability for critical emails."
|
2289 |
+
msgstr ""
|
2290 |
+
|
2291 |
+
#: src/lib/src/Modules/Comms/Strings.php:66
|
2292 |
+
msgid ""
|
2293 |
+
"If you're not using a dedicated email service provider to send WordPress "
|
2294 |
+
"emails, you should enable SureSend for these important emails."
|
2295 |
+
msgstr ""
|
2296 |
+
|
2297 |
+
#: src/lib/src/Modules/Comms/Strings.php:67
|
2298 |
+
msgid "This isn't a replacement for a dedicated email service."
|
2299 |
+
msgstr ""
|
2300 |
+
|
2301 |
+
#: src/lib/src/Modules/Comms/Strings.php:68
|
2302 |
+
msgid ""
|
2303 |
+
"Please read the information and blog links below to fully understand this "
|
2304 |
+
"service and its limitations."
|
2305 |
+
msgstr ""
|
2306 |
+
|
2307 |
+
#: src/lib/src/Modules/Data/DB/ReqLogs/GetRequestMeta.php:22
|
2308 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:32
|
2309 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:31
|
2310 |
+
msgid "Request ID"
|
2311 |
+
msgstr ""
|
2312 |
+
|
2313 |
+
#: src/lib/src/Modules/Data/DB/ReqLogs/GetRequestMeta.php:28
|
2314 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:109
|
2315 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:130
|
2316 |
+
msgid "User ID"
|
2317 |
+
msgstr ""
|
2318 |
+
|
2319 |
+
#: src/lib/src/Modules/Data/DB/ReqLogs/GetRequestMeta.php:31
|
2320 |
+
msgid "Timestamp"
|
2321 |
+
msgstr ""
|
2322 |
+
|
2323 |
+
#: src/lib/src/Modules/Data/DB/ReqLogs/GetRequestMeta.php:34
|
2324 |
+
msgid "Method"
|
2325 |
+
msgstr ""
|
2326 |
+
|
2327 |
+
#: src/lib/src/Modules/Data/DB/ReqLogs/GetRequestMeta.php:40
|
2328 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:301
|
2329 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:119
|
2330 |
+
msgid "Path"
|
2331 |
+
msgstr ""
|
2332 |
+
|
2333 |
+
#: src/lib/src/Modules/Data/DB/ReqLogs/GetRequestMeta.php:43
|
2334 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:120
|
2335 |
+
msgid "User Agent"
|
2336 |
+
msgstr ""
|
2337 |
+
|
2338 |
+
#: src/lib/src/Modules/Email/Processor.php:12
|
2339 |
+
msgid "Hi !"
|
2340 |
+
msgstr ""
|
2341 |
+
|
2342 |
+
#: src/lib/src/Modules/Email/Processor.php:51
|
2343 |
+
#, php-format
|
2344 |
+
msgid "Email sent from the %s Plugin v%s, on %s."
|
2345 |
+
msgstr ""
|
2346 |
+
|
2347 |
+
#: src/lib/src/Modules/Email/Processor.php:56
|
2348 |
+
msgid "Note: Email delays are caused by website hosting and email providers."
|
2349 |
+
msgstr ""
|
2350 |
+
|
2351 |
+
#: src/lib/src/Modules/Email/Processor.php:57
|
2352 |
+
#, php-format
|
2353 |
+
msgid "Time Sent: %s"
|
2354 |
+
msgstr ""
|
2355 |
+
|
2356 |
+
#: src/lib/src/Modules/Events/Lib/Reports/KeyStats.php:64
|
2357 |
+
msgid "Top Security Statistics"
|
2358 |
+
msgstr ""
|
2359 |
+
|
2360 |
+
#: src/lib/src/Modules/Events/Lib/UI/BuildDataForStats.php:79
|
2361 |
+
msgid "IP Offenses"
|
2362 |
+
msgstr ""
|
2363 |
+
|
2364 |
+
#: src/lib/src/Modules/Events/Lib/UI/BuildDataForStats.php:87
|
2365 |
+
msgid "Bot Tracking"
|
2366 |
+
msgstr ""
|
2367 |
+
|
2368 |
+
#: src/lib/src/Modules/Events/Lib/UI/BuildDataForStats.php:102
|
2369 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:267
|
2370 |
+
msgid "Comment SPAM"
|
2371 |
+
msgstr ""
|
2372 |
+
|
2373 |
+
#: src/lib/src/Modules/Events/Lib/UI/BuildDataForStats.php:111
|
2374 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:66
|
2375 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:81
|
2376 |
+
#: src/lib/src/Modules/Plugin/Strings.php:548 src/wizards/plugin.php:659
|
2377 |
+
#: src/wizards/plugin.php:664
|
2378 |
+
msgid "Login Guard"
|
2379 |
+
msgstr ""
|
2380 |
+
|
2381 |
+
#: src/lib/src/Modules/Events/Processor.php:43
|
2382 |
+
#: src/lib/src/Modules/Reporting/UI.php:92
|
2383 |
+
msgid "Comment Blocks"
|
2384 |
+
msgstr ""
|
2385 |
+
|
2386 |
+
#: src/lib/src/Modules/Events/Processor.php:51
|
2387 |
+
msgid "Firewall Blocks"
|
2388 |
+
msgstr ""
|
2389 |
+
|
2390 |
+
#: src/lib/src/Modules/Events/Processor.php:55
|
2391 |
+
#: src/lib/src/Modules/Reporting/UI.php:72
|
2392 |
+
msgid "Login Blocks"
|
2393 |
+
msgstr ""
|
2394 |
+
|
2395 |
+
#: src/lib/src/Modules/Events/Processor.php:59
|
2396 |
+
msgid "Login Verified"
|
2397 |
+
msgstr ""
|
2398 |
+
|
2399 |
+
#: src/lib/src/Modules/Events/Processor.php:63
|
2400 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:49
|
2401 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:234
|
2402 |
+
#: src/lib/src/Modules/Insights/UI.php:203
|
2403 |
+
#: src/lib/src/Modules/UserManagement/UI.php:29
|
2404 |
+
msgid "User Sessions"
|
2405 |
+
msgstr ""
|
2406 |
+
|
2407 |
+
#: src/lib/src/Modules/Events/Processor.php:67
|
2408 |
+
msgid "IP Blocks"
|
2409 |
+
msgstr ""
|
2410 |
+
|
2411 |
+
#: src/lib/src/Modules/Events/Processor.php:71
|
2412 |
+
msgid "Total Offenses"
|
2413 |
+
msgstr ""
|
2414 |
+
|
2415 |
+
#: src/lib/src/Modules/Events/Processor.php:79
|
2416 |
+
#, php-format
|
2417 |
+
msgid "%s Statistics"
|
2418 |
+
msgstr ""
|
2419 |
+
|
2420 |
+
#: src/lib/src/Modules/Events/UI.php:22
|
2421 |
+
msgid "No stats yet. It wont take long though, so check back here soon."
|
2422 |
+
msgstr ""
|
2423 |
+
|
2424 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:24
|
2425 |
+
msgid "Include Admins"
|
2426 |
+
msgstr ""
|
2427 |
+
|
2428 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:25
|
2429 |
+
msgid "Ignore Admins"
|
2430 |
+
msgstr ""
|
2431 |
+
|
2432 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:28
|
2433 |
+
msgid "Firewall rules are also applied to admins"
|
2434 |
+
msgstr ""
|
2435 |
+
|
2436 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:29
|
2437 |
+
msgid "Firewall rules aren't applied to admins"
|
2438 |
+
msgstr ""
|
2439 |
+
|
2440 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:38
|
2441 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:48
|
2442 |
+
#: src/lib/src/Modules/Firewall/Strings.php:24
|
2443 |
+
#: src/lib/src/Modules/Plugin/Strings.php:539
|
2444 |
+
msgid "Firewall"
|
2445 |
+
msgstr ""
|
2446 |
+
|
2447 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:42
|
2448 |
+
msgid "Block Malicious Requests"
|
2449 |
+
msgstr ""
|
2450 |
+
|
2451 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:51
|
2452 |
+
msgid "The Firewall is protecting your site against malicious requests"
|
2453 |
+
msgstr ""
|
2454 |
+
|
2455 |
+
#: src/lib/src/Modules/Firewall/Insights/OverviewCards.php:52
|
2456 |
+
msgid ""
|
2457 |
+
"The Firewall is disabled so your site isn't protected against malicious "
|
2458 |
+
"requests"
|
2459 |
+
msgstr ""
|
2460 |
+
|
2461 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:97
|
2462 |
+
msgid "Something in the request URL or Form data triggered the firewall."
|
2463 |
+
msgstr ""
|
2464 |
+
|
2465 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:118
|
2466 |
+
msgid "Firewall Block Alert"
|
2467 |
+
msgstr ""
|
2468 |
+
|
2469 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:121
|
2470 |
+
#, php-format
|
2471 |
+
msgid "%s Firewall has blocked a request to your WordPress site."
|
2472 |
+
msgstr ""
|
2473 |
+
|
2474 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:123
|
2475 |
+
msgid "Details for the request are given below:"
|
2476 |
+
msgstr ""
|
2477 |
+
|
2478 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:124
|
2479 |
+
msgid "Request Details"
|
2480 |
+
msgstr ""
|
2481 |
+
|
2482 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:125
|
2483 |
+
msgid "IP Address Lookup"
|
2484 |
+
msgstr ""
|
2485 |
+
|
2486 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:126
|
2487 |
+
msgid "This is for informational purposes only."
|
2488 |
+
msgstr ""
|
2489 |
+
|
2490 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:127
|
2491 |
+
#, php-format
|
2492 |
+
msgid "%s has already taken the necessary action of blocking the request."
|
2493 |
+
msgstr ""
|
2494 |
+
|
2495 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:135
|
2496 |
+
msgid "Visitor IP Address"
|
2497 |
+
msgstr ""
|
2498 |
+
|
2499 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:136
|
2500 |
+
msgid "Firewall Rule"
|
2501 |
+
msgstr ""
|
2502 |
+
|
2503 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:137
|
2504 |
+
msgid "Request Path"
|
2505 |
+
msgstr ""
|
2506 |
+
|
2507 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:138
|
2508 |
+
msgid "Request Parameter"
|
2509 |
+
msgstr ""
|
2510 |
+
|
2511 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/FirewallHandler.php:139
|
2512 |
+
msgid "Request Value"
|
2513 |
+
msgstr ""
|
2514 |
+
|
2515 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/Aggressive.php:10
|
2516 |
+
msgid "Aggressive"
|
2517 |
+
msgstr ""
|
2518 |
+
|
2519 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/DirTraversal.php:10
|
2520 |
+
#: src/lib/src/Modules/Firewall/Strings.php:221
|
2521 |
+
#: src/lib/src/Modules/Firewall/Strings.php:223
|
2522 |
+
msgid "Directory Traversal"
|
2523 |
+
msgstr ""
|
2524 |
+
|
2525 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/ExeFiles.php:20
|
2526 |
+
msgid "Exe File"
|
2527 |
+
msgstr ""
|
2528 |
+
|
2529 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/FieldTruncation.php:10
|
2530 |
+
#: src/lib/src/Modules/Firewall/Strings.php:110
|
2531 |
+
#: src/lib/src/Modules/Firewall/Strings.php:229
|
2532 |
+
msgid "Field Truncation"
|
2533 |
+
msgstr ""
|
2534 |
+
|
2535 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/LeadingSchema.php:10
|
2536 |
+
#: src/lib/src/Modules/Firewall/Strings.php:235
|
2537 |
+
msgid "Leading Schema"
|
2538 |
+
msgstr ""
|
2539 |
+
|
2540 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/PhpCode.php:10
|
2541 |
+
#: src/lib/src/Modules/Firewall/Strings.php:116
|
2542 |
+
#: src/lib/src/Modules/Firewall/Strings.php:241
|
2543 |
+
msgid "PHP Code"
|
2544 |
+
msgstr ""
|
2545 |
+
|
2546 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/SqlQueries.php:10
|
2547 |
+
#: src/lib/src/Modules/Firewall/Strings.php:98
|
2548 |
+
#: src/lib/src/Modules/Firewall/Strings.php:232
|
2549 |
+
msgid "SQL Queries"
|
2550 |
+
msgstr ""
|
2551 |
+
|
2552 |
+
#: src/lib/src/Modules/Firewall/Lib/Scan/Handlers/WpTerms.php:10
|
2553 |
+
msgid "WP Terms"
|
2554 |
+
msgstr ""
|
2555 |
+
|
2556 |
+
#: src/lib/src/Modules/Firewall/ModCon.php:41
|
2557 |
+
#, php-format
|
2558 |
+
msgid "You were blocked by the %s Firewall."
|
2559 |
+
msgstr ""
|
2560 |
+
|
2561 |
+
#: src/lib/src/Modules/Firewall/Strings.php:23
|
2562 |
+
msgid ""
|
2563 |
+
"The Firewall is designed to analyse data sent to your website and block any "
|
2564 |
+
"requests that appear to be malicious."
|
2565 |
+
msgstr ""
|
2566 |
+
|
2567 |
+
#: src/lib/src/Modules/Firewall/Strings.php:29
|
2568 |
+
msgid "Firewall Blocking Options"
|
2569 |
+
msgstr ""
|
2570 |
+
|
2571 |
+
#: src/lib/src/Modules/Firewall/Strings.php:31
|
2572 |
+
msgid "Here you choose what kind of malicious data to scan for."
|
2573 |
+
msgstr ""
|
2574 |
+
|
2575 |
+
#: src/lib/src/Modules/Firewall/Strings.php:33
|
2576 |
+
msgid "Turn on as many options here as you can."
|
2577 |
+
msgstr ""
|
2578 |
+
|
2579 |
+
#: src/lib/src/Modules/Firewall/Strings.php:34
|
2580 |
+
msgid ""
|
2581 |
+
"If you find an incompatibility or something stops working, un-check 1 option "
|
2582 |
+
"at a time until you find the problem or review the Audit Trail."
|
2583 |
+
msgstr ""
|
2584 |
+
|
2585 |
+
#: src/lib/src/Modules/Firewall/Strings.php:36
|
2586 |
+
msgid "Firewall Blocking"
|
2587 |
+
msgstr ""
|
2588 |
+
|
2589 |
+
#: src/lib/src/Modules/Firewall/Strings.php:40
|
2590 |
+
msgid "Choose Firewall Block Response"
|
2591 |
+
msgstr ""
|
2592 |
+
|
2593 |
+
#: src/lib/src/Modules/Firewall/Strings.php:42
|
2594 |
+
msgid ""
|
2595 |
+
"Here you choose how the plugin will respond when it detects malicious data."
|
2596 |
+
msgstr ""
|
2597 |
+
|
2598 |
+
#: src/lib/src/Modules/Firewall/Strings.php:43
|
2599 |
+
#, php-format
|
2600 |
+
msgid "Choose the option \"%s\"."
|
2601 |
+
msgstr ""
|
2602 |
+
|
2603 |
+
#: src/lib/src/Modules/Firewall/Strings.php:43
|
2604 |
+
msgid "Die With Message"
|
2605 |
+
msgstr ""
|
2606 |
+
|
2607 |
+
#: src/lib/src/Modules/Firewall/Strings.php:45
|
2608 |
+
msgid "Firewall Response"
|
2609 |
+
msgstr ""
|
2610 |
+
|
2611 |
+
#: src/lib/src/Modules/Firewall/Strings.php:49
|
2612 |
+
msgid "Whitelists - Pages, Parameters, and Users that bypass the Firewall"
|
2613 |
+
msgstr ""
|
2614 |
+
|
2615 |
+
#: src/lib/src/Modules/Firewall/Strings.php:51
|
2616 |
+
msgid ""
|
2617 |
+
"In principle you should not need to whitelist anything or anyone unless you "
|
2618 |
+
"have discovered a collision with another plugin."
|
2619 |
+
msgstr ""
|
2620 |
+
|
2621 |
+
#: src/lib/src/Modules/Firewall/Strings.php:52
|
2622 |
+
msgid ""
|
2623 |
+
"Do not whitelist anything unless you are confident in what you are doing."
|
2624 |
+
msgstr ""
|
2625 |
+
|
2626 |
+
#: src/lib/src/Modules/Firewall/Strings.php:54
|
2627 |
+
msgid "Whitelist"
|
2628 |
+
msgstr ""
|
2629 |
+
|
2630 |
+
#: src/lib/src/Modules/Firewall/Strings.php:86
|
2631 |
+
msgid "Include Cookies"
|
2632 |
+
msgstr ""
|
2633 |
+
|
2634 |
+
#: src/lib/src/Modules/Firewall/Strings.php:87
|
2635 |
+
msgid "Also Test Cookie Values In Firewall Tests"
|
2636 |
+
msgstr ""
|
2637 |
+
|
2638 |
+
#: src/lib/src/Modules/Firewall/Strings.php:88
|
2639 |
+
msgid ""
|
2640 |
+
"The firewall tests GET and POST, but with this option checked it will also "
|
2641 |
+
"check COOKIE values."
|
2642 |
+
msgstr ""
|
2643 |
+
|
2644 |
+
#: src/lib/src/Modules/Firewall/Strings.php:92
|
2645 |
+
msgid "Directory Traversals"
|
2646 |
+
msgstr ""
|
2647 |
+
|
2648 |
+
#: src/lib/src/Modules/Firewall/Strings.php:93
|
2649 |
+
msgid "Block Directory Traversals"
|
2650 |
+
msgstr ""
|
2651 |
+
|
2652 |
+
#: src/lib/src/Modules/Firewall/Strings.php:94
|
2653 |
+
#, php-format
|
2654 |
+
msgid ""
|
2655 |
+
"This will block directory traversal paths in in application parameters (e.g. "
|
2656 |
+
"%s, etc)."
|
2657 |
+
msgstr ""
|
2658 |
+
|
2659 |
+
#: src/lib/src/Modules/Firewall/Strings.php:99
|
2660 |
+
msgid "Block SQL Queries"
|
2661 |
+
msgstr ""
|
2662 |
+
|
2663 |
+
#: src/lib/src/Modules/Firewall/Strings.php:100
|
2664 |
+
#, php-format
|
2665 |
+
msgid "This will block sql in application parameters (e.g. %s, etc)."
|
2666 |
+
msgstr ""
|
2667 |
+
|
2668 |
+
#: src/lib/src/Modules/Firewall/Strings.php:104
|
2669 |
+
#: src/lib/src/Modules/Firewall/Strings.php:226
|
2670 |
+
msgid "WordPress Terms"
|
2671 |
+
msgstr ""
|
2672 |
+
|
2673 |
+
#: src/lib/src/Modules/Firewall/Strings.php:105
|
2674 |
+
msgid "Block WordPress Specific Terms"
|
2675 |
+
msgstr ""
|
2676 |
+
|
2677 |
+
#: src/lib/src/Modules/Firewall/Strings.php:106
|
2678 |
+
msgid ""
|
2679 |
+
"This will block WordPress specific terms in application parameters (wp_, "
|
2680 |
+
"user_login, etc.)."
|
2681 |
+
msgstr ""
|
2682 |
+
|
2683 |
+
#: src/lib/src/Modules/Firewall/Strings.php:111
|
2684 |
+
msgid "Block Field Truncation Attacks"
|
2685 |
+
msgstr ""
|
2686 |
+
|
2687 |
+
#: src/lib/src/Modules/Firewall/Strings.php:112
|
2688 |
+
msgid "This will block field truncation attacks in application parameters."
|
2689 |
+
msgstr ""
|
2690 |
+
|
2691 |
+
#: src/lib/src/Modules/Firewall/Strings.php:117
|
2692 |
+
#, php-format
|
2693 |
+
msgid "Block %s"
|
2694 |
+
msgstr ""
|
2695 |
+
|
2696 |
+
#: src/lib/src/Modules/Firewall/Strings.php:117
|
2697 |
+
msgid "PHP Code Includes"
|
2698 |
+
msgstr ""
|
2699 |
+
|
2700 |
+
#: src/lib/src/Modules/Firewall/Strings.php:118
|
2701 |
+
msgid "This will block any data that appears to try and include PHP files."
|
2702 |
+
msgstr ""
|
2703 |
+
|
2704 |
+
#: src/lib/src/Modules/Firewall/Strings.php:119
|
2705 |
+
msgid "Will probably block saving within the Plugin/Theme file editors."
|
2706 |
+
msgstr ""
|
2707 |
+
|
2708 |
+
#: src/lib/src/Modules/Firewall/Strings.php:123
|
2709 |
+
msgid "Exe File Uploads"
|
2710 |
+
msgstr ""
|
2711 |
+
|
2712 |
+
#: src/lib/src/Modules/Firewall/Strings.php:124
|
2713 |
+
msgid "Block Executable File Uploads"
|
2714 |
+
msgstr ""
|
2715 |
+
|
2716 |
+
#: src/lib/src/Modules/Firewall/Strings.php:125
|
2717 |
+
msgid "This will block executable file uploads (.php, .exe, etc.)."
|
2718 |
+
msgstr ""
|
2719 |
+
|
2720 |
+
#: src/lib/src/Modules/Firewall/Strings.php:129
|
2721 |
+
msgid "Leading Schemas"
|
2722 |
+
msgstr ""
|
2723 |
+
|
2724 |
+
#: src/lib/src/Modules/Firewall/Strings.php:130
|
2725 |
+
msgid "Block Leading Schemas (HTTPS / HTTP)"
|
2726 |
+
msgstr ""
|
2727 |
+
|
2728 |
+
#: src/lib/src/Modules/Firewall/Strings.php:131
|
2729 |
+
msgid ""
|
2730 |
+
"This will block leading schemas http:// and https:// in application "
|
2731 |
+
"parameters (off by default; may cause problems with other plugins)."
|
2732 |
+
msgstr ""
|
2733 |
+
|
2734 |
+
#: src/lib/src/Modules/Firewall/Strings.php:135
|
2735 |
+
msgid "Aggressive Scan"
|
2736 |
+
msgstr ""
|
2737 |
+
|
2738 |
+
#: src/lib/src/Modules/Firewall/Strings.php:136
|
2739 |
+
msgid "Aggressively Block Data"
|
2740 |
+
msgstr ""
|
2741 |
+
|
2742 |
+
#: src/lib/src/Modules/Firewall/Strings.php:137
|
2743 |
+
msgid ""
|
2744 |
+
"Employs a set of aggressive rules to detect and block malicious data "
|
2745 |
+
"submitted to your site."
|
2746 |
+
msgstr ""
|
2747 |
+
|
2748 |
+
#: src/lib/src/Modules/Firewall/Strings.php:138
|
2749 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:43
|
2750 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:280
|
2751 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:304
|
2752 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:305
|
2753 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:356
|
2754 |
+
#: src/lib/src/Modules/IPs/ModCon.php:138
|
2755 |
+
#: src/lib/src/Modules/IPs/ModCon.php:145
|
2756 |
+
#: src/lib/src/Modules/IPs/Strings.php:206
|
2757 |
+
#: src/lib/src/Modules/Insights/Lib/OverviewCards.php:23
|
2758 |
+
#: src/lib/src/Modules/License/AdminNotices.php:28
|
2759 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:180
|
2760 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:102
|
2761 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:120
|
2762 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:92
|
2763 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:116
|
2764 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:136
|
2765 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:155
|
2766 |
+
#: src/lib/src/Modules/Plugin/Strings.php:358
|
2767 |
+
#: src/lib/src/Modules/Traffic/Strings.php:57
|
2768 |
+
msgid "Warning"
|
2769 |
+
msgstr ""
|
2770 |
+
|
2771 |
+
#: src/lib/src/Modules/Firewall/Strings.php:138
|
2772 |
+
msgid "May cause an increase in false-positive firewall blocks."
|
2773 |
+
msgstr ""
|
2774 |
+
|
2775 |
+
#: src/lib/src/Modules/Firewall/Strings.php:142
|
2776 |
+
msgid "Block Response"
|
2777 |
+
msgstr ""
|
2778 |
+
|
2779 |
+
#: src/lib/src/Modules/Firewall/Strings.php:143
|
2780 |
+
msgid "Choose how the firewall responds when it blocks a request"
|
2781 |
+
msgstr ""
|
2782 |
+
|
2783 |
+
#: src/lib/src/Modules/Firewall/Strings.php:144
|
2784 |
+
msgid ""
|
2785 |
+
"We recommend dying with a message so you know what might have occurred when "
|
2786 |
+
"the firewall blocks you"
|
2787 |
+
msgstr ""
|
2788 |
+
|
2789 |
+
#: src/lib/src/Modules/Firewall/Strings.php:148
|
2790 |
+
msgid "Send Email Report"
|
2791 |
+
msgstr ""
|
2792 |
+
|
2793 |
+
#: src/lib/src/Modules/Firewall/Strings.php:149
|
2794 |
+
msgid ""
|
2795 |
+
"When a visitor is blocked the firewall will send an email to the configured "
|
2796 |
+
"email address"
|
2797 |
+
msgstr ""
|
2798 |
+
|
2799 |
+
#: src/lib/src/Modules/Firewall/Strings.php:150
|
2800 |
+
msgid ""
|
2801 |
+
"Use with caution - if you get hit by automated bots you may send out too "
|
2802 |
+
"many emails and you could get blocked by your host"
|
2803 |
+
msgstr ""
|
2804 |
+
|
2805 |
+
#: src/lib/src/Modules/Firewall/Strings.php:154
|
2806 |
+
msgid "Whitelist Parameters"
|
2807 |
+
msgstr ""
|
2808 |
+
|
2809 |
+
#: src/lib/src/Modules/Firewall/Strings.php:155
|
2810 |
+
msgid ""
|
2811 |
+
"Detail pages and parameters that are whitelisted (ignored by the firewall)"
|
2812 |
+
msgstr ""
|
2813 |
+
|
2814 |
+
#: src/lib/src/Modules/Firewall/Strings.php:156
|
2815 |
+
msgid ""
|
2816 |
+
"This should be used with caution and you should only provide parameter names "
|
2817 |
+
"that you must have excluded"
|
2818 |
+
msgstr ""
|
2819 |
+
|
2820 |
+
#: src/lib/src/Modules/Firewall/Strings.php:160
|
2821 |
+
#: src/lib/src/Modules/Firewall/Strings.php:161
|
2822 |
+
#, php-format
|
2823 |
+
msgid "Ignore %s"
|
2824 |
+
msgstr ""
|
2825 |
+
|
2826 |
+
#: src/lib/src/Modules/Firewall/Strings.php:160
|
2827 |
+
#: src/lib/src/Modules/Firewall/Strings.php:161
|
2828 |
+
msgid "Administrators"
|
2829 |
+
msgstr ""
|
2830 |
+
|
2831 |
+
#: src/lib/src/Modules/Firewall/Strings.php:162
|
2832 |
+
msgid ""
|
2833 |
+
"Authenticated administrator users will not be processed by the firewall "
|
2834 |
+
"rules."
|
2835 |
+
msgstr ""
|
2836 |
+
|
2837 |
+
#: src/lib/src/Modules/Firewall/Strings.php:166
|
2838 |
+
msgid "Firewall Block Message"
|
2839 |
+
msgstr ""
|
2840 |
+
|
2841 |
+
#: src/lib/src/Modules/Firewall/Strings.php:167
|
2842 |
+
msgid "Message Displayed To Visitor When A Firewall Block Is Triggered"
|
2843 |
+
msgstr ""
|
2844 |
+
|
2845 |
+
#: src/lib/src/Modules/Firewall/Strings.php:168
|
2846 |
+
msgid "This is the message displayed to visitors that trigger the firewall."
|
2847 |
+
msgstr ""
|
2848 |
+
|
2849 |
+
#: src/lib/src/Modules/Firewall/Strings.php:188
|
2850 |
+
msgid "Firewall Block"
|
2851 |
+
msgstr ""
|
2852 |
+
|
2853 |
+
#: src/lib/src/Modules/Firewall/Strings.php:190
|
2854 |
+
msgid "Request blocked by firewall rule: {{name}}."
|
2855 |
+
msgstr ""
|
2856 |
+
|
2857 |
+
#: src/lib/src/Modules/Firewall/Strings.php:191
|
2858 |
+
msgid "Rule pattern detected: \"{{term}}\"."
|
2859 |
+
msgstr ""
|
2860 |
+
|
2861 |
+
#: src/lib/src/Modules/Firewall/Strings.php:192
|
2862 |
+
msgid ""
|
2863 |
+
"The offending request parameter was \"{{param}}\" with a value of "
|
2864 |
+
"\"{{value}}\"."
|
2865 |
+
msgstr ""
|
2866 |
+
|
2867 |
+
#: src/lib/src/Modules/Firewall/Strings.php:196
|
2868 |
+
msgid "Firewall Skip Checking"
|
2869 |
+
msgstr ""
|
2870 |
+
|
2871 |
+
#: src/lib/src/Modules/Firewall/Strings.php:198
|
2872 |
+
msgid "Skipping firewall checking for this visit: {{path}}."
|
2873 |
+
msgstr ""
|
2874 |
+
|
2875 |
+
#: src/lib/src/Modules/Firewall/Strings.php:202
|
2876 |
+
msgid "Firewall Block Email Success"
|
2877 |
+
msgstr ""
|
2878 |
+
|
2879 |
+
#: src/lib/src/Modules/Firewall/Strings.php:204
|
2880 |
+
msgid "Successfully sent Firewall Block email alert to: {{to}}"
|
2881 |
+
msgstr ""
|
2882 |
+
|
2883 |
+
#: src/lib/src/Modules/Firewall/Strings.php:208
|
2884 |
+
msgid "Firewall Block Email Fail"
|
2885 |
+
msgstr ""
|
2886 |
+
|
2887 |
+
#: src/lib/src/Modules/Firewall/Strings.php:210
|
2888 |
+
msgid "Failed to send Firewall Block email alert to: {{to}}"
|
2889 |
+
msgstr ""
|
2890 |
+
|
2891 |
+
#: src/lib/src/Modules/Firewall/Strings.php:221
|
2892 |
+
#, php-format
|
2893 |
+
msgid "Firewall Block Triggered: %s."
|
2894 |
+
msgstr ""
|
2895 |
+
|
2896 |
+
#: src/lib/src/Modules/Firewall/Strings.php:223
|
2897 |
+
#: src/lib/src/Modules/Firewall/Strings.php:226
|
2898 |
+
#: src/lib/src/Modules/Firewall/Strings.php:229
|
2899 |
+
#: src/lib/src/Modules/Firewall/Strings.php:232
|
2900 |
+
#: src/lib/src/Modules/Firewall/Strings.php:235
|
2901 |
+
#: src/lib/src/Modules/Firewall/Strings.php:238
|
2902 |
+
#: src/lib/src/Modules/Firewall/Strings.php:241
|
2903 |
+
#: src/lib/src/Modules/Firewall/Strings.php:244
|
2904 |
+
#, php-format
|
2905 |
+
msgid "Firewall Trigger: %s."
|
2906 |
+
msgstr ""
|
2907 |
+
|
2908 |
+
#: src/lib/src/Modules/Firewall/Strings.php:238
|
2909 |
+
msgid "Aggressive Rules"
|
2910 |
+
msgstr ""
|
2911 |
+
|
2912 |
+
#: src/lib/src/Modules/Firewall/Strings.php:244
|
2913 |
+
msgid "EXE File Uploads"
|
2914 |
+
msgstr ""
|
2915 |
+
|
2916 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:70
|
2917 |
+
msgid "There have been no changes to the selected file."
|
2918 |
+
msgstr ""
|
2919 |
+
|
2920 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:71
|
2921 |
+
msgid ""
|
2922 |
+
"Please review the changes below and accept them, or restore the original "
|
2923 |
+
"file contents."
|
2924 |
+
msgstr ""
|
2925 |
+
|
2926 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:72
|
2927 |
+
msgid "Restore File"
|
2928 |
+
msgstr ""
|
2929 |
+
|
2930 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:73
|
2931 |
+
msgid "Accept Changes"
|
2932 |
+
msgstr ""
|
2933 |
+
|
2934 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:74
|
2935 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:39
|
2936 |
+
#: src/lib/src/Modules/License/Strings.php:54
|
2937 |
+
msgid "Name"
|
2938 |
+
msgstr ""
|
2939 |
+
|
2940 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:75
|
2941 |
+
msgid "File Size"
|
2942 |
+
msgstr ""
|
2943 |
+
|
2944 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:76
|
2945 |
+
msgid "Locked File"
|
2946 |
+
msgstr ""
|
2947 |
+
|
2948 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:77
|
2949 |
+
msgid "Modified File"
|
2950 |
+
msgstr ""
|
2951 |
+
|
2952 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:78
|
2953 |
+
msgid "Locked"
|
2954 |
+
msgstr ""
|
2955 |
+
|
2956 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:79
|
2957 |
+
msgid "File Modified Timestamp"
|
2958 |
+
msgstr ""
|
2959 |
+
|
2960 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:80
|
2961 |
+
msgid "File Modified"
|
2962 |
+
msgstr ""
|
2963 |
+
|
2964 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:81
|
2965 |
+
msgid "Relative Path"
|
2966 |
+
msgstr ""
|
2967 |
+
|
2968 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:82
|
2969 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:90
|
2970 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:123
|
2971 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:152
|
2972 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:199
|
2973 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:297
|
2974 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:85
|
2975 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:123
|
2976 |
+
msgid "Modified"
|
2977 |
+
msgstr ""
|
2978 |
+
|
2979 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:83
|
2980 |
+
msgid "Download"
|
2981 |
+
msgstr ""
|
2982 |
+
|
2983 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:84
|
2984 |
+
msgid "Change Detected"
|
2985 |
+
msgstr ""
|
2986 |
+
|
2987 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:85
|
2988 |
+
msgid "Original File Content"
|
2989 |
+
msgstr ""
|
2990 |
+
|
2991 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:86
|
2992 |
+
msgid "Current File Content"
|
2993 |
+
msgstr ""
|
2994 |
+
|
2995 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:87
|
2996 |
+
msgid "Download Original"
|
2997 |
+
msgstr ""
|
2998 |
+
|
2999 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:88
|
3000 |
+
msgid "Download Modified"
|
3001 |
+
msgstr ""
|
3002 |
+
|
3003 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:89
|
3004 |
+
msgid "File Download"
|
3005 |
+
msgstr ""
|
3006 |
+
|
3007 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:90
|
3008 |
+
msgid "File Info"
|
3009 |
+
msgstr ""
|
3010 |
+
|
3011 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:91
|
3012 |
+
msgid "Accept File Changes"
|
3013 |
+
msgstr ""
|
3014 |
+
|
3015 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:92
|
3016 |
+
msgid "Are you sure you want to keep the file changes?"
|
3017 |
+
msgstr ""
|
3018 |
+
|
3019 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:93
|
3020 |
+
msgid "Restore Original File"
|
3021 |
+
msgstr ""
|
3022 |
+
|
3023 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:94
|
3024 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:95
|
3025 |
+
msgid "Are you sure you want to restore the original file contents?"
|
3026 |
+
msgstr ""
|
3027 |
+
|
3028 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:167
|
3029 |
+
msgid "Requested action completed successfully."
|
3030 |
+
msgstr ""
|
3031 |
+
|
3032 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:170
|
3033 |
+
msgid "Requested action failed."
|
3034 |
+
msgstr ""
|
3035 |
+
|
3036 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:174
|
3037 |
+
msgid "Please check the box to confirm this action"
|
3038 |
+
msgstr ""
|
3039 |
+
|
3040 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:218
|
3041 |
+
msgid "No scan running."
|
3042 |
+
msgstr ""
|
3043 |
+
|
3044 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:224
|
3045 |
+
msgid "No scans remaining."
|
3046 |
+
msgstr ""
|
3047 |
+
|
3048 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:227
|
3049 |
+
#, php-format
|
3050 |
+
msgid "%s scans remaining."
|
3051 |
+
msgstr ""
|
3052 |
+
|
3053 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:238
|
3054 |
+
msgid "Current Scan"
|
3055 |
+
msgstr ""
|
3056 |
+
|
3057 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:242
|
3058 |
+
msgid "Please be patient."
|
3059 |
+
msgstr ""
|
3060 |
+
|
3061 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:243
|
3062 |
+
msgid "Some scans can take quite a while to complete."
|
3063 |
+
msgstr ""
|
3064 |
+
|
3065 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:244
|
3066 |
+
msgid "Scans completed."
|
3067 |
+
msgstr ""
|
3068 |
+
|
3069 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:244
|
3070 |
+
#: src/lib/src/Modules/License/AjaxHandler.php:73
|
3071 |
+
msgid "Reloading page"
|
3072 |
+
msgstr ""
|
3073 |
+
|
3074 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:259
|
3075 |
+
msgid "No scans were selected"
|
3076 |
+
msgstr ""
|
3077 |
+
|
3078 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:271
|
3079 |
+
msgid "Scans started."
|
3080 |
+
msgstr ""
|
3081 |
+
|
3082 |
+
#: src/lib/src/Modules/HackGuard/AjaxHandler.php:271
|
3083 |
+
msgid "Please wait, as this will take a few moments."
|
3084 |
+
msgstr ""
|
3085 |
+
|
3086 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:26
|
3087 |
+
msgid "Scan Frequency"
|
3088 |
+
msgstr ""
|
3089 |
+
|
3090 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:29
|
3091 |
+
msgid "Automatic scanners run more than once per day"
|
3092 |
+
msgstr ""
|
3093 |
+
|
3094 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:30
|
3095 |
+
msgid "Automatic scanners only run once per day"
|
3096 |
+
msgstr ""
|
3097 |
+
|
3098 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:48
|
3099 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:118
|
3100 |
+
#: src/lib/src/Modules/Plugin/Strings.php:541
|
3101 |
+
msgid "Hack Guard"
|
3102 |
+
msgstr ""
|
3103 |
+
|
3104 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:52
|
3105 |
+
msgid "Threats/Intrusions Detection & Repair"
|
3106 |
+
msgstr ""
|
3107 |
+
|
3108 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:67
|
3109 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:111
|
3110 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:144
|
3111 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:174
|
3112 |
+
msgid "Scanner"
|
3113 |
+
msgstr ""
|
3114 |
+
|
3115 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:70
|
3116 |
+
msgid "WP Core files are scanned automatically"
|
3117 |
+
msgstr ""
|
3118 |
+
|
3119 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:71
|
3120 |
+
msgid "WP Core files aren't automatically scanned!"
|
3121 |
+
msgstr ""
|
3122 |
+
|
3123 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:73
|
3124 |
+
msgid "Automatic WordPress Core File scanner should be turned-on."
|
3125 |
+
msgstr ""
|
3126 |
+
|
3127 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:78
|
3128 |
+
msgid "WP Core File Repair"
|
3129 |
+
msgstr ""
|
3130 |
+
|
3131 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:81
|
3132 |
+
msgid "Core files are automatically repaired"
|
3133 |
+
msgstr ""
|
3134 |
+
|
3135 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:82
|
3136 |
+
msgid "Core files aren't automatically repaired!"
|
3137 |
+
msgstr ""
|
3138 |
+
|
3139 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:90
|
3140 |
+
#: src/lib/src/Modules/HackGuard/Scan/Controller/Afs.php:54
|
3141 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:86
|
3142 |
+
msgid "WordPress Core Files"
|
3143 |
+
msgstr ""
|
3144 |
+
|
3145 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:91
|
3146 |
+
msgid "WordPress core files have been modified."
|
3147 |
+
msgstr ""
|
3148 |
+
|
3149 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:94
|
3150 |
+
msgid "Scan WP core files and repair any files that are flagged as modified."
|
3151 |
+
msgstr ""
|
3152 |
+
|
3153 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:111
|
3154 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:123
|
3155 |
+
msgid "Plugins & Themes"
|
3156 |
+
msgstr ""
|
3157 |
+
|
3158 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:113
|
3159 |
+
msgid "Plugins and Themes are guarded against tampering"
|
3160 |
+
msgstr ""
|
3161 |
+
|
3162 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:114
|
3163 |
+
msgid "Plugins and Themes are never scanned for tampering!"
|
3164 |
+
msgstr ""
|
3165 |
+
|
3166 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:117
|
3167 |
+
msgid "Automatic detection of plugin/theme modifications is recommended."
|
3168 |
+
msgstr ""
|
3169 |
+
|
3170 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:124
|
3171 |
+
msgid "A plugin/theme was found to have been modified."
|
3172 |
+
msgstr ""
|
3173 |
+
|
3174 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:127
|
3175 |
+
msgid "Reviewing modifications to your plugins/themes is recommended."
|
3176 |
+
msgstr ""
|
3177 |
+
|
3178 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:146
|
3179 |
+
#, php-format
|
3180 |
+
msgid "%s Scanner runs automatically."
|
3181 |
+
msgstr ""
|
3182 |
+
|
3183 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:147
|
3184 |
+
#, php-format
|
3185 |
+
msgid "%s Scanner isn't set to run automatically."
|
3186 |
+
msgstr ""
|
3187 |
+
|
3188 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:150
|
3189 |
+
msgid "Automatic detection of Malware is recommended."
|
3190 |
+
msgstr ""
|
3191 |
+
|
3192 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:154
|
3193 |
+
msgid "Potential Malware Detected"
|
3194 |
+
msgstr ""
|
3195 |
+
|
3196 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:155
|
3197 |
+
msgid "Potential Malware files have been discovered."
|
3198 |
+
msgstr ""
|
3199 |
+
|
3200 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:158
|
3201 |
+
msgid ""
|
3202 |
+
"Files identified as potential malware should be examined as soon as possible."
|
3203 |
+
msgstr ""
|
3204 |
+
|
3205 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:177
|
3206 |
+
#, php-format
|
3207 |
+
msgid "%s Scanner is enabled."
|
3208 |
+
msgstr ""
|
3209 |
+
|
3210 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:178
|
3211 |
+
#, php-format
|
3212 |
+
msgid "%s Scanner is not enabled."
|
3213 |
+
msgstr ""
|
3214 |
+
|
3215 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:183
|
3216 |
+
msgid "Plugin Abandoned"
|
3217 |
+
msgstr ""
|
3218 |
+
|
3219 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:184
|
3220 |
+
msgid "At least 1 plugin on your site is abandoned."
|
3221 |
+
msgstr ""
|
3222 |
+
|
3223 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:187
|
3224 |
+
msgid ""
|
3225 |
+
"Plugins that have been abandoned represent a potential risk to your site."
|
3226 |
+
msgstr ""
|
3227 |
+
|
3228 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:203
|
3229 |
+
msgid "Vulnerability Scan"
|
3230 |
+
msgstr ""
|
3231 |
+
|
3232 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:206
|
3233 |
+
msgid "Regularly scanning for known vulnerabilities"
|
3234 |
+
msgstr ""
|
3235 |
+
|
3236 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:207
|
3237 |
+
msgid "Plugins/Themes never scanned for vulnerabilities!"
|
3238 |
+
msgstr ""
|
3239 |
+
|
3240 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:209
|
3241 |
+
msgid "Automatic detection of vulnerabilities is recommended."
|
3242 |
+
msgstr ""
|
3243 |
+
|
3244 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:215
|
3245 |
+
msgid "Auto Update"
|
3246 |
+
msgstr ""
|
3247 |
+
|
3248 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:217
|
3249 |
+
msgid "Vulnerable items are automatically updated"
|
3250 |
+
msgstr ""
|
3251 |
+
|
3252 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:218
|
3253 |
+
msgid "Vulnerable items aren't automatically updated!"
|
3254 |
+
msgstr ""
|
3255 |
+
|
3256 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:225
|
3257 |
+
msgid "Vulnerable Plugin"
|
3258 |
+
msgstr ""
|
3259 |
+
|
3260 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:226
|
3261 |
+
msgid "Plugin with vulnerabilities found on site."
|
3262 |
+
msgstr ""
|
3263 |
+
|
3264 |
+
#: src/lib/src/Modules/HackGuard/Insights/OverviewCards.php:229
|
3265 |
+
msgid ""
|
3266 |
+
"Items with known vulnerabilities should be updated, removed, or replaced."
|
3267 |
+
msgstr ""
|
3268 |
+
|
3269 |
+
#: src/lib/src/Modules/HackGuard/Lib/FileLocker/FileLockerController.php:56
|
3270 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:251
|
3271 |
+
#: src/lib/src/Modules/HackGuard/UI.php:222
|
3272 |
+
msgid "File Locker"
|
3273 |
+
msgstr ""
|
3274 |
+
|
3275 |
+
#: src/lib/src/Modules/HackGuard/Lib/FileLocker/Ops/Diff.php:19
|
3276 |
+
msgid "File is missing or could not be read."
|
3277 |
+
msgstr ""
|
3278 |
+
|
3279 |
+
#: src/lib/src/Modules/HackGuard/Lib/FileLocker/Ops/Diff.php:24
|
3280 |
+
msgid "File is empty or could not be read."
|
3281 |
+
msgstr ""
|
3282 |
+
|
3283 |
+
#: src/lib/src/Modules/HackGuard/Lib/FileLocker/Ops/PerformAction.php:32
|
3284 |
+
msgid "Not a supported file lock action."
|
3285 |
+
msgstr ""
|
3286 |
+
|
3287 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/FileLockerAlerts.php:29
|
3288 |
+
msgid "File Locker Changes Detected"
|
3289 |
+
msgstr ""
|
3290 |
+
|
3291 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/FileLockerAlerts.php:30
|
3292 |
+
msgid "Changes have been detected in the contents of critical files."
|
3293 |
+
msgstr ""
|
3294 |
+
|
3295 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/FileLockerAlerts.php:31
|
3296 |
+
msgid "Total Changed Files"
|
3297 |
+
msgstr ""
|
3298 |
+
|
3299 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/FileLockerAlerts.php:32
|
3300 |
+
msgid "Click Here To View File Locker Results"
|
3301 |
+
msgstr ""
|
3302 |
+
|
3303 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/ScanAlerts.php:38
|
3304 |
+
msgid "New Scan Results"
|
3305 |
+
msgstr ""
|
3306 |
+
|
3307 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/ScanAlerts.php:39
|
3308 |
+
msgid "Click Here To View Scan Results Details"
|
3309 |
+
msgstr ""
|
3310 |
+
|
3311 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/ScanAlerts.php:41
|
3312 |
+
msgid ""
|
3313 |
+
"Depending on previous actions taken on the site or file system changes, "
|
3314 |
+
"these results may no longer be available to view."
|
3315 |
+
msgstr ""
|
3316 |
+
|
3317 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/ScanRepairs.php:82
|
3318 |
+
msgid "Scanner Repairs"
|
3319 |
+
msgstr ""
|
3320 |
+
|
3321 |
+
#: src/lib/src/Modules/HackGuard/Lib/Reports/ScanRepairs.php:83
|
3322 |
+
msgid "View all repairs and file deletions in the Audit Trail"
|
3323 |
+
msgstr ""
|
3324 |
+
|
3325 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/DelegateAjaxHandler.php:78
|
3326 |
+
msgid "Action successful."
|
3327 |
+
msgstr ""
|
3328 |
+
|
3329 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/DelegateAjaxHandler.php:81
|
3330 |
+
msgid "An error occurred."
|
3331 |
+
msgstr ""
|
3332 |
+
|
3333 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/DelegateAjaxHandler.php:82
|
3334 |
+
msgid "Some items may not have been processed."
|
3335 |
+
msgstr ""
|
3336 |
+
|
3337 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:82
|
3338 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:78
|
3339 |
+
msgid "Malware"
|
3340 |
+
msgstr ""
|
3341 |
+
|
3342 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:156
|
3343 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:203
|
3344 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:82
|
3345 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:120
|
3346 |
+
msgid "Missing"
|
3347 |
+
msgstr ""
|
3348 |
+
|
3349 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:160
|
3350 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:207
|
3351 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:76
|
3352 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:117
|
3353 |
+
msgid "Unrecognised"
|
3354 |
+
msgstr ""
|
3355 |
+
|
3356 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:245
|
3357 |
+
msgid "View File Details"
|
3358 |
+
msgstr ""
|
3359 |
+
|
3360 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:254
|
3361 |
+
#: src/lib/src/Modules/Plugin/Strings.php:436
|
3362 |
+
#: src/lib/src/Tables/Render/WpListTable/AdminNotes.php:16
|
3363 |
+
#: src/lib/src/Tables/Render/WpListTable/Base.php:227
|
3364 |
+
msgid "Delete"
|
3365 |
+
msgstr ""
|
3366 |
+
|
3367 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:265
|
3368 |
+
#: src/lib/src/Tables/Render/WpListTable/Base.php:239
|
3369 |
+
msgid "Repair"
|
3370 |
+
msgstr ""
|
3371 |
+
|
3372 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:276
|
3373 |
+
#: src/lib/src/Tables/Render/WpListTable/Base.php:251
|
3374 |
+
msgid "Ignore"
|
3375 |
+
msgstr ""
|
3376 |
+
|
3377 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:301
|
3378 |
+
msgid "Size"
|
3379 |
+
msgstr ""
|
3380 |
+
|
3381 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/LoadRawTableData.php:313
|
3382 |
+
msgid "View File Contents"
|
3383 |
+
msgstr ""
|
3384 |
+
|
3385 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:43
|
3386 |
+
#, php-format
|
3387 |
+
msgid "File detected as %s by %s scanner."
|
3388 |
+
msgstr ""
|
3389 |
+
|
3390 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:79
|
3391 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:113
|
3392 |
+
#: src/lib/src/Modules/HackGuard/Scan/Controller/Afs.php:45
|
3393 |
+
msgid "Potential Malware"
|
3394 |
+
msgstr ""
|
3395 |
+
|
3396 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:105
|
3397 |
+
msgid "File Detected By Scans"
|
3398 |
+
msgstr ""
|
3399 |
+
|
3400 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:106
|
3401 |
+
msgid "File Repair Attempted"
|
3402 |
+
msgstr ""
|
3403 |
+
|
3404 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:107
|
3405 |
+
msgid "File Repaired"
|
3406 |
+
msgstr ""
|
3407 |
+
|
3408 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:108
|
3409 |
+
msgid "File Deleted"
|
3410 |
+
msgstr ""
|
3411 |
+
|
3412 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:109
|
3413 |
+
msgid "Item Marked As Ignored"
|
3414 |
+
msgstr ""
|
3415 |
+
|
3416 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildHistory.php:110
|
3417 |
+
msgid "Notification Of Scan Detection Sent"
|
3418 |
+
msgstr ""
|
3419 |
+
|
3420 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:45
|
3421 |
+
msgid "File Status"
|
3422 |
+
msgstr ""
|
3423 |
+
|
3424 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:49
|
3425 |
+
msgid "Full Path To File"
|
3426 |
+
msgstr ""
|
3427 |
+
|
3428 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:53
|
3429 |
+
msgid "View Original File Contents"
|
3430 |
+
msgstr ""
|
3431 |
+
|
3432 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:67
|
3433 |
+
#, php-format
|
3434 |
+
msgid ""
|
3435 |
+
"This file is located in a core WordPress directory isn't a recognised core "
|
3436 |
+
"file for WordPress %s."
|
3437 |
+
msgstr ""
|
3438 |
+
|
3439 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:73
|
3440 |
+
#, php-format
|
3441 |
+
msgid "This is a recognised core file for WordPress %s."
|
3442 |
+
msgstr ""
|
3443 |
+
|
3444 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:80
|
3445 |
+
msgid ""
|
3446 |
+
"It's located in a WordPress plugin directory, but it's not recognised as an "
|
3447 |
+
"official file."
|
3448 |
+
msgstr ""
|
3449 |
+
|
3450 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:83
|
3451 |
+
msgid ""
|
3452 |
+
"It's located in a WordPress plugin directory, and is a recognised official "
|
3453 |
+
"file."
|
3454 |
+
msgstr ""
|
3455 |
+
|
3456 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:88
|
3457 |
+
msgid ""
|
3458 |
+
"It's located in a WordPress theme directory, but it's not recognised as an "
|
3459 |
+
"official file."
|
3460 |
+
msgstr ""
|
3461 |
+
|
3462 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:91
|
3463 |
+
msgid ""
|
3464 |
+
"It's located in a WordPress theme directory, and is a recognised official "
|
3465 |
+
"file."
|
3466 |
+
msgstr ""
|
3467 |
+
|
3468 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:95
|
3469 |
+
msgid "Contents have been modified from what is expected."
|
3470 |
+
msgstr ""
|
3471 |
+
|
3472 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:98
|
3473 |
+
msgid "Contents could potentially contain malicious PHP malware."
|
3474 |
+
msgstr ""
|
3475 |
+
|
3476 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:99
|
3477 |
+
#, php-format
|
3478 |
+
msgid "The false positive score of this file is %s."
|
3479 |
+
msgstr ""
|
3480 |
+
|
3481 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/BuildInfo.php:101
|
3482 |
+
msgid ""
|
3483 |
+
"The lower the score the less we know about the file and the more likely it "
|
3484 |
+
"contains malicious code."
|
3485 |
+
msgstr ""
|
3486 |
+
|
3487 |
+
#: src/lib/src/Modules/HackGuard/Lib/ScanTables/Modals/ScanItemView.php:110
|
3488 |
+
msgid "Download File"
|
3489 |
+
msgstr ""
|
3490 |
+
|
3491 |
+
#: src/lib/src/Modules/HackGuard/ModCon.php:179
|
3492 |
+
#, php-format
|
3493 |
+
msgid "%s per day"
|
3494 |
+
msgstr ""
|
3495 |
+
|
3496 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:37
|
3497 |
+
msgid "Author"
|
3498 |
+
msgstr ""
|
3499 |
+
|
3500 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:38
|
3501 |
+
#: src/lib/src/Modules/Insights/UI.php:312
|
3502 |
+
#: src/lib/src/Modules/Insights/UI.php:350
|
3503 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:105
|
3504 |
+
msgid "Version"
|
3505 |
+
msgstr ""
|
3506 |
+
|
3507 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:40
|
3508 |
+
msgid "Installation Directory"
|
3509 |
+
msgstr ""
|
3510 |
+
|
3511 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:41
|
3512 |
+
msgid "File Integrity"
|
3513 |
+
msgstr ""
|
3514 |
+
|
3515 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:42
|
3516 |
+
#: src/lib/src/Modules/Insights/Lib/OverviewCards.php:31
|
3517 |
+
msgid "Good"
|
3518 |
+
msgstr ""
|
3519 |
+
|
3520 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:44
|
3521 |
+
msgid "Abandoned"
|
3522 |
+
msgstr ""
|
3523 |
+
|
3524 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:45
|
3525 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/WpvAddPluginRows.php:77
|
3526 |
+
msgid "Vulnerable"
|
3527 |
+
msgstr ""
|
3528 |
+
|
3529 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:46
|
3530 |
+
msgid "Known vulnerabilities discovered."
|
3531 |
+
msgstr ""
|
3532 |
+
|
3533 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:47
|
3534 |
+
msgid ""
|
3535 |
+
"You should upgrade to the latest version or remove it if no updates are "
|
3536 |
+
"available."
|
3537 |
+
msgstr ""
|
3538 |
+
|
3539 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:48
|
3540 |
+
msgid "Update Available"
|
3541 |
+
msgstr ""
|
3542 |
+
|
3543 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:49
|
3544 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:98
|
3545 |
+
msgid "Installed"
|
3546 |
+
msgstr ""
|
3547 |
+
|
3548 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:50
|
3549 |
+
msgid "estimated"
|
3550 |
+
msgstr ""
|
3551 |
+
|
3552 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:51
|
3553 |
+
msgid "relative to WordPress install dir"
|
3554 |
+
msgstr ""
|
3555 |
+
|
3556 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:52
|
3557 |
+
msgid "Linked To Child Theme"
|
3558 |
+
msgstr ""
|
3559 |
+
|
3560 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionBase.php:53
|
3561 |
+
msgid "Linked To Parent Theme"
|
3562 |
+
msgstr ""
|
3563 |
+
|
3564 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionMalware.php:25
|
3565 |
+
msgid "Previous scans didn't detect any files suspected of being malware."
|
3566 |
+
msgstr ""
|
3567 |
+
|
3568 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionMalware.php:26
|
3569 |
+
msgid "Previous scans detected 1 or more files suspected of being malware."
|
3570 |
+
msgstr ""
|
3571 |
+
|
3572 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionMalware.php:27
|
3573 |
+
msgid "The Malware File Scanner is only available with ShieldPRO."
|
3574 |
+
msgstr ""
|
3575 |
+
|
3576 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPluginThemesBase.php:20
|
3577 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:74
|
3578 |
+
msgid "Plugin/Theme Guard"
|
3579 |
+
msgstr ""
|
3580 |
+
|
3581 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPluginThemesBase.php:21
|
3582 |
+
msgid "The Plugin & Theme File Guard Scanner is only available with ShieldPRO."
|
3583 |
+
msgstr ""
|
3584 |
+
|
3585 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPlugins.php:58
|
3586 |
+
msgid ""
|
3587 |
+
"Previous scans didn't detect any modified or unrecognised files in any "
|
3588 |
+
"plugin directories."
|
3589 |
+
msgstr ""
|
3590 |
+
|
3591 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPlugins.php:59
|
3592 |
+
msgid ""
|
3593 |
+
"Previous scans didn't detect any modified or unrecognised files in the "
|
3594 |
+
"plugin directory."
|
3595 |
+
msgstr ""
|
3596 |
+
|
3597 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPlugins.php:60
|
3598 |
+
msgid ""
|
3599 |
+
"Previous scans detected 1 or more modified or unrecognised files in the "
|
3600 |
+
"plugin directory."
|
3601 |
+
msgstr ""
|
3602 |
+
|
3603 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPlugins.php:61
|
3604 |
+
msgid "This plugin isn't active and should be uninstalled."
|
3605 |
+
msgstr ""
|
3606 |
+
|
3607 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionThemes.php:60
|
3608 |
+
msgid ""
|
3609 |
+
"Previous scans didn't detect any modified or unrecognised files in any Theme "
|
3610 |
+
"directories."
|
3611 |
+
msgstr ""
|
3612 |
+
|
3613 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionThemes.php:61
|
3614 |
+
msgid ""
|
3615 |
+
"Previous scans didn't detect any modified or unrecognised files in the Theme "
|
3616 |
+
"directories."
|
3617 |
+
msgstr ""
|
3618 |
+
|
3619 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionThemes.php:62
|
3620 |
+
msgid ""
|
3621 |
+
"Previous scans detected 1 or more modified or unrecognised files in the "
|
3622 |
+
"theme directory."
|
3623 |
+
msgstr ""
|
3624 |
+
|
3625 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionThemes.php:63
|
3626 |
+
msgid "This theme isn't active and should be uninstalled."
|
3627 |
+
msgstr ""
|
3628 |
+
|
3629 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionWordpress.php:25
|
3630 |
+
msgid ""
|
3631 |
+
"Previous scans didn't detect any modified, missing or unrecognised files in "
|
3632 |
+
"the WordPress core directories."
|
3633 |
+
msgstr ""
|
3634 |
+
|
3635 |
+
#: src/lib/src/Modules/HackGuard/Render/ScanResults/SectionWordpress.php:26
|
3636 |
+
msgid ""
|
3637 |
+
"Previous scans detected 1 or more modified, missing or unrecognised files in "
|
3638 |
+
"the WordPress core directories."
|
3639 |
+
msgstr ""
|
3640 |
+
|
3641 |
+
#: src/lib/src/Modules/HackGuard/Scan/Controller/Afs.php:63
|
3642 |
+
msgid "Plugin Files"
|
3643 |
+
msgstr ""
|
3644 |
+
|
3645 |
+
#: src/lib/src/Modules/HackGuard/Scan/Controller/Afs.php:72
|
3646 |
+
msgid "Theme Files"
|
3647 |
+
msgstr ""
|
3648 |
+
|
3649 |
+
#: src/lib/src/Modules/HackGuard/Scan/Controller/Apc.php:23
|
3650 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:70
|
3651 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:156
|
3652 |
+
msgid "Abandoned Plugins"
|
3653 |
+
msgstr ""
|
3654 |
+
|
3655 |
+
#: src/lib/src/Modules/HackGuard/Scan/Controller/Wpv.php:49
|
3656 |
+
msgid "Vulnerable Plugins"
|
3657 |
+
msgstr ""
|
3658 |
+
|
3659 |
+
#: src/lib/src/Modules/HackGuard/Scan/Init/SetScanCompleted.php:72
|
3660 |
+
msgid "Only the first 30 items are shown."
|
3661 |
+
msgstr ""
|
3662 |
+
|
3663 |
+
#: src/lib/src/Modules/HackGuard/Scan/Init/SetScanCompleted.php:73
|
3664 |
+
msgid "The following items were discovered."
|
3665 |
+
msgstr ""
|
3666 |
+
|
3667 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:43
|
3668 |
+
msgid "Re-install First"
|
3669 |
+
msgstr ""
|
3670 |
+
|
3671 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:44
|
3672 |
+
msgid "Then Activate"
|
3673 |
+
msgstr ""
|
3674 |
+
|
3675 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:46
|
3676 |
+
msgid "Re-Install It"
|
3677 |
+
msgstr ""
|
3678 |
+
|
3679 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:47
|
3680 |
+
msgid "Activate Only"
|
3681 |
+
msgstr ""
|
3682 |
+
|
3683 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:48
|
3684 |
+
msgid "Cancel"
|
3685 |
+
msgstr ""
|
3686 |
+
|
3687 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:64
|
3688 |
+
msgid "Re-Install"
|
3689 |
+
msgstr ""
|
3690 |
+
|
3691 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:77
|
3692 |
+
#: src/lib/src/Modules/Insights/ModCon.php:71
|
3693 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:131
|
3694 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:88
|
3695 |
+
msgid "Are you sure?"
|
3696 |
+
msgstr ""
|
3697 |
+
|
3698 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:78
|
3699 |
+
msgid "Really Re-Install Plugin"
|
3700 |
+
msgstr ""
|
3701 |
+
|
3702 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:79
|
3703 |
+
msgid ""
|
3704 |
+
"WordPress will now download and install the latest available version of this "
|
3705 |
+
"plugin."
|
3706 |
+
msgstr ""
|
3707 |
+
|
3708 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:82
|
3709 |
+
msgid ""
|
3710 |
+
"In case of possible failure, it may be better to do this while the plugin is "
|
3711 |
+
"inactive."
|
3712 |
+
msgstr ""
|
3713 |
+
|
3714 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:84
|
3715 |
+
msgid "Re-install first?"
|
3716 |
+
msgstr ""
|
3717 |
+
|
3718 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:85
|
3719 |
+
msgid "This ensures files for this plugin haven't been corrupted in any way."
|
3720 |
+
msgstr ""
|
3721 |
+
|
3722 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:86
|
3723 |
+
msgid ""
|
3724 |
+
"You can choose to 'Activate Only' (not recommended), or close this message "
|
3725 |
+
"to cancel activation."
|
3726 |
+
msgstr ""
|
3727 |
+
|
3728 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:87
|
3729 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:89
|
3730 |
+
msgid "Editing this option is currently restricted."
|
3731 |
+
msgstr ""
|
3732 |
+
|
3733 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/PtgAddReinstallLinks.php:89
|
3734 |
+
#, php-format
|
3735 |
+
msgid ""
|
3736 |
+
"For best security practices, %s will download and re-install the latest "
|
3737 |
+
"available version of this plugin."
|
3738 |
+
msgstr ""
|
3739 |
+
|
3740 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/WpvAddPluginRows.php:120
|
3741 |
+
#, php-format
|
3742 |
+
msgid ""
|
3743 |
+
"%s has discovered that the currently installed version of the %s plugin has "
|
3744 |
+
"known security vulnerabilities."
|
3745 |
+
msgstr ""
|
3746 |
+
|
3747 |
+
#: src/lib/src/Modules/HackGuard/Scan/Utilities/WpvAddPluginRows.php:122
|
3748 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:393
|
3749 |
+
#: src/lib/src/Modules/IPs/ModCon.php:148
|
3750 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderLoginIntentPage.php:81
|
3751 |
+
msgid "More Info"
|
3752 |
+
msgstr ""
|
3753 |
+
|
3754 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:17
|
3755 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:19
|
3756 |
+
msgid "Scan Completed"
|
3757 |
+
msgstr ""
|
3758 |
+
|
3759 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:23
|
3760 |
+
msgid "Scan Item Delete Success"
|
3761 |
+
msgstr ""
|
3762 |
+
|
3763 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:25
|
3764 |
+
msgid "Item found in the scan was deleted."
|
3765 |
+
msgstr ""
|
3766 |
+
|
3767 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:26
|
3768 |
+
msgid "Item deleted: \"{{path_full}}\""
|
3769 |
+
msgstr ""
|
3770 |
+
|
3771 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:30
|
3772 |
+
msgid "Scan Item Repair Success"
|
3773 |
+
msgstr ""
|
3774 |
+
|
3775 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:32
|
3776 |
+
msgid "Repaired item found in the scan."
|
3777 |
+
msgstr ""
|
3778 |
+
|
3779 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:33
|
3780 |
+
msgid "Item repaired: \"{{path_full}}\""
|
3781 |
+
msgstr ""
|
3782 |
+
|
3783 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:37
|
3784 |
+
msgid "Scan Item Repair Failure"
|
3785 |
+
msgstr ""
|
3786 |
+
|
3787 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:39
|
3788 |
+
msgid "Failed to repair scan item."
|
3789 |
+
msgstr ""
|
3790 |
+
|
3791 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:40
|
3792 |
+
msgid "Failed item: \"{{path_full}}\""
|
3793 |
+
msgstr ""
|
3794 |
+
|
3795 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:44
|
3796 |
+
msgid "Items Found In Scan"
|
3797 |
+
msgstr ""
|
3798 |
+
|
3799 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:46
|
3800 |
+
msgid "{{scan}}: scan completed and items were discovered."
|
3801 |
+
msgstr ""
|
3802 |
+
|
3803 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:49
|
3804 |
+
msgid ""
|
3805 |
+
"These items wont display in results if you've previously marked them as "
|
3806 |
+
"ignored."
|
3807 |
+
msgstr ""
|
3808 |
+
|
3809 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:66
|
3810 |
+
msgid "WordPress Filesystem Scan"
|
3811 |
+
msgstr ""
|
3812 |
+
|
3813 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:67
|
3814 |
+
msgid ""
|
3815 |
+
"WordPress Filesystem Scan looking for modified, missing and unrecognised "
|
3816 |
+
"files throughout the entire site"
|
3817 |
+
msgstr ""
|
3818 |
+
|
3819 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:71
|
3820 |
+
msgid "Discover plugins that may have been abandoned by their authors"
|
3821 |
+
msgstr ""
|
3822 |
+
|
3823 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:75
|
3824 |
+
msgid "Be alerted to file changes for all your plugins and themes"
|
3825 |
+
msgstr ""
|
3826 |
+
|
3827 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:79
|
3828 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:375
|
3829 |
+
msgid "Detect files that may be infected with malware"
|
3830 |
+
msgstr ""
|
3831 |
+
|
3832 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:82
|
3833 |
+
msgid "Unrecognised Files"
|
3834 |
+
msgstr ""
|
3835 |
+
|
3836 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:83
|
3837 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:374
|
3838 |
+
msgid ""
|
3839 |
+
"Detect files which aren't part of the official WordPress.org distribution"
|
3840 |
+
msgstr ""
|
3841 |
+
|
3842 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:87
|
3843 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:373
|
3844 |
+
msgid ""
|
3845 |
+
"Detect changes to core WordPress files when compared to the official "
|
3846 |
+
"distribution"
|
3847 |
+
msgstr ""
|
3848 |
+
|
3849 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:90
|
3850 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:123
|
3851 |
+
msgid "Vulnerabilities"
|
3852 |
+
msgstr ""
|
3853 |
+
|
3854 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:91
|
3855 |
+
msgid "Be alerted to plugins and themes with known security vulnerabilities"
|
3856 |
+
msgstr ""
|
3857 |
+
|
3858 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:106
|
3859 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:107
|
3860 |
+
#: src/lib/src/Modules/HackGuard/UI.php:49
|
3861 |
+
#: src/lib/src/Modules/HackGuard/UI.php:127
|
3862 |
+
msgid "Scan Options"
|
3863 |
+
msgstr ""
|
3864 |
+
|
3865 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:109
|
3866 |
+
msgid "Set how frequently the Hack Guard scans will run."
|
3867 |
+
msgstr ""
|
3868 |
+
|
3869 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:117
|
3870 |
+
msgid ""
|
3871 |
+
"Hack Guard is a set of tools to warn you and protect you against hacks on "
|
3872 |
+
"your site."
|
3873 |
+
msgstr ""
|
3874 |
+
|
3875 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:124
|
3876 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:127
|
3877 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:198
|
3878 |
+
msgid "Vulnerabilities Scanner"
|
3879 |
+
msgstr ""
|
3880 |
+
|
3881 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:126
|
3882 |
+
msgid ""
|
3883 |
+
"Regularly scan your WordPress plugins and themes for known security "
|
3884 |
+
"vulnerabilities."
|
3885 |
+
msgstr ""
|
3886 |
+
|
3887 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:128
|
3888 |
+
msgid ""
|
3889 |
+
"Ensure this is turned on and you will always know if any of your assets have "
|
3890 |
+
"known security vulnerabilities."
|
3891 |
+
msgstr ""
|
3892 |
+
|
3893 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:133
|
3894 |
+
msgid "File Scans and Malware"
|
3895 |
+
msgstr ""
|
3896 |
+
|
3897 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:134
|
3898 |
+
msgid "File Scanning and Malware Protection"
|
3899 |
+
msgstr ""
|
3900 |
+
|
3901 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:137
|
3902 |
+
msgid ""
|
3903 |
+
"Monitor WordPress files and protect against malicious intrusion and hacking."
|
3904 |
+
msgstr ""
|
3905 |
+
|
3906 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:144
|
3907 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:145
|
3908 |
+
msgid "Realtime Change Detection"
|
3909 |
+
msgstr ""
|
3910 |
+
|
3911 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:148
|
3912 |
+
msgid ""
|
3913 |
+
"Monitor Your WordPress Site For Changes To Critical Components In Realtime."
|
3914 |
+
msgstr ""
|
3915 |
+
|
3916 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:150
|
3917 |
+
msgid "Enable The Realtime Change Detection Features."
|
3918 |
+
msgstr ""
|
3919 |
+
|
3920 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:155
|
3921 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:348
|
3922 |
+
msgid "Enable The Abandoned Plugin Scanner"
|
3923 |
+
msgstr ""
|
3924 |
+
|
3925 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:159
|
3926 |
+
msgid ""
|
3927 |
+
"Monitor your site for plugins that have been abandoned by their authors and "
|
3928 |
+
"are no longer maintained."
|
3929 |
+
msgstr ""
|
3930 |
+
|
3931 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:160
|
3932 |
+
msgid "Enable this to alert you to your site running unmaintained code."
|
3933 |
+
msgstr ""
|
3934 |
+
|
3935 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:189
|
3936 |
+
msgid "Daily Scan Frequency"
|
3937 |
+
msgstr ""
|
3938 |
+
|
3939 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:190
|
3940 |
+
msgid "Number Of Times To Run All Scans Each Day"
|
3941 |
+
msgstr ""
|
3942 |
+
|
3943 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:192
|
3944 |
+
msgid "Once every 24hrs."
|
3945 |
+
msgstr ""
|
3946 |
+
|
3947 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:193
|
3948 |
+
msgid "To improve security, increase the number of scans per day."
|
3949 |
+
msgstr ""
|
3950 |
+
|
3951 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:199
|
3952 |
+
#, php-format
|
3953 |
+
msgid "Daily Cron - %s"
|
3954 |
+
msgstr ""
|
3955 |
+
|
3956 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:199
|
3957 |
+
msgid "Scans Plugins For Known Vulnerabilities"
|
3958 |
+
msgstr ""
|
3959 |
+
|
3960 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:200
|
3961 |
+
msgid ""
|
3962 |
+
"Runs a scan of all your plugins against a database of known WordPress plugin "
|
3963 |
+
"vulnerabilities."
|
3964 |
+
msgstr ""
|
3965 |
+
|
3966 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:204
|
3967 |
+
msgid "Vulnerability Scanner"
|
3968 |
+
msgstr ""
|
3969 |
+
|
3970 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:205
|
3971 |
+
msgid "Enable The Vulnerability Scanner"
|
3972 |
+
msgstr ""
|
3973 |
+
|
3974 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:206
|
3975 |
+
msgid ""
|
3976 |
+
"Runs a scan of all your plugins against a database of known WordPress "
|
3977 |
+
"vulnerabilities."
|
3978 |
+
msgstr ""
|
3979 |
+
|
3980 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:211
|
3981 |
+
msgid "Apply Updates Automatically To Vulnerable Plugins"
|
3982 |
+
msgstr ""
|
3983 |
+
|
3984 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:212
|
3985 |
+
msgid ""
|
3986 |
+
"When an update becomes available, automatically apply updates to items with "
|
3987 |
+
"known vulnerabilities."
|
3988 |
+
msgstr ""
|
3989 |
+
|
3990 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:216
|
3991 |
+
#, php-format
|
3992 |
+
msgid "Automatic %s File Scanner"
|
3993 |
+
msgstr ""
|
3994 |
+
|
3995 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:219
|
3996 |
+
#, php-format
|
3997 |
+
msgid "Scan And Monitor %s Files For Changes"
|
3998 |
+
msgstr ""
|
3999 |
+
|
4000 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:223
|
4001 |
+
msgid "Regularly scan all files on your site for changes."
|
4002 |
+
msgstr ""
|
4003 |
+
|
4004 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:224
|
4005 |
+
msgid "Keep this feature turned on, at all times."
|
4006 |
+
msgstr ""
|
4007 |
+
|
4008 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:228
|
4009 |
+
msgid ""
|
4010 |
+
"Scan areas include: WordPress Core Files, Plugin and Themes, and PHP Malware."
|
4011 |
+
msgstr ""
|
4012 |
+
|
4013 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:232
|
4014 |
+
msgid "Scan areas include: WordPress Core Files."
|
4015 |
+
msgstr ""
|
4016 |
+
|
4017 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:234
|
4018 |
+
#, php-format
|
4019 |
+
msgid ""
|
4020 |
+
"To also include scanning Plugins and Themes, and for PHP Malware, please "
|
4021 |
+
"upgrade to %s."
|
4022 |
+
msgstr ""
|
4023 |
+
|
4024 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:239
|
4025 |
+
msgid "Automatic File Repair"
|
4026 |
+
msgstr ""
|
4027 |
+
|
4028 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:240
|
4029 |
+
msgid "Automatically Repair Files That Have Changes Or Malware Infection"
|
4030 |
+
msgstr ""
|
4031 |
+
|
4032 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:242
|
4033 |
+
msgid ""
|
4034 |
+
"Will attempt to automatically repair files that have been changed, or "
|
4035 |
+
"infected with malware."
|
4036 |
+
msgstr ""
|
4037 |
+
|
4038 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:243
|
4039 |
+
msgid ""
|
4040 |
+
"In the case of WordPress, original files will be downloaded from WordPress."
|
4041 |
+
"org to repair any broken files."
|
4042 |
+
msgstr ""
|
4043 |
+
|
4044 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:244
|
4045 |
+
msgid ""
|
4046 |
+
"In the case of plugins & themes, only those installed from WordPress.org can "
|
4047 |
+
"be repaired."
|
4048 |
+
msgstr ""
|
4049 |
+
|
4050 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:245
|
4051 |
+
msgid "Auto-Repair will never automatically delete new or unrecognised files."
|
4052 |
+
msgstr ""
|
4053 |
+
|
4054 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:246
|
4055 |
+
msgid "Unrecognised files will need to be manually deleted."
|
4056 |
+
msgstr ""
|
4057 |
+
|
4058 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:252
|
4059 |
+
msgid "Lock Files Against Tampering And Changes"
|
4060 |
+
msgstr ""
|
4061 |
+
|
4062 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:254
|
4063 |
+
msgid ""
|
4064 |
+
"Detects changes to the files, then lets you examine contents and revert as "
|
4065 |
+
"required."
|
4066 |
+
msgstr ""
|
4067 |
+
|
4068 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:255
|
4069 |
+
msgid "Web.Config is only available for Windows/IIS."
|
4070 |
+
msgstr ""
|
4071 |
+
|
4072 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:256
|
4073 |
+
msgid "After saving, it may take up to 60 seconds before a new lock is stored."
|
4074 |
+
msgstr ""
|
4075 |
+
|
4076 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:257
|
4077 |
+
msgid "It will be displayed below when it's ready."
|
4078 |
+
msgstr ""
|
4079 |
+
|
4080 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:264
|
4081 |
+
msgid "Locked Files"
|
4082 |
+
msgstr ""
|
4083 |
+
|
4084 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:272
|
4085 |
+
msgid "Unrecognised Files Scanner"
|
4086 |
+
msgstr ""
|
4087 |
+
|
4088 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:273
|
4089 |
+
msgid "Automatically Scans For Unrecognised Files In Core Directories"
|
4090 |
+
msgstr ""
|
4091 |
+
|
4092 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:274
|
4093 |
+
msgid ""
|
4094 |
+
"Scans for, and automatically deletes, any files in your core WordPress "
|
4095 |
+
"folders that are not part of your WordPress installation."
|
4096 |
+
msgstr ""
|
4097 |
+
|
4098 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:278
|
4099 |
+
msgid "Scan Uploads"
|
4100 |
+
msgstr ""
|
4101 |
+
|
4102 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:279
|
4103 |
+
msgid "Scan Uploads Folder For PHP and Javascript"
|
4104 |
+
msgstr ""
|
4105 |
+
|
4106 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:280
|
4107 |
+
msgid ""
|
4108 |
+
"Take care when turning on this option - if you are unsure, leave it disabled."
|
4109 |
+
msgstr ""
|
4110 |
+
|
4111 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:281
|
4112 |
+
msgid ""
|
4113 |
+
"The Uploads folder is primarily for media, but could be used to store "
|
4114 |
+
"nefarious files."
|
4115 |
+
msgstr ""
|
4116 |
+
|
4117 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:285
|
4118 |
+
msgid "File Exclusions"
|
4119 |
+
msgstr ""
|
4120 |
+
|
4121 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:286
|
4122 |
+
msgid "Provide A List Of Files To Be Excluded From The Scan"
|
4123 |
+
msgstr ""
|
4124 |
+
|
4125 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:288
|
4126 |
+
msgid "Take a new line for each file you wish to exclude from the scan."
|
4127 |
+
msgstr ""
|
4128 |
+
|
4129 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:289
|
4130 |
+
msgid "No commas are necessary."
|
4131 |
+
msgstr ""
|
4132 |
+
|
4133 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:294
|
4134 |
+
msgid "Enable Integrity Scan"
|
4135 |
+
msgstr ""
|
4136 |
+
|
4137 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:295
|
4138 |
+
msgid "Scans For Critical Changes Made To Your WordPress Site"
|
4139 |
+
msgstr ""
|
4140 |
+
|
4141 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:296
|
4142 |
+
msgid "Detects changes made to your WordPress site outside of WordPress."
|
4143 |
+
msgstr ""
|
4144 |
+
|
4145 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:300
|
4146 |
+
msgid "Monitor User Accounts"
|
4147 |
+
msgstr ""
|
4148 |
+
|
4149 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:301
|
4150 |
+
msgid "Scans For Critical Changes Made To User Accounts"
|
4151 |
+
msgstr ""
|
4152 |
+
|
4153 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:302
|
4154 |
+
msgid ""
|
4155 |
+
"Detects changes made to critical user account information that were made "
|
4156 |
+
"directly on the database and outside of the WordPress system."
|
4157 |
+
msgstr ""
|
4158 |
+
|
4159 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:303
|
4160 |
+
msgid "An example of this might be some form of SQL Injection attack."
|
4161 |
+
msgstr ""
|
4162 |
+
|
4163 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:304
|
4164 |
+
msgid ""
|
4165 |
+
"Enabling this option for every page low may slow down your site with large "
|
4166 |
+
"numbers of users."
|
4167 |
+
msgstr ""
|
4168 |
+
|
4169 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:305
|
4170 |
+
msgid ""
|
4171 |
+
"This option may cause critical problem with 3rd party plugins that manage "
|
4172 |
+
"user accounts."
|
4173 |
+
msgstr ""
|
4174 |
+
|
4175 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:309
|
4176 |
+
msgid "Guard/Scan Depth"
|
4177 |
+
msgstr ""
|
4178 |
+
|
4179 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:310
|
4180 |
+
msgid "How Deep Into The Plugin Directories To Scan And Guard"
|
4181 |
+
msgstr ""
|
4182 |
+
|
4183 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:311
|
4184 |
+
msgid ""
|
4185 |
+
"The Guard normally scans only the top level of a folder. Increasing depth "
|
4186 |
+
"will increase scan times."
|
4187 |
+
msgstr ""
|
4188 |
+
|
4189 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:312
|
4190 |
+
#, php-format
|
4191 |
+
msgid ""
|
4192 |
+
"Setting it to %s will remove this limit and all sub-folders will be scanned "
|
4193 |
+
"- not recommended"
|
4194 |
+
msgstr ""
|
4195 |
+
|
4196 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:316
|
4197 |
+
msgid "Show Re-Install Links"
|
4198 |
+
msgstr ""
|
4199 |
+
|
4200 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:317
|
4201 |
+
msgid "Show Re-Install Links For Plugins"
|
4202 |
+
msgstr ""
|
4203 |
+
|
4204 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:318
|
4205 |
+
msgid ""
|
4206 |
+
"Show links to re-install plugins and offer re-install when activating "
|
4207 |
+
"plugins."
|
4208 |
+
msgstr ""
|
4209 |
+
|
4210 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:322
|
4211 |
+
msgid "Auto-Filter Results"
|
4212 |
+
msgstr ""
|
4213 |
+
|
4214 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:323
|
4215 |
+
msgid "Automatically Filter Results Of Irrelevant Items"
|
4216 |
+
msgstr ""
|
4217 |
+
|
4218 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:325
|
4219 |
+
msgid "Automatically remove items from results that are irrelevant."
|
4220 |
+
msgstr ""
|
4221 |
+
|
4222 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:326
|
4223 |
+
msgid ""
|
4224 |
+
"An example of this is filtering out results for PHP files that don't have "
|
4225 |
+
"any executable code."
|
4226 |
+
msgstr ""
|
4227 |
+
|
4228 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:331
|
4229 |
+
msgid "Scan Exclusions"
|
4230 |
+
msgstr ""
|
4231 |
+
|
4232 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:332
|
4233 |
+
msgid "Scan File And Folder Exclusions"
|
4234 |
+
msgstr ""
|
4235 |
+
|
4236 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:334
|
4237 |
+
msgid "A list of file/folder paths that will never be scanned."
|
4238 |
+
msgstr ""
|
4239 |
+
|
4240 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:335
|
4241 |
+
msgid "All paths are relative to your WordPress installation directory."
|
4242 |
+
msgstr ""
|
4243 |
+
|
4244 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:336
|
4245 |
+
#: src/lib/src/Modules/IPs/Strings.php:290
|
4246 |
+
msgid "This is an advanced option and should be used with great care."
|
4247 |
+
msgstr ""
|
4248 |
+
|
4249 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:337
|
4250 |
+
#: src/lib/src/Modules/IPs/Strings.php:291
|
4251 |
+
msgid "Take a new line for each whitelisted path."
|
4252 |
+
msgstr ""
|
4253 |
+
|
4254 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:338
|
4255 |
+
#: src/lib/src/Modules/IPs/Strings.php:292
|
4256 |
+
msgid "All characters will be treated as case-insensitive."
|
4257 |
+
msgstr ""
|
4258 |
+
|
4259 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:339
|
4260 |
+
msgid "Directories should be provided with a trailing slash (/)."
|
4261 |
+
msgstr ""
|
4262 |
+
|
4263 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:340
|
4264 |
+
msgid ""
|
4265 |
+
"If a path matches any core WordPress directories, it'll be removed "
|
4266 |
+
"automatically."
|
4267 |
+
msgstr ""
|
4268 |
+
|
4269 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:341
|
4270 |
+
msgid ""
|
4271 |
+
"These aren't regular expression, but you can use asterisk (*) as a wildcard."
|
4272 |
+
msgstr ""
|
4273 |
+
|
4274 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:342
|
4275 |
+
msgid "WordPress Installation Directory"
|
4276 |
+
msgstr ""
|
4277 |
+
|
4278 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:347
|
4279 |
+
msgid "Abandoned Plugin Scanner"
|
4280 |
+
msgstr ""
|
4281 |
+
|
4282 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:349
|
4283 |
+
msgid "Scan your WordPress.org assets for whether they've been abandoned."
|
4284 |
+
msgstr ""
|
4285 |
+
|
4286 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:353
|
4287 |
+
msgid "Surgical Auto-Repair"
|
4288 |
+
msgstr ""
|
4289 |
+
|
4290 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:354
|
4291 |
+
msgid "Automatically Attempt To Surgically Remove Malware Code"
|
4292 |
+
msgstr ""
|
4293 |
+
|
4294 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:355
|
4295 |
+
msgid "Attempts to automatically remove code from infected files."
|
4296 |
+
msgstr ""
|
4297 |
+
|
4298 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:356
|
4299 |
+
msgid ""
|
4300 |
+
"This could break your site if code removal leaves remaining code in an "
|
4301 |
+
"inconsistent state."
|
4302 |
+
msgstr ""
|
4303 |
+
|
4304 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:357
|
4305 |
+
msgid ""
|
4306 |
+
"Only applies to files that don't fall under the other categories for "
|
4307 |
+
"automatic repair."
|
4308 |
+
msgstr ""
|
4309 |
+
|
4310 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:376
|
4311 |
+
#, php-format
|
4312 |
+
msgid "%s has detected abandoned plugins installed on your site."
|
4313 |
+
msgstr ""
|
4314 |
+
|
4315 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:377
|
4316 |
+
msgid ""
|
4317 |
+
"Running code that hasn't seen any updates for over 2 years is far from ideal."
|
4318 |
+
msgstr ""
|
4319 |
+
|
4320 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:378
|
4321 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:418
|
4322 |
+
msgid "Details for the items(s) are below:"
|
4323 |
+
msgstr ""
|
4324 |
+
|
4325 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:379
|
4326 |
+
msgid "Abandoned Plugin(s) Discovered On Your Site."
|
4327 |
+
msgstr ""
|
4328 |
+
|
4329 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:380
|
4330 |
+
msgid "Unrecognised WordPress Files Detected"
|
4331 |
+
msgstr ""
|
4332 |
+
|
4333 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:381
|
4334 |
+
#, php-format
|
4335 |
+
msgid "The %s Unrecognised File Scanner found files which you need to review."
|
4336 |
+
msgstr ""
|
4337 |
+
|
4338 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:382
|
4339 |
+
#, php-format
|
4340 |
+
msgid "%s has attempted to delete these files based on your current settings."
|
4341 |
+
msgstr ""
|
4342 |
+
|
4343 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:383
|
4344 |
+
msgid "We recommend you run the scanner to review your site"
|
4345 |
+
msgstr ""
|
4346 |
+
|
4347 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:384
|
4348 |
+
msgid "More Info On This Scanner"
|
4349 |
+
msgstr ""
|
4350 |
+
|
4351 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:386
|
4352 |
+
msgid "Modified Core WordPress Files Discovered"
|
4353 |
+
msgstr ""
|
4354 |
+
|
4355 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:387
|
4356 |
+
#, php-format
|
4357 |
+
msgid "The %s Core File Scanner found files with potential problems."
|
4358 |
+
msgstr ""
|
4359 |
+
|
4360 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:389
|
4361 |
+
#, php-format
|
4362 |
+
msgid "%s has already attempted to repair the files."
|
4363 |
+
msgstr ""
|
4364 |
+
|
4365 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:390
|
4366 |
+
msgid ""
|
4367 |
+
"But, you should always check these files to ensure everything is as you "
|
4368 |
+
"expect."
|
4369 |
+
msgstr ""
|
4370 |
+
|
4371 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:391
|
4372 |
+
msgid ""
|
4373 |
+
"You should review these files and replace them with official versions if "
|
4374 |
+
"required."
|
4375 |
+
msgstr ""
|
4376 |
+
|
4377 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:392
|
4378 |
+
msgid ""
|
4379 |
+
"Alternatively you can have the plugin attempt to repair/replace these files "
|
4380 |
+
"automatically."
|
4381 |
+
msgstr ""
|
4382 |
+
|
4383 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:394
|
4384 |
+
msgid "The following files have different content:"
|
4385 |
+
msgstr ""
|
4386 |
+
|
4387 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:395
|
4388 |
+
msgid "The following files are missing:"
|
4389 |
+
msgstr ""
|
4390 |
+
|
4391 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:398
|
4392 |
+
#, php-format
|
4393 |
+
msgid "The %s Malware Scanner found files with potential malware."
|
4394 |
+
msgstr ""
|
4395 |
+
|
4396 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:400
|
4397 |
+
msgid ""
|
4398 |
+
"You must examine the file(s) carefully to determine whether suspicious code "
|
4399 |
+
"is really present."
|
4400 |
+
msgstr ""
|
4401 |
+
|
4402 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:401
|
4403 |
+
#, php-format
|
4404 |
+
msgid ""
|
4405 |
+
"The %s Malware Scanner searches for common malware patterns and so false "
|
4406 |
+
"positives (detection errors) are to be expected sometimes."
|
4407 |
+
msgstr ""
|
4408 |
+
|
4409 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:402
|
4410 |
+
#: src/lib/src/Modules/Reporting/Lib/ReportingController.php:156
|
4411 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:207
|
4412 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:232
|
4413 |
+
msgid "Site URL"
|
4414 |
+
msgstr ""
|
4415 |
+
|
4416 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:404
|
4417 |
+
msgid "The following files contain suspected malware:"
|
4418 |
+
msgstr ""
|
4419 |
+
|
4420 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:407
|
4421 |
+
#, php-format
|
4422 |
+
msgid ""
|
4423 |
+
"%s has detected at least 1 Plugins/Themes have been modified on your site."
|
4424 |
+
msgstr ""
|
4425 |
+
|
4426 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:408
|
4427 |
+
msgid ""
|
4428 |
+
"You will receive only 1 email notification about these changes in a 1 week "
|
4429 |
+
"period."
|
4430 |
+
msgstr ""
|
4431 |
+
|
4432 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:409
|
4433 |
+
msgid "Details of the problem items are below:"
|
4434 |
+
msgstr ""
|
4435 |
+
|
4436 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:411
|
4437 |
+
msgid "Modified Themes:"
|
4438 |
+
msgstr ""
|
4439 |
+
|
4440 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:412
|
4441 |
+
msgid "Modified Plugins:"
|
4442 |
+
msgstr ""
|
4443 |
+
|
4444 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:413
|
4445 |
+
msgid "Plugins/Themes Have Been Altered"
|
4446 |
+
msgstr ""
|
4447 |
+
|
4448 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:416
|
4449 |
+
#, php-format
|
4450 |
+
msgid "%s has detected items with known security vulnerabilities."
|
4451 |
+
msgstr ""
|
4452 |
+
|
4453 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:417
|
4454 |
+
msgid "You should update or remove these items at your earliest convenience."
|
4455 |
+
msgstr ""
|
4456 |
+
|
4457 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:421
|
4458 |
+
msgid "Item"
|
4459 |
+
msgstr ""
|
4460 |
+
|
4461 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:422
|
4462 |
+
#, php-format
|
4463 |
+
msgid "Vulnerability Title: %s"
|
4464 |
+
msgstr ""
|
4465 |
+
|
4466 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:423
|
4467 |
+
#, php-format
|
4468 |
+
msgid "Vulnerability Type: %s"
|
4469 |
+
msgstr ""
|
4470 |
+
|
4471 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:424
|
4472 |
+
#, php-format
|
4473 |
+
msgid "Fixed Version: %s"
|
4474 |
+
msgstr ""
|
4475 |
+
|
4476 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:425
|
4477 |
+
#, php-format
|
4478 |
+
msgid "Further Information: %s"
|
4479 |
+
msgstr ""
|
4480 |
+
|
4481 |
+
#: src/lib/src/Modules/HackGuard/Strings.php:427
|
4482 |
+
msgid "Run Scanner"
|
4483 |
+
msgstr ""
|
4484 |
+
|
4485 |
+
#: src/lib/src/Modules/HackGuard/UI.php:43
|
4486 |
+
#: src/lib/src/Modules/HackGuard/UI.php:121
|
4487 |
+
msgid "Sorry, this scan is not available."
|
4488 |
+
msgstr ""
|
4489 |
+
|
4490 |
+
#: src/lib/src/Modules/HackGuard/UI.php:44
|
4491 |
+
#: src/lib/src/Modules/HackGuard/UI.php:122
|
4492 |
+
msgid "This scan is not currently enabled."
|
4493 |
+
msgstr ""
|
4494 |
+
|
4495 |
+
#: src/lib/src/Modules/HackGuard/UI.php:45
|
4496 |
+
#: src/lib/src/Modules/HackGuard/UI.php:123
|
4497 |
+
msgid "Please turn on this scan in the options."
|
4498 |
+
msgstr ""
|
4499 |
+
|
4500 |
+
#: src/lib/src/Modules/HackGuard/UI.php:46
|
4501 |
+
#: src/lib/src/Modules/HackGuard/UI.php:124
|
4502 |
+
msgid "Scan Your Site Now"
|
4503 |
+
msgstr ""
|
4504 |
+
|
4505 |
+
#: src/lib/src/Modules/HackGuard/UI.php:47
|
4506 |
+
#: src/lib/src/Modules/HackGuard/UI.php:125
|
4507 |
+
msgid "Run the selected scans on your site now to get the latest results"
|
4508 |
+
msgstr ""
|
4509 |
+
|
4510 |
+
#: src/lib/src/Modules/HackGuard/UI.php:48
|
4511 |
+
#: src/lib/src/Modules/HackGuard/UI.php:126
|
4512 |
+
msgid "The more scans that are selected, the longer the scan may take."
|
4513 |
+
msgstr ""
|
4514 |
+
|
4515 |
+
#: src/lib/src/Modules/HackGuard/UI.php:50
|
4516 |
+
#: src/lib/src/Modules/HackGuard/UI.php:129
|
4517 |
+
msgid "View Scan Results"
|
4518 |
+
msgstr ""
|
4519 |
+
|
4520 |
+
#: src/lib/src/Modules/HackGuard/UI.php:51
|
4521 |
+
#: src/lib/src/Modules/HackGuard/UI.php:130
|
4522 |
+
msgid "Clear Ignore Flags"
|
4523 |
+
msgstr ""
|
4524 |
+
|
4525 |
+
#: src/lib/src/Modules/HackGuard/UI.php:52
|
4526 |
+
#: src/lib/src/Modules/HackGuard/UI.php:131
|
4527 |
+
msgid ""
|
4528 |
+
"Previously ignored results will be revealed (for the selected scans only)"
|
4529 |
+
msgstr ""
|
4530 |
+
|
4531 |
+
#: src/lib/src/Modules/HackGuard/UI.php:53
|
4532 |
+
#: src/lib/src/Modules/HackGuard/UI.php:132
|
4533 |
+
msgid "Remove Notification Suppression"
|
4534 |
+
msgstr ""
|
4535 |
+
|
4536 |
+
#: src/lib/src/Modules/HackGuard/UI.php:54
|
4537 |
+
#: src/lib/src/Modules/HackGuard/UI.php:133
|
4538 |
+
msgid "Allow notification emails to be resent (for the selected scans only)"
|
4539 |
+
msgstr ""
|
4540 |
+
|
4541 |
+
#: src/lib/src/Modules/HackGuard/UI.php:55
|
4542 |
+
#: src/lib/src/Modules/HackGuard/UI.php:134
|
4543 |
+
msgid "Run Scans Now"
|
4544 |
+
msgstr ""
|
4545 |
+
|
4546 |
+
#: src/lib/src/Modules/HackGuard/UI.php:56
|
4547 |
+
#: src/lib/src/Modules/HackGuard/UI.php:135
|
4548 |
+
msgid ""
|
4549 |
+
"The previous scan either didn't detect any items that require your attention "
|
4550 |
+
"or they've already been repaired."
|
4551 |
+
msgstr ""
|
4552 |
+
|
4553 |
+
#: src/lib/src/Modules/HackGuard/UI.php:57
|
4554 |
+
#: src/lib/src/Modules/HackGuard/UI.php:136
|
4555 |
+
msgid "Scan Progress"
|
4556 |
+
msgstr ""
|
4557 |
+
|
4558 |
+
#: src/lib/src/Modules/HackGuard/UI.php:58
|
4559 |
+
#: src/lib/src/Modules/HackGuard/UI.php:137
|
4560 |
+
msgid "This site currently can't make HTTP requests to itself."
|
4561 |
+
msgstr ""
|
4562 |
+
|
4563 |
+
#: src/lib/src/Modules/HackGuard/UI.php:59
|
4564 |
+
#: src/lib/src/Modules/HackGuard/UI.php:138
|
4565 |
+
msgid ""
|
4566 |
+
"Scans can't run because the module that controls them is currently disabled."
|
4567 |
+
msgstr ""
|
4568 |
+
|
4569 |
+
#: src/lib/src/Modules/HackGuard/UI.php:60
|
4570 |
+
#: src/lib/src/Modules/HackGuard/UI.php:139
|
4571 |
+
msgid "Review Scanner Module configuration"
|
4572 |
+
msgstr ""
|
4573 |
+
|
4574 |
+
#: src/lib/src/Modules/HackGuard/UI.php:128
|
4575 |
+
msgid "Select Scans To Run"
|
4576 |
+
msgstr ""
|
4577 |
+
|
4578 |
+
#: src/lib/src/Modules/HackGuard/UI.php:223
|
4579 |
+
msgid "Results of file locker monitoring"
|
4580 |
+
msgstr ""
|
4581 |
+
|
4582 |
+
#: src/lib/src/Modules/HackGuard/UI.php:224
|
4583 |
+
msgid "Please select a file to review."
|
4584 |
+
msgstr ""
|
4585 |
+
|
4586 |
+
#: src/lib/src/Modules/HackGuard/UI.php:241
|
4587 |
+
msgid "Not available as your site cannot handshake with ShieldNET API."
|
4588 |
+
msgstr ""
|
4589 |
+
|
4590 |
+
#: src/lib/src/Modules/HackGuard/UI.php:253
|
4591 |
+
msgid ""
|
4592 |
+
"Plugin/Theme file scanners are unavailable because we couldn't create a "
|
4593 |
+
"temporary directory to store files."
|
4594 |
+
msgstr ""
|
4595 |
+
|
4596 |
+
#: src/lib/src/Modules/HackGuard/WpCli/ScanRun.php:30
|
4597 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:178
|
4598 |
+
msgid "Run Scan"
|
4599 |
+
msgstr ""
|
4600 |
+
|
4601 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:22
|
4602 |
+
#: src/lib/src/Modules/Plugin/Strings.php:542
|
4603 |
+
msgid "HTTP Headers"
|
4604 |
+
msgstr ""
|
4605 |
+
|
4606 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:25
|
4607 |
+
msgid "All important security Headers have been set"
|
4608 |
+
msgstr ""
|
4609 |
+
|
4610 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:26
|
4611 |
+
msgid "At least one of the HTTP Headers hasn't been set"
|
4612 |
+
msgstr ""
|
4613 |
+
|
4614 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:31
|
4615 |
+
msgid "Content Security Policies"
|
4616 |
+
msgstr ""
|
4617 |
+
|
4618 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:34
|
4619 |
+
msgid "Content Security Policy is turned on"
|
4620 |
+
msgstr ""
|
4621 |
+
|
4622 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:35
|
4623 |
+
msgid "Content Security Policies aren't active or there are no rules provided"
|
4624 |
+
msgstr ""
|
4625 |
+
|
4626 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:44
|
4627 |
+
msgid "HTTP Security Headers"
|
4628 |
+
msgstr ""
|
4629 |
+
|
4630 |
+
#: src/lib/src/Modules/Headers/Insights/OverviewCards.php:48
|
4631 |
+
msgid "Protect Visitors With Powerful HTTP Headers"
|
4632 |
+
msgstr ""
|
4633 |
+
|
4634 |
+
#: src/lib/src/Modules/Headers/Strings.php:23
|
4635 |
+
#: src/lib/src/Modules/Headers/Strings.php:31
|
4636 |
+
msgid ""
|
4637 |
+
"Protect visitors to your site by implementing increased security response "
|
4638 |
+
"headers."
|
4639 |
+
msgstr ""
|
4640 |
+
|
4641 |
+
#: src/lib/src/Modules/Headers/Strings.php:24
|
4642 |
+
#: src/lib/src/Modules/Headers/Strings.php:32
|
4643 |
+
#: src/lib/src/Modules/Headers/Strings.php:41
|
4644 |
+
msgid ""
|
4645 |
+
"Enabling these features are advised, but you must test them on your site "
|
4646 |
+
"thoroughly."
|
4647 |
+
msgstr ""
|
4648 |
+
|
4649 |
+
#: src/lib/src/Modules/Headers/Strings.php:29
|
4650 |
+
msgid "Advanced Security Headers"
|
4651 |
+
msgstr ""
|
4652 |
+
|
4653 |
+
#: src/lib/src/Modules/Headers/Strings.php:34
|
4654 |
+
msgid "Security Headers"
|
4655 |
+
msgstr ""
|
4656 |
+
|
4657 |
+
#: src/lib/src/Modules/Headers/Strings.php:38
|
4658 |
+
#: src/lib/src/Modules/Headers/Strings.php:43
|
4659 |
+
#: src/lib/src/Modules/Headers/Strings.php:100
|
4660 |
+
msgid "Content Security Policy"
|
4661 |
+
msgstr ""
|
4662 |
+
|
4663 |
+
#: src/lib/src/Modules/Headers/Strings.php:40
|
4664 |
+
msgid ""
|
4665 |
+
"Restrict the sources and types of content that may be loaded and processed "
|
4666 |
+
"by visitor browsers."
|
4667 |
+
msgstr ""
|
4668 |
+
|
4669 |
+
#: src/lib/src/Modules/Headers/Strings.php:74
|
4670 |
+
msgid "Block iFrames"
|
4671 |
+
msgstr ""
|
4672 |
+
|
4673 |
+
#: src/lib/src/Modules/Headers/Strings.php:75
|
4674 |
+
msgid "Block Remote iFrames Of This Site"
|
4675 |
+
msgstr ""
|
4676 |
+
|
4677 |
+
#: src/lib/src/Modules/Headers/Strings.php:76
|
4678 |
+
msgid ""
|
4679 |
+
"The setting prevents any external website from embedding your site in an "
|
4680 |
+
"iFrame."
|
4681 |
+
msgstr ""
|
4682 |
+
|
4683 |
+
#: src/lib/src/Modules/Headers/Strings.php:77
|
4684 |
+
msgid "This is useful for preventing so-called \"ClickJack attacks\"."
|
4685 |
+
msgstr ""
|
4686 |
+
|
4687 |
+
#: src/lib/src/Modules/Headers/Strings.php:81
|
4688 |
+
msgid "Referrer Policy"
|
4689 |
+
msgstr ""
|
4690 |
+
|
4691 |
+
#: src/lib/src/Modules/Headers/Strings.php:82
|
4692 |
+
msgid "Referrer Policy Header"
|
4693 |
+
msgstr ""
|
4694 |
+
|
4695 |
+
#: src/lib/src/Modules/Headers/Strings.php:83
|
4696 |
+
msgid ""
|
4697 |
+
"The Referrer Policy Header allows you to control when and what referral "
|
4698 |
+
"information a browser may pass along with links clicked on your site."
|
4699 |
+
msgstr ""
|
4700 |
+
|
4701 |
+
#: src/lib/src/Modules/Headers/Strings.php:87
|
4702 |
+
msgid "XSS Protection"
|
4703 |
+
msgstr ""
|
4704 |
+
|
4705 |
+
#: src/lib/src/Modules/Headers/Strings.php:88
|
4706 |
+
msgid "Employ Built-In Browser XSS Protection"
|
4707 |
+
msgstr ""
|
4708 |
+
|
4709 |
+
#: src/lib/src/Modules/Headers/Strings.php:89
|
4710 |
+
msgid ""
|
4711 |
+
"Directs compatible browsers to block what they detect as Reflective XSS "
|
4712 |
+
"attacks."
|
4713 |
+
msgstr ""
|
4714 |
+
|
4715 |
+
#: src/lib/src/Modules/Headers/Strings.php:93
|
4716 |
+
msgid "Prevent Mime-Sniff"
|
4717 |
+
msgstr ""
|
4718 |
+
|
4719 |
+
#: src/lib/src/Modules/Headers/Strings.php:94
|
4720 |
+
msgid "Turn-Off Browser Mime-Sniff"
|
4721 |
+
msgstr ""
|
4722 |
+
|
4723 |
+
#: src/lib/src/Modules/Headers/Strings.php:95
|
4724 |
+
msgid "Reduces visitor exposure to malicious user-uploaded content."
|
4725 |
+
msgstr ""
|
4726 |
+
|
4727 |
+
#: src/lib/src/Modules/Headers/Strings.php:99
|
4728 |
+
#: src/lib/src/Modules/Headers/Strings.php:100
|
4729 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:197
|
4730 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:236
|
4731 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:242
|
4732 |
#, php-format
|
4733 |
+
msgid "Enable %s"
|
4734 |
msgstr ""
|
4735 |
|
4736 |
+
#: src/lib/src/Modules/Headers/Strings.php:102
|
4737 |
+
msgid ""
|
4738 |
+
"Allows for permission and restriction of all resources loaded on your site."
|
4739 |
+
msgstr ""
|
4740 |
+
|
4741 |
+
#: src/lib/src/Modules/Headers/Strings.php:103
|
4742 |
+
msgid ""
|
4743 |
+
"Use this in conjunction with the Manual Rules section - you must supply your "
|
4744 |
+
"own CSP rules."
|
4745 |
+
msgstr ""
|
4746 |
+
|
4747 |
+
#: src/lib/src/Modules/Headers/Strings.php:108
|
4748 |
+
msgid "Manual Rules"
|
4749 |
+
msgstr ""
|
4750 |
+
|
4751 |
+
#: src/lib/src/Modules/Headers/Strings.php:109
|
4752 |
+
msgid "Manual CSP Rules"
|
4753 |
+
msgstr ""
|
4754 |
+
|
4755 |
+
#: src/lib/src/Modules/Headers/Strings.php:111
|
4756 |
+
msgid "Take a new line per rule."
|
4757 |
+
msgstr ""
|
4758 |
+
|
4759 |
+
#: src/lib/src/Modules/Headers/Strings.php:112
|
4760 |
+
msgid ""
|
4761 |
+
"We provide this feature as-is: to allow you to add custom CSP rules to your "
|
4762 |
+
"site."
|
4763 |
+
msgstr ""
|
4764 |
+
|
4765 |
+
#: src/lib/src/Modules/Headers/Strings.php:113
|
4766 |
+
msgid ""
|
4767 |
+
"We don't provide support for creating CSP rules and whether they're correct "
|
4768 |
+
"for your site."
|
4769 |
+
msgstr ""
|
4770 |
+
|
4771 |
+
#: src/lib/src/Modules/Headers/Strings.php:114
|
4772 |
+
msgid ""
|
4773 |
+
"Many WordPress caching plugins ignore HTTP Headers - if they're not showing "
|
4774 |
+
"up, disable page caching."
|
4775 |
+
msgstr ""
|
4776 |
+
|
4777 |
+
#: src/lib/src/Modules/IPs/AdminNotices.php:33
|
4778 |
+
#, php-format
|
4779 |
+
msgid "%s is ignoring you"
|
4780 |
+
msgstr ""
|
4781 |
+
|
4782 |
+
#: src/lib/src/Modules/IPs/AdminNotices.php:37
|
4783 |
+
#: src/lib/src/Modules/Plugin/Processor.php:57
|
4784 |
+
#: src/lib/src/Modules/Plugin/Strings.php:511
|
4785 |
+
#, php-format
|
4786 |
+
msgid "Your IP address is: %s"
|
4787 |
+
msgstr ""
|
4788 |
+
|
4789 |
+
#: src/lib/src/Modules/IPs/AdminNotices.php:40
|
4790 |
+
msgid ""
|
4791 |
+
"Your IP address is whitelisted and NO features you activate apply to you."
|
4792 |
+
msgstr ""
|
4793 |
+
|
4794 |
+
#: src/lib/src/Modules/IPs/AdminNotices.php:41
|
4795 |
+
msgid "Including the hiding the WP Login page."
|
4796 |
+
msgstr ""
|
4797 |
+
|
4798 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:83
|
4799 |
+
msgid "IP address wasn't added to the list"
|
4800 |
+
msgstr ""
|
4801 |
+
|
4802 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:96
|
4803 |
+
msgid "IP address not provided"
|
4804 |
+
msgstr ""
|
4805 |
+
|
4806 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:99
|
4807 |
+
msgid "IP list not provided"
|
4808 |
+
msgstr ""
|
4809 |
+
|
4810 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:102
|
4811 |
+
msgid "IP address isn't either a valid IP or a CIDR range"
|
4812 |
+
msgstr ""
|
4813 |
+
|
4814 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:105
|
4815 |
+
msgid ""
|
4816 |
+
"Please upgrade to Pro if you'd like to add IPs to the black list manually."
|
4817 |
+
msgstr ""
|
4818 |
+
|
4819 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:108
|
4820 |
+
msgid "Manually black listing your current IP address is not supported."
|
4821 |
+
msgstr ""
|
4822 |
+
|
4823 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:111
|
4824 |
+
msgid "This IP is reserved and can't be blacklisted."
|
4825 |
+
msgstr ""
|
4826 |
+
|
4827 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:144
|
4828 |
+
msgid "IP address added successfully"
|
4829 |
+
msgstr ""
|
4830 |
+
|
4831 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:162
|
4832 |
+
msgid "Invalid entry selected"
|
4833 |
+
msgstr ""
|
4834 |
+
|
4835 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:176
|
4836 |
+
msgid "IP address deleted"
|
4837 |
+
msgstr ""
|
4838 |
+
|
4839 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:177
|
4840 |
+
msgid "IP address wasn't deleted from the list"
|
4841 |
+
msgstr ""
|
4842 |
+
|
4843 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:241
|
4844 |
+
msgid "IP provided was invalid."
|
4845 |
+
msgstr ""
|
4846 |
+
|
4847 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:244
|
4848 |
+
#, php-format
|
4849 |
+
msgid "IP can't be processed from this page as it's a known service IP: %s"
|
4850 |
+
msgstr ""
|
4851 |
+
|
4852 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:255
|
4853 |
+
msgid "IP address blocked."
|
4854 |
+
msgstr ""
|
4855 |
+
|
4856 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:256
|
4857 |
+
msgid "IP address couldn't be blocked at this time."
|
4858 |
+
msgstr ""
|
4859 |
+
|
4860 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:268
|
4861 |
+
msgid "IP address unblocked."
|
4862 |
+
msgstr ""
|
4863 |
+
|
4864 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:269
|
4865 |
+
msgid "IP address couldn't be unblocked at this time."
|
4866 |
+
msgstr ""
|
4867 |
+
|
4868 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:281
|
4869 |
+
msgid "IP address added to Bypass list."
|
4870 |
+
msgstr ""
|
4871 |
+
|
4872 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:282
|
4873 |
+
msgid "IP address couldn't be added to Bypass list at this time."
|
4874 |
+
msgstr ""
|
4875 |
+
|
4876 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:290
|
4877 |
+
msgid "IP address removed from Bypass list."
|
4878 |
+
msgstr ""
|
4879 |
+
|
4880 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:291
|
4881 |
+
msgid "IP address couldn't be removed from Bypass list at this time."
|
4882 |
+
msgstr ""
|
4883 |
+
|
4884 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:303
|
4885 |
+
msgid "IP NotBot Score Reset."
|
4886 |
+
msgstr ""
|
4887 |
+
|
4888 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:304
|
4889 |
+
msgid "IP NotBot Score couldn't be reset at this time."
|
4890 |
+
msgstr ""
|
4891 |
+
|
4892 |
+
#: src/lib/src/Modules/IPs/AjaxHandler.php:308
|
4893 |
+
msgid "Unsupported Action."
|
4894 |
+
msgstr ""
|
4895 |
+
|
4896 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:178
|
4897 |
+
msgid "Automatic IP Unblock Request"
|
4898 |
+
msgstr ""
|
4899 |
+
|
4900 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:197
|
4901 |
+
msgid ""
|
4902 |
+
"It looks like you've been blocked and have clicked to have your IP address "
|
4903 |
+
"removed from the blocklist."
|
4904 |
+
msgstr ""
|
4905 |
+
|
4906 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:198
|
4907 |
+
msgid "Please click the link provided below to do so."
|
4908 |
+
msgstr ""
|
4909 |
+
|
4910 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:199
|
4911 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:53
|
4912 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:34
|
4913 |
+
#: src/lib/src/Tables/Render/WpListTable/Sessions.php:37
|
4914 |
+
msgid "Details"
|
4915 |
+
msgstr ""
|
4916 |
+
|
4917 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:201
|
4918 |
+
msgid "Unblock My IP"
|
4919 |
+
msgstr ""
|
4920 |
+
|
4921 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:202
|
4922 |
+
msgid "Or Copy-Paste"
|
4923 |
+
msgstr ""
|
4924 |
+
|
4925 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:204
|
4926 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:100
|
4927 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:115
|
4928 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:106
|
4929 |
+
msgid "URL"
|
4930 |
+
msgstr ""
|
4931 |
+
|
4932 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:209
|
4933 |
+
msgid ""
|
4934 |
+
"You'll need to wait for a further 60 minutes if your IP address gets blocked "
|
4935 |
+
"again."
|
4936 |
+
msgstr ""
|
4937 |
+
|
4938 |
+
#: src/lib/src/Modules/IPs/Lib/AutoUnblock.php:210
|
4939 |
+
msgid ""
|
4940 |
+
"This link will ONLY work if it opens in the same web browser that you used "
|
4941 |
+
"to request this email."
|
4942 |
+
msgstr ""
|
4943 |
+
|
4944 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:86
|
4945 |
+
#, php-format
|
4946 |
+
msgid "You've been blocked by the %s plugin"
|
4947 |
+
msgstr ""
|
4948 |
+
|
4949 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:93
|
4950 |
+
#, php-format
|
4951 |
+
msgid "Time remaining on black list: %s"
|
4952 |
+
msgstr ""
|
4953 |
+
|
4954 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:94
|
4955 |
+
#, php-format
|
4956 |
+
msgid "%s minute"
|
4957 |
+
msgid_plural "%s minutes"
|
4958 |
+
msgstr[0] ""
|
4959 |
+
msgstr[1] ""
|
4960 |
+
|
4961 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:96
|
4962 |
+
#, php-format
|
4963 |
+
msgid ""
|
4964 |
+
"You tripped the security plugin defenses a total of %s times making you a "
|
4965 |
+
"suspect."
|
4966 |
+
msgstr ""
|
4967 |
+
|
4968 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:97
|
4969 |
+
msgid ""
|
4970 |
+
"If you believe this to be in error, please contact the site owner and quote "
|
4971 |
+
"your IP address below."
|
4972 |
+
msgstr ""
|
4973 |
+
|
4974 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:101
|
4975 |
+
msgid "Auto-Unblock Your IP"
|
4976 |
+
msgstr ""
|
4977 |
+
|
4978 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:102
|
4979 |
+
msgid ""
|
4980 |
+
"You can automatically unblock your IP address by clicking the button below."
|
4981 |
+
msgstr ""
|
4982 |
+
|
4983 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:103
|
4984 |
+
msgid "Unblock My IP Address"
|
4985 |
+
msgstr ""
|
4986 |
+
|
4987 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:165
|
4988 |
+
msgid ""
|
4989 |
+
"You can automatically unblock your IP address by clicking the link below."
|
4990 |
+
msgstr ""
|
4991 |
+
|
4992 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:166
|
4993 |
+
msgid ""
|
4994 |
+
"Clicking the button will send you an email letting you unblock your IP "
|
4995 |
+
"address."
|
4996 |
+
msgstr ""
|
4997 |
+
|
4998 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:167
|
4999 |
+
msgid ""
|
5000 |
+
"This assumes that your WordPress site has been properly configured to send "
|
5001 |
+
"email - many are not."
|
5002 |
+
msgstr ""
|
5003 |
+
|
5004 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:168
|
5005 |
+
msgid ""
|
5006 |
+
"If you don't receive the email, check your spam and contact your site admin."
|
5007 |
+
msgstr ""
|
5008 |
+
|
5009 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:169
|
5010 |
+
msgid ""
|
5011 |
+
"You may only use this link once every 60 minutes. If you're repeatedly "
|
5012 |
+
"blocked, ask your site admin to review the audit trail to determine the "
|
5013 |
+
"cause."
|
5014 |
+
msgstr ""
|
5015 |
+
|
5016 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:170
|
5017 |
+
msgid ""
|
5018 |
+
"When you click the link from your email, it must open up in this web browser."
|
5019 |
+
msgstr ""
|
5020 |
+
|
5021 |
+
#: src/lib/src/Modules/IPs/Lib/BlockRequest.php:171
|
5022 |
+
msgid "Send Auto-Unblock Link To My Email"
|
5023 |
+
msgstr ""
|
5024 |
+
|
5025 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:46
|
5026 |
+
#, php-format
|
5027 |
+
msgid "Info For IP Address %s"
|
5028 |
+
msgstr ""
|
5029 |
+
|
5030 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:47
|
5031 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:362
|
5032 |
+
msgid "Bot Signals"
|
5033 |
+
msgstr ""
|
5034 |
+
|
5035 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:48
|
5036 |
+
msgid "General Info"
|
5037 |
+
msgstr ""
|
5038 |
+
|
5039 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:51
|
5040 |
+
msgid "Recent Traffic"
|
5041 |
+
msgstr ""
|
5042 |
+
|
5043 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:138
|
5044 |
+
msgid "Identifying Info"
|
5045 |
+
msgstr ""
|
5046 |
+
|
5047 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:139
|
5048 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:117
|
5049 |
+
msgid "IP Status"
|
5050 |
+
msgstr ""
|
5051 |
+
|
5052 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:141
|
5053 |
+
#: src/lib/src/Modules/IPs/UI.php:58
|
5054 |
+
msgid "Block IP"
|
5055 |
+
msgstr ""
|
5056 |
+
|
5057 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:142
|
5058 |
+
msgid "Unblock IP"
|
5059 |
+
msgstr ""
|
5060 |
+
|
5061 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:143
|
5062 |
+
msgid "Add IP Bypass"
|
5063 |
+
msgstr ""
|
5064 |
+
|
5065 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:144
|
5066 |
+
msgid "Remove IP Bypass"
|
5067 |
+
msgstr ""
|
5068 |
+
|
5069 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:145
|
5070 |
+
msgid "Reset For This IP"
|
5071 |
+
msgstr ""
|
5072 |
+
|
5073 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:146
|
5074 |
+
msgid "See Details"
|
5075 |
+
msgstr ""
|
5076 |
+
|
5077 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:149
|
5078 |
+
msgid "Is It You?"
|
5079 |
+
msgstr ""
|
5080 |
+
|
5081 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:150
|
5082 |
+
msgid "Number of offenses"
|
5083 |
msgstr ""
|
5084 |
|
5085 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:151
|
5086 |
+
msgid "Is Blocked"
|
|
|
|
|
5087 |
msgstr ""
|
5088 |
|
5089 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:152
|
5090 |
+
msgid "Is Bypass IP"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5091 |
msgstr ""
|
5092 |
|
5093 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:153
|
5094 |
+
msgid "IP Reputation Score"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5095 |
msgstr ""
|
5096 |
|
5097 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:154
|
5098 |
+
msgid "ShieldNET IP Reputation Score"
|
|
|
5099 |
msgstr ""
|
5100 |
|
5101 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:161
|
5102 |
+
msgid "Is this a known IP address?"
|
5103 |
msgstr ""
|
5104 |
|
5105 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:163
|
5106 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:97
|
5107 |
+
msgid "Country"
|
|
|
|
|
5108 |
msgstr ""
|
5109 |
|
5110 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:164
|
5111 |
+
msgid "Timezone"
|
5112 |
msgstr ""
|
5113 |
|
5114 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:165
|
5115 |
+
msgid "Coordinates"
|
5116 |
msgstr ""
|
5117 |
|
5118 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:169
|
5119 |
+
msgid "Extras"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5120 |
msgstr ""
|
5121 |
|
5122 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:170
|
5123 |
+
msgid "IP Whois"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5124 |
msgstr ""
|
5125 |
|
5126 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:171
|
5127 |
+
msgid "Query IP Whois"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5128 |
msgstr ""
|
5129 |
|
5130 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:192
|
5131 |
+
msgid "Unavailable"
|
5132 |
msgstr ""
|
5133 |
|
5134 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:196
|
5135 |
+
msgid "Latitude"
|
5136 |
msgstr ""
|
5137 |
|
5138 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:197
|
5139 |
+
msgid "Longitude"
|
|
|
5140 |
msgstr ""
|
5141 |
|
5142 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:235
|
5143 |
+
msgid "No sessions at this IP"
|
5144 |
msgstr ""
|
5145 |
|
5146 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:237
|
5147 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:421
|
5148 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:477
|
5149 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:146
|
5150 |
+
#: src/lib/src/Modules/Plugin/Strings.php:527
|
5151 |
+
#: src/lib/src/Modules/Plugin/Strings.php:529
|
5152 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:20
|
5153 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:28
|
5154 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:59
|
5155 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:41
|
5156 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:44
|
5157 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:108
|
5158 |
+
#: src/lib/src/Tables/Render/WpListTable/Sessions.php:38
|
5159 |
+
#: src/wizards/base_wpsf.php:61
|
5160 |
+
msgid "Security Admin"
|
5161 |
msgstr ""
|
5162 |
|
5163 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:238
|
5164 |
+
msgid "Logged-In At"
|
|
|
|
|
5165 |
msgstr ""
|
5166 |
|
5167 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:239
|
5168 |
+
msgid "Last Seen At"
|
|
|
|
|
5169 |
msgstr ""
|
5170 |
|
5171 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:299
|
5172 |
+
msgid "Visitor Requests"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5173 |
msgstr ""
|
5174 |
|
5175 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:300
|
5176 |
+
msgid "No requests logged for this IP"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5177 |
msgstr ""
|
5178 |
|
5179 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:302
|
5180 |
+
msgid "Query"
|
5181 |
msgstr ""
|
5182 |
|
5183 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:303
|
5184 |
+
msgid "Verb"
|
5185 |
msgstr ""
|
5186 |
|
5187 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:304
|
5188 |
+
msgid "Requested At"
|
|
|
5189 |
msgstr ""
|
5190 |
|
5191 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:305
|
5192 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:139
|
5193 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:64
|
5194 |
+
msgid "Response"
|
5195 |
msgstr ""
|
5196 |
|
5197 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:306
|
5198 |
+
msgid "Code"
|
|
|
5199 |
msgstr ""
|
5200 |
|
5201 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:307
|
5202 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:141
|
5203 |
+
msgid "Offense"
|
5204 |
msgstr ""
|
5205 |
|
5206 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:344
|
5207 |
+
msgid "N/A"
|
5208 |
msgstr ""
|
5209 |
|
5210 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:347
|
5211 |
+
msgid "Never Recorded"
|
5212 |
msgstr ""
|
5213 |
|
5214 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:363
|
5215 |
+
msgid "Signal"
|
5216 |
msgstr ""
|
5217 |
|
5218 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:364
|
5219 |
+
msgid "Score"
|
|
|
|
|
5220 |
msgstr ""
|
5221 |
|
5222 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:365
|
5223 |
+
msgid "Total Reputation Score"
|
5224 |
msgstr ""
|
5225 |
|
5226 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:366
|
5227 |
+
msgid "When"
|
5228 |
msgstr ""
|
5229 |
|
5230 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:367
|
5231 |
+
msgid "Bad Bot Probability"
|
|
|
5232 |
msgstr ""
|
5233 |
|
5234 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:368
|
5235 |
+
msgid "Delete All Bot Signals"
|
5236 |
msgstr ""
|
5237 |
|
5238 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:370
|
5239 |
+
msgid "There are no bot signals for this IP address."
|
|
|
|
|
5240 |
msgstr ""
|
5241 |
|
5242 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:418
|
5243 |
+
msgid "Audit Log Entries"
|
5244 |
msgstr ""
|
5245 |
|
5246 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:419
|
5247 |
+
msgid "No logs at this IP"
|
5248 |
msgstr ""
|
5249 |
|
5250 |
+
#: src/lib/src/Modules/IPs/Lib/IpAnalyse/BuildDisplay.php:423
|
5251 |
+
msgid "Logged At"
|
5252 |
+
msgstr ""
|
5253 |
+
|
5254 |
+
#: src/lib/src/Modules/IPs/Lib/Ops/AddIp.php:79
|
5255 |
+
msgid "Sorry, this is a PRO-only feature."
|
5256 |
+
msgstr ""
|
5257 |
+
|
5258 |
+
#: src/lib/src/Modules/IPs/Lib/ProcessOffenses.php:72
|
5259 |
+
msgid "No custom message provided."
|
5260 |
+
msgstr ""
|
5261 |
+
|
5262 |
+
#: src/lib/src/Modules/IPs/ModCon.php:139
|
5263 |
msgid ""
|
5264 |
+
"Repeated login attempts that fail will result in a complete ban of your IP "
|
5265 |
+
"Address."
|
5266 |
msgstr ""
|
5267 |
|
5268 |
+
#: src/lib/src/Modules/IPs/ModCon.php:146
|
5269 |
+
#, php-format
|
5270 |
msgid ""
|
5271 |
+
"You have %s remaining offenses(s) against this site and then your IP address "
|
5272 |
+
"will be completely blocked."
|
5273 |
msgstr ""
|
5274 |
|
5275 |
+
#: src/lib/src/Modules/IPs/ModCon.php:147
|
5276 |
+
msgid "Seriously, stop repeating what you are doing or you will be locked out."
|
5277 |
msgstr ""
|
5278 |
|
5279 |
+
#: src/lib/src/Modules/IPs/Strings.php:16
|
5280 |
+
#: src/lib/src/Modules/Reporting/UI.php:110
|
5281 |
+
msgid "Connection Killed"
|
5282 |
+
msgstr ""
|
5283 |
+
|
5284 |
+
#: src/lib/src/Modules/IPs/Strings.php:18
|
5285 |
+
msgid "Visitor found on the Black List and their connection was killed."
|
5286 |
msgstr ""
|
5287 |
|
5288 |
+
#: src/lib/src/Modules/IPs/Strings.php:22
|
5289 |
+
msgid "Connection Not Killed"
|
5290 |
msgstr ""
|
5291 |
|
5292 |
+
#: src/lib/src/Modules/IPs/Strings.php:24
|
5293 |
+
msgid "IP address has a high reputation so connection allowed."
|
5294 |
msgstr ""
|
5295 |
|
5296 |
+
#: src/lib/src/Modules/IPs/Strings.php:28
|
5297 |
+
#: src/lib/src/Modules/IPs/Strings.php:461
|
5298 |
+
msgid "Offense Triggered"
|
5299 |
msgstr ""
|
5300 |
|
5301 |
+
#: src/lib/src/Modules/IPs/Strings.php:30
|
5302 |
msgid ""
|
5303 |
+
"Auto Black List offenses counter was incremented from {{from}} to {{to}}."
|
|
|
5304 |
msgstr ""
|
5305 |
|
5306 |
+
#: src/lib/src/Modules/IPs/Strings.php:34
|
5307 |
+
#: src/lib/src/Modules/IPs/Strings.php:462
|
5308 |
+
#: src/lib/src/Modules/Reporting/UI.php:117
|
5309 |
+
msgid "IP Blocked"
|
5310 |
msgstr ""
|
5311 |
|
5312 |
+
#: src/lib/src/Modules/IPs/Strings.php:36
|
5313 |
+
msgid "IP blocked after incrementing offenses from {{from}} to {{to}}."
|
|
|
|
|
5314 |
msgstr ""
|
5315 |
|
5316 |
+
#: src/lib/src/Modules/IPs/Strings.php:40
|
5317 |
+
#: src/lib/src/Modules/IPs/Strings.php:463
|
5318 |
+
msgid "IP Unblocked"
|
5319 |
msgstr ""
|
5320 |
|
5321 |
+
#: src/lib/src/Modules/IPs/Strings.php:42
|
5322 |
+
msgid "IP removed from block list."
|
|
|
5323 |
msgstr ""
|
5324 |
|
5325 |
+
#: src/lib/src/Modules/IPs/Strings.php:46
|
5326 |
+
msgid "IP Unblocked (Flag File)"
|
5327 |
msgstr ""
|
5328 |
|
5329 |
+
#: src/lib/src/Modules/IPs/Strings.php:48
|
5330 |
+
msgid "IP address '{{ip}}' removed from blacklist using 'unblock' file flag."
|
|
|
|
|
|
|
5331 |
msgstr ""
|
5332 |
|
5333 |
+
#: src/lib/src/Modules/IPs/Strings.php:52
|
5334 |
+
msgid "IP Block List Add (Auto)"
|
5335 |
msgstr ""
|
5336 |
|
5337 |
+
#: src/lib/src/Modules/IPs/Strings.php:54
|
5338 |
+
msgid "IP address '{{ip}}' automatically added to block list."
|
5339 |
msgstr ""
|
5340 |
|
5341 |
+
#: src/lib/src/Modules/IPs/Strings.php:58
|
5342 |
+
msgid "IP Block List Add (Manual)"
|
5343 |
msgstr ""
|
5344 |
|
5345 |
+
#: src/lib/src/Modules/IPs/Strings.php:60
|
5346 |
+
msgid "IP address '{{ip}}' manually added to block list."
|
5347 |
msgstr ""
|
5348 |
|
5349 |
+
#: src/lib/src/Modules/IPs/Strings.php:64
|
5350 |
+
msgid "IP Bypass List Add (Manual)"
|
5351 |
msgstr ""
|
5352 |
|
5353 |
+
#: src/lib/src/Modules/IPs/Strings.php:66
|
5354 |
+
msgid "IP address '{{ip}}' manually added to bypass list."
|
5355 |
msgstr ""
|
5356 |
|
5357 |
+
#: src/lib/src/Modules/IPs/Strings.php:70
|
5358 |
+
msgid "IP Bypass List Removed (Manual)"
|
|
|
5359 |
msgstr ""
|
5360 |
|
5361 |
+
#: src/lib/src/Modules/IPs/Strings.php:72
|
5362 |
+
msgid "IP address '{{ip}}' manually removed from the bypass list."
|
5363 |
msgstr ""
|
5364 |
|
5365 |
+
#: src/lib/src/Modules/IPs/Strings.php:76
|
5366 |
+
msgid "NotBot Registration"
|
5367 |
msgstr ""
|
5368 |
|
5369 |
+
#: src/lib/src/Modules/IPs/Strings.php:78
|
5370 |
+
msgid "Visitor registered using NotBot."
|
5371 |
msgstr ""
|
5372 |
|
5373 |
+
#: src/lib/src/Modules/IPs/Strings.php:82
|
5374 |
+
#: src/lib/src/Modules/IPs/Strings.php:88
|
5375 |
+
#: src/lib/src/Modules/IPs/Strings.php:96
|
5376 |
+
#: src/lib/src/Modules/IPs/Strings.php:103
|
5377 |
+
#: src/lib/src/Modules/IPs/Strings.php:110
|
5378 |
+
#: src/lib/src/Modules/IPs/Strings.php:118
|
5379 |
+
#: src/lib/src/Modules/IPs/Strings.php:125
|
5380 |
+
#: src/lib/src/Modules/IPs/Strings.php:132
|
5381 |
+
#: src/lib/src/Modules/Reporting/UI.php:85
|
5382 |
+
msgid "Bot Detection"
|
5383 |
msgstr ""
|
5384 |
|
5385 |
+
#: src/lib/src/Modules/IPs/Strings.php:84
|
5386 |
+
msgid "404 detected at \"{{path}}\"."
|
5387 |
msgstr ""
|
5388 |
|
5389 |
+
#: src/lib/src/Modules/IPs/Strings.php:89
|
5390 |
+
#: src/lib/src/Modules/IPs/Strings.php:399
|
5391 |
+
#: src/lib/src/Modules/IPs/Strings.php:445
|
5392 |
+
msgid "Fake Web Crawler"
|
5393 |
msgstr ""
|
5394 |
|
5395 |
+
#: src/lib/src/Modules/IPs/Strings.php:91
|
5396 |
+
msgid "Fake Web Crawler detected at \"{{path}}\"."
|
|
|
|
|
5397 |
msgstr ""
|
5398 |
|
5399 |
+
#: src/lib/src/Modules/IPs/Strings.php:92
|
5400 |
+
msgid "Fake Crawler misrepresented itself as \"{{crawler}}\"."
|
5401 |
msgstr ""
|
5402 |
|
5403 |
+
#: src/lib/src/Modules/IPs/Strings.php:97
|
5404 |
+
#: src/lib/src/Modules/IPs/Strings.php:368
|
5405 |
+
#: src/lib/src/Modules/IPs/Strings.php:446
|
5406 |
+
msgid "Link Cheese"
|
5407 |
msgstr ""
|
5408 |
|
5409 |
+
#: src/lib/src/Modules/IPs/Strings.php:99
|
5410 |
+
msgid "Link cheese access detected at \"{{path}}\"."
|
|
|
|
|
5411 |
msgstr ""
|
5412 |
|
5413 |
+
#: src/lib/src/Modules/IPs/Strings.php:104
|
5414 |
+
#: src/lib/src/Modules/IPs/Strings.php:382
|
5415 |
+
msgid "Failed Login"
|
5416 |
msgstr ""
|
5417 |
|
5418 |
+
#: src/lib/src/Modules/IPs/Strings.php:106
|
5419 |
+
msgid "Attempted login failed by user \"{{user_login}}\"."
|
5420 |
msgstr ""
|
5421 |
|
5422 |
+
#: src/lib/src/Modules/IPs/Strings.php:111
|
5423 |
+
msgid "Invalid Username Login"
|
|
|
5424 |
msgstr ""
|
5425 |
|
5426 |
+
#: src/lib/src/Modules/IPs/Strings.php:113
|
5427 |
+
msgid "Attempted login with invalid user \"{{user_login}}\"."
|
5428 |
msgstr ""
|
5429 |
|
5430 |
+
#: src/lib/src/Modules/IPs/Strings.php:119
|
5431 |
+
msgid "Invalid User-Agent"
|
|
|
5432 |
msgstr ""
|
5433 |
|
5434 |
+
#: src/lib/src/Modules/IPs/Strings.php:121
|
5435 |
+
msgid "Invalid user agent detected at \"{{useragent}}\"."
|
5436 |
msgstr ""
|
5437 |
|
5438 |
+
#: src/lib/src/Modules/IPs/Strings.php:126
|
5439 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:45
|
5440 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:21
|
5441 |
+
msgid "XML-RPC"
|
5442 |
msgstr ""
|
5443 |
|
5444 |
+
#: src/lib/src/Modules/IPs/Strings.php:128
|
5445 |
+
msgid "Access to XML-RPC detected at \"{{path}}\"."
|
|
|
|
|
5446 |
msgstr ""
|
5447 |
|
5448 |
+
#: src/lib/src/Modules/IPs/Strings.php:133
|
5449 |
+
#: src/lib/src/Modules/IPs/Strings.php:388
|
5450 |
+
msgid "Invalid Script Load"
|
5451 |
msgstr ""
|
5452 |
|
5453 |
+
#: src/lib/src/Modules/IPs/Strings.php:135
|
5454 |
+
msgid "Tried to load an invalid WordPress PHP script \"{{script}}\"."
|
|
|
5455 |
msgstr ""
|
5456 |
|
5457 |
+
#: src/lib/src/Modules/IPs/Strings.php:139
|
5458 |
+
msgid "Mark Comment SPAM (Manual)"
|
5459 |
msgstr ""
|
5460 |
|
5461 |
+
#: src/lib/src/Modules/IPs/Strings.php:141
|
5462 |
+
msgid "Comment manually marked as SPAM."
|
5463 |
msgstr ""
|
5464 |
|
5465 |
+
#: src/lib/src/Modules/IPs/Strings.php:145
|
5466 |
+
#: src/lib/src/Modules/IPs/Strings.php:151
|
5467 |
+
msgid "Mark Comment Not SPAM (Manual)"
|
|
|
|
|
5468 |
msgstr ""
|
5469 |
|
5470 |
+
#: src/lib/src/Modules/IPs/Strings.php:147
|
5471 |
+
msgid "Comment manually marked as not SPAM."
|
5472 |
msgstr ""
|
5473 |
|
5474 |
+
#: src/lib/src/Modules/IPs/Strings.php:153
|
5475 |
+
msgid "A custom offense was registered on the site."
|
5476 |
msgstr ""
|
5477 |
|
5478 |
+
#: src/lib/src/Modules/IPs/Strings.php:177
|
5479 |
msgid ""
|
5480 |
+
"The IP Manager allows you to whitelist, blacklist and configure auto-"
|
5481 |
+
"blacklist rules."
|
5482 |
msgstr ""
|
5483 |
|
5484 |
+
#: src/lib/src/Modules/IPs/Strings.php:178
|
5485 |
+
#: src/lib/src/Modules/Plugin/Strings.php:544 src/wizards/plugin.php:624
|
5486 |
+
#: src/wizards/plugin.php:629
|
5487 |
+
msgid "IP Manager"
|
5488 |
msgstr ""
|
5489 |
|
5490 |
+
#: src/lib/src/Modules/IPs/Strings.php:179
|
5491 |
+
msgid "You should also carefully review the automatic black list settings."
|
5492 |
msgstr ""
|
5493 |
|
5494 |
+
#: src/lib/src/Modules/IPs/Strings.php:184
|
5495 |
+
msgid "Auto IP Blocking Rules"
|
5496 |
+
msgstr ""
|
5497 |
+
|
5498 |
+
#: src/lib/src/Modules/IPs/Strings.php:185
|
5499 |
+
msgid "Auto Blocking Rules"
|
5500 |
+
msgstr ""
|
5501 |
+
|
5502 |
+
#: src/lib/src/Modules/IPs/Strings.php:187
|
5503 |
+
msgid ""
|
5504 |
+
"The Automatic IP Black List system will block the IP addresses of naughty "
|
5505 |
+
"visitors after a specified number of offenses."
|
5506 |
+
msgstr ""
|
5507 |
+
|
5508 |
+
#: src/lib/src/Modules/IPs/Strings.php:188
|
5509 |
+
#: src/lib/src/Modules/IPs/Strings.php:265
|
5510 |
+
msgid "Automatic IP Black List"
|
5511 |
msgstr ""
|
5512 |
|
5513 |
+
#: src/lib/src/Modules/IPs/Strings.php:189
|
5514 |
+
msgid ""
|
5515 |
+
"Think of 'offenses' as just a counter for the number of times a visitor does "
|
5516 |
+
"something bad."
|
5517 |
msgstr ""
|
5518 |
|
5519 |
+
#: src/lib/src/Modules/IPs/Strings.php:191
|
5520 |
#, php-format
|
5521 |
msgid ""
|
5522 |
+
"When the counter reaches the limit below (default: %s), %s will block that "
|
5523 |
+
"IP completely."
|
5524 |
msgstr ""
|
5525 |
|
5526 |
+
#: src/lib/src/Modules/IPs/Strings.php:199
|
5527 |
+
msgid "Login Bots"
|
|
|
|
|
5528 |
msgstr ""
|
5529 |
|
5530 |
+
#: src/lib/src/Modules/IPs/Strings.php:200
|
5531 |
+
msgid "Detect & Capture Login Bots"
|
|
|
5532 |
msgstr ""
|
5533 |
|
5534 |
+
#: src/lib/src/Modules/IPs/Strings.php:202
|
5535 |
+
#: src/lib/src/Modules/IPs/Strings.php:215
|
5536 |
+
#: src/lib/src/Modules/IPs/Strings.php:226
|
5537 |
+
#: src/lib/src/Modules/Integrations/Strings.php:52
|
5538 |
+
#: src/lib/src/Modules/Integrations/Strings.php:63
|
5539 |
+
msgid "Summary"
|
5540 |
msgstr ""
|
5541 |
|
5542 |
+
#: src/lib/src/Modules/IPs/Strings.php:203
|
5543 |
+
msgid ""
|
5544 |
+
"Certain bots are designed to test your logins and this feature lets you "
|
5545 |
+
"decide how to handle them."
|
5546 |
msgstr ""
|
5547 |
|
5548 |
+
#: src/lib/src/Modules/IPs/Strings.php:205
|
5549 |
+
#: src/lib/src/Modules/IPs/Strings.php:218
|
5550 |
+
#: src/lib/src/Modules/IPs/Strings.php:229
|
5551 |
+
msgid "Enable as many options as possible."
|
5552 |
msgstr ""
|
5553 |
|
5554 |
+
#: src/lib/src/Modules/IPs/Strings.php:207
|
5555 |
+
msgid ""
|
5556 |
+
"Legitimate users may get their password wrong, so take care not to block "
|
5557 |
+
"this."
|
5558 |
msgstr ""
|
5559 |
|
5560 |
+
#: src/lib/src/Modules/IPs/Strings.php:212
|
5561 |
+
msgid "Probing Bots"
|
5562 |
msgstr ""
|
5563 |
|
5564 |
+
#: src/lib/src/Modules/IPs/Strings.php:213
|
5565 |
+
msgid "Detect & Capture Probing Bots"
|
|
|
|
|
|
|
5566 |
msgstr ""
|
5567 |
|
5568 |
+
#: src/lib/src/Modules/IPs/Strings.php:216
|
5569 |
+
msgid ""
|
5570 |
+
"Bots are designed to probe and this feature is dedicated to detecting "
|
5571 |
+
"probing bots."
|
5572 |
msgstr ""
|
5573 |
|
5574 |
+
#: src/lib/src/Modules/IPs/Strings.php:223
|
5575 |
+
msgid "Bot Behaviours"
|
5576 |
msgstr ""
|
5577 |
|
5578 |
+
#: src/lib/src/Modules/IPs/Strings.php:224
|
5579 |
+
msgid "Detect Behaviours Common To Bots"
|
5580 |
msgstr ""
|
5581 |
|
5582 |
+
#: src/lib/src/Modules/IPs/Strings.php:227
|
5583 |
+
msgid ""
|
5584 |
+
"Detect characteristics and behaviour commonly associated with illegitimate "
|
5585 |
+
"bots."
|
5586 |
msgstr ""
|
5587 |
|
5588 |
+
#: src/lib/src/Modules/IPs/Strings.php:260
|
5589 |
+
msgid "Offense Limit"
|
5590 |
msgstr ""
|
5591 |
|
5592 |
+
#: src/lib/src/Modules/IPs/Strings.php:261
|
5593 |
+
msgid "The number of permitted offenses before an IP address will be blocked"
|
5594 |
msgstr ""
|
5595 |
|
5596 |
+
#: src/lib/src/Modules/IPs/Strings.php:263
|
5597 |
+
#, php-format
|
5598 |
+
msgid ""
|
5599 |
+
"An offense is registered against an IP address each time a visitor trips the "
|
5600 |
+
"defenses of the %s plugin."
|
5601 |
msgstr ""
|
5602 |
|
5603 |
+
#: src/lib/src/Modules/IPs/Strings.php:264
|
5604 |
+
msgid ""
|
5605 |
+
"When the number of these offenses exceeds the limit, they are automatically "
|
5606 |
+
"blocked from accessing the site."
|
5607 |
msgstr ""
|
5608 |
|
5609 |
+
#: src/lib/src/Modules/IPs/Strings.php:265
|
5610 |
+
#, php-format
|
5611 |
+
msgid "Set this to \"0\" to turn off the %s feature."
|
5612 |
msgstr ""
|
5613 |
|
5614 |
+
#: src/lib/src/Modules/IPs/Strings.php:270
|
5615 |
+
msgid "Auto Block Expiration"
|
|
|
|
|
|
|
|
|
5616 |
msgstr ""
|
5617 |
|
5618 |
+
#: src/lib/src/Modules/IPs/Strings.php:271
|
5619 |
+
msgid "After 1 \"X\" a black listed IP will be removed from the black list"
|
5620 |
msgstr ""
|
5621 |
|
5622 |
+
#: src/lib/src/Modules/IPs/Strings.php:273
|
5623 |
+
msgid "Blocked IP addresses are eventually removed."
|
5624 |
msgstr ""
|
5625 |
|
5626 |
+
#: src/lib/src/Modules/IPs/Strings.php:274
|
5627 |
+
msgid "This option lets you specify how long they should be kept."
|
5628 |
msgstr ""
|
5629 |
|
5630 |
+
#: src/lib/src/Modules/IPs/Strings.php:275
|
5631 |
+
msgid "Large, permanent IP Block Lists will degrade site performance."
|
|
|
|
|
5632 |
msgstr ""
|
5633 |
|
5634 |
+
#: src/lib/src/Modules/IPs/Strings.php:276
|
5635 |
+
msgid ""
|
5636 |
+
"Shorter IP black lists are more efficient and a more intelligent use of an "
|
5637 |
+
"IP-based blocking system."
|
5638 |
msgstr ""
|
5639 |
|
5640 |
+
#: src/lib/src/Modules/IPs/Strings.php:281
|
5641 |
+
msgid "User Auto Unblock"
|
|
|
5642 |
msgstr ""
|
5643 |
|
5644 |
+
#: src/lib/src/Modules/IPs/Strings.php:282
|
5645 |
+
msgid "Allow Visitors To Unblock Their IP"
|
5646 |
msgstr ""
|
5647 |
|
5648 |
+
#: src/lib/src/Modules/IPs/Strings.php:283
|
5649 |
+
msgid ""
|
5650 |
+
"Allow visitors blocked by the plugin to automatically unblock themselves."
|
5651 |
msgstr ""
|
5652 |
|
5653 |
+
#: src/lib/src/Modules/IPs/Strings.php:287
|
5654 |
+
#: src/lib/src/Modules/IPs/Strings.php:288
|
5655 |
+
msgid "Request Path Whitelist"
|
5656 |
msgstr ""
|
5657 |
|
5658 |
+
#: src/lib/src/Modules/IPs/Strings.php:289
|
5659 |
+
msgid "A list of request paths that will never trigger an offense."
|
5660 |
msgstr ""
|
5661 |
|
5662 |
+
#: src/lib/src/Modules/IPs/Strings.php:293
|
5663 |
+
msgid ""
|
5664 |
+
"The paths are compared against only the request path, not the query portion."
|
5665 |
msgstr ""
|
5666 |
|
5667 |
+
#: src/lib/src/Modules/IPs/Strings.php:294
|
5668 |
+
msgid ""
|
5669 |
+
"If a path you add matches your website root (/), it'll be removed "
|
5670 |
+
"automatically."
|
5671 |
msgstr ""
|
5672 |
|
5673 |
+
#: src/lib/src/Modules/IPs/Strings.php:299
|
5674 |
+
msgid "AntiBot Minimum Score"
|
5675 |
msgstr ""
|
5676 |
|
5677 |
+
#: src/lib/src/Modules/IPs/Strings.php:300
|
5678 |
+
msgid "AntiBot Minimum Score (Percentage)"
|
5679 |
msgstr ""
|
5680 |
|
5681 |
+
#: src/lib/src/Modules/IPs/Strings.php:302
|
5682 |
+
msgid ""
|
5683 |
+
"Every IP address accessing your site gets its own unique visitor score - the "
|
5684 |
+
"higher the score, the better the visitor i.e. the more likely it's human."
|
5685 |
msgstr ""
|
5686 |
|
5687 |
+
#: src/lib/src/Modules/IPs/Strings.php:303
|
5688 |
+
msgid ""
|
5689 |
+
"A score of '100' would mean it's almost certainly good, a score of '0' means "
|
5690 |
+
"it's highly likely to be a bad bot."
|
5691 |
msgstr ""
|
5692 |
|
5693 |
+
#: src/lib/src/Modules/IPs/Strings.php:304
|
5694 |
+
msgid ""
|
5695 |
+
"When a bot tries to login, or post a comment, we test its visitor score."
|
5696 |
msgstr ""
|
5697 |
|
5698 |
+
#: src/lib/src/Modules/IPs/Strings.php:305
|
5699 |
+
msgid ""
|
5700 |
+
"If the visitor score fails to meet your Minimum AntiBot Score, we prevent "
|
5701 |
+
"the request. If its higher, we allow it."
|
5702 |
msgstr ""
|
5703 |
|
5704 |
+
#: src/lib/src/Modules/IPs/Strings.php:306
|
5705 |
+
msgid ""
|
5706 |
+
"This means: choose a higher minimum score to be more strict and capture more "
|
5707 |
+
"bots (but potentially block someone that appears to be a bot, but isn't)."
|
5708 |
msgstr ""
|
5709 |
|
5710 |
+
#: src/lib/src/Modules/IPs/Strings.php:307
|
5711 |
+
msgid ""
|
5712 |
+
"Or choose a lower minimum score to perhaps allow through more bots (but "
|
5713 |
+
"reduce the chances of accidentally blocking legitimate visitors)."
|
5714 |
msgstr ""
|
5715 |
|
5716 |
+
#: src/lib/src/Modules/IPs/Strings.php:312
|
5717 |
+
msgid "High Reputation Bypass"
|
|
|
5718 |
msgstr ""
|
5719 |
|
5720 |
+
#: src/lib/src/Modules/IPs/Strings.php:313
|
5721 |
+
msgid "Prevent Visitors With A High Reputation Scores From Being Blocked"
|
5722 |
msgstr ""
|
5723 |
|
5724 |
+
#: src/lib/src/Modules/IPs/Strings.php:315
|
5725 |
msgid ""
|
5726 |
+
"Visitors that have accumulated a high IP reputation and AntiBot score should "
|
5727 |
+
"ideally never be blocked."
|
5728 |
msgstr ""
|
5729 |
|
5730 |
+
#: src/lib/src/Modules/IPs/Strings.php:316
|
5731 |
+
msgid ""
|
5732 |
+
"This option ensures that visitors with a high reputation never have their IP "
|
5733 |
+
"blocked by Shield."
|
5734 |
msgstr ""
|
5735 |
|
5736 |
+
#: src/lib/src/Modules/IPs/Strings.php:321
|
5737 |
+
msgid "Force NotBot JS"
|
5738 |
msgstr ""
|
5739 |
|
5740 |
+
#: src/lib/src/Modules/IPs/Strings.php:322
|
5741 |
+
msgid "Force Loading Of NotBot JS"
|
5742 |
msgstr ""
|
5743 |
|
5744 |
+
#: src/lib/src/Modules/IPs/Strings.php:324
|
5745 |
+
#, php-format
|
5746 |
+
msgid "%s uses Javascript to help identify bots versus legitimate visitors."
|
5747 |
msgstr ""
|
5748 |
|
5749 |
+
#: src/lib/src/Modules/IPs/Strings.php:326
|
5750 |
+
msgid ""
|
5751 |
+
"However, caching plugins often interfere, preventing it loading for your "
|
5752 |
+
"visitors."
|
5753 |
msgstr ""
|
5754 |
|
5755 |
+
#: src/lib/src/Modules/IPs/Strings.php:327
|
5756 |
+
msgid ""
|
5757 |
+
"This may cause some of your legitimate users to be identified as bots, when "
|
5758 |
+
"they're not."
|
5759 |
msgstr ""
|
5760 |
|
5761 |
+
#: src/lib/src/Modules/IPs/Strings.php:328
|
5762 |
+
msgid ""
|
5763 |
+
"Turn this option on if you're using an aggressive caching system, to ensure "
|
5764 |
+
"NotBot JS is loaded for all visitors."
|
5765 |
msgstr ""
|
5766 |
|
5767 |
+
#: src/lib/src/Modules/IPs/Strings.php:329
|
5768 |
+
msgid ""
|
5769 |
+
"When this option is disabled we'll automatically optimise loading of the "
|
5770 |
+
"Javascript so it's only loaded where it's required."
|
5771 |
msgstr ""
|
5772 |
|
5773 |
+
#: src/lib/src/Modules/IPs/Strings.php:330
|
5774 |
+
msgid ""
|
5775 |
+
"You should test your site and keep a lookout for user login issues after "
|
5776 |
+
"disabling this option."
|
5777 |
msgstr ""
|
5778 |
|
5779 |
+
#: src/lib/src/Modules/IPs/Strings.php:335
|
5780 |
+
msgid "Login Failed"
|
5781 |
msgstr ""
|
5782 |
|
5783 |
+
#: src/lib/src/Modules/IPs/Strings.php:336
|
5784 |
+
msgid "Visitor Triggers The IP Offense System Through A Failed Login"
|
5785 |
msgstr ""
|
5786 |
|
5787 |
+
#: src/lib/src/Modules/IPs/Strings.php:337
|
5788 |
+
msgid "This message is displayed if the visitor fails a login attempt."
|
5789 |
+
msgstr ""
|
5790 |
+
|
5791 |
+
#: src/lib/src/Modules/IPs/Strings.php:341
|
5792 |
+
msgid "Remaining Offenses"
|
5793 |
+
msgstr ""
|
5794 |
+
|
5795 |
+
#: src/lib/src/Modules/IPs/Strings.php:342
|
5796 |
+
msgid "Visitor Triggers The IP Offenses System Through A Firewall Block"
|
5797 |
msgstr ""
|
5798 |
|
5799 |
+
#: src/lib/src/Modules/IPs/Strings.php:343
|
5800 |
msgid ""
|
5801 |
+
"This message is displayed if the visitor triggered the IP Offense system and "
|
5802 |
+
"reports how many offenses remain before being blocked."
|
5803 |
msgstr ""
|
5804 |
|
5805 |
+
#: src/lib/src/Modules/IPs/Strings.php:347
|
5806 |
+
msgid "404 Detect"
|
5807 |
msgstr ""
|
5808 |
|
5809 |
+
#: src/lib/src/Modules/IPs/Strings.php:348
|
5810 |
+
msgid "Identify A Bot When It Hits A 404"
|
5811 |
msgstr ""
|
5812 |
|
5813 |
+
#: src/lib/src/Modules/IPs/Strings.php:350
|
5814 |
+
msgid "Detect when a visitor tries to load a non-existent page."
|
5815 |
msgstr ""
|
5816 |
|
5817 |
+
#: src/lib/src/Modules/IPs/Strings.php:351
|
5818 |
msgid ""
|
5819 |
+
"Care should be taken to ensure that your website doesn't generate 404 errors "
|
5820 |
+
"for normal visitors."
|
5821 |
msgstr ""
|
5822 |
|
5823 |
+
#: src/lib/src/Modules/IPs/Strings.php:353
|
5824 |
+
msgid ""
|
5825 |
+
"404 errors generated for the following file types won't trigger an offense"
|
5826 |
msgstr ""
|
5827 |
|
5828 |
+
#: src/lib/src/Modules/IPs/Strings.php:360
|
5829 |
+
msgid "XML-RPC Access"
|
5830 |
msgstr ""
|
5831 |
|
5832 |
+
#: src/lib/src/Modules/IPs/Strings.php:361
|
5833 |
+
msgid "Identify A Bot When It Accesses XML-RPC"
|
5834 |
msgstr ""
|
5835 |
|
5836 |
+
#: src/lib/src/Modules/IPs/Strings.php:362
|
5837 |
+
msgid ""
|
5838 |
+
"If you don't use XML-RPC, there's no reason anything should be accessing it."
|
5839 |
msgstr ""
|
5840 |
|
5841 |
+
#: src/lib/src/Modules/IPs/Strings.php:363
|
5842 |
msgid ""
|
5843 |
+
"Be careful the ensure you don't block legitimate XML-RPC traffic if your "
|
5844 |
+
"site needs it."
|
5845 |
msgstr ""
|
5846 |
|
5847 |
+
#: src/lib/src/Modules/IPs/Strings.php:364
|
5848 |
+
msgid ""
|
5849 |
+
"We recommend logging here in-case of blocking valid request unless you're "
|
5850 |
+
"sure."
|
5851 |
msgstr ""
|
5852 |
|
5853 |
+
#: src/lib/src/Modules/IPs/Strings.php:369
|
5854 |
+
msgid "Tempt A Bot With A Fake Link To Follow"
|
|
|
5855 |
msgstr ""
|
5856 |
|
5857 |
+
#: src/lib/src/Modules/IPs/Strings.php:370
|
5858 |
+
msgid "Detect a bot when it follows a fake 'no-follow' link."
|
5859 |
msgstr ""
|
5860 |
|
5861 |
+
#: src/lib/src/Modules/IPs/Strings.php:371
|
5862 |
msgid ""
|
5863 |
+
"This works because legitimate web crawlers respect 'robots.txt' and "
|
5864 |
+
"'nofollow' directives."
|
|
|
|
|
|
|
|
|
5865 |
msgstr ""
|
5866 |
|
5867 |
+
#: src/lib/src/Modules/IPs/Strings.php:375
|
5868 |
+
msgid "Invalid Usernames"
|
5869 |
msgstr ""
|
5870 |
|
5871 |
+
#: src/lib/src/Modules/IPs/Strings.php:376
|
5872 |
+
msgid "Detect Attempted Logins With Usernames That Don't Exist"
|
|
|
|
|
|
|
|
|
|
|
5873 |
msgstr ""
|
5874 |
|
5875 |
+
#: src/lib/src/Modules/IPs/Strings.php:377
|
5876 |
+
msgid "Identify a Bot when it tries to login with a non-existent username."
|
5877 |
msgstr ""
|
5878 |
|
5879 |
+
#: src/lib/src/Modules/IPs/Strings.php:378
|
5880 |
+
msgid "This includes the default 'admin' if you've removed that account."
|
5881 |
msgstr ""
|
5882 |
|
5883 |
+
#: src/lib/src/Modules/IPs/Strings.php:383
|
5884 |
+
msgid "Detect Failed Login Attempts For Users That Exist"
|
5885 |
msgstr ""
|
5886 |
|
5887 |
+
#: src/lib/src/Modules/IPs/Strings.php:384
|
5888 |
+
msgid ""
|
5889 |
+
"Penalise a visitor when they try to login using a valid username, but it "
|
5890 |
+
"fails."
|
5891 |
msgstr ""
|
5892 |
|
5893 |
+
#: src/lib/src/Modules/IPs/Strings.php:389
|
5894 |
+
msgid "Identify Bot Attempts To Load WordPress In A Non-Standard Way"
|
5895 |
msgstr ""
|
5896 |
|
5897 |
+
#: src/lib/src/Modules/IPs/Strings.php:391
|
5898 |
+
msgid ""
|
5899 |
+
"Detect when a bot tries to load WordPress directly from a file that isn't "
|
5900 |
+
"normally used to load WordPress."
|
5901 |
msgstr ""
|
5902 |
|
5903 |
+
#: src/lib/src/Modules/IPs/Strings.php:392
|
5904 |
+
msgid "WordPress should only be loaded in a limited number of ways."
|
5905 |
msgstr ""
|
5906 |
|
5907 |
+
#: src/lib/src/Modules/IPs/Strings.php:394
|
5908 |
+
#, php-format
|
5909 |
+
msgid ""
|
5910 |
+
"Set this option to \"%s\" and monitor the Audit Trail, since some plugins, "
|
5911 |
+
"themes, or custom integrations may trigger this."
|
5912 |
msgstr ""
|
5913 |
|
5914 |
+
#: src/lib/src/Modules/IPs/Strings.php:394
|
5915 |
+
#: src/lib/src/Modules/Plugin/Strings.php:494
|
5916 |
+
msgid "Audit Log Only"
|
5917 |
msgstr ""
|
5918 |
|
5919 |
+
#: src/lib/src/Modules/IPs/Strings.php:400
|
5920 |
+
msgid "Detect Fake Search Engine Crawlers"
|
|
|
5921 |
msgstr ""
|
5922 |
|
5923 |
+
#: src/lib/src/Modules/IPs/Strings.php:402
|
5924 |
+
msgid ""
|
5925 |
+
"Identify a visitor as a Bot when it presents as an official web crawler, but "
|
5926 |
+
"analysis shows it's fake."
|
5927 |
msgstr ""
|
5928 |
|
5929 |
+
#: src/lib/src/Modules/IPs/Strings.php:403
|
5930 |
+
msgid "Many bots pretend to be a Google Bot."
|
5931 |
msgstr ""
|
5932 |
|
5933 |
+
#: src/lib/src/Modules/IPs/Strings.php:404
|
5934 |
+
msgid ""
|
5935 |
+
"We can then know that a bot isn't here for anything good and block them."
|
5936 |
msgstr ""
|
5937 |
|
5938 |
+
#: src/lib/src/Modules/IPs/Strings.php:409
|
5939 |
+
msgid "Empty User Agents"
|
5940 |
msgstr ""
|
5941 |
|
5942 |
+
#: src/lib/src/Modules/IPs/Strings.php:410
|
5943 |
+
msgid "Detect Requests With Empty User Agents"
|
|
|
|
|
|
|
5944 |
msgstr ""
|
5945 |
|
5946 |
+
#: src/lib/src/Modules/IPs/Strings.php:412
|
5947 |
+
msgid "Identify a bot when the user agent is not provided."
|
5948 |
msgstr ""
|
5949 |
|
5950 |
+
#: src/lib/src/Modules/IPs/Strings.php:414
|
5951 |
+
msgid "For example, your browser user agent is"
|
5952 |
msgstr ""
|
5953 |
|
5954 |
+
#: src/lib/src/Modules/IPs/Strings.php:439
|
5955 |
+
msgid "New Visitor Bonus"
|
5956 |
msgstr ""
|
5957 |
|
5958 |
+
#: src/lib/src/Modules/IPs/Strings.php:440
|
5959 |
+
msgid "A Known Service Provider/Bot"
|
5960 |
msgstr ""
|
5961 |
|
5962 |
+
#: src/lib/src/Modules/IPs/Strings.php:441
|
5963 |
+
msgid "\"Not Bot\" Registration"
|
|
|
5964 |
msgstr ""
|
5965 |
|
5966 |
+
#: src/lib/src/Modules/IPs/Strings.php:442
|
5967 |
+
msgid "Any Frontend Page Visited"
|
5968 |
msgstr ""
|
5969 |
|
5970 |
+
#: src/lib/src/Modules/IPs/Strings.php:443
|
5971 |
+
msgid "Login Page Visited"
|
|
|
5972 |
msgstr ""
|
5973 |
|
5974 |
+
#: src/lib/src/Modules/IPs/Strings.php:444
|
5975 |
+
msgid "404 Triggered"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5976 |
msgstr ""
|
5977 |
|
5978 |
+
#: src/lib/src/Modules/IPs/Strings.php:447
|
5979 |
+
msgid "Login Fail"
|
5980 |
msgstr ""
|
5981 |
|
5982 |
+
#: src/lib/src/Modules/IPs/Strings.php:448
|
5983 |
+
msgid "Invalid User Agent"
|
|
|
5984 |
msgstr ""
|
5985 |
|
5986 |
+
#: src/lib/src/Modules/IPs/Strings.php:449
|
5987 |
+
msgid "XMLRPC Access"
|
|
|
5988 |
msgstr ""
|
5989 |
|
5990 |
+
#: src/lib/src/Modules/IPs/Strings.php:450
|
5991 |
+
msgid "Invalid Login Username"
|
|
|
5992 |
msgstr ""
|
5993 |
|
5994 |
+
#: src/lib/src/Modules/IPs/Strings.php:451
|
5995 |
+
msgid "Invalid Script Access"
|
5996 |
msgstr ""
|
5997 |
|
5998 |
+
#: src/lib/src/Modules/IPs/Strings.php:452
|
5999 |
+
msgid "Cooldown Triggered"
|
|
|
|
|
6000 |
msgstr ""
|
6001 |
|
6002 |
+
#: src/lib/src/Modules/IPs/Strings.php:453
|
6003 |
+
msgid "Comment Triggered Human SPAM Detection"
|
6004 |
msgstr ""
|
6005 |
|
6006 |
+
#: src/lib/src/Modules/IPs/Strings.php:454
|
6007 |
+
msgid "Comment Marked As SPAM"
|
|
|
6008 |
msgstr ""
|
6009 |
|
6010 |
+
#: src/lib/src/Modules/IPs/Strings.php:455
|
6011 |
+
msgid "Comment Unmarked As SPAM"
|
6012 |
msgstr ""
|
6013 |
|
6014 |
+
#: src/lib/src/Modules/IPs/Strings.php:456
|
6015 |
+
msgid "Authenticated With Site"
|
6016 |
msgstr ""
|
6017 |
|
6018 |
+
#: src/lib/src/Modules/IPs/Strings.php:457
|
6019 |
+
#: src/lib/src/Modules/Traffic/Strings.php:15
|
6020 |
+
msgid "Rate Limit Exceeded"
|
|
|
6021 |
msgstr ""
|
6022 |
|
6023 |
+
#: src/lib/src/Modules/IPs/Strings.php:458
|
6024 |
+
msgid "Captcha Verification Passed"
|
6025 |
msgstr ""
|
6026 |
|
6027 |
+
#: src/lib/src/Modules/IPs/Strings.php:459
|
6028 |
+
msgid "Captcha Verification Failed"
|
6029 |
msgstr ""
|
6030 |
|
6031 |
+
#: src/lib/src/Modules/IPs/Strings.php:460
|
6032 |
+
msgid "Firewall Triggered"
|
6033 |
msgstr ""
|
6034 |
|
6035 |
+
#: src/lib/src/Modules/IPs/Strings.php:464
|
6036 |
+
msgid "IP Bypassed"
|
|
|
6037 |
msgstr ""
|
6038 |
|
6039 |
+
#: src/lib/src/Modules/IPs/UI.php:34
|
6040 |
+
#, php-format
|
6041 |
+
msgid "Offenses required for IP block: %s"
|
6042 |
msgstr ""
|
6043 |
|
6044 |
+
#: src/lib/src/Modules/IPs/UI.php:39
|
6045 |
+
#, php-format
|
6046 |
+
msgid "IPs on block list auto-expire after: %s"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6047 |
msgstr ""
|
6048 |
|
6049 |
+
#: src/lib/src/Modules/IPs/UI.php:48
|
6050 |
+
msgid "IP Bypass List"
|
|
|
6051 |
msgstr ""
|
6052 |
|
6053 |
+
#: src/lib/src/Modules/IPs/UI.php:49
|
6054 |
+
msgid "IP Block List"
|
|
|
6055 |
msgstr ""
|
6056 |
|
6057 |
+
#: src/lib/src/Modules/IPs/UI.php:50
|
6058 |
+
#, php-format
|
6059 |
+
msgid "IP addresses that are never blocked and bypass all %s rules."
|
6060 |
msgstr ""
|
6061 |
|
6062 |
+
#: src/lib/src/Modules/IPs/UI.php:51
|
6063 |
#, php-format
|
6064 |
+
msgid "IP addresses that have tripped %s defenses."
|
6065 |
msgstr ""
|
6066 |
|
6067 |
+
#: src/lib/src/Modules/IPs/UI.php:52
|
6068 |
+
msgid "Enter IP address to block"
|
|
|
|
|
6069 |
msgstr ""
|
6070 |
|
6071 |
+
#: src/lib/src/Modules/IPs/UI.php:53
|
6072 |
+
msgid "Supply IP address to add to bypass list"
|
6073 |
msgstr ""
|
6074 |
|
6075 |
+
#: src/lib/src/Modules/IPs/UI.php:54
|
6076 |
+
msgid "Enter IP address"
|
6077 |
msgstr ""
|
6078 |
|
6079 |
+
#: src/lib/src/Modules/IPs/UI.php:55
|
6080 |
+
msgid "Label for IP"
|
|
|
|
|
6081 |
msgstr ""
|
6082 |
|
6083 |
+
#: src/lib/src/Modules/IPs/UI.php:56
|
6084 |
+
msgid "New IP"
|
|
|
6085 |
msgstr ""
|
6086 |
|
6087 |
+
#: src/lib/src/Modules/IPs/UI.php:57
|
6088 |
+
msgid "Filter By IP"
|
6089 |
msgstr ""
|
6090 |
|
6091 |
+
#: src/lib/src/Modules/IPs/UI.php:59
|
6092 |
+
msgid "Manage Block List"
|
|
|
6093 |
msgstr ""
|
6094 |
|
6095 |
+
#: src/lib/src/Modules/IPs/UI.php:60
|
6096 |
+
msgid "Manage Bypass List"
|
|
|
6097 |
msgstr ""
|
6098 |
|
6099 |
+
#: src/lib/src/Modules/IPs/UI.php:61 src/lib/src/Tables/Build/BaseBuild.php:205
|
6100 |
+
#: src/lib/src/Tables/DataTables/LoadData/BaseLoadTableData.php:28
|
6101 |
+
#: src/lib/src/Tables/DataTables/LoadData/BaseLoadTableData.php:35
|
6102 |
+
msgid "IP Analysis"
|
|
|
|
|
6103 |
msgstr ""
|
6104 |
|
6105 |
+
#: src/lib/src/Modules/IPs/UI.php:84
|
6106 |
+
msgid "IP blocking is turned-off because the offenses limit is set to 0."
|
6107 |
msgstr ""
|
6108 |
|
6109 |
+
#: src/lib/src/Modules/IPs/UI.php:91
|
6110 |
+
#, php-format
|
6111 |
+
msgid ""
|
6112 |
+
"The AntiBot Detection Engine is disabled when set to a minimum score of %s."
|
6113 |
msgstr ""
|
6114 |
|
6115 |
+
#: src/lib/src/Modules/IPs/UI.php:99
|
6116 |
+
msgid ""
|
6117 |
+
"Shield couldn't determine whether the NotBot JS was loading correctly on "
|
6118 |
+
"your site."
|
6119 |
msgstr ""
|
6120 |
|
6121 |
+
#: src/lib/src/Modules/IPs/UI.php:108
|
6122 |
+
msgid "Since the offenses limit is set to 0, these options have no effect."
|
6123 |
msgstr ""
|
6124 |
|
6125 |
+
#: src/lib/src/Modules/IPs/UI.php:112
|
6126 |
+
msgid ""
|
6127 |
+
"Your User Agent appears to be empty. We recommend not turning on this option."
|
6128 |
msgstr ""
|
6129 |
|
6130 |
+
#: src/lib/src/Modules/IPs/UI.php:131
|
6131 |
+
msgid "Select IP To Analyse"
|
|
|
|
|
6132 |
msgstr ""
|
6133 |
|
6134 |
+
#: src/lib/src/Modules/IPs/WpCli/Add.php:51
|
6135 |
+
msgid "IP address added successfully."
|
6136 |
msgstr ""
|
6137 |
|
6138 |
+
#: src/lib/src/Modules/IPs/WpCli/Remove.php:42
|
6139 |
+
msgid "IP address removed successfully."
|
6140 |
msgstr ""
|
6141 |
|
6142 |
+
#: src/lib/src/Modules/IPs/WpCli/Remove.php:43
|
6143 |
+
msgid "IP address couldn't be removed. (It may not be on this list)"
|
6144 |
msgstr ""
|
6145 |
|
6146 |
+
#: src/lib/src/Modules/Insights/Lib/OverviewCards.php:19
|
6147 |
+
msgid "Danger"
|
|
|
|
|
6148 |
msgstr ""
|
6149 |
|
6150 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:33
|
6151 |
+
msgid "NO TITLE"
|
6152 |
msgstr ""
|
6153 |
|
6154 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:91
|
6155 |
+
msgid "Manage IPs"
|
6156 |
msgstr ""
|
6157 |
|
6158 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:97
|
6159 |
+
msgid "Blocking Rules"
|
|
|
|
|
|
|
6160 |
msgstr ""
|
6161 |
|
6162 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:102
|
6163 |
+
msgid "AntiBot Rules"
|
6164 |
msgstr ""
|
6165 |
|
6166 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:109
|
6167 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:145
|
6168 |
+
#, php-format
|
6169 |
+
msgid "Download (%s)"
|
6170 |
msgstr ""
|
6171 |
|
6172 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:115
|
6173 |
+
msgid "IPs & Bots"
|
6174 |
msgstr ""
|
6175 |
|
6176 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:119
|
6177 |
+
msgid ""
|
6178 |
+
"Protection begins by detecting bad bots - Review and Analyse all visitor IPs "
|
6179 |
+
"that have an impact on your site."
|
|
|
|
|
6180 |
msgstr ""
|
6181 |
|
6182 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:134
|
6183 |
+
msgid "View Log"
|
|
|
6184 |
msgstr ""
|
6185 |
|
6186 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:140
|
6187 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:190
|
6188 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:448
|
6189 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:477
|
6190 |
+
msgid "Configure"
|
6191 |
msgstr ""
|
6192 |
|
6193 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:151
|
6194 |
+
msgid "Glossary"
|
6195 |
msgstr ""
|
6196 |
|
6197 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:162
|
6198 |
+
msgid ""
|
6199 |
+
"Track and review all important actions taken on your site - see the Who, "
|
6200 |
+
"What and When."
|
6201 |
msgstr ""
|
6202 |
|
6203 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:184
|
6204 |
+
#: src/lib/src/Modules/Insights/UI.php:195
|
6205 |
+
msgid "Scan Results"
|
6206 |
msgstr ""
|
6207 |
|
6208 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:195
|
6209 |
+
msgid "Guide"
|
|
|
|
|
|
|
|
|
6210 |
msgstr ""
|
6211 |
|
6212 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:203
|
6213 |
+
msgid "Scans"
|
6214 |
msgstr ""
|
6215 |
|
6216 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:207
|
6217 |
+
#, php-format
|
6218 |
+
msgid "Run a %s scan at any time, or view the results from the latest scan."
|
6219 |
msgstr ""
|
6220 |
|
6221 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:219
|
6222 |
+
msgid "Search"
|
|
|
|
|
6223 |
msgstr ""
|
6224 |
|
6225 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:224
|
6226 |
+
msgid "Use Search to find any option within the entire plugin"
|
6227 |
msgstr ""
|
6228 |
|
6229 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:239
|
6230 |
+
#: src/lib/src/Modules/Insights/UI.php:206
|
6231 |
+
msgid "Reports"
|
6232 |
msgstr ""
|
6233 |
|
6234 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:244
|
|
|
6235 |
msgid ""
|
6236 |
+
"Reports use the built-in stats to show you how Shield is working to secure "
|
6237 |
+
"your site."
|
6238 |
msgstr ""
|
6239 |
|
6240 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:249
|
6241 |
+
#: src/lib/src/Modules/Reporting/UI.php:128
|
6242 |
+
msgid "Stats"
|
6243 |
msgstr ""
|
6244 |
|
6245 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:255
|
6246 |
+
msgid "Charts"
|
6247 |
msgstr ""
|
6248 |
|
6249 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:268
|
6250 |
+
msgid "Overview"
|
6251 |
+
msgstr ""
|
6252 |
+
|
6253 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:272
|
6254 |
+
#, php-format
|
6255 |
msgid ""
|
6256 |
+
"Review your entire %s configuration at a glance to see what's working and "
|
6257 |
+
"what's not."
|
6258 |
msgstr ""
|
6259 |
|
6260 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:302
|
6261 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:482
|
6262 |
+
msgid "Config"
|
6263 |
+
msgstr ""
|
6264 |
+
|
6265 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:305
|
6266 |
+
#, php-format
|
6267 |
msgid ""
|
6268 |
+
"%s is a big plugin split into modules, and each with their own options - use "
|
6269 |
+
"these jump-off points to find the specific option you need."
|
6270 |
msgstr ""
|
6271 |
|
6272 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:318
|
6273 |
+
#: src/lib/src/Modules/Integrations/Strings.php:49
|
6274 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:362
|
6275 |
+
msgid "Integrations"
|
6276 |
msgstr ""
|
6277 |
|
6278 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:320
|
6279 |
+
msgid ""
|
6280 |
+
"Integrate with your favourite plugins to block SPAM and manage Shield better."
|
6281 |
msgstr ""
|
6282 |
|
6283 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:325
|
6284 |
+
msgid "Contact Form SPAM"
|
6285 |
msgstr ""
|
6286 |
|
6287 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:330
|
6288 |
+
msgid "Custom Login Forms"
|
6289 |
msgstr ""
|
6290 |
|
6291 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:342
|
6292 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:384
|
6293 |
+
msgid "View Docs"
|
|
|
|
|
6294 |
msgstr ""
|
6295 |
|
6296 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:361
|
6297 |
+
#: src/lib/src/Modules/License/Strings.php:43
|
6298 |
+
msgid "Check License"
|
6299 |
msgstr ""
|
6300 |
|
6301 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:367
|
6302 |
+
#: src/lib/src/Modules/Insights/UI.php:29
|
6303 |
+
#: src/lib/src/Modules/Insights/UI.php:208
|
6304 |
+
msgid "Free Trial"
|
6305 |
msgstr ""
|
6306 |
|
6307 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:374
|
6308 |
+
msgid "ShieldPRO Features"
|
6309 |
msgstr ""
|
6310 |
|
6311 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:382
|
6312 |
+
#: src/lib/src/Modules/Insights/UI.php:204
|
6313 |
+
msgid "ShieldPRO"
|
6314 |
msgstr ""
|
6315 |
|
6316 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:382
|
6317 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:310
|
6318 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:317
|
6319 |
+
msgid "Go PRO!"
|
6320 |
msgstr ""
|
6321 |
|
6322 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:399
|
6323 |
+
#: src/lib/src/Modules/Insights/UI.php:205
|
6324 |
+
msgid "Import / Export"
|
6325 |
msgstr ""
|
6326 |
|
6327 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:410
|
6328 |
+
#: src/lib/src/Modules/Insights/UI.php:202
|
6329 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:330
|
6330 |
+
msgid "Admin Notes"
|
6331 |
msgstr ""
|
6332 |
|
6333 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:416
|
6334 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:391
|
6335 |
+
msgid "Debug Info"
|
6336 |
msgstr ""
|
6337 |
|
6338 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:424
|
6339 |
+
msgid "Tools"
|
6340 |
msgstr ""
|
6341 |
|
6342 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:427
|
6343 |
+
msgid ""
|
6344 |
+
"Important security tools, such a import/export, whitelabel and admin notes."
|
6345 |
msgstr ""
|
6346 |
|
6347 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:442
|
6348 |
+
msgid "View Traffic"
|
6349 |
msgstr ""
|
6350 |
|
6351 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:455
|
6352 |
+
#: src/lib/src/Modules/Insights/UI.php:201
|
6353 |
+
msgid "Traffic"
|
6354 |
msgstr ""
|
6355 |
|
6356 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:458
|
6357 |
+
msgid "Monitor and watch traffic as it hits your site."
|
6358 |
msgstr ""
|
6359 |
|
6360 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:472
|
6361 |
+
msgid "View Sessions"
|
6362 |
msgstr ""
|
6363 |
|
6364 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:482
|
6365 |
+
msgid "Sessions"
|
6366 |
msgstr ""
|
6367 |
|
6368 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:493
|
6369 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:155
|
6370 |
+
msgid "User Suspension"
|
6371 |
msgstr ""
|
6372 |
|
6373 |
+
#: src/lib/src/Modules/Insights/Lib/SideMenuBuilder.php:503
|
6374 |
+
msgid ""
|
6375 |
+
"View sessions, and configure session timeouts and passwords requirements."
|
6376 |
msgstr ""
|
6377 |
|
6378 |
+
#: src/lib/src/Modules/Insights/ModCon.php:70
|
6379 |
+
msgid "Please select an action to perform."
|
|
|
|
|
|
|
|
|
|
|
|
|
6380 |
msgstr ""
|
6381 |
|
6382 |
+
#: src/lib/src/Modules/Insights/ModCon.php:72
|
6383 |
+
msgid "Are you absolutely sure?"
|
|
|
6384 |
msgstr ""
|
6385 |
|
6386 |
+
#: src/lib/src/Modules/Insights/Strings.php:15
|
6387 |
+
#, php-format
|
6388 |
+
msgid "%s Security Insights"
|
6389 |
msgstr ""
|
6390 |
|
6391 |
+
#: src/lib/src/Modules/Insights/UI.php:27
|
6392 |
+
msgid "Updates and Changes"
|
|
|
6393 |
msgstr ""
|
6394 |
|
6395 |
+
#: src/lib/src/Modules/Insights/UI.php:28
|
6396 |
+
msgid "Event Details"
|
6397 |
msgstr ""
|
6398 |
|
6399 |
+
#: src/lib/src/Modules/Insights/UI.php:45
|
6400 |
+
msgid "Click To Filter By Security Area or Status"
|
6401 |
msgstr ""
|
6402 |
|
6403 |
+
#: src/lib/src/Modules/Insights/UI.php:46
|
6404 |
+
msgid "Clear Filter"
|
|
|
|
|
|
|
|
|
|
|
6405 |
msgstr ""
|
6406 |
|
6407 |
+
#: src/lib/src/Modules/Insights/UI.php:191
|
6408 |
+
msgid "Quick Stats"
|
6409 |
msgstr ""
|
6410 |
|
6411 |
+
#: src/lib/src/Modules/Insights/UI.php:192
|
6412 |
+
msgid "Plugin Settings"
|
6413 |
msgstr ""
|
6414 |
|
6415 |
+
#: src/lib/src/Modules/Insights/UI.php:194
|
6416 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:113
|
6417 |
+
msgid "Security Overview"
|
6418 |
msgstr ""
|
6419 |
|
6420 |
+
#: src/lib/src/Modules/Insights/UI.php:196
|
6421 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:135
|
6422 |
+
msgid "Run Scans"
|
6423 |
msgstr ""
|
6424 |
|
6425 |
+
#: src/lib/src/Modules/Insights/UI.php:197
|
6426 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:377
|
6427 |
+
msgid "Docs"
|
6428 |
msgstr ""
|
6429 |
|
6430 |
+
#: src/lib/src/Modules/Insights/UI.php:198
|
6431 |
+
msgid "IP Management and Analysis"
|
6432 |
msgstr ""
|
6433 |
|
6434 |
+
#: src/lib/src/Modules/Insights/UI.php:209
|
6435 |
+
msgid "Wizard"
|
|
|
|
|
|
|
|
|
|
|
6436 |
msgstr ""
|
6437 |
|
6438 |
+
#: src/lib/src/Modules/Insights/UI.php:313
|
6439 |
+
#: src/lib/src/Modules/Insights/UI.php:351
|
6440 |
+
msgid "Release Date"
|
|
|
|
|
6441 |
msgstr ""
|
6442 |
|
6443 |
+
#: src/lib/src/Modules/Insights/UI.php:315
|
6444 |
+
#: src/lib/src/Modules/Insights/UI.php:353
|
6445 |
+
msgid "Full Release Announcement"
|
|
|
|
|
6446 |
msgstr ""
|
6447 |
|
6448 |
+
#: src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/Base.php:30
|
6449 |
+
#, php-format
|
6450 |
+
msgid "This appears to be spam as it failed %s AntiBot protection checks."
|
|
|
6451 |
msgstr ""
|
6452 |
|
6453 |
+
#: src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/FormidableForms.php:15
|
6454 |
+
msgid "Your entry appears to be spam!"
|
|
|
|
|
|
|
6455 |
msgstr ""
|
6456 |
|
6457 |
+
#: src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/KaliForms.php:13
|
6458 |
+
msgid "SPAM Bot detected."
|
|
|
|
|
|
|
|
|
|
|
6459 |
msgstr ""
|
6460 |
|
6461 |
+
#: src/lib/src/Modules/Integrations/Lib/Bots/UserForms/Handlers/Base.php:100
|
6462 |
+
#, php-format
|
6463 |
+
msgid "%s Bot Check Failed."
|
6464 |
msgstr ""
|
6465 |
|
6466 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Client/Actions/ApiActionInit.php:22
|
6467 |
+
msgid "ShieldPRO license verified"
|
|
|
6468 |
msgstr ""
|
6469 |
|
6470 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Client/Actions/ApiActionInit.php:23
|
6471 |
+
msgid "ShieldPRO license couldn't be found"
|
|
|
|
|
6472 |
msgstr ""
|
6473 |
|
6474 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Client/Actions/ApiActionInit.php:35
|
6475 |
+
msgid "MainWP Integration Enabled"
|
|
|
|
|
6476 |
msgstr ""
|
6477 |
|
6478 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Client/Actions/ApiActionInit.php:36
|
6479 |
+
msgid "MainWP Integration couldn't be enabled."
|
|
|
|
|
6480 |
msgstr ""
|
6481 |
|
6482 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/AjaxHandlerMainwp.php:29
|
6483 |
+
#, php-format
|
6484 |
+
msgid "Not a supported MainWP+%s action."
|
6485 |
msgstr ""
|
6486 |
|
6487 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:42
|
6488 |
+
#, php-format
|
6489 |
+
msgid "Failed to activate %s plugin."
|
6490 |
msgstr ""
|
6491 |
|
6492 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:44
|
6493 |
+
#, php-format
|
6494 |
+
msgid "Successfully activated %s plugin."
|
|
|
6495 |
msgstr ""
|
6496 |
|
6497 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:54
|
6498 |
+
#, php-format
|
6499 |
+
msgid "Failed to deactivate %s plugin."
|
6500 |
msgstr ""
|
6501 |
|
6502 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:56
|
6503 |
+
#, php-format
|
6504 |
+
msgid "Successfully deactivated %s plugin."
|
6505 |
msgstr ""
|
6506 |
|
6507 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:66
|
6508 |
+
#, php-format
|
6509 |
+
msgid "Failed to install %s plugin."
|
6510 |
msgstr ""
|
6511 |
|
6512 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:68
|
6513 |
+
#, php-format
|
6514 |
+
msgid "Successfully installed %s plugin."
|
6515 |
msgstr ""
|
6516 |
|
6517 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:102
|
6518 |
+
#, php-format
|
6519 |
+
msgid "Failed to sync with %s plugin."
|
6520 |
msgstr ""
|
6521 |
|
6522 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Ajax/PerformSiteAction.php:104
|
6523 |
+
#, php-format
|
6524 |
+
msgid "Successfully synced with %s plugin."
|
6525 |
msgstr ""
|
6526 |
|
6527 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:94
|
6528 |
+
#: src/lib/src/Modules/License/Strings.php:55
|
6529 |
+
msgid "Active"
|
6530 |
msgstr ""
|
6531 |
|
6532 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:95
|
6533 |
+
msgid "Not Pro"
|
6534 |
msgstr ""
|
6535 |
|
6536 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:96
|
6537 |
+
msgid "MainWP Option Not Enabled"
|
6538 |
msgstr ""
|
6539 |
|
6540 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:97
|
6541 |
+
msgid "Sync Required"
|
6542 |
msgstr ""
|
6543 |
|
6544 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:99
|
6545 |
+
msgid "Not Installed"
|
6546 |
msgstr ""
|
6547 |
|
6548 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:100
|
6549 |
+
msgid "Update Required"
|
6550 |
msgstr ""
|
6551 |
|
6552 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/Data/ClientPluginStatus.php:101
|
6553 |
+
msgid "Ahead Of Server"
|
|
|
|
|
6554 |
msgstr ""
|
6555 |
|
6556 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:80
|
6557 |
+
msgid "Shield plugin is installed, but not active."
|
6558 |
msgstr ""
|
6559 |
|
6560 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:81
|
6561 |
+
msgid ""
|
6562 |
+
"The Shield plugin on this site doesn't have an active ShieldPRO license."
|
|
|
6563 |
msgstr ""
|
6564 |
|
6565 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:82
|
6566 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:113
|
6567 |
+
msgid "Shield's MainWP integration isn't enabled for this site."
|
6568 |
msgstr ""
|
6569 |
|
6570 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:83
|
6571 |
+
msgid "Shield isn't installed on this site."
|
6572 |
msgstr ""
|
6573 |
|
6574 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:84
|
6575 |
+
msgid "Sync Required."
|
6576 |
msgstr ""
|
6577 |
|
6578 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:85
|
6579 |
+
msgid "Shield version on site doesn't match this server."
|
6580 |
msgstr ""
|
6581 |
|
6582 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:86
|
6583 |
+
msgid "Please update your Shield plugins to the same versions and re-sync."
|
6584 |
msgstr ""
|
6585 |
|
6586 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/ManageSites/SitesListTableHandler.php:87
|
6587 |
+
msgid "Issues Found"
|
6588 |
msgstr ""
|
6589 |
|
6590 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/MwpOutOfDate.php:14
|
6591 |
+
msgid "The MainWP Security plugin doesn't meet Shield's minimum requirements."
|
6592 |
msgstr ""
|
6593 |
|
6594 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/MwpOutOfDate.php:15
|
6595 |
+
msgid "Minimum required MainWP server version"
|
6596 |
msgstr ""
|
6597 |
|
6598 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/MwpOutOfDate.php:16
|
6599 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/PluginOutOfDate.php:14
|
6600 |
+
msgid "Go to WordPress Updates"
|
6601 |
msgstr ""
|
6602 |
|
6603 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/NotShieldPro.php:12
|
6604 |
+
msgid ""
|
6605 |
+
"Sorry, the MainWP server integration is available only for ShieldPRO clients."
|
6606 |
msgstr ""
|
6607 |
|
6608 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/NotShieldPro.php:13
|
6609 |
+
msgid "Upgrade To ShieldPRO"
|
6610 |
msgstr ""
|
6611 |
|
6612 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/PluginOutOfDate.php:13
|
6613 |
+
msgid "The Shield Security plugin on this site needs to be upgraded."
|
6614 |
msgstr ""
|
6615 |
|
6616 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:61
|
6617 |
+
msgid "No Issues"
|
6618 |
msgstr ""
|
6619 |
|
6620 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:98
|
6621 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:79
|
6622 |
+
msgid "Actions"
|
6623 |
msgstr ""
|
6624 |
|
6625 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:99
|
6626 |
+
msgid "Site"
|
6627 |
msgstr ""
|
6628 |
|
6629 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:101
|
6630 |
+
msgid "Issues"
|
6631 |
msgstr ""
|
6632 |
|
6633 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:102
|
6634 |
+
#: src/lib/src/Modules/License/Strings.php:56
|
6635 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:60
|
6636 |
+
msgid "Status"
|
6637 |
msgstr ""
|
6638 |
|
6639 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:103
|
6640 |
+
msgid "Last Sync"
|
6641 |
msgstr ""
|
6642 |
|
6643 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:104
|
6644 |
+
msgid "Last Scan"
|
6645 |
msgstr ""
|
6646 |
|
6647 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:106
|
6648 |
+
msgid "Connected"
|
6649 |
msgstr ""
|
6650 |
|
6651 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:107
|
6652 |
+
msgid "Disconnected"
|
6653 |
msgstr ""
|
6654 |
|
6655 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:108
|
6656 |
+
msgid "With Issues"
|
6657 |
msgstr ""
|
6658 |
|
6659 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:109
|
6660 |
+
msgid "Needs Update"
|
6661 |
msgstr ""
|
6662 |
|
6663 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:110
|
6664 |
+
msgid "Shield Security plugin is installed but not activated."
|
6665 |
msgstr ""
|
6666 |
|
6667 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:111
|
6668 |
+
msgid "Shield Security plugin not detected in last sync."
|
6669 |
msgstr ""
|
6670 |
|
6671 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:112
|
6672 |
+
msgid "ShieldPRO isn't activated on this site."
|
|
|
|
|
6673 |
msgstr ""
|
6674 |
|
6675 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:114
|
6676 |
+
msgid "Shield Security plugin needs to sync."
|
6677 |
msgstr ""
|
6678 |
|
6679 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:115
|
6680 |
+
msgid "Shield Security plugin versions are out of sync."
|
6681 |
msgstr ""
|
6682 |
|
6683 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:116
|
6684 |
+
msgid "Couldn't determine Shield plugin status."
|
6685 |
msgstr ""
|
6686 |
|
6687 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:117
|
6688 |
+
msgid "Sync Shield"
|
|
|
|
|
6689 |
msgstr ""
|
6690 |
|
6691 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:118
|
6692 |
+
msgid "Activate Shield"
|
6693 |
msgstr ""
|
6694 |
|
6695 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:119
|
6696 |
+
msgid "Align Shield"
|
6697 |
msgstr ""
|
6698 |
|
6699 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:120
|
6700 |
+
msgid "Deactivate Shield"
|
|
|
6701 |
msgstr ""
|
6702 |
|
6703 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:121
|
6704 |
+
msgid "Install Shield"
|
|
|
6705 |
msgstr ""
|
6706 |
|
6707 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:122
|
6708 |
+
msgid "Upgrade Shield"
|
6709 |
msgstr ""
|
6710 |
|
6711 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:123
|
6712 |
+
msgid "Uninstall Shield"
|
6713 |
msgstr ""
|
6714 |
|
6715 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:124
|
6716 |
+
msgid "Check ShieldPRO License"
|
6717 |
msgstr ""
|
6718 |
|
6719 |
+
#: src/lib/src/Modules/Integrations/Lib/MainWP/Server/UI/PageRender/SitesList.php:125
|
6720 |
+
msgid "Switch-On MainWP Integration"
|
|
|
|
|
6721 |
msgstr ""
|
6722 |
|
6723 |
+
#: src/lib/src/Modules/Integrations/Strings.php:15
|
6724 |
+
msgid "SPAM Check Pass"
|
|
|
6725 |
msgstr ""
|
6726 |
|
6727 |
+
#: src/lib/src/Modules/Integrations/Strings.php:17
|
6728 |
+
msgid "\"{{form_provider}}\" submission passed SPAM check."
|
6729 |
msgstr ""
|
6730 |
|
6731 |
+
#: src/lib/src/Modules/Integrations/Strings.php:21
|
6732 |
+
msgid "SPAM Check Fail"
|
6733 |
msgstr ""
|
6734 |
|
6735 |
+
#: src/lib/src/Modules/Integrations/Strings.php:23
|
6736 |
+
msgid "\"{{form_provider}}\" submission failed SPAM check."
|
6737 |
msgstr ""
|
6738 |
|
6739 |
+
#: src/lib/src/Modules/Integrations/Strings.php:27
|
6740 |
+
msgid "User Bot Check Pass"
|
|
|
|
|
6741 |
msgstr ""
|
6742 |
|
6743 |
+
#: src/lib/src/Modules/Integrations/Strings.php:29
|
6744 |
+
msgid ""
|
6745 |
+
"\"{{form_provider}}\" submission for form \"{{action}}\" with username "
|
6746 |
+
"\"{{username}}\" passed Bot check."
|
6747 |
msgstr ""
|
6748 |
|
6749 |
+
#: src/lib/src/Modules/Integrations/Strings.php:33
|
6750 |
+
msgid "User Bot Check Fail"
|
6751 |
msgstr ""
|
6752 |
|
6753 |
+
#: src/lib/src/Modules/Integrations/Strings.php:35
|
|
|
6754 |
msgid ""
|
6755 |
+
"\"{{form_provider}}\" submission for form \"{{action}}\" with username "
|
6756 |
+
"\"{{username}}\" failed Bot check."
|
6757 |
msgstr ""
|
6758 |
|
6759 |
+
#: src/lib/src/Modules/Integrations/Strings.php:50
|
6760 |
+
msgid "Built-In Shield Integrations"
|
6761 |
msgstr ""
|
6762 |
|
6763 |
+
#: src/lib/src/Modules/Integrations/Strings.php:53
|
6764 |
+
msgid "Shield can automatically integrate with 3rd party plugins."
|
|
|
6765 |
msgstr ""
|
6766 |
|
6767 |
+
#: src/lib/src/Modules/Integrations/Strings.php:55
|
6768 |
+
#: src/lib/src/Modules/Integrations/Strings.php:68
|
6769 |
+
msgid "Only enable the integrations you require."
|
6770 |
msgstr ""
|
6771 |
|
6772 |
+
#: src/lib/src/Modules/Integrations/Strings.php:60
|
6773 |
+
#: src/lib/src/Modules/Integrations/Strings.php:61
|
6774 |
+
msgid "User Forms Bot Checking"
|
6775 |
+
msgstr ""
|
6776 |
+
|
6777 |
+
#: src/lib/src/Modules/Integrations/Strings.php:64
|
6778 |
msgid ""
|
6779 |
+
"Shield can automatically protect 3rd party login and registration forms "
|
6780 |
+
"against Bots."
|
6781 |
msgstr ""
|
6782 |
|
6783 |
+
#: src/lib/src/Modules/Integrations/Strings.php:65
|
6784 |
+
msgid ""
|
6785 |
+
"It uses our exclusive AntiBot Detection Engine to reliably identify bots."
|
6786 |
msgstr ""
|
6787 |
|
6788 |
+
#: src/lib/src/Modules/Integrations/Strings.php:69
|
6789 |
+
msgid "WordPress is always enabled."
|
6790 |
msgstr ""
|
6791 |
|
6792 |
+
#: src/lib/src/Modules/Integrations/Strings.php:95
|
6793 |
+
msgid ""
|
6794 |
+
"Turn-On Shield's Built-In Extension For MainWP Server And Client "
|
6795 |
+
"Installations"
|
6796 |
msgstr ""
|
6797 |
|
6798 |
+
#: src/lib/src/Modules/Integrations/Strings.php:97
|
6799 |
+
#: src/lib/src/Modules/Integrations/Strings.php:109
|
6800 |
+
msgid "This is a ShieldPRO-only feature."
|
6801 |
msgstr ""
|
6802 |
|
6803 |
+
#: src/lib/src/Modules/Integrations/Strings.php:98
|
6804 |
+
msgid ""
|
6805 |
+
"Easily integrate Shield Security to help you manage your site security from "
|
6806 |
+
"within MainWP."
|
6807 |
msgstr ""
|
6808 |
|
6809 |
+
#: src/lib/src/Modules/Integrations/Strings.php:99
|
6810 |
+
msgid "You don't need to install a separate extension for MainWP."
|
6811 |
msgstr ""
|
6812 |
|
6813 |
+
#: src/lib/src/Modules/Integrations/Strings.php:101
|
6814 |
+
msgid ""
|
6815 |
+
"If this is a MainWP client site, you should add your MainWP Admin Server's "
|
6816 |
+
"IP address to your IP bypass list."
|
6817 |
msgstr ""
|
6818 |
|
6819 |
+
#: src/lib/src/Modules/Integrations/Strings.php:106
|
6820 |
+
msgid "User Forms Bot Detection"
|
6821 |
msgstr ""
|
6822 |
|
6823 |
+
#: src/lib/src/Modules/Integrations/Strings.php:107
|
6824 |
+
msgid "Select The User Forms Provider That You Use"
|
6825 |
msgstr ""
|
6826 |
|
6827 |
+
#: src/lib/src/Modules/Integrations/Strings.php:110
|
6828 |
+
msgid ""
|
6829 |
+
"Many 3rd party plugins provide custom user login, registration, and lost "
|
6830 |
+
"password forms."
|
6831 |
msgstr ""
|
6832 |
|
6833 |
+
#: src/lib/src/Modules/Integrations/Strings.php:111
|
6834 |
+
msgid ""
|
6835 |
+
"They aren't normally checked for Bots since they require a custom "
|
6836 |
+
"integration."
|
6837 |
msgstr ""
|
6838 |
|
6839 |
+
#: src/lib/src/Modules/Integrations/Strings.php:112
|
6840 |
msgid ""
|
6841 |
+
"Select your 3rd party providers to have Shield automatically detect Bot "
|
6842 |
+
"requests to these forms."
|
6843 |
msgstr ""
|
6844 |
|
6845 |
+
#: src/lib/src/Modules/Integrations/Strings.php:114
|
6846 |
+
msgid ""
|
6847 |
+
"Only the form types (login, registration, lost password), that you have "
|
6848 |
+
"selected in the Login Guard module will be checked."
|
6849 |
msgstr ""
|
6850 |
|
6851 |
+
#: src/lib/src/Modules/Integrations/Strings.php:117
|
6852 |
+
#, php-format
|
6853 |
+
msgid "Choose the types of forms you want %s to check"
|
6854 |
msgstr ""
|
6855 |
|
6856 |
+
#: src/lib/src/Modules/Integrations/UI.php:20
|
6857 |
+
#: src/lib/src/Modules/Plugin/Strings.php:444
|
6858 |
+
msgid "Login"
|
|
|
6859 |
msgstr ""
|
6860 |
|
6861 |
+
#: src/lib/src/Modules/Integrations/UI.php:21
|
6862 |
+
msgid "Registration"
|
6863 |
msgstr ""
|
6864 |
|
6865 |
+
#: src/lib/src/Modules/Integrations/UI.php:22
|
6866 |
+
#: src/lib/src/Modules/Plugin/Strings.php:446
|
6867 |
+
msgid "Lost Password"
|
6868 |
msgstr ""
|
6869 |
|
6870 |
+
#: src/lib/src/Modules/Integrations/UI.php:23
|
6871 |
+
msgid "Checkout"
|
6872 |
msgstr ""
|
6873 |
|
6874 |
+
#: src/lib/src/Modules/Integrations/UI.php:28
|
6875 |
+
msgid "None"
|
6876 |
+
msgstr ""
|
6877 |
+
|
6878 |
+
#: src/lib/src/Modules/Integrations/UI.php:36
|
6879 |
+
#, php-format
|
6880 |
msgid ""
|
6881 |
+
"The following types of user forms are protected by AntiBot Detection: %s."
|
|
|
6882 |
msgstr ""
|
6883 |
|
6884 |
+
#: src/lib/src/Modules/Integrations/UI.php:41
|
6885 |
+
#: src/lib/src/Modules/Integrations/UI.php:65
|
6886 |
+
msgid "Click here to review those settings."
|
6887 |
msgstr ""
|
6888 |
|
6889 |
+
#: src/lib/src/Modules/Integrations/UI.php:62
|
6890 |
msgid ""
|
6891 |
+
"Use of the AntiBot Detection Engine for user forms isn't turned on in the "
|
6892 |
+
"Login Guard module."
|
6893 |
msgstr ""
|
6894 |
|
6895 |
+
#: src/lib/src/Modules/Integrations/UI.php:88
|
6896 |
+
#, php-format
|
6897 |
msgid ""
|
6898 |
+
"%s has an integration available to protect the forms of a 3rd party plugin "
|
6899 |
+
"you're using: %s"
|
6900 |
msgstr ""
|
6901 |
|
6902 |
+
#: src/lib/src/Modules/License/AdminNotices.php:29
|
6903 |
+
#, php-format
|
6904 |
+
msgid "%s API Token Missing"
|
6905 |
msgstr ""
|
6906 |
|
6907 |
+
#: src/lib/src/Modules/License/AdminNotices.php:31
|
6908 |
msgid ""
|
6909 |
+
"This site appears to be activated for PRO, but there's been a problem "
|
6910 |
+
"obtaining an API token for WPHashes.com."
|
6911 |
msgstr ""
|
6912 |
|
6913 |
+
#: src/lib/src/Modules/License/AdminNotices.php:33
|
6914 |
msgid ""
|
6915 |
+
"The WPHashes API is used for many premium features including Malware "
|
6916 |
+
"scanning."
|
6917 |
msgstr ""
|
6918 |
|
6919 |
+
#: src/lib/src/Modules/License/AdminNotices.php:34
|
6920 |
+
msgid ""
|
6921 |
+
"Without a valid API Token, certain Premium features wont work as expected."
|
|
|
6922 |
msgstr ""
|
6923 |
|
6924 |
+
#: src/lib/src/Modules/License/AdminNotices.php:36
|
6925 |
msgid ""
|
6926 |
+
"Please contact us in our support channel if this doesn't sound right, or "
|
6927 |
+
"upgrade to PRO."
|
6928 |
msgstr ""
|
6929 |
|
6930 |
+
#: src/lib/src/Modules/License/AdminNotices.php:38
|
6931 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:141
|
6932 |
+
msgid "Click to jump to the relevant option"
|
6933 |
msgstr ""
|
6934 |
|
6935 |
+
#: src/lib/src/Modules/License/AjaxHandler.php:72
|
6936 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestCapture.php:139
|
6937 |
+
msgid "Success"
|
6938 |
msgstr ""
|
6939 |
|
6940 |
+
#: src/lib/src/Modules/License/AjaxHandler.php:81
|
6941 |
+
#, php-format
|
6942 |
+
msgid "Please wait %s before attempting another license check."
|
6943 |
msgstr ""
|
6944 |
|
6945 |
+
#: src/lib/src/Modules/License/AjaxHandler.php:82
|
6946 |
#, php-format
|
6947 |
+
msgid "%s second"
|
6948 |
+
msgid_plural "%s seconds"
|
6949 |
+
msgstr[0] ""
|
6950 |
+
msgstr[1] ""
|
6951 |
+
|
6952 |
+
#: src/lib/src/Modules/License/AjaxHandler.php:89
|
6953 |
+
msgid "Valid license found."
|
6954 |
msgstr ""
|
6955 |
|
6956 |
+
#: src/lib/src/Modules/License/AjaxHandler.php:89
|
6957 |
+
#: src/lib/src/Modules/License/WpCli/License.php:106
|
6958 |
+
msgid "Valid license couldn't be found."
|
6959 |
msgstr ""
|
6960 |
|
6961 |
+
#: src/lib/src/Modules/License/Lib/LicenseEmails.php:31
|
6962 |
+
msgid "Attempts to verify Shield Pro license has just failed."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6963 |
msgstr ""
|
6964 |
|
6965 |
+
#: src/lib/src/Modules/License/Lib/LicenseEmails.php:32
|
6966 |
+
#: src/lib/src/Modules/License/Lib/LicenseEmails.php:59
|
6967 |
#, php-format
|
6968 |
+
msgid "Please check your license on-site: %s"
|
6969 |
msgstr ""
|
6970 |
|
6971 |
+
#: src/lib/src/Modules/License/Lib/LicenseEmails.php:33
|
6972 |
+
#: src/lib/src/Modules/License/Lib/LicenseEmails.php:60
|
6973 |
#, php-format
|
6974 |
+
msgid "If this problem persists, please contact support: %s"
|
6975 |
msgstr ""
|
6976 |
|
6977 |
+
#: src/lib/src/Modules/License/Lib/LicenseEmails.php:58
|
6978 |
+
msgid "All attempts to verify Shield Pro license have failed."
|
6979 |
msgstr ""
|
6980 |
|
6981 |
+
#: src/lib/src/Modules/License/Lib/Verify.php:53
|
6982 |
+
msgid ""
|
6983 |
+
"The most recent request to verify the site license encountered a problem."
|
6984 |
msgstr ""
|
6985 |
|
6986 |
+
#: src/lib/src/Modules/License/Strings.php:15
|
6987 |
+
msgid "License Check Success"
|
6988 |
msgstr ""
|
6989 |
|
6990 |
+
#: src/lib/src/Modules/License/Strings.php:17
|
6991 |
+
msgid "License check succeeded."
|
6992 |
msgstr ""
|
6993 |
|
6994 |
+
#: src/lib/src/Modules/License/Strings.php:21
|
6995 |
+
msgid "License Failure Email Sent"
|
6996 |
msgstr ""
|
6997 |
|
6998 |
+
#: src/lib/src/Modules/License/Strings.php:23
|
6999 |
+
msgid "License check failed. Sending Warning Email."
|
7000 |
msgstr ""
|
7001 |
|
7002 |
+
#: src/lib/src/Modules/License/Strings.php:27
|
7003 |
+
msgid "License Deactivated"
|
|
|
|
|
|
|
7004 |
msgstr ""
|
7005 |
|
7006 |
+
#: src/lib/src/Modules/License/Strings.php:29
|
7007 |
+
msgid "License check failed. Deactivating Pro."
|
|
|
7008 |
msgstr ""
|
7009 |
|
7010 |
+
#: src/lib/src/Modules/License/Strings.php:40
|
7011 |
+
msgid "License Summary"
|
7012 |
msgstr ""
|
7013 |
|
7014 |
+
#: src/lib/src/Modules/License/Strings.php:41
|
7015 |
+
msgid "License Activation"
|
7016 |
msgstr ""
|
7017 |
|
7018 |
+
#: src/lib/src/Modules/License/Strings.php:42
|
7019 |
+
msgid "Check License Availability For This Site"
|
7020 |
msgstr ""
|
7021 |
|
7022 |
+
#: src/lib/src/Modules/License/Strings.php:44
|
7023 |
+
msgid "Clear License Status"
|
7024 |
msgstr ""
|
7025 |
|
7026 |
+
#: src/lib/src/Modules/License/Strings.php:45
|
7027 |
+
msgid "URL To Activate"
|
7028 |
msgstr ""
|
7029 |
|
7030 |
+
#: src/lib/src/Modules/License/Strings.php:47
|
7031 |
+
#, php-format
|
7032 |
+
msgid "Activate this site URL in your %s control panel"
|
7033 |
msgstr ""
|
7034 |
|
7035 |
+
#: src/lib/src/Modules/License/Strings.php:48
|
7036 |
+
msgid "Keyless Activation"
|
7037 |
msgstr ""
|
7038 |
|
7039 |
+
#: src/lib/src/Modules/License/Strings.php:50
|
7040 |
+
#, php-format
|
7041 |
+
msgid "Licenses may be checked once every %s seconds"
|
7042 |
msgstr ""
|
7043 |
|
7044 |
+
#: src/lib/src/Modules/License/Strings.php:51
|
7045 |
+
msgid "more frequent checks will be ignored"
|
7046 |
msgstr ""
|
7047 |
|
7048 |
+
#: src/lib/src/Modules/License/Strings.php:52
|
7049 |
+
msgid "In case of activation problems, click the link"
|
|
|
7050 |
msgstr ""
|
7051 |
|
7052 |
+
#: src/lib/src/Modules/License/Strings.php:57
|
7053 |
+
msgid "Key"
|
7054 |
msgstr ""
|
7055 |
|
7056 |
+
#: src/lib/src/Modules/License/Strings.php:58
|
7057 |
+
msgid "Expires"
|
7058 |
msgstr ""
|
7059 |
|
7060 |
+
#: src/lib/src/Modules/License/Strings.php:59
|
7061 |
+
msgid "Owner"
|
|
|
7062 |
msgstr ""
|
7063 |
|
7064 |
+
#: src/lib/src/Modules/License/Strings.php:60
|
7065 |
+
msgid "Checked"
|
|
|
|
|
7066 |
msgstr ""
|
7067 |
|
7068 |
+
#: src/lib/src/Modules/License/Strings.php:61
|
7069 |
+
#: src/lib/src/Modules/Reporting/AjaxHandler.php:48 src/wizards/base.php:202
|
7070 |
+
#: src/wizards/base.php:238
|
7071 |
+
msgid "Error"
|
7072 |
msgstr ""
|
7073 |
|
7074 |
+
#: src/lib/src/Modules/License/UI.php:45 src/lib/src/Modules/License/UI.php:51
|
7075 |
+
msgid "✔"
|
7076 |
msgstr ""
|
7077 |
|
7078 |
+
#: src/lib/src/Modules/License/UI.php:45 src/lib/src/Modules/License/UI.php:51
|
7079 |
+
msgid "✖"
|
7080 |
msgstr ""
|
7081 |
|
7082 |
+
#: src/lib/src/Modules/License/WpCli/License.php:66
|
7083 |
+
msgid "No license to remove."
|
|
|
7084 |
msgstr ""
|
7085 |
|
7086 |
+
#: src/lib/src/Modules/License/WpCli/License.php:70
|
7087 |
+
msgid "Are you sure you want to remove the ShieldPRO license?"
|
|
|
7088 |
msgstr ""
|
7089 |
|
7090 |
+
#: src/lib/src/Modules/License/WpCli/License.php:75
|
7091 |
+
msgid "License removed successfully."
|
|
|
7092 |
msgstr ""
|
7093 |
|
7094 |
+
#: src/lib/src/Modules/License/WpCli/License.php:86
|
7095 |
+
msgid "Active license found."
|
|
|
|
|
7096 |
msgstr ""
|
7097 |
|
7098 |
+
#: src/lib/src/Modules/License/WpCli/License.php:87
|
7099 |
+
msgid "No active license present."
|
|
|
7100 |
msgstr ""
|
7101 |
|
7102 |
+
#: src/lib/src/Modules/License/WpCli/License.php:105
|
7103 |
+
msgid "Valid license found and installed."
|
|
|
7104 |
msgstr ""
|
7105 |
|
7106 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:22
|
7107 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:31
|
7108 |
+
msgid "File Editing via WP"
|
7109 |
msgstr ""
|
7110 |
|
7111 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:24
|
7112 |
+
msgid "File editing from within WordPress admin is disabled"
|
|
|
7113 |
msgstr ""
|
7114 |
|
7115 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:34
|
7116 |
+
msgid "File editing is allowed even though you've switched it off"
|
|
|
|
|
7117 |
msgstr ""
|
7118 |
|
7119 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:35
|
7120 |
+
msgid "File editing from within the WP admin should be disabled"
|
7121 |
msgstr ""
|
7122 |
|
7123 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:38
|
7124 |
+
msgid "Another plugin or theme is interfering with this setting."
|
7125 |
msgstr ""
|
7126 |
|
7127 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:39
|
7128 |
+
msgid "WP Plugin file editing should be disabled wherever possible."
|
7129 |
msgstr ""
|
7130 |
|
7131 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:48
|
7132 |
+
msgid "XML-RPC is disabled"
|
7133 |
msgstr ""
|
7134 |
|
7135 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:49
|
7136 |
+
msgid "XML-RPC access is allowed"
|
7137 |
msgstr ""
|
7138 |
|
7139 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:55
|
7140 |
+
msgid "REST API"
|
|
|
|
|
7141 |
msgstr ""
|
7142 |
|
7143 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:58
|
7144 |
+
msgid "Anonymous REST API is disabled"
|
|
|
|
|
7145 |
msgstr ""
|
7146 |
|
7147 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:59
|
7148 |
+
msgid "Anonymous REST API is allowed"
|
7149 |
+
msgstr ""
|
7150 |
+
|
7151 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:68
|
7152 |
+
msgid "WordPress Lockdown"
|
7153 |
+
msgstr ""
|
7154 |
+
|
7155 |
+
#: src/lib/src/Modules/Lockdown/Insights/OverviewCards.php:72
|
7156 |
+
msgid "Restrict WP Functionality e.g. XMLRPC & REST API"
|
7157 |
msgstr ""
|
7158 |
|
7159 |
+
#: src/lib/src/Modules/Lockdown/Processor.php:98
|
7160 |
+
#, php-format
|
7161 |
msgid ""
|
7162 |
+
"The \"author\" query parameter has been blocked by %s to protect against "
|
7163 |
+
"user login name fishing."
|
7164 |
msgstr ""
|
7165 |
|
7166 |
+
#: src/lib/src/Modules/Lockdown/Processor.php:101
|
7167 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:28
|
7168 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:245
|
7169 |
+
msgid "Learn More."
|
7170 |
msgstr ""
|
7171 |
|
7172 |
+
#: src/lib/src/Modules/Lockdown/Processor.php:126
|
7173 |
+
#, php-format
|
7174 |
+
msgid "Anonymous access to the WordPress Rest API has been restricted by %s."
|
7175 |
msgstr ""
|
7176 |
|
7177 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:15
|
7178 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:21
|
7179 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:183
|
7180 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:16
|
7181 |
+
msgid "Blocked"
|
7182 |
msgstr ""
|
7183 |
|
7184 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:15
|
7185 |
+
msgid "Anonymous REST API"
|
|
|
7186 |
msgstr ""
|
7187 |
|
7188 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:17
|
7189 |
+
msgid "Blocked Anonymous API Access through \"{{namespace}}\" namespace."
|
7190 |
msgstr ""
|
7191 |
|
7192 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:23
|
7193 |
+
msgid "XML-RPC Request Blocked."
|
|
|
7194 |
msgstr ""
|
7195 |
|
7196 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:43
|
7197 |
msgid ""
|
7198 |
+
"Lockdown helps secure-up certain loosely-controlled WordPress settings on "
|
7199 |
+
"your site."
|
7200 |
msgstr ""
|
7201 |
|
7202 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:44
|
7203 |
+
msgid "Lockdown"
|
7204 |
msgstr ""
|
7205 |
|
7206 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:49
|
7207 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:54
|
7208 |
+
msgid "API & XML-RPC"
|
7209 |
msgstr ""
|
7210 |
|
7211 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:51
|
7212 |
+
msgid "Lockdown certain core WordPress system features."
|
7213 |
msgstr ""
|
7214 |
|
7215 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:52
|
7216 |
+
msgid ""
|
7217 |
+
"This depends on your usage and needs for certain WordPress functions and "
|
7218 |
+
"features."
|
7219 |
msgstr ""
|
7220 |
|
7221 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:58
|
7222 |
+
msgid "Permissions and Access Options"
|
7223 |
msgstr ""
|
7224 |
|
7225 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:60
|
7226 |
+
msgid "Provides finer control of certain WordPress permissions."
|
7227 |
msgstr ""
|
7228 |
|
7229 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:61
|
7230 |
+
msgid "Only enable SSL if you have a valid certificate installed."
|
7231 |
msgstr ""
|
7232 |
|
7233 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:63
|
7234 |
+
msgid "Permissions"
|
|
|
7235 |
msgstr ""
|
7236 |
|
7237 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:67
|
7238 |
+
msgid "WordPress Obscurity Options"
|
7239 |
msgstr ""
|
7240 |
|
7241 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:69
|
7242 |
+
msgid "Obscures certain WordPress settings from public view."
|
7243 |
msgstr ""
|
7244 |
|
7245 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:70
|
7246 |
+
msgid ""
|
7247 |
+
"Obscurity is not true security and so these settings are down to your "
|
7248 |
+
"personal tastes."
|
7249 |
msgstr ""
|
7250 |
|
7251 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:72
|
7252 |
+
msgid "Obscurity"
|
7253 |
msgstr ""
|
7254 |
|
7255 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:102
|
7256 |
+
#: src/lib/src/Modules/Plugin/Strings.php:134
|
7257 |
+
#, php-format
|
7258 |
+
msgid "Disable %s"
|
7259 |
msgstr ""
|
7260 |
|
7261 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:103
|
7262 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:109
|
7263 |
+
#, php-format
|
7264 |
+
msgid "Disable The %s System"
|
7265 |
msgstr ""
|
7266 |
|
7267 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:104
|
7268 |
+
#, php-format
|
7269 |
+
msgid "Checking this option will completely turn off the whole %s system."
|
7270 |
msgstr ""
|
7271 |
|
7272 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:108
|
7273 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:109
|
7274 |
+
msgid "Anonymous Rest API"
|
7275 |
msgstr ""
|
7276 |
|
7277 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:111
|
7278 |
+
msgid "You can completely disable anonymous access to the REST API."
|
|
|
|
|
7279 |
msgstr ""
|
7280 |
|
7281 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:112
|
7282 |
+
msgid ""
|
7283 |
+
"Enabling this option may break plugins that use the REST API for your site "
|
7284 |
+
"visitors."
|
7285 |
msgstr ""
|
7286 |
|
7287 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:113
|
7288 |
+
msgid ""
|
7289 |
+
"Use the exclusions option to allow anonymous access to specific API "
|
7290 |
+
"endpoints."
|
7291 |
msgstr ""
|
7292 |
|
7293 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:118
|
7294 |
+
msgid "Rest API Exclusions"
|
7295 |
msgstr ""
|
7296 |
|
7297 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:119
|
7298 |
+
msgid "Anonymous REST API Exclusions"
|
7299 |
msgstr ""
|
7300 |
|
7301 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:121
|
7302 |
msgid ""
|
7303 |
+
"These REST API namespaces will be excluded from the Anonymous API "
|
7304 |
+
"restriction."
|
7305 |
msgstr ""
|
7306 |
|
7307 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:122
|
7308 |
#, php-format
|
7309 |
+
msgid ""
|
7310 |
+
"Some plugins (e.g. %s) use the REST API anonymously so you need to provide "
|
7311 |
+
"exclusions for them to work correctly."
|
7312 |
msgstr ""
|
7313 |
|
7314 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:124
|
7315 |
+
msgid ""
|
7316 |
+
"Please contact the developer of a plugin to ask them for their REST API "
|
7317 |
+
"namespace if you need it."
|
7318 |
msgstr ""
|
7319 |
|
7320 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:125
|
7321 |
+
msgid "Some common namespaces"
|
|
|
|
|
7322 |
msgstr ""
|
7323 |
|
7324 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:141
|
7325 |
+
msgid "Disable File Editing"
|
7326 |
msgstr ""
|
7327 |
|
7328 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:142
|
7329 |
+
msgid "Disable Ability To Edit Files From Within WordPress"
|
7330 |
msgstr ""
|
7331 |
|
7332 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:144
|
7333 |
msgid ""
|
7334 |
+
"Removes the option to directly edit any files from within the WordPress "
|
7335 |
+
"admin area."
|
7336 |
msgstr ""
|
7337 |
|
7338 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:145
|
7339 |
+
msgid "Equivalent to setting \"DISALLOW_FILE_EDIT\" to TRUE."
|
7340 |
msgstr ""
|
7341 |
|
7342 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:150
|
7343 |
+
msgid "Force SSL Admin"
|
|
|
|
|
7344 |
msgstr ""
|
7345 |
|
7346 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:151
|
7347 |
+
msgid "Forces WordPress Admin Dashboard To Be Delivered Over SSL"
|
|
|
7348 |
msgstr ""
|
7349 |
|
7350 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:153
|
7351 |
+
msgid ""
|
7352 |
+
"Please only enable this option if you have a valid SSL certificate installed."
|
7353 |
msgstr ""
|
7354 |
|
7355 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:154
|
7356 |
+
msgid "Equivalent to setting \"FORCE_SSL_ADMIN\" to TRUE."
|
7357 |
msgstr ""
|
7358 |
|
7359 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:159
|
7360 |
+
msgid "WP Generator Tag"
|
7361 |
msgstr ""
|
7362 |
|
7363 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:160
|
7364 |
+
msgid "Remove WP Generator Meta Tag"
|
7365 |
msgstr ""
|
7366 |
|
7367 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:161
|
7368 |
msgid ""
|
7369 |
+
"Remove a meta tag from your WordPress pages that publicly displays that your "
|
7370 |
+
"site is WordPress and its current version."
|
7371 |
msgstr ""
|
7372 |
|
7373 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:165
|
7374 |
+
msgid "Clean WP Files"
|
7375 |
msgstr ""
|
7376 |
|
7377 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:166
|
7378 |
+
msgid "Automatically Delete Unnecessary WP Files"
|
7379 |
msgstr ""
|
7380 |
|
7381 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:168
|
7382 |
+
msgid "Automatically delete WordPress files that aren't necessary."
|
7383 |
msgstr ""
|
7384 |
|
7385 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:169
|
7386 |
+
msgid "The cleanup process runs once each day."
|
|
|
|
|
7387 |
msgstr ""
|
7388 |
|
7389 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:170
|
7390 |
+
msgid "Files Deleted"
|
7391 |
msgstr ""
|
7392 |
|
7393 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:176
|
7394 |
+
msgid "Block Username Fishing"
|
|
|
|
|
7395 |
msgstr ""
|
7396 |
|
7397 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:177
|
7398 |
+
msgid "Block the ability to discover WordPress usernames based on author IDs"
|
7399 |
msgstr ""
|
7400 |
|
7401 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:179
|
7402 |
+
#, php-format
|
7403 |
+
msgid "When enabled, any URL requests containing \"%s\" will be killed."
|
7404 |
msgstr ""
|
7405 |
|
7406 |
+
#: src/lib/src/Modules/Lockdown/Strings.php:180
|
7407 |
msgid ""
|
7408 |
+
"Enabling this option may interfere with expected operations of your site."
|
7409 |
+
msgstr ""
|
7410 |
+
|
7411 |
+
#: src/lib/src/Modules/LoginGuard/AdminNotices.php:35
|
7412 |
+
msgid "Please verify email has been received"
|
7413 |
msgstr ""
|
7414 |
|
7415 |
+
#: src/lib/src/Modules/LoginGuard/AdminNotices.php:36
|
7416 |
msgid ""
|
7417 |
+
"Before we can activate email 2-factor authentication, we need you to confirm "
|
7418 |
+
"your website can send emails."
|
7419 |
msgstr ""
|
7420 |
|
7421 |
+
#: src/lib/src/Modules/LoginGuard/AdminNotices.php:37
|
7422 |
+
msgid "Please click the link in the email you received."
|
7423 |
msgstr ""
|
7424 |
|
7425 |
+
#: src/lib/src/Modules/LoginGuard/AdminNotices.php:39
|
7426 |
+
#, php-format
|
7427 |
+
msgid "The email has been sent to you at blog admin address: %s"
|
7428 |
msgstr ""
|
7429 |
|
7430 |
+
#: src/lib/src/Modules/LoginGuard/AdminNotices.php:42
|
7431 |
+
msgid "Resend verification email"
|
7432 |
msgstr ""
|
7433 |
|
7434 |
+
#: src/lib/src/Modules/LoginGuard/AdminNotices.php:43
|
7435 |
+
msgid "Disable 2FA by email"
|
7436 |
msgstr ""
|
7437 |
|
7438 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:135
|
7439 |
+
msgid "Multi-factor login backup code has been removed from your profile"
|
7440 |
msgstr ""
|
7441 |
|
7442 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:139
|
7443 |
+
msgid "Your backup login codes have been deleted."
|
7444 |
msgstr ""
|
7445 |
|
7446 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:173
|
7447 |
+
msgid "Email 2FA activated."
|
7448 |
msgstr ""
|
7449 |
|
7450 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:174
|
7451 |
+
msgid "Email 2FA deactivated."
|
7452 |
msgstr ""
|
7453 |
|
7454 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:177
|
7455 |
+
msgid "Email 2FA settings couldn't be changed."
|
7456 |
msgstr ""
|
7457 |
|
7458 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:193
|
7459 |
+
msgid "2FA by email has been disabled"
|
|
|
|
|
7460 |
msgstr ""
|
7461 |
|
7462 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:208
|
7463 |
+
msgid "U2F registration details were missing in the request."
|
7464 |
msgstr ""
|
7465 |
|
7466 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:236
|
7467 |
+
msgid "Either the country code or phone number were missing."
|
|
|
|
|
7468 |
msgstr ""
|
7469 |
|
7470 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:241
|
7471 |
+
msgid "The country code was missing."
|
|
|
|
|
7472 |
msgstr ""
|
7473 |
|
7474 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:244
|
7475 |
+
msgid "The phone number was missing."
|
|
|
|
|
|
|
|
|
|
|
|
|
7476 |
msgstr ""
|
7477 |
|
7478 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:251
|
7479 |
+
msgid "Please confirm the 6-digit code sent to your phone."
|
7480 |
msgstr ""
|
7481 |
|
7482 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:278
|
7483 |
+
msgid "SMS Registration Removed"
|
7484 |
msgstr ""
|
7485 |
|
7486 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:304
|
7487 |
+
msgid "One-Time Password was sent to your registered email address."
|
|
|
|
|
7488 |
msgstr ""
|
7489 |
|
7490 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:305
|
7491 |
+
msgid "There was a problem sending the One-Time Password email."
|
7492 |
msgstr ""
|
7493 |
|
7494 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:320
|
7495 |
+
msgid "One-Time Password was sent to your phone."
|
7496 |
msgstr ""
|
7497 |
|
7498 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:347
|
7499 |
+
msgid "SMS Verification Failed."
|
|
|
|
|
7500 |
msgstr ""
|
7501 |
|
7502 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:352
|
7503 |
+
msgid "The code provided was empty."
|
|
|
|
|
|
|
7504 |
msgstr ""
|
7505 |
|
7506 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:355
|
7507 |
+
msgid "The data provided was inconsistent."
|
7508 |
msgstr ""
|
7509 |
|
7510 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:361
|
7511 |
+
msgid ""
|
7512 |
+
"Phone verified and registered successfully for SMS Two-Factor Authentication."
|
7513 |
msgstr ""
|
7514 |
|
7515 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:393
|
7516 |
+
msgid "Registered U2F device removed from profile."
|
7517 |
msgstr ""
|
7518 |
|
7519 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:423
|
7520 |
+
msgid "Email 2FA option is not currently enabled."
|
7521 |
msgstr ""
|
7522 |
|
7523 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:427
|
7524 |
+
msgid "Email sending has already been verified."
|
7525 |
msgstr ""
|
7526 |
|
7527 |
+
#: src/lib/src/Modules/LoginGuard/AjaxHandler.php:430
|
7528 |
+
msgid "Verification email resent."
|
7529 |
msgstr ""
|
7530 |
|
7531 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:26
|
7532 |
+
msgid "Brute Force Login"
|
7533 |
msgstr ""
|
7534 |
|
7535 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:29
|
7536 |
+
msgid "Login forms are protected against bot attacks"
|
|
|
|
|
7537 |
msgstr ""
|
7538 |
|
7539 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:30
|
7540 |
+
msgid "Login forms aren't protected against brute force bot attacks"
|
7541 |
msgstr ""
|
7542 |
|
7543 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:34
|
7544 |
+
msgid "Bot User Register"
|
7545 |
msgstr ""
|
7546 |
|
7547 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:37
|
7548 |
+
msgid "Registration forms are protected against bot attacks"
|
7549 |
msgstr ""
|
7550 |
|
7551 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:38
|
7552 |
+
msgid "Registration forms aren't protected against automated bots"
|
7553 |
msgstr ""
|
7554 |
|
7555 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:42
|
7556 |
+
msgid "Brute Force Lost Password"
|
7557 |
msgstr ""
|
7558 |
|
7559 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:45
|
7560 |
+
msgid "Lost Password forms are protected against bot attacks"
|
7561 |
msgstr ""
|
7562 |
|
7563 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:46
|
7564 |
+
msgid "Lost Password forms aren't protected against automated bots"
|
|
|
7565 |
msgstr ""
|
7566 |
|
7567 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:53
|
7568 |
+
msgid "Identity Verification"
|
7569 |
msgstr ""
|
7570 |
|
7571 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:56
|
7572 |
+
msgid "At least one 2FA option is available"
|
7573 |
msgstr ""
|
7574 |
|
7575 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:57
|
7576 |
+
msgid "No 2FA options, such as Google Authenticator, are active."
|
7577 |
msgstr ""
|
7578 |
|
7579 |
+
#: src/lib/src/Modules/LoginGuard/Insights/OverviewCards.php:70
|
7580 |
+
msgid "Brute Force Protection & Identity Verification"
|
7581 |
msgstr ""
|
7582 |
|
7583 |
+
#: src/lib/src/Modules/LoginGuard/Lib/AntiBot/ProtectionProviders/AntiBot.php:22
|
7584 |
+
msgid "Failed AntiBot Test"
|
7585 |
msgstr ""
|
7586 |
|
7587 |
+
#: src/lib/src/Modules/LoginGuard/Lib/AntiBot/ProtectionProviders/CoolDown.php:21
|
7588 |
+
msgid "Request Cooldown in effect."
|
7589 |
msgstr ""
|
7590 |
|
7591 |
+
#: src/lib/src/Modules/LoginGuard/Lib/AntiBot/ProtectionProviders/CoolDown.php:23
|
7592 |
+
#, php-format
|
7593 |
+
msgid "You must wait %s seconds before attempting this action again."
|
7594 |
msgstr ""
|
7595 |
|
7596 |
+
#: src/lib/src/Modules/LoginGuard/Lib/AntiBot/ProtectionProviders/GaspJs.php:89
|
7597 |
+
msgid "Please check that box to say you're human, and not a bot."
|
|
|
|
|
7598 |
msgstr ""
|
7599 |
|
7600 |
+
#: src/lib/src/Modules/LoginGuard/Lib/AntiBot/ProtectionProviders/GaspJs.php:101
|
7601 |
+
msgid "You appear to be a bot."
|
7602 |
msgstr ""
|
7603 |
|
7604 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:80
|
7605 |
+
msgid ""
|
7606 |
+
"Your login URL is unchanged because the Rename WP Login feature is not "
|
7607 |
+
"currently supported on WPMS."
|
7608 |
msgstr ""
|
7609 |
|
7610 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:84
|
7611 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:88
|
7612 |
+
#, php-format
|
7613 |
msgid ""
|
7614 |
+
"Can not use the Rename WP Login feature because you have the \"%s\" plugin "
|
7615 |
+
"installed and it is active."
|
7616 |
msgstr ""
|
7617 |
|
7618 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:92
|
7619 |
+
#, php-format
|
7620 |
msgid ""
|
7621 |
+
"Can not use the Rename WP Login feature because you have not enabled %s."
|
|
|
7622 |
msgstr ""
|
7623 |
|
7624 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:92
|
7625 |
+
msgid "Permalinks"
|
7626 |
+
msgstr ""
|
7627 |
+
|
7628 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:96
|
7629 |
+
#, php-format
|
7630 |
msgid ""
|
7631 |
+
"Can not use the Rename WP Login feature because you have chosen a path (\"%s"
|
7632 |
+
"\") that is already used on your WordPress site."
|
7633 |
msgstr ""
|
7634 |
|
7635 |
+
#: src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php:121
|
7636 |
msgid ""
|
7637 |
+
"Your login URL is unchanged because your current hosting/PHP configuration "
|
7638 |
+
"cannot parse the necessary information."
|
7639 |
msgstr ""
|
7640 |
|
7641 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestCapture.php:74
|
7642 |
+
msgid "Could not verify your 2FA codes"
|
7643 |
msgstr ""
|
7644 |
|
7645 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestCapture.php:134
|
7646 |
+
msgid "2FA authentication verified successfully."
|
7647 |
+
msgstr ""
|
7648 |
+
|
7649 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestCapture.php:139
|
7650 |
+
msgid "Thank you for authenticating your login."
|
7651 |
msgstr ""
|
7652 |
|
7653 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestCapture.php:141
|
7654 |
+
msgid "If you used your Backup Code, you will need to reset it."
|
|
|
|
|
7655 |
msgstr ""
|
7656 |
|
7657 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaController.php:49
|
7658 |
+
msgid "Too many 2FA verification attempts - please login again."
|
|
|
7659 |
msgstr ""
|
7660 |
|
7661 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaController.php:53
|
7662 |
+
msgid "No 2FA login intent found - your login may have expired."
|
|
|
|
|
7663 |
msgstr ""
|
7664 |
|
7665 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaController.php:57
|
7666 |
+
msgid "No 2FA login providers found."
|
7667 |
msgstr ""
|
7668 |
|
7669 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaController.php:154
|
7670 |
+
#, php-format
|
7671 |
+
msgid "All MFA providers removed from user with ID %s."
|
|
|
|
|
|
|
|
|
7672 |
msgstr ""
|
7673 |
|
7674 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaController.php:159
|
7675 |
+
#, php-format
|
7676 |
+
msgid "User doesn't exist with ID %s."
|
|
|
7677 |
msgstr ""
|
7678 |
|
7679 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:66
|
7680 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:67
|
7681 |
+
msgid "My Login Security"
|
7682 |
msgstr ""
|
7683 |
|
7684 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:163
|
7685 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:198
|
7686 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:95
|
7687 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:197
|
7688 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:142
|
7689 |
+
msgid "Multi-Factor Authentication"
|
7690 |
msgstr ""
|
7691 |
|
7692 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:164
|
7693 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:199
|
7694 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:42
|
7695 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:133
|
7696 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:61
|
7697 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php:175
|
7698 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:44
|
7699 |
+
#, php-format
|
7700 |
+
msgid "Provided by %s"
|
7701 |
msgstr ""
|
7702 |
|
7703 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:200
|
7704 |
+
msgid "Currently active MFA Providers on this profile are"
|
|
|
|
|
7705 |
msgstr ""
|
7706 |
|
7707 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:201
|
7708 |
+
msgid "Remove All MFA Providers"
|
|
|
|
|
7709 |
msgstr ""
|
7710 |
|
7711 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:202
|
7712 |
+
msgid "Remove All MFA Providers From This User Profile"
|
7713 |
msgstr ""
|
7714 |
|
7715 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:203
|
7716 |
+
msgid "Certain providers may not be removed if they're enforced."
|
7717 |
msgstr ""
|
7718 |
|
7719 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:204
|
7720 |
+
msgid "There are no MFA providers active on this user account."
|
7721 |
msgstr ""
|
7722 |
|
7723 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:205
|
7724 |
+
#, php-format
|
7725 |
msgid ""
|
7726 |
+
"Only %s Security Admins may modify the MFA settings of another admin account."
|
|
|
7727 |
msgstr ""
|
7728 |
|
7729 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php:207
|
7730 |
+
#, php-format
|
7731 |
+
msgid "You may authenticate with the %s Security Admin system and return here."
|
|
|
|
|
|
|
7732 |
msgstr ""
|
7733 |
|
7734 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Profiles/RenderCustomForms.php:26
|
7735 |
+
#, php-format
|
7736 |
+
msgid "%s MFA Options"
|
7737 |
msgstr ""
|
7738 |
|
7739 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Profiles/RenderCustomForms.php:55
|
7740 |
+
msgid "Not currently logged-in."
|
7741 |
msgstr ""
|
7742 |
|
7743 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Profiles/RenderCustomForms.php:56
|
7744 |
+
msgid "There are currently no 2FA providers available on your account."
|
|
|
|
|
7745 |
msgstr ""
|
7746 |
|
7747 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:29
|
7748 |
+
msgid "Generate ONE-Time Backup 2FA Login Code"
|
|
|
|
|
7749 |
msgstr ""
|
7750 |
|
7751 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:30
|
7752 |
+
msgid "Delete Login Backup Code"
|
7753 |
msgstr ""
|
7754 |
|
7755 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:31
|
7756 |
+
msgid ""
|
7757 |
+
"Backup login codes are not available if you do not have any other two-factor "
|
7758 |
+
"authentication modes active."
|
7759 |
msgstr ""
|
7760 |
|
7761 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:32
|
7762 |
msgid ""
|
7763 |
+
"Click to generate a backup login code for your two-factor authentication."
|
|
|
7764 |
msgstr ""
|
7765 |
|
7766 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:35
|
7767 |
+
msgid ""
|
7768 |
+
"This code will be displayed only once and you may use it to verify your "
|
7769 |
+
"login only once."
|
7770 |
msgstr ""
|
7771 |
|
7772 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:36
|
7773 |
+
msgid "Store it somewhere safe."
|
7774 |
msgstr ""
|
7775 |
|
7776 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:37
|
7777 |
+
msgid "Generating a new code will replace your existing code."
|
7778 |
msgstr ""
|
7779 |
|
7780 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:38
|
7781 |
+
msgid "Create Backup 2FA Login Code"
|
|
|
|
|
7782 |
msgstr ""
|
7783 |
|
7784 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:39
|
7785 |
+
msgid "Backup Login Code"
|
7786 |
msgstr ""
|
7787 |
|
7788 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:40
|
7789 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:59
|
7790 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:42
|
7791 |
+
#, php-format
|
7792 |
+
msgid "Sorry, %s may not be added to another user's account."
|
7793 |
msgstr ""
|
7794 |
|
7795 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:41
|
7796 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:60
|
7797 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:43
|
7798 |
+
#, php-format
|
7799 |
msgid ""
|
7800 |
+
"Sorry, %s may only be removed from another user's account by a Security "
|
7801 |
+
"Administrator."
|
7802 |
msgstr ""
|
7803 |
|
7804 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:41
|
7805 |
+
msgid "Backup Codes"
|
7806 |
msgstr ""
|
7807 |
|
7808 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:44
|
7809 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:62
|
7810 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:46
|
7811 |
+
msgid "Understand how to remove Google Authenticator"
|
7812 |
msgstr ""
|
7813 |
|
7814 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:55
|
7815 |
+
msgid "Please use your Backup Code to login."
|
7816 |
msgstr ""
|
7817 |
|
7818 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:56
|
7819 |
+
msgid "Login Backup Code"
|
|
|
7820 |
msgstr ""
|
7821 |
|
7822 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:108
|
7823 |
+
msgid "Backup Login Code Just Used"
|
7824 |
msgstr ""
|
7825 |
|
7826 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:110
|
7827 |
+
msgid ""
|
7828 |
+
"This is a quick notice to inform you that your Backup Login code was just "
|
7829 |
+
"used."
|
7830 |
msgstr ""
|
7831 |
|
7832 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:111
|
7833 |
+
msgid "Your WordPress account had only 1 backup login code."
|
7834 |
msgstr ""
|
7835 |
|
7836 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:112
|
7837 |
msgid ""
|
7838 |
+
"You must go to your profile and regenerate a new code if you want to use "
|
7839 |
+
"this method again."
|
7840 |
msgstr ""
|
7841 |
|
7842 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:114
|
7843 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:105
|
7844 |
+
msgid "Login Details"
|
7845 |
msgstr ""
|
7846 |
|
7847 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php:119
|
7848 |
+
msgid "Thank You."
|
7849 |
msgstr ""
|
7850 |
|
7851 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BaseProvider.php:152
|
7852 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BaseProvider.php:220
|
7853 |
+
msgid "This setting is enforced by your security administrator."
|
7854 |
msgstr ""
|
7855 |
|
7856 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:39
|
7857 |
+
msgid "A1B2C3"
|
7858 |
msgstr ""
|
7859 |
|
7860 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:40
|
7861 |
+
msgid "Email OTP"
|
7862 |
msgstr ""
|
7863 |
|
7864 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:41
|
7865 |
+
msgid "Enter code sent to your email"
|
|
|
|
|
7866 |
msgstr ""
|
7867 |
|
7868 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:49
|
7869 |
+
msgid "Send OTP Code"
|
7870 |
msgstr ""
|
7871 |
|
7872 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:89
|
7873 |
+
msgid "Two-Factor Login Verification"
|
7874 |
msgstr ""
|
7875 |
|
7876 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:101
|
7877 |
+
msgid "Someone attempted to login into this WordPress site using your account."
|
7878 |
msgstr ""
|
7879 |
|
7880 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:102
|
7881 |
+
msgid "Login requires verification with the following code."
|
7882 |
msgstr ""
|
7883 |
|
7884 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:103
|
7885 |
+
msgid "Verification Code"
|
7886 |
msgstr ""
|
7887 |
|
7888 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:104
|
7889 |
+
msgid "Why no login link?"
|
7890 |
msgstr ""
|
7891 |
|
7892 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:130
|
7893 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:131
|
7894 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:242
|
7895 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:254
|
7896 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:257
|
7897 |
+
msgid "Email Authentication"
|
7898 |
msgstr ""
|
7899 |
|
7900 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php:132
|
7901 |
+
msgid "Toggle the option to enable/disable email-based login authentication."
|
7902 |
msgstr ""
|
7903 |
|
7904 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:49
|
7905 |
+
msgid "Enter 6-digit Code from App"
|
|
|
7906 |
msgstr ""
|
7907 |
|
7908 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:50
|
7909 |
+
msgid "Provide the current code generated by your Google Authenticator app."
|
|
|
7910 |
msgstr ""
|
7911 |
|
7912 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:51
|
7913 |
+
msgid ""
|
7914 |
+
"Use your Google Authenticator app to scan this QR code and enter the 6-digit "
|
7915 |
+
"one time password."
|
7916 |
msgstr ""
|
7917 |
|
7918 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:52
|
7919 |
msgid ""
|
7920 |
+
"If you have a problem with scanning the QR code enter the long code manually "
|
7921 |
+
"into the app."
|
7922 |
msgstr ""
|
7923 |
|
7924 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:53
|
7925 |
+
msgid "Click to immediately remove Google Authenticator login authentication."
|
|
|
7926 |
msgstr ""
|
7927 |
|
7928 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:54
|
|
|
7929 |
#, php-format
|
7930 |
+
msgid "Remove %s"
|
7931 |
msgstr ""
|
7932 |
|
7933 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:54
|
7934 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:58
|
7935 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:60
|
7936 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:123
|
7937 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:236
|
7938 |
+
msgid "Google Authenticator"
|
7939 |
msgstr ""
|
7940 |
|
7941 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:55
|
7942 |
+
msgid "Google Authenticator Code"
|
7943 |
msgstr ""
|
7944 |
|
7945 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:56
|
7946 |
+
msgid "Manual Code"
|
7947 |
msgstr ""
|
7948 |
|
7949 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:57
|
7950 |
+
msgid "Scan This QR Code"
|
7951 |
msgstr ""
|
7952 |
|
7953 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:63
|
7954 |
+
msgid "Remove Google Authenticator"
|
7955 |
msgstr ""
|
7956 |
|
7957 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:112
|
7958 |
+
msgid "Google Authenticator was successfully removed from the account."
|
7959 |
msgstr ""
|
7960 |
|
7961 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:122
|
7962 |
+
#, php-format
|
7963 |
+
msgid "%s was successfully added to your account."
|
7964 |
msgstr ""
|
7965 |
|
7966 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:128
|
7967 |
+
msgid "One Time Password (OTP) was not valid."
|
7968 |
msgstr ""
|
7969 |
|
7970 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:129
|
7971 |
+
msgid "Please try again."
|
7972 |
msgstr ""
|
7973 |
|
7974 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:140
|
7975 |
+
msgid "123456"
|
7976 |
msgstr ""
|
7977 |
|
7978 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:141
|
7979 |
+
msgid "Authenticator OTP"
|
7980 |
msgstr ""
|
7981 |
|
7982 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php:142
|
7983 |
+
msgid "Enter 6-digit code from your authenticator app"
|
7984 |
msgstr ""
|
7985 |
|
7986 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php:170
|
7987 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php:171
|
7988 |
+
msgid "SMS Authentication"
|
7989 |
msgstr ""
|
7990 |
|
7991 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php:172
|
7992 |
+
msgid "Provide Your Full Mobile Telephone Number"
|
7993 |
msgstr ""
|
7994 |
|
7995 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php:173
|
7996 |
msgid ""
|
7997 |
+
"Verifying your number will send an SMS to your phone with a verification "
|
7998 |
+
"code."
|
7999 |
msgstr ""
|
8000 |
|
8001 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php:174
|
8002 |
+
msgid ""
|
8003 |
+
"This will consume your SMS credits, if available, just as with any standard "
|
8004 |
+
"2FA SMS."
|
8005 |
msgstr ""
|
8006 |
|
8007 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php:177
|
8008 |
+
msgid "Registered Mobile Number"
|
8009 |
msgstr ""
|
8010 |
|
8011 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:33
|
8012 |
+
msgid "U2F Security Key registration is not supported in this browser"
|
8013 |
msgstr ""
|
8014 |
|
8015 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:34
|
8016 |
+
msgid "Key registration failed."
|
8017 |
msgstr ""
|
8018 |
|
8019 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:35
|
8020 |
+
msgid "Perhaps the device isn't supported, or you've already registered it."
|
|
|
|
|
8021 |
msgstr ""
|
8022 |
|
8023 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:36
|
8024 |
+
msgid "Please retry or refresh the page."
|
|
|
8025 |
msgstr ""
|
8026 |
|
8027 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:37
|
8028 |
+
msgid "Key registration was successful."
|
|
|
|
|
8029 |
msgstr ""
|
8030 |
|
8031 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:38
|
8032 |
+
msgid "Please now save your profile settings."
|
|
|
|
|
|
|
8033 |
msgstr ""
|
8034 |
|
8035 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:39
|
8036 |
+
msgid "Please provide a label to identify the new U2F device."
|
8037 |
msgstr ""
|
8038 |
|
8039 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:40
|
8040 |
+
msgid "Device registration may not proceed without a unique label."
|
8041 |
msgstr ""
|
8042 |
|
8043 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:41
|
8044 |
msgid ""
|
8045 |
+
"Device label must contain letters, numbers, underscore, or hypen, and be no "
|
8046 |
+
"more than 16 characters."
|
8047 |
msgstr ""
|
8048 |
|
8049 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:61
|
8050 |
+
msgid "Start U2F Auth"
|
|
|
|
|
8051 |
msgstr ""
|
8052 |
|
8053 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:145
|
8054 |
+
msgid "U2F"
|
8055 |
msgstr ""
|
8056 |
|
8057 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:146
|
8058 |
+
msgid "Register A New U2F Security Key"
|
8059 |
msgstr ""
|
8060 |
|
8061 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:147
|
8062 |
+
msgid "Click To Register A U2F Device."
|
8063 |
msgstr ""
|
8064 |
|
8065 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:156
|
8066 |
+
msgid "Used"
|
|
|
|
|
8067 |
msgstr ""
|
8068 |
|
8069 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:212
|
8070 |
+
msgid "U2F Device was successfully registered on your profile."
|
|
|
|
|
8071 |
msgstr ""
|
8072 |
|
8073 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php:217
|
8074 |
+
#, php-format
|
8075 |
+
msgid "U2F Device registration failed with the following error: %s"
|
|
|
8076 |
msgstr ""
|
8077 |
|
8078 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:30
|
8079 |
+
msgid "Registered Yubikey devices"
|
|
|
|
|
8080 |
msgstr ""
|
8081 |
|
8082 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:31
|
8083 |
+
msgid "There are no registered Yubikey devices on this profile."
|
8084 |
msgstr ""
|
8085 |
|
8086 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:32
|
8087 |
+
msgid "Enter One Time Password From Yubikey"
|
8088 |
msgstr ""
|
8089 |
|
8090 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:33
|
8091 |
msgid ""
|
8092 |
+
"To register a new Yubikey device, enter a One Time Password from the Yubikey."
|
|
|
8093 |
msgstr ""
|
8094 |
|
8095 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:34
|
8096 |
+
msgid "To remove a Yubikey device, enter the registered device ID and save."
|
8097 |
msgstr ""
|
8098 |
|
8099 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:36
|
8100 |
+
msgid "You may add as many Yubikey devices to your profile as you need to."
|
8101 |
msgstr ""
|
8102 |
|
8103 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:37
|
8104 |
+
msgid "This is your unique Yubikey Device ID."
|
|
|
|
|
8105 |
msgstr ""
|
8106 |
|
8107 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:38
|
8108 |
+
msgid "Provide a One Time Password from your Yubikey."
|
8109 |
msgstr ""
|
8110 |
|
8111 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:39
|
8112 |
+
msgid "Yubikey ID"
|
|
|
8113 |
msgstr ""
|
8114 |
|
8115 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:40
|
8116 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:161
|
8117 |
+
msgid "Yubikey OTP"
|
8118 |
+
msgstr ""
|
8119 |
+
|
8120 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:41
|
8121 |
+
msgid "Yubikey Authentication"
|
8122 |
+
msgstr ""
|
8123 |
+
|
8124 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:43
|
8125 |
+
msgid "Yubikey"
|
8126 |
+
msgstr ""
|
8127 |
+
|
8128 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:126
|
8129 |
#, php-format
|
8130 |
+
msgid "%s was removed from your profile."
|
|
|
|
|
8131 |
msgstr ""
|
8132 |
|
8133 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:127
|
8134 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:139
|
8135 |
+
msgid "Yubikey Device"
|
|
|
8136 |
msgstr ""
|
8137 |
|
8138 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:138
|
8139 |
#, php-format
|
8140 |
+
msgid "%s was added to your profile."
|
8141 |
msgstr ""
|
8142 |
|
8143 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php:162
|
8144 |
+
msgid "Use your Yubikey to generate a new code"
|
8145 |
msgstr ""
|
8146 |
|
8147 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:55
|
8148 |
+
msgid "Cancel Login"
|
8149 |
msgstr ""
|
8150 |
|
8151 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:56
|
8152 |
+
msgid "Time Remaining"
|
8153 |
msgstr ""
|
8154 |
|
8155 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:57
|
8156 |
+
msgid "Calculating"
|
|
|
|
|
8157 |
msgstr ""
|
8158 |
|
8159 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:58
|
8160 |
+
msgid "Seconds"
|
|
|
|
|
8161 |
msgstr ""
|
8162 |
|
8163 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:59
|
8164 |
+
msgid "Login Expired"
|
8165 |
msgstr ""
|
8166 |
|
8167 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:60
|
8168 |
+
msgid "Verify My Login"
|
8169 |
msgstr ""
|
8170 |
|
8171 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:62
|
8172 |
+
#, php-format
|
8173 |
+
msgid "Remember me for %s"
|
8174 |
msgstr ""
|
8175 |
|
8176 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php:63
|
8177 |
+
#, php-format
|
8178 |
+
msgid "%s day"
|
8179 |
+
msgid_plural "%s days"
|
8180 |
+
msgstr[0] ""
|
8181 |
+
msgstr[1] ""
|
8182 |
+
|
8183 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderLoginIntentPage.php:24
|
8184 |
+
msgid "What is this?"
|
8185 |
msgstr ""
|
8186 |
|
8187 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderLoginIntentPage.php:25
|
8188 |
+
#, php-format
|
8189 |
+
msgid "%s Login Verification"
|
8190 |
msgstr ""
|
8191 |
|
8192 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderLoginIntentPage.php:77
|
8193 |
+
msgid "Please supply at least 1 authentication code"
|
8194 |
msgstr ""
|
8195 |
|
8196 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php:24
|
8197 |
+
msgid "Login 2FA Verification"
|
8198 |
msgstr ""
|
8199 |
|
8200 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php:70
|
8201 |
+
msgid "Go Back Home"
|
8202 |
msgstr ""
|
8203 |
|
8204 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php:71
|
8205 |
+
msgid "Complete Login"
|
|
|
|
|
8206 |
msgstr ""
|
8207 |
|
8208 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php:117
|
8209 |
+
#, php-format
|
8210 |
+
msgid "%1$s ‹ %2$s — WordPress"
|
8211 |
msgstr ""
|
8212 |
|
8213 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php:149
|
8214 |
+
msgid "https://wordpress.org/"
|
8215 |
msgstr ""
|
8216 |
|
8217 |
+
#: src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php:162
|
8218 |
+
msgid "Powered by WordPress"
|
8219 |
msgstr ""
|
8220 |
|
8221 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:114
|
8222 |
+
msgid "Email verification completed successfully."
|
|
|
|
|
8223 |
msgstr ""
|
8224 |
|
8225 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:118
|
8226 |
+
msgid "Email verification could not be completed."
|
8227 |
msgstr ""
|
8228 |
|
8229 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:138
|
8230 |
+
msgid ""
|
8231 |
+
"Before enabling 2-factor email authentication for your WordPress site, you "
|
8232 |
+
"must verify you can receive this email."
|
8233 |
msgstr ""
|
8234 |
|
8235 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:139
|
8236 |
msgid ""
|
8237 |
+
"This verifies your website can send email and that your account can receive "
|
8238 |
+
"emails sent from your site."
|
8239 |
msgstr ""
|
8240 |
|
8241 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:145
|
8242 |
+
#, php-format
|
8243 |
+
msgid "Click the verify link: %s"
|
|
|
8244 |
msgstr ""
|
8245 |
|
8246 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:150
|
8247 |
+
#, php-format
|
8248 |
+
msgid "Here's your code for the guided wizard: %s"
|
|
|
8249 |
msgstr ""
|
8250 |
|
8251 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:156
|
8252 |
+
msgid "Email Sending Verification"
|
8253 |
msgstr ""
|
8254 |
|
8255 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:248
|
8256 |
+
msgid "I'm a human."
|
8257 |
msgstr ""
|
8258 |
|
8259 |
+
#: src/lib/src/Modules/LoginGuard/ModCon.php:252
|
8260 |
+
msgid "Please check the box to show us you're a human."
|
|
|
|
|
8261 |
msgstr ""
|
8262 |
|
8263 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:16
|
8264 |
+
msgid "BotBox Fail"
|
8265 |
msgstr ""
|
8266 |
|
8267 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:18
|
8268 |
+
msgid ""
|
8269 |
+
"User \"{{user_login}}\" attempted \"{{action}}\" but Bot checkbox was not "
|
8270 |
+
"found."
|
8271 |
msgstr ""
|
8272 |
|
8273 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:22
|
8274 |
+
msgid "Cooldown Fail"
|
8275 |
msgstr ""
|
8276 |
|
8277 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:24
|
8278 |
+
msgid "Login/Register request triggered cooldown and was blocked."
|
8279 |
msgstr ""
|
8280 |
|
8281 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:28
|
8282 |
+
msgid "Honeypot Fail"
|
8283 |
msgstr ""
|
8284 |
|
8285 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:30
|
8286 |
msgid ""
|
8287 |
+
"User \"{{user_login}}\" attempted {{action}} but they were caught by the "
|
8288 |
+
"honeypot."
|
8289 |
msgstr ""
|
8290 |
|
8291 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:34
|
8292 |
+
msgid "2FA Login Success"
|
8293 |
msgstr ""
|
8294 |
|
8295 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:36
|
8296 |
+
msgid "Successful 2FA Login Verification"
|
|
|
|
|
8297 |
msgstr ""
|
8298 |
|
8299 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:40
|
8300 |
+
msgid "2FA Verify Success"
|
8301 |
msgstr ""
|
8302 |
|
8303 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:42
|
8304 |
+
msgid "User \"{{user_login}}\" verified their identity using \"{{method}}\"."
|
8305 |
msgstr ""
|
8306 |
|
8307 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:46
|
8308 |
+
msgid "2FA Verify Fail"
|
8309 |
msgstr ""
|
8310 |
|
8311 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:48
|
8312 |
+
msgid ""
|
8313 |
+
"User \"{{user_login}}\" failed to verify their identity using \"{{method}}\"."
|
8314 |
msgstr ""
|
8315 |
|
8316 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:52
|
8317 |
+
msgid "Login Blocked"
|
|
|
8318 |
msgstr ""
|
8319 |
|
8320 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:54
|
8321 |
+
msgid "Login Blocked."
|
8322 |
msgstr ""
|
8323 |
|
8324 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:58
|
8325 |
+
msgid "Hidden Login URL Fail"
|
|
|
8326 |
msgstr ""
|
8327 |
|
8328 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:60
|
8329 |
+
msgid "Redirecting wp-login due to hidden login URL"
|
|
|
8330 |
msgstr ""
|
8331 |
|
8332 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:80
|
8333 |
+
msgid ""
|
8334 |
+
"Login Guard blocks all automated and brute force attempts to log in to your "
|
8335 |
+
"site."
|
8336 |
msgstr ""
|
8337 |
|
8338 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:86
|
8339 |
+
msgid "Hide WordPress Login Page"
|
|
|
8340 |
msgstr ""
|
8341 |
|
8342 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:87
|
8343 |
+
msgid "Hide Login"
|
|
|
8344 |
msgstr ""
|
8345 |
|
8346 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:89
|
8347 |
+
msgid ""
|
8348 |
+
"To hide your wp-login.php page from brute force attacks and hacking attempts "
|
8349 |
+
"- if your login page cannot be found, no-one can login."
|
8350 |
msgstr ""
|
8351 |
|
8352 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:90
|
8353 |
+
msgid ""
|
8354 |
+
"This is not required for complete security and if your site has irregular or "
|
8355 |
+
"inconsistent configuration it may not work for you."
|
8356 |
msgstr ""
|
8357 |
|
8358 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:96
|
8359 |
+
msgid "Multi-Factor Auth"
|
|
|
8360 |
msgstr ""
|
8361 |
|
8362 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:98
|
8363 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:139
|
8364 |
+
msgid ""
|
8365 |
+
"Verifies the identity of users who log in to your site - i.e. they are who "
|
8366 |
+
"they say they are."
|
8367 |
msgstr ""
|
8368 |
|
8369 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:99
|
8370 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:109
|
8371 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:118
|
8372 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:136
|
8373 |
+
msgid "You may combine multiple authentication factors for increased security."
|
8374 |
msgstr ""
|
8375 |
|
8376 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:104
|
8377 |
+
msgid "Email Two-Factor Authentication"
|
8378 |
msgstr ""
|
8379 |
|
8380 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:105
|
8381 |
+
msgid "2FA Email"
|
8382 |
msgstr ""
|
8383 |
|
8384 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:107
|
8385 |
+
msgid ""
|
8386 |
+
"Verifies the identity of users who log in to your site using email-based one-"
|
8387 |
+
"time-passwords."
|
8388 |
msgstr ""
|
8389 |
|
8390 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:108
|
8391 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:140
|
8392 |
+
msgid "However, if your host blocks email sending you may lock yourself out."
|
8393 |
msgstr ""
|
8394 |
|
8395 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:114
|
8396 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:115
|
8397 |
+
msgid "One-Time Passwords"
|
8398 |
msgstr ""
|
8399 |
|
8400 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:117
|
8401 |
+
msgid ""
|
8402 |
+
"Verifies the identity of users who log in to your site using Google "
|
8403 |
+
"Authenticator one-time-passwords."
|
8404 |
msgstr ""
|
8405 |
|
8406 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:123
|
8407 |
+
msgid "Brute Force Login Protection"
|
8408 |
msgstr ""
|
8409 |
|
8410 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:124
|
8411 |
+
msgid "Bots"
|
8412 |
msgstr ""
|
8413 |
|
8414 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:126
|
8415 |
+
msgid ""
|
8416 |
+
"Blocks brute force hacking attacks against your login and registration pages."
|
8417 |
msgstr ""
|
8418 |
|
8419 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:132
|
8420 |
+
msgid "Hardware 2-Factor Authentication"
|
8421 |
msgstr ""
|
8422 |
|
8423 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:133
|
8424 |
+
msgid "Hardware 2FA"
|
8425 |
msgstr ""
|
8426 |
|
8427 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:135
|
8428 |
+
msgid ""
|
8429 |
+
"Verifies the identity of users who log in to your site using Yubikey one-"
|
8430 |
+
"time-passwords."
|
8431 |
msgstr ""
|
8432 |
|
8433 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:171
|
8434 |
+
msgid "Hide WP Login & Admin"
|
8435 |
msgstr ""
|
8436 |
|
8437 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:172
|
8438 |
+
msgid "Hide The WordPress Login And Admin Areas"
|
8439 |
msgstr ""
|
8440 |
|
8441 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:174
|
8442 |
+
msgid "Creating a path here will disable your wp-login.php"
|
8443 |
msgstr ""
|
8444 |
|
8445 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:175
|
8446 |
+
#, php-format
|
8447 |
+
msgid "Only letters and numbers are permitted: %s"
|
8448 |
msgstr ""
|
8449 |
|
8450 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:176
|
8451 |
+
#, php-format
|
8452 |
+
msgid "Your current login URL is: %s"
|
8453 |
msgstr ""
|
8454 |
|
8455 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:181
|
8456 |
+
msgid "WP Login & Admin Redirect"
|
8457 |
msgstr ""
|
8458 |
|
8459 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:182
|
8460 |
+
msgid "Automatic Redirect URL For Hidden Pages"
|
8461 |
msgstr ""
|
8462 |
|
8463 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:184
|
8464 |
+
msgid "Automatically redirect requests to this location for the hidden pages."
|
8465 |
msgstr ""
|
8466 |
|
8467 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:187
|
8468 |
+
msgid "Leave this blank to serve a standard \"404 Not Found\" error page."
|
8469 |
msgstr ""
|
8470 |
|
8471 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:191
|
8472 |
+
#, php-format
|
8473 |
+
msgid "Use relative paths e.g. %s redirects to your homepage."
|
8474 |
msgstr ""
|
8475 |
|
8476 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:198
|
8477 |
+
msgid "Require All Active Authentication Factors"
|
8478 |
msgstr ""
|
8479 |
|
8480 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:199
|
8481 |
+
msgid ""
|
8482 |
+
"When enabled, all multi-factor authentication methods will be applied to a "
|
8483 |
+
"user login. Disable to require only one to login."
|
8484 |
msgstr ""
|
8485 |
|
8486 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:203
|
8487 |
+
msgid "MFA Verification Page"
|
8488 |
msgstr ""
|
8489 |
|
8490 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:204
|
8491 |
+
msgid "Type Of MFA Verification Page"
|
8492 |
msgstr ""
|
8493 |
|
8494 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:206
|
8495 |
+
msgid "Choose the type of page provided to users for MFA verification."
|
8496 |
msgstr ""
|
8497 |
|
8498 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:208
|
8499 |
+
msgid ""
|
8500 |
+
"Choose the Custom Shield page if there are conflicts or issues with the WP "
|
8501 |
+
"Login page for 2FA."
|
8502 |
msgstr ""
|
8503 |
|
8504 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:210
|
8505 |
+
msgid "WP Login page option is only available for WordPress v4.0 and above."
|
8506 |
msgstr ""
|
8507 |
|
8508 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:215
|
8509 |
+
msgid "User 2FA Setup"
|
8510 |
msgstr ""
|
8511 |
|
8512 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:216
|
8513 |
+
msgid "User 2FA Setup Page Locations"
|
8514 |
msgstr ""
|
8515 |
|
8516 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:218
|
8517 |
+
msgid "Specify pages available to users to configure 2FA on their account."
|
8518 |
msgstr ""
|
8519 |
|
8520 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:219
|
8521 |
+
msgid ""
|
8522 |
+
"At least 1 option must be provided and defaults to the user profile page "
|
8523 |
+
"within the WP admin area."
|
8524 |
msgstr ""
|
8525 |
|
8526 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:224
|
8527 |
+
msgid "2FA Remember Me"
|
8528 |
msgstr ""
|
8529 |
|
8530 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:225
|
8531 |
+
msgid "A User Can Bypass 2FA For The Set Number Of Days"
|
8532 |
msgstr ""
|
8533 |
|
8534 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:226
|
8535 |
+
msgid ""
|
8536 |
+
"Enter the number of days a user can bypass future MFA after a successful MFA-"
|
8537 |
+
"login. 0 to disable."
|
8538 |
msgstr ""
|
8539 |
|
8540 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:230
|
8541 |
+
msgid "Allow Backup Codes"
|
8542 |
msgstr ""
|
8543 |
|
8544 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:231
|
8545 |
+
msgid "Allow Users To Generate A Backup Code"
|
|
|
8546 |
msgstr ""
|
8547 |
|
8548 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:232
|
8549 |
+
msgid ""
|
8550 |
+
"Allow users to generate a backup code that can be used to login if MFA "
|
8551 |
+
"factors are unavailable."
|
8552 |
msgstr ""
|
8553 |
|
8554 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:237
|
8555 |
+
msgid "Allow Users To Use Google Authenticator"
|
8556 |
msgstr ""
|
8557 |
|
8558 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:238
|
8559 |
+
msgid ""
|
8560 |
+
"When enabled, users will have the option to add Google Authenticator to "
|
8561 |
+
"their WordPress user profile"
|
8562 |
msgstr ""
|
8563 |
|
8564 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:243
|
8565 |
#, php-format
|
8566 |
+
msgid "Two-Factor Login Authentication By %s"
|
8567 |
msgstr ""
|
8568 |
|
8569 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:243
|
8570 |
+
#: src/lib/src/Modules/Plugin/Strings.php:538
|
8571 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:209
|
8572 |
+
msgid "Email"
|
8573 |
msgstr ""
|
8574 |
|
8575 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:244
|
8576 |
+
msgid ""
|
8577 |
+
"All users will be required to verify their login by email-based two-factor "
|
8578 |
+
"authentication."
|
8579 |
msgstr ""
|
8580 |
|
8581 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:248
|
8582 |
+
msgid "Allow Any User"
|
8583 |
msgstr ""
|
8584 |
|
8585 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:249
|
8586 |
+
msgid "Allow Any User To Turn-On Two-Factor Authentication By Email."
|
8587 |
msgstr ""
|
8588 |
|
8589 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:250
|
8590 |
+
msgid ""
|
8591 |
+
"Any user can turn on two-factor authentication by email from their profile."
|
8592 |
msgstr ""
|
8593 |
|
8594 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:254
|
8595 |
+
msgid "Enforce"
|
8596 |
msgstr ""
|
8597 |
|
8598 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:255
|
8599 |
+
msgid "All User Roles Subject To Email Authentication"
|
8600 |
msgstr ""
|
8601 |
|
8602 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:257
|
8603 |
+
#, php-format
|
8604 |
+
msgid "This setting only applies to %s."
|
8605 |
msgstr ""
|
8606 |
|
8607 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:258
|
8608 |
+
msgid ""
|
8609 |
+
"Enforces email-based authentication on all users with the selected roles."
|
8610 |
msgstr ""
|
8611 |
|
8612 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:259
|
8613 |
+
msgid ""
|
8614 |
+
"If a user has multiple roles assigned to it, all roles will be checked "
|
8615 |
+
"against this list."
|
8616 |
+
msgstr ""
|
|
|
8617 |
|
8618 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:260
|
8619 |
+
msgid "All User Roles Available On This Site"
|
8620 |
msgstr ""
|
8621 |
|
8622 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:269
|
8623 |
+
msgid "Protect WordPress Account Access Requests With CAPTCHA"
|
8624 |
msgstr ""
|
8625 |
|
8626 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:271
|
8627 |
+
msgid "Use CAPTCHA on the user account forms such as login, register, etc."
|
8628 |
msgstr ""
|
8629 |
|
8630 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:272
|
8631 |
+
#, php-format
|
8632 |
+
msgid "Use of any theme other than \"%s\", requires a Pro license."
|
8633 |
msgstr ""
|
8634 |
|
8635 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:272
|
8636 |
+
#: src/lib/src/Modules/Plugin/Strings.php:561
|
8637 |
+
msgid "Light Theme"
|
8638 |
msgstr ""
|
8639 |
|
8640 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:273
|
8641 |
+
msgid "You'll need to setup your CAPTCHA API Keys in 'General' settings."
|
8642 |
+
msgstr ""
|
8643 |
+
|
8644 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:274
|
8645 |
+
msgid ""
|
8646 |
+
"Some forms are more dynamic than others so if you experience problems, "
|
8647 |
+
"please use non-Invisible CAPTCHA."
|
8648 |
msgstr ""
|
8649 |
|
8650 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:279
|
8651 |
+
msgid "Use ADE To Detect Bots And Block Brute Force Logins"
|
8652 |
msgstr ""
|
8653 |
|
8654 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:290
|
8655 |
+
msgid "Protection Locations"
|
8656 |
msgstr ""
|
8657 |
|
8658 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:291
|
8659 |
+
msgid "Which Forms Should Be Protected"
|
|
|
8660 |
msgstr ""
|
8661 |
|
8662 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:293
|
8663 |
+
msgid "Choose the forms for which bot protection measures will be deployed."
|
8664 |
msgstr ""
|
8665 |
|
8666 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:294
|
8667 |
#, php-format
|
8668 |
+
msgid "Use with 3rd party systems such as %s, requires a Pro license."
|
8669 |
msgstr ""
|
8670 |
|
8671 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:297
|
8672 |
+
#, php-format
|
8673 |
+
msgid "Choose the 3rd party plugins you want %s to also integrate with."
|
8674 |
msgstr ""
|
8675 |
|
8676 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:302
|
8677 |
+
msgid "Bot Protection"
|
8678 |
msgstr ""
|
8679 |
|
8680 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:305
|
8681 |
+
msgid "Protect WP Login From Automated Login Attempts By Bots"
|
8682 |
msgstr ""
|
8683 |
|
8684 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:308
|
8685 |
+
msgid ""
|
8686 |
+
"Adds a dynamically (Javascript) generated checkbox to the login form that "
|
8687 |
+
"prevents bots using automated login techniques."
|
8688 |
msgstr ""
|
8689 |
|
8690 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:309
|
8691 |
+
msgid "ON"
|
|
|
|
|
|
|
8692 |
msgstr ""
|
8693 |
|
8694 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:314
|
8695 |
+
msgid "AntiBot Forms"
|
8696 |
msgstr ""
|
8697 |
|
8698 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:317
|
8699 |
+
msgid ""
|
8700 |
+
"Enter The Selectors Of The 3rd Party Login Forms For Use With AntiBot JS"
|
8701 |
msgstr ""
|
8702 |
|
8703 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:320
|
8704 |
+
msgid "Provide DOM selectors to attach AntiBot protection to any form."
|
8705 |
msgstr ""
|
8706 |
|
8707 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:321
|
8708 |
+
msgid "IDs are prefixed with \"#\"."
|
8709 |
msgstr ""
|
8710 |
|
8711 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:322
|
8712 |
+
msgid "Classes are prefixed with \".\"."
|
8713 |
msgstr ""
|
8714 |
|
8715 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:323
|
8716 |
+
msgid "IDs are preferred over classes."
|
8717 |
msgstr ""
|
8718 |
|
8719 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:328
|
8720 |
+
msgid "Cooldown Period"
|
8721 |
msgstr ""
|
8722 |
|
8723 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:329
|
8724 |
+
msgid "Limit account access requests to every X seconds"
|
|
|
8725 |
msgstr ""
|
8726 |
|
8727 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:330
|
8728 |
msgid ""
|
8729 |
+
"WordPress will process only ONE account access attempt per number of seconds "
|
8730 |
+
"specified."
|
8731 |
msgstr ""
|
8732 |
|
8733 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:331
|
8734 |
+
msgid "Zero (0) turns this off."
|
8735 |
msgstr ""
|
8736 |
|
8737 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:337
|
8738 |
+
msgid "User Registration"
|
|
|
8739 |
msgstr ""
|
8740 |
|
8741 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:338
|
8742 |
+
msgid "Apply Brute Force Protection To User Registration And Lost Passwords"
|
8743 |
msgstr ""
|
8744 |
|
8745 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:339
|
8746 |
msgid ""
|
8747 |
+
"When enabled, settings in this section will also apply to new user "
|
8748 |
+
"registration and users trying to reset passwords."
|
8749 |
msgstr ""
|
8750 |
|
8751 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:343
|
8752 |
+
msgid "Allow U2F"
|
8753 |
msgstr ""
|
8754 |
|
8755 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:344
|
8756 |
+
msgid "Allow Registration Of U2F Devices"
|
8757 |
msgstr ""
|
8758 |
|
8759 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:346
|
8760 |
+
msgid "Allow users to register U2F devices to complete their login."
|
8761 |
msgstr ""
|
8762 |
|
8763 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:347
|
8764 |
+
msgid ""
|
8765 |
+
"Currently only U2F keys are supported. Built-in fingerprint scanners aren't "
|
8766 |
+
"supported (yet)."
|
8767 |
msgstr ""
|
8768 |
|
8769 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:352
|
8770 |
+
msgid "Allow Yubikey OTP"
|
8771 |
msgstr ""
|
8772 |
|
8773 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:353
|
8774 |
+
msgid "Allow Yubikey Registration For One Time Passwords"
|
8775 |
msgstr ""
|
8776 |
|
8777 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:354
|
8778 |
msgid ""
|
8779 |
+
"Combined with your Yubikey API details this will form the basis of your "
|
8780 |
+
"Yubikey Authentication"
|
8781 |
msgstr ""
|
8782 |
|
8783 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:358
|
8784 |
+
msgid "Yubikey App ID"
|
8785 |
msgstr ""
|
8786 |
|
8787 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:359
|
8788 |
+
msgid "Your Unique Yubikey App ID"
|
|
|
|
|
8789 |
msgstr ""
|
8790 |
|
8791 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:361
|
8792 |
+
msgid ""
|
8793 |
+
"Combined with your Yubikey API Key this will form the basis of your Yubikey "
|
8794 |
+
"Authentication"
|
8795 |
msgstr ""
|
8796 |
|
8797 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:362
|
8798 |
+
msgid ""
|
8799 |
+
"Please review the info link on how to obtain your own Yubikey App ID and API "
|
8800 |
+
"Key."
|
8801 |
msgstr ""
|
8802 |
|
8803 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:367
|
8804 |
+
msgid "Yubikey API Key"
|
|
|
8805 |
msgstr ""
|
8806 |
|
8807 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:368
|
8808 |
+
msgid "Your Unique Yubikey App API Key"
|
8809 |
msgstr ""
|
8810 |
|
8811 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:369
|
8812 |
+
msgid ""
|
8813 |
+
"Combined with your Yubikey App ID this will form the basis of your Yubikey "
|
8814 |
+
"Authentication."
|
8815 |
msgstr ""
|
8816 |
|
8817 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:370
|
8818 |
+
msgid ""
|
8819 |
+
"Please review the info link on how to get your own Yubikey App ID and API "
|
8820 |
+
"Key."
|
8821 |
msgstr ""
|
8822 |
|
8823 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:374
|
8824 |
+
msgid "Yubikey Unique Keys"
|
8825 |
+
msgstr ""
|
8826 |
+
|
8827 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:375
|
8828 |
msgid ""
|
8829 |
+
"This method for Yubikeys is no longer supported. Please see your user profile"
|
|
|
8830 |
msgstr ""
|
8831 |
|
8832 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:376
|
8833 |
+
msgid "Format"
|
8834 |
msgstr ""
|
8835 |
|
8836 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:377
|
8837 |
+
msgid "Provide Username<->Yubikey Pairs that are usable for this site."
|
8838 |
msgstr ""
|
8839 |
|
8840 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:378
|
8841 |
msgid ""
|
8842 |
+
"If a Username is not assigned a Yubikey, Yubikey Authentication is OFF for "
|
8843 |
+
"that user."
|
8844 |
msgstr ""
|
8845 |
|
8846 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:379
|
8847 |
+
msgid ""
|
8848 |
+
"Each [Username,Key] pair should be separated by a new line: you only need to "
|
8849 |
+
"provide the first 12 characters of the yubikey."
|
8850 |
msgstr ""
|
8851 |
|
8852 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:383
|
8853 |
+
msgid "GASP Checkbox Text"
|
8854 |
msgstr ""
|
8855 |
|
8856 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:384
|
8857 |
+
msgid "The User Message Displayed Next To The GASP Checkbox"
|
8858 |
msgstr ""
|
8859 |
|
8860 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:385
|
8861 |
msgid ""
|
8862 |
+
"You can change the text displayed to the user beside the checkbox if you "
|
8863 |
+
"need a custom message."
|
8864 |
msgstr ""
|
8865 |
|
8866 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:390
|
8867 |
+
msgid "GASP Alert Text"
|
8868 |
msgstr ""
|
8869 |
|
8870 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:391
|
8871 |
+
msgid "The Message Displayed If The User Doesn't Check The Box"
|
8872 |
msgstr ""
|
8873 |
|
8874 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:392
|
8875 |
+
msgid ""
|
8876 |
+
"You can change the text displayed to the user in the alert message if they "
|
8877 |
+
"don't check the box."
|
8878 |
msgstr ""
|
8879 |
|
8880 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:398
|
8881 |
+
msgid "AntiBot JS"
|
|
|
|
|
8882 |
msgstr ""
|
8883 |
|
8884 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:399
|
8885 |
+
msgid "Use AntiBot JS Includes For Custom 3rd Party Forms"
|
|
|
|
|
8886 |
msgstr ""
|
8887 |
|
8888 |
+
#: src/lib/src/Modules/LoginGuard/Strings.php:400
|
8889 |
+
msgid ""
|
8890 |
+
"Important: This is experimental. Please contact support for further "
|
8891 |
+
"assistance."
|
8892 |
msgstr ""
|
8893 |
|
8894 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:21
|
8895 |
+
msgid "The ability of this site to send email hasn't been verified."
|
8896 |
msgstr ""
|
8897 |
|
8898 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:22
|
8899 |
msgid ""
|
8900 |
+
"Please click to re-save your settings to trigger another verification email."
|
|
|
8901 |
msgstr ""
|
8902 |
|
8903 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:26
|
8904 |
+
msgid ""
|
8905 |
+
"2FA by email demands that your WP site is properly configured to send email."
|
8906 |
msgstr ""
|
8907 |
|
8908 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:27
|
8909 |
+
msgid ""
|
8910 |
+
"This is a common problem and you may get locked out in the future if you "
|
8911 |
+
"ignore this."
|
8912 |
msgstr ""
|
8913 |
|
8914 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:44
|
8915 |
+
msgid ""
|
8916 |
+
"AntiBot detection isn't being applied to your site because you haven't "
|
8917 |
+
"selected any forms to protect, such as Login or Register."
|
8918 |
msgstr ""
|
8919 |
|
8920 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:58
|
8921 |
+
#, php-format
|
8922 |
msgid ""
|
8923 |
+
"%s has an integration available to protect the login forms of a 3rd party "
|
8924 |
+
"plugin you're using: %s"
|
8925 |
msgstr ""
|
8926 |
|
8927 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:62
|
8928 |
+
msgid "View the available integrations."
|
8929 |
msgstr ""
|
8930 |
|
8931 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:72
|
8932 |
msgid ""
|
8933 |
+
"It appears that your server time configuration is out of sync - Please "
|
8934 |
+
"contact your server admin, as features like Google Authenticator wont work."
|
8935 |
msgstr ""
|
8936 |
|
8937 |
+
#: src/lib/src/Modules/LoginGuard/UI.php:85
|
8938 |
+
msgid ""
|
8939 |
+
"Certain user roles are set for email authentication enforcement that aren't "
|
8940 |
+
"currently available"
|
8941 |
msgstr ""
|
8942 |
|
8943 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:93
|
8944 |
#, php-format
|
8945 |
+
msgid "%s Plugin Is Too Old"
|
8946 |
msgstr ""
|
8947 |
|
8948 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:96
|
8949 |
+
#, php-format
|
8950 |
+
msgid ""
|
8951 |
+
"There are at least 2 major upgrades to the %s plugin since your version."
|
8952 |
msgstr ""
|
8953 |
|
8954 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:99
|
8955 |
+
msgid ""
|
8956 |
+
"We recommended keeping your Shield plugin up-to-date with the latest "
|
8957 |
+
"features."
|
8958 |
msgstr ""
|
8959 |
|
8960 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:100
|
8961 |
+
msgid ""
|
8962 |
+
"We can't support old versions of Shield and certain features may not be "
|
8963 |
+
"working properly as our API develops."
|
8964 |
msgstr ""
|
8965 |
|
8966 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:102
|
8967 |
+
msgid "Click here to go to the WordPress updates page"
|
8968 |
msgstr ""
|
8969 |
|
8970 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:116
|
8971 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:136
|
8972 |
+
#, php-format
|
8973 |
+
msgid "%s is not protecting your site"
|
8974 |
msgstr ""
|
8975 |
|
8976 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:118
|
8977 |
+
#, php-format
|
8978 |
+
msgid "Please delete the \"%s\" file to reactivate %s protection"
|
8979 |
msgstr ""
|
8980 |
|
8981 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:122
|
8982 |
+
msgid "Click here to automatically delete the file"
|
8983 |
msgstr ""
|
8984 |
|
8985 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:138
|
8986 |
+
msgid "The plugin is currently switched-off completely."
|
8987 |
msgstr ""
|
8988 |
|
8989 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:139
|
8990 |
+
msgid "All features and any security protection they provide are disabled."
|
|
|
|
|
8991 |
msgstr ""
|
8992 |
|
8993 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:156
|
8994 |
+
msgid "Site Ground Optimizer plugin has a conflict"
|
|
|
|
|
8995 |
msgstr ""
|
8996 |
|
8997 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:158
|
8998 |
+
#, php-format
|
8999 |
msgid ""
|
9000 |
+
"The SG Optimizer plugin has 2 settings which are breaking your site and "
|
9001 |
+
"certain %s features."
|
9002 |
msgstr ""
|
9003 |
|
9004 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:163
|
9005 |
+
msgid "Click here to automatically turn off those options."
|
9006 |
msgstr ""
|
9007 |
|
9008 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:202
|
9009 |
+
#, php-format
|
9010 |
+
msgid "Update available for the %s plugin"
|
9011 |
msgstr ""
|
9012 |
|
9013 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:203
|
9014 |
+
msgid "Please click to update immediately"
|
9015 |
msgstr ""
|
9016 |
|
9017 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:204
|
9018 |
+
msgid "Dismiss this notice"
|
|
|
9019 |
msgstr ""
|
9020 |
|
9021 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:220
|
9022 |
+
msgid "I don't need the setup wizard just now"
|
9023 |
msgstr ""
|
9024 |
|
9025 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:221
|
9026 |
#, php-format
|
9027 |
+
msgid "Get started quickly with the %s Setup Wizard"
|
9028 |
msgstr ""
|
9029 |
|
9030 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:222
|
|
|
|
|
|
|
9031 |
#, php-format
|
9032 |
+
msgid ""
|
9033 |
+
"The welcome wizard will help you get setup quickly and become familiar with "
|
9034 |
+
"some of the core %s features"
|
9035 |
msgstr ""
|
9036 |
|
9037 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:223
|
9038 |
+
msgid "Launch the welcome wizard"
|
|
|
|
|
|
|
|
|
9039 |
msgstr ""
|
9040 |
|
9041 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:239
|
9042 |
#, php-format
|
9043 |
+
msgid "Make %s even better by sharing usage info?"
|
9044 |
msgstr ""
|
9045 |
|
9046 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:240
|
9047 |
#, php-format
|
9048 |
+
msgid "We're hoping to understand how %s is configured and used."
|
|
|
|
|
|
|
|
|
|
|
|
|
9049 |
msgstr ""
|
9050 |
|
9051 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:241
|
9052 |
+
msgid "We'd like to understand how effective it is on a global scale."
|
9053 |
msgstr ""
|
9054 |
|
9055 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:242
|
9056 |
msgid ""
|
9057 |
+
"The data sent is always completely anonymous and we can never track you or "
|
9058 |
+
"your site."
|
9059 |
msgstr ""
|
9060 |
|
9061 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:243
|
9062 |
+
msgid "It can be turned-off at any time within the plugin options."
|
9063 |
msgstr ""
|
9064 |
|
9065 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:244
|
9066 |
+
msgid "Click to see the RAW data that would be sent"
|
9067 |
msgstr ""
|
9068 |
|
9069 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:247
|
9070 |
+
msgid "Absolutely"
|
|
|
|
|
9071 |
msgstr ""
|
9072 |
|
9073 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:248
|
9074 |
+
msgid "Yes, I'd be happy share this info"
|
|
|
|
|
9075 |
msgstr ""
|
9076 |
|
9077 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:249
|
9078 |
+
msgid "I'd like to learn more, please"
|
|
|
|
|
9079 |
msgstr ""
|
9080 |
|
9081 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:250
|
9082 |
+
msgid "No, I don't want to help"
|
9083 |
msgstr ""
|
9084 |
|
9085 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:268
|
9086 |
+
msgid "Can You Help Us With A Quick Review?"
|
|
|
|
|
|
|
9087 |
msgstr ""
|
9088 |
|
9089 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:269
|
9090 |
+
msgid "I'd rather not show this support"
|
|
|
|
|
|
|
9091 |
msgstr ""
|
9092 |
|
9093 |
+
#: src/lib/src/Modules/Plugin/AdminNotices.php:269
|
9094 |
+
msgid "I've done this already"
|
9095 |
msgstr ""
|
9096 |
|
9097 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:110
|
9098 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:67
|
9099 |
+
msgid "No items selected."
|
9100 |
msgstr ""
|
9101 |
|
9102 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:113
|
9103 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:70
|
9104 |
+
msgid "Not a supported action."
|
|
|
9105 |
msgstr ""
|
9106 |
|
9107 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:124
|
9108 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:89
|
9109 |
+
msgid "Selected items were deleted."
|
9110 |
msgstr ""
|
9111 |
|
9112 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:139
|
9113 |
+
msgid "File could not be automatically removed."
|
9114 |
msgstr ""
|
9115 |
|
9116 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:162
|
9117 |
+
msgid "Note not found."
|
9118 |
msgstr ""
|
9119 |
|
9120 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:171
|
9121 |
+
msgid "Note deleted"
|
|
|
|
|
9122 |
msgstr ""
|
9123 |
|
9124 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:174
|
9125 |
+
msgid "Note couldn't be deleted"
|
9126 |
msgstr ""
|
9127 |
|
9128 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:199
|
9129 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:83
|
9130 |
+
msgid "Please check the box to confirm your intent to overwrite settings"
|
9131 |
msgstr ""
|
9132 |
|
9133 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:218
|
9134 |
+
#: src/lib/src/Modules/Plugin/ModCon.php:127
|
9135 |
+
msgid "Options imported successfully"
|
9136 |
msgstr ""
|
9137 |
|
9138 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:218
|
9139 |
+
msgid "Options failed to import"
|
9140 |
msgstr ""
|
9141 |
|
9142 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:235
|
9143 |
+
msgid "Sorry, the Admin Notes feature isn't available."
|
|
|
9144 |
msgstr ""
|
9145 |
|
9146 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:238
|
9147 |
+
msgid "Sorry, but it appears your note was empty."
|
|
|
|
|
9148 |
msgstr ""
|
9149 |
|
9150 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:244
|
9151 |
+
msgid "Note created successfully."
|
9152 |
msgstr ""
|
9153 |
|
9154 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:244
|
9155 |
+
msgid "Note could not be created."
|
9156 |
msgstr ""
|
9157 |
|
9158 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:256
|
9159 |
+
msgid "Switching-off conflicting options appears to have been successful."
|
9160 |
msgstr ""
|
9161 |
|
9162 |
+
#: src/lib/src/Modules/Plugin/AjaxHandler.php:257
|
9163 |
+
msgid "Switching-off conflicting options appears to have failed."
|
9164 |
+
msgstr ""
|
9165 |
+
|
9166 |
+
#: src/lib/src/Modules/Plugin/Components/BadgeWidget.php:26
|
9167 |
#, php-format
|
9168 |
+
msgid "%s Plugin Badge"
|
9169 |
msgstr ""
|
9170 |
|
9171 |
+
#: src/lib/src/Modules/Plugin/Components/BadgeWidget.php:28
|
9172 |
#, php-format
|
9173 |
+
msgid ""
|
9174 |
+
"You can now help spread the word about the %s plugin anywhere on your site"
|
9175 |
msgstr ""
|
9176 |
|
9177 |
+
#: src/lib/src/Modules/Plugin/Components/BadgeWidget.php:68
|
9178 |
+
msgid "Site Secured"
|
9179 |
msgstr ""
|
9180 |
|
9181 |
+
#: src/lib/src/Modules/Plugin/Components/PluginBadge.php:91
|
9182 |
+
#, php-format
|
9183 |
+
msgid "This Site Is Protected By %s"
|
|
|
9184 |
msgstr ""
|
9185 |
|
9186 |
+
#: src/lib/src/Modules/Plugin/Insights/AdminNotes.php:34
|
9187 |
+
msgid "Administrator Notes"
|
9188 |
msgstr ""
|
9189 |
|
9190 |
+
#: src/lib/src/Modules/Plugin/Insights/AdminNotes.php:35
|
9191 |
+
msgid "Use this feature to make ongoing notes and to-dos"
|
|
|
|
|
9192 |
msgstr ""
|
9193 |
|
9194 |
+
#: src/lib/src/Modules/Plugin/Insights/AdminNotes.php:36
|
9195 |
+
msgid "Add Note"
|
|
|
|
|
9196 |
msgstr ""
|
9197 |
|
9198 |
+
#: src/lib/src/Modules/Plugin/Insights/AdminNotes.php:37
|
9199 |
+
msgid "New Note"
|
9200 |
msgstr ""
|
9201 |
|
9202 |
+
#: src/lib/src/Modules/Plugin/Insights/AdminNotes.php:38
|
9203 |
+
msgid "Enter new note here"
|
9204 |
msgstr ""
|
9205 |
|
9206 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:57
|
9207 |
+
msgid "Shield Settings"
|
|
|
|
|
9208 |
msgstr ""
|
9209 |
|
9210 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:60
|
9211 |
+
#, php-format
|
9212 |
+
msgid "%s settings are arranged into modules."
|
|
|
|
|
|
|
|
|
9213 |
msgstr ""
|
9214 |
|
9215 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:61
|
9216 |
+
msgid "Choose the module you need from the dropdown."
|
9217 |
msgstr ""
|
9218 |
|
9219 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:65
|
9220 |
+
msgid "Go To General Settings"
|
|
|
|
|
9221 |
msgstr ""
|
9222 |
|
9223 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:69
|
9224 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:139
|
9225 |
+
msgid "Scans & Hack Guard Settings"
|
|
|
|
|
|
|
9226 |
msgstr ""
|
9227 |
|
9228 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:75
|
9229 |
+
msgid "Select Module"
|
|
|
9230 |
msgstr ""
|
9231 |
|
9232 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:108
|
9233 |
+
msgid "No notes made yet."
|
|
|
|
|
9234 |
msgstr ""
|
9235 |
|
9236 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:116
|
9237 |
+
#, php-format
|
9238 |
msgid ""
|
9239 |
+
"Review your entire %s security configuration at a glance to see what's "
|
9240 |
+
"working and what's not."
|
9241 |
msgstr ""
|
9242 |
|
9243 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:120
|
9244 |
+
msgid "See My Security Overview"
|
9245 |
msgstr ""
|
9246 |
|
9247 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:127
|
9248 |
+
msgid "Scans and Protection"
|
9249 |
msgstr ""
|
9250 |
|
9251 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:130
|
9252 |
+
#, php-format
|
9253 |
msgid ""
|
9254 |
+
"Use %s Scans to automatically detect and repair intrusions on your site."
|
9255 |
msgstr ""
|
9256 |
|
9257 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:131
|
9258 |
#, php-format
|
9259 |
+
msgid ""
|
9260 |
+
"%s scans WordPress core files, plugins, themes and will detect Malware "
|
9261 |
+
"(ShieldPRO)."
|
|
|
|
|
|
|
|
|
9262 |
msgstr ""
|
9263 |
|
9264 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:148
|
9265 |
+
#, php-format
|
9266 |
+
msgid "Lock down access to %s itself to specific WP Administrators."
|
9267 |
msgstr ""
|
9268 |
|
9269 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:150
|
9270 |
+
#, php-format
|
9271 |
msgid ""
|
9272 |
+
"Restrict access to %s itself and prevent unwanted changes to your site by "
|
9273 |
+
"other administrators."
|
9274 |
msgstr ""
|
9275 |
|
9276 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:154
|
9277 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:55
|
9278 |
+
msgid "Security Admin Settings"
|
9279 |
msgstr ""
|
9280 |
|
9281 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:161
|
9282 |
+
msgid "Reports and Stats"
|
|
|
9283 |
msgstr ""
|
9284 |
|
9285 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:163
|
9286 |
+
#, php-format
|
9287 |
+
msgid "See the effect on your site security by %s in numbers"
|
9288 |
msgstr ""
|
9289 |
|
9290 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:165
|
9291 |
+
#, php-format
|
9292 |
msgid ""
|
9293 |
+
"Display charts to see how %s is performing over time and in which areas your "
|
9294 |
+
"site has been most impacted."
|
9295 |
msgstr ""
|
9296 |
|
9297 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:169
|
9298 |
+
msgid "View Reports and Stats"
|
9299 |
msgstr ""
|
9300 |
|
9301 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:176
|
9302 |
+
msgid "Free ShieldPRO Trial"
|
9303 |
msgstr ""
|
9304 |
|
9305 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:179
|
9306 |
+
msgid "Full, unrestricted access to ShieldPRO with no obligation."
|
9307 |
msgstr ""
|
9308 |
|
9309 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:180
|
9310 |
+
msgid "Turn-on the ShieldPRO trial within 60 seconds."
|
|
|
9311 |
msgstr ""
|
9312 |
|
9313 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:184
|
9314 |
+
msgid "Get The Free Trial"
|
9315 |
msgstr ""
|
9316 |
|
9317 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:193
|
9318 |
+
msgid "IP Blocking and Bypass"
|
9319 |
msgstr ""
|
9320 |
|
9321 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:196
|
9322 |
msgid ""
|
9323 |
+
"Shield automatically detects and blocks bad IP addresses based on your "
|
9324 |
+
"security settings."
|
9325 |
msgstr ""
|
9326 |
|
9327 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:197
|
9328 |
+
msgid ""
|
9329 |
+
"The IP Analysis Tool shows you all information for a given IP as it relates "
|
9330 |
+
"to your site."
|
9331 |
msgstr ""
|
9332 |
|
9333 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:201
|
9334 |
+
msgid "Analyse & Manage IPs"
|
9335 |
msgstr ""
|
9336 |
|
9337 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:205
|
9338 |
+
msgid "IP Blocking Settings"
|
9339 |
msgstr ""
|
9340 |
|
9341 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:215
|
9342 |
+
msgid "Provides in-depth logging for all major WordPress events."
|
|
|
|
|
9343 |
msgstr ""
|
9344 |
|
9345 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:219
|
9346 |
+
msgid "View Audit Log"
|
9347 |
msgstr ""
|
9348 |
|
9349 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:223
|
9350 |
+
msgid "Audit Trail Settings"
|
|
|
9351 |
msgstr ""
|
9352 |
|
9353 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:230
|
9354 |
+
msgid "Traffic Logging"
|
9355 |
msgstr ""
|
9356 |
|
9357 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:233
|
9358 |
+
msgid "Use traffic logging to monitor visitor requests to your site."
|
9359 |
msgstr ""
|
9360 |
|
9361 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:234
|
9362 |
+
msgid ""
|
9363 |
+
"Traffic Rate Limiting lets you throttle requests from any single visitor."
|
9364 |
msgstr ""
|
9365 |
|
9366 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:238
|
9367 |
+
msgid "View Traffic Log"
|
9368 |
msgstr ""
|
9369 |
|
9370 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:242
|
9371 |
+
msgid "Traffic Log Settings"
|
9372 |
msgstr ""
|
9373 |
|
9374 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:249
|
9375 |
+
msgid "WordPress Users"
|
9376 |
msgstr ""
|
9377 |
|
9378 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:252
|
9379 |
msgid ""
|
9380 |
+
"Adds fine control over user sessions, account re-use, password strength and "
|
9381 |
+
"expiration, and user suspension."
|
9382 |
msgstr ""
|
9383 |
|
9384 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:256
|
9385 |
+
msgid "View User Sessions"
|
9386 |
msgstr ""
|
9387 |
|
9388 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:260
|
9389 |
+
msgid "User Settings"
|
9390 |
msgstr ""
|
9391 |
|
9392 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:269
|
9393 |
+
msgid "Block all Comment SPAM from bots and even detect SPAMMY human comments."
|
9394 |
msgstr ""
|
9395 |
|
9396 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:271
|
9397 |
+
#, php-format
|
9398 |
msgid ""
|
9399 |
+
"Shield blocks 100% of all automated comments by bots (the most common type "
|
9400 |
+
"of SPAM)."
|
9401 |
msgstr ""
|
9402 |
|
9403 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:272
|
9404 |
+
msgid "The Human SPAM filter will look for common spam words and content."
|
9405 |
msgstr ""
|
9406 |
|
9407 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:274
|
9408 |
+
msgid "Privacy Note"
|
9409 |
msgstr ""
|
9410 |
|
9411 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:275
|
9412 |
msgid ""
|
9413 |
+
"Unlike Akismet, your comments and data are never sent off-site for analysis."
|
|
|
9414 |
msgstr ""
|
9415 |
|
9416 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:280
|
9417 |
+
msgid "Bot SPAM Settings"
|
9418 |
msgstr ""
|
9419 |
|
9420 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:284
|
9421 |
+
msgid "Human SPAM Settings"
|
9422 |
msgstr ""
|
9423 |
|
9424 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:294
|
9425 |
msgid ""
|
9426 |
+
"Use the import/export feature to quickly setup a new site based on the "
|
9427 |
+
"settings of another site."
|
9428 |
msgstr ""
|
9429 |
|
9430 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:295
|
9431 |
+
msgid "You can also setup automatic syncing of settings between sites."
|
|
|
|
|
9432 |
msgstr ""
|
9433 |
|
9434 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:299
|
9435 |
+
msgid "Run Import/Export"
|
9436 |
msgstr ""
|
9437 |
|
9438 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:303
|
9439 |
+
msgid "Import/Export Settings"
|
9440 |
msgstr ""
|
9441 |
|
9442 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:313
|
9443 |
msgid ""
|
9444 |
+
"By upgrading to ShieldPRO, you support ongoing Shield development and get "
|
9445 |
+
"access to exclusive PRO features."
|
9446 |
msgstr ""
|
9447 |
|
9448 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:317
|
9449 |
+
msgid "Manage PRO"
|
|
|
|
|
9450 |
msgstr ""
|
9451 |
|
9452 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:321
|
9453 |
+
msgid "See Exclusive ShieldPRO Features"
|
9454 |
msgstr ""
|
9455 |
|
9456 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:332
|
9457 |
+
msgid "Review and Analyse all visitor IPs that have an impact on your site."
|
|
|
9458 |
msgstr ""
|
9459 |
|
9460 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:334
|
9461 |
+
msgid "Use these to keep note of important items or to-dos."
|
9462 |
msgstr ""
|
9463 |
|
9464 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:339
|
9465 |
+
msgid "Manage Admin Notes"
|
9466 |
msgstr ""
|
9467 |
|
9468 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:346
|
9469 |
+
msgid "Whitelabel"
|
9470 |
+
msgstr ""
|
9471 |
+
|
9472 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:349
|
9473 |
+
msgid "Re-brand the Shield Security plugin your image."
|
9474 |
msgstr ""
|
9475 |
|
9476 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:350
|
9477 |
msgid ""
|
9478 |
+
"Use this to enhance and solidify your brand with your clients and visitors."
|
|
|
9479 |
msgstr ""
|
9480 |
|
9481 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:354
|
9482 |
+
msgid "Manage White Label"
|
9483 |
msgstr ""
|
9484 |
|
9485 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:365
|
9486 |
+
msgid "Shield integrates with 3rd party plugins and services."
|
9487 |
msgstr ""
|
9488 |
|
9489 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:366
|
9490 |
msgid ""
|
9491 |
+
"Determine what integrations Shield should use and manage the settings for "
|
9492 |
+
"them."
|
9493 |
msgstr ""
|
9494 |
|
9495 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:370
|
9496 |
+
msgid "Manage Integrations"
|
9497 |
msgstr ""
|
9498 |
|
9499 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:380
|
9500 |
+
#, php-format
|
9501 |
+
msgid "Important information about %s releases and changes."
|
9502 |
msgstr ""
|
9503 |
|
9504 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:394
|
9505 |
msgid ""
|
9506 |
+
"If you contact support, they may ask you to show them your Debug Information "
|
9507 |
+
"page."
|
9508 |
+
msgstr ""
|
9509 |
+
|
9510 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:395
|
9511 |
+
msgid ""
|
9512 |
+
"It's also an interesting place to see a summary of your WordPress "
|
9513 |
+
"configuration in 1 place."
|
9514 |
+
msgstr ""
|
9515 |
+
|
9516 |
+
#: src/lib/src/Modules/Plugin/Insights/DashboardCards.php:399
|
9517 |
+
msgid "View Debug Info"
|
9518 |
+
msgstr ""
|
9519 |
+
|
9520 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:24
|
9521 |
+
msgid "Reporting Email"
|
9522 |
msgstr ""
|
9523 |
|
9524 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:27
|
9525 |
#, php-format
|
9526 |
+
msgid "Email address for reports set to: %s"
|
9527 |
msgstr ""
|
9528 |
|
9529 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:28
|
9530 |
#, php-format
|
9531 |
+
msgid "No reporting address provided - defaulting to: %s"
|
9532 |
msgstr ""
|
9533 |
|
9534 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:33
|
9535 |
+
msgid "Visitor IP Detection"
|
9536 |
msgstr ""
|
9537 |
|
9538 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:35
|
9539 |
+
#, php-format
|
9540 |
+
msgid "Visitor IP address source is: %s"
|
9541 |
msgstr ""
|
9542 |
|
9543 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:45
|
9544 |
+
msgid "CAPTCHA keys have been provided"
|
9545 |
msgstr ""
|
9546 |
|
9547 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:46
|
9548 |
+
msgid "CAPTCHA keys haven't been provided"
|
9549 |
msgstr ""
|
9550 |
|
9551 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:59
|
9552 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:189
|
9553 |
+
#: src/lib/src/Modules/Plugin/Strings.php:505
|
9554 |
+
msgid "General Settings"
|
9555 |
msgstr ""
|
9556 |
|
9557 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:63
|
9558 |
#, php-format
|
9559 |
+
msgid "General %s Settings"
|
9560 |
msgstr ""
|
9561 |
|
9562 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:73
|
9563 |
+
msgid "DB Password"
|
9564 |
msgstr ""
|
9565 |
|
9566 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:76
|
9567 |
+
msgid "WP Database password is very strong"
|
9568 |
msgstr ""
|
9569 |
|
9570 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:77
|
9571 |
+
msgid "WP Database password appears to be weak"
|
9572 |
+
msgstr ""
|
9573 |
+
|
9574 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:79
|
9575 |
+
msgid "The database password should be strong."
|
9576 |
+
msgstr ""
|
9577 |
+
|
9578 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:97
|
9579 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:106
|
9580 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:116
|
9581 |
+
msgid "HTTPS"
|
9582 |
msgstr ""
|
9583 |
|
9584 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:99
|
9585 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:108
|
9586 |
+
msgid "Site visitor traffic isn't protected by HTTPS"
|
9587 |
msgstr ""
|
9588 |
|
9589 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:101
|
9590 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:120
|
9591 |
+
msgid "It's recommended that an SSL certificate is installed on your site."
|
|
|
|
|
9592 |
msgstr ""
|
9593 |
|
9594 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:110
|
9595 |
+
msgid "HTTPS setting for Home URL and Site URL are not consistent."
|
9596 |
msgstr ""
|
9597 |
|
9598 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:118
|
9599 |
+
msgid "Site visitor traffic set to use HTTPS"
|
|
|
9600 |
msgstr ""
|
9601 |
|
9602 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:137
|
9603 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:160
|
9604 |
+
msgid "SSL Certificate"
|
9605 |
msgstr ""
|
9606 |
|
9607 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:139
|
9608 |
+
msgid "SSL Certificate remains valid for at least the next 2 weeks"
|
9609 |
msgstr ""
|
9610 |
|
9611 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:141
|
9612 |
msgid ""
|
9613 |
+
"It's recommended to keep a valid SSL certificate installed at all times."
|
|
|
9614 |
msgstr ""
|
9615 |
|
9616 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:148
|
9617 |
+
msgid "SSL certificate for this site has expired."
|
9618 |
msgstr ""
|
9619 |
|
9620 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:149
|
9621 |
+
msgid "Renew your SSL certificate."
|
9622 |
msgstr ""
|
9623 |
|
9624 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:152
|
9625 |
+
#, php-format
|
9626 |
+
msgid "SSL certificate will expire soon (%s days)"
|
9627 |
msgstr ""
|
9628 |
|
9629 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:153
|
9630 |
+
msgid "Check or renew your SSL certificate."
|
9631 |
msgstr ""
|
9632 |
|
9633 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:162
|
9634 |
+
msgid "Couldn't automatically test and verify your site SSL certificate"
|
9635 |
msgstr ""
|
9636 |
|
9637 |
+
#: src/lib/src/Modules/Plugin/Insights/OverviewCards.php:164
|
9638 |
+
msgid "Error message"
|
9639 |
msgstr ""
|
9640 |
|
9641 |
+
#: src/lib/src/Modules/Plugin/Lib/Debug/RecentEvents.php:23
|
9642 |
+
msgid "Recent Events Log"
|
9643 |
msgstr ""
|
9644 |
|
9645 |
+
#: src/lib/src/Modules/Plugin/Lib/Debug/RecentEvents.php:24
|
9646 |
+
#, php-format
|
9647 |
+
msgid "Some of the most recent %s events"
|
9648 |
msgstr ""
|
9649 |
|
9650 |
+
#: src/lib/src/Modules/Plugin/Lib/Debug/RecentEvents.php:63
|
9651 |
+
msgid "Not yet recorded"
|
9652 |
msgstr ""
|
9653 |
|
9654 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Export.php:54
|
9655 |
+
msgid "Handshake verification failed."
|
|
|
9656 |
msgstr ""
|
9657 |
|
9658 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:46
|
9659 |
+
msgid "Not importing a file that cannot be deleted"
|
|
|
9660 |
msgstr ""
|
9661 |
|
9662 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:51
|
9663 |
+
msgid "Import file was empty"
|
|
|
9664 |
msgstr ""
|
9665 |
|
9666 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:62
|
9667 |
+
msgid "Options data could not be found in uploaded file"
|
9668 |
msgstr ""
|
9669 |
|
9670 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:68
|
9671 |
+
msgid "Options data in the file wasn't of the correct format."
|
9672 |
msgstr ""
|
9673 |
|
9674 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:72
|
9675 |
+
msgid "import file"
|
9676 |
msgstr ""
|
9677 |
|
9678 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:80
|
9679 |
+
msgid "Not currently logged-in as security admin"
|
9680 |
msgstr ""
|
9681 |
|
9682 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:89
|
9683 |
+
msgid "Please select a file to upload"
|
|
|
9684 |
msgstr ""
|
9685 |
|
9686 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/Import.php:96
|
9687 |
+
msgid "Uploading of file failed"
|
9688 |
msgstr ""
|
9689 |
|
9690 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:165
|
9691 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:167
|
9692 |
+
msgid "Import From File"
|
9693 |
msgstr ""
|
9694 |
|
9695 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:166
|
9696 |
+
msgid "Import From Another Site"
|
9697 |
msgstr ""
|
9698 |
|
9699 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:168
|
9700 |
+
msgid "Upload an exported options file you downloaded from another site"
|
9701 |
msgstr ""
|
9702 |
|
9703 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:169
|
9704 |
+
msgid "Select file to import options from"
|
9705 |
msgstr ""
|
9706 |
|
9707 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:170
|
9708 |
+
msgid "I Understand Existing Options Will Be Overwritten"
|
|
|
9709 |
msgstr ""
|
9710 |
|
9711 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:171
|
9712 |
+
msgid "Please be sure that this is what you want."
|
|
|
|
|
9713 |
msgstr ""
|
9714 |
|
9715 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:172
|
9716 |
+
msgid "This action can't be undone."
|
9717 |
msgstr ""
|
9718 |
|
9719 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:173
|
9720 |
+
msgid "Import From Site"
|
|
|
9721 |
msgstr ""
|
9722 |
|
9723 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:175
|
9724 |
+
msgid "Download Options Export File"
|
9725 |
msgstr ""
|
9726 |
|
9727 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:176
|
9728 |
+
msgid "Use this file to copy options from this site into another site"
|
9729 |
msgstr ""
|
9730 |
|
9731 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:178
|
9732 |
+
msgid "Import options directly from another site"
|
9733 |
msgstr ""
|
9734 |
|
9735 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:179
|
9736 |
+
msgid "Master Site URL"
|
9737 |
msgstr ""
|
9738 |
|
9739 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:181
|
9740 |
#, php-format
|
9741 |
+
msgid "Remember to include %s or %s"
|
9742 |
msgstr ""
|
9743 |
|
9744 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:185
|
9745 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:189
|
9746 |
+
#: src/lib/src/Modules/Plugin/Strings.php:369
|
9747 |
+
msgid "Secret Key"
|
9748 |
msgstr ""
|
9749 |
|
9750 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:186
|
9751 |
+
msgid "Master Site Secret Key"
|
|
|
9752 |
msgstr ""
|
9753 |
|
9754 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:187
|
9755 |
+
msgid "Create Shield Network"
|
|
|
9756 |
msgstr ""
|
9757 |
|
9758 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:188
|
9759 |
#, php-format
|
9760 |
+
msgid "The secret key is found in: %s"
|
9761 |
msgstr ""
|
9762 |
|
9763 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:191
|
9764 |
+
msgid "Turn On"
|
|
|
9765 |
msgstr ""
|
9766 |
|
9767 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:193
|
9768 |
+
msgid "No Change"
|
9769 |
msgstr ""
|
9770 |
|
9771 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:195
|
9772 |
+
msgid "Checking this option on will link this site to Master site."
|
9773 |
msgstr ""
|
9774 |
|
9775 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:196
|
9776 |
+
msgid "Options will be automatically imported from the Master site each night"
|
|
|
9777 |
msgstr ""
|
9778 |
|
9779 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:197
|
9780 |
+
msgid ""
|
9781 |
+
"When you adjust options on the Master site, they will be reflected in this "
|
9782 |
+
"site after the automatic import"
|
9783 |
msgstr ""
|
9784 |
|
9785 |
+
#: src/lib/src/Modules/Plugin/Lib/ImportExport/ImportExportController.php:199
|
9786 |
+
msgid "Import Options"
|
|
|
|
|
9787 |
msgstr ""
|
9788 |
|
9789 |
+
#: src/lib/src/Modules/Plugin/ModCon.php:511
|
9790 |
+
msgid "Downloading file, please wait..."
|
9791 |
msgstr ""
|
9792 |
|
9793 |
+
#: src/lib/src/Modules/Plugin/ModCon.php:512
|
9794 |
+
msgid "There was a problem downloading the file."
|
9795 |
msgstr ""
|
9796 |
|
9797 |
+
#: src/lib/src/Modules/Plugin/Processor.php:53
|
9798 |
+
#, php-format
|
9799 |
+
msgid "Days Installed: %s"
|
9800 |
msgstr ""
|
9801 |
|
9802 |
+
#: src/lib/src/Modules/Plugin/Processor.php:54
|
9803 |
#, php-format
|
9804 |
+
msgid "%s is provided by %s"
|
9805 |
msgstr ""
|
9806 |
|
9807 |
+
#: src/lib/src/Modules/Plugin/Strings.php:17
|
9808 |
+
msgid "Custom Debug"
|
9809 |
msgstr ""
|
9810 |
|
9811 |
+
#: src/lib/src/Modules/Plugin/Strings.php:23
|
9812 |
+
#: src/lib/src/Modules/Plugin/Strings.php:30
|
9813 |
+
msgid "Loaded"
|
9814 |
msgstr ""
|
9815 |
|
9816 |
+
#: src/lib/src/Modules/Plugin/Strings.php:24
|
9817 |
+
msgid "Front Page"
|
|
|
9818 |
msgstr ""
|
9819 |
|
9820 |
+
#: src/lib/src/Modules/Plugin/Strings.php:26
|
9821 |
+
msgid "Front page loaded"
|
|
|
9822 |
msgstr ""
|
9823 |
|
9824 |
+
#: src/lib/src/Modules/Plugin/Strings.php:31
|
9825 |
+
msgid "Login Page"
|
|
|
9826 |
msgstr ""
|
9827 |
|
9828 |
+
#: src/lib/src/Modules/Plugin/Strings.php:33
|
9829 |
+
msgid "Login page loaded"
|
9830 |
msgstr ""
|
9831 |
|
9832 |
+
#: src/lib/src/Modules/Plugin/Strings.php:37
|
9833 |
+
msgid "CAPTCHA Pass"
|
|
|
|
|
9834 |
msgstr ""
|
9835 |
|
9836 |
+
#: src/lib/src/Modules/Plugin/Strings.php:39
|
9837 |
+
msgid "CAPTCHA test successful."
|
9838 |
msgstr ""
|
9839 |
|
9840 |
+
#: src/lib/src/Modules/Plugin/Strings.php:43
|
9841 |
+
msgid "CAPTCHA Fail"
|
9842 |
msgstr ""
|
9843 |
|
9844 |
+
#: src/lib/src/Modules/Plugin/Strings.php:45
|
9845 |
+
msgid "CAPTCHA test failed."
|
|
|
|
|
9846 |
msgstr ""
|
9847 |
|
9848 |
+
#: src/lib/src/Modules/Plugin/Strings.php:49
|
9849 |
+
msgid "Test Cron Run"
|
|
|
|
|
9850 |
msgstr ""
|
9851 |
|
9852 |
+
#: src/lib/src/Modules/Plugin/Strings.php:51
|
9853 |
+
msgid "Test WP Cron ran successfully."
|
9854 |
msgstr ""
|
9855 |
|
9856 |
+
#: src/lib/src/Modules/Plugin/Strings.php:55
|
9857 |
+
msgid "Import Notify Sent"
|
9858 |
msgstr ""
|
9859 |
|
9860 |
+
#: src/lib/src/Modules/Plugin/Strings.php:57
|
9861 |
+
msgid "Sent notifications to whitelisted sites for required options import."
|
9862 |
msgstr ""
|
9863 |
|
9864 |
+
#: src/lib/src/Modules/Plugin/Strings.php:61
|
9865 |
+
msgid "Import Notify Received"
|
|
|
|
|
9866 |
msgstr ""
|
9867 |
|
9868 |
+
#: src/lib/src/Modules/Plugin/Strings.php:63
|
9869 |
+
msgid "Received notification that options import required."
|
|
|
|
|
9870 |
msgstr ""
|
9871 |
|
9872 |
+
#: src/lib/src/Modules/Plugin/Strings.php:64
|
9873 |
+
msgid "Current master site: {{master_site}}"
|
|
|
9874 |
msgstr ""
|
9875 |
|
9876 |
+
#: src/lib/src/Modules/Plugin/Strings.php:68
|
9877 |
+
msgid "Options Exported"
|
9878 |
msgstr ""
|
9879 |
|
9880 |
+
#: src/lib/src/Modules/Plugin/Strings.php:70
|
9881 |
+
msgid "Options exported to site: {{site}}"
|
9882 |
msgstr ""
|
9883 |
|
9884 |
+
#: src/lib/src/Modules/Plugin/Strings.php:74
|
9885 |
+
msgid "Options Imported"
|
|
|
9886 |
msgstr ""
|
9887 |
|
9888 |
+
#: src/lib/src/Modules/Plugin/Strings.php:76
|
9889 |
+
msgid "Options exported from site: {{site}}"
|
9890 |
msgstr ""
|
9891 |
|
9892 |
+
#: src/lib/src/Modules/Plugin/Strings.php:80
|
9893 |
+
msgid "Whitelist Site Added"
|
9894 |
msgstr ""
|
9895 |
|
9896 |
+
#: src/lib/src/Modules/Plugin/Strings.php:82
|
9897 |
+
msgid "Site added to export white list: {{site}}"
|
|
|
|
|
9898 |
msgstr ""
|
9899 |
|
9900 |
+
#: src/lib/src/Modules/Plugin/Strings.php:86
|
9901 |
+
#: src/lib/src/Modules/Plugin/Strings.php:92
|
9902 |
+
msgid "Whitelist Site Removed"
|
9903 |
msgstr ""
|
9904 |
|
9905 |
+
#: src/lib/src/Modules/Plugin/Strings.php:88
|
9906 |
+
msgid "Site removed from export white list: {{site}}"
|
9907 |
msgstr ""
|
9908 |
|
9909 |
+
#: src/lib/src/Modules/Plugin/Strings.php:94
|
9910 |
+
msgid "Master Site URL set: {{site}}"
|
|
|
|
|
9911 |
msgstr ""
|
9912 |
|
9913 |
+
#: src/lib/src/Modules/Plugin/Strings.php:98
|
9914 |
+
msgid "AntiBot Pass"
|
|
|
|
|
9915 |
msgstr ""
|
9916 |
|
9917 |
+
#: src/lib/src/Modules/Plugin/Strings.php:100
|
9918 |
+
msgid ""
|
9919 |
+
"Request passed the AntiBot Test with a Visitor Score of "
|
9920 |
+
"\"{{score}}\" (minimum score: {{minimum}})."
|
9921 |
msgstr ""
|
9922 |
|
9923 |
+
#: src/lib/src/Modules/Plugin/Strings.php:104
|
9924 |
+
msgid "AntiBot Fail"
|
9925 |
msgstr ""
|
9926 |
|
9927 |
+
#: src/lib/src/Modules/Plugin/Strings.php:106
|
9928 |
+
msgid ""
|
9929 |
+
"Request failed the AntiBot Test with a Visitor Score of "
|
9930 |
+
"\"{{score}}\" (minimum score: {{minimum}})."
|
9931 |
msgstr ""
|
9932 |
|
9933 |
+
#: src/lib/src/Modules/Plugin/Strings.php:117
|
9934 |
+
msgid "Plugin Actions"
|
9935 |
msgstr ""
|
9936 |
|
9937 |
+
#: src/lib/src/Modules/Plugin/Strings.php:118
|
9938 |
+
msgid "E.g. Import/Export"
|
9939 |
msgstr ""
|
9940 |
|
9941 |
+
#: src/lib/src/Modules/Plugin/Strings.php:133
|
9942 |
+
msgid "Global Security Plugin Disable"
|
9943 |
msgstr ""
|
9944 |
|
9945 |
+
#: src/lib/src/Modules/Plugin/Strings.php:136
|
9946 |
+
msgid "Use this option to completely disable all active Shield Protection."
|
|
|
|
|
9947 |
msgstr ""
|
9948 |
|
9949 |
+
#: src/lib/src/Modules/Plugin/Strings.php:141
|
9950 |
+
#: src/lib/src/Modules/Plugin/Strings.php:142
|
9951 |
+
msgid "Plugin Defaults"
|
9952 |
msgstr ""
|
9953 |
|
9954 |
+
#: src/lib/src/Modules/Plugin/Strings.php:144
|
9955 |
+
msgid "Important default settings used throughout the plugin."
|
9956 |
msgstr ""
|
9957 |
|
9958 |
+
#: src/lib/src/Modules/Plugin/Strings.php:149
|
9959 |
+
#: src/lib/src/Modules/Plugin/Strings.php:150
|
9960 |
+
msgid "Import"
|
9961 |
msgstr ""
|
9962 |
|
9963 |
+
#: src/lib/src/Modules/Plugin/Strings.php:149
|
9964 |
+
#: src/lib/src/Modules/Plugin/Strings.php:150
|
9965 |
+
msgid "Export"
|
9966 |
msgstr ""
|
9967 |
|
9968 |
+
#: src/lib/src/Modules/Plugin/Strings.php:152
|
9969 |
+
msgid ""
|
9970 |
+
"Automatically import options, and deploy configurations across your entire "
|
9971 |
+
"network."
|
9972 |
msgstr ""
|
9973 |
|
9974 |
+
#: src/lib/src/Modules/Plugin/Strings.php:153
|
9975 |
+
msgid "This is a Pro-only feature."
|
9976 |
msgstr ""
|
9977 |
|
9978 |
+
#: src/lib/src/Modules/Plugin/Strings.php:163
|
9979 |
+
msgid "General Plugin Options"
|
9980 |
msgstr ""
|
9981 |
|
9982 |
+
#: src/lib/src/Modules/Plugin/Strings.php:164
|
9983 |
+
msgid "General Options"
|
9984 |
msgstr ""
|
9985 |
|
9986 |
+
#: src/lib/src/Modules/Plugin/Strings.php:171
|
9987 |
+
#, php-format
|
9988 |
+
msgid "Setup CAPTCHA for use across %s."
|
9989 |
msgstr ""
|
9990 |
|
9991 |
+
#: src/lib/src/Modules/Plugin/Strings.php:175
|
9992 |
+
msgid "You must create your own CAPTCHA API Keys."
|
9993 |
msgstr ""
|
9994 |
|
9995 |
+
#: src/lib/src/Modules/Plugin/Strings.php:176
|
9996 |
+
msgid "Google reCAPTCHA Keys"
|
9997 |
msgstr ""
|
9998 |
|
9999 |
+
#: src/lib/src/Modules/Plugin/Strings.php:177
|
10000 |
+
msgid "hCaptcha Keys"
|
10001 |
msgstr ""
|
10002 |
|
10003 |
+
#: src/lib/src/Modules/Plugin/Strings.php:179
|
10004 |
+
#, php-format
|
10005 |
+
msgid "Invisible CAPTCHA is available with %s Pro."
|
10006 |
msgstr ""
|
10007 |
|
10008 |
+
#: src/lib/src/Modules/Plugin/Strings.php:184
|
10009 |
+
#: src/lib/src/Modules/Plugin/Strings.php:185
|
10010 |
+
msgid "Duo Security"
|
|
|
10011 |
msgstr ""
|
10012 |
|
10013 |
+
#: src/lib/src/Modules/Plugin/Strings.php:214
|
10014 |
+
#, php-format
|
10015 |
+
msgid "Enable %s Protection"
|
10016 |
msgstr ""
|
10017 |
|
10018 |
+
#: src/lib/src/Modules/Plugin/Strings.php:215
|
10019 |
+
msgid "Switch Off To Disable All Security Protection"
|
10020 |
msgstr ""
|
10021 |
|
10022 |
+
#: src/lib/src/Modules/Plugin/Strings.php:217
|
10023 |
msgid ""
|
10024 |
+
"You can keep the security plugin activated, but temporarily disable all "
|
10025 |
+
"protection it provides."
|
10026 |
msgstr ""
|
10027 |
|
10028 |
+
#: src/lib/src/Modules/Plugin/Strings.php:226
|
10029 |
+
msgid "Show All Options"
|
|
|
|
|
10030 |
msgstr ""
|
10031 |
|
10032 |
+
#: src/lib/src/Modules/Plugin/Strings.php:227
|
10033 |
+
msgid "Show All Options Including Those Marked As Advanced"
|
10034 |
msgstr ""
|
10035 |
|
10036 |
#: src/lib/src/Modules/Plugin/Strings.php:229
|
10037 |
+
msgid "Shield hides advanced options from view to simplify display."
|
|
|
|
|
10038 |
msgstr ""
|
10039 |
|
10040 |
+
#: src/lib/src/Modules/Plugin/Strings.php:230
|
10041 |
+
msgid "Turn this option on to display advanced options at all times."
|
10042 |
msgstr ""
|
10043 |
|
10044 |
+
#: src/lib/src/Modules/Plugin/Strings.php:235
|
10045 |
+
msgid "Anonymous Usage Statistics"
|
10046 |
+
msgstr ""
|
10047 |
+
|
10048 |
+
#: src/lib/src/Modules/Plugin/Strings.php:236
|
10049 |
+
msgid "Permit Anonymous Usage Information Gathering"
|
10050 |
msgstr ""
|
10051 |
|
10052 |
+
#: src/lib/src/Modules/Plugin/Strings.php:238
|
10053 |
+
msgid ""
|
10054 |
+
"Allows us to gather information on statistics and features in-use across our "
|
10055 |
+
"client installations."
|
10056 |
msgstr ""
|
10057 |
|
10058 |
#: src/lib/src/Modules/Plugin/Strings.php:239
|
10059 |
+
msgid ""
|
10060 |
+
"This information is strictly anonymous and contains no personally, or "
|
10061 |
+
"otherwise, identifiable data."
|
10062 |
msgstr ""
|
10063 |
|
10064 |
#: src/lib/src/Modules/Plugin/Strings.php:240
|
10065 |
+
msgid "Click to see the exact data that would be sent."
|
10066 |
msgstr ""
|
10067 |
|
10068 |
+
#: src/lib/src/Modules/Plugin/Strings.php:245
|
10069 |
+
msgid "Enable ShieldNET"
|
10070 |
msgstr ""
|
10071 |
|
10072 |
#: src/lib/src/Modules/Plugin/Strings.php:246
|
10073 |
+
msgid "Enhanced Website Security Through Network Intelligence"
|
10074 |
msgstr ""
|
10075 |
|
10076 |
+
#: src/lib/src/Modules/Plugin/Strings.php:248
|
10077 |
+
msgid ""
|
10078 |
+
"By leveraging and sharing information about threats to WordPress sites, "
|
10079 |
+
"ShieldNET brings the power of the entire network to your WordPress security."
|
10080 |
msgstr ""
|
10081 |
|
10082 |
+
#: src/lib/src/Modules/Plugin/Strings.php:253
|
10083 |
+
msgid "IP Source"
|
10084 |
msgstr ""
|
10085 |
|
10086 |
#: src/lib/src/Modules/Plugin/Strings.php:254
|
10087 |
+
msgid "Which IP Address Is Yours"
|
10088 |
msgstr ""
|
10089 |
|
10090 |
+
#: src/lib/src/Modules/Plugin/Strings.php:256
|
10091 |
+
msgid ""
|
10092 |
+
"Knowing the real IP address of your visitors is critical to your security, "
|
10093 |
+
"but many hosts aren't configured correctly to let us find it easily."
|
10094 |
msgstr ""
|
10095 |
|
10096 |
+
#: src/lib/src/Modules/Plugin/Strings.php:257
|
10097 |
+
msgid ""
|
10098 |
+
"There are many possible ways to detect visitor IP addresses. If Auto-Detect "
|
10099 |
+
"is not working, please select yours from the list."
|
10100 |
msgstr ""
|
10101 |
|
10102 |
+
#: src/lib/src/Modules/Plugin/Strings.php:258
|
10103 |
+
msgid ""
|
10104 |
+
"Use the link below to find your correct IP address, then select the option "
|
10105 |
+
"on the list."
|
10106 |
msgstr ""
|
10107 |
|
10108 |
+
#: src/lib/src/Modules/Plugin/Strings.php:262
|
10109 |
+
msgid "What Is My IP Address?"
|
|
|
|
|
|
|
|
|
10110 |
msgstr ""
|
10111 |
|
10112 |
+
#: src/lib/src/Modules/Plugin/Strings.php:265
|
10113 |
+
#, php-format
|
10114 |
+
msgid "Current source is: %s (%s)"
|
10115 |
msgstr ""
|
10116 |
|
10117 |
+
#: src/lib/src/Modules/Plugin/Strings.php:269
|
10118 |
+
msgid ""
|
10119 |
+
"If the option you select becomes unavailable at some point, we will revert "
|
10120 |
+
"to auto detection."
|
10121 |
msgstr ""
|
10122 |
|
10123 |
+
#: src/lib/src/Modules/Plugin/Strings.php:274
|
10124 |
+
msgid "Report Email"
|
10125 |
msgstr ""
|
10126 |
|
10127 |
+
#: src/lib/src/Modules/Plugin/Strings.php:275
|
10128 |
+
msgid "Where to send email reports"
|
10129 |
msgstr ""
|
10130 |
|
10131 |
+
#: src/lib/src/Modules/Plugin/Strings.php:277
|
10132 |
+
msgid ""
|
10133 |
+
"This lets you customise the default email address for all emails sent by the "
|
10134 |
+
"plugin."
|
10135 |
msgstr ""
|
10136 |
|
10137 |
+
#: src/lib/src/Modules/Plugin/Strings.php:278
|
10138 |
+
#, php-format
|
10139 |
+
msgid ""
|
10140 |
+
"The plugin defaults to the site administration email address, which is: %s"
|
10141 |
msgstr ""
|
10142 |
|
10143 |
+
#: src/lib/src/Modules/Plugin/Strings.php:281
|
10144 |
+
msgid "Review site settings"
|
10145 |
msgstr ""
|
10146 |
|
10147 |
+
#: src/lib/src/Modules/Plugin/Strings.php:287
|
10148 |
+
msgid "In-Plugin Notices"
|
10149 |
msgstr ""
|
10150 |
|
10151 |
+
#: src/lib/src/Modules/Plugin/Strings.php:288
|
10152 |
+
msgid "Display Plugin Specific Notices"
|
10153 |
msgstr ""
|
10154 |
|
10155 |
+
#: src/lib/src/Modules/Plugin/Strings.php:289
|
10156 |
+
msgid ""
|
10157 |
+
"Disable this option to hide certain plugin admin notices about available "
|
10158 |
+
"updates and post-update notices."
|
10159 |
msgstr ""
|
10160 |
|
10161 |
+
#: src/lib/src/Modules/Plugin/Strings.php:293
|
10162 |
+
msgid "Show Plugin Badge"
|
10163 |
msgstr ""
|
10164 |
|
10165 |
+
#: src/lib/src/Modules/Plugin/Strings.php:294
|
10166 |
+
msgid "Display Plugin Security Badge To Your Visitors"
|
10167 |
msgstr ""
|
10168 |
|
10169 |
+
#: src/lib/src/Modules/Plugin/Strings.php:296
|
10170 |
+
msgid ""
|
10171 |
+
"Enabling this option helps support the plugin by spreading the word about it "
|
10172 |
+
"on your website."
|
10173 |
msgstr ""
|
10174 |
|
10175 |
+
#: src/lib/src/Modules/Plugin/Strings.php:297
|
10176 |
+
msgid ""
|
10177 |
+
"The plugin badge also lets visitors know your are taking your website "
|
10178 |
+
"security seriously."
|
10179 |
msgstr ""
|
10180 |
|
10181 |
+
#: src/lib/src/Modules/Plugin/Strings.php:298
|
10182 |
+
msgid ""
|
10183 |
+
"This also acts as an affiliate link if you're running ShieldPRO so you can "
|
10184 |
+
"earn rewards for each referral."
|
10185 |
msgstr ""
|
10186 |
|
10187 |
+
#: src/lib/src/Modules/Plugin/Strings.php:299
|
10188 |
+
msgid "Read this carefully before enabling this option."
|
10189 |
msgstr ""
|
10190 |
|
10191 |
+
#: src/lib/src/Modules/Plugin/Strings.php:304
|
10192 |
+
msgid "Allow WP-CLI"
|
10193 |
msgstr ""
|
10194 |
|
10195 |
+
#: src/lib/src/Modules/Plugin/Strings.php:305
|
10196 |
+
msgid "Allow Access And Control Of This Plugin Via WP-CLI"
|
10197 |
msgstr ""
|
10198 |
|
10199 |
+
#: src/lib/src/Modules/Plugin/Strings.php:306
|
10200 |
+
msgid "Turn off this option to disable this plugin's WP-CLI integration."
|
10201 |
msgstr ""
|
10202 |
|
10203 |
+
#: src/lib/src/Modules/Plugin/Strings.php:310
|
10204 |
+
msgid "Delete Plugin Settings"
|
10205 |
msgstr ""
|
10206 |
|
10207 |
+
#: src/lib/src/Modules/Plugin/Strings.php:311
|
10208 |
+
msgid "Delete All Plugin Settings Upon Plugin Deactivation"
|
10209 |
msgstr ""
|
10210 |
|
10211 |
+
#: src/lib/src/Modules/Plugin/Strings.php:312
|
10212 |
+
msgid "Careful: Removes all plugin options when you deactivate the plugin"
|
10213 |
msgstr ""
|
10214 |
|
10215 |
+
#: src/lib/src/Modules/Plugin/Strings.php:316
|
10216 |
+
msgid "Locale Override"
|
10217 |
msgstr ""
|
10218 |
|
10219 |
+
#: src/lib/src/Modules/Plugin/Strings.php:317
|
10220 |
+
msgid "Set Global Locale For This Plugin For All Users"
|
10221 |
msgstr ""
|
10222 |
|
10223 |
+
#: src/lib/src/Modules/Plugin/Strings.php:319
|
10224 |
+
msgid ""
|
10225 |
+
"Use this if you want to force a language for this plugin for all users at "
|
10226 |
+
"all times."
|
10227 |
msgstr ""
|
10228 |
|
10229 |
+
#: src/lib/src/Modules/Plugin/Strings.php:320
|
10230 |
+
msgid ""
|
10231 |
+
"We don't recommend setting this unless you're sure of the consequences for "
|
10232 |
+
"all users."
|
10233 |
msgstr ""
|
10234 |
|
10235 |
+
#: src/lib/src/Modules/Plugin/Strings.php:321
|
10236 |
+
msgid ""
|
10237 |
+
"If you provide a locale for which there are no translations, defaults will "
|
10238 |
+
"apply."
|
10239 |
msgstr ""
|
10240 |
|
10241 |
+
#: src/lib/src/Modules/Plugin/Strings.php:322
|
10242 |
+
msgid "Available Locales"
|
10243 |
msgstr ""
|
10244 |
|
10245 |
+
#: src/lib/src/Modules/Plugin/Strings.php:328
|
10246 |
+
msgid "XML-RPC Compatibility"
|
10247 |
msgstr ""
|
10248 |
|
10249 |
+
#: src/lib/src/Modules/Plugin/Strings.php:329
|
10250 |
+
msgid "Allow Login Through XML-RPC To Bypass Accounts Management Rules"
|
10251 |
msgstr ""
|
10252 |
|
10253 |
+
#: src/lib/src/Modules/Plugin/Strings.php:330
|
10254 |
+
msgid ""
|
10255 |
+
"Enable this if you need XML-RPC functionality e.g. if you use the WordPress "
|
10256 |
+
"iPhone/Android App."
|
10257 |
msgstr ""
|
10258 |
|
10259 |
+
#: src/lib/src/Modules/Plugin/Strings.php:334
|
10260 |
+
msgid "Allow Import/Export"
|
10261 |
msgstr ""
|
10262 |
|
10263 |
+
#: src/lib/src/Modules/Plugin/Strings.php:335
|
10264 |
+
msgid "Allow Import And Export Of Options On This Site"
|
10265 |
msgstr ""
|
10266 |
|
10267 |
+
#: src/lib/src/Modules/Plugin/Strings.php:337
|
10268 |
+
msgid "Uncheck this box to completely disable import and export of options."
|
10269 |
msgstr ""
|
10270 |
|
10271 |
+
#: src/lib/src/Modules/Plugin/Strings.php:338
|
10272 |
+
msgid "Import/Export is a premium-only feature."
|
10273 |
msgstr ""
|
10274 |
|
10275 |
+
#: src/lib/src/Modules/Plugin/Strings.php:343
|
10276 |
+
msgid "Export Whitelist"
|
10277 |
+
msgstr ""
|
10278 |
+
|
10279 |
+
#: src/lib/src/Modules/Plugin/Strings.php:344
|
10280 |
+
msgid "Whitelisted Sites To Export Options From This Site"
|
10281 |
msgstr ""
|
10282 |
|
10283 |
#: src/lib/src/Modules/Plugin/Strings.php:346
|
10284 |
+
msgid "Whitelisted sites may export options from this site without the key."
|
10285 |
msgstr ""
|
10286 |
|
10287 |
#: src/lib/src/Modules/Plugin/Strings.php:347
|
10288 |
+
msgid "List each site URL on a new line."
|
10289 |
msgstr ""
|
10290 |
|
10291 |
#: src/lib/src/Modules/Plugin/Strings.php:348
|
10292 |
+
msgid "This is to be used in conjunction with the Master Import Site feature."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10293 |
msgstr ""
|
10294 |
|
10295 |
#: src/lib/src/Modules/Plugin/Strings.php:353
|
10296 |
+
msgid "Master Import Site"
|
10297 |
msgstr ""
|
10298 |
|
10299 |
#: src/lib/src/Modules/Plugin/Strings.php:354
|
10300 |
+
msgid "Automatically Import Options From This Site URL"
|
|
|
|
|
|
|
|
|
10301 |
msgstr ""
|
10302 |
|
10303 |
#: src/lib/src/Modules/Plugin/Strings.php:356
|
10304 |
+
msgid "Supplying a site URL here will make this site an 'Options Slave'."
|
10305 |
msgstr ""
|
10306 |
|
10307 |
#: src/lib/src/Modules/Plugin/Strings.php:357
|
10308 |
+
msgid "Options will be automatically exported from the Master site each day."
|
10309 |
msgstr ""
|
10310 |
|
10311 |
#: src/lib/src/Modules/Plugin/Strings.php:358
|
10312 |
+
msgid ""
|
10313 |
+
"Use of this feature will overwrite existing options and replace them with "
|
10314 |
+
"those from the Master Import Site."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10315 |
msgstr ""
|
10316 |
|
10317 |
#: src/lib/src/Modules/Plugin/Strings.php:363
|
10318 |
+
msgid "Notify Whitelist"
|
10319 |
msgstr ""
|
10320 |
|
10321 |
#: src/lib/src/Modules/Plugin/Strings.php:364
|
10322 |
+
msgid "Notify Sites On The Whitelist To Update Options From Master"
|
10323 |
msgstr ""
|
10324 |
|
10325 |
#: src/lib/src/Modules/Plugin/Strings.php:365
|
10326 |
+
msgid ""
|
10327 |
+
"When enabled, manual options saving will notify sites on the whitelist to "
|
10328 |
+
"export options from the Master site."
|
|
|
|
|
|
|
|
|
|
|
|
|
10329 |
msgstr ""
|
10330 |
|
10331 |
+
#: src/lib/src/Modules/Plugin/Strings.php:370
|
10332 |
+
msgid "Import/Export Secret Key"
|
10333 |
msgstr ""
|
10334 |
|
10335 |
+
#: src/lib/src/Modules/Plugin/Strings.php:371
|
10336 |
+
msgid ""
|
10337 |
+
"Keep this Secret Key private as it will allow the import and export of "
|
10338 |
+
"options."
|
10339 |
msgstr ""
|
10340 |
|
10341 |
+
#: src/lib/src/Modules/Plugin/Strings.php:376
|
10342 |
+
msgid "Unique Plugin Installation ID"
|
10343 |
msgstr ""
|
10344 |
|
10345 |
+
#: src/lib/src/Modules/Plugin/Strings.php:377
|
10346 |
+
msgid "Keep this ID private."
|
10347 |
msgstr ""
|
10348 |
|
10349 |
#: src/lib/src/Modules/Plugin/Strings.php:381
|
10350 |
+
msgid "CAPTCHA Provider"
|
10351 |
msgstr ""
|
10352 |
|
10353 |
#: src/lib/src/Modules/Plugin/Strings.php:382
|
10354 |
+
msgid "Which CAPTCHA Provider To Use Throughout"
|
|
|
10355 |
msgstr ""
|
10356 |
|
10357 |
#: src/lib/src/Modules/Plugin/Strings.php:384
|
10358 |
+
msgid "You can choose the CAPTCHA provider depending on your preferences."
|
10359 |
msgstr ""
|
10360 |
|
10361 |
#: src/lib/src/Modules/Plugin/Strings.php:385
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10362 |
msgid ""
|
10363 |
+
"Ensure your Site Keys and Secret Keys are supplied from the appropriate "
|
10364 |
+
"provider."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10365 |
msgstr ""
|
10366 |
|
10367 |
+
#: src/lib/src/Modules/Plugin/Strings.php:388
|
10368 |
+
msgid "Keys for different providers are not interchangeable."
|
|
|
|
|
10369 |
msgstr ""
|
10370 |
|
10371 |
#: src/lib/src/Modules/Plugin/Strings.php:394
|
10372 |
+
msgid "CAPTCHA Secret"
|
|
|
|
|
|
|
|
|
|
|
|
|
10373 |
msgstr ""
|
10374 |
|
10375 |
+
#: src/lib/src/Modules/Plugin/Strings.php:395
|
10376 |
+
msgid "CAPTCHA Secret Key"
|
10377 |
msgstr ""
|
10378 |
|
10379 |
#: src/lib/src/Modules/Plugin/Strings.php:397
|
10380 |
+
msgid "Enter your CAPTCHA secret key for use throughout the plugin."
|
10381 |
msgstr ""
|
10382 |
|
10383 |
#: src/lib/src/Modules/Plugin/Strings.php:398
|
10384 |
+
#: src/lib/src/Modules/Plugin/Strings.php:407
|
10385 |
+
msgid "Google reCAPTCHA v3 not supported."
|
|
|
|
|
|
|
|
|
|
|
10386 |
msgstr ""
|
10387 |
|
10388 |
#: src/lib/src/Modules/Plugin/Strings.php:403
|
|
|
|
|
|
|
10389 |
#: src/lib/src/Modules/Plugin/Strings.php:404
|
10390 |
+
msgid "CAPTCHA Site Key"
|
10391 |
msgstr ""
|
10392 |
|
10393 |
#: src/lib/src/Modules/Plugin/Strings.php:406
|
10394 |
+
msgid "Enter your CAPTCHA site key for use throughout the plugin."
|
10395 |
msgstr ""
|
10396 |
|
10397 |
+
#: src/lib/src/Modules/Plugin/Strings.php:412
|
10398 |
+
msgid "CAPTCHA Style"
|
10399 |
msgstr ""
|
10400 |
|
10401 |
+
#: src/lib/src/Modules/Plugin/Strings.php:413
|
10402 |
+
msgid "How CAPTCHA Will Be Displayed By Default"
|
10403 |
msgstr ""
|
10404 |
|
10405 |
+
#: src/lib/src/Modules/Plugin/Strings.php:414
|
10406 |
+
msgid ""
|
10407 |
+
"You can choose the CAPTCHA display format that best suits your site, "
|
10408 |
+
"including the new Invisible CAPTCHA."
|
10409 |
msgstr ""
|
10410 |
|
10411 |
+
#: src/lib/src/Modules/Plugin/Strings.php:433
|
10412 |
+
msgid "Install"
|
10413 |
msgstr ""
|
10414 |
|
10415 |
+
#: src/lib/src/Modules/Plugin/Strings.php:434
|
10416 |
+
msgid "Update"
|
10417 |
msgstr ""
|
10418 |
|
10419 |
+
#: src/lib/src/Modules/Plugin/Strings.php:435
|
10420 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:169
|
10421 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:195
|
10422 |
+
msgid "Activate"
|
10423 |
msgstr ""
|
10424 |
|
10425 |
+
#: src/lib/src/Modules/Plugin/Strings.php:437
|
10426 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:196
|
10427 |
+
msgid "Edit Theme Options"
|
10428 |
msgstr ""
|
10429 |
|
10430 |
+
#: src/lib/src/Modules/Plugin/Strings.php:438
|
10431 |
+
msgid "Create/Edit"
|
|
|
|
|
10432 |
msgstr ""
|
10433 |
|
10434 |
+
#: src/lib/src/Modules/Plugin/Strings.php:439
|
10435 |
+
msgid "Publish"
|
10436 |
msgstr ""
|
10437 |
|
10438 |
+
#: src/lib/src/Modules/Plugin/Strings.php:440
|
10439 |
+
msgid "Author Name"
|
10440 |
msgstr ""
|
10441 |
|
10442 |
+
#: src/lib/src/Modules/Plugin/Strings.php:441
|
10443 |
+
msgid "Author Email"
|
10444 |
msgstr ""
|
10445 |
|
10446 |
+
#: src/lib/src/Modules/Plugin/Strings.php:442
|
10447 |
+
msgid "Comment Content"
|
10448 |
msgstr ""
|
10449 |
|
10450 |
+
#: src/lib/src/Modules/Plugin/Strings.php:443
|
10451 |
+
msgid "Browser User Agent"
|
10452 |
msgstr ""
|
10453 |
|
10454 |
+
#: src/lib/src/Modules/Plugin/Strings.php:445
|
10455 |
+
msgid "Register"
|
10456 |
msgstr ""
|
10457 |
|
10458 |
+
#: src/lib/src/Modules/Plugin/Strings.php:447
|
10459 |
+
msgid "Checkout (WooCommerce)"
|
10460 |
msgstr ""
|
10461 |
|
10462 |
+
#: src/lib/src/Modules/Plugin/Strings.php:448
|
10463 |
+
msgid "Simple Requests"
|
|
|
|
|
10464 |
msgstr ""
|
10465 |
|
10466 |
+
#: src/lib/src/Modules/Plugin/Strings.php:449
|
10467 |
+
msgid "Logged-In Users"
|
10468 |
msgstr ""
|
10469 |
|
10470 |
+
#: src/lib/src/Modules/Plugin/Strings.php:450
|
10471 |
+
msgid "Search Engines"
|
10472 |
msgstr ""
|
10473 |
|
10474 |
+
#: src/lib/src/Modules/Plugin/Strings.php:451
|
10475 |
+
msgid "Uptime Monitoring Services"
|
10476 |
msgstr ""
|
10477 |
|
10478 |
+
#: src/lib/src/Modules/Plugin/Strings.php:452
|
10479 |
+
msgid "Enabled With Email Reports"
|
10480 |
msgstr ""
|
10481 |
|
10482 |
+
#: src/lib/src/Modules/Plugin/Strings.php:454
|
10483 |
+
msgid "Minor Versions Only"
|
10484 |
msgstr ""
|
10485 |
|
10486 |
+
#: src/lib/src/Modules/Plugin/Strings.php:455
|
10487 |
+
msgid "Major and Minor Versions"
|
10488 |
msgstr ""
|
10489 |
|
10490 |
+
#: src/lib/src/Modules/Plugin/Strings.php:456
|
10491 |
+
msgid "Let The Plugin Decide"
|
10492 |
msgstr ""
|
10493 |
|
10494 |
+
#: src/lib/src/Modules/Plugin/Strings.php:457
|
10495 |
+
msgid "As Soon As Possible"
|
10496 |
msgstr ""
|
10497 |
|
10498 |
+
#: src/lib/src/Modules/Plugin/Strings.php:458
|
10499 |
+
msgid "Move To Pending Moderation"
|
10500 |
msgstr ""
|
10501 |
|
10502 |
+
#: src/lib/src/Modules/Plugin/Strings.php:459
|
10503 |
+
msgid "Move To SPAM"
|
|
|
|
|
10504 |
msgstr ""
|
10505 |
|
10506 |
+
#: src/lib/src/Modules/Plugin/Strings.php:460
|
10507 |
+
msgid "Move To Trash"
|
|
|
|
|
10508 |
msgstr ""
|
10509 |
|
10510 |
+
#: src/lib/src/Modules/Plugin/Strings.php:461
|
10511 |
+
msgid "Block And Redirect"
|
|
|
|
|
10512 |
msgstr ""
|
10513 |
|
10514 |
+
#: src/lib/src/Modules/Plugin/Strings.php:462
|
10515 |
+
msgid "Invisible"
|
10516 |
msgstr ""
|
10517 |
|
10518 |
+
#: src/lib/src/Modules/Plugin/Strings.php:463
|
10519 |
+
msgid "Default Style"
|
|
|
|
|
10520 |
msgstr ""
|
10521 |
|
10522 |
+
#: src/lib/src/Modules/Plugin/Strings.php:464
|
10523 |
+
msgid "Redirect To Home Page"
|
|
|
|
|
10524 |
msgstr ""
|
10525 |
|
10526 |
+
#: src/lib/src/Modules/Plugin/Strings.php:465
|
10527 |
+
msgid "Return 404"
|
|
|
|
|
10528 |
msgstr ""
|
10529 |
|
10530 |
+
#: src/lib/src/Modules/Plugin/Strings.php:466
|
10531 |
+
msgid "Die"
|
|
|
|
|
10532 |
msgstr ""
|
10533 |
|
10534 |
+
#: src/lib/src/Modules/Plugin/Strings.php:467
|
10535 |
+
msgid "Scan Disabled"
|
10536 |
msgstr ""
|
10537 |
|
10538 |
+
#: src/lib/src/Modules/Plugin/Strings.php:468
|
10539 |
+
msgid "Scan Enabled"
|
10540 |
msgstr ""
|
10541 |
|
10542 |
+
#: src/lib/src/Modules/Plugin/Strings.php:469
|
10543 |
+
msgid "Automatic Scan Disabled"
|
10544 |
msgstr ""
|
10545 |
|
10546 |
+
#: src/lib/src/Modules/Plugin/Strings.php:470
|
10547 |
+
msgid "Automatic Scan Enabled"
|
10548 |
msgstr ""
|
10549 |
|
10550 |
+
#: src/lib/src/Modules/Plugin/Strings.php:471
|
10551 |
+
msgid "Scan Enabled - Send Email Notification"
|
10552 |
msgstr ""
|
10553 |
|
10554 |
+
#: src/lib/src/Modules/Plugin/Strings.php:472
|
10555 |
+
msgid "Scan Enabled - No Email Notification"
|
|
|
10556 |
msgstr ""
|
10557 |
|
10558 |
+
#: src/lib/src/Modules/Plugin/Strings.php:473
|
10559 |
+
msgid "Scan Enabled - Automatically Delete Files"
|
10560 |
msgstr ""
|
10561 |
|
10562 |
+
#: src/lib/src/Modules/Plugin/Strings.php:474
|
10563 |
+
msgid "Scan Enabled - Delete Files and Send Email Notification"
|
10564 |
msgstr ""
|
10565 |
|
10566 |
+
#: src/lib/src/Modules/Plugin/Strings.php:475
|
10567 |
+
msgid "Off: iFrames Not Blocked"
|
10568 |
msgstr ""
|
10569 |
|
10570 |
+
#: src/lib/src/Modules/Plugin/Strings.php:476
|
10571 |
+
msgid "On: Allow iFrames On The Same Domain"
|
10572 |
msgstr ""
|
10573 |
|
10574 |
+
#: src/lib/src/Modules/Plugin/Strings.php:477
|
10575 |
+
msgid "On: Block All iFrames"
|
|
|
|
|
|
|
10576 |
msgstr ""
|
10577 |
|
10578 |
+
#: src/lib/src/Modules/Plugin/Strings.php:478
|
10579 |
+
msgid "Default: Full Referrer URL (aka 'Unsafe URL')"
|
10580 |
msgstr ""
|
10581 |
|
10582 |
+
#: src/lib/src/Modules/Plugin/Strings.php:479
|
10583 |
+
msgid "No Referrer"
|
10584 |
msgstr ""
|
10585 |
|
10586 |
+
#: src/lib/src/Modules/Plugin/Strings.php:480
|
10587 |
+
msgid "No Referrer When Downgrade"
|
10588 |
msgstr ""
|
10589 |
|
10590 |
+
#: src/lib/src/Modules/Plugin/Strings.php:481
|
10591 |
+
msgid "Same Origin"
|
10592 |
msgstr ""
|
10593 |
|
10594 |
+
#: src/lib/src/Modules/Plugin/Strings.php:482
|
10595 |
+
msgid "Origin"
|
|
|
|
|
10596 |
msgstr ""
|
10597 |
|
10598 |
+
#: src/lib/src/Modules/Plugin/Strings.php:483
|
10599 |
+
msgid "Strict Origin"
|
10600 |
msgstr ""
|
10601 |
|
10602 |
+
#: src/lib/src/Modules/Plugin/Strings.php:484
|
10603 |
+
msgid "Origin When Cross-Origin"
|
|
|
10604 |
msgstr ""
|
10605 |
|
10606 |
+
#: src/lib/src/Modules/Plugin/Strings.php:485
|
10607 |
+
msgid "Strict Origin When Cross-Origin"
|
10608 |
msgstr ""
|
10609 |
|
10610 |
+
#: src/lib/src/Modules/Plugin/Strings.php:486
|
10611 |
+
msgid "Empty Header"
|
10612 |
msgstr ""
|
10613 |
|
10614 |
+
#: src/lib/src/Modules/Plugin/Strings.php:487
|
10615 |
+
msgid "Disabled - Don't Send This Header"
|
|
|
|
|
10616 |
msgstr ""
|
10617 |
|
10618 |
+
#: src/lib/src/Modules/Plugin/Strings.php:488
|
10619 |
+
msgid "Minute"
|
10620 |
msgstr ""
|
10621 |
|
10622 |
+
#: src/lib/src/Modules/Plugin/Strings.php:489
|
10623 |
+
msgid "Hour"
|
10624 |
msgstr ""
|
10625 |
|
10626 |
+
#: src/lib/src/Modules/Plugin/Strings.php:490
|
10627 |
+
msgid "Day"
|
|
|
|
|
|
|
|
|
|
|
10628 |
msgstr ""
|
10629 |
|
10630 |
+
#: src/lib/src/Modules/Plugin/Strings.php:491
|
10631 |
+
msgid "Week"
|
|
|
|
|
10632 |
msgstr ""
|
10633 |
|
10634 |
+
#: src/lib/src/Modules/Plugin/Strings.php:492
|
10635 |
+
msgid "Month"
|
10636 |
msgstr ""
|
10637 |
|
10638 |
+
#: src/lib/src/Modules/Plugin/Strings.php:493
|
10639 |
+
msgid "With Shield Bot Protection"
|
10640 |
msgstr ""
|
10641 |
|
10642 |
+
#: src/lib/src/Modules/Plugin/Strings.php:495
|
10643 |
+
msgid "Increment Offense Counter"
|
|
|
10644 |
msgstr ""
|
10645 |
|
10646 |
+
#: src/lib/src/Modules/Plugin/Strings.php:496
|
10647 |
+
msgid "Double-Increment Offense Counter"
|
10648 |
msgstr ""
|
10649 |
|
10650 |
+
#: src/lib/src/Modules/Plugin/Strings.php:497
|
10651 |
+
msgid "Immediate Block"
|
10652 |
msgstr ""
|
10653 |
|
10654 |
+
#: src/lib/src/Modules/Plugin/Strings.php:498
|
10655 |
+
#: src/lib/src/Modules/UserManagement/ModCon.php:80
|
10656 |
+
msgid "Very Weak"
|
|
|
10657 |
msgstr ""
|
10658 |
|
10659 |
+
#: src/lib/src/Modules/Plugin/Strings.php:499
|
10660 |
+
#: src/lib/src/Modules/UserManagement/ModCon.php:81
|
10661 |
+
msgid "Weak"
|
10662 |
msgstr ""
|
10663 |
|
10664 |
+
#: src/lib/src/Modules/Plugin/Strings.php:500
|
10665 |
+
#: src/lib/src/Modules/Plugin/Strings.php:569
|
10666 |
+
#: src/lib/src/Modules/UserManagement/ModCon.php:82
|
10667 |
+
msgid "Medium"
|
10668 |
msgstr ""
|
10669 |
|
10670 |
+
#: src/lib/src/Modules/Plugin/Strings.php:501
|
10671 |
+
#: src/lib/src/Modules/UserManagement/ModCon.php:83
|
10672 |
+
msgid "Strong"
|
10673 |
msgstr ""
|
10674 |
|
10675 |
+
#: src/lib/src/Modules/Plugin/Strings.php:502
|
10676 |
+
#: src/lib/src/Modules/UserManagement/ModCon.php:84
|
10677 |
+
msgid "Very Strong"
|
10678 |
msgstr ""
|
10679 |
|
10680 |
+
#: src/lib/src/Modules/Plugin/Strings.php:506
|
10681 |
+
msgid "Security Dashboard"
|
10682 |
msgstr ""
|
10683 |
|
10684 |
+
#: src/lib/src/Modules/Plugin/Strings.php:507
|
10685 |
+
msgid "Automatically Detect Visitor IP"
|
10686 |
msgstr ""
|
10687 |
|
10688 |
+
#: src/lib/src/Modules/Plugin/Strings.php:508
|
10689 |
+
msgid "IP Whitelist"
|
10690 |
msgstr ""
|
10691 |
|
10692 |
+
#: src/lib/src/Modules/Plugin/Strings.php:509
|
10693 |
+
msgid "IP Address White List"
|
10694 |
msgstr ""
|
10695 |
|
10696 |
+
#: src/lib/src/Modules/Plugin/Strings.php:510
|
10697 |
+
msgid "Any IP addresses on this list will bypass all Plugin Security Checking."
|
10698 |
msgstr ""
|
10699 |
|
10700 |
+
#: src/lib/src/Modules/Plugin/Strings.php:512
|
10701 |
+
msgid "Choose IP Addresses To Blacklist"
|
10702 |
+
msgstr ""
|
10703 |
+
|
10704 |
+
#: src/lib/src/Modules/Plugin/Strings.php:513
|
10705 |
#, php-format
|
10706 |
+
msgid "Recommendation - %s"
|
10707 |
msgstr ""
|
10708 |
|
10709 |
+
#: src/lib/src/Modules/Plugin/Strings.php:514
|
10710 |
+
msgid "Blacklist"
|
10711 |
msgstr ""
|
10712 |
|
10713 |
+
#: src/lib/src/Modules/Plugin/Strings.php:515
|
10714 |
+
msgid "Logging"
|
10715 |
msgstr ""
|
10716 |
|
10717 |
+
#: src/lib/src/Modules/Plugin/Strings.php:516
|
10718 |
+
#, php-format
|
10719 |
msgid ""
|
10720 |
+
"User \"%s\" was forcefully logged out as they were not verified by either "
|
10721 |
+
"cookie or IP address (or both)."
|
10722 |
msgstr ""
|
10723 |
|
10724 |
+
#: src/lib/src/Modules/Plugin/Strings.php:517
|
10725 |
+
#, php-format
|
10726 |
+
msgid ""
|
10727 |
+
"User \"%s\" was found to be un-verified at the given IP Address: \"%s\"."
|
10728 |
msgstr ""
|
10729 |
|
10730 |
+
#: src/lib/src/Modules/Plugin/Strings.php:518
|
10731 |
+
msgid "Cookie"
|
10732 |
msgstr ""
|
10733 |
|
10734 |
+
#: src/lib/src/Modules/Plugin/Strings.php:520
|
10735 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:116
|
10736 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:98
|
10737 |
+
msgid "IP"
|
10738 |
+
msgstr ""
|
10739 |
+
|
10740 |
+
#: src/lib/src/Modules/Plugin/Strings.php:521
|
10741 |
msgid ""
|
10742 |
+
"This will restrict all user login sessions to a single browser. Use this if "
|
10743 |
+
"your users have dynamic IP addresses."
|
10744 |
msgstr ""
|
10745 |
|
10746 |
+
#: src/lib/src/Modules/Plugin/Strings.php:522
|
10747 |
+
msgid ""
|
10748 |
+
"All users will be required to authenticate their login by email-based two-"
|
10749 |
+
"factor authentication, when logging in from a new IP address"
|
10750 |
msgstr ""
|
10751 |
|
10752 |
+
#: src/lib/src/Modules/Plugin/Strings.php:523
|
10753 |
+
msgid "2-Factor Auth"
|
10754 |
msgstr ""
|
10755 |
|
10756 |
+
#: src/lib/src/Modules/Plugin/Strings.php:524
|
10757 |
+
msgid "Include Logged-In Users"
|
|
|
|
|
10758 |
msgstr ""
|
10759 |
|
10760 |
+
#: src/lib/src/Modules/Plugin/Strings.php:525
|
10761 |
+
msgid "You may also enable GASP for logged in users"
|
10762 |
msgstr ""
|
10763 |
|
10764 |
+
#: src/lib/src/Modules/Plugin/Strings.php:526
|
10765 |
msgid ""
|
10766 |
+
"Since logged-in users would be expected to be vetted already, this is off by "
|
10767 |
+
"default."
|
10768 |
msgstr ""
|
10769 |
|
10770 |
+
#: src/lib/src/Modules/Plugin/Strings.php:528
|
10771 |
+
msgid "Protect your security plugin not just your WordPress site"
|
|
|
10772 |
msgstr ""
|
10773 |
|
10774 |
+
#: src/lib/src/Modules/Plugin/Strings.php:531
|
10775 |
+
msgid "Get a view on what happens on your site, when it happens"
|
10776 |
msgstr ""
|
10777 |
|
10778 |
+
#: src/lib/src/Modules/Plugin/Strings.php:532
|
10779 |
+
msgid "Audit Trail Viewer"
|
10780 |
msgstr ""
|
10781 |
|
10782 |
+
#: src/lib/src/Modules/Plugin/Strings.php:534
|
10783 |
+
msgid "Take back full control of WordPress automatic updates"
|
10784 |
msgstr ""
|
10785 |
|
10786 |
+
#: src/lib/src/Modules/Plugin/Strings.php:535
|
10787 |
+
msgid "Comments SPAM"
|
10788 |
msgstr ""
|
10789 |
|
10790 |
+
#: src/lib/src/Modules/Plugin/Strings.php:536
|
10791 |
+
msgid "Block Bad IPs/Visitors"
|
10792 |
msgstr ""
|
10793 |
|
10794 |
+
#: src/lib/src/Modules/Plugin/Strings.php:537
|
10795 |
+
msgid "Block comment SPAM and retain your privacy"
|
|
|
10796 |
msgstr ""
|
10797 |
|
10798 |
+
#: src/lib/src/Modules/Plugin/Strings.php:540
|
10799 |
+
msgid "Automatically block malicious URLs and data sent to your site"
|
|
|
10800 |
msgstr ""
|
10801 |
|
10802 |
+
#: src/lib/src/Modules/Plugin/Strings.php:543
|
10803 |
+
msgid "Control HTTP Security Headers"
|
10804 |
msgstr ""
|
10805 |
|
10806 |
+
#: src/lib/src/Modules/Plugin/Strings.php:545
|
10807 |
+
msgid "Manage Visitor IP Address"
|
10808 |
msgstr ""
|
10809 |
|
10810 |
+
#: src/lib/src/Modules/Plugin/Strings.php:546
|
10811 |
+
msgid "WP Lockdown"
|
10812 |
msgstr ""
|
10813 |
|
10814 |
+
#: src/lib/src/Modules/Plugin/Strings.php:547
|
10815 |
+
msgid "Harden the more loosely controlled settings of your site"
|
10816 |
msgstr ""
|
10817 |
|
10818 |
+
#: src/lib/src/Modules/Plugin/Strings.php:549
|
|
|
10819 |
msgid ""
|
10820 |
+
"Block brute force attacks and secure user identities with Two-Factor "
|
10821 |
+
"Authentication"
|
10822 |
msgstr ""
|
10823 |
|
10824 |
+
#: src/lib/src/Modules/Plugin/Strings.php:551
|
10825 |
+
msgid "General Plugin Settings"
|
10826 |
msgstr ""
|
10827 |
|
10828 |
+
#: src/lib/src/Modules/Plugin/Strings.php:552
|
10829 |
+
msgid "Statistics"
|
10830 |
msgstr ""
|
10831 |
|
10832 |
+
#: src/lib/src/Modules/Plugin/Strings.php:553
|
10833 |
+
msgid "Summary of the main security actions taken by this plugin"
|
10834 |
msgstr ""
|
10835 |
|
10836 |
+
#: src/lib/src/Modules/Plugin/Strings.php:554
|
10837 |
+
msgid "Stats Viewer"
|
10838 |
msgstr ""
|
10839 |
|
10840 |
+
#: src/lib/src/Modules/Plugin/Strings.php:555
|
10841 |
+
msgid "Premium Support"
|
10842 |
msgstr ""
|
10843 |
|
10844 |
+
#: src/lib/src/Modules/Plugin/Strings.php:556
|
10845 |
+
msgid "Premium Plugin Support Centre"
|
10846 |
msgstr ""
|
10847 |
|
10848 |
+
#: src/lib/src/Modules/Plugin/Strings.php:557
|
10849 |
+
#: src/lib/src/Modules/Sessions/Strings.php:56
|
10850 |
+
#: src/lib/src/Modules/Traffic/Strings.php:47
|
10851 |
+
#: src/lib/src/Modules/Traffic/Strings.php:56
|
10852 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:79
|
10853 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:113
|
10854 |
+
msgid "User Management"
|
10855 |
msgstr ""
|
10856 |
|
10857 |
+
#: src/lib/src/Modules/Plugin/Strings.php:558
|
10858 |
msgid ""
|
10859 |
+
"Get true user sessions and control account sharing, session duration and "
|
10860 |
+
"timeouts"
|
10861 |
msgstr ""
|
10862 |
|
10863 |
+
#: src/lib/src/Modules/Plugin/Strings.php:559
|
10864 |
+
msgid "Two-Factor Authentication"
|
10865 |
msgstr ""
|
10866 |
|
10867 |
+
#: src/lib/src/Modules/Plugin/Strings.php:562
|
10868 |
+
msgid "Dark Theme"
|
10869 |
msgstr ""
|
10870 |
|
10871 |
+
#: src/lib/src/Modules/Plugin/Strings.php:563
|
10872 |
+
msgid "Once"
|
10873 |
msgstr ""
|
10874 |
|
10875 |
+
#: src/lib/src/Modules/Plugin/Strings.php:564
|
10876 |
+
msgid "Twice"
|
|
|
|
|
10877 |
msgstr ""
|
10878 |
|
10879 |
+
#: src/lib/src/Modules/Plugin/Strings.php:565
|
10880 |
+
msgid "Go To Security Dashboard"
|
10881 |
msgstr ""
|
10882 |
|
10883 |
+
#: src/lib/src/Modules/Plugin/Strings.php:567
|
10884 |
+
msgid "None - Turn Off Malware Intelligence Network"
|
10885 |
msgstr ""
|
10886 |
|
10887 |
+
#: src/lib/src/Modules/Plugin/Strings.php:568
|
10888 |
+
msgid "Low"
|
10889 |
msgstr ""
|
10890 |
|
10891 |
+
#: src/lib/src/Modules/Plugin/Strings.php:570
|
10892 |
+
msgid "High"
|
10893 |
msgstr ""
|
10894 |
|
10895 |
+
#: src/lib/src/Modules/Plugin/Strings.php:571
|
10896 |
+
msgid "Full"
|
10897 |
msgstr ""
|
10898 |
|
10899 |
+
#: src/lib/src/Modules/Plugin/Strings.php:573
|
10900 |
+
msgid "Last Offense"
|
|
|
10901 |
msgstr ""
|
10902 |
|
10903 |
+
#: src/lib/src/Modules/Plugin/Strings.php:574
|
10904 |
+
msgid "Automatic license verification failed."
|
|
|
10905 |
msgstr ""
|
10906 |
|
10907 |
+
#: src/lib/src/Modules/Plugin/UI.php:26
|
10908 |
+
#, php-format
|
10909 |
+
msgid "%s Debug Page"
|
10910 |
msgstr ""
|
10911 |
|
10912 |
+
#: src/lib/src/Modules/Plugin/UI.php:56
|
10913 |
+
#, php-format
|
10914 |
+
msgid "%s %s Page"
|
10915 |
msgstr ""
|
10916 |
|
10917 |
+
#: src/lib/src/Modules/Plugin/UI.php:94
|
10918 |
+
msgid "Your captcha key and secret haven't been verified."
|
10919 |
msgstr ""
|
10920 |
|
10921 |
+
#: src/lib/src/Modules/Plugin/UI.php:95
|
10922 |
+
msgid ""
|
10923 |
+
"Please double-check and make sure you haven't mixed them about, and then re-"
|
10924 |
+
"save."
|
10925 |
msgstr ""
|
10926 |
|
10927 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:49
|
10928 |
msgid ""
|
10929 |
+
"File provied wasn't an absolute path, so we're using the following path to "
|
10930 |
+
"the export file"
|
10931 |
msgstr ""
|
10932 |
|
10933 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:51
|
10934 |
+
msgid "Export file path"
|
10935 |
msgstr ""
|
10936 |
|
10937 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:54
|
10938 |
+
msgid "The file specified is an existing directory."
|
10939 |
msgstr ""
|
10940 |
|
10941 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:64
|
10942 |
+
#, php-format
|
10943 |
+
msgid "Couldn't create the directory: %s"
|
|
|
10944 |
msgstr ""
|
10945 |
|
10946 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:74
|
10947 |
+
msgid "Couldn't create the export file."
|
10948 |
msgstr ""
|
10949 |
|
10950 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:77
|
10951 |
+
msgid "The system reports that this file path isn't writable."
|
|
|
10952 |
msgstr ""
|
10953 |
|
10954 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:84
|
10955 |
+
msgid "The system reports that writing the export file failed."
|
10956 |
msgstr ""
|
10957 |
|
10958 |
+
#: src/lib/src/Modules/Plugin/WpCli/Export.php:87
|
10959 |
+
msgid "Plugin configuration exported successfully."
|
10960 |
+
msgstr ""
|
10961 |
+
|
10962 |
+
#: src/lib/src/Modules/Plugin/WpCli/Import.php:69
|
10963 |
msgid ""
|
10964 |
+
"Please use the `--source=` argument to provide the source site URL or path "
|
10965 |
+
"to file."
|
10966 |
msgstr ""
|
10967 |
|
10968 |
+
#: src/lib/src/Modules/Plugin/WpCli/Import.php:73
|
10969 |
+
msgid ""
|
10970 |
+
"Importing options will overwrite this site's Shield configuration. Are you "
|
10971 |
+
"sure?"
|
10972 |
msgstr ""
|
10973 |
|
10974 |
+
#: src/lib/src/Modules/Plugin/WpCli/Import.php:90
|
10975 |
+
msgid "The import encountered an error."
|
10976 |
msgstr ""
|
10977 |
|
10978 |
+
#: src/lib/src/Modules/Plugin/WpCli/Import.php:97
|
10979 |
+
msgid "Plugin settings imported successfully."
|
10980 |
msgstr ""
|
10981 |
|
10982 |
+
#: src/lib/src/Modules/Plugin/WpCli/Import.php:117
|
10983 |
+
msgid "No secret provided so we assume we're a registered slave site."
|
10984 |
msgstr ""
|
10985 |
|
10986 |
+
#: src/lib/src/Modules/Plugin/WpCli/Reset.php:32
|
10987 |
+
msgid "Are you sure you want to reset the Shield plugin to defaults?"
|
10988 |
msgstr ""
|
10989 |
|
10990 |
+
#: src/lib/src/Modules/Plugin/WpCli/Reset.php:37
|
10991 |
+
msgid "Plugin reset to defaults."
|
10992 |
msgstr ""
|
10993 |
|
10994 |
+
#: src/lib/src/Modules/Reporting/Lib/ReportingController.php:139
|
10995 |
+
msgid "Site Report"
|
10996 |
msgstr ""
|
10997 |
|
10998 |
+
#: src/lib/src/Modules/Reporting/Lib/ReportingController.php:154
|
10999 |
+
msgid "Please find your site report below."
|
|
|
|
|
11000 |
msgstr ""
|
11001 |
|
11002 |
+
#: src/lib/src/Modules/Reporting/Lib/ReportingController.php:155
|
11003 |
+
msgid ""
|
11004 |
+
"Depending on your settings and cron timings, this report may contain a "
|
11005 |
+
"combination of alerts, statistics and other information."
|
11006 |
msgstr ""
|
11007 |
|
11008 |
+
#: src/lib/src/Modules/Reporting/Lib/ReportingController.php:157
|
11009 |
+
msgid "Report Generation Date"
|
11010 |
msgstr ""
|
11011 |
|
11012 |
+
#: src/lib/src/Modules/Reporting/Lib/ReportingController.php:158
|
11013 |
+
msgid "Please use links provided in each section to review the report details."
|
|
|
11014 |
msgstr ""
|
11015 |
|
11016 |
+
#: src/lib/src/Modules/Reporting/Lib/ReportingController.php:159
|
11017 |
+
msgid "Click here to adjust your reporting settings"
|
|
|
|
|
11018 |
msgstr ""
|
11019 |
|
11020 |
+
#: src/lib/src/Modules/Reporting/Lib/Reports/Build/BaseBuilder.php:58
|
11021 |
+
msgid "No Time Interval"
|
11022 |
msgstr ""
|
11023 |
|
11024 |
+
#: src/lib/src/Modules/Reporting/Lib/Reports/Build/BuilderAlerts.php:37
|
11025 |
+
msgid "Important Alerts"
|
11026 |
msgstr ""
|
11027 |
|
11028 |
+
#: src/lib/src/Modules/Reporting/Lib/Reports/Build/BuilderAlerts.php:38
|
11029 |
msgid ""
|
11030 |
+
"The following is a collection of the latest alerts since your previous "
|
11031 |
+
"report."
|
11032 |
msgstr ""
|
11033 |
|
11034 |
+
#: src/lib/src/Modules/Reporting/Lib/Reports/Build/BuilderInfo.php:36
|
11035 |
+
msgid "Site Information Report"
|
11036 |
msgstr ""
|
11037 |
|
11038 |
+
#: src/lib/src/Modules/Reporting/Lib/Reports/Build/BuilderInfo.php:37
|
11039 |
+
msgid ""
|
11040 |
+
"The following is a collection of the latest information based on your "
|
11041 |
+
"reporting settings."
|
11042 |
msgstr ""
|
11043 |
|
11044 |
+
#: src/lib/src/Modules/Reporting/Lib/Reports/Build/BuilderInfo.php:38
|
11045 |
+
msgid "Information is for the following time period."
|
11046 |
msgstr ""
|
11047 |
|
11048 |
+
#: src/lib/src/Modules/Reporting/Lib/Reports/Build/BuilderInfo.php:39
|
11049 |
+
msgid "Reporting Period"
|
11050 |
msgstr ""
|
11051 |
|
11052 |
+
#: src/lib/src/Modules/Reporting/Strings.php:15
|
11053 |
+
msgid "Report Generated"
|
11054 |
msgstr ""
|
11055 |
|
11056 |
+
#: src/lib/src/Modules/Reporting/Strings.php:17
|
11057 |
+
msgid "Report Generated."
|
11058 |
msgstr ""
|
11059 |
|
11060 |
+
#: src/lib/src/Modules/Reporting/Strings.php:18
|
11061 |
+
msgid "Type: {{type}}; Interval: {{interval}};"
|
11062 |
msgstr ""
|
11063 |
|
11064 |
+
#: src/lib/src/Modules/Reporting/Strings.php:22
|
11065 |
+
msgid "Report Sent"
|
11066 |
msgstr ""
|
11067 |
|
11068 |
+
#: src/lib/src/Modules/Reporting/Strings.php:24
|
11069 |
+
msgid "Report Sent (via {{medium}})."
|
11070 |
msgstr ""
|
11071 |
|
11072 |
+
#: src/lib/src/Modules/Reporting/Strings.php:41
|
11073 |
+
msgid "Alert Frequency"
|
11074 |
msgstr ""
|
11075 |
|
11076 |
+
#: src/lib/src/Modules/Reporting/Strings.php:42
|
11077 |
+
msgid "How Often Important Alerts Will Be Sent To You"
|
11078 |
+
msgstr ""
|
11079 |
+
|
11080 |
+
#: src/lib/src/Modules/Reporting/Strings.php:44
|
11081 |
msgid ""
|
11082 |
+
"Choose when you should be sent important and critical alerts about your site "
|
11083 |
+
"security."
|
11084 |
msgstr ""
|
11085 |
|
11086 |
+
#: src/lib/src/Modules/Reporting/Strings.php:45
|
11087 |
+
msgid "Critical alerts are typically results from your most recent site scans."
|
11088 |
+
msgstr ""
|
11089 |
+
|
11090 |
+
#: src/lib/src/Modules/Reporting/Strings.php:48
|
11091 |
msgid ""
|
11092 |
+
"If you wish to receive alerts more quickly, please consider upgrading to "
|
11093 |
+
"ShieldPRO."
|
11094 |
msgstr ""
|
11095 |
|
11096 |
+
#: src/lib/src/Modules/Reporting/Strings.php:49
|
11097 |
+
#: src/lib/src/Modules/Reporting/Strings.php:62
|
11098 |
+
msgid "Upgrade to ShieldPRO"
|
11099 |
msgstr ""
|
11100 |
|
11101 |
+
#: src/lib/src/Modules/Reporting/Strings.php:54
|
11102 |
+
msgid "Info Frequency"
|
11103 |
msgstr ""
|
11104 |
|
11105 |
+
#: src/lib/src/Modules/Reporting/Strings.php:55
|
11106 |
+
msgid "How Often Informational Reports Will Be Sent To You"
|
11107 |
msgstr ""
|
11108 |
|
11109 |
+
#: src/lib/src/Modules/Reporting/Strings.php:57
|
11110 |
msgid ""
|
11111 |
+
"Choose when you should be sent non-critical information and reports about "
|
11112 |
+
"your site security."
|
11113 |
msgstr ""
|
11114 |
|
11115 |
+
#: src/lib/src/Modules/Reporting/Strings.php:58
|
11116 |
+
msgid "Information and reports are typically statistics."
|
11117 |
msgstr ""
|
11118 |
|
11119 |
+
#: src/lib/src/Modules/Reporting/Strings.php:61
|
11120 |
+
msgid ""
|
11121 |
+
"If you wish to receive reports more often, please consider upgrading to "
|
11122 |
+
"ShieldPRO."
|
11123 |
msgstr ""
|
11124 |
|
11125 |
+
#: src/lib/src/Modules/Reporting/Strings.php:87
|
11126 |
+
#: src/lib/src/Modules/Reporting/Strings.php:88
|
11127 |
+
msgid "Report Frequencies"
|
|
|
11128 |
msgstr ""
|
11129 |
|
11130 |
+
#: src/lib/src/Modules/Reporting/Strings.php:90
|
11131 |
+
msgid "Receive regular reports from the plugin summarising important events."
|
11132 |
msgstr ""
|
11133 |
|
11134 |
+
#: src/lib/src/Modules/Reporting/Strings.php:97
|
11135 |
+
msgid "Update reporting email address"
|
11136 |
msgstr ""
|
11137 |
|
11138 |
+
#: src/lib/src/Modules/Reporting/Strings.php:99
|
11139 |
+
msgid ""
|
11140 |
+
"Choose the most appropriate frequency to receive alerts from Shield "
|
11141 |
+
"according to your schedule."
|
11142 |
msgstr ""
|
11143 |
|
11144 |
+
#: src/lib/src/Modules/Reporting/UI.php:22
|
11145 |
+
msgid "Events"
|
11146 |
msgstr ""
|
11147 |
|
11148 |
+
#: src/lib/src/Modules/Reporting/UI.php:23
|
11149 |
+
msgid "Interval"
|
11150 |
msgstr ""
|
11151 |
|
11152 |
+
#: src/lib/src/Modules/Reporting/UI.php:24
|
11153 |
+
msgid "Build Chart"
|
|
|
11154 |
msgstr ""
|
11155 |
|
11156 |
+
#: src/lib/src/Modules/Reporting/UI.php:29
|
11157 |
+
msgid "Hourly"
|
11158 |
msgstr ""
|
11159 |
|
11160 |
+
#: src/lib/src/Modules/Reporting/UI.php:30
|
11161 |
+
msgid "Daily"
|
11162 |
msgstr ""
|
11163 |
|
11164 |
+
#: src/lib/src/Modules/Reporting/UI.php:31
|
11165 |
+
msgid "Weekly"
|
11166 |
msgstr ""
|
11167 |
|
11168 |
+
#: src/lib/src/Modules/Reporting/UI.php:32
|
11169 |
+
msgid "Monthly"
|
11170 |
msgstr ""
|
11171 |
|
11172 |
+
#: src/lib/src/Modules/Reporting/UI.php:33
|
11173 |
+
msgid "Yearly"
|
11174 |
msgstr ""
|
11175 |
|
11176 |
+
#: src/lib/src/Modules/Reporting/UI.php:73
|
11177 |
+
#: src/lib/src/Modules/Reporting/UI.php:86
|
11178 |
+
#: src/lib/src/Modules/Reporting/UI.php:93
|
11179 |
+
#: src/lib/src/Modules/Reporting/UI.php:104
|
11180 |
+
#: src/lib/src/Modules/Reporting/UI.php:111
|
11181 |
+
msgid "Lifetime Total"
|
11182 |
msgstr ""
|
11183 |
|
11184 |
+
#: src/lib/src/Modules/Reporting/UI.php:75
|
11185 |
+
msgid "Total login attempts blocked."
|
|
|
11186 |
msgstr ""
|
11187 |
|
11188 |
+
#: src/lib/src/Modules/Reporting/UI.php:88
|
11189 |
+
msgid "Total requests identified as bots."
|
11190 |
msgstr ""
|
11191 |
|
11192 |
+
#: src/lib/src/Modules/Reporting/UI.php:99
|
11193 |
+
msgid "Total SPAM comments blocked."
|
11194 |
msgstr ""
|
11195 |
|
11196 |
+
#: src/lib/src/Modules/Reporting/UI.php:103
|
11197 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBase.php:19
|
11198 |
+
msgid "Offenses"
|
|
|
11199 |
msgstr ""
|
11200 |
|
11201 |
+
#: src/lib/src/Modules/Reporting/UI.php:106
|
11202 |
+
msgid "Total offenses against the site."
|
|
|
|
|
11203 |
msgstr ""
|
11204 |
|
11205 |
+
#: src/lib/src/Modules/Reporting/UI.php:113
|
11206 |
+
msgid "Total connections blocked/killed after too many offenses."
|
11207 |
msgstr ""
|
11208 |
|
11209 |
+
#: src/lib/src/Modules/Reporting/UI.php:118
|
11210 |
+
msgid "Now"
|
11211 |
msgstr ""
|
11212 |
|
11213 |
+
#: src/lib/src/Modules/Reporting/UI.php:121
|
11214 |
+
msgid "IP address exceeds offense limit and is blocked."
|
11215 |
msgstr ""
|
11216 |
|
11217 |
+
#: src/lib/src/Modules/Reporting/UI.php:126
|
11218 |
+
#, php-format
|
11219 |
+
msgid "previous %s %s"
|
|
|
11220 |
msgstr ""
|
11221 |
|
11222 |
+
#: src/lib/src/Modules/Reporting/UI.php:126
|
11223 |
+
msgid "days"
|
11224 |
msgstr ""
|
11225 |
|
11226 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:39
|
11227 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:61
|
11228 |
+
#, php-format
|
11229 |
+
msgid "%s Security Restrictions Applied"
|
11230 |
msgstr ""
|
11231 |
|
11232 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:40
|
11233 |
+
msgid ""
|
11234 |
+
"Altering certain options has been restricted by your WordPress security "
|
11235 |
+
"administrator."
|
11236 |
msgstr ""
|
11237 |
|
11238 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:41
|
11239 |
msgid ""
|
11240 |
+
"Repeated failed attempts to authenticate will probably lock you out of this "
|
11241 |
+
"site."
|
11242 |
msgstr ""
|
11243 |
|
11244 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:47
|
11245 |
+
msgid "Admin Access Login"
|
11246 |
msgstr ""
|
11247 |
|
11248 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:48
|
11249 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:76
|
11250 |
+
#, php-format
|
11251 |
+
msgid "Go here to manage settings and authenticate with the %s plugin."
|
11252 |
msgstr ""
|
11253 |
|
11254 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:62
|
11255 |
+
msgid ""
|
11256 |
+
"Editing existing administrators, promoting existing users to the "
|
11257 |
+
"administrator role, or deleting administrator users is currently restricted."
|
11258 |
msgstr ""
|
11259 |
|
11260 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:63
|
11261 |
+
msgid ""
|
11262 |
+
"Please authenticate with the Security Admin system before attempting any "
|
11263 |
+
"administrator user modifications."
|
11264 |
msgstr ""
|
11265 |
|
11266 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:67
|
11267 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:75
|
11268 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:93
|
11269 |
+
msgid "Security Admin Login"
|
11270 |
msgstr ""
|
11271 |
|
11272 |
+
#: src/lib/src/Modules/SecurityAdmin/AdminNotices.php:68
|
11273 |
+
msgid "Unlock Now"
|
11274 |
msgstr ""
|
11275 |
|
11276 |
+
#: src/lib/src/Modules/SecurityAdmin/AjaxHandler.php:51
|
11277 |
+
msgid "Security Admin PIN Accepted."
|
|
|
|
|
11278 |
msgstr ""
|
11279 |
|
11280 |
+
#: src/lib/src/Modules/SecurityAdmin/AjaxHandler.php:52
|
11281 |
+
msgid "Please wait"
|
11282 |
msgstr ""
|
11283 |
|
11284 |
+
#: src/lib/src/Modules/SecurityAdmin/AjaxHandler.php:59
|
11285 |
+
msgid "Security Admin PIN incorrect."
|
11286 |
msgstr ""
|
11287 |
|
11288 |
+
#: src/lib/src/Modules/SecurityAdmin/AjaxHandler.php:61
|
11289 |
+
#, php-format
|
11290 |
+
msgid "Attempts remaining: %s."
|
11291 |
msgstr ""
|
11292 |
|
11293 |
+
#: src/lib/src/Modules/SecurityAdmin/AjaxHandler.php:64
|
11294 |
+
msgid "No attempts remaining."
|
11295 |
msgstr ""
|
11296 |
|
11297 |
+
#: src/lib/src/Modules/SecurityAdmin/AjaxHandler.php:83
|
11298 |
msgid ""
|
11299 |
+
"Email sent. Please ensure the confirmation link opens in THIS browser window."
|
|
|
11300 |
msgstr ""
|
11301 |
|
11302 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:22
|
11303 |
+
msgid "Security plugin is vulnerable to tampering"
|
11304 |
+
msgstr ""
|
11305 |
+
|
11306 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:30
|
11307 |
+
msgid "Security plugin is protected against tampering"
|
11308 |
+
msgstr ""
|
11309 |
+
|
11310 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:36
|
11311 |
+
msgid "Important Options"
|
11312 |
msgstr ""
|
11313 |
|
11314 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:39
|
11315 |
+
msgid "Important WP options are protected against tampering"
|
11316 |
msgstr ""
|
11317 |
|
11318 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:40
|
11319 |
+
msgid "Important WP options aren't protected against tampering"
|
|
|
11320 |
msgstr ""
|
11321 |
|
11322 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:46
|
11323 |
+
msgid "WP Admins"
|
11324 |
msgstr ""
|
11325 |
|
11326 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:49
|
11327 |
+
msgid "Admin users are protected against tampering"
|
|
|
11328 |
msgstr ""
|
11329 |
|
11330 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:50
|
11331 |
+
msgid "Admin users aren't protected against tampering"
|
11332 |
msgstr ""
|
11333 |
|
11334 |
+
#: src/lib/src/Modules/SecurityAdmin/Insights/OverviewCards.php:63
|
11335 |
+
#, php-format
|
11336 |
+
msgid "Prevent Tampering With %s Settings"
|
11337 |
msgstr ""
|
11338 |
|
11339 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:29
|
11340 |
+
msgid "Please Confirm Security Admin Removal"
|
|
|
|
|
11341 |
msgstr ""
|
11342 |
|
11343 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:31
|
11344 |
#, php-format
|
11345 |
+
msgid ""
|
11346 |
+
"A WordPress user (%s) has requested to remove the Security Admin restriction."
|
11347 |
msgstr ""
|
11348 |
|
11349 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:33
|
11350 |
+
msgid "The purpose of this email is to confirm this action."
|
11351 |
msgstr ""
|
11352 |
|
11353 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:34
|
11354 |
+
msgid ""
|
11355 |
+
"Please click the link below to confirm the removal of the Security Admin "
|
11356 |
+
"restriction."
|
11357 |
msgstr ""
|
11358 |
|
11359 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:37
|
11360 |
msgid ""
|
11361 |
+
"This link must be opened in the same browser that was used to make this "
|
11362 |
+
"original request."
|
11363 |
+
msgstr ""
|
11364 |
+
|
11365 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:40
|
11366 |
+
msgid "Confirmation link"
|
11367 |
msgstr ""
|
11368 |
|
11369 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:43
|
11370 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:61
|
11371 |
msgid ""
|
11372 |
+
"Please understand that to reinstate the Security Admin features, you'll need "
|
11373 |
+
"to provide a new Security Admin PIN."
|
11374 |
msgstr ""
|
11375 |
|
11376 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:55
|
11377 |
+
msgid "Security Admin restrictions have been removed"
|
11378 |
msgstr ""
|
11379 |
|
11380 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:57
|
11381 |
+
msgid ""
|
11382 |
+
"This is an email notification to inform you that the Security Admin "
|
11383 |
+
"restriction has been removed."
|
11384 |
msgstr ""
|
11385 |
|
11386 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:58
|
11387 |
msgid ""
|
11388 |
+
"This was done using a confirmation email sent to the Security Administrator "
|
11389 |
+
"email address."
|
11390 |
msgstr ""
|
11391 |
|
11392 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Ops/RemoveSecAdmin.php:59
|
11393 |
+
msgid "All restrictions imposed by the Security Admin module have been lifted."
|
11394 |
msgstr ""
|
11395 |
|
11396 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Restrictions/Users.php:107
|
11397 |
+
msgid ""
|
11398 |
+
"Sorry, deleting administrators is currently restricted to your Security Admin"
|
11399 |
msgstr ""
|
11400 |
|
11401 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:85
|
11402 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:87
|
11403 |
+
msgid "Security Admin session has timed-out."
|
11404 |
msgstr ""
|
11405 |
|
11406 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:85
|
11407 |
+
msgid "Click OK to reload and re-authenticate."
|
11408 |
msgstr ""
|
11409 |
|
11410 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:86
|
11411 |
+
msgid "Security Admin session has nearly timed-out."
|
11412 |
msgstr ""
|
11413 |
|
11414 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:94
|
11415 |
+
msgid "Unlock"
|
11416 |
+
msgstr ""
|
11417 |
+
|
11418 |
+
#: src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/SecurityAdminController.php:170
|
11419 |
+
msgid "Enter your Security Admin PIN"
|
11420 |
msgstr ""
|
11421 |
|
11422 |
+
#: src/lib/src/Modules/SecurityAdmin/ModCon.php:148
|
11423 |
msgid ""
|
11424 |
+
"Sorry, this plugin is protected against unauthorised attempts to disable it."
|
|
|
11425 |
msgstr ""
|
11426 |
|
11427 |
+
#: src/lib/src/Modules/SecurityAdmin/ModCon.php:151
|
11428 |
+
msgid "You'll just need to authenticate first and try again."
|
11429 |
msgstr ""
|
11430 |
|
11431 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:15
|
11432 |
+
msgid "Security PIN Pass"
|
11433 |
msgstr ""
|
11434 |
|
11435 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:17
|
11436 |
+
msgid "Security PIN authentication successful."
|
|
|
|
|
11437 |
msgstr ""
|
11438 |
|
11439 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:21
|
11440 |
+
msgid "Security PIN Fail"
|
|
|
|
|
11441 |
msgstr ""
|
11442 |
|
11443 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:23
|
11444 |
+
msgid "Security PIN authentication failed."
|
11445 |
msgstr ""
|
11446 |
|
11447 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:43
|
11448 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:52
|
11449 |
+
msgid ""
|
11450 |
+
"Restricts access to this plugin preventing unauthorized changes to your "
|
11451 |
+
"security settings."
|
11452 |
msgstr ""
|
11453 |
|
11454 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:45
|
11455 |
+
msgid "You need to also enter a new Security PIN to enable this feature."
|
11456 |
msgstr ""
|
11457 |
|
11458 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:50
|
11459 |
+
msgid "Security Admin Restriction Settings"
|
11460 |
msgstr ""
|
11461 |
|
11462 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:59
|
11463 |
+
msgid "Security Admin Restriction Zones"
|
11464 |
msgstr ""
|
11465 |
|
11466 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:61
|
11467 |
msgid ""
|
11468 |
+
"Restricts access to key WordPress areas for all users not authenticated with "
|
11469 |
+
"the Security Admin Access system."
|
11470 |
msgstr ""
|
11471 |
|
11472 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:64
|
11473 |
+
msgid "Access Restriction Zones"
|
11474 |
msgstr ""
|
11475 |
|
11476 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:72
|
11477 |
+
#, php-format
|
11478 |
+
msgid "Rename and re-brand the %s plugin for your client site installations."
|
11479 |
msgstr ""
|
11480 |
|
11481 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:77
|
11482 |
+
msgid "The Security Admin system must be active for these settings to apply."
|
11483 |
msgstr ""
|
11484 |
|
11485 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:109
|
11486 |
+
msgid "Enforce Security Admin Access Restriction"
|
|
|
|
|
11487 |
msgstr ""
|
11488 |
|
11489 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:110
|
11490 |
+
msgid ""
|
11491 |
+
"Enable this with great care and consideration. Ensure that you set an "
|
11492 |
+
"Security PIN that you'll remember."
|
11493 |
msgstr ""
|
11494 |
|
11495 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:115
|
11496 |
+
msgid "Provide/Update Security Admin PIN"
|
11497 |
msgstr ""
|
11498 |
|
11499 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:117
|
11500 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:161
|
11501 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:168
|
11502 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:175
|
11503 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:181
|
11504 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:187
|
11505 |
+
msgid "Careful"
|
11506 |
msgstr ""
|
11507 |
|
11508 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:117
|
11509 |
+
msgid ""
|
11510 |
+
"If you forget this, you could potentially lock yourself out from using this "
|
11511 |
+
"plugin."
|
11512 |
msgstr ""
|
11513 |
|
11514 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:118
|
11515 |
+
msgid "Security PIN Currently Set"
|
11516 |
msgstr ""
|
11517 |
|
11518 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:118
|
11519 |
+
msgid "Security PIN NOT Currently Set"
|
|
|
|
|
11520 |
msgstr ""
|
11521 |
|
11522 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:121
|
11523 |
+
#, php-format
|
11524 |
+
msgid "To delete the current security PIN, type exactly \"%s\" and save."
|
11525 |
msgstr ""
|
11526 |
|
11527 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:123
|
11528 |
+
msgid "Deleting the PIN will also remove security admin users."
|
11529 |
msgstr ""
|
11530 |
|
11531 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:130
|
11532 |
+
msgid "Security Admins"
|
11533 |
msgstr ""
|
11534 |
|
11535 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:131
|
11536 |
+
msgid "Persistent Security Admins"
|
|
|
|
|
11537 |
msgstr ""
|
11538 |
|
11539 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:133
|
11540 |
+
msgid ""
|
11541 |
+
"Users provided will be security admins automatically, without needing the "
|
11542 |
+
"security PIN."
|
11543 |
msgstr ""
|
11544 |
|
11545 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:134
|
11546 |
+
msgid "Enter admin username, email or ID."
|
11547 |
msgstr ""
|
11548 |
|
11549 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:134
|
11550 |
+
msgid "1 entry per-line."
|
11551 |
msgstr ""
|
11552 |
|
11553 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:135
|
11554 |
+
msgid "Verified users will be converted to usernames."
|
|
|
11555 |
msgstr ""
|
11556 |
|
11557 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:140
|
11558 |
+
msgid "Security Admin Timeout"
|
11559 |
msgstr ""
|
11560 |
|
11561 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:141
|
11562 |
+
msgid "Specify An Automatic Timeout Interval For Security Admin Access"
|
11563 |
msgstr ""
|
11564 |
|
11565 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:142
|
11566 |
+
msgid "This will automatically expire your Security Admin Session."
|
11567 |
msgstr ""
|
11568 |
|
11569 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:152
|
11570 |
+
msgid "Allow Email Override"
|
11571 |
msgstr ""
|
11572 |
|
11573 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:153
|
11574 |
+
msgid "Allow Email Override Of Admin Access Restrictions"
|
|
|
|
|
|
|
|
|
|
|
11575 |
msgstr ""
|
11576 |
|
11577 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:154
|
11578 |
+
msgid ""
|
11579 |
+
"Allow the use of verification emails to override and switch off the Security "
|
11580 |
+
"Admin restrictions."
|
11581 |
msgstr ""
|
11582 |
|
11583 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:155
|
11584 |
+
#, php-format
|
11585 |
+
msgid "The email address specified in %s's General settings will be used."
|
11586 |
msgstr ""
|
11587 |
|
11588 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:159
|
11589 |
+
msgid "Pages"
|
11590 |
msgstr ""
|
11591 |
|
11592 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:160
|
11593 |
+
msgid "Restrict Access To Key WordPress Posts And Pages Actions"
|
11594 |
msgstr ""
|
11595 |
|
11596 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:161
|
11597 |
+
msgid "This will restrict access to page/post creation, editing and deletion."
|
|
|
11598 |
msgstr ""
|
11599 |
|
11600 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:162
|
11601 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:169
|
11602 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:192
|
11603 |
#, php-format
|
11604 |
+
msgid "Selecting \"%s\" will also restrict all other options."
|
11605 |
msgstr ""
|
11606 |
|
11607 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:162
|
11608 |
+
msgid "Edit"
|
|
|
11609 |
msgstr ""
|
11610 |
|
11611 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:167
|
11612 |
+
msgid "Restrict Access To Key WordPress Plugin Actions"
|
11613 |
msgstr ""
|
11614 |
|
11615 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:168
|
11616 |
+
msgid ""
|
11617 |
+
"This will restrict access to plugin installation, update, activation and "
|
11618 |
+
"deletion."
|
11619 |
msgstr ""
|
11620 |
|
11621 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:173
|
11622 |
+
msgid "WordPress Options"
|
|
|
11623 |
msgstr ""
|
11624 |
|
11625 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:174
|
11626 |
+
msgid "Restrict Access To Certain WordPress Admin Options"
|
11627 |
msgstr ""
|
11628 |
|
11629 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:175
|
11630 |
+
msgid ""
|
11631 |
+
"This will restrict the ability of WordPress administrators from changing key "
|
11632 |
+
"WordPress settings."
|
11633 |
msgstr ""
|
11634 |
|
11635 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:179
|
11636 |
+
msgid "Admin Users"
|
11637 |
msgstr ""
|
11638 |
|
11639 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:180
|
11640 |
+
msgid "Restrict Access To Create/Delete/Modify Other Admin Users"
|
|
|
11641 |
msgstr ""
|
11642 |
|
11643 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:181
|
11644 |
+
msgid ""
|
11645 |
+
"This will restrict the ability of WordPress administrators from creating, "
|
11646 |
+
"modifying or promoting other administrators."
|
11647 |
msgstr ""
|
11648 |
|
11649 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:186
|
11650 |
+
msgid "Restrict Access To WordPress Theme Actions"
|
11651 |
msgstr ""
|
11652 |
|
11653 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:187
|
11654 |
+
msgid ""
|
11655 |
+
"This will restrict access to theme installation, update, activation and "
|
11656 |
+
"deletion."
|
11657 |
msgstr ""
|
11658 |
|
11659 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:194
|
11660 |
+
#, php-format
|
11661 |
+
msgid "%s and %s"
|
11662 |
msgstr ""
|
11663 |
|
11664 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:203
|
11665 |
+
msgid "Enable"
|
|
|
11666 |
msgstr ""
|
11667 |
|
11668 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:204
|
11669 |
+
msgid "Activate Your White Label Settings"
|
11670 |
msgstr ""
|
11671 |
|
11672 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:205
|
11673 |
+
msgid "Turn your White Label settings on/off."
|
|
|
11674 |
msgstr ""
|
11675 |
|
11676 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:208
|
11677 |
+
msgid "Hide Updates"
|
11678 |
msgstr ""
|
11679 |
|
11680 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:209
|
11681 |
+
msgid "Hide Plugin Updates From Non-Security Admins"
|
11682 |
msgstr ""
|
11683 |
|
11684 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:210
|
11685 |
+
#, php-format
|
11686 |
+
msgid "Hide available %s updates from non-security administrators."
|
11687 |
msgstr ""
|
11688 |
|
11689 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:213
|
11690 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:225
|
11691 |
+
msgid "Plugin Name"
|
11692 |
msgstr ""
|
11693 |
|
11694 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:214
|
11695 |
+
msgid "The Name Of The Plugin"
|
|
|
11696 |
msgstr ""
|
11697 |
|
11698 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:215
|
11699 |
+
msgid "The name of the plugin that will be displayed to your site users."
|
|
|
11700 |
msgstr ""
|
11701 |
|
11702 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:218
|
11703 |
+
msgid "Replace Plugin Badge"
|
|
|
11704 |
msgstr ""
|
11705 |
|
11706 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:219
|
11707 |
+
msgid "Replace Plugin Badge URL and Images"
|
11708 |
msgstr ""
|
11709 |
|
11710 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:220
|
11711 |
+
msgid ""
|
11712 |
+
"When using the plugin badge, replace the URL and link with your Whitelabel "
|
11713 |
+
"settings."
|
11714 |
msgstr ""
|
11715 |
|
11716 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:223
|
11717 |
+
msgid "Menu Title"
|
11718 |
msgstr ""
|
11719 |
|
11720 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:224
|
11721 |
+
msgid "The Main Menu Title Of The Plugin"
|
|
|
|
|
|
|
11722 |
msgstr ""
|
11723 |
|
11724 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:225
|
11725 |
+
#, php-format
|
11726 |
+
msgid ""
|
11727 |
+
"The Main Menu Title Of The Plugin. If left empty, the \"%s\" will be used."
|
11728 |
msgstr ""
|
11729 |
|
11730 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:228
|
11731 |
+
msgid "Company Name"
|
11732 |
msgstr ""
|
11733 |
|
11734 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:229
|
11735 |
+
msgid "The Name Of Your Company"
|
|
|
|
|
|
|
11736 |
msgstr ""
|
11737 |
|
11738 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:230
|
11739 |
+
msgid "Provide the name of your company."
|
11740 |
msgstr ""
|
11741 |
|
11742 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:234
|
11743 |
+
msgid "The Description Of The Plugin"
|
|
|
|
|
11744 |
msgstr ""
|
11745 |
|
11746 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:235
|
11747 |
+
msgid "The description of the plugin displayed on the plugins page."
|
|
|
|
|
|
|
|
|
|
|
11748 |
msgstr ""
|
11749 |
|
11750 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:238
|
11751 |
+
msgid "Home URL"
|
|
|
11752 |
msgstr ""
|
11753 |
|
11754 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:239
|
11755 |
+
msgid "Plugin Home Page URL"
|
11756 |
msgstr ""
|
11757 |
|
11758 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:240
|
11759 |
+
msgid ""
|
11760 |
+
"When a user clicks the home link for this plugin, this is where they'll be "
|
11761 |
+
"directed."
|
11762 |
msgstr ""
|
11763 |
|
11764 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:243
|
11765 |
+
msgid "Menu Icon"
|
11766 |
msgstr ""
|
11767 |
|
11768 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:244
|
11769 |
+
msgid "Menu Icon URL"
|
11770 |
msgstr ""
|
11771 |
|
11772 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:245
|
11773 |
+
msgid "The URL of the icon to display in the menu."
|
11774 |
msgstr ""
|
11775 |
|
11776 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:246
|
11777 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:252
|
11778 |
+
#, php-format
|
11779 |
+
msgid "The %s should measure %s."
|
11780 |
msgstr ""
|
11781 |
|
11782 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:246
|
11783 |
+
msgid "icon"
|
|
|
|
|
|
|
11784 |
msgstr ""
|
11785 |
|
11786 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:249
|
11787 |
+
msgid "Plugin Badge Logo"
|
11788 |
msgstr ""
|
11789 |
|
11790 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:250
|
11791 |
+
msgid "Plugin Badge Logo URL"
|
|
|
11792 |
msgstr ""
|
11793 |
|
11794 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:251
|
11795 |
+
msgid "The URL of the logo to display in the plugin badge."
|
11796 |
msgstr ""
|
11797 |
|
11798 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:252
|
11799 |
+
msgid "logo"
|
11800 |
msgstr ""
|
11801 |
|
11802 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:255
|
11803 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:256
|
11804 |
+
msgid "Dashboard and 2FA Login Logo URL"
|
11805 |
msgstr ""
|
11806 |
|
11807 |
+
#: src/lib/src/Modules/SecurityAdmin/Strings.php:257
|
11808 |
+
msgid ""
|
11809 |
+
"The URL of the logo to display on the Dashboard and the Two-Factor "
|
11810 |
+
"Authentication login page."
|
11811 |
msgstr ""
|
11812 |
|
11813 |
+
#: src/lib/src/Modules/SecurityAdmin/UI.php:18
|
11814 |
+
msgid ""
|
11815 |
+
"Please also supply a Security Admin PIN, as whitelabel settings are only "
|
11816 |
+
"applied when the Security Admin feature is active."
|
11817 |
msgstr ""
|
11818 |
|
11819 |
+
#: src/lib/src/Modules/SecurityAdmin/WpCli/Pin.php:57
|
11820 |
+
msgid "Security admin pin removed."
|
|
|
11821 |
msgstr ""
|
11822 |
|
11823 |
+
#: src/lib/src/Modules/SecurityAdmin/WpCli/Pin.php:65
|
11824 |
+
#, php-format
|
11825 |
+
msgid "Security admin pin set to: \"%s\""
|
11826 |
msgstr ""
|
11827 |
|
11828 |
+
#: src/lib/src/Modules/SecurityAdmin/WpCli/Pin.php:71
|
11829 |
+
msgid "Setting Security admin pin failed."
|
|
|
11830 |
msgstr ""
|
11831 |
|
11832 |
+
#: src/lib/src/Modules/Sessions/Processor.php:83
|
11833 |
+
msgid "You're already logged-in."
|
11834 |
msgstr ""
|
11835 |
|
11836 |
+
#: src/lib/src/Modules/Sessions/Processor.php:87
|
11837 |
+
msgid "Go To Admin"
|
11838 |
msgstr ""
|
11839 |
|
11840 |
+
#: src/lib/src/Modules/Sessions/Strings.php:15
|
11841 |
+
msgid "Session Started"
|
11842 |
msgstr ""
|
11843 |
|
11844 |
+
#: src/lib/src/Modules/Sessions/Strings.php:17
|
11845 |
msgid ""
|
11846 |
+
"Session started for user ({{user_login}}) with session ID {{session_id}}."
|
11847 |
msgstr ""
|
11848 |
|
11849 |
+
#: src/lib/src/Modules/Sessions/Strings.php:21
|
11850 |
+
msgid "Session Terminated"
|
|
|
11851 |
msgstr ""
|
11852 |
|
11853 |
+
#: src/lib/src/Modules/Sessions/Strings.php:23
|
11854 |
+
msgid "Session terminated."
|
11855 |
msgstr ""
|
11856 |
|
11857 |
+
#: src/lib/src/Modules/Sessions/Strings.php:27
|
11858 |
+
msgid "Current Session Terminated"
|
|
|
|
|
|
|
11859 |
msgstr ""
|
11860 |
|
11861 |
+
#: src/lib/src/Modules/Sessions/Strings.php:29
|
11862 |
+
msgid ""
|
11863 |
+
"Current session terminated for user ({{user_login}}) with session ID "
|
11864 |
+
"{{session_id}}."
|
11865 |
msgstr ""
|
11866 |
|
11867 |
+
#: src/lib/src/Modules/Sessions/Strings.php:33
|
11868 |
+
msgid "Login Success"
|
|
|
11869 |
msgstr ""
|
11870 |
|
11871 |
+
#: src/lib/src/Modules/Sessions/Strings.php:35
|
11872 |
+
msgid "Login successful."
|
11873 |
msgstr ""
|
11874 |
|
11875 |
+
#: src/lib/src/Modules/Sessions/Strings.php:55
|
11876 |
+
msgid "Creates and Manages User Sessions."
|
|
|
11877 |
msgstr ""
|
11878 |
|
11879 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:119
|
11880 |
+
msgid "Location"
|
11881 |
msgstr ""
|
11882 |
|
11883 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:172
|
11884 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:180
|
11885 |
+
msgid "No Record"
|
11886 |
msgstr ""
|
11887 |
|
11888 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:188
|
|
|
11889 |
#, php-format
|
11890 |
+
msgid "%s offense"
|
11891 |
+
msgid_plural "%s offenses"
|
11892 |
+
msgstr[0] ""
|
11893 |
+
msgstr[1] ""
|
11894 |
|
11895 |
+
#: src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php:194
|
11896 |
+
msgid "Bypass"
|
11897 |
msgstr ""
|
11898 |
|
11899 |
+
#: src/lib/src/Modules/Traffic/Strings.php:17
|
11900 |
msgid ""
|
11901 |
+
"Rate limit ({{count}}) was exceeded with {{requests}} requests within "
|
11902 |
+
"{{span}} seconds."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11903 |
msgstr ""
|
11904 |
|
11905 |
+
#: src/lib/src/Modules/Traffic/Strings.php:37
|
11906 |
+
msgid "Monitor and review all requests to your site."
|
11907 |
msgstr ""
|
11908 |
|
11909 |
+
#: src/lib/src/Modules/Traffic/Strings.php:38
|
11910 |
+
msgid ""
|
11911 |
+
"Required only if you need to review and investigate and monitor requests to "
|
11912 |
+
"your site"
|
11913 |
msgstr ""
|
11914 |
|
11915 |
+
#: src/lib/src/Modules/Traffic/Strings.php:43
|
11916 |
+
msgid "Traffic Logging Options"
|
11917 |
msgstr ""
|
11918 |
|
11919 |
+
#: src/lib/src/Modules/Traffic/Strings.php:44
|
11920 |
+
msgid "Traffic Watch Options"
|
11921 |
msgstr ""
|
11922 |
|
11923 |
+
#: src/lib/src/Modules/Traffic/Strings.php:46
|
11924 |
+
msgid "Provides finer control over the Traffic Watch system."
|
|
|
11925 |
msgstr ""
|
11926 |
|
11927 |
+
#: src/lib/src/Modules/Traffic/Strings.php:52
|
11928 |
+
msgid "Brute Force Traffic Rate Limiting"
|
11929 |
msgstr ""
|
11930 |
|
11931 |
+
#: src/lib/src/Modules/Traffic/Strings.php:53
|
11932 |
+
msgid "Traffic Rate Limiting"
|
|
|
11933 |
msgstr ""
|
11934 |
|
11935 |
+
#: src/lib/src/Modules/Traffic/Strings.php:55
|
11936 |
+
msgid "Prevents excessive requests from a single visitor."
|
11937 |
msgstr ""
|
11938 |
|
11939 |
+
#: src/lib/src/Modules/Traffic/Strings.php:56
|
11940 |
+
msgid "This feature is only available while the Traffic Logger is active."
|
|
|
11941 |
msgstr ""
|
11942 |
|
11943 |
+
#: src/lib/src/Modules/Traffic/Strings.php:57
|
11944 |
+
msgid "Use this feature with care."
|
11945 |
msgstr ""
|
11946 |
|
11947 |
+
#: src/lib/src/Modules/Traffic/Strings.php:58
|
11948 |
+
msgid ""
|
11949 |
+
"You could block legitimate visitors who load too many pages in quick "
|
11950 |
+
"succession on your site."
|
11951 |
msgstr ""
|
11952 |
|
11953 |
+
#: src/lib/src/Modules/Traffic/Strings.php:92
|
11954 |
+
msgid "Enable Traffic Logger"
|
|
|
11955 |
msgstr ""
|
11956 |
|
11957 |
+
#: src/lib/src/Modules/Traffic/Strings.php:93
|
11958 |
+
msgid "Turn On The Traffic Logging Feature"
|
11959 |
msgstr ""
|
11960 |
|
11961 |
+
#: src/lib/src/Modules/Traffic/Strings.php:94
|
11962 |
+
msgid "Enable or disable the ability to log and monitor requests to your site"
|
11963 |
msgstr ""
|
11964 |
|
11965 |
+
#: src/lib/src/Modules/Traffic/Strings.php:98
|
11966 |
+
msgid "Traffic Log Exclusions"
|
11967 |
msgstr ""
|
11968 |
|
11969 |
+
#: src/lib/src/Modules/Traffic/Strings.php:99
|
11970 |
+
msgid "Select Which Types Of Requests To Exclude"
|
11971 |
msgstr ""
|
11972 |
|
11973 |
+
#: src/lib/src/Modules/Traffic/Strings.php:101
|
11974 |
+
msgid ""
|
11975 |
+
"There's no need to have unnecessary traffic noise in your logs, so we "
|
11976 |
+
"automatically exclude certain types of requests."
|
11977 |
msgstr ""
|
11978 |
|
11979 |
+
#: src/lib/src/Modules/Traffic/Strings.php:102
|
11980 |
+
msgid ""
|
11981 |
+
"Select request types that you don't want to appear in the traffic viewer."
|
11982 |
msgstr ""
|
11983 |
|
11984 |
+
#: src/lib/src/Modules/Traffic/Strings.php:103
|
11985 |
+
msgid ""
|
11986 |
+
"If a request matches any exclusion rule, it wont show in the traffic logs."
|
11987 |
msgstr ""
|
11988 |
|
11989 |
+
#: src/lib/src/Modules/Traffic/Strings.php:108
|
11990 |
+
msgid "Custom Exclusions"
|
11991 |
msgstr ""
|
11992 |
|
11993 |
+
#: src/lib/src/Modules/Traffic/Strings.php:109
|
11994 |
+
msgid "Provide Custom Traffic Exclusions"
|
11995 |
msgstr ""
|
11996 |
|
11997 |
+
#: src/lib/src/Modules/Traffic/Strings.php:111
|
11998 |
msgid ""
|
11999 |
+
"For each entry, if the text is present in either the User Agent or request "
|
12000 |
+
"Path, it will be excluded."
|
12001 |
msgstr ""
|
12002 |
|
12003 |
+
#: src/lib/src/Modules/Traffic/Strings.php:112
|
12004 |
+
msgid "Take a new line for each entry."
|
12005 |
msgstr ""
|
12006 |
|
12007 |
+
#: src/lib/src/Modules/Traffic/Strings.php:113
|
12008 |
+
msgid "Comparisons are case-insensitive."
|
12009 |
msgstr ""
|
12010 |
|
12011 |
+
#: src/lib/src/Modules/Traffic/Strings.php:118
|
12012 |
+
msgid "Auto Expiry Cleaning"
|
12013 |
msgstr ""
|
12014 |
|
12015 |
+
#: src/lib/src/Modules/Traffic/Strings.php:119
|
12016 |
+
msgid "Enable Traffic Log Auto Expiry"
|
12017 |
msgstr ""
|
12018 |
|
12019 |
+
#: src/lib/src/Modules/Traffic/Strings.php:120
|
12020 |
+
msgid "DB cleanup will delete logs older than this maximum value (in days)."
|
12021 |
msgstr ""
|
12022 |
|
12023 |
+
#: src/lib/src/Modules/Traffic/Strings.php:124
|
12024 |
+
msgid "Enable Rate Limiting"
|
|
|
|
|
12025 |
msgstr ""
|
12026 |
|
12027 |
+
#: src/lib/src/Modules/Traffic/Strings.php:125
|
12028 |
+
msgid "Turn On The Rate Limiting Feature"
|
|
|
12029 |
msgstr ""
|
12030 |
|
12031 |
+
#: src/lib/src/Modules/Traffic/Strings.php:126
|
12032 |
+
msgid ""
|
12033 |
+
"Enable or disable the rate limiting feature according to your rate limiting "
|
12034 |
+
"parameters."
|
12035 |
msgstr ""
|
12036 |
|
12037 |
+
#: src/lib/src/Modules/Traffic/Strings.php:130
|
12038 |
+
msgid "Max Request Limit"
|
12039 |
msgstr ""
|
12040 |
|
12041 |
+
#: src/lib/src/Modules/Traffic/Strings.php:131
|
12042 |
+
msgid "Maximum Number Of Requests Allowed In Time Limit"
|
|
|
|
|
|
|
|
|
12043 |
msgstr ""
|
12044 |
|
12045 |
+
#: src/lib/src/Modules/Traffic/Strings.php:133
|
12046 |
+
msgid ""
|
12047 |
+
"The maximum number of requests that are allowed within the given request "
|
12048 |
+
"time limit."
|
12049 |
msgstr ""
|
12050 |
|
12051 |
+
#: src/lib/src/Modules/Traffic/Strings.php:134
|
12052 |
+
msgid ""
|
12053 |
+
"Any visitor that exceeds this number of requests in the given time period "
|
12054 |
+
"will register an offense against their IP address."
|
12055 |
msgstr ""
|
12056 |
|
12057 |
+
#: src/lib/src/Modules/Traffic/Strings.php:135
|
12058 |
+
msgid "Enough offenses will result in a ban of the IP address."
|
12059 |
msgstr ""
|
12060 |
|
12061 |
+
#: src/lib/src/Modules/Traffic/Strings.php:136
|
12062 |
+
msgid ""
|
12063 |
+
"Use a larger maximum request limit to reduce the risk of blocking legitimate "
|
12064 |
+
"visitors."
|
12065 |
msgstr ""
|
12066 |
|
12067 |
+
#: src/lib/src/Modules/Traffic/Strings.php:141
|
12068 |
+
msgid "Request Limit Time Interval"
|
12069 |
msgstr ""
|
12070 |
|
12071 |
+
#: src/lib/src/Modules/Traffic/Strings.php:142
|
12072 |
+
msgid "The Time Interval To Test For Excessive Requests"
|
|
|
12073 |
msgstr ""
|
12074 |
|
12075 |
+
#: src/lib/src/Modules/Traffic/Strings.php:144
|
12076 |
+
msgid ""
|
12077 |
+
"The time period within which to monitor for multiple requests that exceed "
|
12078 |
+
"the max request limit."
|
12079 |
msgstr ""
|
12080 |
|
12081 |
+
#: src/lib/src/Modules/Traffic/Strings.php:145
|
12082 |
+
msgid "Interval is measured in seconds."
|
12083 |
msgstr ""
|
12084 |
|
12085 |
+
#: src/lib/src/Modules/Traffic/Strings.php:146
|
12086 |
+
#: src/lib/src/Modules/Traffic/Strings.php:148
|
12087 |
+
msgid "Example"
|
12088 |
msgstr ""
|
12089 |
|
12090 |
+
#: src/lib/src/Modules/Traffic/Strings.php:147
|
12091 |
+
#: src/lib/src/Modules/Traffic/Strings.php:149
|
12092 |
#, php-format
|
12093 |
+
msgid "Use %s to test for excessive requests within a %s minutes interval."
|
12094 |
msgstr ""
|
12095 |
|
12096 |
+
#: src/lib/src/Modules/Traffic/Strings.php:150
|
12097 |
msgid ""
|
12098 |
+
"Use a smaller interval to reduce the risk of blocking legitimate visitors."
|
12099 |
msgstr ""
|
12100 |
|
12101 |
+
#: src/lib/src/Modules/Traffic/UI.php:49
|
12102 |
+
msgid ""
|
12103 |
+
"Traffic Watcher will not run because visitor IP address detection is not "
|
12104 |
+
"correctly configured."
|
12105 |
msgstr ""
|
12106 |
|
12107 |
+
#: src/lib/src/Modules/Traffic/UI.php:56
|
12108 |
#, php-format
|
12109 |
+
msgid "%s may only be enabled if the Traffic Logger feature is also turned on."
|
12110 |
msgstr ""
|
12111 |
|
12112 |
+
#: src/lib/src/Modules/Traffic/UI.php:56 src/lib/src/Modules/Traffic/UI.php:60
|
12113 |
+
msgid "Traffic Rate Limiter"
|
12114 |
msgstr ""
|
12115 |
|
12116 |
+
#: src/lib/src/Modules/Traffic/UI.php:60
|
12117 |
+
#, php-format
|
12118 |
+
msgid "%s is a Pro-only feature."
|
12119 |
msgstr ""
|
12120 |
|
12121 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:77
|
12122 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:112
|
12123 |
+
msgid "Please logout if you want to delete your own session."
|
12124 |
msgstr ""
|
12125 |
|
12126 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:91
|
12127 |
+
msgid "Your session was retained"
|
|
|
|
|
12128 |
msgstr ""
|
12129 |
|
12130 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:109
|
12131 |
+
msgid "Invalid session selected"
|
|
|
|
|
|
|
12132 |
msgstr ""
|
12133 |
|
12134 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:115
|
12135 |
+
msgid "User session deleted"
|
|
|
|
|
|
|
|
|
|
|
12136 |
msgstr ""
|
12137 |
|
12138 |
+
#: src/lib/src/Modules/UserManagement/AjaxHandler.php:119
|
12139 |
+
msgid "User session wasn't deleted"
|
|
|
|
|
12140 |
msgstr ""
|
12141 |
|
12142 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:22
|
12143 |
+
msgid "Idle Users"
|
|
|
|
|
|
|
12144 |
msgstr ""
|
12145 |
|
12146 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:25
|
12147 |
+
#, php-format
|
12148 |
+
msgid "Idle sessions are terminated after %s hours"
|
|
|
|
|
12149 |
msgstr ""
|
12150 |
|
12151 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:26
|
12152 |
+
msgid "Idle sessions wont be terminated"
|
|
|
|
|
|
|
12153 |
msgstr ""
|
12154 |
|
12155 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:32
|
12156 |
+
msgid "Lock To IP"
|
|
|
|
|
12157 |
msgstr ""
|
12158 |
|
12159 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:35
|
12160 |
+
msgid "Sessions are locked to IP address"
|
|
|
|
|
12161 |
msgstr ""
|
12162 |
|
12163 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:36
|
12164 |
+
msgid "Sessions aren't locked to IP address"
|
12165 |
msgstr ""
|
12166 |
|
12167 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:44
|
12168 |
+
msgid "Pwned Passwords"
|
12169 |
msgstr ""
|
12170 |
|
12171 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:47
|
12172 |
+
msgid "Pwned passwords are blocked on this site"
|
|
|
|
|
12173 |
msgstr ""
|
12174 |
|
12175 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:48
|
12176 |
+
msgid "Pwned passwords are allowed on this site"
|
|
|
|
|
12177 |
msgstr ""
|
12178 |
|
12179 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:57
|
12180 |
+
msgid "Several password policies are active"
|
12181 |
msgstr ""
|
12182 |
|
12183 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:58
|
12184 |
+
msgid "Limited or no password polices are active"
|
12185 |
msgstr ""
|
12186 |
|
12187 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:66
|
12188 |
+
msgid "Admin User"
|
|
|
|
|
12189 |
msgstr ""
|
12190 |
|
12191 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:68
|
12192 |
+
msgid "Default 'admin' user is still available"
|
|
|
|
|
|
|
12193 |
msgstr ""
|
12194 |
|
12195 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:69
|
12196 |
+
msgid "The default 'admin' user is no longer available."
|
|
|
|
|
12197 |
msgstr ""
|
12198 |
|
12199 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:72
|
12200 |
+
msgid "The default 'admin' user should be deleted or demoted."
|
|
|
|
|
12201 |
msgstr ""
|
12202 |
|
12203 |
+
#: src/lib/src/Modules/UserManagement/Insights/OverviewCards.php:83
|
12204 |
+
msgid "Sessions Control & Password Policies"
|
12205 |
msgstr ""
|
12206 |
|
12207 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:82
|
12208 |
+
#, php-format
|
12209 |
+
msgid "Your password has expired (after %s days)."
|
12210 |
msgstr ""
|
12211 |
|
12212 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:96
|
12213 |
+
msgid ""
|
12214 |
+
"Your password doesn't meet requirements set by your security administrator."
|
12215 |
msgstr ""
|
12216 |
|
12217 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:121
|
12218 |
+
msgid ""
|
12219 |
+
"For your security, please use the password section below to update your "
|
12220 |
+
"password."
|
12221 |
msgstr ""
|
12222 |
|
12223 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:159
|
12224 |
+
msgid ""
|
12225 |
+
"Your security administrator has imposed requirements for password quality."
|
12226 |
msgstr ""
|
12227 |
|
12228 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:161
|
12229 |
+
msgid "Reason"
|
|
|
12230 |
msgstr ""
|
12231 |
|
12232 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:200
|
12233 |
+
#, php-format
|
12234 |
+
msgid "Password length (%s) too short (min: %s characters)"
|
12235 |
msgstr ""
|
12236 |
|
12237 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:269
|
12238 |
+
msgid "Please use a different password."
|
|
|
12239 |
msgstr ""
|
12240 |
|
12241 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:270
|
12242 |
+
msgid "This password has been pwned."
|
12243 |
msgstr ""
|
12244 |
|
12245 |
+
#: src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php:274
|
12246 |
#, php-format
|
12247 |
+
msgid "%s times"
|
12248 |
msgstr ""
|
12249 |
|
12250 |
+
#: src/lib/src/Modules/UserManagement/Lib/Session/UserSessionHandler.php:143
|
12251 |
+
msgid "Your session has expired."
|
12252 |
msgstr ""
|
12253 |
|
12254 |
+
#: src/lib/src/Modules/UserManagement/Lib/Session/UserSessionHandler.php:147
|
12255 |
+
msgid "Your session was idle for too long."
|
12256 |
msgstr ""
|
12257 |
|
12258 |
+
#: src/lib/src/Modules/UserManagement/Lib/Session/UserSessionHandler.php:151
|
12259 |
+
msgid "Your session was locked to another IP Address."
|
12260 |
msgstr ""
|
12261 |
|
12262 |
+
#: src/lib/src/Modules/UserManagement/Lib/Session/UserSessionHandler.php:156
|
12263 |
#, php-format
|
12264 |
+
msgid "You do not currently have a %s user session."
|
|
|
|
|
12265 |
msgstr ""
|
12266 |
|
12267 |
+
#: src/lib/src/Modules/UserManagement/Lib/Session/UserSessionHandler.php:162
|
12268 |
+
msgid "Your session was terminated."
|
12269 |
msgstr ""
|
12270 |
|
12271 |
+
#: src/lib/src/Modules/UserManagement/Lib/Session/UserSessionHandler.php:166
|
12272 |
+
msgid "Please login again."
|
12273 |
msgstr ""
|
12274 |
|
12275 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/Idle.php:24
|
12276 |
+
msgid "Sorry, this account is suspended because of inactivity."
|
12277 |
msgstr ""
|
12278 |
|
12279 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/Idle.php:25
|
12280 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/PasswordExpiry.php:21
|
12281 |
+
msgid "Please reset your password to regain access."
|
12282 |
msgstr ""
|
12283 |
|
12284 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/Idle.php:28
|
12285 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/PasswordExpiry.php:24
|
12286 |
+
msgid "Reset"
|
12287 |
msgstr ""
|
12288 |
|
12289 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/PasswordExpiry.php:20
|
12290 |
+
msgid "Sorry, this account is suspended because the password has expired."
|
|
|
12291 |
msgstr ""
|
12292 |
|
12293 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/Suspended.php:19
|
12294 |
+
msgid "Sorry, this account is suspended."
|
|
|
12295 |
msgstr ""
|
12296 |
|
12297 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/Suspended.php:20
|
12298 |
+
msgid "Please contact your website administrator."
|
|
|
12299 |
msgstr ""
|
12300 |
|
12301 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:59
|
12302 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:196
|
12303 |
+
msgid "Suspended"
|
12304 |
msgstr ""
|
12305 |
|
12306 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:143
|
12307 |
+
msgid "Manually Suspended"
|
12308 |
msgstr ""
|
12309 |
|
12310 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:159
|
12311 |
+
msgid "Idle"
|
12312 |
msgstr ""
|
12313 |
|
12314 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:173
|
12315 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:23
|
12316 |
+
msgid "Password Expired"
|
12317 |
msgstr ""
|
12318 |
|
12319 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:192
|
12320 |
+
msgid "Suspend Account"
|
|
|
12321 |
msgstr ""
|
12322 |
|
12323 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:193
|
12324 |
+
msgid "Check to un/suspend user account"
|
12325 |
+
msgstr ""
|
|
|
|
|
|
|
12326 |
|
12327 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:194
|
12328 |
+
msgid "The user can never login while their account is suspended."
|
|
|
|
|
|
|
12329 |
msgstr ""
|
12330 |
|
12331 |
+
#: src/lib/src/Modules/UserManagement/Lib/Suspend/UserSuspendController.php:195
|
12332 |
msgid ""
|
12333 |
+
"Sorry, suspension for this account may only be managed by a security "
|
12334 |
+
"administrator."
|
12335 |
msgstr ""
|
12336 |
|
12337 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:126
|
12338 |
+
msgid "User Status"
|
12339 |
msgstr ""
|
12340 |
|
12341 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:132
|
12342 |
+
msgid "Not Recorded"
|
|
|
12343 |
msgstr ""
|
12344 |
|
12345 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:146
|
12346 |
+
msgid "Last Login"
|
12347 |
msgstr ""
|
12348 |
|
12349 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:197
|
12350 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:226
|
12351 |
+
msgid "Notice"
|
12352 |
msgstr ""
|
12353 |
|
12354 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:197
|
12355 |
+
#, php-format
|
12356 |
+
msgid "%s Just Logged Into %s"
|
12357 |
msgstr ""
|
12358 |
|
12359 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:199
|
12360 |
#, php-format
|
12361 |
msgid ""
|
12362 |
+
"As requested, %s is notifying you of a successful %s login to a WordPress "
|
12363 |
+
"site that you manage."
|
12364 |
msgstr ""
|
12365 |
|
12366 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:204
|
12367 |
#, php-format
|
12368 |
+
msgid "Important: %s"
|
12369 |
msgstr ""
|
12370 |
|
12371 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:204
|
12372 |
+
msgid ""
|
12373 |
+
"This user may now be subject to additional Two-Factor Authentication before "
|
12374 |
+
"completing their login."
|
12375 |
msgstr ""
|
12376 |
|
12377 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:206
|
12378 |
+
msgid "Details for this user are below:"
|
|
|
12379 |
msgstr ""
|
12380 |
|
12381 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:213
|
12382 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:239
|
12383 |
+
msgid "Thanks."
|
12384 |
msgstr ""
|
12385 |
|
12386 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:226
|
12387 |
+
msgid "A login to your WordPress account just occurred"
|
12388 |
msgstr ""
|
12389 |
|
12390 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:228
|
12391 |
+
#, php-format
|
12392 |
+
msgid "%s is notifying you of a successful login to your WordPress account."
|
12393 |
msgstr ""
|
12394 |
|
12395 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:231
|
12396 |
+
msgid "Details for this login are below:"
|
12397 |
msgstr ""
|
12398 |
|
12399 |
+
#: src/lib/src/Modules/UserManagement/Processor.php:237
|
12400 |
+
msgid ""
|
12401 |
+
"If this is unexpected or suspicious, please contact your site administrator "
|
12402 |
+
"immediately."
|
12403 |
msgstr ""
|
12404 |
|
12405 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:16
|
12406 |
+
msgid "Invalid User Email Registration"
|
12407 |
msgstr ""
|
12408 |
|
12409 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:18
|
12410 |
+
msgid "Detected user registration with invalid email address ({{email}})."
|
12411 |
msgstr ""
|
12412 |
|
12413 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:19
|
12414 |
+
msgid "Email verification test that failed: {{reason}}"
|
12415 |
msgstr ""
|
12416 |
|
12417 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:25
|
12418 |
+
msgid "Forcing user ({{user_login}}) to update expired password."
|
12419 |
msgstr ""
|
12420 |
|
12421 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:29
|
12422 |
+
msgid "Forced Password Change"
|
12423 |
msgstr ""
|
12424 |
|
12425 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:31
|
12426 |
+
msgid ""
|
12427 |
+
"Forcing user ({{user_login}}) to update password that fails to meet policies."
|
12428 |
msgstr ""
|
12429 |
|
12430 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:35
|
12431 |
+
msgid "Password Change Blocked"
|
12432 |
msgstr ""
|
12433 |
|
12434 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:37
|
12435 |
+
msgid "Blocked attempted password update that failed policy requirements."
|
12436 |
msgstr ""
|
12437 |
|
12438 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:41
|
12439 |
+
msgid "Session Not Found"
|
12440 |
msgstr ""
|
12441 |
|
12442 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:43
|
12443 |
+
msgid "Valid user session could not be found ({{user_login}})."
|
|
|
12444 |
msgstr ""
|
12445 |
|
12446 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:44
|
12447 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:51
|
12448 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:58
|
12449 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:65
|
12450 |
+
msgid "Logging out."
|
12451 |
msgstr ""
|
12452 |
|
12453 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:48
|
12454 |
+
msgid "Session Expired"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12455 |
msgstr ""
|
12456 |
|
12457 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:50
|
12458 |
+
msgid "User session has expired ({{user_login}})."
|
12459 |
msgstr ""
|
12460 |
|
12461 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:55
|
12462 |
+
msgid "Session Idle"
|
|
|
|
|
12463 |
msgstr ""
|
12464 |
|
12465 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:57
|
12466 |
+
msgid "User session has expired due to inactivity ({{user_login}})."
|
|
|
12467 |
msgstr ""
|
12468 |
|
12469 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:62
|
12470 |
+
msgid "Session Locked To IP"
|
|
|
|
|
12471 |
msgstr ""
|
12472 |
|
12473 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:64
|
12474 |
+
msgid ""
|
12475 |
+
"Access to an established user session ({{user_login}}) from a different IP "
|
12476 |
+
"address."
|
12477 |
msgstr ""
|
12478 |
|
12479 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:69
|
12480 |
+
msgid "User Manually Suspended"
|
12481 |
msgstr ""
|
12482 |
|
12483 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:71
|
12484 |
+
msgid "User \"{{user_login}}\" suspended by admin ({{admin}})"
|
|
|
|
|
|
|
12485 |
msgstr ""
|
12486 |
|
12487 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:75
|
12488 |
+
msgid "User Manually Unsuspended"
|
|
|
|
|
|
|
12489 |
msgstr ""
|
12490 |
|
12491 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:77
|
12492 |
+
msgid "User \"{{user_login}}\" unsuspended by admin ({{admin}})"
|
|
|
12493 |
msgstr ""
|
12494 |
|
12495 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:88
|
12496 |
+
msgid "Current User Sessions"
|
|
|
|
|
12497 |
msgstr ""
|
12498 |
|
12499 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:90
|
12500 |
+
msgid "Logged In At"
|
12501 |
msgstr ""
|
12502 |
|
12503 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:91
|
12504 |
+
#: src/lib/src/Tables/Render/WpListTable/Sessions.php:39
|
12505 |
+
msgid "Last Activity At"
|
12506 |
msgstr ""
|
12507 |
|
12508 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:92
|
12509 |
+
msgid "Last Activity URI"
|
|
|
12510 |
msgstr ""
|
12511 |
|
12512 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:93
|
12513 |
+
msgid "Login IP"
|
12514 |
msgstr ""
|
12515 |
|
12516 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:94
|
12517 |
+
msgid ""
|
12518 |
+
"You need to enable the User Management feature to view and manage user "
|
12519 |
+
"sessions."
|
|
|
12520 |
msgstr ""
|
12521 |
|
12522 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:112
|
|
|
|
|
|
|
12523 |
msgid ""
|
12524 |
+
"User Management offers real user sessions, finer control over user session "
|
12525 |
+
"time-out, and ensures users have logged-in in a correct manner."
|
12526 |
msgstr ""
|
12527 |
|
12528 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:121
|
12529 |
+
msgid "Have full control over passwords used by users on the site."
|
12530 |
msgstr ""
|
12531 |
|
12532 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:123
|
12533 |
+
msgid "Requirements"
|
|
|
|
|
|
|
|
|
12534 |
msgstr ""
|
12535 |
|
12536 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:128
|
12537 |
+
msgid "Admin Login Notification"
|
|
|
|
|
12538 |
msgstr ""
|
12539 |
|
12540 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:130
|
12541 |
+
msgid ""
|
12542 |
+
"So you can be made aware of when a WordPress administrator has logged into "
|
12543 |
+
"your site when you are not expecting it."
|
12544 |
msgstr ""
|
12545 |
|
12546 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:133
|
12547 |
+
msgid "Notifications"
|
12548 |
msgstr ""
|
12549 |
|
12550 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:137
|
12551 |
+
msgid "Multi-Factor User Authentication"
|
|
|
|
|
12552 |
msgstr ""
|
12553 |
|
12554 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:146
|
12555 |
+
msgid "User Session Management"
|
12556 |
msgstr ""
|
12557 |
|
12558 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:148
|
12559 |
msgid ""
|
12560 |
+
"Allows you to better control user sessions on your site and expire idle "
|
12561 |
+
"sessions and prevent account sharing."
|
|
|
|
|
|
|
|
|
|
|
12562 |
msgstr ""
|
12563 |
|
12564 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:151
|
12565 |
+
msgid "Session Options"
|
|
|
12566 |
msgstr ""
|
12567 |
|
12568 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:156
|
12569 |
+
msgid "Automatic And Manual User Suspension"
|
12570 |
msgstr ""
|
12571 |
|
12572 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:158
|
12573 |
+
msgid "Automatically suspends accounts to prevent login by certain users."
|
12574 |
msgstr ""
|
12575 |
|
12576 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:192
|
12577 |
+
msgid "Admin Login Notification Email"
|
12578 |
msgstr ""
|
12579 |
|
12580 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:193
|
12581 |
+
msgid "Send An Notification Email When Administrator Logs In"
|
12582 |
msgstr ""
|
12583 |
|
12584 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:194
|
12585 |
+
msgid ""
|
12586 |
+
"If you would like to be notified every time an administrator user logs into "
|
12587 |
+
"this WordPress site, enter a notification email address."
|
12588 |
msgstr ""
|
12589 |
|
12590 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:195
|
12591 |
+
msgid "No email address - No Notification."
|
12592 |
msgstr ""
|
12593 |
|
12594 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:196
|
12595 |
+
msgid "Pro customers may provide multiple email address, separated by commas."
|
|
|
12596 |
msgstr ""
|
12597 |
|
12598 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:200
|
12599 |
+
msgid "User Login Notification Email"
|
12600 |
msgstr ""
|
12601 |
|
12602 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:201
|
12603 |
+
msgid "Send Email Notification To Each User Upon Successful Login"
|
12604 |
msgstr ""
|
12605 |
|
12606 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:202
|
12607 |
+
msgid ""
|
12608 |
+
"A notification is sent to each user when a successful login occurs for their "
|
12609 |
+
"account."
|
12610 |
msgstr ""
|
12611 |
|
12612 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:206
|
12613 |
+
msgid "Session Timeout"
|
12614 |
msgstr ""
|
12615 |
|
12616 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:207
|
12617 |
+
msgid "Specify How Many Days After Login To Automatically Force Re-Login"
|
12618 |
msgstr ""
|
12619 |
|
12620 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:208
|
12621 |
+
msgid ""
|
12622 |
+
"WordPress default is 2 days, or 14 days if you check the \"Remember Me\" box."
|
12623 |
msgstr ""
|
12624 |
|
12625 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:209
|
12626 |
+
msgid "Think of this as an absolute maximum possible session length."
|
|
|
12627 |
msgstr ""
|
12628 |
|
12629 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:210
|
12630 |
+
#, php-format
|
12631 |
+
msgid "This cannot be less than %s."
|
|
|
12632 |
msgstr ""
|
12633 |
|
12634 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:215
|
12635 |
+
msgid "Idle Timeout"
|
|
|
12636 |
msgstr ""
|
12637 |
|
12638 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:216
|
12639 |
+
msgid "Specify How Many Hours After Inactivity To Automatically Logout User"
|
|
|
12640 |
msgstr ""
|
12641 |
|
12642 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:217
|
12643 |
msgid ""
|
12644 |
+
"If the user is inactive for the number of hours specified, they will be "
|
12645 |
+
"forcefully logged out next time they return."
|
12646 |
msgstr ""
|
12647 |
|
12648 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:218
|
12649 |
+
#, php-format
|
12650 |
+
msgid "Set to %s to turn off this option."
|
|
|
12651 |
msgstr ""
|
12652 |
|
12653 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:222
|
12654 |
+
msgid "Lock To Location"
|
|
|
12655 |
msgstr ""
|
12656 |
|
12657 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:223
|
12658 |
+
msgid "Locks A User Session To IP address"
|
12659 |
msgstr ""
|
12660 |
|
12661 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:224
|
12662 |
msgid ""
|
12663 |
+
"When selected, a session is restricted to the same IP address as when the "
|
12664 |
+
"user logged in."
|
12665 |
msgstr ""
|
12666 |
|
12667 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:225
|
12668 |
+
msgid ""
|
12669 |
+
"If a logged-in user's IP address changes, the session will be invalidated "
|
12670 |
+
"and they'll be forced to re-login to WordPress."
|
12671 |
msgstr ""
|
12672 |
|
12673 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:229
|
12674 |
+
msgid "Max Simultaneous Sessions"
|
12675 |
msgstr ""
|
12676 |
|
12677 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:230
|
12678 |
+
msgid "Limit Simultaneous Sessions For The Same Username"
|
12679 |
msgstr ""
|
12680 |
|
12681 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:231
|
12682 |
+
msgid ""
|
12683 |
+
"The number provided here is the maximum number of simultaneous, distinct, "
|
12684 |
+
"sessions allowed for any given username."
|
12685 |
msgstr ""
|
12686 |
|
12687 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:232
|
12688 |
+
msgid "Zero (0) will allow unlimited simultaneous sessions."
|
12689 |
msgstr ""
|
12690 |
|
12691 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:236
|
12692 |
+
msgid "Validate Email Addresses"
|
12693 |
msgstr ""
|
12694 |
|
12695 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:237
|
12696 |
+
msgid "Validate Email Addresses When User Attempts To Register"
|
12697 |
msgstr ""
|
12698 |
|
12699 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:239
|
12700 |
+
msgid "Validate Email Addresses When User Attempts To Register."
|
12701 |
msgstr ""
|
12702 |
|
12703 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:240
|
12704 |
msgid ""
|
12705 |
+
"To validate an email your site sends a request to the WPHashes API and may "
|
12706 |
+
"cause a small delay during the user registration request."
|
12707 |
msgstr ""
|
12708 |
|
12709 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:245
|
12710 |
+
msgid "Email Validation Checks"
|
12711 |
msgstr ""
|
12712 |
|
12713 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:246
|
12714 |
+
msgid "The Email Address Properties That Will Be Tested"
|
|
|
12715 |
msgstr ""
|
12716 |
|
12717 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:247
|
12718 |
+
msgid ""
|
12719 |
+
"Select the properties that should be tested during email address validation."
|
12720 |
msgstr ""
|
12721 |
|
12722 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:251
|
12723 |
+
msgid "Enable Password Policies"
|
|
|
12724 |
msgstr ""
|
12725 |
|
12726 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:252
|
12727 |
+
msgid "Enable The Password Policies Detailed Below"
|
|
|
12728 |
msgstr ""
|
12729 |
|
12730 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:253
|
12731 |
+
msgid "Turn on/off all password policy settings."
|
|
|
12732 |
msgstr ""
|
12733 |
|
12734 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:257
|
12735 |
+
msgid "Prevent Pwned Passwords"
|
12736 |
msgstr ""
|
12737 |
|
12738 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:258
|
12739 |
+
msgid "Prevent Use Of \"Pwned\" Passwords"
|
12740 |
msgstr ""
|
12741 |
|
12742 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:259
|
12743 |
msgid ""
|
12744 |
+
"Prevents users from using any passwords found on the public available list "
|
12745 |
+
"of \"pwned\" passwords."
|
12746 |
msgstr ""
|
12747 |
|
12748 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:263
|
12749 |
+
msgid "Minimum Length"
|
|
|
|
|
|
|
|
|
12750 |
msgstr ""
|
12751 |
|
12752 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:264
|
12753 |
+
msgid "Minimum Password Length"
|
12754 |
+
msgstr ""
|
12755 |
+
|
12756 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:265
|
12757 |
msgid ""
|
12758 |
+
"All passwords that a user sets must be at least this many characters in "
|
12759 |
+
"length."
|
12760 |
msgstr ""
|
12761 |
|
12762 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:266
|
12763 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:286
|
12764 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:311
|
12765 |
+
msgid "Set to Zero(0) to disable."
|
12766 |
msgstr ""
|
12767 |
|
12768 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:270
|
12769 |
+
msgid "Minimum Strength"
|
|
|
|
|
|
|
12770 |
msgstr ""
|
12771 |
|
12772 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:271
|
12773 |
+
msgid "Minimum Password Strength"
|
|
|
|
|
12774 |
msgstr ""
|
12775 |
|
12776 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:272
|
12777 |
+
msgid "All passwords that a user sets must meet this minimum strength."
|
|
|
12778 |
msgstr ""
|
12779 |
|
12780 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:276
|
12781 |
+
msgid "Apply To Existing Users"
|
|
|
12782 |
msgstr ""
|
12783 |
|
12784 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:277
|
12785 |
+
msgid "Apply Password Policies To Existing Users and Their Passwords"
|
12786 |
msgstr ""
|
12787 |
|
12788 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:278
|
12789 |
+
msgid ""
|
12790 |
+
"Forces existing users to update their passwords if they don't meet "
|
12791 |
+
"requirements, after they next login."
|
12792 |
msgstr ""
|
12793 |
|
12794 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:279
|
12795 |
+
msgid "Note: You may want to warn users prior to enabling this option."
|
12796 |
msgstr ""
|
12797 |
|
12798 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:283
|
12799 |
+
msgid "Password Expiration"
|
12800 |
msgstr ""
|
12801 |
|
12802 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:284
|
12803 |
+
msgid "Passwords Expire After This Many Days"
|
12804 |
msgstr ""
|
12805 |
|
12806 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:285
|
12807 |
+
msgid ""
|
12808 |
+
"Users will be forced to reset their passwords after the number of days "
|
12809 |
+
"specified."
|
12810 |
msgstr ""
|
12811 |
|
12812 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:290
|
12813 |
+
msgid "Allow Manual User Suspension"
|
12814 |
msgstr ""
|
12815 |
|
12816 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:291
|
12817 |
+
msgid "Manually Suspend User Accounts To Prevent Login"
|
12818 |
msgstr ""
|
12819 |
|
12820 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:292
|
12821 |
+
msgid "Users may be suspended by administrators to prevent future login."
|
12822 |
msgstr ""
|
12823 |
|
12824 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:296
|
12825 |
+
msgid "Auto-Suspend Expired Passwords"
|
12826 |
msgstr ""
|
12827 |
|
12828 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:297
|
12829 |
+
msgid "Automatically Suspend Users With Expired Passwords"
|
12830 |
msgstr ""
|
12831 |
|
12832 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:298
|
12833 |
+
msgid ""
|
12834 |
+
"Automatically suspends login by users and requires password reset to "
|
12835 |
+
"unsuspend."
|
12836 |
msgstr ""
|
12837 |
|
12838 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:302
|
12839 |
+
msgid "Requires password expiration policy to be set."
|
12840 |
msgstr ""
|
12841 |
|
12842 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:307
|
12843 |
+
msgid "Auto-Suspend Idle Users"
|
12844 |
msgstr ""
|
12845 |
|
12846 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:308
|
12847 |
+
msgid "Automatically Suspend Idle User Accounts"
|
|
|
12848 |
msgstr ""
|
12849 |
|
12850 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:309
|
12851 |
+
msgid ""
|
12852 |
+
"Automatically suspends login for idle accounts and requires password reset "
|
12853 |
+
"to unsuspend."
|
12854 |
msgstr ""
|
12855 |
|
12856 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:310
|
12857 |
+
msgid "Specify the number of days since last login to consider a user as idle."
|
12858 |
msgstr ""
|
12859 |
|
12860 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:315
|
12861 |
+
msgid "Auto-Suspend Idle User Roles"
|
12862 |
msgstr ""
|
12863 |
|
12864 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:316
|
12865 |
+
msgid "Apply Automatic Suspension To Accounts With These Roles"
|
12866 |
msgstr ""
|
12867 |
|
12868 |
+
#: src/lib/src/Modules/UserManagement/Strings.php:317
|
12869 |
msgid ""
|
12870 |
+
"Automatic suspension for idle accounts applies only to the roles you specify."
|
|
|
12871 |
msgstr ""
|
12872 |
|
12873 |
+
#: src/lib/src/Modules/UserManagement/UI.php:28
|
12874 |
+
msgid "Sessions Table Filters"
|
12875 |
msgstr ""
|
12876 |
|
12877 |
+
#: src/lib/src/Modules/UserManagement/UI.php:30
|
12878 |
+
msgid "Review and manage current user sessions"
|
12879 |
msgstr ""
|
12880 |
|
12881 |
+
#: src/lib/src/Modules/UserManagement/UI.php:31
|
12882 |
+
msgid ""
|
12883 |
+
"Some sessions may have expired but haven't been automatically cleaned from "
|
12884 |
+
"the database yet"
|
12885 |
msgstr ""
|
12886 |
|
12887 |
+
#: src/lib/src/Modules/UserManagement/WpCli/SessionTerminate.php:103
|
12888 |
+
msgid "All sessions for user have been terminated."
|
12889 |
msgstr ""
|
12890 |
|
12891 |
+
#: src/lib/src/Modules/UserManagement/WpCli/SessionTerminate.php:112
|
12892 |
+
msgid "All user sessions have been terminated."
|
12893 |
msgstr ""
|
12894 |
|
12895 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:76
|
12896 |
+
msgid "Not a WordPress Core file"
|
12897 |
msgstr ""
|
12898 |
|
12899 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:85
|
12900 |
+
#, php-format
|
12901 |
+
msgid "Couldn't load plugin for slug '%s'."
|
12902 |
msgstr ""
|
12903 |
|
12904 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:91
|
12905 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:125
|
12906 |
+
#, php-format
|
12907 |
+
msgid "%s not installed from WordPress.org."
|
12908 |
msgstr ""
|
12909 |
|
12910 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:92
|
12911 |
+
msgid "Plugin"
|
|
|
|
|
12912 |
msgstr ""
|
12913 |
|
12914 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:96
|
12915 |
+
msgid "Plugin developer doesn't use SVN tags for official releases."
|
|
|
12916 |
msgstr ""
|
12917 |
|
12918 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:113
|
12919 |
+
#, php-format
|
12920 |
+
msgid "Couldn't load theme for slug '%s'."
|
12921 |
msgstr ""
|
12922 |
|
12923 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:119
|
12924 |
+
#, php-format
|
12925 |
+
msgid "%s is a child of another theme."
|
12926 |
msgstr ""
|
12927 |
|
12928 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:120
|
12929 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:126
|
12930 |
+
msgid "Theme"
|
12931 |
msgstr ""
|
12932 |
|
12933 |
+
#: src/lib/src/Scans/Afs/Utilities/RepairItem.php:132
|
12934 |
+
msgid "Theme version doesn't appear to exist."
|
|
|
12935 |
msgstr ""
|
12936 |
|
12937 |
+
#: src/lib/src/Tables/Build/BaseBuild.php:26
|
12938 |
+
msgid "There was an error retrieving entries."
|
12939 |
msgstr ""
|
12940 |
|
12941 |
+
#: src/lib/src/Tables/Build/BaseBuild.php:58
|
12942 |
+
msgid "No entries to display."
|
12943 |
msgstr ""
|
12944 |
|
12945 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:54
|
12946 |
+
msgid "Event Slug"
|
|
|
|
|
|
|
12947 |
msgstr ""
|
12948 |
|
12949 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:65
|
12950 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:76
|
12951 |
+
msgid "Severity"
|
12952 |
msgstr ""
|
12953 |
|
12954 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:117
|
12955 |
+
msgid "User"
|
|
|
|
|
12956 |
msgstr ""
|
12957 |
|
12958 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:142
|
12959 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:141
|
12960 |
+
#: src/lib/src/Tables/Render/WpListTable/AdminNotes.php:28
|
12961 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBase.php:22
|
12962 |
+
msgid "Date"
|
12963 |
msgstr ""
|
12964 |
|
12965 |
+
#: src/lib/src/Tables/DataTables/Build/AuditTrail/ForAuditTrail.php:153
|
12966 |
+
msgid "Meta"
|
|
|
12967 |
msgstr ""
|
12968 |
|
12969 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:36
|
12970 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:44
|
12971 |
+
msgid "File"
|
12972 |
msgstr ""
|
12973 |
|
12974 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:52
|
12975 |
+
msgid "Type"
|
|
|
12976 |
msgstr ""
|
12977 |
|
12978 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:71
|
12979 |
+
msgid "Detected"
|
|
|
12980 |
msgstr ""
|
12981 |
|
12982 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:87
|
12983 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/ForMalware.php:26
|
12984 |
+
msgid "False Positive Confidence"
|
12985 |
msgstr ""
|
12986 |
|
12987 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:95
|
12988 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/ForMalware.php:34
|
12989 |
+
msgid "Line Numbers"
|
|
|
12990 |
msgstr ""
|
12991 |
|
12992 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/BaseForScan.php:103
|
12993 |
+
#: src/lib/src/Tables/DataTables/Build/Scans/ForMalware.php:42
|
12994 |
+
msgid "Pattern Detected"
|
12995 |
msgstr ""
|
12996 |
|
12997 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:42
|
12998 |
+
msgid "Page"
|
|
|
12999 |
msgstr ""
|
13000 |
|
13001 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:86
|
13002 |
+
msgid "Response Code"
|
|
|
13003 |
msgstr ""
|
13004 |
|
13005 |
+
#: src/lib/src/Tables/DataTables/Build/Traffic/ForTraffic.php:108
|
13006 |
+
msgid "Is Offense"
|
|
|
|
|
13007 |
msgstr ""
|
13008 |
|
13009 |
+
#: src/lib/src/Tables/DataTables/LoadData/BaseLoadTableData.php:40
|
13010 |
+
msgid "IP Unavailable"
|
|
|
13011 |
msgstr ""
|
13012 |
|
13013 |
+
#: src/lib/src/Tables/Render/Common/BaseTable.php:30
|
13014 |
+
#: src/lib/src/Tables/Render/WpListTable/Base.php:41
|
13015 |
+
msgid "Refresh"
|
13016 |
msgstr ""
|
13017 |
|
13018 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBase.php:12
|
13019 |
+
msgid "No Label"
|
|
|
13020 |
msgstr ""
|
13021 |
|
13022 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBase.php:18
|
13023 |
+
#: src/lib/src/Tables/Render/WpListTable/IpWhite.php:13
|
13024 |
+
msgid "Label"
|
13025 |
msgstr ""
|
13026 |
|
13027 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBase.php:20
|
13028 |
+
msgid "List"
|
13029 |
msgstr ""
|
13030 |
|
13031 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBase.php:21
|
13032 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:23
|
13033 |
+
msgid "Last Access"
|
|
|
13034 |
msgstr ""
|
13035 |
|
13036 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:18
|
13037 |
+
msgid "IP Range"
|
13038 |
msgstr ""
|
13039 |
|
13040 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:18
|
13041 |
+
msgid "Single IP"
|
13042 |
msgstr ""
|
13043 |
|
13044 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:19
|
13045 |
+
msgid "Automatic"
|
13046 |
msgstr ""
|
13047 |
|
13048 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:19
|
13049 |
+
msgid "Manual"
|
13050 |
msgstr ""
|
13051 |
|
13052 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:22
|
13053 |
#, php-format
|
13054 |
+
msgid "%s Offense"
|
13055 |
+
msgid_plural "%s Offenses"
|
13056 |
+
msgstr[0] ""
|
13057 |
+
msgstr[1] ""
|
13058 |
|
13059 |
+
#: src/lib/src/Tables/Render/WpListTable/IpBlack.php:35
|
13060 |
+
msgid "Auto Expires"
|
13061 |
msgstr ""
|
13062 |
|
13063 |
+
#: src/lib/src/Tables/Render/WpListTable/IpWhite.php:14
|
13064 |
+
msgid "Added"
|
13065 |
msgstr ""
|
13066 |
|
13067 |
+
#: src/lib/src/Tables/Render/WpListTable/Sessions.php:17
|
13068 |
+
msgid "Discard Session"
|
13069 |
msgstr ""
|
13070 |
|
13071 |
+
#: src/lib/src/Tables/Render/WpListTable/Sessions.php:27
|
13072 |
+
msgid "Discard"
|
|
|
|
|
13073 |
msgstr ""
|
13074 |
|
13075 |
+
#: src/lib/src/Utilities/HCaptcha/TestRequest.php:24
|
13076 |
+
#: src/lib/src/Utilities/HCaptcha/TestRequest.php:40
|
13077 |
+
#: src/lib/src/Utilities/ReCaptcha/TestRequest.php:40
|
13078 |
+
#: src/lib/src/Utilities/ReCaptcha/TestRequest.php:47
|
13079 |
+
msgid "Whoops."
|
13080 |
msgstr ""
|
13081 |
|
13082 |
+
#: src/lib/src/Utilities/HCaptcha/TestRequest.php:24
|
13083 |
+
#: src/lib/src/Utilities/ReCaptcha/TestRequest.php:40
|
13084 |
+
msgid "CAPTCHA was not submitted."
|
13085 |
msgstr ""
|
13086 |
|
13087 |
+
#: src/lib/src/Utilities/HCaptcha/TestRequest.php:41
|
13088 |
+
#: src/lib/src/Utilities/ReCaptcha/TestRequest.php:48
|
13089 |
+
msgid "CAPTCHA verification failed."
|
13090 |
msgstr ""
|
13091 |
|
13092 |
+
#: src/lib/src/Utilities/HCaptcha/TestRequest.php:43
|
13093 |
+
#: src/lib/src/Utilities/ReCaptcha/TestRequest.php:50
|
13094 |
+
msgid "Maybe refresh the page and try again."
|
|
|
13095 |
msgstr ""
|
13096 |
|
13097 |
+
#: src/wizards/base.php:198 src/wizards/base.php:234
|
13098 |
msgid "Next Step"
|
13099 |
msgstr ""
|
13100 |
|
13101 |
+
#: src/wizards/base.php:365
|
13102 |
#, php-format
|
13103 |
msgid "%s Wizard"
|
13104 |
msgstr ""
|
13105 |
|
13106 |
+
#: src/wizards/base.php:503
|
13107 |
msgid "No Access"
|
13108 |
msgstr ""
|
13109 |
|
13110 |
+
#: src/wizards/base_wpsf.php:106
|
13111 |
+
msgid "Security Admin PIN was not correct."
|
13112 |
msgstr ""
|
13113 |
|
13114 |
+
#: src/wizards/login_protect.php:15
|
13115 |
#, php-format
|
13116 |
msgid "%s Multi-Factor Authentication Wizard"
|
13117 |
msgstr ""
|
13118 |
|
13119 |
+
#: src/wizards/login_protect.php:52
|
13120 |
msgid "Invalid email address"
|
13121 |
msgstr ""
|
13122 |
|
13123 |
+
#: src/wizards/login_protect.php:58
|
13124 |
msgid "Verification email sent (please check your email including your SPAM)."
|
13125 |
msgstr ""
|
13126 |
|
13127 |
+
#: src/wizards/login_protect.php:59
|
13128 |
msgid ""
|
13129 |
"Enter the code from the email into the form above and click the button to "
|
13130 |
"verify."
|
13131 |
msgstr ""
|
13132 |
|
13133 |
+
#: src/wizards/plugin.php:17
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13134 |
#, php-format
|
13135 |
msgid "%s Welcome Wizard"
|
13136 |
msgstr ""
|
13137 |
|
13138 |
+
#: src/wizards/plugin.php:332
|
13139 |
msgid "Where to find Shield"
|
13140 |
msgstr ""
|
13141 |
|
13142 |
+
#: src/wizards/plugin.php:333
|
13143 |
msgid "Accessing Each Module"
|
13144 |
msgstr ""
|
13145 |
|
13146 |
+
#: src/wizards/plugin.php:334
|
13147 |
msgid "Accessing Options"
|
13148 |
msgstr ""
|
13149 |
|
13150 |
+
#: src/wizards/plugin.php:335
|
13151 |
msgid "Launching Wizards"
|
13152 |
msgstr ""
|
13153 |
|
13154 |
+
#: src/wizards/plugin.php:336
|
13155 |
msgid "Finding Help"
|
13156 |
msgstr ""
|
13157 |
|
13158 |
+
#: src/wizards/plugin.php:337
|
13159 |
msgid "Actions (not Options)"
|
13160 |
msgstr ""
|
13161 |
|
13162 |
+
#: src/wizards/plugin.php:338
|
13163 |
msgid "Help For Each Option"
|
13164 |
msgstr ""
|
13165 |
|
13166 |
+
#: src/wizards/plugin.php:339
|
13167 |
msgid "Module On/Off Switch"
|
13168 |
msgstr ""
|
13169 |
|
13170 |
+
#: src/wizards/plugin.php:342
|
13171 |
#, php-format
|
13172 |
msgid "You'll find the main %s settings in the left-hand WordPress menu."
|
13173 |
msgstr ""
|
13174 |
|
13175 |
+
#: src/wizards/plugin.php:343
|
13176 |
msgid ""
|
13177 |
"Shield is split up into independent modules for accessing the options of "
|
13178 |
"each feature."
|
13179 |
msgstr ""
|
13180 |
|
13181 |
+
#: src/wizards/plugin.php:344
|
13182 |
msgid ""
|
13183 |
"When you load a module, you can access the options by clicking on the "
|
13184 |
"Options Panel link."
|
13185 |
msgstr ""
|
13186 |
|
13187 |
+
#: src/wizards/plugin.php:345
|
13188 |
msgid "Launch helpful walk-through wizards for modules that have them."
|
13189 |
msgstr ""
|
13190 |
|
13191 |
+
#: src/wizards/plugin.php:346
|
13192 |
msgid ""
|
13193 |
"Each module also has a brief overview help section - there is more in-depth "
|
13194 |
"help available."
|
13195 |
msgstr ""
|
13196 |
|
13197 |
+
#: src/wizards/plugin.php:347
|
13198 |
msgid ""
|
13199 |
"Certain modules have extra actions and features, e.g. Audit Trail Viewer."
|
13200 |
msgstr ""
|
13201 |
|
13202 |
+
#: src/wizards/plugin.php:348
|
13203 |
msgid "Note: Not all modules have the actions section"
|
13204 |
msgstr ""
|
13205 |
|
13206 |
+
#: src/wizards/plugin.php:349
|
13207 |
msgid ""
|
13208 |
"Each module has an Enable/Disable checkbox to turn on/off all processing for "
|
13209 |
"that module"
|
13210 |
msgstr ""
|
13211 |
|
13212 |
+
#: src/wizards/plugin.php:350
|
13213 |
msgid ""
|
13214 |
"To help you understand each option, most of them have a more info link, and/"
|
13215 |
"or a blog link, to read more"
|
13216 |
msgstr ""
|
13217 |
|
13218 |
+
#: src/wizards/plugin.php:448
|
13219 |
msgid "IP address was empty."
|
13220 |
msgstr ""
|
13221 |
|
13222 |
+
#: src/wizards/plugin.php:451
|
13223 |
msgid "IP address wasn't a valid public IP address."
|
13224 |
msgstr ""
|
13225 |
|
13226 |
+
#: src/wizards/plugin.php:456
|
13227 |
+
msgid "Sorry, we couldn't find an address source from this IP."
|
13228 |
msgstr ""
|
13229 |
|
13230 |
+
#: src/wizards/plugin.php:461
|
13231 |
msgid "Success!"
|
13232 |
msgstr ""
|
13233 |
|
13234 |
+
#: src/wizards/plugin.php:485
|
13235 |
msgid "License was found and successfully installed."
|
13236 |
msgstr ""
|
13237 |
|
13238 |
+
#: src/wizards/plugin.php:488
|
13239 |
msgid "License could not be found."
|
13240 |
msgstr ""
|
13241 |
|
13242 |
+
#: src/wizards/plugin.php:521
|
13243 |
msgid "Options imported successfully to your site."
|
13244 |
msgstr ""
|
13245 |
|
13246 |
+
#: src/wizards/plugin.php:522
|
13247 |
msgid "Secret key was empty."
|
13248 |
msgstr ""
|
13249 |
|
13250 |
+
#: src/wizards/plugin.php:523
|
13251 |
msgid "Secret key was not 40 characters long."
|
13252 |
msgstr ""
|
13253 |
|
13254 |
+
#: src/wizards/plugin.php:524
|
13255 |
msgid ""
|
13256 |
"Secret key contains invalid characters - it should be letters and numbers "
|
13257 |
"only."
|
13258 |
msgstr ""
|
13259 |
|
13260 |
+
#: src/wizards/plugin.php:525
|
13261 |
msgid "Source site URL could not be parsed correctly."
|
13262 |
msgstr ""
|
13263 |
|
13264 |
+
#: src/wizards/plugin.php:526
|
13265 |
msgid "Could not parse the response from the site."
|
13266 |
msgstr ""
|
13267 |
|
13268 |
+
#: src/wizards/plugin.php:527
|
13269 |
msgid "Check the secret key is correct for the remote site."
|
13270 |
msgstr ""
|
13271 |
|
13272 |
+
#: src/wizards/plugin.php:528
|
13273 |
msgid "Failure response returned from the site."
|
13274 |
msgstr ""
|
13275 |
|
13276 |
+
#: src/wizards/plugin.php:529
|
13277 |
#, php-format
|
13278 |
msgid "Remote site responded with - %s"
|
13279 |
msgstr ""
|
13280 |
|
13281 |
+
#: src/wizards/plugin.php:530
|
13282 |
msgid "Data returned from the site was empty."
|
13283 |
msgstr ""
|
13284 |
|
13285 |
+
#: src/wizards/plugin.php:550
|
13286 |
+
msgid "Security Admin PIN was empty."
|
13287 |
msgstr ""
|
13288 |
|
13289 |
+
#: src/wizards/plugin.php:553
|
13290 |
+
msgid "Security PINs don't match."
|
|
|
|
|
13291 |
msgstr ""
|
13292 |
|
13293 |
+
#: src/wizards/plugin.php:560
|
13294 |
+
msgid "Security Admin PIN setup was successful."
|
|
|
13295 |
msgstr ""
|
13296 |
|
13297 |
+
#: src/wizards/plugin.php:579 src/wizards/plugin.php:612
|
13298 |
+
#: src/wizards/plugin.php:687
|
13299 |
+
msgid "No changes were made as no option was selected"
|
|
|
13300 |
msgstr ""
|
13301 |
|
13302 |
+
#: src/wizards/plugin.php:592 src/wizards/plugin.php:625
|
13303 |
+
#: src/wizards/plugin.php:660 src/wizards/plugin.php:728
|
13304 |
+
#: src/wizards/plugin.php:766
|
13305 |
+
msgid "Enabled"
|
13306 |
msgstr ""
|
13307 |
|
13308 |
+
#: src/wizards/plugin.php:596 src/wizards/plugin.php:629
|
13309 |
+
#: src/wizards/plugin.php:664 src/wizards/plugin.php:732
|
13310 |
+
#: src/wizards/plugin.php:770
|
13311 |
+
#, php-format
|
13312 |
+
msgid "%s setting could not be changed at this time."
|
13313 |
msgstr ""
|
13314 |
|
13315 |
+
#: src/wizards/plugin.php:668 src/wizards/plugin.php:737
|
13316 |
+
#: src/wizards/plugin.php:774
|
13317 |
+
msgid "No option was selected"
|
13318 |
msgstr ""
|
13319 |
|
13320 |
+
#: src/wizards/plugin.php:727 src/wizards/plugin.php:733
|
13321 |
+
msgid "Security Plugin Badge"
|
13322 |
msgstr ""
|
13323 |
|
13324 |
#~ msgid "Google"
|
languages/wp-simple-firewall-nl_NL.mo
CHANGED
Binary file
|
plugin-spec.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
{
|
2 |
"properties": {
|
3 |
-
"version": "
|
4 |
-
"release_timestamp":
|
5 |
-
"build": "
|
6 |
"slug_parent": "icwp",
|
7 |
"slug_plugin": "wpsf",
|
8 |
"human_name": "Shield Security",
|
@@ -83,95 +83,95 @@
|
|
83 |
},
|
84 |
"register": {
|
85 |
"css": {
|
86 |
-
"bootstrap":
|
87 |
-
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/
|
88 |
},
|
89 |
-
"bootstrap-datepicker":
|
90 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.min.css",
|
91 |
"deps": [
|
92 |
"bootstrap"
|
93 |
]
|
94 |
},
|
95 |
-
"bootstrap-select":
|
96 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css",
|
97 |
"deps": [
|
98 |
"bootstrap"
|
99 |
]
|
100 |
},
|
101 |
-
"select2":
|
102 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css",
|
103 |
"deps": [
|
104 |
"plugin"
|
105 |
]
|
106 |
},
|
107 |
-
"datatables-bootstrap":
|
108 |
-
"url": "https://cdn.datatables.net/1.11.3/css/dataTables.
|
109 |
"deps": [
|
110 |
"bootstrap"
|
111 |
]
|
112 |
},
|
113 |
-
"datatables-searchpanes":
|
114 |
"url": "https://cdn.datatables.net/searchpanes/1.4.0/css/searchPanes.dataTables.min.css",
|
115 |
"deps": [
|
116 |
"datatables-bootstrap"
|
117 |
]
|
118 |
},
|
119 |
-
"datatables-select":
|
120 |
"url": "https://cdn.datatables.net/select/1.3.3/css/select.dataTables.min.css",
|
121 |
"deps": [
|
122 |
"datatables-bootstrap"
|
123 |
]
|
124 |
},
|
125 |
-
"datatables-buttons":
|
126 |
"url": "https://cdn.datatables.net/buttons/1.7.1/css/buttons.dataTables.min.css",
|
127 |
"deps": [
|
128 |
"datatables-bootstrap"
|
129 |
]
|
130 |
},
|
131 |
-
"global-plugin":
|
132 |
-
"plugin":
|
133 |
"deps": [
|
134 |
"bootstrap",
|
135 |
"global-plugin"
|
136 |
]
|
137 |
},
|
138 |
-
"shield/wizard":
|
139 |
"deps": [
|
140 |
"bootstrap",
|
141 |
"global-plugin"
|
142 |
]
|
143 |
},
|
144 |
-
"jquery/featherlight":
|
145 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/featherlight/1.7.13/featherlight.min.css"
|
146 |
},
|
147 |
-
"chartist":
|
148 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/chartist/0.11.4/chartist.min.css"
|
149 |
},
|
150 |
-
"chartist-plugin-legend":
|
151 |
"deps": [
|
152 |
"chartist"
|
153 |
]
|
154 |
},
|
155 |
-
"introjs":
|
156 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/intro.js/3.3.1/introjs.min.css"
|
157 |
},
|
158 |
-
"shield/userprofile":
|
159 |
"deps": [],
|
160 |
"footer": true
|
161 |
},
|
162 |
-
"shield/charts":
|
163 |
"deps": [
|
164 |
"plugin"
|
165 |
]
|
166 |
},
|
167 |
-
"shield/dialog":
|
168 |
"deps": [
|
169 |
"wp-wp-jquery-ui-dialog"
|
170 |
],
|
171 |
"footer": true
|
172 |
},
|
173 |
-
"shield/mainwp":
|
174 |
-
"shield/datatables":
|
175 |
"deps": [
|
176 |
"datatables-select",
|
177 |
"datatables-buttons",
|
@@ -180,7 +180,9 @@
|
|
180 |
"tp/highlightjs"
|
181 |
]
|
182 |
},
|
183 |
-
"shield/
|
|
|
|
|
184 |
"deps": [
|
185 |
"datatables-select",
|
186 |
"datatables-buttons",
|
@@ -188,13 +190,13 @@
|
|
188 |
"tp/highlightjs"
|
189 |
]
|
190 |
},
|
191 |
-
"tp/highlightjs":
|
192 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/styles/default.min.css"
|
193 |
}
|
194 |
},
|
195 |
"js": {
|
196 |
"bootstrap": {
|
197 |
-
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/
|
198 |
"deps": [
|
199 |
"wp-jquery"
|
200 |
]
|
@@ -225,7 +227,7 @@
|
|
225 |
]
|
226 |
},
|
227 |
"datatables-bootstrap": {
|
228 |
-
"url": "https://cdn.datatables.net/1.11.3/js/dataTables.
|
229 |
"deps": [
|
230 |
"datatables"
|
231 |
]
|
@@ -401,6 +403,12 @@
|
|
401 |
"jquery/steps"
|
402 |
]
|
403 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
"u2f-bundle": {},
|
405 |
"tp/grecaptcha": {
|
406 |
"url": "https://www.google.com/recaptcha/api.js",
|
1 |
{
|
2 |
"properties": {
|
3 |
+
"version": "14.0.0",
|
4 |
+
"release_timestamp": 1643365205,
|
5 |
+
"build": "202202.0601",
|
6 |
"slug_parent": "icwp",
|
7 |
"slug_plugin": "wpsf",
|
8 |
"human_name": "Shield Security",
|
83 |
},
|
84 |
"register": {
|
85 |
"css": {
|
86 |
+
"bootstrap": {
|
87 |
+
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css"
|
88 |
},
|
89 |
+
"bootstrap-datepicker": {
|
90 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.min.css",
|
91 |
"deps": [
|
92 |
"bootstrap"
|
93 |
]
|
94 |
},
|
95 |
+
"bootstrap-select": {
|
96 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css",
|
97 |
"deps": [
|
98 |
"bootstrap"
|
99 |
]
|
100 |
},
|
101 |
+
"select2": {
|
102 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css",
|
103 |
"deps": [
|
104 |
"plugin"
|
105 |
]
|
106 |
},
|
107 |
+
"datatables-bootstrap": {
|
108 |
+
"url": "https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap5.min.css",
|
109 |
"deps": [
|
110 |
"bootstrap"
|
111 |
]
|
112 |
},
|
113 |
+
"datatables-searchpanes": {
|
114 |
"url": "https://cdn.datatables.net/searchpanes/1.4.0/css/searchPanes.dataTables.min.css",
|
115 |
"deps": [
|
116 |
"datatables-bootstrap"
|
117 |
]
|
118 |
},
|
119 |
+
"datatables-select": {
|
120 |
"url": "https://cdn.datatables.net/select/1.3.3/css/select.dataTables.min.css",
|
121 |
"deps": [
|
122 |
"datatables-bootstrap"
|
123 |
]
|
124 |
},
|
125 |
+
"datatables-buttons": {
|
126 |
"url": "https://cdn.datatables.net/buttons/1.7.1/css/buttons.dataTables.min.css",
|
127 |
"deps": [
|
128 |
"datatables-bootstrap"
|
129 |
]
|
130 |
},
|
131 |
+
"global-plugin": {},
|
132 |
+
"plugin": {
|
133 |
"deps": [
|
134 |
"bootstrap",
|
135 |
"global-plugin"
|
136 |
]
|
137 |
},
|
138 |
+
"shield/wizard": {
|
139 |
"deps": [
|
140 |
"bootstrap",
|
141 |
"global-plugin"
|
142 |
]
|
143 |
},
|
144 |
+
"jquery/featherlight": {
|
145 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/featherlight/1.7.13/featherlight.min.css"
|
146 |
},
|
147 |
+
"chartist": {
|
148 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/chartist/0.11.4/chartist.min.css"
|
149 |
},
|
150 |
+
"chartist-plugin-legend": {
|
151 |
"deps": [
|
152 |
"chartist"
|
153 |
]
|
154 |
},
|
155 |
+
"introjs": {
|
156 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/intro.js/3.3.1/introjs.min.css"
|
157 |
},
|
158 |
+
"shield/userprofile": {
|
159 |
"deps": [],
|
160 |
"footer": true
|
161 |
},
|
162 |
+
"shield/charts": {
|
163 |
"deps": [
|
164 |
"plugin"
|
165 |
]
|
166 |
},
|
167 |
+
"shield/dialog": {
|
168 |
"deps": [
|
169 |
"wp-wp-jquery-ui-dialog"
|
170 |
],
|
171 |
"footer": true
|
172 |
},
|
173 |
+
"shield/mainwp": {},
|
174 |
+
"shield/datatables": {
|
175 |
"deps": [
|
176 |
"datatables-select",
|
177 |
"datatables-buttons",
|
180 |
"tp/highlightjs"
|
181 |
]
|
182 |
},
|
183 |
+
"shield/login2fa": {
|
184 |
+
},
|
185 |
+
"shield/scanners": {
|
186 |
"deps": [
|
187 |
"datatables-select",
|
188 |
"datatables-buttons",
|
190 |
"tp/highlightjs"
|
191 |
]
|
192 |
},
|
193 |
+
"tp/highlightjs": {
|
194 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/styles/default.min.css"
|
195 |
}
|
196 |
},
|
197 |
"js": {
|
198 |
"bootstrap": {
|
199 |
+
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/js/bootstrap.bundle.min.js",
|
200 |
"deps": [
|
201 |
"wp-jquery"
|
202 |
]
|
227 |
]
|
228 |
},
|
229 |
"datatables-bootstrap": {
|
230 |
+
"url": "https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap5.min.js",
|
231 |
"deps": [
|
232 |
"datatables"
|
233 |
]
|
403 |
"jquery/steps"
|
404 |
]
|
405 |
},
|
406 |
+
"shield/login2fa": {
|
407 |
+
"deps": [
|
408 |
+
"u2f-bundle",
|
409 |
+
"wp-jquery"
|
410 |
+
]
|
411 |
+
},
|
412 |
"u2f-bundle": {},
|
413 |
"tp/grecaptcha": {
|
414 |
"url": "https://www.google.com/recaptcha/api.js",
|
plugin.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
{
|
2 |
"properties": {
|
3 |
-
"version": "
|
4 |
-
"release_timestamp":
|
5 |
-
"build": "
|
6 |
"slug_parent": "icwp",
|
7 |
"slug_plugin": "wpsf",
|
8 |
"human_name": "Shield Security",
|
@@ -83,95 +83,95 @@
|
|
83 |
},
|
84 |
"register": {
|
85 |
"css": {
|
86 |
-
"bootstrap":
|
87 |
-
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/
|
88 |
},
|
89 |
-
"bootstrap-datepicker":
|
90 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.min.css",
|
91 |
"deps": [
|
92 |
"bootstrap"
|
93 |
]
|
94 |
},
|
95 |
-
"bootstrap-select":
|
96 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css",
|
97 |
"deps": [
|
98 |
"bootstrap"
|
99 |
]
|
100 |
},
|
101 |
-
"select2":
|
102 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css",
|
103 |
"deps": [
|
104 |
"plugin"
|
105 |
]
|
106 |
},
|
107 |
-
"datatables-bootstrap":
|
108 |
-
"url": "https://cdn.datatables.net/1.11.3/css/dataTables.
|
109 |
"deps": [
|
110 |
"bootstrap"
|
111 |
]
|
112 |
},
|
113 |
-
"datatables-searchpanes":
|
114 |
"url": "https://cdn.datatables.net/searchpanes/1.4.0/css/searchPanes.dataTables.min.css",
|
115 |
"deps": [
|
116 |
"datatables-bootstrap"
|
117 |
]
|
118 |
},
|
119 |
-
"datatables-select":
|
120 |
"url": "https://cdn.datatables.net/select/1.3.3/css/select.dataTables.min.css",
|
121 |
"deps": [
|
122 |
"datatables-bootstrap"
|
123 |
]
|
124 |
},
|
125 |
-
"datatables-buttons":
|
126 |
"url": "https://cdn.datatables.net/buttons/1.7.1/css/buttons.dataTables.min.css",
|
127 |
"deps": [
|
128 |
"datatables-bootstrap"
|
129 |
]
|
130 |
},
|
131 |
-
"global-plugin":
|
132 |
-
"plugin":
|
133 |
"deps": [
|
134 |
"bootstrap",
|
135 |
"global-plugin"
|
136 |
]
|
137 |
},
|
138 |
-
"shield/wizard":
|
139 |
"deps": [
|
140 |
"bootstrap",
|
141 |
"global-plugin"
|
142 |
]
|
143 |
},
|
144 |
-
"jquery/featherlight":
|
145 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/featherlight/1.7.13/featherlight.min.css"
|
146 |
},
|
147 |
-
"chartist":
|
148 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/chartist/0.11.4/chartist.min.css"
|
149 |
},
|
150 |
-
"chartist-plugin-legend":
|
151 |
"deps": [
|
152 |
"chartist"
|
153 |
]
|
154 |
},
|
155 |
-
"introjs":
|
156 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/intro.js/3.3.1/introjs.min.css"
|
157 |
},
|
158 |
-
"shield/userprofile":
|
159 |
"deps": [],
|
160 |
"footer": true
|
161 |
},
|
162 |
-
"shield/charts":
|
163 |
"deps": [
|
164 |
"plugin"
|
165 |
]
|
166 |
},
|
167 |
-
"shield/dialog":
|
168 |
"deps": [
|
169 |
"wp-wp-jquery-ui-dialog"
|
170 |
],
|
171 |
"footer": true
|
172 |
},
|
173 |
-
"shield/mainwp":
|
174 |
-
"shield/datatables":
|
175 |
"deps": [
|
176 |
"datatables-select",
|
177 |
"datatables-buttons",
|
@@ -180,7 +180,9 @@
|
|
180 |
"tp/highlightjs"
|
181 |
]
|
182 |
},
|
183 |
-
"shield/
|
|
|
|
|
184 |
"deps": [
|
185 |
"datatables-select",
|
186 |
"datatables-buttons",
|
@@ -188,13 +190,13 @@
|
|
188 |
"tp/highlightjs"
|
189 |
]
|
190 |
},
|
191 |
-
"tp/highlightjs":
|
192 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/styles/default.min.css"
|
193 |
}
|
194 |
},
|
195 |
"js": {
|
196 |
"bootstrap": {
|
197 |
-
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/
|
198 |
"deps": [
|
199 |
"wp-jquery"
|
200 |
]
|
@@ -225,7 +227,7 @@
|
|
225 |
]
|
226 |
},
|
227 |
"datatables-bootstrap": {
|
228 |
-
"url": "https://cdn.datatables.net/1.11.3/js/dataTables.
|
229 |
"deps": [
|
230 |
"datatables"
|
231 |
]
|
@@ -401,6 +403,12 @@
|
|
401 |
"jquery/steps"
|
402 |
]
|
403 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
"u2f-bundle": {},
|
405 |
"tp/grecaptcha": {
|
406 |
"url": "https://www.google.com/recaptcha/api.js",
|
1 |
{
|
2 |
"properties": {
|
3 |
+
"version": "14.0.0",
|
4 |
+
"release_timestamp": 1643365205,
|
5 |
+
"build": "202202.0601",
|
6 |
"slug_parent": "icwp",
|
7 |
"slug_plugin": "wpsf",
|
8 |
"human_name": "Shield Security",
|
83 |
},
|
84 |
"register": {
|
85 |
"css": {
|
86 |
+
"bootstrap": {
|
87 |
+
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css"
|
88 |
},
|
89 |
+
"bootstrap-datepicker": {
|
90 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.min.css",
|
91 |
"deps": [
|
92 |
"bootstrap"
|
93 |
]
|
94 |
},
|
95 |
+
"bootstrap-select": {
|
96 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css",
|
97 |
"deps": [
|
98 |
"bootstrap"
|
99 |
]
|
100 |
},
|
101 |
+
"select2": {
|
102 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css",
|
103 |
"deps": [
|
104 |
"plugin"
|
105 |
]
|
106 |
},
|
107 |
+
"datatables-bootstrap": {
|
108 |
+
"url": "https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap5.min.css",
|
109 |
"deps": [
|
110 |
"bootstrap"
|
111 |
]
|
112 |
},
|
113 |
+
"datatables-searchpanes": {
|
114 |
"url": "https://cdn.datatables.net/searchpanes/1.4.0/css/searchPanes.dataTables.min.css",
|
115 |
"deps": [
|
116 |
"datatables-bootstrap"
|
117 |
]
|
118 |
},
|
119 |
+
"datatables-select": {
|
120 |
"url": "https://cdn.datatables.net/select/1.3.3/css/select.dataTables.min.css",
|
121 |
"deps": [
|
122 |
"datatables-bootstrap"
|
123 |
]
|
124 |
},
|
125 |
+
"datatables-buttons": {
|
126 |
"url": "https://cdn.datatables.net/buttons/1.7.1/css/buttons.dataTables.min.css",
|
127 |
"deps": [
|
128 |
"datatables-bootstrap"
|
129 |
]
|
130 |
},
|
131 |
+
"global-plugin": {},
|
132 |
+
"plugin": {
|
133 |
"deps": [
|
134 |
"bootstrap",
|
135 |
"global-plugin"
|
136 |
]
|
137 |
},
|
138 |
+
"shield/wizard": {
|
139 |
"deps": [
|
140 |
"bootstrap",
|
141 |
"global-plugin"
|
142 |
]
|
143 |
},
|
144 |
+
"jquery/featherlight": {
|
145 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/featherlight/1.7.13/featherlight.min.css"
|
146 |
},
|
147 |
+
"chartist": {
|
148 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/chartist/0.11.4/chartist.min.css"
|
149 |
},
|
150 |
+
"chartist-plugin-legend": {
|
151 |
"deps": [
|
152 |
"chartist"
|
153 |
]
|
154 |
},
|
155 |
+
"introjs": {
|
156 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/intro.js/3.3.1/introjs.min.css"
|
157 |
},
|
158 |
+
"shield/userprofile": {
|
159 |
"deps": [],
|
160 |
"footer": true
|
161 |
},
|
162 |
+
"shield/charts": {
|
163 |
"deps": [
|
164 |
"plugin"
|
165 |
]
|
166 |
},
|
167 |
+
"shield/dialog": {
|
168 |
"deps": [
|
169 |
"wp-wp-jquery-ui-dialog"
|
170 |
],
|
171 |
"footer": true
|
172 |
},
|
173 |
+
"shield/mainwp": {},
|
174 |
+
"shield/datatables": {
|
175 |
"deps": [
|
176 |
"datatables-select",
|
177 |
"datatables-buttons",
|
180 |
"tp/highlightjs"
|
181 |
]
|
182 |
},
|
183 |
+
"shield/login2fa": {
|
184 |
+
},
|
185 |
+
"shield/scanners": {
|
186 |
"deps": [
|
187 |
"datatables-select",
|
188 |
"datatables-buttons",
|
190 |
"tp/highlightjs"
|
191 |
]
|
192 |
},
|
193 |
+
"tp/highlightjs": {
|
194 |
"url": "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/styles/default.min.css"
|
195 |
}
|
196 |
},
|
197 |
"js": {
|
198 |
"bootstrap": {
|
199 |
+
"url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/js/bootstrap.bundle.min.js",
|
200 |
"deps": [
|
201 |
"wp-jquery"
|
202 |
]
|
227 |
]
|
228 |
},
|
229 |
"datatables-bootstrap": {
|
230 |
+
"url": "https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap5.min.js",
|
231 |
"deps": [
|
232 |
"datatables"
|
233 |
]
|
403 |
"jquery/steps"
|
404 |
]
|
405 |
},
|
406 |
+
"shield/login2fa": {
|
407 |
+
"deps": [
|
408 |
+
"u2f-bundle",
|
409 |
+
"wp-jquery"
|
410 |
+
]
|
411 |
+
},
|
412 |
"u2f-bundle": {},
|
413 |
"tp/grecaptcha": {
|
414 |
"url": "https://www.google.com/recaptcha/api.js",
|
readme.txt
CHANGED
@@ -8,7 +8,7 @@ Requires at least: 3.7
|
|
8 |
Requires PHP: 7.0
|
9 |
Recommended PHP: 7.4
|
10 |
Tested up to: 5.9
|
11 |
-
Stable tag:
|
12 |
|
13 |
No-Nonsense Security Hardening that protects WordPress against hackers, malicious bots, and spammers (no captchas!). Now with exclusive ShieldNET Technology.
|
14 |
|
8 |
Requires PHP: 7.0
|
9 |
Recommended PHP: 7.4
|
10 |
Tested up to: 5.9
|
11 |
+
Stable tag: 14.0.0
|
12 |
|
13 |
No-Nonsense Security Hardening that protects WordPress against hackers, malicious bots, and spammers (no captchas!). Now with exclusive ShieldNET Technology.
|
14 |
|
resources/css/plugin.css
CHANGED
@@ -697,7 +697,7 @@ input:checked + .icwp-slider:before {
|
|
697 |
left: -17px;
|
698 |
}
|
699 |
}
|
700 |
-
#FooterWizardBanner .text-
|
701 |
margin-bottom: 0;
|
702 |
}
|
703 |
#FooterWizardBanner .offset-1 {
|
@@ -1022,17 +1022,8 @@ table.odp-table.scan-table td.column-path code {
|
|
1022 |
letter-spacing: 0;
|
1023 |
}
|
1024 |
}
|
1025 |
-
.form-check input
|
1026 |
-
margin-top:
|
1027 |
-
}
|
1028 |
-
.form-check .form-check-label {
|
1029 |
-
margin-left: 8px;
|
1030 |
-
}
|
1031 |
-
input[type=radio].form-check-input,
|
1032 |
-
input[type=checkbox].form-check-input {
|
1033 |
-
margin-top: 5px;
|
1034 |
-
margin-left: -20px;
|
1035 |
-
margin-right: 5px;
|
1036 |
}
|
1037 |
/** copied from bootstrap to override WP admin styles */
|
1038 |
.icwpOptionsForm {
|
@@ -1079,7 +1070,7 @@ input[type=checkbox].form-check-input {
|
|
1079 |
border-top: 0 none;
|
1080 |
padding-top: 14px;
|
1081 |
}
|
1082 |
-
.icwpOptionsForm .
|
1083 |
/*margin-bottom: 20px;*/
|
1084 |
padding: 15px 0 25px;
|
1085 |
border-bottom: 1px dashed rgba(0, 0, 0, 0.08);
|
@@ -1137,18 +1128,18 @@ input:checked + .icwp-slider {
|
|
1137 |
dd, li {
|
1138 |
margin-bottom: 0;
|
1139 |
}
|
1140 |
-
a
|
1141 |
-
|
1142 |
-
|
1143 |
-
a:hover {
|
1144 |
color: #008000;
|
|
|
1145 |
}
|
1146 |
a:focus .gravatar, a:focus, a:focus .media-icon img {
|
1147 |
box-shadow: none !important;
|
1148 |
}
|
1149 |
.col-form-label {
|
1150 |
font-weight: bold;
|
1151 |
-
padding-top: 0;
|
1152 |
}
|
1153 |
#SectionScanResultsAggregate .card-footer a:hover {
|
1154 |
color: #ffffff;
|
@@ -1202,12 +1193,6 @@ a:focus .gravatar, a:focus, a:focus .media-icon img {
|
|
1202 |
#SectionIpsWhite .alert {
|
1203 |
border-radius: 0;
|
1204 |
}
|
1205 |
-
#SectionIpsBlack .form-inline {
|
1206 |
-
margin: 10px 0 !important;
|
1207 |
-
}
|
1208 |
-
#SectionIpsWhite .form-inline {
|
1209 |
-
margin: 10px 0 !important;
|
1210 |
-
}
|
1211 |
#SectionIpsBlack .input-group-text {
|
1212 |
background-color: transparent !important;
|
1213 |
}
|
@@ -1221,6 +1206,7 @@ a[target="_blank"]:not(.option_link_info):not(.card-link):not(.table-link)::afte
|
|
1221 |
#footer-thankyou {
|
1222 |
display: none;
|
1223 |
}
|
|
|
1224 |
a.section_title_info {
|
1225 |
cursor: pointer;
|
1226 |
}
|
@@ -1236,19 +1222,22 @@ dl.pro-features dt:before {
|
|
1236 |
dl.pro-features dd {
|
1237 |
margin-bottom: 10px;
|
1238 |
}
|
1239 |
-
.
|
1240 |
-
.
|
1241 |
-
.option-checkbox.custom-switch .
|
1242 |
-
background-color: rgba(69, 119, 0, 1);
|
1243 |
-
border-color: rgba(69, 119, 0, 1);
|
1244 |
}
|
1245 |
-
.
|
|
|
|
|
|
|
|
|
|
|
1246 |
background-color: rgba(69, 119, 0, 0.3);
|
1247 |
border-color: rgba(69, 119, 0, 0.3);
|
1248 |
}
|
1249 |
-
.
|
1250 |
-
.custom-control.custom-radio .custom-control-input:disabled,
|
1251 |
-
.option-checkbox.custom-switch .custom-control-input:disabled {
|
1252 |
opacity: 0;
|
1253 |
}
|
1254 |
.importexport-checkbox.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
|
@@ -1275,6 +1264,9 @@ dl.pro-features dd {
|
|
1275 |
}
|
1276 |
.overview.card > .card-header {
|
1277 |
}
|
|
|
|
|
|
|
1278 |
.overview.card > .card-footer {
|
1279 |
padding: 10px 15px;
|
1280 |
}
|
@@ -1596,10 +1588,9 @@ body.folded #FooterBannerGoPro {
|
|
1596 |
visibility: hidden;
|
1597 |
background-color: rgba(238, 246, 238, 0.99);
|
1598 |
border: 1px solid rgba(177, 216, 178, 0.99);
|
1599 |
-
/*border-left-width: 0;*/
|
1600 |
position: absolute;
|
1601 |
-
left:
|
1602 |
-
width:
|
1603 |
z-index: 1000;
|
1604 |
height: auto;
|
1605 |
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.4);
|
@@ -1742,4 +1733,12 @@ button.btn.action {
|
|
1742 |
|
1743 |
.scan-item-history ul {
|
1744 |
list-style: inside disc;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1745 |
}
|
697 |
left: -17px;
|
698 |
}
|
699 |
}
|
700 |
+
#FooterWizardBanner .text-start {
|
701 |
margin-bottom: 0;
|
702 |
}
|
703 |
#FooterWizardBanner .offset-1 {
|
1022 |
letter-spacing: 0;
|
1023 |
}
|
1024 |
}
|
1025 |
+
.form-check .form-check-input {
|
1026 |
+
margin-top: 0.25em;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1027 |
}
|
1028 |
/** copied from bootstrap to override WP admin styles */
|
1029 |
.icwpOptionsForm {
|
1070 |
border-top: 0 none;
|
1071 |
padding-top: 14px;
|
1072 |
}
|
1073 |
+
.icwpOptionsForm .option_form_row.row {
|
1074 |
/*margin-bottom: 20px;*/
|
1075 |
padding: 15px 0 25px;
|
1076 |
border-bottom: 1px dashed rgba(0, 0, 0, 0.08);
|
1128 |
dd, li {
|
1129 |
margin-bottom: 0;
|
1130 |
}
|
1131 |
+
a,
|
1132 |
+
a:hover,
|
1133 |
+
a.nav-link,
|
1134 |
+
a.nav-link:hover {
|
1135 |
color: #008000;
|
1136 |
+
text-decoration: none;
|
1137 |
}
|
1138 |
a:focus .gravatar, a:focus, a:focus .media-icon img {
|
1139 |
box-shadow: none !important;
|
1140 |
}
|
1141 |
.col-form-label {
|
1142 |
font-weight: bold;
|
|
|
1143 |
}
|
1144 |
#SectionScanResultsAggregate .card-footer a:hover {
|
1145 |
color: #ffffff;
|
1193 |
#SectionIpsWhite .alert {
|
1194 |
border-radius: 0;
|
1195 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
1196 |
#SectionIpsBlack .input-group-text {
|
1197 |
background-color: transparent !important;
|
1198 |
}
|
1206 |
#footer-thankyou {
|
1207 |
display: none;
|
1208 |
}
|
1209 |
+
a.beacon-article,
|
1210 |
a.section_title_info {
|
1211 |
cursor: pointer;
|
1212 |
}
|
1222 |
dl.pro-features dd {
|
1223 |
margin-bottom: 10px;
|
1224 |
}
|
1225 |
+
.form-check .form-check-input:checked,
|
1226 |
+
.form-check .form-check-input:checked,
|
1227 |
+
.option-checkbox.custom-switch .form-check-input:checked {
|
1228 |
+
background-color: rgba(69, 119, 0, 1) !important;
|
1229 |
+
border-color: rgba(69, 119, 0, 1)!important;
|
1230 |
}
|
1231 |
+
.form-check .form-check-input:checked::before ,
|
1232 |
+
.form-check .form-check-input:checked::before ,
|
1233 |
+
.option-checkbox.custom-switch .form-check-input:checked::before {
|
1234 |
+
content: none;
|
1235 |
+
}
|
1236 |
+
.option-checkbox.custom-switch .form-check-input:disabled:checked {
|
1237 |
background-color: rgba(69, 119, 0, 0.3);
|
1238 |
border-color: rgba(69, 119, 0, 0.3);
|
1239 |
}
|
1240 |
+
.form-check .custom-control-input:disabled {
|
|
|
|
|
1241 |
opacity: 0;
|
1242 |
}
|
1243 |
.importexport-checkbox.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
|
1264 |
}
|
1265 |
.overview.card > .card-header {
|
1266 |
}
|
1267 |
+
.overview.card > .card-header a {
|
1268 |
+
text-decoration: none;
|
1269 |
+
}
|
1270 |
.overview.card > .card-footer {
|
1271 |
padding: 10px 15px;
|
1272 |
}
|
1588 |
visibility: hidden;
|
1589 |
background-color: rgba(238, 246, 238, 0.99);
|
1590 |
border: 1px solid rgba(177, 216, 178, 0.99);
|
|
|
1591 |
position: absolute;
|
1592 |
+
left: 130px;
|
1593 |
+
width: 200px;
|
1594 |
z-index: 1000;
|
1595 |
height: auto;
|
1596 |
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.4);
|
1733 |
|
1734 |
.scan-item-history ul {
|
1735 |
list-style: inside disc;
|
1736 |
+
}
|
1737 |
+
|
1738 |
+
.audit-meta ul {
|
1739 |
+
padding: 0;
|
1740 |
+
}
|
1741 |
+
|
1742 |
+
.ui-dialog-titlebar .ui-dialog-titlebar-close {
|
1743 |
+
float: right;
|
1744 |
}
|
resources/css/shield/login2fa.css
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
p > label {
|
2 |
+
}
|
3 |
+
#btn_u2f_start {
|
4 |
+
padding: .1875rem .3125rem;
|
5 |
+
margin: 0 0 16px 0;
|
6 |
+
line-height: 1.4;
|
7 |
+
font-size: 24px;
|
8 |
+
box-shadow: 0 0 0 transparent;
|
9 |
+
border: .0625rem solid #8c8f94;
|
10 |
+
cursor: pointer;
|
11 |
+
}
|
12 |
+
.shield-2fa-wplogin #btn_u2f_start {
|
13 |
+
border-radius: 4px;
|
14 |
+
width: 100%;
|
15 |
+
}
|
16 |
+
.shield-2fa-wplogin input[type="text"][name="icwp_wpsf_yubi_otp"] {
|
17 |
+
width: 100%;
|
18 |
+
}
|
19 |
+
|
20 |
+
input[type="text"][name="icwp_wpsf_email_otp"],
|
21 |
+
input[type="text"][name="icwp_wpsf_ga_otp"] {
|
22 |
+
font-family: monospace;
|
23 |
+
text-align: center;
|
24 |
+
letter-spacing: 10px;
|
25 |
+
font-size: 18px;
|
26 |
+
font-weight: bolder;
|
27 |
+
}
|
28 |
+
|
29 |
+
.otp-description {
|
30 |
+
display: block;
|
31 |
+
margin: 6px 0 20px;
|
32 |
+
font-size: 12px;
|
33 |
+
}
|
34 |
+
|
35 |
+
input {
|
36 |
+
margin-bottom: 0 !important;
|
37 |
+
}
|
resources/js/login/u2f.js
DELETED
@@ -1,42 +0,0 @@
|
|
1 |
-
jQuery( document ).ready( function () {
|
2 |
-
|
3 |
-
u2fApi.isSupported()
|
4 |
-
.then( function ( supported ) {
|
5 |
-
|
6 |
-
let $oU2fStart = jQuery( 'input#btn_u2f_start' );
|
7 |
-
|
8 |
-
if ( supported ) {
|
9 |
-
|
10 |
-
$oU2fStart.on( 'click', function () {
|
11 |
-
|
12 |
-
u2fApi.sign( JSON.parse( atob( $oU2fStart.data( 'signs' ) ) ) )
|
13 |
-
.then( function ( response ) {
|
14 |
-
let $oForm = $oU2fStart.closest( 'form' );
|
15 |
-
jQuery( '<input>' ).attr( {
|
16 |
-
type: 'hidden',
|
17 |
-
name: 'u2f_signs',
|
18 |
-
value: $oU2fStart.data( 'signs' )
|
19 |
-
} ).appendTo( $oForm );
|
20 |
-
jQuery( '<input>' ).attr( {
|
21 |
-
type: 'hidden',
|
22 |
-
name: $oU2fStart.data( 'input_otp' ),
|
23 |
-
value: JSON.stringify( response )
|
24 |
-
} ).appendTo( $oForm );
|
25 |
-
$oU2fStart.prop( 'disabled', true );
|
26 |
-
$oU2fStart.val( 'U2F successful. Submit the form when ready.' );
|
27 |
-
} )
|
28 |
-
.catch( function ( response ) {
|
29 |
-
alert( 'U2F authentication failed. Reload the page to retry.' );
|
30 |
-
} );
|
31 |
-
} );
|
32 |
-
|
33 |
-
}
|
34 |
-
else {
|
35 |
-
$oU2fStart.prop( 'disabled', true );
|
36 |
-
$oU2fStart.val( "U2F Authentication isn't supported on this browser." );
|
37 |
-
alert( "U2F Authentication isn't supported on this browser." );
|
38 |
-
}
|
39 |
-
} )
|
40 |
-
.catch();
|
41 |
-
|
42 |
-
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
resources/js/plugin.js
CHANGED
@@ -30,18 +30,19 @@ var iCWP_WPSF_OptionsPages = new function () {
|
|
30 |
}
|
31 |
|
32 |
jQuery( function () {
|
33 |
-
jQuery( 'a.section_title_info' ).popover( {
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
} );
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
|
|
45 |
} );
|
46 |
};
|
47 |
}();
|
@@ -347,6 +348,19 @@ if ( typeof icwp_wpsf_vars_plugin !== 'undefined' ) {
|
|
347 |
}
|
348 |
|
349 |
jQuery( document ).ready( function () {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
350 |
jQuery( document ).icwpWpsfTours();
|
351 |
jQuery( document ).icwpWpsfPluginNavigation();
|
352 |
jQuery( '.select2picker.static' ).select2( {
|
30 |
}
|
31 |
|
32 |
jQuery( function () {
|
33 |
+
// jQuery( 'a.section_title_info' ).popover( {
|
34 |
+
// placement: 'bottom',
|
35 |
+
// trigger: 'click',
|
36 |
+
// delay: 50,
|
37 |
+
// html: true
|
38 |
+
// } );
|
39 |
+
|
40 |
+
// jQuery( '[data-bs-toggle="tooltip"]' ).tooltip( {
|
41 |
+
// placement: 'left',
|
42 |
+
// trigger: 'hover focus',
|
43 |
+
// delay: 150,
|
44 |
+
// html: false
|
45 |
+
// } );
|
46 |
} );
|
47 |
};
|
48 |
}();
|
348 |
}
|
349 |
|
350 |
jQuery( document ).ready( function () {
|
351 |
+
|
352 |
+
jQuery( document ).ajaxComplete( function () {
|
353 |
+
let popoverTriggerList = [].slice.call( document.querySelectorAll( '[data-bs-toggle="popover"]' ) )
|
354 |
+
popoverTriggerList.map( function ( popoverTriggerEl ) {
|
355 |
+
return new bootstrap.Popover( popoverTriggerEl );
|
356 |
+
} );
|
357 |
+
|
358 |
+
let tooltipTriggerList = [].slice.call( document.querySelectorAll( '[data-bs-toggle="tooltip"]' ) )
|
359 |
+
tooltipTriggerList.map( function ( tooltipTriggerEl ) {
|
360 |
+
return new bootstrap.Tooltip( tooltipTriggerEl );
|
361 |
+
} );
|
362 |
+
} );
|
363 |
+
|
364 |
jQuery( document ).icwpWpsfTours();
|
365 |
jQuery( document ).icwpWpsfPluginNavigation();
|
366 |
jQuery( '.select2picker.static' ).select2( {
|
resources/js/shield/audit_trail.js
CHANGED
@@ -42,6 +42,8 @@
|
|
42 |
sanitize: false,
|
43 |
html: true,
|
44 |
animation: true,
|
|
|
|
|
45 |
selector: 'td.meta > button[data-toggle="popover"]',
|
46 |
container: 'body',
|
47 |
content: function () {
|
42 |
sanitize: false,
|
43 |
html: true,
|
44 |
animation: true,
|
45 |
+
customClass: 'audit-meta',
|
46 |
+
placement: 'left',
|
47 |
selector: 'td.meta > button[data-toggle="popover"]',
|
48 |
container: 'body',
|
49 |
content: function () {
|
resources/js/shield/login2fa.js
ADDED
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery( document ).ready( function () {
|
2 |
+
|
3 |
+
let $body = jQuery( 'body' );
|
4 |
+
let $theForm = jQuery( 'form#loginform' );
|
5 |
+
let userID = jQuery( 'input[type=hidden]#wp_user_id' ).val();
|
6 |
+
let loginNonce = jQuery( 'input[type=hidden]#login_nonce' ).val();
|
7 |
+
|
8 |
+
jQuery( 'input[type=text]:first', $theForm ).focus();
|
9 |
+
|
10 |
+
jQuery( 'input#icwp_wpsf_sms_otp' ).on( 'click', function () {
|
11 |
+
|
12 |
+
if ( confirm( 'Are you sure?' ) ) {
|
13 |
+
let $this = jQuery( this );
|
14 |
+
$this.attr( 'disabled', 'disabled' );
|
15 |
+
let reqParamsStart = $this.data( 'ajax_intent_sms_send' );
|
16 |
+
let ajaxurl = reqParamsStart.ajaxurl;
|
17 |
+
delete reqParamsStart.ajaxurl;
|
18 |
+
|
19 |
+
$body.addClass( 'shield-busy' );
|
20 |
+
jQuery.post( ajaxurl, reqParamsStart, function ( response ) {
|
21 |
+
let msg = 'Communications error with site.';
|
22 |
+
|
23 |
+
if ( response.data.success ) {
|
24 |
+
alert( response.data.message );
|
25 |
+
let newText = document.createElement( "input" );
|
26 |
+
newText.classList.add( 'form-control' );
|
27 |
+
let $newText = jQuery( newText );
|
28 |
+
$newText.attr( 'autocomplete', 'off' );
|
29 |
+
$newText.attr( 'placeholder', 'Enter SMS One-Time Password' );
|
30 |
+
$newText.attr( 'name', $this.attr( 'name' ) );
|
31 |
+
$newText.attr( 'id', $this.attr( 'id' ) );
|
32 |
+
$newText.insertBefore( $this );
|
33 |
+
$this.remove();
|
34 |
+
}
|
35 |
+
else {
|
36 |
+
if ( response.data.message !== undefined ) {
|
37 |
+
msg = response.data.message;
|
38 |
+
}
|
39 |
+
else {
|
40 |
+
msg = 'Sending verification SMS failed';
|
41 |
+
}
|
42 |
+
alert( msg );
|
43 |
+
}
|
44 |
+
}
|
45 |
+
).always( function () {
|
46 |
+
reqParamsStart.ajaxurl = ajaxurl;
|
47 |
+
$body.removeClass( 'shield-busy' );
|
48 |
+
$this.removeAttr( 'disabled' );
|
49 |
+
}
|
50 |
+
);
|
51 |
+
}
|
52 |
+
} );
|
53 |
+
|
54 |
+
let ajax_intent_email_send = function () {
|
55 |
+
let $this = jQuery( this );
|
56 |
+
$this.attr( 'disabled', true );
|
57 |
+
|
58 |
+
let reqParams = $emailInput.data( 'ajax_intent_email_send' );
|
59 |
+
reqParams.wp_user_id = userID;
|
60 |
+
reqParams.login_nonce = loginNonce;
|
61 |
+
$body.addClass( 'shield-busy' );
|
62 |
+
jQuery.post( reqParams.ajaxurl, reqParams, function ( response ) {
|
63 |
+
let msg = 'Communications error with site.';
|
64 |
+
|
65 |
+
if ( response.data.success ) {
|
66 |
+
alert( response.data.message );
|
67 |
+
}
|
68 |
+
else {
|
69 |
+
if ( response.data.message !== undefined ) {
|
70 |
+
msg = response.data.message;
|
71 |
+
}
|
72 |
+
else {
|
73 |
+
msg = 'Sending Email 2FA failed';
|
74 |
+
}
|
75 |
+
alert( msg );
|
76 |
+
}
|
77 |
+
}
|
78 |
+
).always( function () {
|
79 |
+
$body.removeClass( 'shield-busy' );
|
80 |
+
$this.attr( 'disabled', false );
|
81 |
+
}
|
82 |
+
);
|
83 |
+
};
|
84 |
+
|
85 |
+
let $emailInput = jQuery( 'input[type=text]#icwp_wpsf_email_otp' );
|
86 |
+
if ( $emailInput.length > 0 ) {
|
87 |
+
$emailInput.val( '' );
|
88 |
+
if ( Number( $emailInput.data( 'auto_send' ) ) === 1 ) {
|
89 |
+
ajax_intent_email_send();
|
90 |
+
}
|
91 |
+
$emailInput.on( 'keyup change keydown', function () {
|
92 |
+
this.value = this.value.toUpperCase();
|
93 |
+
this.value = this.value.replace( /[^0-9A-Z]/, '' ).substring( 0, 6 );
|
94 |
+
} );
|
95 |
+
jQuery( 'a#ajax_intent_email_send' ).on( 'click', ajax_intent_email_send );
|
96 |
+
}
|
97 |
+
|
98 |
+
let $gaInput = jQuery( 'input[type=text]#icwp_wpsf_ga_otp' );
|
99 |
+
if ( $gaInput.length > 0 ) {
|
100 |
+
$gaInput.val( '' );
|
101 |
+
$gaInput.on( 'keyup change keydown', function () {
|
102 |
+
this.value = this.value.replace( /[^0-9]/, '' ).substring( 0, 6 );
|
103 |
+
} );
|
104 |
+
}
|
105 |
+
|
106 |
+
u2fApi.isSupported()
|
107 |
+
.then( function ( supported ) {
|
108 |
+
|
109 |
+
let $u2fStart = jQuery( 'input#btn_u2f_start' );
|
110 |
+
|
111 |
+
if ( supported ) {
|
112 |
+
|
113 |
+
$u2fStart.on( 'click', function () {
|
114 |
+
|
115 |
+
u2fApi.sign( JSON.parse( atob( $u2fStart.data( 'signs' ) ) ) )
|
116 |
+
.then( function ( response ) {
|
117 |
+
jQuery( '<input>' ).attr( {
|
118 |
+
type: 'hidden',
|
119 |
+
name: 'u2f_signs',
|
120 |
+
value: $u2fStart.data( 'signs' )
|
121 |
+
} ).appendTo( $theForm );
|
122 |
+
jQuery( '<input>' ).attr( {
|
123 |
+
type: 'hidden',
|
124 |
+
name: $u2fStart.data( 'input_otp' ),
|
125 |
+
value: JSON.stringify( response )
|
126 |
+
} ).appendTo( $theForm );
|
127 |
+
/** Automatically submit the form for U2F **/
|
128 |
+
$theForm[ 0 ].requestSubmit();
|
129 |
+
} )
|
130 |
+
.catch( function ( response ) {
|
131 |
+
alert( 'U2F authentication failed. Reload the page to retry.' );
|
132 |
+
} );
|
133 |
+
} );
|
134 |
+
|
135 |
+
}
|
136 |
+
else {
|
137 |
+
$u2fStart.prop( 'disabled', true );
|
138 |
+
$u2fStart.val( "U2F Authentication isn't supported on this browser." );
|
139 |
+
alert( "U2F Authentication isn't supported on this browser." );
|
140 |
+
}
|
141 |
+
} )
|
142 |
+
.catch();
|
143 |
+
|
144 |
+
} );
|
resources/js/shield/notbot.js
CHANGED
@@ -13,14 +13,14 @@ if ( typeof Shield_Antibot === typeof undefined && typeof shield_vars_notbotjs !
|
|
13 |
/**
|
14 |
* @since 11.2 we no longer wait until DOM is ready.
|
15 |
* @since 12.0.10 we return to using cookies to optimise whether the AJAX request is sent.
|
16 |
-
* This is
|
17 |
* Early execution also helps mitigate the case where login requests are
|
18 |
* sent quickly, before browser has fired NotBot request.
|
19 |
*/
|
20 |
delete shield_vars_notbotjs.ajax.not_bot.ajaxurl;
|
21 |
nonce_cook = getCookie( 'shield-notbot-nonce' );
|
22 |
if ( typeof nonce_cook !== typeof undefined && nonce_cook.length > 0 ) {
|
23 |
-
/** Overcome limitations of page caching by passing nonce via cookie **/
|
24 |
shield_vars_notbotjs.ajax.not_bot.exec_nonce = nonce_cook;
|
25 |
}
|
26 |
if ( shield_vars_notbotjs.flags.run ) {
|
13 |
/**
|
14 |
* @since 11.2 we no longer wait until DOM is ready.
|
15 |
* @since 12.0.10 we return to using cookies to optimise whether the AJAX request is sent.
|
16 |
+
* This is AJAX, so it's asynchronous and won't hold up any other part of the page load.
|
17 |
* Early execution also helps mitigate the case where login requests are
|
18 |
* sent quickly, before browser has fired NotBot request.
|
19 |
*/
|
20 |
delete shield_vars_notbotjs.ajax.not_bot.ajaxurl;
|
21 |
nonce_cook = getCookie( 'shield-notbot-nonce' );
|
22 |
if ( typeof nonce_cook !== typeof undefined && nonce_cook.length > 0 ) {
|
23 |
+
/** Overcome limitations of page caching by passing latest nonce via cookie **/
|
24 |
shield_vars_notbotjs.ajax.not_bot.exec_nonce = nonce_cook;
|
25 |
}
|
26 |
if ( shield_vars_notbotjs.flags.run ) {
|
resources/js/shield/userprofile.js
CHANGED
@@ -45,8 +45,81 @@ jQuery.fn.ShieldUserProfile = function ( options ) {
|
|
45 |
} );
|
46 |
};
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
let initYubi = function ( shield_vars ) {
|
49 |
-
let $yubiText = jQuery( 'input[type=text]#
|
50 |
jQuery( document ).on( 'keydown', $yubiText, function ( evt ) {
|
51 |
if ( evt.key === 'Enter' || evt.keyCode === 13 ) {
|
52 |
evt.preventDefault();
|
@@ -61,7 +134,7 @@ jQuery.fn.ShieldUserProfile = function ( options ) {
|
|
61 |
shield_vars.ajax.user_yubikey_toggle.otp = jQuery( evt.currentTarget ).data( 'yubikeyid' );
|
62 |
sendReq( shield_vars.ajax.user_yubikey_toggle );
|
63 |
return false;
|
64 |
-
} )
|
65 |
};
|
66 |
|
67 |
let initEmail = function ( shield_vars ) {
|
@@ -140,6 +213,7 @@ jQuery.fn.ShieldUserProfile = function ( options ) {
|
|
140 |
).always( function () {
|
141 |
}
|
142 |
);
|
|
|
143 |
};
|
144 |
|
145 |
var showDialog = function ( success, msg ) {
|
@@ -177,6 +251,9 @@ jQuery.fn.ShieldUserProfile = function ( options ) {
|
|
177 |
if ( typeof shield_vars_userprofile.vars.providers.backupcode !== typeof undefined ) {
|
178 |
initBackupcodes( shield_vars_userprofile.vars.providers.backupcode );
|
179 |
}
|
|
|
|
|
|
|
180 |
initMfaRemoveAll();
|
181 |
} );
|
182 |
};
|
45 |
} );
|
46 |
};
|
47 |
|
48 |
+
let initSms = function ( shield_vars ) {
|
49 |
+
|
50 |
+
jQuery( 'a.shield_sms_remove' ).on( 'click', function ( evt ) {
|
51 |
+
evt.preventDefault();
|
52 |
+
if ( confirm( shield_vars_userprofile.strings.are_you_sure ) ) {
|
53 |
+
sendReq( shield_vars.ajax.user_sms2fa_remove );
|
54 |
+
}
|
55 |
+
return false;
|
56 |
+
} );
|
57 |
+
|
58 |
+
jQuery( document ).on( 'change keyup', '#shield_mfasms_phone', function ( evt ) {
|
59 |
+
let $this = jQuery( this );
|
60 |
+
const regex = /[^0-9]+/;
|
61 |
+
$this.val( $this.val().replace( regex, '' ) );
|
62 |
+
if ( $this.val().length > 15 ) {
|
63 |
+
$this.val( $this.val().substring( 0, 15 ) );
|
64 |
+
}
|
65 |
+
} );
|
66 |
+
|
67 |
+
jQuery( document ).on( 'click', '#shield_mfasms_verify', function ( evt ) {
|
68 |
+
let $this = jQuery( this );
|
69 |
+
let reqAddParams = shield_vars.ajax.user_sms2fa_add;
|
70 |
+
|
71 |
+
let $countrySelect = jQuery( 'select#shield_mfasms_country' );
|
72 |
+
reqAddParams.sms_country = $countrySelect.val();
|
73 |
+
reqAddParams.sms_phone = jQuery( 'input[type=text]#shield_mfasms_phone' ).val();
|
74 |
+
|
75 |
+
let combined = $countrySelect.find( ':selected' ).data( 'code' ) + ' ' + reqAddParams.sms_phone
|
76 |
+
|
77 |
+
if ( !(new RegExp( "^[0-9]+$" )).test( reqAddParams.sms_phone ) ) {
|
78 |
+
alert( "Phone number should contain only numbers 0-9." )
|
79 |
+
}
|
80 |
+
else if ( reqAddParams.sms_phone.length < 7 ) {
|
81 |
+
alert( "Phone number doesn't seem long enough." )
|
82 |
+
}
|
83 |
+
else if ( confirm( 'Are you sure this country code and number are correct: ' + combined ) ) {
|
84 |
+
$this.attr( 'disabled', 'disabled' );
|
85 |
+
let ajaxurl = reqAddParams.ajaxurl;
|
86 |
+
delete reqAddParams.ajaxurl;
|
87 |
+
|
88 |
+
jQuery.post( ajaxurl, reqAddParams, function ( response ) {
|
89 |
+
let msg = 'Communications error with site.';
|
90 |
+
|
91 |
+
if ( response.data.success ) {
|
92 |
+
|
93 |
+
let verifyCode = prompt( response.data.message )
|
94 |
+
if ( verifyCode !== null ) {
|
95 |
+
let reqVerifyParams = shield_vars.ajax.user_sms2fa_verify;
|
96 |
+
reqVerifyParams.sms_country = jQuery( 'select#shield_mfasms_country' ).val();
|
97 |
+
reqVerifyParams.sms_phone = jQuery( 'input[type=text]#shield_mfasms_phone' ).val();
|
98 |
+
reqVerifyParams.sms_code = verifyCode;
|
99 |
+
sendReq( reqVerifyParams );
|
100 |
+
}
|
101 |
+
}
|
102 |
+
else {
|
103 |
+
if ( response.data.message !== undefined ) {
|
104 |
+
msg = response.data.message;
|
105 |
+
}
|
106 |
+
else {
|
107 |
+
msg = 'Sending verification SMS failed';
|
108 |
+
}
|
109 |
+
alert( msg );
|
110 |
+
}
|
111 |
+
}
|
112 |
+
).always( function () {
|
113 |
+
$this.removeAttr( 'disabled', 'disabled' );
|
114 |
+
}
|
115 |
+
);
|
116 |
+
reqAddParams.ajaxurl = ajaxurl;
|
117 |
+
}
|
118 |
+
} );
|
119 |
+
};
|
120 |
+
|
121 |
let initYubi = function ( shield_vars ) {
|
122 |
+
let $yubiText = jQuery( 'input[type=text]#icwp_wpsf_yubi_otp' );
|
123 |
jQuery( document ).on( 'keydown', $yubiText, function ( evt ) {
|
124 |
if ( evt.key === 'Enter' || evt.keyCode === 13 ) {
|
125 |
evt.preventDefault();
|
134 |
shield_vars.ajax.user_yubikey_toggle.otp = jQuery( evt.currentTarget ).data( 'yubikeyid' );
|
135 |
sendReq( shield_vars.ajax.user_yubikey_toggle );
|
136 |
return false;
|
137 |
+
} );
|
138 |
};
|
139 |
|
140 |
let initEmail = function ( shield_vars ) {
|
213 |
).always( function () {
|
214 |
}
|
215 |
);
|
216 |
+
reqParams.ajaxurl = ajaxurl;
|
217 |
};
|
218 |
|
219 |
var showDialog = function ( success, msg ) {
|
251 |
if ( typeof shield_vars_userprofile.vars.providers.backupcode !== typeof undefined ) {
|
252 |
initBackupcodes( shield_vars_userprofile.vars.providers.backupcode );
|
253 |
}
|
254 |
+
if ( typeof shield_vars_userprofile.vars.providers.sms !== typeof undefined ) {
|
255 |
+
initSms( shield_vars_userprofile.vars.providers.sms );
|
256 |
+
}
|
257 |
initMfaRemoveAll();
|
258 |
} );
|
259 |
};
|
src/lib/functions/functions.php
CHANGED
@@ -1,39 +1,31 @@
|
|
1 |
<?php declare( strict_types=1 );
|
2 |
|
3 |
-
use FernleafSystems\Wordpress\Plugin\Shield;
|
4 |
-
use FernleafSystems\Wordpress\Services\Services;
|
5 |
|
6 |
if ( function_exists( 'shield_security_get_plugin' ) ) {
|
7 |
return;
|
8 |
}
|
9 |
|
10 |
function shield_security_get_plugin() :ICWP_WPSF_Shield_Security {
|
11 |
-
return
|
12 |
}
|
13 |
|
14 |
function shield_get_visitor_scores( $IP = null ) :array {
|
15 |
-
return (
|
16 |
-
->setMod( shield_security_get_plugin()->getController()->getModule_IPs() )
|
17 |
-
->setIP( $IP ?? Services::IP()->getRequestIp() )
|
18 |
-
->scores();
|
19 |
}
|
20 |
|
21 |
function shield_get_visitor_score( $IP = null ) :int {
|
22 |
-
return (
|
23 |
-
->setMod( shield_security_get_plugin()->getController()->getModule_IPs() )
|
24 |
-
->setIP( $IP ?? Services::IP()->getRequestIp() )
|
25 |
-
->probability();
|
26 |
}
|
27 |
|
28 |
/**
|
29 |
-
* Calculates the visitor score then compares it against the user-defined score minimum for bots
|
30 |
* @param null $IP - defaults to current visitor
|
31 |
-
* @
|
32 |
-
* @throws Exception
|
33 |
*/
|
34 |
function shield_test_ip_is_bot( $IP = null ) :bool {
|
35 |
-
return
|
36 |
-
|
37 |
-
|
38 |
-
|
|
|
39 |
}
|
1 |
<?php declare( strict_types=1 );
|
2 |
|
3 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Functions;
|
|
|
4 |
|
5 |
if ( function_exists( 'shield_security_get_plugin' ) ) {
|
6 |
return;
|
7 |
}
|
8 |
|
9 |
function shield_security_get_plugin() :ICWP_WPSF_Shield_Security {
|
10 |
+
return Functions\get_plugin();
|
11 |
}
|
12 |
|
13 |
function shield_get_visitor_scores( $IP = null ) :array {
|
14 |
+
return Functions\get_visitor_scores( $IP );
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
function shield_get_visitor_score( $IP = null ) :int {
|
18 |
+
return Functions\get_visitor_score( $IP );
|
|
|
|
|
|
|
19 |
}
|
20 |
|
21 |
/**
|
|
|
22 |
* @param null $IP - defaults to current visitor
|
23 |
+
* @throws \Exception
|
|
|
24 |
*/
|
25 |
function shield_test_ip_is_bot( $IP = null ) :bool {
|
26 |
+
return Functions\test_ip_is_bot( $IP );
|
27 |
+
}
|
28 |
+
|
29 |
+
function shield_get_ip_state( string $ip = '' ) :string {
|
30 |
+
return Functions\get_ip_state( $ip );
|
31 |
}
|
src/lib/src/Controller/Admin/MainAdminMenu.php
CHANGED
@@ -36,17 +36,17 @@ class MainAdminMenu {
|
|
36 |
$menuTitle = $con->getHumanName();
|
37 |
}
|
38 |
|
39 |
-
$
|
40 |
-
$
|
41 |
|
42 |
$parentMenuID = $con->getPluginPrefix();
|
43 |
add_menu_page(
|
44 |
$con->getHumanName(),
|
45 |
$menuTitle,
|
46 |
-
|
47 |
$parentMenuID,
|
48 |
[ $this, 'onDisplayTopMenu' ],
|
49 |
-
$
|
50 |
);
|
51 |
|
52 |
if ( $menu[ 'has_submenu' ] ) {
|
@@ -63,9 +63,14 @@ class MainAdminMenu {
|
|
63 |
|
64 |
private function fixSubmenu() {
|
65 |
global $submenu;
|
66 |
-
$
|
|
|
67 |
if ( isset( $submenu[ $menuID ] ) ) {
|
68 |
unset( $submenu[ $menuID ][ 0 ] );
|
69 |
}
|
|
|
|
|
|
|
|
|
70 |
}
|
71 |
}
|
36 |
$menuTitle = $con->getHumanName();
|
37 |
}
|
38 |
|
39 |
+
$menuIcon = $con->urls->forImage( $menu[ 'icon_image' ] );
|
40 |
+
$iconUrl = empty( $labels[ 'icon_url_16x16' ] ) ? $menuIcon : $labels[ 'icon_url_16x16' ];
|
41 |
|
42 |
$parentMenuID = $con->getPluginPrefix();
|
43 |
add_menu_page(
|
44 |
$con->getHumanName(),
|
45 |
$menuTitle,
|
46 |
+
'read',
|
47 |
$parentMenuID,
|
48 |
[ $this, 'onDisplayTopMenu' ],
|
49 |
+
$iconUrl
|
50 |
);
|
51 |
|
52 |
if ( $menu[ 'has_submenu' ] ) {
|
63 |
|
64 |
private function fixSubmenu() {
|
65 |
global $submenu;
|
66 |
+
$con = $this->getCon();
|
67 |
+
$menuID = $con->getPluginPrefix();
|
68 |
if ( isset( $submenu[ $menuID ] ) ) {
|
69 |
unset( $submenu[ $menuID ][ 0 ] );
|
70 |
}
|
71 |
+
else {
|
72 |
+
// remove entire top-level menu if no submenu items - ASSUMES this plugin MUST have submenu or no menu at all
|
73 |
+
remove_menu_page( $menuID );
|
74 |
+
}
|
75 |
}
|
76 |
}
|
src/lib/src/Controller/Ajax/Init.php
CHANGED
@@ -28,7 +28,7 @@ class Init {
|
|
28 |
$req = Services::Request();
|
29 |
$nonceAction = $req->request( 'exec' );
|
30 |
|
31 |
-
// if the ajax action is part of the allow list,
|
32 |
// This is work around for front-end caching plugin that screw everything up.
|
33 |
check_ajax_referer( $nonceAction, 'exec_nonce',
|
34 |
$forceDie || !in_array( $nonceAction, $this->getAllowedNoPrivExecs() ) );
|
28 |
$req = Services::Request();
|
29 |
$nonceAction = $req->request( 'exec' );
|
30 |
|
31 |
+
// if the ajax action is part of the "allow" list, it may fail the nonce.
|
32 |
// This is work around for front-end caching plugin that screw everything up.
|
33 |
check_ajax_referer( $nonceAction, 'exec_nonce',
|
34 |
$forceDie || !in_array( $nonceAction, $this->getAllowedNoPrivExecs() ) );
|
src/lib/src/Controller/Assets/Enqueue.php
CHANGED
@@ -193,7 +193,9 @@ class Enqueue {
|
|
193 |
}
|
194 |
|
195 |
private function normaliseHandle( string $handle ) :string {
|
196 |
-
return str_replace( '/', '-', $this->getCon()->prefix(
|
|
|
|
|
197 |
}
|
198 |
|
199 |
private function getAdminAssetsToEnq() {
|
193 |
}
|
194 |
|
195 |
private function normaliseHandle( string $handle ) :string {
|
196 |
+
return str_replace( '/', '-', $this->getCon()->prefix(
|
197 |
+
\FernleafSystems\Wordpress\Services\Utilities\File\Paths::RemoveExt( $handle )
|
198 |
+
) );
|
199 |
}
|
200 |
|
201 |
private function getAdminAssetsToEnq() {
|
src/lib/src/Controller/Assets/Paths.php
CHANGED
@@ -3,6 +3,7 @@
|
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Controller\Assets;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\PluginControllerConsumer;
|
|
|
6 |
|
7 |
class Paths {
|
8 |
|
@@ -41,7 +42,12 @@ class Paths {
|
|
41 |
}
|
42 |
|
43 |
public function cacheDir() :string {
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
45 |
}
|
46 |
|
47 |
public function forCacheItem( string $item = '' ) :string {
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Controller\Assets;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\PluginControllerConsumer;
|
6 |
+
use FernleafSystems\Wordpress\Services\Services;
|
7 |
|
8 |
class Paths {
|
9 |
|
42 |
}
|
43 |
|
44 |
public function cacheDir() :string {
|
45 |
+
$FS = Services::WpFs();
|
46 |
+
$wpContent = path_join( ABSPATH, 'wp-content' );
|
47 |
+
if ( !$FS->isDir( $wpContent ) ) {
|
48 |
+
$wpContent = WP_CONTENT_DIR;
|
49 |
+
}
|
50 |
+
return wp_normalize_path( path_join( $wpContent, $this->getCon()->cfg->paths[ 'cache' ] ) );
|
51 |
}
|
52 |
|
53 |
public function forCacheItem( string $item = '' ) :string {
|
src/lib/src/Controller/Controller.php
CHANGED
@@ -13,7 +13,6 @@ use FernleafSystems\Wordpress\Services\Utilities\Options\Transient;
|
|
13 |
* @property Shield\Controller\Assets\Urls $urls
|
14 |
* @property Shield\Controller\Assets\Paths $paths
|
15 |
* @property Shield\Controller\Assets\Svgs $svgs
|
16 |
-
* @property bool $cache_dir_ready
|
17 |
* @property bool $is_activating
|
18 |
* @property bool $is_mode_debug
|
19 |
* @property bool $is_mode_staging
|
@@ -24,6 +23,7 @@ use FernleafSystems\Wordpress\Services\Utilities\Options\Transient;
|
|
24 |
* @property bool $plugin_deleting
|
25 |
* @property bool $plugin_reset
|
26 |
* @property bool $rebuild_options
|
|
|
27 |
* @property bool $user_can_base_permissions
|
28 |
* @property false|string $file_forceoff
|
29 |
* @property string $base_file
|
@@ -31,6 +31,7 @@ use FernleafSystems\Wordpress\Services\Utilities\Options\Transient;
|
|
31 |
* @property Shield\Modules\Integrations\Lib\MainWP\Common\MainWPVO $mwpVO
|
32 |
* @property Shield\Utilities\Nonce\Handler $nonce_handler
|
33 |
* @property Shield\Modules\Events\Lib\EventsService $service_events
|
|
|
34 |
* @property array|Shield\Modules\Base\ModCon[] $modules
|
35 |
* @property Shield\Crons\HourlyCron $cron_hourly
|
36 |
* @property Shield\Crons\DailyCron $cron_daily
|
@@ -72,12 +73,12 @@ class Controller extends DynPropertiesClass {
|
|
72 |
* @return Shield\Modules\Events\Lib\EventsService
|
73 |
*/
|
74 |
public function loadEventsService() {
|
75 |
-
if ( !isset( $this->
|
76 |
-
$this->
|
77 |
->setCon( $this );
|
78 |
-
$this->
|
79 |
}
|
80 |
-
return $this->
|
81 |
}
|
82 |
|
83 |
/**
|
@@ -124,7 +125,6 @@ class Controller extends DynPropertiesClass {
|
|
124 |
|
125 |
switch ( $key ) {
|
126 |
|
127 |
-
case 'cache_dir_ready':
|
128 |
case 'is_activating':
|
129 |
case 'is_my_upgrade':
|
130 |
case 'modules_loaded':
|
@@ -136,6 +136,13 @@ class Controller extends DynPropertiesClass {
|
|
136 |
$val = (bool)$val;
|
137 |
break;
|
138 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
case 'cfg':
|
140 |
if ( !$val instanceof Config\ConfigVO ) {
|
141 |
$val = $this->loadConfig();
|
@@ -200,6 +207,12 @@ class Controller extends DynPropertiesClass {
|
|
200 |
}
|
201 |
break;
|
202 |
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
default:
|
204 |
break;
|
205 |
}
|
@@ -351,29 +364,31 @@ class Controller extends DynPropertiesClass {
|
|
351 |
|
352 |
public function onWpActivatePlugin() {
|
353 |
$this->is_activating = true;
|
354 |
-
$
|
355 |
-
|
356 |
-
$modPlugin->setActivatedAt();
|
357 |
-
do_action( 'shield/plugin_activated' );
|
358 |
-
}
|
359 |
}
|
360 |
|
361 |
-
public function getPluginCachePath( $
|
362 |
-
$
|
363 |
-
|
364 |
-
|
365 |
-
|
|
|
366 |
}
|
367 |
|
|
|
|
|
|
|
368 |
public function hasCacheDir() :bool {
|
369 |
return !empty( $this->getPluginCachePath() );
|
|
|
370 |
}
|
371 |
|
372 |
protected function doRegisterHooks() {
|
373 |
register_deactivation_hook( $this->getRootFile(), [ $this, 'onWpDeactivatePlugin' ] );
|
374 |
|
375 |
add_action( 'init', [ $this, 'onWpInit' ], -1000 );
|
376 |
-
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ] );
|
377 |
add_action( 'admin_init', [ $this, 'onWpAdminInit' ] );
|
378 |
|
379 |
add_filter( 'all_plugins', [ $this, 'filter_hidePluginFromTableList' ] );
|
@@ -1331,25 +1346,7 @@ class Controller extends DynPropertiesClass {
|
|
1331 |
* @return Shield\Users\ShieldUserMeta|null
|
1332 |
*/
|
1333 |
public function getUserMeta( $user ) {
|
1334 |
-
$
|
1335 |
-
try {
|
1336 |
-
if ( $user instanceof \WP_User ) {
|
1337 |
-
/** @var Shield\Users\ShieldUserMeta $meta */
|
1338 |
-
$meta = Shield\Users\ShieldUserMeta::Load( $this->prefix(), $user->ID );
|
1339 |
-
if ( !$meta instanceof Shield\Users\ShieldUserMeta ) {
|
1340 |
-
// Weird: user reported an error where it wasn't of the correct type
|
1341 |
-
$meta = new Shield\Users\ShieldUserMeta( $this->prefix(), $user->ID );
|
1342 |
-
Shield\Users\ShieldUserMeta::AddToCache( $meta );
|
1343 |
-
}
|
1344 |
-
$meta->setPasswordStartedAt( $user->user_pass )
|
1345 |
-
->updateFirstSeenAt();
|
1346 |
-
Services::WpUsers()
|
1347 |
-
->updateUserMeta( $this->prefix( 'meta-version' ), $this->getVersionNumeric(), $user->ID );
|
1348 |
-
}
|
1349 |
-
}
|
1350 |
-
catch ( \Exception $e ) {
|
1351 |
-
}
|
1352 |
-
return $meta;
|
1353 |
}
|
1354 |
|
1355 |
/**
|
13 |
* @property Shield\Controller\Assets\Urls $urls
|
14 |
* @property Shield\Controller\Assets\Paths $paths
|
15 |
* @property Shield\Controller\Assets\Svgs $svgs
|
|
|
16 |
* @property bool $is_activating
|
17 |
* @property bool $is_mode_debug
|
18 |
* @property bool $is_mode_staging
|
23 |
* @property bool $plugin_deleting
|
24 |
* @property bool $plugin_reset
|
25 |
* @property bool $rebuild_options
|
26 |
+
* @property Shield\Utilities\CacheDir $cache_dir_handler
|
27 |
* @property bool $user_can_base_permissions
|
28 |
* @property false|string $file_forceoff
|
29 |
* @property string $base_file
|
31 |
* @property Shield\Modules\Integrations\Lib\MainWP\Common\MainWPVO $mwpVO
|
32 |
* @property Shield\Utilities\Nonce\Handler $nonce_handler
|
33 |
* @property Shield\Modules\Events\Lib\EventsService $service_events
|
34 |
+
* @property Shield\Users\UserMetas $user_metas
|
35 |
* @property array|Shield\Modules\Base\ModCon[] $modules
|
36 |
* @property Shield\Crons\HourlyCron $cron_hourly
|
37 |
* @property Shield\Crons\DailyCron $cron_daily
|
73 |
* @return Shield\Modules\Events\Lib\EventsService
|
74 |
*/
|
75 |
public function loadEventsService() {
|
76 |
+
if ( !isset( $this->service_events ) ) {
|
77 |
+
$this->service_events = ( new Shield\Modules\Events\Lib\EventsService() )
|
78 |
->setCon( $this );
|
79 |
+
$this->oEventsService = $this->service_events;
|
80 |
}
|
81 |
+
return $this->service_events;
|
82 |
}
|
83 |
|
84 |
/**
|
125 |
|
126 |
switch ( $key ) {
|
127 |
|
|
|
128 |
case 'is_activating':
|
129 |
case 'is_my_upgrade':
|
130 |
case 'modules_loaded':
|
136 |
$val = (bool)$val;
|
137 |
break;
|
138 |
|
139 |
+
case 'cache_dir_handler':
|
140 |
+
if ( empty( $val ) ) {
|
141 |
+
$val = ( new Shield\Utilities\CacheDir() )->setCon( $this );
|
142 |
+
$this->cache_dir_handler = $val;
|
143 |
+
}
|
144 |
+
break;
|
145 |
+
|
146 |
case 'cfg':
|
147 |
if ( !$val instanceof Config\ConfigVO ) {
|
148 |
$val = $this->loadConfig();
|
207 |
}
|
208 |
break;
|
209 |
|
210 |
+
case 'user_metas':
|
211 |
+
if ( empty( $val ) ) {
|
212 |
+
$val = ( new Shield\Users\UserMetas() )->setCon( $this );
|
213 |
+
}
|
214 |
+
break;
|
215 |
+
|
216 |
default:
|
217 |
break;
|
218 |
}
|
364 |
|
365 |
public function onWpActivatePlugin() {
|
366 |
$this->is_activating = true;
|
367 |
+
$this->getModule_Plugin()->setActivatedAt();
|
368 |
+
do_action( 'shield/plugin_activated' );
|
|
|
|
|
|
|
369 |
}
|
370 |
|
371 |
+
public function getPluginCachePath( string $subPath = '' ) :string {
|
372 |
+
$path = $this->cache_dir_handler->build();
|
373 |
+
if ( !empty( $path ) && !empty( $subPath ) ) {
|
374 |
+
$path = path_join( $path, $subPath );
|
375 |
+
}
|
376 |
+
return $path;
|
377 |
}
|
378 |
|
379 |
+
/**
|
380 |
+
* @deprecated 14
|
381 |
+
*/
|
382 |
public function hasCacheDir() :bool {
|
383 |
return !empty( $this->getPluginCachePath() );
|
384 |
+
// return $this->cache_dir_handler->dirExists();
|
385 |
}
|
386 |
|
387 |
protected function doRegisterHooks() {
|
388 |
register_deactivation_hook( $this->getRootFile(), [ $this, 'onWpDeactivatePlugin' ] );
|
389 |
|
390 |
add_action( 'init', [ $this, 'onWpInit' ], -1000 );
|
391 |
+
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ], 5 );
|
392 |
add_action( 'admin_init', [ $this, 'onWpAdminInit' ] );
|
393 |
|
394 |
add_filter( 'all_plugins', [ $this, 'filter_hidePluginFromTableList' ] );
|
1346 |
* @return Shield\Users\ShieldUserMeta|null
|
1347 |
*/
|
1348 |
public function getUserMeta( $user ) {
|
1349 |
+
return $user instanceof \WP_User ? $this->user_metas->forUser( $user ) : null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1350 |
}
|
1351 |
|
1352 |
/**
|
src/lib/src/Controller/I18n/LoadTextDomain.php
CHANGED
@@ -53,14 +53,14 @@ class LoadTextDomain {
|
|
53 |
* This isn't ideal, and in-time we'll like full localizations, but we aren't there.
|
54 |
*/
|
55 |
$country = substr( $locale, 0, 2 );
|
56 |
-
$
|
57 |
'en' => 'en_GB',
|
58 |
'es' => 'es_ES',
|
59 |
'fr' => 'fr_FR',
|
60 |
'pt' => 'pt_PT',
|
61 |
];
|
62 |
-
if ( array_key_exists( $country, $
|
63 |
-
$locale = $
|
64 |
}
|
65 |
|
66 |
$maybeMo = path_join( $con->getPath_Languages(), $con->getTextDomain().'-'.$locale.'.mo' );
|
53 |
* This isn't ideal, and in-time we'll like full localizations, but we aren't there.
|
54 |
*/
|
55 |
$country = substr( $locale, 0, 2 );
|
56 |
+
$duplicateMappings = [
|
57 |
'en' => 'en_GB',
|
58 |
'es' => 'es_ES',
|
59 |
'fr' => 'fr_FR',
|
60 |
'pt' => 'pt_PT',
|
61 |
];
|
62 |
+
if ( array_key_exists( $country, $duplicateMappings ) ) {
|
63 |
+
$locale = $duplicateMappings[ $country ];
|
64 |
}
|
65 |
|
66 |
$maybeMo = path_join( $con->getPath_Languages(), $con->getTextDomain().'-'.$locale.'.mo' );
|
src/lib/src/Databases/Common/AlignTableWithSchema.php
CHANGED
@@ -4,10 +4,6 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Databases\Common;
|
|
4 |
|
5 |
use FernleafSystems\Wordpress\Services\Services;
|
6 |
|
7 |
-
/**
|
8 |
-
* Class AlignTableWithSchema
|
9 |
-
* @package FernleafSystems\Wordpress\Plugin\Shield\Databases\Common
|
10 |
-
*/
|
11 |
class AlignTableWithSchema {
|
12 |
|
13 |
/**
|
4 |
|
5 |
use FernleafSystems\Wordpress\Services\Services;
|
6 |
|
|
|
|
|
|
|
|
|
7 |
class AlignTableWithSchema {
|
8 |
|
9 |
/**
|
src/lib/src/Databases/Common/TableSchema.php
CHANGED
@@ -6,8 +6,6 @@ use FernleafSystems\Utilities\Data\Adapter\DynPropertiesClass;
|
|
6 |
use FernleafSystems\Wordpress\Services\Services;
|
7 |
|
8 |
/**
|
9 |
-
* Class TableSchema
|
10 |
-
* @package FernleafSystems\Wordpress\Plugin\Shield\Databases\Common
|
11 |
* @property string $slug
|
12 |
* @property string $table
|
13 |
* @property string $primary_key
|
6 |
use FernleafSystems\Wordpress\Services\Services;
|
7 |
|
8 |
/**
|
|
|
|
|
9 |
* @property string $slug
|
10 |
* @property string $table
|
11 |
* @property string $primary_key
|
src/lib/src/Databases/Events/Common.php
CHANGED
@@ -2,10 +2,6 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Databases\Events;
|
4 |
|
5 |
-
/**
|
6 |
-
* Trait Filters
|
7 |
-
* @package FernleafSystems\Wordpress\Plugin\Shield\Databases\Events
|
8 |
-
*/
|
9 |
trait Common {
|
10 |
|
11 |
/**
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Databases\Events;
|
4 |
|
|
|
|
|
|
|
|
|
5 |
trait Common {
|
6 |
|
7 |
/**
|
src/lib/src/Functions/functions.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Functions;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
6 |
+
use FernleafSystems\Wordpress\Services\Services;
|
7 |
+
|
8 |
+
function get_plugin() :\ICWP_WPSF_Shield_Security {
|
9 |
+
return \ICWP_WPSF_Shield_Security::GetInstance();
|
10 |
+
}
|
11 |
+
|
12 |
+
function get_visitor_scores( $IP = null ) :array {
|
13 |
+
return ( new IPs\Lib\Bots\Calculator\CalculateVisitorBotScores() )
|
14 |
+
->setMod( shield_security_get_plugin()->getController()->getModule_IPs() )
|
15 |
+
->setIP( $IP ?? Services::IP()->getRequestIp() )
|
16 |
+
->scores();
|
17 |
+
}
|
18 |
+
|
19 |
+
function get_visitor_score( $IP = null ) :int {
|
20 |
+
return ( new IPs\Lib\Bots\Calculator\CalculateVisitorBotScores() )
|
21 |
+
->setMod( shield_security_get_plugin()->getController()->getModule_IPs() )
|
22 |
+
->setIP( $IP ?? Services::IP()->getRequestIp() )
|
23 |
+
->probability();
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Calculates the visitor score then compares it against the user-defined score minimum for bots
|
28 |
+
* @param null $IP - defaults to current visitor
|
29 |
+
* @throws \Exception
|
30 |
+
*/
|
31 |
+
function test_ip_is_bot( $IP = null ) :bool {
|
32 |
+
return shield_security_get_plugin()->getController()
|
33 |
+
->getModule_IPs()
|
34 |
+
->getBotSignalsController()
|
35 |
+
->isBot( (string)$IP );
|
36 |
+
}
|
37 |
+
|
38 |
+
function get_ip_state( string $ip = '' ) :string {
|
39 |
+
$mod = get_plugin()->getController()->getModule_IPs();
|
40 |
+
|
41 |
+
$state = 'none';
|
42 |
+
|
43 |
+
$ip = ( new IPs\Lib\Ops\LookupIpOnList() )
|
44 |
+
->setDbHandler( $mod->getDbHandler_IPs() )
|
45 |
+
->setIP( empty( $ip ) ? Services::IP()->getRequestIp() : $ip )
|
46 |
+
->lookupIp();
|
47 |
+
|
48 |
+
if ( !empty( $ip ) ) {
|
49 |
+
switch ( $ip->list ) {
|
50 |
+
|
51 |
+
case $mod::LIST_MANUAL_WHITE:
|
52 |
+
$state = 'bypass';
|
53 |
+
break;
|
54 |
+
|
55 |
+
case $mod::LIST_MANUAL_BLACK:
|
56 |
+
$state = 'blocked';
|
57 |
+
break;
|
58 |
+
|
59 |
+
case $mod::LIST_AUTO_BLACK:
|
60 |
+
$state = $ip->blocked_at ? 'blocked' : 'offense';
|
61 |
+
break;
|
62 |
+
|
63 |
+
default:
|
64 |
+
throw new \Exception( 'unknown state:'.$state );
|
65 |
+
}
|
66 |
+
}
|
67 |
+
return $state;
|
68 |
+
}
|
src/lib/src/Modules/AuditTrail/AjaxHandler.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail;
|
4 |
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail;
|
4 |
|
src/lib/src/Modules/AuditTrail/Lib/AuditLogger.php
CHANGED
@@ -39,7 +39,7 @@ class AuditLogger extends EventsListener {
|
|
39 |
$con->getModule_Traffic()->getRequestLogger()->execute();
|
40 |
}
|
41 |
|
42 |
-
if ( $con->
|
43 |
try {
|
44 |
$fileHandlerWithFilter = new FilterHandler( new LogFileHandler( $mod ), $opts->getLogLevelsFile() );
|
45 |
if ( $opts->getOpt( 'log_format_file' ) === 'json' ) {
|
@@ -50,6 +50,18 @@ class AuditLogger extends EventsListener {
|
|
50 |
catch ( \Exception $e ) {
|
51 |
}
|
52 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
}
|
54 |
|
55 |
public function getLogger() :Logger {
|
39 |
$con->getModule_Traffic()->getRequestLogger()->execute();
|
40 |
}
|
41 |
|
42 |
+
if ( $con->cache_dir_handler->dirExists() && $opts->isLogToFile() ) {
|
43 |
try {
|
44 |
$fileHandlerWithFilter = new FilterHandler( new LogFileHandler( $mod ), $opts->getLogLevelsFile() );
|
45 |
if ( $opts->getOpt( 'log_format_file' ) === 'json' ) {
|
50 |
catch ( \Exception $e ) {
|
51 |
}
|
52 |
}
|
53 |
+
|
54 |
+
$this->pushCustomHandlers();
|
55 |
+
}
|
56 |
+
|
57 |
+
private function pushCustomHandlers() {
|
58 |
+
$custom = apply_filters( 'shield/custom_audit_trail_handlers', [] );
|
59 |
+
array_map(
|
60 |
+
function ( $handler ) {
|
61 |
+
$this->getLogger()->pushHandler( $handler );
|
62 |
+
},
|
63 |
+
( $this->getCon()->isPremiumActive() && is_array( $custom ) ) ? $custom : []
|
64 |
+
);
|
65 |
}
|
66 |
|
67 |
public function getLogger() :Logger {
|
src/lib/src/Modules/AuditTrail/Lib/AuditMessageBuilder.php
CHANGED
@@ -4,6 +4,8 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail\Lib;
|
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail\DB\LogRecord;
|
6 |
|
|
|
|
|
7 |
class AuditMessageBuilder {
|
8 |
|
9 |
public static function BuildFromLogRecord( LogRecord $log ) :array {
|
@@ -11,7 +13,7 @@ class AuditMessageBuilder {
|
|
11 |
}
|
12 |
|
13 |
public static function Build( string $event, array $substitutions = [] ) :string {
|
14 |
-
$srvEvents =
|
15 |
|
16 |
$raw = implode( "\n", $srvEvents->getEventAuditStrings( $event ) );
|
17 |
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail\DB\LogRecord;
|
6 |
|
7 |
+
use function FernleafSystems\Wordpress\Plugin\Shield\Functions\get_plugin;
|
8 |
+
|
9 |
class AuditMessageBuilder {
|
10 |
|
11 |
public static function BuildFromLogRecord( LogRecord $log ) :array {
|
13 |
}
|
14 |
|
15 |
public static function Build( string $event, array $substitutions = [] ) :string {
|
16 |
+
$srvEvents = get_plugin()->getController()->loadEventsService();
|
17 |
|
18 |
$raw = implode( "\n", $srvEvents->getEventAuditStrings( $event ) );
|
19 |
|
src/lib/src/Modules/AuditTrail/Lib/LogTable/DelegateAjaxHandler.php
CHANGED
@@ -46,10 +46,6 @@ class DelegateAjaxHandler {
|
|
46 |
];
|
47 |
}
|
48 |
|
49 |
-
/**
|
50 |
-
* @return array
|
51 |
-
* @throws \Exception
|
52 |
-
*/
|
53 |
private function getRequestMeta() :array {
|
54 |
return [
|
55 |
'success' => true,
|
46 |
];
|
47 |
}
|
48 |
|
|
|
|
|
|
|
|
|
49 |
private function getRequestMeta() :array {
|
50 |
return [
|
51 |
'success' => true,
|
src/lib/src/Modules/AuditTrail/Lib/LogTable/LoadRawTableData.php
CHANGED
@@ -94,10 +94,9 @@ class LoadRawTableData extends BaseLoadTableData {
|
|
94 |
|
95 |
private function getColumnContent_Meta() :string {
|
96 |
return sprintf(
|
97 |
-
'<button type="button" class="btn
|
98 |
-
'data-toggle="popover"
|
99 |
-
'data-
|
100 |
-
'data-rid="%s">%s</button>', $this->log->rid,
|
101 |
sprintf( '<span class="meta-icon">%s</span>',
|
102 |
$this->getCon()->svgs->raw( 'bootstrap/tags.svg' )
|
103 |
)
|
94 |
|
95 |
private function getColumnContent_Meta() :string {
|
96 |
return sprintf(
|
97 |
+
'<button type="button" class="btn btn-link"'.
|
98 |
+
' data-toggle="popover"'.
|
99 |
+
' data-rid="%s">%s</button>', $this->log->rid,
|
|
|
100 |
sprintf( '<span class="meta-icon">%s</span>',
|
101 |
$this->getCon()->svgs->raw( 'bootstrap/tags.svg' )
|
102 |
)
|
src/lib/src/Modules/AuditTrail/ModCon.php
CHANGED
@@ -137,12 +137,4 @@ class ModCon extends BaseShield\ModCon {
|
|
137 |
}
|
138 |
return $data;
|
139 |
}
|
140 |
-
|
141 |
-
/**
|
142 |
-
* @inheritDoc
|
143 |
-
* @deprecated 13.0
|
144 |
-
*/
|
145 |
-
public function getDbHandlers( $bInitAll = false ) {
|
146 |
-
return [];
|
147 |
-
}
|
148 |
}
|
137 |
}
|
138 |
return $data;
|
139 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
}
|
src/lib/src/Modules/AuditTrail/WpCli.php
CHANGED
@@ -3,16 +3,13 @@
|
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
7 |
|
8 |
-
class WpCli extends
|
9 |
|
10 |
-
|
11 |
-
* @inheritDoc
|
12 |
-
*/
|
13 |
-
protected function getCmdHandlers() :array {
|
14 |
return [
|
15 |
-
|
16 |
];
|
17 |
}
|
18 |
}
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\AuditTrail;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
7 |
|
8 |
+
class WpCli extends BaseShield\WpCli {
|
9 |
|
10 |
+
protected function enumCmdHandlers() :array {
|
|
|
|
|
|
|
11 |
return [
|
12 |
+
AuditTrail\WpCli\Display::class
|
13 |
];
|
14 |
}
|
15 |
}
|
src/lib/src/Modules/Base/ModCon.php
CHANGED
@@ -114,7 +114,7 @@ abstract class ModCon {
|
|
114 |
add_action( $con->prefix( 'run_processors' ), [ $this, 'onRunProcessors' ], $nRunPriority );
|
115 |
|
116 |
add_action( 'init', [ $this, 'onWpInit' ], 1 );
|
117 |
-
add_action( 'init', [ $this, 'onWpLoaded' ]
|
118 |
|
119 |
add_action( $con->prefix( 'plugin_shutdown' ), [ $this, 'onPluginShutdown' ] );
|
120 |
add_action( $con->prefix( 'deactivate_plugin' ), [ $this, 'onPluginDeactivate' ] );
|
@@ -705,11 +705,9 @@ abstract class ModCon {
|
|
705 |
}
|
706 |
|
707 |
/**
|
708 |
-
* @param string $action
|
709 |
-
* @param bool $asJson
|
710 |
* @return array|string
|
711 |
*/
|
712 |
-
public function getAjaxActionData( string $action = '', $asJson = false ) {
|
713 |
$data = $this->getNonceActionData( $action );
|
714 |
$data[ 'ajaxurl' ] = admin_url( 'admin-ajax.php' );
|
715 |
return $asJson ? json_encode( (object)$data ) : $data;
|
@@ -808,18 +806,6 @@ abstract class ModCon {
|
|
808 |
$this->getOptions()->deleteStorage();
|
809 |
}
|
810 |
|
811 |
-
/**
|
812 |
-
* @deprecated 13.0.6
|
813 |
-
*/
|
814 |
-
protected function getAllFormOptionsAndTypes() :array {
|
815 |
-
return array_map(
|
816 |
-
function ( $optDef ) {
|
817 |
-
return $optDef[ 'type' ];
|
818 |
-
},
|
819 |
-
$this->getOptions()->getVisibleOptions()
|
820 |
-
);
|
821 |
-
}
|
822 |
-
|
823 |
protected function handleModAction( string $action ) {
|
824 |
switch ( $action ) {
|
825 |
case 'file_download':
|
@@ -866,16 +852,18 @@ abstract class ModCon {
|
|
866 |
}
|
867 |
|
868 |
/**
|
869 |
-
* @param string
|
870 |
-
* @param
|
871 |
-
* @param bool
|
|
|
872 |
* @return $this
|
873 |
*/
|
874 |
-
public function setFlashAdminNotice( $msg, $isError = false, $bShowOnLogin = false ) {
|
875 |
$this->getCon()
|
876 |
->getAdminNotices()
|
877 |
->addFlash(
|
878 |
sprintf( '[%s] %s', $this->getCon()->getHumanName(), $msg ),
|
|
|
879 |
$isError,
|
880 |
$bShowOnLogin
|
881 |
);
|
@@ -1290,14 +1278,10 @@ abstract class ModCon {
|
|
1290 |
|
1291 |
/**
|
1292 |
* @return Shield\Modules\Base\WpCli
|
1293 |
-
* @throws \Exception
|
1294 |
*/
|
1295 |
public function getWpCli() {
|
1296 |
if ( !isset( $this->oWpCli ) ) {
|
1297 |
$this->oWpCli = $this->loadModElement( 'WpCli' );
|
1298 |
-
if ( !$this->oWpCli instanceof Shield\Modules\Base\WpCli ) {
|
1299 |
-
throw new \Exception( 'WP-CLI not supported' );
|
1300 |
-
}
|
1301 |
}
|
1302 |
return $this->oWpCli;
|
1303 |
}
|
114 |
add_action( $con->prefix( 'run_processors' ), [ $this, 'onRunProcessors' ], $nRunPriority );
|
115 |
|
116 |
add_action( 'init', [ $this, 'onWpInit' ], 1 );
|
117 |
+
add_action( 'init', [ $this, 'onWpLoaded' ] );
|
118 |
|
119 |
add_action( $con->prefix( 'plugin_shutdown' ), [ $this, 'onPluginShutdown' ] );
|
120 |
add_action( $con->prefix( 'deactivate_plugin' ), [ $this, 'onPluginDeactivate' ] );
|
705 |
}
|
706 |
|
707 |
/**
|
|
|
|
|
708 |
* @return array|string
|
709 |
*/
|
710 |
+
public function getAjaxActionData( string $action = '', bool $asJson = false ) {
|
711 |
$data = $this->getNonceActionData( $action );
|
712 |
$data[ 'ajaxurl' ] = admin_url( 'admin-ajax.php' );
|
713 |
return $asJson ? json_encode( (object)$data ) : $data;
|
806 |
$this->getOptions()->deleteStorage();
|
807 |
}
|
808 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
809 |
protected function handleModAction( string $action ) {
|
810 |
switch ( $action ) {
|
811 |
case 'file_download':
|
852 |
}
|
853 |
|
854 |
/**
|
855 |
+
* @param string $msg
|
856 |
+
* @param \WP_User|null $user
|
857 |
+
* @param bool $isError
|
858 |
+
* @param bool $bShowOnLogin
|
859 |
* @return $this
|
860 |
*/
|
861 |
+
public function setFlashAdminNotice( $msg, $user = null, $isError = false, $bShowOnLogin = false ) {
|
862 |
$this->getCon()
|
863 |
->getAdminNotices()
|
864 |
->addFlash(
|
865 |
sprintf( '[%s] %s', $this->getCon()->getHumanName(), $msg ),
|
866 |
+
$user,
|
867 |
$isError,
|
868 |
$bShowOnLogin
|
869 |
);
|
1278 |
|
1279 |
/**
|
1280 |
* @return Shield\Modules\Base\WpCli
|
|
|
1281 |
*/
|
1282 |
public function getWpCli() {
|
1283 |
if ( !isset( $this->oWpCli ) ) {
|
1284 |
$this->oWpCli = $this->loadModElement( 'WpCli' );
|
|
|
|
|
|
|
1285 |
}
|
1286 |
return $this->oWpCli;
|
1287 |
}
|
src/lib/src/Modules/Base/Options.php
CHANGED
@@ -159,6 +159,9 @@ class Options {
|
|
159 |
return ( $this->getRawData_FullFeatureConfig()[ 'properties' ] ?? [] )[ $property ] ?? null;
|
160 |
}
|
161 |
|
|
|
|
|
|
|
162 |
public function getWpCliCfg() :array {
|
163 |
return array_merge(
|
164 |
[
|
@@ -199,12 +202,32 @@ class Options {
|
|
199 |
return in_array( $key, $this->getOptionsKeys() );
|
200 |
}
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
public function isValidOptionValueType( string $key, $value ) :bool {
|
203 |
switch ( $this->getOptionType( $key ) ) {
|
204 |
case 'array':
|
205 |
case 'multiple_select':
|
206 |
$valid = is_array( $value );
|
207 |
break;
|
|
|
|
|
|
|
208 |
default:
|
209 |
$valid = true;
|
210 |
break;
|
@@ -323,20 +346,6 @@ class Options {
|
|
323 |
}, $this->getVisibleOptions() );
|
324 |
}
|
325 |
|
326 |
-
/**
|
327 |
-
* @deprecated 13.0.6
|
328 |
-
*/
|
329 |
-
public function getOptionsForPluginUse() :array {
|
330 |
-
return [];
|
331 |
-
}
|
332 |
-
|
333 |
-
/**
|
334 |
-
* @deprecated 13.0.6
|
335 |
-
*/
|
336 |
-
protected function getOptionsForSection( string $slug ) :array {
|
337 |
-
return [];
|
338 |
-
}
|
339 |
-
|
340 |
public function getAdditionalMenuItems() :array {
|
341 |
return $this->getRawData_FullFeatureConfig()[ 'menu_items' ] ?? [];
|
342 |
}
|
@@ -364,7 +373,8 @@ class Options {
|
|
364 |
$value = $this->getOptDefault( $key, $mDefault );
|
365 |
$this->setOpt( $key, $value );
|
366 |
}
|
367 |
-
|
|
|
368 |
}
|
369 |
|
370 |
/**
|
159 |
return ( $this->getRawData_FullFeatureConfig()[ 'properties' ] ?? [] )[ $property ] ?? null;
|
160 |
}
|
161 |
|
162 |
+
/**
|
163 |
+
* @deprecated 14.0
|
164 |
+
*/
|
165 |
public function getWpCliCfg() :array {
|
166 |
return array_merge(
|
167 |
[
|
202 |
return in_array( $key, $this->getOptionsKeys() );
|
203 |
}
|
204 |
|
205 |
+
public function ensureOptValueType( string $key, $value ) {
|
206 |
+
switch ( $this->getOptionType( $key ) ) {
|
207 |
+
case 'boolean':
|
208 |
+
$value = (bool)$value;
|
209 |
+
break;
|
210 |
+
case 'integer':
|
211 |
+
$value = (int)$value;
|
212 |
+
break;
|
213 |
+
case 'text':
|
214 |
+
$value = (string)$value;
|
215 |
+
break;
|
216 |
+
default:
|
217 |
+
break;
|
218 |
+
}
|
219 |
+
return $value;
|
220 |
+
}
|
221 |
+
|
222 |
public function isValidOptionValueType( string $key, $value ) :bool {
|
223 |
switch ( $this->getOptionType( $key ) ) {
|
224 |
case 'array':
|
225 |
case 'multiple_select':
|
226 |
$valid = is_array( $value );
|
227 |
break;
|
228 |
+
case 'integer':
|
229 |
+
$valid = is_numeric( $value );
|
230 |
+
break;
|
231 |
default:
|
232 |
$valid = true;
|
233 |
break;
|
346 |
}, $this->getVisibleOptions() );
|
347 |
}
|
348 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
349 |
public function getAdditionalMenuItems() :array {
|
350 |
return $this->getRawData_FullFeatureConfig()[ 'menu_items' ] ?? [];
|
351 |
}
|
373 |
$value = $this->getOptDefault( $key, $mDefault );
|
374 |
$this->setOpt( $key, $value );
|
375 |
}
|
376 |
+
|
377 |
+
return $this->ensureOptValueType( $key, $this->aOptionsValues[ $key ] ?? $mDefault );
|
378 |
}
|
379 |
|
380 |
/**
|
src/lib/src/Modules/Base/Options/BuildForDisplay.php
CHANGED
@@ -220,9 +220,7 @@ class BuildForDisplay {
|
|
220 |
|
221 |
case 'file_locker':
|
222 |
if ( !Services::Data()->isWindows() ) {
|
223 |
-
error_log( var_export( $option[ 'value_options' ][ 'root_webconfig' ], true ) );
|
224 |
$option[ 'value_options' ][ 'root_webconfig' ] .= sprintf( ' (%s)', __( 'unavailable', 'wp-simple-firewall' ) );
|
225 |
-
error_log( var_export( $option, true ) );
|
226 |
}
|
227 |
break;
|
228 |
|
220 |
|
221 |
case 'file_locker':
|
222 |
if ( !Services::Data()->isWindows() ) {
|
|
|
223 |
$option[ 'value_options' ][ 'root_webconfig' ] .= sprintf( ' (%s)', __( 'unavailable', 'wp-simple-firewall' ) );
|
|
|
224 |
}
|
225 |
break;
|
226 |
|
src/lib/src/Modules/Base/Strings.php
CHANGED
@@ -81,7 +81,7 @@ class Strings {
|
|
81 |
|
82 |
'mode' => __( 'Mode', 'wp-simple-firewall' ),
|
83 |
'mode_simple' => __( 'Simple', 'wp-simple-firewall' ),
|
84 |
-
'mode_advanced' => __( '', 'wp-simple-firewall' ),
|
85 |
'mode_switchto' => sprintf( '%s: %s', __( 'Switch To', 'wp-simple-firewall' ),
|
86 |
$bIsAdvanced ? __( 'Simple', 'wp-simple-firewall' ) : __( 'Advanced', 'wp-simple-firewall' ) ),
|
87 |
'mode_switchfrom' => sprintf( '%s: %s', __( 'Mode', 'wp-simple-firewall' ),
|
81 |
|
82 |
'mode' => __( 'Mode', 'wp-simple-firewall' ),
|
83 |
'mode_simple' => __( 'Simple', 'wp-simple-firewall' ),
|
84 |
+
'mode_advanced' => __( 'Advanced', 'wp-simple-firewall' ),
|
85 |
'mode_switchto' => sprintf( '%s: %s', __( 'Switch To', 'wp-simple-firewall' ),
|
86 |
$bIsAdvanced ? __( 'Simple', 'wp-simple-firewall' ) : __( 'Advanced', 'wp-simple-firewall' ) ),
|
87 |
'mode_switchfrom' => sprintf( '%s: %s', __( 'Mode', 'wp-simple-firewall' ),
|
src/lib/src/Modules/Base/UI.php
CHANGED
@@ -107,7 +107,7 @@ class UI {
|
|
107 |
|
108 |
'form_action' => Services::Request()->getUri(),
|
109 |
'css_bootstrap' => $urlBuilder->forCss( 'bootstrap' ),
|
110 |
-
'css_pages' => $urlBuilder->forCss( 'pages' ),
|
111 |
'css_steps' => $urlBuilder->forCss( 'jquery.steps' ),
|
112 |
'css_fancybox' => $urlBuilder->forCss( 'jquery.fancybox.min' ),
|
113 |
'css_globalplugin' => $urlBuilder->forCss( 'global-plugin' ),
|
107 |
|
108 |
'form_action' => Services::Request()->getUri(),
|
109 |
'css_bootstrap' => $urlBuilder->forCss( 'bootstrap' ),
|
110 |
+
'css_pages' => $urlBuilder->forCss( 'shield/pages' ),
|
111 |
'css_steps' => $urlBuilder->forCss( 'jquery.steps' ),
|
112 |
'css_fancybox' => $urlBuilder->forCss( 'jquery.fancybox.min' ),
|
113 |
'css_globalplugin' => $urlBuilder->forCss( 'global-plugin' ),
|
src/lib/src/Modules/Base/WpCli.php
CHANGED
@@ -4,38 +4,58 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Base;
|
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\Common\ExecOnceModConsumer;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\WpCli\ModuleStandard;
|
|
|
7 |
|
8 |
class WpCli extends ExecOnceModConsumer {
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
protected function run() {
|
11 |
try {
|
12 |
-
|
13 |
-
$
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
catch ( \Exception $e ) {
|
17 |
}
|
18 |
}
|
19 |
|
20 |
/**
|
21 |
-
* @return
|
22 |
*/
|
23 |
protected function getAllCmdHandlers() :array {
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
[ new ModuleStandard() ],
|
30 |
-
$this->getCmdHandlers()
|
31 |
-
)
|
32 |
-
);
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
-
* @return
|
37 |
*/
|
38 |
-
protected function
|
39 |
return [];
|
40 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\Common\ExecOnceModConsumer;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\WpCli\ModuleStandard;
|
7 |
+
use FernleafSystems\Wordpress\Services\Services;
|
8 |
|
9 |
class WpCli extends ExecOnceModConsumer {
|
10 |
|
11 |
+
protected function canRun() :bool {
|
12 |
+
return Services::WpGeneral()->isWpCli()
|
13 |
+
&& $this->getCfg()[ 'enabled' ]
|
14 |
+
&& !empty( $this->getAllCmdHandlers() );
|
15 |
+
}
|
16 |
+
|
17 |
protected function run() {
|
18 |
try {
|
19 |
+
array_map(
|
20 |
+
function ( $handlerClass ) {
|
21 |
+
return ( new $handlerClass() )
|
22 |
+
->setMod( $this->getMod() )
|
23 |
+
->execute();
|
24 |
+
},
|
25 |
+
$this->getAllCmdHandlers()
|
26 |
+
);
|
27 |
}
|
28 |
catch ( \Exception $e ) {
|
29 |
}
|
30 |
}
|
31 |
|
32 |
/**
|
33 |
+
* @return string[]
|
34 |
*/
|
35 |
protected function getAllCmdHandlers() :array {
|
36 |
+
$handlers = $this->enumCmdHandlers();
|
37 |
+
if ( $this->getCfg()[ 'inc_mod_standard' ] ) {
|
38 |
+
$handlers[] = ModuleStandard::class;
|
39 |
+
}
|
40 |
+
return $handlers;
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
/**
|
44 |
+
* @return string[] - FQ class names
|
45 |
*/
|
46 |
+
protected function enumCmdHandlers() :array {
|
47 |
return [];
|
48 |
}
|
49 |
+
|
50 |
+
public function getCfg() :array {
|
51 |
+
return array_merge(
|
52 |
+
[
|
53 |
+
'enabled' => false,
|
54 |
+
'cmd_root' => $this->getCon()->getPluginPrefix(),
|
55 |
+
'cmd_base' => $this->getMod()->getSlug(),
|
56 |
+
'inc_mod_standard' => false,
|
57 |
+
],
|
58 |
+
$this->getOptions()->getRawData_FullFeatureConfig()[ 'wpcli' ] ?? []
|
59 |
+
);
|
60 |
+
}
|
61 |
}
|
src/lib/src/Modules/Base/WpCli/BaseWpCliCmd.php
CHANGED
@@ -2,21 +2,15 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\WpCli;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Plugin\Options;
|
7 |
use FernleafSystems\Wordpress\Services\Services;
|
8 |
|
9 |
-
abstract class BaseWpCliCmd {
|
10 |
-
|
11 |
-
use ModConsumer;
|
12 |
-
use \FernleafSystems\Utilities\Logic\ExecOnce;
|
13 |
|
14 |
protected function canRun() :bool {
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
->getOptions();
|
19 |
-
return $this->getOptions()->getWpCliCfg()[ 'enabled' ] && $pluginModOpts->isEnabledWpcli();
|
20 |
}
|
21 |
|
22 |
/**
|
@@ -35,20 +29,19 @@ abstract class BaseWpCliCmd {
|
|
35 |
|
36 |
protected function buildCmd( array $parts ) :string {
|
37 |
return implode( ' ',
|
38 |
-
array_filter( array_merge( $this->
|
39 |
);
|
40 |
}
|
41 |
|
42 |
/**
|
43 |
* @return string[]
|
44 |
*/
|
45 |
-
protected function
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
return empty( $root ) ? $this->getMod()->getModSlug( false ) : $root;
|
52 |
}
|
53 |
|
54 |
protected function mergeCommonCmdArgs( array $args ) :array {
|
@@ -74,22 +67,20 @@ abstract class BaseWpCliCmd {
|
|
74 |
}
|
75 |
|
76 |
/**
|
77 |
-
* @param array $args
|
78 |
-
* @return \WP_User
|
79 |
* @throws \WP_CLI\ExitException
|
80 |
*/
|
81 |
protected function loadUserFromArgs( array $args ) :\WP_User {
|
82 |
-
$
|
83 |
|
84 |
$user = null;
|
85 |
if ( isset( $args[ 'uid' ] ) ) {
|
86 |
-
$user = $
|
87 |
}
|
88 |
elseif ( isset( $args[ 'email' ] ) ) {
|
89 |
-
$user = $
|
90 |
}
|
91 |
elseif ( isset( $args[ 'username' ] ) ) {
|
92 |
-
$user = $
|
93 |
}
|
94 |
|
95 |
if ( !$user instanceof \WP_User || $user->ID < 1 ) {
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\WpCli;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\Common\ExecOnceModConsumer;
|
|
|
6 |
use FernleafSystems\Wordpress\Services\Services;
|
7 |
|
8 |
+
abstract class BaseWpCliCmd extends ExecOnceModConsumer {
|
|
|
|
|
|
|
9 |
|
10 |
protected function canRun() :bool {
|
11 |
+
return $this->getMod()
|
12 |
+
->getWpCli()
|
13 |
+
->getCfg()[ 'enabled' ];
|
|
|
|
|
14 |
}
|
15 |
|
16 |
/**
|
29 |
|
30 |
protected function buildCmd( array $parts ) :string {
|
31 |
return implode( ' ',
|
32 |
+
array_filter( array_merge( $this->getCmdBase(), $parts ) )
|
33 |
);
|
34 |
}
|
35 |
|
36 |
/**
|
37 |
* @return string[]
|
38 |
*/
|
39 |
+
protected function getCmdBase() :array {
|
40 |
+
$cfg = $this->getMod()->getWpCli()->getCfg();
|
41 |
+
return [
|
42 |
+
$cfg[ 'cmd_root' ],
|
43 |
+
$cfg[ 'cmd_base' ]
|
44 |
+
];
|
|
|
45 |
}
|
46 |
|
47 |
protected function mergeCommonCmdArgs( array $args ) :array {
|
67 |
}
|
68 |
|
69 |
/**
|
|
|
|
|
70 |
* @throws \WP_CLI\ExitException
|
71 |
*/
|
72 |
protected function loadUserFromArgs( array $args ) :\WP_User {
|
73 |
+
$WPU = Services::WpUsers();
|
74 |
|
75 |
$user = null;
|
76 |
if ( isset( $args[ 'uid' ] ) ) {
|
77 |
+
$user = $WPU->getUserById( $args[ 'uid' ] );
|
78 |
}
|
79 |
elseif ( isset( $args[ 'email' ] ) ) {
|
80 |
+
$user = $WPU->getUserByEmail( $args[ 'email' ] );
|
81 |
}
|
82 |
elseif ( isset( $args[ 'username' ] ) ) {
|
83 |
+
$user = $WPU->getUserByUsername( $args[ 'username' ] );
|
84 |
}
|
85 |
|
86 |
if ( !$user instanceof \WP_User || $user->ID < 1 ) {
|
src/lib/src/Modules/Base/WpCli/ModuleStandard.php
CHANGED
@@ -5,7 +5,7 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\WpCli;
|
|
5 |
class ModuleStandard extends BaseWpCliCmd {
|
6 |
|
7 |
/**
|
8 |
-
* @
|
9 |
*/
|
10 |
protected function addCmds() {
|
11 |
\WP_CLI::add_command(
|
@@ -149,52 +149,48 @@ class ModuleStandard extends BaseWpCliCmd {
|
|
149 |
}
|
150 |
}
|
151 |
|
152 |
-
/**
|
153 |
-
* @param array $null
|
154 |
-
* @param array $args
|
155 |
-
*/
|
156 |
public function cmdOptSet( array $null, array $args ) {
|
157 |
$this->getOptions()->setOpt( $args[ 'key' ], $args[ 'value' ] );
|
158 |
\WP_CLI::success( 'Option updated.' );
|
159 |
}
|
160 |
|
161 |
public function cmdOptList( array $null, array $args ) {
|
162 |
-
$
|
163 |
-
$
|
164 |
-
$
|
165 |
-
foreach ( $
|
166 |
try {
|
167 |
-
$
|
168 |
-
'key' => $
|
169 |
-
'name' => $
|
170 |
-
'type' => $
|
171 |
-
'current' => $
|
172 |
-
'default' => $
|
173 |
];
|
174 |
}
|
175 |
catch ( \Exception $e ) {
|
176 |
}
|
177 |
}
|
178 |
|
179 |
-
if ( empty( $
|
180 |
\WP_CLI::log( "This module doesn't have any configurable options." );
|
181 |
}
|
182 |
else {
|
183 |
if ( !\WP_CLI\Utils\get_flag_value( $args, 'full', false ) ) {
|
184 |
-
$
|
185 |
'key',
|
186 |
'name',
|
187 |
'current'
|
188 |
];
|
189 |
}
|
190 |
else {
|
191 |
-
$
|
192 |
}
|
193 |
|
194 |
\WP_CLI\Utils\format_items(
|
195 |
$args[ 'format' ],
|
196 |
-
$
|
197 |
-
$
|
198 |
);
|
199 |
}
|
200 |
}
|
5 |
class ModuleStandard extends BaseWpCliCmd {
|
6 |
|
7 |
/**
|
8 |
+
* @inheritDoc
|
9 |
*/
|
10 |
protected function addCmds() {
|
11 |
\WP_CLI::add_command(
|
149 |
}
|
150 |
}
|
151 |
|
|
|
|
|
|
|
|
|
152 |
public function cmdOptSet( array $null, array $args ) {
|
153 |
$this->getOptions()->setOpt( $args[ 'key' ], $args[ 'value' ] );
|
154 |
\WP_CLI::success( 'Option updated.' );
|
155 |
}
|
156 |
|
157 |
public function cmdOptList( array $null, array $args ) {
|
158 |
+
$opts = $this->getOptions();
|
159 |
+
$strings = $this->getMod()->getStrings();
|
160 |
+
$optsList = [];
|
161 |
+
foreach ( $opts->getOptionsForWpCli() as $key ) {
|
162 |
try {
|
163 |
+
$optsList[] = [
|
164 |
+
'key' => $key,
|
165 |
+
'name' => $strings->getOptionStrings( $key )[ 'name' ],
|
166 |
+
'type' => $opts->getOptionType( $key ),
|
167 |
+
'current' => $opts->getOpt( $key ),
|
168 |
+
'default' => $opts->getOptDefault( $key ),
|
169 |
];
|
170 |
}
|
171 |
catch ( \Exception $e ) {
|
172 |
}
|
173 |
}
|
174 |
|
175 |
+
if ( empty( $optsList ) ) {
|
176 |
\WP_CLI::log( "This module doesn't have any configurable options." );
|
177 |
}
|
178 |
else {
|
179 |
if ( !\WP_CLI\Utils\get_flag_value( $args, 'full', false ) ) {
|
180 |
+
$allKeys = [
|
181 |
'key',
|
182 |
'name',
|
183 |
'current'
|
184 |
];
|
185 |
}
|
186 |
else {
|
187 |
+
$allKeys = array_keys( $optsList[ 0 ] );
|
188 |
}
|
189 |
|
190 |
\WP_CLI\Utils\format_items(
|
191 |
$args[ 'format' ],
|
192 |
+
$optsList,
|
193 |
+
$allKeys
|
194 |
);
|
195 |
}
|
196 |
}
|
src/lib/src/Modules/BaseShield/WpCli.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
4 |
+
|
5 |
+
class WpCli extends \FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\WpCli {
|
6 |
+
|
7 |
+
public function getCfg() :array {
|
8 |
+
$cfg = parent::getCfg();
|
9 |
+
$cfg[ 'cmd_root' ] = 'shield';
|
10 |
+
return $cfg;
|
11 |
+
}
|
12 |
+
}
|
src/lib/src/Modules/Data/DB/UserMeta/MetaRecords.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\DB\UserMeta;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\ModCon;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\ModConsumer;
|
7 |
+
|
8 |
+
class MetaRecords {
|
9 |
+
|
10 |
+
use ModConsumer;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @return Ops\Record|null
|
14 |
+
*/
|
15 |
+
public function loadMeta( int $userID, bool $autoCreate = true ) {
|
16 |
+
/** @var ModCon $mod */
|
17 |
+
$mod = $this->getMod();
|
18 |
+
$dbh = $mod->getDbH_UserMeta();
|
19 |
+
/** @var Ops\Select $select */
|
20 |
+
$select = $dbh->getQuerySelector();
|
21 |
+
$record = $select->filterByUser( $userID )->first();
|
22 |
+
|
23 |
+
if ( empty( $record ) && $autoCreate && $this->addMeta( $userID ) ) {
|
24 |
+
$record = $this->loadMeta( $userID, false );
|
25 |
+
}
|
26 |
+
|
27 |
+
if ( !empty( $record ) ) {
|
28 |
+
$record->setDbHandler( $dbh );
|
29 |
+
}
|
30 |
+
|
31 |
+
return $record;
|
32 |
+
}
|
33 |
+
|
34 |
+
public function addMeta( int $userID ) :bool {
|
35 |
+
/** @var ModCon $mod */
|
36 |
+
$mod = $this->getMod();
|
37 |
+
$dbh = $mod->getDbH_UserMeta();
|
38 |
+
/** @var Ops\Insert $insert */
|
39 |
+
$insert = $dbh->getQueryInserter();
|
40 |
+
/** @var Ops\Record $record */
|
41 |
+
$record = $dbh->getRecord();
|
42 |
+
$record->user_id = $userID;
|
43 |
+
return $insert->insert( $record );
|
44 |
+
}
|
45 |
+
}
|
src/lib/src/Modules/Data/DB/UserMeta/Ops/Common.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\DB\UserMeta\Ops;
|
4 |
+
|
5 |
+
trait Common {
|
6 |
+
|
7 |
+
public function filterByUser( int $userID ) {
|
8 |
+
return $this->addWhereEquals( 'user_id', $userID );
|
9 |
+
}
|
10 |
+
|
11 |
+
public function filterByHardSuspended() {
|
12 |
+
return $this->addWhereNewerThan( 0, 'hard_suspended_at' );
|
13 |
+
}
|
14 |
+
|
15 |
+
public function filterByPassExpired( int $expiresAt ) {
|
16 |
+
return $this->addWhereOlderThan( $expiresAt, 'pass_started_at' );
|
17 |
+
}
|
18 |
+
|
19 |
+
public function filterByIdle( int $expiresAt ) {
|
20 |
+
return $this->addWhereOlderThan( $expiresAt, 'first_seen_at' )
|
21 |
+
->addWhereOlderThan( $expiresAt, 'last_login_at' )
|
22 |
+
->addWhereOlderThan( $expiresAt, 'pass_started_at' );
|
23 |
+
}
|
24 |
+
}
|
src/lib/src/Modules/Data/DB/UserMeta/Ops/Delete.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\DB\UserMeta\Ops;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Core\Databases\Base;
|
6 |
+
|
7 |
+
class Delete extends Base\Delete {
|
8 |
+
|
9 |
+
use Common;
|
10 |
+
}
|
src/lib/src/Modules/Data/DB/UserMeta/Ops/Handler.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\DB\UserMeta\Ops;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Core\Databases\Base;
|
6 |
+
|
7 |
+
class Handler extends Base\Handler {
|
8 |
+
|
9 |
+
}
|
src/lib/src/Modules/Data/DB/UserMeta/Ops/Insert.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\DB\UserMeta\Ops;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Core\Databases\Base;
|
6 |
+
|
7 |
+
class Insert extends Base\Insert {
|
8 |
+
|
9 |
+
}
|
src/lib/src/Modules/Data/DB/UserMeta/Ops/Record.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\DB\UserMeta\Ops;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @property int $user_id
|
7 |
+
* @property int $first_seen_at
|
8 |
+
* @property int $last_login_at
|
9 |
+
* @property int $last_2fa_verified_at
|
10 |
+
* @property int $hard_suspended_at
|
11 |
+
* @property int $pass_started_at
|
12 |
+
*/
|
13 |
+
class Record extends \FernleafSystems\Wordpress\Plugin\Core\Databases\Base\Record {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @param string $key
|
17 |
+
* @param mixed $value
|
18 |
+
*/
|
19 |
+
public function __set( string $key, $value ) {
|
20 |
+
$dbh = $this->getDbHandler();
|
21 |
+
if ( isset( $this->id ) && !empty( $dbh ) ) {
|
22 |
+
$dbh->getQueryUpdater()
|
23 |
+
->updateRecord( $this, [
|
24 |
+
$key => $value
|
25 |
+
] );
|
26 |
+
}
|
27 |
+
parent::__set( $key, $value );
|
28 |
+
}
|
29 |
+
}
|
src/lib/src/Modules/Data/DB/UserMeta/Ops/Select.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Data\DB\UserMeta\Ops;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Core\Databases\Base;
|
6 |
+
|
7 |
+
class Select extends Base\Select {
|
8 |
+
|
9 |
+
use Common;
|
10 |
+
}
|
src/lib/src/Modules/Data/ModCon.php
CHANGED
@@ -14,6 +14,10 @@ class ModCon extends BaseShield\ModCon {
|
|
14 |
return $this->getDbHandler()->loadDbH( 'ips' );
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
17 |
public function getDbH_ReqLogs() :DB\ReqLogs\Ops\Handler {
|
18 |
$this->getDbH_IPs();
|
19 |
return $this->getDbHandler()->loadDbH( 'req_logs' );
|
@@ -46,5 +50,7 @@ class ModCon extends BaseShield\ModCon {
|
|
46 |
) )
|
47 |
)
|
48 |
->query();
|
|
|
|
|
49 |
}
|
50 |
}
|
14 |
return $this->getDbHandler()->loadDbH( 'ips' );
|
15 |
}
|
16 |
|
17 |
+
public function getDbH_UserMeta() :DB\UserMeta\Ops\Handler {
|
18 |
+
return $this->getDbHandler()->loadDbH( 'user_meta' );
|
19 |
+
}
|
20 |
+
|
21 |
public function getDbH_ReqLogs() :DB\ReqLogs\Ops\Handler {
|
22 |
$this->getDbH_IPs();
|
23 |
return $this->getDbHandler()->loadDbH( 'req_logs' );
|
50 |
) )
|
51 |
)
|
52 |
->query();
|
53 |
+
|
54 |
+
// TODO 3. Clean User Meta.
|
55 |
}
|
56 |
}
|
src/lib/src/Modules/Events/Lib/EventsListener.php
CHANGED
@@ -3,6 +3,7 @@
|
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Events\Lib;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Controller;
|
|
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\PluginControllerConsumer;
|
7 |
|
8 |
abstract class EventsListener {
|
@@ -12,17 +13,21 @@ abstract class EventsListener {
|
|
12 |
/**
|
13 |
* @var bool
|
14 |
*/
|
15 |
-
private $
|
16 |
|
17 |
/**
|
18 |
-
* EventsListener constructor.
|
19 |
* @param Controller\Controller $con
|
|
|
20 |
*/
|
21 |
-
public function __construct( $con ) {
|
|
|
|
|
|
|
22 |
$this->setCon( $con );
|
|
|
23 |
|
24 |
-
add_action(
|
25 |
-
function ( $event, $meta = [], $def = [] )
|
26 |
$this->captureEvent(
|
27 |
(string)$event,
|
28 |
is_array( $meta ) ? $meta : [],
|
@@ -46,19 +51,15 @@ abstract class EventsListener {
|
|
46 |
|
47 |
}
|
48 |
|
49 |
-
|
50 |
-
|
51 |
-
*/
|
52 |
-
public function isCommit() {
|
53 |
-
return (bool)$this->bCommit;
|
54 |
}
|
55 |
|
56 |
/**
|
57 |
-
* @param bool $bCommit
|
58 |
* @return $this
|
59 |
*/
|
60 |
-
public function setIfCommit( $
|
61 |
-
$this->
|
62 |
return $this;
|
63 |
}
|
64 |
}
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Events\Lib;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Controller;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Functions;
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\PluginControllerConsumer;
|
8 |
|
9 |
abstract class EventsListener {
|
13 |
/**
|
14 |
* @var bool
|
15 |
*/
|
16 |
+
private $commit;
|
17 |
|
18 |
/**
|
|
|
19 |
* @param Controller\Controller $con
|
20 |
+
* @throws \Exception
|
21 |
*/
|
22 |
+
public function __construct( $con = null, bool $commit = false ) {
|
23 |
+
if ( !$con instanceof Controller\Controller ) {
|
24 |
+
$con = Functions\get_plugin()->getController();
|
25 |
+
}
|
26 |
$this->setCon( $con );
|
27 |
+
$this->commit = $commit;
|
28 |
|
29 |
+
add_action( 'shield/event',
|
30 |
+
function ( $event, $meta = [], $def = [] ) {
|
31 |
$this->captureEvent(
|
32 |
(string)$event,
|
33 |
is_array( $meta ) ? $meta : [],
|
51 |
|
52 |
}
|
53 |
|
54 |
+
public function isCommit() :bool {
|
55 |
+
return $this->commit;
|
|
|
|
|
|
|
56 |
}
|
57 |
|
58 |
/**
|
|
|
59 |
* @return $this
|
60 |
*/
|
61 |
+
public function setIfCommit( bool $commit ) {
|
62 |
+
$this->commit = $commit;
|
63 |
return $this;
|
64 |
}
|
65 |
}
|
src/lib/src/Modules/Events/Lib/EventsService.php
CHANGED
@@ -22,7 +22,7 @@ class EventsService {
|
|
22 |
try {
|
23 |
$this->verifyAuditParams( $event, $meta );
|
24 |
do_action(
|
25 |
-
|
26 |
$event,
|
27 |
$meta,
|
28 |
$this->getEventDef( $event )
|
@@ -136,13 +136,4 @@ class EventsService {
|
|
136 |
}
|
137 |
return $events;
|
138 |
}
|
139 |
-
|
140 |
-
/**
|
141 |
-
* @param string $eventKey
|
142 |
-
* @return bool
|
143 |
-
* @deprecated 12.1
|
144 |
-
*/
|
145 |
-
public function isSupportedEvent( string $eventKey ) :bool {
|
146 |
-
return array_key_exists( $eventKey, $this->getEvents() );
|
147 |
-
}
|
148 |
}
|
22 |
try {
|
23 |
$this->verifyAuditParams( $event, $meta );
|
24 |
do_action(
|
25 |
+
'shield/event',
|
26 |
$event,
|
27 |
$meta,
|
28 |
$this->getEventDef( $event )
|
136 |
}
|
137 |
return $events;
|
138 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
}
|
src/lib/src/Modules/HackGuard/Lib/FileLocker/FileLockerController.php
CHANGED
@@ -207,16 +207,6 @@ class FileLockerController {
|
|
207 |
}
|
208 |
}
|
209 |
|
210 |
-
/**
|
211 |
-
* @param string $fileKey
|
212 |
-
* @return File
|
213 |
-
* @throws \Exception
|
214 |
-
* @deprecated 12.0.10
|
215 |
-
*/
|
216 |
-
private function getFile( string $fileKey ) :File {
|
217 |
-
return ( new Lib\FileLocker\Ops\BuildFileFromFileKey() )->build( $fileKey );
|
218 |
-
}
|
219 |
-
|
220 |
protected function getState() :array {
|
221 |
/** @var HackGuard\Options $opts */
|
222 |
$opts = $this->getOptions();
|
207 |
}
|
208 |
}
|
209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
protected function getState() :array {
|
211 |
/** @var HackGuard\Options $opts */
|
212 |
$opts = $this->getOptions();
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/Base.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\ModConsumer;
|
6 |
+
|
7 |
+
class Base {
|
8 |
+
|
9 |
+
use ModConsumer;
|
10 |
+
|
11 |
+
protected function isTempDirAvailable() :bool {
|
12 |
+
return !empty( $this->getTempDir() );
|
13 |
+
}
|
14 |
+
|
15 |
+
protected function getTempDir() :string {
|
16 |
+
return $this->getCon()->cache_dir_handler->buildSubDir( 'ptguard' );
|
17 |
+
}
|
18 |
+
}
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/BaseAction.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
@@ -8,7 +8,7 @@ use FernleafSystems\Wordpress\Plugin\Shield\Modules\ModConsumer;
|
|
8 |
use FernleafSystems\Wordpress\Services\Core\VOs\Assets\WpPluginVo;
|
9 |
use FernleafSystems\Wordpress\Services\Core\VOs\Assets\WpThemeVo;
|
10 |
|
11 |
-
class BaseAction {
|
12 |
|
13 |
use ModConsumer;
|
14 |
|
@@ -34,13 +34,12 @@ class BaseAction {
|
|
34 |
}
|
35 |
|
36 |
/**
|
37 |
-
* @return Snapshots\Store
|
38 |
* @throws \Exception
|
39 |
*/
|
40 |
-
protected function getNewStore() {
|
41 |
/** @var ModCon $mod */
|
42 |
$mod = $this->getMod();
|
43 |
return ( new Snapshots\Store( $this->getAsset() ) )
|
44 |
-
->setWorkingDir( $
|
45 |
}
|
46 |
}
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
8 |
use FernleafSystems\Wordpress\Services\Core\VOs\Assets\WpPluginVo;
|
9 |
use FernleafSystems\Wordpress\Services\Core\VOs\Assets\WpThemeVo;
|
10 |
|
11 |
+
class BaseAction extends Base {
|
12 |
|
13 |
use ModConsumer;
|
14 |
|
34 |
}
|
35 |
|
36 |
/**
|
|
|
37 |
* @throws \Exception
|
38 |
*/
|
39 |
+
protected function getNewStore() :Snapshots\Store {
|
40 |
/** @var ModCon $mod */
|
41 |
$mod = $this->getMod();
|
42 |
return ( new Snapshots\Store( $this->getAsset() ) )
|
43 |
+
->setWorkingDir( $this->getTempDir() );
|
44 |
}
|
45 |
}
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/BaseBulk.php
CHANGED
@@ -4,6 +4,9 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshot
|
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\ModConsumer;
|
6 |
|
|
|
|
|
|
|
7 |
class BaseBulk {
|
8 |
|
9 |
use ModConsumer;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\ModConsumer;
|
6 |
|
7 |
+
/**
|
8 |
+
* @deprecated 14.0
|
9 |
+
*/
|
10 |
class BaseBulk {
|
11 |
|
12 |
use ModConsumer;
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/CleanStale.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\ModCon;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Scans\Helpers\StandardDirectoryIterator;
|
7 |
+
use FernleafSystems\Wordpress\Services\Services;
|
8 |
+
|
9 |
+
class CleanStale extends Base {
|
10 |
+
|
11 |
+
public function run() {
|
12 |
+
try {
|
13 |
+
if ( !$this->isTempDirAvailable() ) {
|
14 |
+
throw new \Exception( 'temporary directory is unavailable' );
|
15 |
+
}
|
16 |
+
|
17 |
+
$boundary = Services::Request()
|
18 |
+
->carbon()
|
19 |
+
->subDay()->timestamp;
|
20 |
+
$IT = StandardDirectoryIterator::create( $this->getTempDir() );
|
21 |
+
foreach ( $IT as $file ) {
|
22 |
+
/** @var \SplFileInfo $file */
|
23 |
+
if ( $boundary > $file->getMTime() ) {
|
24 |
+
Services::WpFs()->deleteFile( $file->getPathname() );
|
25 |
+
}
|
26 |
+
}
|
27 |
+
}
|
28 |
+
catch ( \Exception $e ) {
|
29 |
+
}
|
30 |
+
}
|
31 |
+
}
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/CreateNew.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
@@ -8,10 +8,9 @@ class CreateNew extends BaseAction {
|
|
8 |
|
9 |
/**
|
10 |
* Will delete any existing stores for the asset
|
11 |
-
* @return Snapshots\Store
|
12 |
* @throws \Exception
|
13 |
*/
|
14 |
-
public function run() {
|
15 |
( new Delete() )
|
16 |
->setMod( $this->getMod() )
|
17 |
->setAsset( $this->getAsset() )
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
8 |
|
9 |
/**
|
10 |
* Will delete any existing stores for the asset
|
|
|
11 |
* @throws \Exception
|
12 |
*/
|
13 |
+
public function run() :Snapshots\Store {
|
14 |
( new Delete() )
|
15 |
->setMod( $this->getMod() )
|
16 |
->setAsset( $this->getAsset() )
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/DeleteAll.php
CHANGED
@@ -1,15 +1,14 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\ModCon;
|
6 |
use FernleafSystems\Wordpress\Services\Services;
|
7 |
|
8 |
-
class DeleteAll extends
|
9 |
|
10 |
public function run() {
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
}
|
15 |
}
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
|
|
5 |
use FernleafSystems\Wordpress\Services\Services;
|
6 |
|
7 |
+
class DeleteAll extends Base {
|
8 |
|
9 |
public function run() {
|
10 |
+
if ( $this->isTempDirAvailable() ) {
|
11 |
+
Services::WpFs()->deleteDir( $this->getTempDir() );
|
12 |
+
}
|
13 |
}
|
14 |
}
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/Load.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
@@ -8,10 +8,9 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
8 |
class Load extends BaseAction {
|
9 |
|
10 |
/**
|
11 |
-
* @return Snapshots\Store
|
12 |
* @throws \Exception
|
13 |
*/
|
14 |
-
public function run() {
|
15 |
$store = $this->getNewStore();
|
16 |
|
17 |
foreach ( [ $store->getSnapStorePath(), $store->getSnapStoreMetaPath() ] as $path ) {
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\StoreAction;
|
4 |
|
8 |
class Load extends BaseAction {
|
9 |
|
10 |
/**
|
|
|
11 |
* @throws \Exception
|
12 |
*/
|
13 |
+
public function run() :Snapshots\Store {
|
14 |
$store = $this->getNewStore();
|
15 |
|
16 |
foreach ( [ $store->getSnapStorePath(), $store->getSnapStoreMetaPath() ] as $path ) {
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/ScheduleBuildAll.php
CHANGED
@@ -10,8 +10,25 @@ use FernleafSystems\Wordpress\Services\Core\VOs\Assets\{
|
|
10 |
};
|
11 |
use FernleafSystems\Wordpress\Services\Services;
|
12 |
|
13 |
-
class ScheduleBuildAll extends
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
public function build() {
|
16 |
foreach ( $this->getAssetsThatNeedBuilt() as $asset ) {
|
17 |
try {
|
@@ -46,18 +63,6 @@ class ScheduleBuildAll extends BaseBulk {
|
|
46 |
}
|
47 |
}
|
48 |
|
49 |
-
public function schedule() {
|
50 |
-
if ( count( $this->getAssetsThatNeedBuilt() ) > 0 ) {
|
51 |
-
$hook = $this->getCronHook();
|
52 |
-
if ( is_main_network() ) {
|
53 |
-
add_action( $hook, [ $this, 'build' ] );
|
54 |
-
}
|
55 |
-
if ( wp_next_scheduled( $hook ) === false ) {
|
56 |
-
wp_schedule_single_event( Services::Request()->ts() + 60, $hook );
|
57 |
-
}
|
58 |
-
}
|
59 |
-
}
|
60 |
-
|
61 |
/**
|
62 |
* Only those that don't have a meta file or the versions are different
|
63 |
* @return WpPluginVo[]|WpThemeVo[]
|
@@ -88,10 +93,4 @@ class ScheduleBuildAll extends BaseBulk {
|
|
88 |
private function getCronHook() :string {
|
89 |
return $this->getCon()->prefix( 'ptg_build_snapshots' );
|
90 |
}
|
91 |
-
|
92 |
-
/**
|
93 |
-
* @deprecated 13.0
|
94 |
-
*/
|
95 |
-
public function hookBuild() {
|
96 |
-
}
|
97 |
}
|
10 |
};
|
11 |
use FernleafSystems\Wordpress\Services\Services;
|
12 |
|
13 |
+
class ScheduleBuildAll extends Base {
|
14 |
|
15 |
+
public function schedule() {
|
16 |
+
if ( $this->isTempDirAvailable() && count( $this->getAssetsThatNeedBuilt() ) > 0 ) {
|
17 |
+
$hook = $this->getCronHook();
|
18 |
+
if ( is_main_network() ) {
|
19 |
+
add_action( $hook, function () {
|
20 |
+
$this->build();
|
21 |
+
} );
|
22 |
+
}
|
23 |
+
if ( wp_next_scheduled( $hook ) === false ) {
|
24 |
+
wp_schedule_single_event( Services::Request()->ts() + 60, $hook );
|
25 |
+
}
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @deprecated 14.0 - make this private
|
31 |
+
*/
|
32 |
public function build() {
|
33 |
foreach ( $this->getAssetsThatNeedBuilt() as $asset ) {
|
34 |
try {
|
63 |
}
|
64 |
}
|
65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
/**
|
67 |
* Only those that don't have a meta file or the versions are different
|
68 |
* @return WpPluginVo[]|WpThemeVo[]
|
93 |
private function getCronHook() :string {
|
94 |
return $this->getCon()->prefix( 'ptg_build_snapshots' );
|
95 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
src/lib/src/Modules/HackGuard/Lib/Snapshots/StoreAction/TouchAll.php
CHANGED
@@ -5,20 +5,22 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshot
|
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\FindAssetsToSnap;
|
6 |
use FernleafSystems\Wordpress\Services\Services;
|
7 |
|
8 |
-
class TouchAll extends
|
9 |
|
10 |
public function run() {
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
19 |
}
|
20 |
-
}
|
21 |
-
catch ( \Exception $e ) {
|
22 |
}
|
23 |
}
|
24 |
}
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Lib\Snapshots\FindAssetsToSnap;
|
6 |
use FernleafSystems\Wordpress\Services\Services;
|
7 |
|
8 |
+
class TouchAll extends Base {
|
9 |
|
10 |
public function run() {
|
11 |
+
if ( $this->isTempDirAvailable() ) {
|
12 |
+
foreach ( ( new FindAssetsToSnap() )->setMod( $this->getMod() )->run() as $asset ) {
|
13 |
+
try {
|
14 |
+
$store = ( new Load() )
|
15 |
+
->setMod( $this->getMod() )
|
16 |
+
->setAsset( $asset )
|
17 |
+
->run();
|
18 |
+
foreach ( [ $store->getSnapStorePath(), $store->getSnapStoreMetaPath() ] as $path ) {
|
19 |
+
Services::WpFs()->touch( $path );
|
20 |
+
}
|
21 |
+
}
|
22 |
+
catch ( \Exception $e ) {
|
23 |
}
|
|
|
|
|
24 |
}
|
25 |
}
|
26 |
}
|
src/lib/src/Modules/HackGuard/ModCon.php
CHANGED
@@ -210,10 +210,11 @@ class ModCon extends BaseShield\ModCon {
|
|
210 |
$opts->setOpt( 'ufc_exclusions', array_unique( $excl ) );
|
211 |
}
|
212 |
|
|
|
|
|
|
|
213 |
public function getPtgSnapsBaseDir() :string {
|
214 |
-
return (
|
215 |
-
->setCon( $this->getCon() )
|
216 |
-
->buildSubDir( 'ptguard' );
|
217 |
}
|
218 |
|
219 |
public function hasWizard() :bool {
|
@@ -231,21 +232,6 @@ class ModCon extends BaseShield\ModCon {
|
|
231 |
}
|
232 |
|
233 |
/**
|
234 |
-
* @deprecated 12.1
|
235 |
-
*/
|
236 |
-
public function getDbHandler_ScanQueue() :Databases\ScanQueue\Handler {
|
237 |
-
return $this->getDbH( 'scanq' );
|
238 |
-
}
|
239 |
-
|
240 |
-
/**
|
241 |
-
* @deprecated 12.1
|
242 |
-
*/
|
243 |
-
public function getDbHandler_ScanResults() :Databases\Scanner\Handler {
|
244 |
-
return $this->getDbH( 'scanner' );
|
245 |
-
}
|
246 |
-
|
247 |
-
/**
|
248 |
-
* @return bool
|
249 |
* @throws \Exception
|
250 |
*/
|
251 |
protected function isReadyToExecute() :bool {
|
@@ -268,7 +254,7 @@ class ModCon extends BaseShield\ModCon {
|
|
268 |
|
269 |
/**
|
270 |
* @inheritDoc
|
271 |
-
* @deprecated 13.
|
272 |
*/
|
273 |
public function getDbHandlers( $bInitAll = false ) {
|
274 |
return [];
|
210 |
$opts->setOpt( 'ufc_exclusions', array_unique( $excl ) );
|
211 |
}
|
212 |
|
213 |
+
/**
|
214 |
+
* @deprecated 14.0
|
215 |
+
*/
|
216 |
public function getPtgSnapsBaseDir() :string {
|
217 |
+
return $this->getCon()->cache_dir_handler->buildSubDir( 'ptguard' );
|
|
|
|
|
218 |
}
|
219 |
|
220 |
public function hasWizard() :bool {
|
232 |
}
|
233 |
|
234 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
* @throws \Exception
|
236 |
*/
|
237 |
protected function isReadyToExecute() :bool {
|
254 |
|
255 |
/**
|
256 |
* @inheritDoc
|
257 |
+
* @deprecated 13.1
|
258 |
*/
|
259 |
public function getDbHandlers( $bInitAll = false ) {
|
260 |
return [];
|
src/lib/src/Modules/HackGuard/Render/ScanResults/SectionMalware.php
CHANGED
@@ -2,11 +2,7 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Render\ScanResults;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\
|
6 |
-
ModCon,
|
7 |
-
Scan\Controller\Afs,
|
8 |
-
Scan\Controller\Mal
|
9 |
-
};
|
10 |
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
11 |
use FernleafSystems\Wordpress\Plugin\Shield\Tables\DataTables\Build\Scans\ForMalware;
|
12 |
use FernleafSystems\Wordpress\Services\Services;
|
@@ -22,8 +18,6 @@ class SectionMalware extends SectionBase {
|
|
22 |
}
|
23 |
|
24 |
protected function buildRenderData() :array {
|
25 |
-
/** @var ModCon $mod */
|
26 |
-
$mod = $this->getMod();
|
27 |
$data = $this->buildMalwareData();
|
28 |
return Services::DataManipulation()
|
29 |
->mergeArraysRecursive( $this->getCommonRenderData(), [
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Render\ScanResults;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\ModCon;
|
|
|
|
|
|
|
|
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Tables\DataTables\Build\Scans\ForMalware;
|
8 |
use FernleafSystems\Wordpress\Services\Services;
|
18 |
}
|
19 |
|
20 |
protected function buildRenderData() :array {
|
|
|
|
|
21 |
$data = $this->buildMalwareData();
|
22 |
return Services::DataManipulation()
|
23 |
->mergeArraysRecursive( $this->getCommonRenderData(), [
|
src/lib/src/Modules/HackGuard/Render/ScanResults/SectionPluginThemesBase.php
CHANGED
@@ -4,7 +4,6 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Render\ScanR
|
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\ModCon;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller\Apc;
|
7 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller\Ptg;
|
8 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller\Wpv;
|
9 |
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
10 |
use FernleafSystems\Wordpress\Plugin\Shield\Tables\DataTables\Build\Scans\ForPluginTheme;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\ModCon;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller\Apc;
|
|
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller\Wpv;
|
8 |
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
9 |
use FernleafSystems\Wordpress\Plugin\Shield\Tables\DataTables\Build\Scans\ForPluginTheme;
|
src/lib/src/Modules/HackGuard/Scan/Controller/Afs.php
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Crons\PluginCronsConsumer;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\DB\ResultItems;
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\{
|
8 |
Lib,
|
9 |
ModCon,
|
10 |
Options,
|
11 |
Scan
|
12 |
};
|
|
|
13 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\DB\ResultItems\Ops\Update;
|
14 |
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
15 |
use FernleafSystems\Wordpress\Services\Services;
|
@@ -84,10 +84,10 @@ class Afs extends BaseForFiles {
|
|
84 |
}
|
85 |
|
86 |
public function runHourlyCron() {
|
87 |
-
( new Lib\Snapshots\StoreAction\
|
88 |
->setMod( $this->getMod() )
|
89 |
->run();
|
90 |
-
( new Lib\Snapshots\StoreAction\
|
91 |
->setMod( $this->getMod() )
|
92 |
->run();
|
93 |
}
|
@@ -210,7 +210,8 @@ class Afs extends BaseForFiles {
|
|
210 |
}
|
211 |
|
212 |
public function isEnabledPluginThemeScan() :bool {
|
213 |
-
return $this->isEnabled() &&
|
|
|
214 |
}
|
215 |
|
216 |
public function isRestrictedMalwareScan() :bool {
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller;
|
4 |
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Crons\PluginCronsConsumer;
|
|
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\{
|
7 |
Lib,
|
8 |
ModCon,
|
9 |
Options,
|
10 |
Scan
|
11 |
};
|
12 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\DB\ResultItems;
|
13 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\DB\ResultItems\Ops\Update;
|
14 |
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
15 |
use FernleafSystems\Wordpress\Services\Services;
|
84 |
}
|
85 |
|
86 |
public function runHourlyCron() {
|
87 |
+
( new Lib\Snapshots\StoreAction\CleanStale() )
|
88 |
->setMod( $this->getMod() )
|
89 |
->run();
|
90 |
+
( new Lib\Snapshots\StoreAction\TouchAll() )
|
91 |
->setMod( $this->getMod() )
|
92 |
->run();
|
93 |
}
|
210 |
}
|
211 |
|
212 |
public function isEnabledPluginThemeScan() :bool {
|
213 |
+
return $this->isEnabled() && !$this->isRestrictedPluginThemeScan()
|
214 |
+
&& $this->getCon()->cache_dir_handler->dirExists();
|
215 |
}
|
216 |
|
217 |
public function isRestrictedMalwareScan() :bool {
|
src/lib/src/Modules/HackGuard/Scan/Controller/Base.php
CHANGED
@@ -282,28 +282,4 @@ abstract class Base extends ExecOnceModConsumer {
|
|
282 |
abstract public function buildScanAction();
|
283 |
|
284 |
abstract public function buildScanResult( array $rawResult ) :HackGuard\DB\ResultItems\Ops\Record;
|
285 |
-
|
286 |
-
/**
|
287 |
-
* @deprecated 12.1
|
288 |
-
*/
|
289 |
-
public function getScanResultsDbHandler() :Databases\Scanner\Handler {
|
290 |
-
/** @var ModCon $mod */
|
291 |
-
$mod = $this->getMod();
|
292 |
-
return $mod->getDbHandler_ScanResults();
|
293 |
-
}
|
294 |
-
|
295 |
-
/**
|
296 |
-
* @param ResultItem|mixed $item
|
297 |
-
* @deprecated 12.1
|
298 |
-
*/
|
299 |
-
public function isResultItemStale( $item ) :bool {
|
300 |
-
return false;
|
301 |
-
}
|
302 |
-
|
303 |
-
/**
|
304 |
-
* @deprecated 13.0
|
305 |
-
*/
|
306 |
-
public function getScanHasProblem() :bool {
|
307 |
-
return false;
|
308 |
-
}
|
309 |
}
|
282 |
abstract public function buildScanAction();
|
283 |
|
284 |
abstract public function buildScanResult( array $rawResult ) :HackGuard\DB\ResultItems\Ops\Record;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
}
|
src/lib/src/Modules/HackGuard/Scan/Controller/Mal.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller;
|
4 |
-
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\DB\ResultItems;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard;
|
7 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\DB\ResultItems\Ops\Update;
|
8 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\ModCon;
|
9 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Options;
|
10 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
11 |
-
use FernleafSystems\Wordpress\Services\Services;
|
12 |
-
use FernleafSystems\Wordpress\Services\Utilities\WpOrg;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* @deprecated 13.0
|
16 |
-
*/
|
17 |
-
class Mal extends BaseForFiles {
|
18 |
-
|
19 |
-
const SCAN_SLUG = 'mal';
|
20 |
-
|
21 |
-
/**
|
22 |
-
* @return Scans\Mal\Utilities\ItemActionHandler
|
23 |
-
*/
|
24 |
-
protected function newItemActionHandler() {
|
25 |
-
return new Scans\Mal\Utilities\ItemActionHandler();
|
26 |
-
}
|
27 |
-
|
28 |
-
/**
|
29 |
-
* @return Scans\Mal\ScanActionVO
|
30 |
-
*/
|
31 |
-
public function buildScanAction() {
|
32 |
-
return ( new Scans\Mal\BuildScanAction() )
|
33 |
-
->setScanController( $this )
|
34 |
-
->build()
|
35 |
-
->getScanActionVO();
|
36 |
-
}
|
37 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/HackGuard/Scan/Controller/Ptg.php
DELETED
@@ -1,56 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller;
|
4 |
-
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Crons\PluginCronsConsumer;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\DB\ResultItems;
|
7 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
8 |
-
|
9 |
-
/**
|
10 |
-
* @deprecated 13.0
|
11 |
-
*/
|
12 |
-
class Ptg extends BaseForFiles {
|
13 |
-
|
14 |
-
const SCAN_SLUG = 'ptg';
|
15 |
-
use PluginCronsConsumer;
|
16 |
-
|
17 |
-
protected function run() {
|
18 |
-
parent::run();
|
19 |
-
}
|
20 |
-
|
21 |
-
public function onWpLoaded() {
|
22 |
-
}
|
23 |
-
|
24 |
-
public function onModuleShutdown() {
|
25 |
-
}
|
26 |
-
|
27 |
-
public function runHourlyCron() {
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* @param Scans\Ptg\ResultItem $item
|
32 |
-
*/
|
33 |
-
public function cleanStaleResultItem( $item ) {
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* @return Scans\Ptg\Utilities\ItemActionHandler
|
38 |
-
*/
|
39 |
-
protected function newItemActionHandler() {
|
40 |
-
return new Scans\Ptg\Utilities\ItemActionHandler();
|
41 |
-
}
|
42 |
-
|
43 |
-
public function isReady() :bool {
|
44 |
-
return parent::isReady() && $this->getCon()->hasCacheDir();
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @return Scans\Ptg\ScanActionVO
|
49 |
-
*/
|
50 |
-
public function buildScanAction() {
|
51 |
-
return ( new Scans\Ptg\BuildScanAction() )
|
52 |
-
->setScanController( $this )
|
53 |
-
->build()
|
54 |
-
->getScanActionVO();
|
55 |
-
}
|
56 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/HackGuard/Scan/Controller/Ufc.php
DELETED
@@ -1,24 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller;
|
4 |
-
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @deprecated 13.0
|
9 |
-
*/
|
10 |
-
class Ufc extends BaseForFiles {
|
11 |
-
|
12 |
-
const SCAN_SLUG = 'ufc';
|
13 |
-
|
14 |
-
protected function newItemActionHandler() {
|
15 |
-
return null;
|
16 |
-
}
|
17 |
-
|
18 |
-
/**
|
19 |
-
* @return Scans\Ufc\ScanActionVO
|
20 |
-
*/
|
21 |
-
public function buildScanAction() {
|
22 |
-
return $this->getScanActionVO();
|
23 |
-
}
|
24 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/HackGuard/Scan/Controller/Wcf.php
DELETED
@@ -1,45 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Controller;
|
4 |
-
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\{
|
6 |
-
DB\ResultItems\Ops\Update,
|
7 |
-
ModCon,
|
8 |
-
Options
|
9 |
-
};
|
10 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
11 |
-
use FernleafSystems\Wordpress\Services\Services;
|
12 |
-
|
13 |
-
/**
|
14 |
-
* @deprecated 13.0
|
15 |
-
*/
|
16 |
-
class Wcf extends BaseForFiles {
|
17 |
-
|
18 |
-
const SCAN_SLUG = 'wcf';
|
19 |
-
|
20 |
-
public function getScanFileExclusions() :string {
|
21 |
-
return '';
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Builds a regex-ready pattern for matching file names to exclude from scan if they're missing
|
26 |
-
*/
|
27 |
-
public function getScanExclusionsForMissingItems() :string {
|
28 |
-
return '';
|
29 |
-
}
|
30 |
-
|
31 |
-
protected function newItemActionHandler() {
|
32 |
-
return null;
|
33 |
-
}
|
34 |
-
|
35 |
-
public function cleanStaleResultItem( $item ) {
|
36 |
-
return true;
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* @return Scans\Wcf\ScanActionVO
|
41 |
-
*/
|
42 |
-
public function buildScanAction() {
|
43 |
-
return $this->getScanActionVO();
|
44 |
-
}
|
45 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/HackGuard/Scan/Queue/Controller.php
CHANGED
@@ -98,10 +98,4 @@ class Controller {
|
|
98 |
}
|
99 |
return $this->oQueueProcessor;
|
100 |
}
|
101 |
-
|
102 |
-
/**
|
103 |
-
* @deprecated 13.0
|
104 |
-
*/
|
105 |
-
public function startScans( $scanSlugs ) {
|
106 |
-
}
|
107 |
}
|
98 |
}
|
99 |
return $this->oQueueProcessor;
|
100 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
}
|
src/lib/src/Modules/HackGuard/Scan/Queue/QueueProcessorConsumer.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Queue;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* @deprecated 12.1
|
7 |
-
*/
|
8 |
-
trait QueueProcessorConsumer {
|
9 |
-
|
10 |
-
/**
|
11 |
-
* @var QueueProcessor
|
12 |
-
*/
|
13 |
-
private $oQueueProcessor;
|
14 |
-
|
15 |
-
/**
|
16 |
-
* @return QueueProcessor
|
17 |
-
*/
|
18 |
-
public function getQueueProcessor() {
|
19 |
-
return $this->oQueueProcessor;
|
20 |
-
}
|
21 |
-
|
22 |
-
/**
|
23 |
-
* @param QueueProcessor $QP
|
24 |
-
* @return $this
|
25 |
-
*/
|
26 |
-
public function setQueueProcessor( QueueProcessor $QP ) {
|
27 |
-
$this->oQueueProcessor = $QP;
|
28 |
-
return $this;
|
29 |
-
}
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/HackGuard/Scan/Utilities/ConvertLegacyResults.php
DELETED
@@ -1,201 +0,0 @@
|
|
1 |
-
<?php declare( strict_types=1 );
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\Scan\Utilities;
|
4 |
-
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Databases\Scanner\EntryVO;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\Common\ExecOnceModConsumer;
|
7 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard\{
|
8 |
-
DB\ResultItemMeta\Ops as ResultItemMetaDB,
|
9 |
-
DB\ResultItems\Ops as ResultItemsDB,
|
10 |
-
ModCon,
|
11 |
-
Options,
|
12 |
-
Scan\Controller\Afs,
|
13 |
-
Scan\Controller\Apc,
|
14 |
-
Scan\Controller\Mal,
|
15 |
-
Scan\Controller\Ptg,
|
16 |
-
Scan\Controller\Ufc,
|
17 |
-
Scan\Controller\Wcf,
|
18 |
-
Scan\Controller\Wpv
|
19 |
-
};
|
20 |
-
use FernleafSystems\Wordpress\Services\Services;
|
21 |
-
|
22 |
-
class ConvertLegacyResults extends ExecOnceModConsumer {
|
23 |
-
|
24 |
-
protected function canRun() :bool {
|
25 |
-
/** @var Options $opts */
|
26 |
-
$opts = $this->getOptions();
|
27 |
-
return (int)$opts->getOpt( 'legacy_db_conversion_at' ) === 0;
|
28 |
-
}
|
29 |
-
|
30 |
-
protected function run() {
|
31 |
-
/** @var ModCon $mod */
|
32 |
-
$mod = $this->getMod();
|
33 |
-
/** @var Options $opts */
|
34 |
-
$opts = $this->getOptions();
|
35 |
-
/** @var ResultItemsDB\Select $selectResItem */
|
36 |
-
$dbhResItems = $mod->getDbH_ResultItems();
|
37 |
-
/** @var ResultItemsDB\Select $selectResItem */
|
38 |
-
$selectResItem = $dbhResItems->getQuerySelector();
|
39 |
-
|
40 |
-
$legacyResults = $this->getLegacyResults();
|
41 |
-
foreach ( $legacyResults as $e ) {
|
42 |
-
|
43 |
-
if ( in_array( $e->scan, [ Mal::SCAN_SLUG, Ptg::SCAN_SLUG, Ufc::SCAN_SLUG, Wcf::SCAN_SLUG ] ) ) {
|
44 |
-
$selectResItem->filterByItemID( $e->meta[ 'path_fragment' ] )
|
45 |
-
->filterByTypeFile();
|
46 |
-
}
|
47 |
-
else {
|
48 |
-
// Apc::SCAN_SLUG, Wpv::SCAN_SLUG
|
49 |
-
$selectResItem->filterByItemID( $e->meta[ 'slug' ] );
|
50 |
-
if ( strpos( $e->meta[ 'slug' ], '/' ) ) {
|
51 |
-
$selectResItem->filterByTypePlugin();
|
52 |
-
}
|
53 |
-
else {
|
54 |
-
$selectResItem->filterByTypeTheme();
|
55 |
-
}
|
56 |
-
}
|
57 |
-
|
58 |
-
$resultItem = $selectResItem->first();
|
59 |
-
|
60 |
-
if ( empty( $resultItem ) ) {
|
61 |
-
|
62 |
-
$scanResult = $this->convertResult( $e );
|
63 |
-
|
64 |
-
if ( !empty( $scanResult ) ) {
|
65 |
-
/** @var ResultItemsDB\Insert $selectScans */
|
66 |
-
$insertResItem = $dbhResItems->getQueryInserter();
|
67 |
-
$insertResItem->insert( $scanResult );
|
68 |
-
$resultRecord = $selectResItem->byId( Services::WpDb()->getVar( 'SELECT LAST_INSERT_ID()' ) );
|
69 |
-
|
70 |
-
/** @var ResultItemMetaDB\Delete $metaDeleter */
|
71 |
-
$metaDeleter = $mod->getDbH_ResultItemMeta()->getQueryDeleter();
|
72 |
-
$metaDeleter->filterByResultItemRef( $resultRecord->id )->query();
|
73 |
-
|
74 |
-
foreach ( $scanResult->meta as $metaKey => $metaValue ) {
|
75 |
-
/** @var ResultItemMetaDB\Insert $metaInserter */
|
76 |
-
$metaInserter = $mod->getDbH_ResultItemMeta()->getQueryInserter();
|
77 |
-
$metaInserter->setInsertData( [
|
78 |
-
'ri_ref' => $resultRecord->id,
|
79 |
-
'meta_key' => $metaKey,
|
80 |
-
'meta_value' => is_scalar( $metaValue ) ? $metaValue : json_encode( $metaValue ),
|
81 |
-
] )->query();
|
82 |
-
}
|
83 |
-
}
|
84 |
-
}
|
85 |
-
|
86 |
-
$mod->getDbHandler_ScanResults()
|
87 |
-
->getQueryDeleter()
|
88 |
-
->deleteById( $e->id );
|
89 |
-
}
|
90 |
-
|
91 |
-
if ( !empty( $legacyResults ) ) {
|
92 |
-
$mod->getScansCon()->startNewScans( $opts->getScanSlugs() );
|
93 |
-
}
|
94 |
-
|
95 |
-
$mod->getDbHandler_ScanQueue()->tableDelete();
|
96 |
-
if ( $mod->getDbHandler_ScanResults()->getQuerySelector()->count() === 0 ) {
|
97 |
-
$mod->getDbHandler_ScanResults()->tableDelete();
|
98 |
-
$opts->setOpt( 'legacy_db_conversion_at', Services::Request()->ts() );
|
99 |
-
}
|
100 |
-
}
|
101 |
-
|
102 |
-
/**
|
103 |
-
* @return ResultItemsDB\Record|null
|
104 |
-
*/
|
105 |
-
private function convertResult( EntryVO $e ) {
|
106 |
-
/** @var ModCon $mod */
|
107 |
-
$mod = $this->getMod();
|
108 |
-
|
109 |
-
$raw = $e->meta;
|
110 |
-
|
111 |
-
switch ( $e->scan ) {
|
112 |
-
|
113 |
-
case Apc::SCAN_SLUG:
|
114 |
-
$raw[ 'is_abandoned' ] = 1;
|
115 |
-
$scanResult = $mod->getScanCon( Apc::SCAN_SLUG )->buildScanResult( $raw );
|
116 |
-
break;
|
117 |
-
|
118 |
-
case Wpv::SCAN_SLUG:
|
119 |
-
$raw[ 'is_vulnerable' ] = 1;
|
120 |
-
$scanResult = $mod->getScanCon( Wpv::SCAN_SLUG )->buildScanResult( $raw );
|
121 |
-
unset( $raw[ 'wpvuln_id' ], $raw[ 'wpvuln_vo' ] );
|
122 |
-
break;
|
123 |
-
|
124 |
-
case Mal::SCAN_SLUG:
|
125 |
-
$raw[ 'mal_fp_confidence' ] = $raw[ 'fp_confidence' ];
|
126 |
-
unset( $raw[ 'fp_confidence' ] );
|
127 |
-
$raw[ 'mal_file_lines' ] = base64_encode( json_encode( array_fill_keys( $raw[ 'file_lines' ], '' ) ) );
|
128 |
-
$raw[ 'mal_fp_lines' ] = json_encode( array_fill_keys( $raw[ 'file_lines' ], 0 ) );
|
129 |
-
unset( $raw[ 'file_lines' ] );
|
130 |
-
$scanResult = $mod->getScanCon( Afs::SCAN_SLUG )->buildScanResult( $raw );
|
131 |
-
break;
|
132 |
-
|
133 |
-
case Ptg::SCAN_SLUG:
|
134 |
-
if ( strpos( $raw[ 'slug' ], '/' ) ) {
|
135 |
-
$raw[ 'is_in_plugin' ] = true;
|
136 |
-
}
|
137 |
-
else {
|
138 |
-
$raw[ 'is_in_theme' ] = true;
|
139 |
-
}
|
140 |
-
|
141 |
-
if ( $raw[ 'is_different' ] ?? false ) {
|
142 |
-
$raw[ 'is_checksumfail' ] = true;
|
143 |
-
}
|
144 |
-
unset( $raw[ 'is_different' ] );
|
145 |
-
|
146 |
-
if ( empty( $raw[ 'is_unrecognised' ] ) ) {
|
147 |
-
unset( $raw[ 'is_unrecognised' ] );
|
148 |
-
}
|
149 |
-
|
150 |
-
if ( empty( $raw[ 'is_missing' ] ) ) {
|
151 |
-
unset( $raw[ 'is_missing' ] );
|
152 |
-
}
|
153 |
-
|
154 |
-
unset( $raw[ 'context' ] );
|
155 |
-
$scanResult = $mod->getScanCon( Afs::SCAN_SLUG )->buildScanResult( $raw );
|
156 |
-
break;
|
157 |
-
|
158 |
-
case Ufc::SCAN_SLUG:
|
159 |
-
$raw[ 'is_in_core' ] = true;
|
160 |
-
$raw[ 'is_unrecognised' ] = true;
|
161 |
-
$scanResult = $mod->getScanCon( Afs::SCAN_SLUG )->buildScanResult( $raw );
|
162 |
-
break;
|
163 |
-
|
164 |
-
case Wcf::SCAN_SLUG:
|
165 |
-
default:
|
166 |
-
$raw[ 'is_in_core' ] = true;
|
167 |
-
|
168 |
-
if ( empty( $raw[ 'is_missing' ] ) ) {
|
169 |
-
unset( $raw[ 'is_missing' ] );
|
170 |
-
}
|
171 |
-
|
172 |
-
if ( empty( $raw[ 'is_checksumfail' ] ) ) {
|
173 |
-
unset( $raw[ 'is_checksumfail' ] );
|
174 |
-
}
|
175 |
-
|
176 |
-
unset( $raw[ 'is_excluded' ], $raw[ 'md5_file_wp' ] );
|
177 |
-
|
178 |
-
$scanResult = $mod->getScanCon( Afs::SCAN_SLUG )->buildScanResult( $raw );
|
179 |
-
break;
|
180 |
-
}
|
181 |
-
|
182 |
-
$scanResult->created_at = $e->created_at;
|
183 |
-
$scanResult->ignored_at = $e->ignored_at;
|
184 |
-
$scanResult->notified_at = $e->notified_at;
|
185 |
-
$scanResult->attempt_repair_at = $e->attempt_repair_at;
|
186 |
-
|
187 |
-
return $scanResult;
|
188 |
-
}
|
189 |
-
|
190 |
-
/**
|
191 |
-
* @return EntryVO[]
|
192 |
-
*/
|
193 |
-
private function getLegacyResults() :array {
|
194 |
-
/** @var ModCon $mod */
|
195 |
-
$mod = $this->getMod();
|
196 |
-
$res = $mod->getDbHandler_ScanResults()
|
197 |
-
->getQuerySelector()
|
198 |
-
->all();
|
199 |
-
return empty( $res ) ? [] : $res;
|
200 |
-
}
|
201 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/HackGuard/UI.php
CHANGED
@@ -240,9 +240,6 @@ class UI extends BaseShield\UI {
|
|
240 |
if ( !$canHandshake ) {
|
241 |
$warnings[] = sprintf( __( 'Not available as your site cannot handshake with ShieldNET API.', 'wp-simple-firewall' ), 'OpenSSL' );
|
242 |
}
|
243 |
-
if ( !$this->getCon()->hasCacheDir() ) {
|
244 |
-
$warnings[] = __( "Certain scanners are unavailable because we couldn't create a temporary directory to store files.", 'wp-simple-firewall' );
|
245 |
-
}
|
246 |
// if ( !Services::Encrypt()->isSupportedOpenSslDataEncryption() ) {
|
247 |
// $warnings[] = sprintf( __( 'Not available because the %s extension is not available.', 'wp-simple-firewall' ), 'OpenSSL' );
|
248 |
// }
|
@@ -250,6 +247,12 @@ class UI extends BaseShield\UI {
|
|
250 |
// $warnings[] = sprintf( __( "Not available because PHP/WordPress doesn't have direct filesystem access.", 'wp-simple-firewall' ), 'OpenSSL' );
|
251 |
// }
|
252 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
}
|
254 |
|
255 |
return $warnings;
|
240 |
if ( !$canHandshake ) {
|
241 |
$warnings[] = sprintf( __( 'Not available as your site cannot handshake with ShieldNET API.', 'wp-simple-firewall' ), 'OpenSSL' );
|
242 |
}
|
|
|
|
|
|
|
243 |
// if ( !Services::Encrypt()->isSupportedOpenSslDataEncryption() ) {
|
244 |
// $warnings[] = sprintf( __( 'Not available because the %s extension is not available.', 'wp-simple-firewall' ), 'OpenSSL' );
|
245 |
// }
|
247 |
// $warnings[] = sprintf( __( "Not available because PHP/WordPress doesn't have direct filesystem access.", 'wp-simple-firewall' ), 'OpenSSL' );
|
248 |
// }
|
249 |
break;
|
250 |
+
|
251 |
+
case 'section_file_guard':
|
252 |
+
if ( !$this->getCon()->cache_dir_handler->dirExists() ) {
|
253 |
+
$warnings[] = __( "Plugin/Theme file scanners are unavailable because we couldn't create a temporary directory to store files.", 'wp-simple-firewall' );
|
254 |
+
}
|
255 |
+
break;
|
256 |
}
|
257 |
|
258 |
return $warnings;
|
src/lib/src/Modules/HackGuard/Upgrade.php
CHANGED
@@ -11,10 +11,6 @@ class Upgrade extends Base\Upgrade {
|
|
11 |
/** @var ModCon $mod */
|
12 |
$mod = $this->getMod();
|
13 |
|
14 |
-
( new Scan\Utilities\ConvertLegacyResults() )
|
15 |
-
->setMod( $mod )
|
16 |
-
->execute();
|
17 |
-
|
18 |
// Ensure AFS scan is selected by default upon upgrade
|
19 |
$uiTrack = $mod->getUiTrack();
|
20 |
$selected = $uiTrack->selected_scans;
|
11 |
/** @var ModCon $mod */
|
12 |
$mod = $this->getMod();
|
13 |
|
|
|
|
|
|
|
|
|
14 |
// Ensure AFS scan is selected by default upon upgrade
|
15 |
$uiTrack = $mod->getUiTrack();
|
16 |
$selected = $uiTrack->selected_scans;
|
src/lib/src/Modules/HackGuard/WpCli.php
CHANGED
@@ -2,16 +2,13 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
|
7 |
-
class WpCli extends
|
8 |
|
9 |
-
|
10 |
-
* @inheritDoc
|
11 |
-
*/
|
12 |
-
protected function getCmdHandlers() :array {
|
13 |
return [
|
14 |
-
|
15 |
];
|
16 |
}
|
17 |
}
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\HackGuard;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
6 |
|
7 |
+
class WpCli extends BaseShield\WpCli {
|
8 |
|
9 |
+
protected function enumCmdHandlers() :array {
|
|
|
|
|
|
|
10 |
return [
|
11 |
+
WpCli\ScanRun::class
|
12 |
];
|
13 |
}
|
14 |
}
|
src/lib/src/Modules/Headers/Processor.php
CHANGED
@@ -154,19 +154,4 @@ class Processor extends BaseShield\Processor {
|
|
154 |
$this->headers = array_merge( $this->getHeaders(), $header );
|
155 |
}
|
156 |
}
|
157 |
-
|
158 |
-
/**
|
159 |
-
* @deprecated 13.0.3
|
160 |
-
*/
|
161 |
-
private function isHeadersPushed() :bool {
|
162 |
-
return (bool)$this->pushed;
|
163 |
-
}
|
164 |
-
|
165 |
-
/**
|
166 |
-
* @deprecated 13.0.3
|
167 |
-
*/
|
168 |
-
private function setHeadersPushed() :self {
|
169 |
-
$this->pushed = true;
|
170 |
-
return $this;
|
171 |
-
}
|
172 |
}
|
154 |
$this->headers = array_merge( $this->getHeaders(), $header );
|
155 |
}
|
156 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
}
|
src/lib/src/Modules/IPs/Components/QueryIpBlock.php
CHANGED
@@ -7,10 +7,6 @@ use FernleafSystems\Wordpress\Plugin\Shield\Databases;
|
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
8 |
use FernleafSystems\Wordpress\Services\Services;
|
9 |
|
10 |
-
/**
|
11 |
-
* Class QueryIpBlock
|
12 |
-
* @package FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs\Components
|
13 |
-
*/
|
14 |
class QueryIpBlock {
|
15 |
|
16 |
use Shield\Modules\ModConsumer;
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
8 |
use FernleafSystems\Wordpress\Services\Services;
|
9 |
|
|
|
|
|
|
|
|
|
10 |
class QueryIpBlock {
|
11 |
|
12 |
use Shield\Modules\ModConsumer;
|
src/lib/src/Modules/IPs/Lib/BlockRequest.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs\Lib;
|
4 |
|
@@ -9,26 +9,35 @@ use FernleafSystems\Wordpress\Services\Utilities\Obfuscate;
|
|
9 |
|
10 |
class BlockRequest extends ExecOnceModConsumer {
|
11 |
|
|
|
|
|
12 |
protected function run() {
|
13 |
-
if ( $this->
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
$this->getCon()->fireEvent( 'not_conn_kill_high_rep' );
|
20 |
}
|
21 |
-
else {
|
22 |
-
$this->renderKillPage();
|
23 |
-
}
|
24 |
}
|
25 |
-
|
26 |
-
|
27 |
-
private function isBlocked() :bool {
|
28 |
-
return ( new IPs\Components\QueryIpBlock() )
|
29 |
-
->setMod( $this->getMod() )
|
30 |
-
->setIp( Services::IP()->getRequestIp() )
|
31 |
-
->run();
|
32 |
}
|
33 |
|
34 |
private function isHighReputationIP() :bool {
|
@@ -42,9 +51,10 @@ class BlockRequest extends ExecOnceModConsumer {
|
|
42 |
}
|
43 |
|
44 |
private function isAutoUnBlocked() :bool {
|
45 |
-
return (
|
46 |
-
|
47 |
-
|
|
|
48 |
}
|
49 |
|
50 |
private function renderKillPage() {
|
@@ -114,16 +124,12 @@ class BlockRequest extends ExecOnceModConsumer {
|
|
114 |
$data = apply_filters( 'shield/render_data_block_page', $data );
|
115 |
}
|
116 |
|
117 |
-
Services::WpGeneral()
|
118 |
-
|
119 |
-
|
120 |
-
);
|
121 |
}
|
122 |
|
123 |
-
|
124 |
-
* @return string
|
125 |
-
*/
|
126 |
-
private function renderEmailMagicLinkContent() {
|
127 |
$con = $this->getCon();
|
128 |
/** @var IPs\ModCon $mod */
|
129 |
$mod = $this->getMod();
|
@@ -138,36 +144,33 @@ class BlockRequest extends ExecOnceModConsumer {
|
|
138 |
&& $opts->getCanRequestAutoUnblockEmailLink( $user ) ) {
|
139 |
|
140 |
if ( apply_filters( $con->prefix( 'can_user_magic_link' ), true ) ) {
|
141 |
-
$content = $mod->renderTemplate(
|
142 |
-
'
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
'
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
],
|
169 |
-
]
|
170 |
-
);
|
171 |
}
|
172 |
}
|
173 |
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs\Lib;
|
4 |
|
9 |
|
10 |
class BlockRequest extends ExecOnceModConsumer {
|
11 |
|
12 |
+
private $ipBlocked;
|
13 |
+
|
14 |
protected function run() {
|
15 |
+
if ( $this->isAutoUnBlocked() ) {
|
16 |
+
Services::Response()->redirectToHome();
|
17 |
+
}
|
18 |
+
elseif ( $this->isRequestBlocked() ) {
|
19 |
+
$this->renderKillPage();
|
20 |
+
}
|
21 |
+
}
|
22 |
|
23 |
+
private function isRequestBlocked() :bool {
|
24 |
+
return (bool)apply_filters( 'shield/is_request_blocked', $this->isIpBlocked() );
|
25 |
+
}
|
26 |
+
|
27 |
+
private function isIpBlocked() :bool {
|
28 |
+
if ( !isset( $this->ipBlocked ) ) {
|
29 |
+
$this->ipBlocked = ( new IPs\Components\QueryIpBlock() )
|
30 |
+
->setMod( $this->getMod() )
|
31 |
+
->setIp( Services::IP()->getRequestIp() )
|
32 |
+
->run();
|
33 |
+
|
34 |
+
// do not block IPs with high reputation
|
35 |
+
if ( $this->ipBlocked && $this->isHighReputationIP() ) {
|
36 |
+
$this->ipBlocked = false;
|
37 |
$this->getCon()->fireEvent( 'not_conn_kill_high_rep' );
|
38 |
}
|
|
|
|
|
|
|
39 |
}
|
40 |
+
return $this->ipBlocked;
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
private function isHighReputationIP() :bool {
|
51 |
}
|
52 |
|
53 |
private function isAutoUnBlocked() :bool {
|
54 |
+
return $this->isIpBlocked()
|
55 |
+
&& ( new AutoUnblock() )
|
56 |
+
->setMod( $this->getMod() )
|
57 |
+
->run();
|
58 |
}
|
59 |
|
60 |
private function renderKillPage() {
|
124 |
$data = apply_filters( 'shield/render_data_block_page', $data );
|
125 |
}
|
126 |
|
127 |
+
Services::WpGeneral()->wpDie(
|
128 |
+
$mod->renderTemplate( '/pages/block/blocklist_die.twig', $data, true )
|
129 |
+
);
|
|
|
130 |
}
|
131 |
|
132 |
+
private function renderEmailMagicLinkContent() :string {
|
|
|
|
|
|
|
133 |
$con = $this->getCon();
|
134 |
/** @var IPs\ModCon $mod */
|
135 |
$mod = $this->getMod();
|
144 |
&& $opts->getCanRequestAutoUnblockEmailLink( $user ) ) {
|
145 |
|
146 |
if ( apply_filters( $con->prefix( 'can_user_magic_link' ), true ) ) {
|
147 |
+
$content = $mod->renderTemplate( '/pages/block/magic_link.twig', [
|
148 |
+
'flags' => [
|
149 |
+
],
|
150 |
+
'hrefs' => [
|
151 |
+
'unblock' => add_query_arg(
|
152 |
+
array_merge(
|
153 |
+
$mod->getNonceActionData( 'uaum-init-'.substr( sha1( $user->user_login ), 0, 6 ) ),
|
154 |
+
[
|
155 |
+
'ip' => Services::IP()->getRequestIp()
|
156 |
+
]
|
157 |
+
),
|
158 |
+
Services::WpGeneral()->getHomeUrl()
|
159 |
+
)
|
160 |
+
],
|
161 |
+
'vars' => [
|
162 |
+
'email' => Obfuscate::Email( $user->user_email )
|
163 |
+
],
|
164 |
+
'strings' => [
|
165 |
+
'you_may' => __( 'You can automatically unblock your IP address by clicking the link below.', 'wp-simple-firewall' ),
|
166 |
+
'this_will_send' => __( 'Clicking the button will send you an email letting you unblock your IP address.', 'wp-simple-firewall' ),
|
167 |
+
'assumes_email' => __( 'This assumes that your WordPress site has been properly configured to send email - many are not.', 'wp-simple-firewall' ),
|
168 |
+
'dont_receive' => __( "If you don't receive the email, check your spam and contact your site admin.", 'wp-simple-firewall' ),
|
169 |
+
'limit_60' => __( "You may only use this link once every 60 minutes. If you're repeatedly blocked, ask your site admin to review the audit trail to determine the cause.", 'wp-simple-firewall' ),
|
170 |
+
'same_browser' => __( "When you click the link from your email, it must open up in this web browser.", 'wp-simple-firewall' ),
|
171 |
+
'click_to_send' => __( 'Send Auto-Unblock Link To My Email', 'wp-simple-firewall' )
|
172 |
+
],
|
173 |
+
] );
|
|
|
|
|
|
|
174 |
}
|
175 |
}
|
176 |
|
src/lib/src/Modules/IPs/Lib/Bots/BotEventListener.php
CHANGED
@@ -37,7 +37,7 @@ class BotEventListener extends ExecOnceModConsumer {
|
|
37 |
}
|
38 |
|
39 |
protected function run() {
|
40 |
-
add_action(
|
41 |
$this->fireEventForIP( Services::IP()->getRequestIp(), $event );
|
42 |
} );
|
43 |
}
|
37 |
}
|
38 |
|
39 |
protected function run() {
|
40 |
+
add_action( 'shield/event', function ( $event ) {
|
41 |
$this->fireEventForIP( Services::IP()->getRequestIp(), $event );
|
42 |
} );
|
43 |
}
|
src/lib/src/Modules/IPs/Lib/Bots/BotSignalsController.php
CHANGED
@@ -74,8 +74,8 @@ class BotSignalsController extends ExecOnceModConsumer {
|
|
74 |
foreach ( $this->enumerateBotTrackers() as $botTracker ) {
|
75 |
$botTracker->setMod( $this->getMod() )->execute();
|
76 |
}
|
77 |
-
$this->getHandlerNotBot()->execute();
|
78 |
} );
|
|
|
79 |
}
|
80 |
|
81 |
/**
|
74 |
foreach ( $this->enumerateBotTrackers() as $botTracker ) {
|
75 |
$botTracker->setMod( $this->getMod() )->execute();
|
76 |
}
|
|
|
77 |
} );
|
78 |
+
$this->getHandlerNotBot()->execute();
|
79 |
}
|
80 |
|
81 |
/**
|
src/lib/src/Modules/IPs/Lib/Bots/NotBot/InsertNotBotJs.php
CHANGED
@@ -52,7 +52,7 @@ class InsertNotBotJs extends ExecOnceModConsumer {
|
|
52 |
Services::Response()->cookieSet(
|
53 |
'shield-notbot-nonce',
|
54 |
$this->getMod()->getAjaxActionData( 'not_bot' )[ 'exec_nonce' ],
|
55 |
-
|
56 |
);
|
57 |
}
|
58 |
}
|
52 |
Services::Response()->cookieSet(
|
53 |
'shield-notbot-nonce',
|
54 |
$this->getMod()->getAjaxActionData( 'not_bot' )[ 'exec_nonce' ],
|
55 |
+
15
|
56 |
);
|
57 |
}
|
58 |
}
|
src/lib/src/Modules/IPs/Lib/Bots/NotBot/NotBotHandler.php
CHANGED
@@ -8,7 +8,7 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
8 |
|
9 |
class NotBotHandler extends ExecOnceModConsumer {
|
10 |
|
11 |
-
const LIFETIME =
|
12 |
const SLUG = 'notbot';
|
13 |
|
14 |
private $useCookies;
|
8 |
|
9 |
class NotBotHandler extends ExecOnceModConsumer {
|
10 |
|
11 |
+
const LIFETIME = 120;
|
12 |
const SLUG = 'notbot';
|
13 |
|
14 |
private $useCookies;
|
src/lib/src/Modules/IPs/Lib/Bots/ShieldNET/BuildData.php
CHANGED
@@ -75,7 +75,7 @@ class BuildData {
|
|
75 |
return $order;
|
76 |
} );
|
77 |
|
78 |
-
return array_slice( $records, 0,
|
79 |
}
|
80 |
|
81 |
/**
|
75 |
return $order;
|
76 |
} );
|
77 |
|
78 |
+
return array_slice( $records, 0, 100 );
|
79 |
}
|
80 |
|
81 |
/**
|
src/lib/src/Modules/IPs/Strings.php
CHANGED
@@ -242,12 +242,9 @@ class Strings extends Base\Strings {
|
|
242 |
}
|
243 |
|
244 |
/**
|
245 |
-
* @param string $key
|
246 |
-
* @return array
|
247 |
* @throws \Exception
|
248 |
*/
|
249 |
public function getOptionStrings( string $key ) :array {
|
250 |
-
|
251 |
$pluginName = $this->getCon()->getHumanName();
|
252 |
$modName = $this->getMod()->getMainFeatureName();
|
253 |
|
242 |
}
|
243 |
|
244 |
/**
|
|
|
|
|
245 |
* @throws \Exception
|
246 |
*/
|
247 |
public function getOptionStrings( string $key ) :array {
|
|
|
248 |
$pluginName = $this->getCon()->getHumanName();
|
249 |
$modName = $this->getMod()->getMainFeatureName();
|
250 |
|
src/lib/src/Modules/IPs/Upgrade.php
CHANGED
@@ -2,7 +2,6 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Databases\IPs\Delete;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base;
|
7 |
|
8 |
class Upgrade extends Base\Upgrade {
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
4 |
|
|
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base;
|
6 |
|
7 |
class Upgrade extends Base\Upgrade {
|
src/lib/src/Modules/IPs/WpCli.php
CHANGED
@@ -2,19 +2,16 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
7 |
|
8 |
-
class WpCli extends
|
9 |
|
10 |
-
|
11 |
-
* @inheritDoc
|
12 |
-
*/
|
13 |
-
protected function getCmdHandlers() :array {
|
14 |
return [
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
];
|
19 |
}
|
20 |
}
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\IPs;
|
7 |
|
8 |
+
class WpCli extends BaseShield\WpCli {
|
9 |
|
10 |
+
protected function enumCmdHandlers() :array {
|
|
|
|
|
|
|
11 |
return [
|
12 |
+
IPs\WpCli\Add::class,
|
13 |
+
IPs\WpCli\Remove::class,
|
14 |
+
IPs\WpCli\Enumerate::class,
|
15 |
];
|
16 |
}
|
17 |
}
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/Base.php
CHANGED
@@ -25,4 +25,9 @@ abstract class Base extends BaseHandler {
|
|
25 |
);
|
26 |
return $isSpam;
|
27 |
}
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
25 |
);
|
26 |
return $isSpam;
|
27 |
}
|
28 |
+
|
29 |
+
protected function getCommonSpamMessage() :string {
|
30 |
+
return sprintf( __( "This appears to be spam as it failed %s AntiBot protection checks.", 'wp-simple-firewall' ),
|
31 |
+
$this->getCon()->getHumanName() );
|
32 |
+
}
|
33 |
}
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/ContactForm7.php
CHANGED
@@ -5,8 +5,19 @@ namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Integrations\Lib\Bots\
|
|
5 |
class ContactForm7 extends Base {
|
6 |
|
7 |
protected function run() {
|
8 |
-
add_filter( 'wpcf7_spam', function ( $
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
}, 1000, 2 );
|
11 |
}
|
12 |
|
5 |
class ContactForm7 extends Base {
|
6 |
|
7 |
protected function run() {
|
8 |
+
add_filter( 'wpcf7_spam', function ( $isSpam, $submission ) {
|
9 |
+
|
10 |
+
if ( !$isSpam && $this->isSpam() ) {
|
11 |
+
$isSpam = true;
|
12 |
+
add_filter( 'wpcf7_display_message', function ( $msg, $status ) {
|
13 |
+
if ( $status === 'spam' ) {
|
14 |
+
$msg = $this->getCommonSpamMessage();
|
15 |
+
}
|
16 |
+
return $msg;
|
17 |
+
}, 100, 2 );
|
18 |
+
}
|
19 |
+
|
20 |
+
return $isSpam;
|
21 |
}, 1000, 2 );
|
22 |
}
|
23 |
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/ElementorPro.php
CHANGED
@@ -8,8 +8,7 @@ class ElementorPro extends Base {
|
|
8 |
add_action( 'elementor_pro/forms/validation', function ( $form, $ajax_handler ) {
|
9 |
/** @var \ElementorPro\Modules\Forms\Classes\Ajax_Handler $ajax_handler */
|
10 |
if ( empty( $ajax_handler->errors ) && $this->isSpam() ) {
|
11 |
-
$msg =
|
12 |
-
$this->getCon()->getHumanName() );
|
13 |
$ajax_handler->add_error( 'shield-antibot', $msg );
|
14 |
$ajax_handler->add_error_message( $msg );
|
15 |
}
|
8 |
add_action( 'elementor_pro/forms/validation', function ( $form, $ajax_handler ) {
|
9 |
/** @var \ElementorPro\Modules\Forms\Classes\Ajax_Handler $ajax_handler */
|
10 |
if ( empty( $ajax_handler->errors ) && $this->isSpam() ) {
|
11 |
+
$msg = $this->getCommonSpamMessage();
|
|
|
12 |
$ajax_handler->add_error( 'shield-antibot', $msg );
|
13 |
$ajax_handler->add_error_message( $msg );
|
14 |
}
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/FluentForms.php
CHANGED
@@ -13,8 +13,7 @@ class FluentForms extends Base {
|
|
13 |
function () {
|
14 |
if ( $this->isSpam() ) {
|
15 |
wp_send_json( [
|
16 |
-
'errors' =>
|
17 |
-
$this->getCon()->getHumanName() )
|
18 |
], 422 );
|
19 |
}
|
20 |
}, 9, 0 );
|
13 |
function () {
|
14 |
if ( $this->isSpam() ) {
|
15 |
wp_send_json( [
|
16 |
+
'errors' => $this->getCommonSpamMessage()
|
|
|
17 |
], 422 );
|
18 |
}
|
19 |
}, 9, 0 );
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/KaliForms.php
CHANGED
@@ -8,7 +8,7 @@ class KaliForms extends Base {
|
|
8 |
add_filter( 'kaliforms_before_form_process', function ( $data ) {
|
9 |
if ( is_array( $data ) && empty( $data[ 'error_bag' ] ) && $this->isSpam() ) {
|
10 |
$data[ 'admin_stop_execution' ] = true;
|
11 |
-
$data[ 'admin_stop_reason' ] =
|
12 |
$data[ 'error_bag' ] = [
|
13 |
__( 'SPAM Bot detected.', 'wp-simple-firewall' )
|
14 |
];
|
8 |
add_filter( 'kaliforms_before_form_process', function ( $data ) {
|
9 |
if ( is_array( $data ) && empty( $data[ 'error_bag' ] ) && $this->isSpam() ) {
|
10 |
$data[ 'admin_stop_execution' ] = true;
|
11 |
+
$data[ 'admin_stop_reason' ] = $this->getCommonSpamMessage();
|
12 |
$data[ 'error_bag' ] = [
|
13 |
__( 'SPAM Bot detected.', 'wp-simple-firewall' )
|
14 |
];
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/SuperForms.php
CHANGED
@@ -7,7 +7,7 @@ class SuperForms extends Base {
|
|
7 |
protected function run() {
|
8 |
add_action( 'super_before_sending_email_hook', function ( $formSubmissionData ) {
|
9 |
if ( $this->isSpam() ) {
|
10 |
-
\SUPER_Common::output_message( true,
|
11 |
}
|
12 |
}, 1000 );
|
13 |
}
|
7 |
protected function run() {
|
8 |
add_action( 'super_before_sending_email_hook', function ( $formSubmissionData ) {
|
9 |
if ( $this->isSpam() ) {
|
10 |
+
\SUPER_Common::output_message( true, esc_html( $this->getCommonSpamMessage() ) );
|
11 |
}
|
12 |
}, 1000 );
|
13 |
}
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/SupportCandy.php
CHANGED
@@ -9,8 +9,7 @@ class SupportCandy extends Base {
|
|
9 |
protected function run() {
|
10 |
add_filter( 'wpsc_before_create_ticket_args', function ( $args ) {
|
11 |
if ( $this->isSpam() ) {
|
12 |
-
Services::WpGeneral()->wpDie(
|
13 |
-
$this->getCon()->getHumanName() ) );
|
14 |
}
|
15 |
return $args;
|
16 |
}, 1000 );
|
9 |
protected function run() {
|
10 |
add_filter( 'wpsc_before_create_ticket_args', function ( $args ) {
|
11 |
if ( $this->isSpam() ) {
|
12 |
+
Services::WpGeneral()->wpDie( $this->getCommonSpamMessage() );
|
|
|
13 |
}
|
14 |
return $args;
|
15 |
}, 1000 );
|
src/lib/src/Modules/Integrations/Lib/Bots/Spam/Handlers/WPForms.php
CHANGED
@@ -19,7 +19,7 @@ class WPForms extends Base {
|
|
19 |
|
20 |
if ( empty( $errors[ $this->workingFormID ] ) && $this->isSpam() ) {
|
21 |
$errors[ $this->workingFormID ] = [
|
22 |
-
'header' =>
|
23 |
];
|
24 |
}
|
25 |
|
19 |
|
20 |
if ( empty( $errors[ $this->workingFormID ] ) && $this->isSpam() ) {
|
21 |
$errors[ $this->workingFormID ] = [
|
22 |
+
'header' => $this->getCommonSpamMessage(),
|
23 |
];
|
24 |
}
|
25 |
|
src/lib/src/Modules/Integrations/Options.php
CHANGED
@@ -9,16 +9,4 @@ class Options extends BaseShield\Options {
|
|
9 |
public function isEnabledMainWP() :bool {
|
10 |
return $this->isOpt( 'enable_mainwp', 'Y' );
|
11 |
}
|
12 |
-
|
13 |
-
/**
|
14 |
-
* @deprecated 13.0.5
|
15 |
-
*/
|
16 |
-
public function getUserFormProviders() :array {
|
17 |
-
$userForms = $this->getOpt( 'user_form_providers' );
|
18 |
-
if ( !in_array( 'wordpress', $userForms ) ) {
|
19 |
-
$userForms[] = 'wordpress';
|
20 |
-
$this->setOpt( 'user_form_providers', $userForms );
|
21 |
-
}
|
22 |
-
return array_unique( $userForms );
|
23 |
-
}
|
24 |
}
|
9 |
public function isEnabledMainWP() :bool {
|
10 |
return $this->isOpt( 'enable_mainwp', 'Y' );
|
11 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
src/lib/src/Modules/License/Lib/LicenseHandler.php
CHANGED
@@ -12,7 +12,6 @@ class LicenseHandler extends Modules\Base\Common\ExecOnceModConsumer {
|
|
12 |
|
13 |
protected function run() {
|
14 |
add_action( $this->getCon()->prefix( 'shield_action' ), function ( $action ) {
|
15 |
-
$con = $this->getCon();
|
16 |
switch ( $action ) {
|
17 |
|
18 |
case 'keyless_handshake':
|
@@ -28,12 +27,7 @@ class LicenseHandler extends Modules\Base\Common\ExecOnceModConsumer {
|
|
28 |
break;
|
29 |
|
30 |
case 'license_check':
|
31 |
-
|
32 |
-
wp_schedule_single_event(
|
33 |
-
Services::Request()->ts() + 20,
|
34 |
-
$con->prefix( 'adhoc_cron_license_check' )
|
35 |
-
);
|
36 |
-
}
|
37 |
break;
|
38 |
}
|
39 |
} );
|
@@ -44,6 +38,16 @@ class LicenseHandler extends Modules\Base\Common\ExecOnceModConsumer {
|
|
44 |
} );
|
45 |
}
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
/**
|
48 |
* Customer reported that they're using a multilingual system with different hostnames for each language.
|
49 |
* This meant that adhoc lookups that happen on the wrong hostname name request would fail and remove
|
@@ -129,13 +133,13 @@ class LicenseHandler extends Modules\Base\Common\ExecOnceModConsumer {
|
|
129 |
$mod = $this->getMod();
|
130 |
$opts = $this->getOptions();
|
131 |
|
132 |
-
$
|
133 |
-
|
134 |
|
135 |
-
$
|
136 |
return (int)min(
|
137 |
-
$
|
138 |
-
$
|
139 |
);
|
140 |
}
|
141 |
|
@@ -159,14 +163,14 @@ class LicenseHandler extends Modules\Base\Common\ExecOnceModConsumer {
|
|
159 |
|
160 |
public function isLastVerifiedExpired() :bool {
|
161 |
return ( Services::Request()->ts() - $this->getLicense()->last_verified_at )
|
162 |
-
>
|
163 |
}
|
164 |
|
165 |
public function isLastVerifiedGraceExpired() :bool {
|
166 |
-
$
|
167 |
-
$
|
168 |
-
|
169 |
-
return ( Services::Request()->ts() - $this->getLicense()->last_verified_at ) > $
|
170 |
}
|
171 |
|
172 |
private function isMaybeExpiring() :bool {
|
@@ -212,4 +216,12 @@ class LicenseHandler extends Modules\Base\Common\ExecOnceModConsumer {
|
|
212 |
);
|
213 |
return ( Services::Request()->ts() - $mtime ) > MINUTE_IN_SECONDS;
|
214 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
}
|
12 |
|
13 |
protected function run() {
|
14 |
add_action( $this->getCon()->prefix( 'shield_action' ), function ( $action ) {
|
|
|
15 |
switch ( $action ) {
|
16 |
|
17 |
case 'keyless_handshake':
|
27 |
break;
|
28 |
|
29 |
case 'license_check':
|
30 |
+
$this->scheduleAdHocCheck();
|
|
|
|
|
|
|
|
|
|
|
31 |
break;
|
32 |
}
|
33 |
} );
|
38 |
} );
|
39 |
}
|
40 |
|
41 |
+
private function scheduleAdHocCheck( int $delay = 20 ) {
|
42 |
+
$con = $this->getCon();
|
43 |
+
if ( !wp_next_scheduled( $con->prefix( 'adhoc_cron_license_check' ) ) ) {
|
44 |
+
wp_schedule_single_event(
|
45 |
+
Services::Request()->ts() + $delay,
|
46 |
+
$con->prefix( 'adhoc_cron_license_check' )
|
47 |
+
);
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
/**
|
52 |
* Customer reported that they're using a multilingual system with different hostnames for each language.
|
53 |
* This meant that adhoc lookups that happen on the wrong hostname name request would fail and remove
|
133 |
$mod = $this->getMod();
|
134 |
$opts = $this->getOptions();
|
135 |
|
136 |
+
$verifiedExpiredDays = rand( 9, 14 ) /* $this->getLicVerifyExpireDays() */
|
137 |
+
+ $opts->getDef( 'lic_verify_expire_grace_days' );
|
138 |
|
139 |
+
$lic = $mod->getLicenseHandler()->getLicense();
|
140 |
return (int)min(
|
141 |
+
$lic->getExpiresAt() + $opts->getDef( 'lic_verify_expire_grace_days' )*DAY_IN_SECONDS,
|
142 |
+
$lic->last_verified_at + $verifiedExpiredDays*DAY_IN_SECONDS
|
143 |
);
|
144 |
}
|
145 |
|
163 |
|
164 |
public function isLastVerifiedExpired() :bool {
|
165 |
return ( Services::Request()->ts() - $this->getLicense()->last_verified_at )
|
166 |
+
> rand( 9, 14 )*DAY_IN_SECONDS; /* $this->getLicVerifyExpireDays() */
|
167 |
}
|
168 |
|
169 |
public function isLastVerifiedGraceExpired() :bool {
|
170 |
+
$opts = $this->getOptions();
|
171 |
+
$grace = ( rand( 9, 14 ) /* $this->getLicVerifyExpireDays() */
|
172 |
+
+ $opts->getDef( 'lic_verify_expire_grace_days' ) )*DAY_IN_SECONDS;
|
173 |
+
return ( Services::Request()->ts() - $this->getLicense()->last_verified_at ) > $grace;
|
174 |
}
|
175 |
|
176 |
private function isMaybeExpiring() :bool {
|
216 |
);
|
217 |
return ( Services::Request()->ts() - $mtime ) > MINUTE_IN_SECONDS;
|
218 |
}
|
219 |
+
|
220 |
+
private function getLicVerifyExpireDays() :int {
|
221 |
+
return (int)rand( 9, 14 );
|
222 |
+
}
|
223 |
+
|
224 |
+
private function getLicExpireGraceDays() :int {
|
225 |
+
return $this->getOptions()->getDef( 'lic_verify_expire_grace_days' );
|
226 |
+
}
|
227 |
}
|
src/lib/src/Modules/License/Lib/WpHashes/ApiTokenManager.php
CHANGED
@@ -19,7 +19,7 @@ class ApiTokenManager {
|
|
19 |
private $canRequestOverride = false;
|
20 |
|
21 |
protected function run() {
|
22 |
-
add_action(
|
23 |
switch ( $eventTag ) {
|
24 |
case 'lic_check_success':
|
25 |
$this->setCanRequestOverride( true )->getToken();
|
19 |
private $canRequestOverride = false;
|
20 |
|
21 |
protected function run() {
|
22 |
+
add_action( 'shield/event', function ( $eventTag ) {
|
23 |
switch ( $eventTag ) {
|
24 |
case 'lic_check_success':
|
25 |
$this->setCanRequestOverride( true )->getToken();
|
src/lib/src/Modules/License/UI.php
CHANGED
@@ -16,44 +16,54 @@ class UI extends BaseShield\UI {
|
|
16 |
$mod = $this->getMod();
|
17 |
$opts = $this->getOptions();
|
18 |
$WP = Services::WpGeneral();
|
19 |
-
$
|
20 |
|
21 |
-
$
|
22 |
|
23 |
-
$
|
24 |
-
if ( $
|
25 |
-
|
26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
}
|
28 |
else {
|
29 |
-
$
|
30 |
}
|
31 |
|
32 |
-
$
|
33 |
-
if ( empty( $
|
34 |
-
$
|
35 |
}
|
36 |
else {
|
37 |
-
$
|
38 |
-
|
|
|
|
|
39 |
}
|
40 |
-
|
41 |
-
'product_name' => $oCurrent->is_central ?
|
42 |
-
$opts->getDef( 'license_item_name_sc' ) :
|
43 |
-
$opts->getDef( 'license_item_name' ),
|
44 |
-
'license_active' => $mod->getLicenseHandler()->hasValidWorkingLicense() ?
|
45 |
-
__( '✔', 'wp-simple-firewall' ) : __( '✖', 'wp-simple-firewall' ),
|
46 |
-
'license_expires' => $sExpiresAt,
|
47 |
-
'license_email' => $oCurrent->customer_email,
|
48 |
-
'last_checked' => $sChecked,
|
49 |
-
'last_errors' => $mod->hasLastErrors() ? $mod->getLastErrors( true ) : '',
|
50 |
-
'wphashes_token' => $mod->getWpHashesTokenManager()->hasToken() ?
|
51 |
-
__( '✔', 'wp-simple-firewall' ) : __( '✖', 'wp-simple-firewall' ),
|
52 |
-
'installation_id' => $con->getSiteInstallationId(),
|
53 |
-
];
|
54 |
return [
|
55 |
'vars' => [
|
56 |
-
'license_table' =>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
'activation_url' => $WP->getHomeUrl(),
|
58 |
'error' => $mod->getLastErrors( true ),
|
59 |
],
|
16 |
$mod = $this->getMod();
|
17 |
$opts = $this->getOptions();
|
18 |
$WP = Services::WpGeneral();
|
19 |
+
$carb = Services::Request()->carbon();
|
20 |
|
21 |
+
$lic = $mod->getLicenseHandler()->getLicense();
|
22 |
|
23 |
+
$expiresAt = $lic->getExpiresAt();
|
24 |
+
if ( $expiresAt > 0 && $expiresAt != PHP_INT_MAX ) {
|
25 |
+
// Expires At has a random addition added to disperse future license lookups
|
26 |
+
// So we bring the license expiration back down to normal for user display.
|
27 |
+
$endOfExpireDay = Services::Request()
|
28 |
+
->carbon()
|
29 |
+
->setTimestamp( $expiresAt )
|
30 |
+
->startOfDay()->timestamp - 1;
|
31 |
+
$expiresAtHuman = sprintf( '%s<br/><small>%s</small>',
|
32 |
+
$carb->setTimestamp( $endOfExpireDay )->diffForHumans(),
|
33 |
+
$WP->getTimeStampForDisplay( $endOfExpireDay )
|
34 |
+
);
|
35 |
}
|
36 |
else {
|
37 |
+
$expiresAtHuman = 'n/a';
|
38 |
}
|
39 |
|
40 |
+
$lastReqAt = $lic->last_request_at;
|
41 |
+
if ( empty( $lastReqAt ) ) {
|
42 |
+
$checked = __( 'Never', 'wp-simple-firewall' );
|
43 |
}
|
44 |
else {
|
45 |
+
$checked = sprintf( '%s<br/><small>%s</small>',
|
46 |
+
$carb->setTimestamp( $lastReqAt )->diffForHumans(),
|
47 |
+
$WP->getTimeStampForDisplay( $lastReqAt )
|
48 |
+
);
|
49 |
}
|
50 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
return [
|
52 |
'vars' => [
|
53 |
+
'license_table' => [
|
54 |
+
'product_name' => $lic->is_central ?
|
55 |
+
$opts->getDef( 'license_item_name_sc' ) :
|
56 |
+
$opts->getDef( 'license_item_name' ),
|
57 |
+
'license_active' => $mod->getLicenseHandler()->hasValidWorkingLicense() ?
|
58 |
+
__( '✔', 'wp-simple-firewall' ) : __( '✖', 'wp-simple-firewall' ),
|
59 |
+
'license_expires' => $expiresAtHuman,
|
60 |
+
'license_email' => $lic->customer_email,
|
61 |
+
'last_checked' => $checked,
|
62 |
+
'last_errors' => $mod->hasLastErrors() ? $mod->getLastErrors( true ) : '',
|
63 |
+
'wphashes_token' => $mod->getWpHashesTokenManager()->hasToken() ?
|
64 |
+
__( '✔', 'wp-simple-firewall' ) : __( '✖', 'wp-simple-firewall' ),
|
65 |
+
'installation_id' => $con->getSiteInstallationId(),
|
66 |
+
],
|
67 |
'activation_url' => $WP->getHomeUrl(),
|
68 |
'error' => $mod->getLastErrors( true ),
|
69 |
],
|
src/lib/src/Modules/License/WpCli.php
CHANGED
@@ -2,17 +2,14 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\License;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\License;
|
7 |
|
8 |
-
class WpCli extends
|
9 |
|
10 |
-
|
11 |
-
* @inheritDoc
|
12 |
-
*/
|
13 |
-
protected function getCmdHandlers() :array {
|
14 |
return [
|
15 |
-
|
16 |
];
|
17 |
}
|
18 |
}
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\License;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\License;
|
7 |
|
8 |
+
class WpCli extends BaseShield\WpCli {
|
9 |
|
10 |
+
protected function enumCmdHandlers() :array {
|
|
|
|
|
|
|
11 |
return [
|
12 |
+
License\WpCli\License::class
|
13 |
];
|
14 |
}
|
15 |
}
|
src/lib/src/Modules/Lockdown/ModCon.php
CHANGED
@@ -20,9 +20,6 @@ class ModCon extends BaseShield\ModCon {
|
|
20 |
$this->cleanApiExclusions();
|
21 |
}
|
22 |
|
23 |
-
/**
|
24 |
-
* @deprecated 13.0.6
|
25 |
-
*/
|
26 |
private function cleanApiExclusions() {
|
27 |
/** @var Options $opts */
|
28 |
$opts = $this->getOptions();
|
20 |
$this->cleanApiExclusions();
|
21 |
}
|
22 |
|
|
|
|
|
|
|
23 |
private function cleanApiExclusions() {
|
24 |
/** @var Options $opts */
|
25 |
$opts = $this->getOptions();
|
src/lib/src/Modules/LoginGuard/AjaxHandler.php
CHANGED
@@ -8,6 +8,19 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
8 |
|
9 |
class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
protected function processAjaxAction( string $action ) :array {
|
12 |
|
13 |
switch ( $action ) {
|
@@ -27,6 +40,22 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
27 |
$response = $this->ajaxExec_Disable2faEmail();
|
28 |
break;
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
case 'user_ga_toggle':
|
31 |
$response = $this->ajaxExec_UserGaToggle();
|
32 |
break;
|
@@ -63,7 +92,7 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
63 |
$mod = $this->getMod();
|
64 |
$userID = Services::Request()->post( 'user_id' );
|
65 |
if ( !empty( $userID ) ) {
|
66 |
-
$result = $mod->
|
67 |
$response = [
|
68 |
'success' => $result->success,
|
69 |
'message' => $result->success ? $result->msg_text : $result->error_text,
|
@@ -83,9 +112,10 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
83 |
/** @var ModCon $mod */
|
84 |
$mod = $this->getMod();
|
85 |
/** @var TwoFactor\Provider\BackupCodes $provider */
|
86 |
-
$provider = $mod->
|
87 |
|
88 |
-
$pass = $provider->
|
|
|
89 |
$pass = implode( '-', str_split( $pass, 5 ) );
|
90 |
|
91 |
return [
|
@@ -99,9 +129,11 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
99 |
/** @var ModCon $mod */
|
100 |
$mod = $this->getMod();
|
101 |
/** @var TwoFactor\Provider\BackupCodes $provider */
|
102 |
-
$provider = $mod->
|
103 |
-
$provider->
|
104 |
-
$mod->setFlashAdminNotice(
|
|
|
|
|
105 |
|
106 |
return [
|
107 |
'message' => __( 'Your backup login codes have been deleted.', 'wp-simple-firewall' ),
|
@@ -113,12 +145,11 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
113 |
/** @var ModCon $mod */
|
114 |
$mod = $this->getMod();
|
115 |
/** @var TwoFactor\Provider\GoogleAuth $provider */
|
116 |
-
$provider = $mod->
|
|
|
117 |
|
118 |
$otp = Services::Request()->post( 'ga_otp', '' );
|
119 |
-
$result = empty( $otp ) ?
|
120 |
-
$provider->removeGaOnAccount( Services::WpUsers()->getCurrentWpUser() )
|
121 |
-
: $provider->activateGaOnAccount( Services::WpUsers()->getCurrentWpUser(), $otp );
|
122 |
|
123 |
return [
|
124 |
'success' => $result->success,
|
@@ -131,11 +162,12 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
131 |
/** @var ModCon $mod */
|
132 |
$mod = $this->getMod();
|
133 |
/** @var TwoFactor\Provider\Email $provider */
|
134 |
-
$provider = $mod->
|
135 |
|
136 |
-
$turnOn = Services::Request()->post( 'direction' )
|
137 |
-
$provider->
|
138 |
-
|
|
|
139 |
|
140 |
if ( $success ) {
|
141 |
$msg = $turnOn ? __( 'Email 2FA activated.', 'wp-simple-firewall' )
|
@@ -167,7 +199,7 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
167 |
/** @var ModCon $mod */
|
168 |
$mod = $this->getMod();
|
169 |
/** @var TwoFactor\Provider\U2F $provider */
|
170 |
-
$provider = $mod->
|
171 |
|
172 |
$u2fReg = Services::Request()->post( 'icwp_wpsf_new_u2f_response' );
|
173 |
if ( empty( $u2fReg ) ) {
|
@@ -178,7 +210,8 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
178 |
];
|
179 |
}
|
180 |
else {
|
181 |
-
$result = $provider->
|
|
|
182 |
$response = [
|
183 |
'success' => $result->success,
|
184 |
'message' => $result->success ? $result->msg_text : $result->error_text,
|
@@ -188,16 +221,172 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
188 |
return $response;
|
189 |
}
|
190 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
private function ajaxExec_ProfileU2fRemove() :array {
|
192 |
/** @var ModCon $mod */
|
193 |
$mod = $this->getMod();
|
194 |
/** @var TwoFactor\Provider\U2F $provider */
|
195 |
-
$provider = $mod->
|
196 |
->getProviders()[ TwoFactor\Provider\U2F::SLUG ];
|
197 |
|
198 |
$key = Services::Request()->post( 'u2fid' );
|
199 |
if ( !empty( $key ) ) {
|
200 |
-
$provider->
|
|
|
201 |
}
|
202 |
return [
|
203 |
'success' => !empty( $key ),
|
@@ -210,11 +399,12 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
210 |
/** @var ModCon $mod */
|
211 |
$mod = $this->getMod();
|
212 |
/** @var TwoFactor\Provider\Yubikey $provider */
|
213 |
-
$provider = $mod->
|
214 |
->getProviders()[ TwoFactor\Provider\Yubikey::SLUG ];
|
215 |
|
216 |
$otp = Services::Request()->post( 'otp', '' );
|
217 |
-
$result = $provider->
|
|
|
218 |
return [
|
219 |
'success' => $result->success,
|
220 |
'message' => $result->success ? $result->msg_text : $result->error_text,
|
8 |
|
9 |
class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
10 |
|
11 |
+
protected function processNonAuthAjaxAction( string $action ) :array {
|
12 |
+
|
13 |
+
switch ( $action ) {
|
14 |
+
case 'intent_email_send':
|
15 |
+
$response = $this->ajaxExec_IntentEmailSend();
|
16 |
+
break;
|
17 |
+
default:
|
18 |
+
$response = parent::processNonAuthAjaxAction( $action );
|
19 |
+
}
|
20 |
+
|
21 |
+
return $response;
|
22 |
+
}
|
23 |
+
|
24 |
protected function processAjaxAction( string $action ) :array {
|
25 |
|
26 |
switch ( $action ) {
|
40 |
$response = $this->ajaxExec_Disable2faEmail();
|
41 |
break;
|
42 |
|
43 |
+
case 'user_sms2fa_add':
|
44 |
+
$response = $this->ajaxExec_UserSmsAdd();
|
45 |
+
break;
|
46 |
+
|
47 |
+
case 'user_sms2fa_remove':
|
48 |
+
$response = $this->ajaxExec_UserSmsRemove();
|
49 |
+
break;
|
50 |
+
|
51 |
+
case 'user_sms2fa_verify':
|
52 |
+
$response = $this->ajaxExec_UserSmsVerify();
|
53 |
+
break;
|
54 |
+
|
55 |
+
case 'intent_sms_send':
|
56 |
+
$response = $this->ajaxExec_UserSmsIntentStart();
|
57 |
+
break;
|
58 |
+
|
59 |
case 'user_ga_toggle':
|
60 |
$response = $this->ajaxExec_UserGaToggle();
|
61 |
break;
|
92 |
$mod = $this->getMod();
|
93 |
$userID = Services::Request()->post( 'user_id' );
|
94 |
if ( !empty( $userID ) ) {
|
95 |
+
$result = $mod->getMfaController()->removeAllFactorsForUser( (int)$userID );
|
96 |
$response = [
|
97 |
'success' => $result->success,
|
98 |
'message' => $result->success ? $result->msg_text : $result->error_text,
|
112 |
/** @var ModCon $mod */
|
113 |
$mod = $this->getMod();
|
114 |
/** @var TwoFactor\Provider\BackupCodes $provider */
|
115 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\BackupCodes::SLUG ];
|
116 |
|
117 |
+
$pass = $provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
118 |
+
->resetSecret();
|
119 |
$pass = implode( '-', str_split( $pass, 5 ) );
|
120 |
|
121 |
return [
|
129 |
/** @var ModCon $mod */
|
130 |
$mod = $this->getMod();
|
131 |
/** @var TwoFactor\Provider\BackupCodes $provider */
|
132 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\BackupCodes::SLUG ];
|
133 |
+
$provider->setUser( Services::WpUsers()->getCurrentWpUser() )->remove();
|
134 |
+
$mod->setFlashAdminNotice(
|
135 |
+
__( 'Multi-factor login backup code has been removed from your profile', 'wp-simple-firewall' )
|
136 |
+
);
|
137 |
|
138 |
return [
|
139 |
'message' => __( 'Your backup login codes have been deleted.', 'wp-simple-firewall' ),
|
145 |
/** @var ModCon $mod */
|
146 |
$mod = $this->getMod();
|
147 |
/** @var TwoFactor\Provider\GoogleAuth $provider */
|
148 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\GoogleAuth::SLUG ];
|
149 |
+
$provider->setUser( Services::WpUsers()->getCurrentWpUser() );
|
150 |
|
151 |
$otp = Services::Request()->post( 'ga_otp', '' );
|
152 |
+
$result = empty( $otp ) ? $provider->removeGA() : $provider->activateGA( $otp );
|
|
|
|
|
153 |
|
154 |
return [
|
155 |
'success' => $result->success,
|
162 |
/** @var ModCon $mod */
|
163 |
$mod = $this->getMod();
|
164 |
/** @var TwoFactor\Provider\Email $provider */
|
165 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\Email::SLUG ];
|
166 |
|
167 |
+
$turnOn = Services::Request()->post( 'direction' ) === 'on';
|
168 |
+
$provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
169 |
+
->setProfileValidated( $turnOn );
|
170 |
+
$success = $turnOn === $provider->isProfileActive();
|
171 |
|
172 |
if ( $success ) {
|
173 |
$msg = $turnOn ? __( 'Email 2FA activated.', 'wp-simple-firewall' )
|
199 |
/** @var ModCon $mod */
|
200 |
$mod = $this->getMod();
|
201 |
/** @var TwoFactor\Provider\U2F $provider */
|
202 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\U2F::SLUG ];
|
203 |
|
204 |
$u2fReg = Services::Request()->post( 'icwp_wpsf_new_u2f_response' );
|
205 |
if ( empty( $u2fReg ) ) {
|
210 |
];
|
211 |
}
|
212 |
else {
|
213 |
+
$result = $provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
214 |
+
->addNewRegistration( $u2fReg );
|
215 |
$response = [
|
216 |
'success' => $result->success,
|
217 |
'message' => $result->success ? $result->msg_text : $result->error_text,
|
221 |
return $response;
|
222 |
}
|
223 |
|
224 |
+
private function ajaxExec_UserSmsAdd() :array {
|
225 |
+
/** @var ModCon $mod */
|
226 |
+
$mod = $this->getMod();
|
227 |
+
$req = Services::Request();
|
228 |
+
/** @var TwoFactor\Provider\Sms $provider */
|
229 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\Sms::SLUG ];
|
230 |
+
|
231 |
+
$countryCode = $req->post( 'sms_country' );
|
232 |
+
$phoneNum = $req->post( 'sms_phone' );
|
233 |
+
|
234 |
+
$response = [
|
235 |
+
'success' => false,
|
236 |
+
'message' => __( 'Either the country code or phone number were missing.', 'wp-simple-firewall' ),
|
237 |
+
'page_reload' => true
|
238 |
+
];
|
239 |
+
|
240 |
+
if ( empty( $countryCode ) ) {
|
241 |
+
$response[ 'message' ] = __( 'The country code was missing.', 'wp-simple-firewall' );
|
242 |
+
}
|
243 |
+
elseif ( empty( $phoneNum ) ) {
|
244 |
+
$response[ 'message' ] = __( 'The phone number was missing.', 'wp-simple-firewall' );
|
245 |
+
}
|
246 |
+
else {
|
247 |
+
$user = Services::WpUsers()->getCurrentWpUser();
|
248 |
+
try {
|
249 |
+
$response = [
|
250 |
+
'success' => true,
|
251 |
+
'message' => __( 'Please confirm the 6-digit code sent to your phone.', 'wp-simple-firewall' ),
|
252 |
+
'code' => $provider->setUser( $user )
|
253 |
+
->addProvisionalRegistration( $countryCode, $phoneNum ),
|
254 |
+
'page_reload' => false
|
255 |
+
];
|
256 |
+
}
|
257 |
+
catch ( \Exception $e ) {
|
258 |
+
$response = [
|
259 |
+
'success' => false,
|
260 |
+
'message' => esc_html( $e->getMessage() ),
|
261 |
+
'page_reload' => false
|
262 |
+
];
|
263 |
+
}
|
264 |
+
}
|
265 |
+
|
266 |
+
return $response;
|
267 |
+
}
|
268 |
+
|
269 |
+
private function ajaxExec_UserSmsRemove() :array {
|
270 |
+
/** @var ModCon $mod */
|
271 |
+
$mod = $this->getMod();
|
272 |
+
/** @var TwoFactor\Provider\Sms $provider */
|
273 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\Sms::SLUG ];
|
274 |
+
$provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
275 |
+
->remove();
|
276 |
+
return [
|
277 |
+
'success' => true,
|
278 |
+
'message' => __( 'SMS Registration Removed', 'wp-simple-firewall' ),
|
279 |
+
'page_reload' => true
|
280 |
+
];
|
281 |
+
}
|
282 |
+
|
283 |
+
private function ajaxExec_IntentEmailSend() :array {
|
284 |
+
/** @var ModCon $mod */
|
285 |
+
$mod = $this->getMod();
|
286 |
+
$mfaCon = $mod->getMfaController();
|
287 |
+
|
288 |
+
$success = false;
|
289 |
+
$userID = Services::Request()->post( 'wp_user_id' );
|
290 |
+
$loginNonce = Services::Request()->post( 'login_nonce' );
|
291 |
+
if ( !empty( $userID ) && !empty( $loginNonce ) ) {
|
292 |
+
$user = Services::WpUsers()->getUserById( $userID );
|
293 |
+
$nonces = array_keys( $mfaCon->getActiveLoginIntents( $user ) );
|
294 |
+
if ( $user instanceof \WP_User && in_array( $loginNonce, $nonces ) ) {
|
295 |
+
/** @var TwoFactor\Provider\Email $provider */
|
296 |
+
$provider = $mod->getMfaController()
|
297 |
+
->getProvidersForUser( $user, true )[ TwoFactor\Provider\Email::SLUG ] ?? null;
|
298 |
+
$success = !empty( $provider ) && $provider->sendEmailTwoFactorVerify( $loginNonce );
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
return [
|
303 |
+
'success' => $success,
|
304 |
+
'message' => $success ? __( 'One-Time Password was sent to your registered email address.', 'wp-simple-firewall' )
|
305 |
+
: __( 'There was a problem sending the One-Time Password email.', 'wp-simple-firewall' ),
|
306 |
+
'page_reload' => true
|
307 |
+
];
|
308 |
+
}
|
309 |
+
|
310 |
+
private function ajaxExec_UserSmsIntentStart() :array {
|
311 |
+
/** @var ModCon $mod */
|
312 |
+
$mod = $this->getMod();
|
313 |
+
/** @var TwoFactor\Provider\Sms $provider */
|
314 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\Sms::SLUG ];
|
315 |
+
try {
|
316 |
+
$provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
317 |
+
->startLoginIntent();
|
318 |
+
$response = [
|
319 |
+
'success' => true,
|
320 |
+
'message' => __( 'One-Time Password was sent to your phone.', 'wp-simple-firewall' ),
|
321 |
+
'page_reload' => true
|
322 |
+
];
|
323 |
+
}
|
324 |
+
catch ( \Exception $e ) {
|
325 |
+
$response = [
|
326 |
+
'success' => false,
|
327 |
+
'message' => $e->getMessage(),
|
328 |
+
'page_reload' => true
|
329 |
+
];
|
330 |
+
}
|
331 |
+
return $response;
|
332 |
+
}
|
333 |
+
|
334 |
+
private function ajaxExec_UserSmsVerify() :array {
|
335 |
+
/** @var ModCon $mod */
|
336 |
+
$mod = $this->getMod();
|
337 |
+
$req = Services::Request();
|
338 |
+
/** @var TwoFactor\Provider\Sms $provider */
|
339 |
+
$provider = $mod->getMfaController()->getProviders()[ TwoFactor\Provider\Sms::SLUG ];
|
340 |
+
|
341 |
+
$countryCode = $req->post( 'sms_country' );
|
342 |
+
$phoneNum = $req->post( 'sms_phone' );
|
343 |
+
$verifyCode = $req->post( 'sms_code' );
|
344 |
+
|
345 |
+
$response = [
|
346 |
+
'success' => false,
|
347 |
+
'message' => __( 'SMS Verification Failed.', 'wp-simple-firewall' ),
|
348 |
+
'page_reload' => true
|
349 |
+
];
|
350 |
+
|
351 |
+
if ( empty( $verifyCode ) ) {
|
352 |
+
$response[ 'message' ] = __( 'The code provided was empty.', 'wp-simple-firewall' );
|
353 |
+
}
|
354 |
+
elseif ( empty( $countryCode ) || empty( $phoneNum ) ) {
|
355 |
+
$response[ 'message' ] = __( 'The data provided was inconsistent.', 'wp-simple-firewall' );
|
356 |
+
}
|
357 |
+
else {
|
358 |
+
try {
|
359 |
+
$response = [
|
360 |
+
'success' => true,
|
361 |
+
'message' => __( 'Phone verified and registered successfully for SMS Two-Factor Authentication.', 'wp-simple-firewall' ),
|
362 |
+
'code' => $provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
363 |
+
->verifyProvisionalRegistration( $countryCode, $phoneNum, $verifyCode ),
|
364 |
+
'page_reload' => false
|
365 |
+
];
|
366 |
+
}
|
367 |
+
catch ( \Exception $e ) {
|
368 |
+
$response = [
|
369 |
+
'success' => false,
|
370 |
+
'message' => esc_html( $e->getMessage() ),
|
371 |
+
'page_reload' => false
|
372 |
+
];
|
373 |
+
}
|
374 |
+
}
|
375 |
+
|
376 |
+
return $response;
|
377 |
+
}
|
378 |
+
|
379 |
private function ajaxExec_ProfileU2fRemove() :array {
|
380 |
/** @var ModCon $mod */
|
381 |
$mod = $this->getMod();
|
382 |
/** @var TwoFactor\Provider\U2F $provider */
|
383 |
+
$provider = $mod->getMfaController()
|
384 |
->getProviders()[ TwoFactor\Provider\U2F::SLUG ];
|
385 |
|
386 |
$key = Services::Request()->post( 'u2fid' );
|
387 |
if ( !empty( $key ) ) {
|
388 |
+
$provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
389 |
+
->removeRegisteredU2fId( $key );
|
390 |
}
|
391 |
return [
|
392 |
'success' => !empty( $key ),
|
399 |
/** @var ModCon $mod */
|
400 |
$mod = $this->getMod();
|
401 |
/** @var TwoFactor\Provider\Yubikey $provider */
|
402 |
+
$provider = $mod->getMfaController()
|
403 |
->getProviders()[ TwoFactor\Provider\Yubikey::SLUG ];
|
404 |
|
405 |
$otp = Services::Request()->post( 'otp', '' );
|
406 |
+
$result = $provider->setUser( Services::WpUsers()->getCurrentWpUser() )
|
407 |
+
->toggleRegisteredYubiID( $otp );
|
408 |
return [
|
409 |
'success' => $result->success,
|
410 |
'message' => $result->success ? $result->msg_text : $result->error_text,
|
src/lib/src/Modules/LoginGuard/Lib/AntiBot/AntibotSetup.php
CHANGED
@@ -23,7 +23,7 @@ class AntibotSetup extends ExecOnceModConsumer {
|
|
23 |
$opts = $this->getOptions();
|
24 |
|
25 |
$providers = [];
|
26 |
-
if ( $opts->isEnabledCooldown() && $this->getCon()->
|
27 |
$providers[] = ( new AntiBot\ProtectionProviders\CoolDown() )
|
28 |
->setMod( $mod );
|
29 |
}
|
23 |
$opts = $this->getOptions();
|
24 |
|
25 |
$providers = [];
|
26 |
+
if ( $opts->isEnabledCooldown() && $this->getCon()->cache_dir_handler->dirExists() ) {
|
27 |
$providers[] = ( new AntiBot\ProtectionProviders\CoolDown() )
|
28 |
->setMod( $mod );
|
29 |
}
|
src/lib/src/Modules/LoginGuard/Lib/Rename/RenameLogin.php
CHANGED
@@ -14,10 +14,13 @@ class RenameLogin {
|
|
14 |
use ExecOnce;
|
15 |
|
16 |
protected function canRun() :bool {
|
|
|
|
|
17 |
/** @var Options $opts */
|
18 |
$opts = $this->getOptions();
|
19 |
return !Services::IP()->isLoopback()
|
20 |
&& !empty( $opts->getCustomLoginPath() )
|
|
|
21 |
&& !$this->hasPluginConflict() && !$this->hasUnsupportedConfiguration();
|
22 |
}
|
23 |
|
@@ -26,29 +29,27 @@ class RenameLogin {
|
|
26 |
}
|
27 |
|
28 |
public function onWpInit() {
|
29 |
-
|
30 |
-
$mod = $this->getMod();
|
31 |
-
|
32 |
-
if ( Services::WpGeneral()->isLoginUrl() &&
|
33 |
-
( $mod->isVisitorWhitelisted() || Services::WpUsers()->isUserLoggedIn() ) ) {
|
34 |
return;
|
35 |
}
|
36 |
-
if ( is_admin() &&
|
37 |
return;
|
38 |
}
|
|
|
39 |
|
40 |
-
|
|
|
|
|
|
|
|
|
41 |
|
42 |
-
|
43 |
-
|
44 |
|
45 |
// Shouldn't be necessary, but in-case something else includes the wp-login.php, we block that too.
|
46 |
add_action( 'login_init', [ $this, 'aLoginFormAction' ], 0 );
|
47 |
|
48 |
// ensure that wp-login.php is never used in site urls or redirects
|
49 |
-
add_filter( 'site_url', [ $this, 'fCheckForLoginPhp' ], 20 );
|
50 |
-
add_filter( 'network_site_url', [ $this, 'fCheckForLoginPhp' ], 20 );
|
51 |
-
add_filter( 'wp_redirect', [ $this, 'fCheckForLoginPhp' ], 20 );
|
52 |
if ( !Services::WpUsers()->isUserLoggedIn() ) {
|
53 |
add_filter( 'wp_redirect', [ $this, 'fProtectUnauthorizedLoginRedirect' ], 50 );
|
54 |
}
|
@@ -57,6 +58,12 @@ class RenameLogin {
|
|
57 |
add_filter( 'et_anticipate_exceptions', [ $this, 'fAddToEtMaintenanceExceptions' ] );
|
58 |
}
|
59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
private function hasPluginConflict() :bool {
|
61 |
/** @var LoginGuard\ModCon $mod */
|
62 |
$mod = $this->getMod();
|
@@ -94,7 +101,7 @@ class RenameLogin {
|
|
94 |
$mod->setFlashAdminNotice( sprintf( '<strong>%s</strong>: %s',
|
95 |
__( 'Warning', 'wp-simple-firewall' ),
|
96 |
$msg
|
97 |
-
), true );
|
98 |
}
|
99 |
|
100 |
return $isConflicted;
|
@@ -113,6 +120,7 @@ class RenameLogin {
|
|
113 |
__( 'Warning', 'wp-simple-firewall' ),
|
114 |
__( 'Your login URL is unchanged because your current hosting/PHP configuration cannot parse the necessary information.', 'wp-simple-firewall' )
|
115 |
),
|
|
|
116 |
true
|
117 |
);
|
118 |
}
|
@@ -122,7 +130,7 @@ class RenameLogin {
|
|
122 |
|
123 |
public function doBlockPossibleWpLoginLoad() {
|
124 |
|
125 |
-
// To begin, we block if it's
|
126 |
$doBlock = is_admin() && !Services::WpGeneral()->isAjax()
|
127 |
&& !Services::WpUsers()->isUserLoggedIn();
|
128 |
|
@@ -200,7 +208,7 @@ class RenameLogin {
|
|
200 |
return $url;
|
201 |
}
|
202 |
|
203 |
-
public function
|
204 |
if ( Services::WpGeneral()->isLoginUrl() ) {
|
205 |
// To prevent PHP warnings about undefined vars
|
206 |
$user_login = $error = '';
|
@@ -218,27 +226,34 @@ class RenameLogin {
|
|
218 |
|
219 |
/**
|
220 |
* Add the custom login URL to the Elegant Themes Maintenance Mode plugin URL exceptions list
|
221 |
-
* @param array $
|
222 |
* @return array
|
223 |
*/
|
224 |
-
public function fAddToEtMaintenanceExceptions( $
|
225 |
/** @var LoginGuard\Options $opts */
|
226 |
$opts = $this->getOptions();
|
227 |
-
$
|
228 |
-
return $
|
229 |
}
|
230 |
|
231 |
/**
|
232 |
* Will by default send a 404 response screen. Has a filter to specify redirect URL.
|
233 |
*/
|
234 |
protected function doWpLoginFailedRedirect404() {
|
|
|
|
|
|
|
235 |
$this->getCon()->fireEvent( 'hide_login_url' );
|
236 |
|
237 |
-
$
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
|
|
|
|
|
|
|
|
242 |
}
|
243 |
}
|
244 |
|
14 |
use ExecOnce;
|
15 |
|
16 |
protected function canRun() :bool {
|
17 |
+
/** @var LoginGuard\ModCon $mod */
|
18 |
+
$mod = $this->getMod();
|
19 |
/** @var Options $opts */
|
20 |
$opts = $this->getOptions();
|
21 |
return !Services::IP()->isLoopback()
|
22 |
&& !empty( $opts->getCustomLoginPath() )
|
23 |
+
&& !$mod->isVisitorWhitelisted()
|
24 |
&& !$this->hasPluginConflict() && !$this->hasUnsupportedConfiguration();
|
25 |
}
|
26 |
|
29 |
}
|
30 |
|
31 |
public function onWpInit() {
|
32 |
+
if ( Services::WpGeneral()->isLoginUrl() && Services::WpUsers()->isUserLoggedIn() ) {
|
|
|
|
|
|
|
|
|
33 |
return;
|
34 |
}
|
35 |
+
if ( is_admin() && !Services::WpUsers()->isUserLoggedIn() ) {
|
36 |
return;
|
37 |
}
|
38 |
+
$this->replaceLoginURL();
|
39 |
|
40 |
+
// Intercept requests
|
41 |
+
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ], 11 );
|
42 |
+
}
|
43 |
+
|
44 |
+
public function onWpLoaded() {
|
45 |
|
46 |
+
$this->doBlockPossibleWpLoginLoad();
|
47 |
+
$this->loadWpLoginContent(); // Loads the wp-login.php if the correct URL is loaded
|
48 |
|
49 |
// Shouldn't be necessary, but in-case something else includes the wp-login.php, we block that too.
|
50 |
add_action( 'login_init', [ $this, 'aLoginFormAction' ], 0 );
|
51 |
|
52 |
// ensure that wp-login.php is never used in site urls or redirects
|
|
|
|
|
|
|
53 |
if ( !Services::WpUsers()->isUserLoggedIn() ) {
|
54 |
add_filter( 'wp_redirect', [ $this, 'fProtectUnauthorizedLoginRedirect' ], 50 );
|
55 |
}
|
58 |
add_filter( 'et_anticipate_exceptions', [ $this, 'fAddToEtMaintenanceExceptions' ] );
|
59 |
}
|
60 |
|
61 |
+
private function replaceLoginURL() {
|
62 |
+
add_filter( 'site_url', [ $this, 'fCheckForLoginPhp' ], 20 );
|
63 |
+
add_filter( 'network_site_url', [ $this, 'fCheckForLoginPhp' ], 20 );
|
64 |
+
add_filter( 'wp_redirect', [ $this, 'fCheckForLoginPhp' ], 20 );
|
65 |
+
}
|
66 |
+
|
67 |
private function hasPluginConflict() :bool {
|
68 |
/** @var LoginGuard\ModCon $mod */
|
69 |
$mod = $this->getMod();
|
101 |
$mod->setFlashAdminNotice( sprintf( '<strong>%s</strong>: %s',
|
102 |
__( 'Warning', 'wp-simple-firewall' ),
|
103 |
$msg
|
104 |
+
), null, true );
|
105 |
}
|
106 |
|
107 |
return $isConflicted;
|
120 |
__( 'Warning', 'wp-simple-firewall' ),
|
121 |
__( 'Your login URL is unchanged because your current hosting/PHP configuration cannot parse the necessary information.', 'wp-simple-firewall' )
|
122 |
),
|
123 |
+
null,
|
124 |
true
|
125 |
);
|
126 |
}
|
130 |
|
131 |
public function doBlockPossibleWpLoginLoad() {
|
132 |
|
133 |
+
// To begin, we block if it's a request to the admin area and the user isn't logged in (and it's not ajax)
|
134 |
$doBlock = is_admin() && !Services::WpGeneral()->isAjax()
|
135 |
&& !Services::WpUsers()->isUserLoggedIn();
|
136 |
|
208 |
return $url;
|
209 |
}
|
210 |
|
211 |
+
public function loadWpLoginContent() {
|
212 |
if ( Services::WpGeneral()->isLoginUrl() ) {
|
213 |
// To prevent PHP warnings about undefined vars
|
214 |
$user_login = $error = '';
|
226 |
|
227 |
/**
|
228 |
* Add the custom login URL to the Elegant Themes Maintenance Mode plugin URL exceptions list
|
229 |
+
* @param array $urlExceptions
|
230 |
* @return array
|
231 |
*/
|
232 |
+
public function fAddToEtMaintenanceExceptions( $urlExceptions ) {
|
233 |
/** @var LoginGuard\Options $opts */
|
234 |
$opts = $this->getOptions();
|
235 |
+
$urlExceptions[] = $opts->getCustomLoginPath();
|
236 |
+
return $urlExceptions;
|
237 |
}
|
238 |
|
239 |
/**
|
240 |
* Will by default send a 404 response screen. Has a filter to specify redirect URL.
|
241 |
*/
|
242 |
protected function doWpLoginFailedRedirect404() {
|
243 |
+
/** @var LoginGuard\Options $opts */
|
244 |
+
$opts = $this->getOptions();
|
245 |
+
|
246 |
$this->getCon()->fireEvent( 'hide_login_url' );
|
247 |
|
248 |
+
$redirectPath = $opts->getHiddenLoginRedirect();
|
249 |
+
$redirectUrl = empty( $redirectPath ) ? '' : site_url( $redirectPath );
|
250 |
+
$redirectUrl = apply_filters( 'shield/renamewplogin_redirect_url',
|
251 |
+
apply_filters( 'icwp_shield_renamewplogin_redirect_url', $redirectUrl ) );
|
252 |
+
|
253 |
+
if ( !empty( $redirectUrl ) ) {
|
254 |
+
$redirectUrl = esc_url( $redirectUrl );
|
255 |
+
if ( @wp_parse_url( $redirectUrl ) !== false ) {
|
256 |
+
Services::Response()->redirect( $redirectUrl, [], false );
|
257 |
}
|
258 |
}
|
259 |
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/CouldNotValidate2FA.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions;
|
4 |
+
|
5 |
+
class CouldNotValidate2FA extends \Exception {
|
6 |
+
|
7 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/LoginCancelException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions;
|
4 |
+
|
5 |
+
class LoginCancelException extends \Exception {
|
6 |
+
|
7 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/NoActiveProvidersForUserException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions;
|
4 |
+
|
5 |
+
class NoActiveProvidersForUserException extends \Exception {
|
6 |
+
|
7 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/NoLoginIntentForUserException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions;
|
4 |
+
|
5 |
+
class NoLoginIntentForUserException extends \Exception {
|
6 |
+
|
7 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/NotValidUserException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions;
|
4 |
+
|
5 |
+
class NotValidUserException extends \Exception {
|
6 |
+
|
7 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Exceptions/TooManyAttemptsException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions;
|
4 |
+
|
5 |
+
class TooManyAttemptsException extends \Exception {
|
6 |
+
|
7 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentPage.php
DELETED
@@ -1,170 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
-
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
7 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Utilities\AdminNotices\NoticeVO;
|
8 |
-
use FernleafSystems\Wordpress\Services\Services;
|
9 |
-
|
10 |
-
class LoginIntentPage {
|
11 |
-
|
12 |
-
use MfaControllerConsumer;
|
13 |
-
|
14 |
-
public function loadPage() {
|
15 |
-
echo $this->renderPage();
|
16 |
-
}
|
17 |
-
|
18 |
-
public function renderForm() :string {
|
19 |
-
$mfaCon = $this->getMfaCon();
|
20 |
-
/** @var LoginGuard\ModCon $mod */
|
21 |
-
$mod = $mfaCon->getMod();
|
22 |
-
/** @var LoginGuard\Options $opts */
|
23 |
-
$opts = $mfaCon->getOptions();
|
24 |
-
$con = $mfaCon->getCon();
|
25 |
-
$req = Services::Request();
|
26 |
-
$WP = Services::WpGeneral();
|
27 |
-
|
28 |
-
$notice = $con->getAdminNotices()->getFlashNotice();
|
29 |
-
if ( $notice instanceof NoticeVO ) {
|
30 |
-
$msg = $notice->render_data[ 'message' ];
|
31 |
-
}
|
32 |
-
else {
|
33 |
-
$msg = $opts->isChainedAuth() ?
|
34 |
-
__( 'Please supply all authentication codes', 'wp-simple-firewall' )
|
35 |
-
: __( 'Please supply at least 1 authentication code', 'wp-simple-firewall' );
|
36 |
-
}
|
37 |
-
|
38 |
-
if ( !empty( $msg ) && !$con->getModule_SecAdmin()->getWhiteLabelController()->isEnabled() ) {
|
39 |
-
$msg .= sprintf( ' [<a href="%s" target="_blank">%s</a>]', 'https://shsec.io/shieldcantaccess', __( 'More Info', 'wp-simple-firewall' ) );
|
40 |
-
}
|
41 |
-
|
42 |
-
$referUrl = $req->server( 'HTTP_REFERER', '' );
|
43 |
-
if ( strpos( $referUrl, '?' ) ) {
|
44 |
-
list( $referUrl, $referQuery ) = explode( '?', $referUrl, 2 );
|
45 |
-
}
|
46 |
-
else {
|
47 |
-
$referQuery = '';
|
48 |
-
}
|
49 |
-
|
50 |
-
$redirectTo = '';
|
51 |
-
if ( !empty( $referQuery ) ) {
|
52 |
-
parse_str( $referQuery, $aReferQueryItems );
|
53 |
-
if ( !empty( $aReferQueryItems[ 'redirect_to' ] ) ) {
|
54 |
-
$redirectTo = rawurlencode( $aReferQueryItems[ 'redirect_to' ] );
|
55 |
-
}
|
56 |
-
}
|
57 |
-
if ( empty( $redirectTo ) ) {
|
58 |
-
$redirectTo = rawurlencode( $req->post( 'redirect_to', $req->getUri() ) );
|
59 |
-
}
|
60 |
-
|
61 |
-
$cancelHref = $req->post( 'cancel_href', '' );
|
62 |
-
if ( empty( $cancelHref ) && Services::Data()->isValidWebUrl( $referUrl ) ) {
|
63 |
-
$cancelHref = parse_url( $referUrl, PHP_URL_PATH );
|
64 |
-
}
|
65 |
-
|
66 |
-
$nMfaSkip = (int)( $opts->getMfaSkip()/DAY_IN_SECONDS );
|
67 |
-
$timeRemaining = $mfaCon->getLoginIntentExpiresAt() - $req->ts();
|
68 |
-
|
69 |
-
$data = [
|
70 |
-
'strings' => [
|
71 |
-
'cancel' => __( 'Cancel Login', 'wp-simple-firewall' ),
|
72 |
-
'time_remaining' => __( 'Time Remaining', 'wp-simple-firewall' ),
|
73 |
-
'calculating' => __( 'Calculating', 'wp-simple-firewall' ).' ...',
|
74 |
-
'seconds' => strtolower( __( 'Seconds', 'wp-simple-firewall' ) ),
|
75 |
-
'login_expired' => __( 'Login Expired', 'wp-simple-firewall' ),
|
76 |
-
'verify_my_login' => __( 'Verify My Login', 'wp-simple-firewall' ),
|
77 |
-
'message' => $msg,
|
78 |
-
'skip_mfa' => sprintf(
|
79 |
-
__( "Don't ask again on this browser for %s.", 'wp-simple-firewall' ),
|
80 |
-
sprintf( _n( '%s day', '%s days', $nMfaSkip, 'wp-simple-firewall' ), $nMfaSkip )
|
81 |
-
)
|
82 |
-
],
|
83 |
-
'data' => [
|
84 |
-
'login_fields' => array_filter( array_map(
|
85 |
-
function ( $oProvider ) {
|
86 |
-
return $oProvider->getFormField();
|
87 |
-
},
|
88 |
-
$mfaCon->getProvidersForUser( Services::WpUsers()->getCurrentWpUser(), true )
|
89 |
-
) ),
|
90 |
-
'time_remaining' => $timeRemaining,
|
91 |
-
'message_type' => 'info',
|
92 |
-
'login_intent_flag' => $mod->getLoginIntentRequestFlag(),
|
93 |
-
],
|
94 |
-
'hrefs' => [
|
95 |
-
'form_action' => parse_url( $WP->getAdminUrl( '', true ), PHP_URL_PATH ),
|
96 |
-
'redirect_to' => $redirectTo,
|
97 |
-
'cancel_href' => $cancelHref
|
98 |
-
],
|
99 |
-
'flags' => [
|
100 |
-
'can_skip_mfa' => $opts->isMfaSkip(),
|
101 |
-
'show_branded_links' => !$con->getModule_SecAdmin()->getWhiteLabelController()->isEnabled(),
|
102 |
-
]
|
103 |
-
];
|
104 |
-
|
105 |
-
return $mod->renderTemplate(
|
106 |
-
'/snippets/login_intent/form.twig',
|
107 |
-
Services::DataManipulation()->mergeArraysRecursive(
|
108 |
-
$mod->getUIHandler()->getBaseDisplayData(), $data ),
|
109 |
-
true
|
110 |
-
);
|
111 |
-
}
|
112 |
-
|
113 |
-
private function renderPage() :string {
|
114 |
-
$IC = $this->getMfaCon();
|
115 |
-
/** @var LoginGuard\ModCon $mod */
|
116 |
-
$mod = $IC->getMod();
|
117 |
-
$con = $IC->getCon();
|
118 |
-
$req = Services::Request();
|
119 |
-
|
120 |
-
$labels = $con->getLabels();
|
121 |
-
$bannerURL = empty( $labels[ 'url_login2fa_logourl' ] ) ? $con->urls->forImage( 'shield/banner-2FA.png' ) : $labels[ 'url_login2fa_logourl' ];
|
122 |
-
$timeRemaining = $IC->getLoginIntentExpiresAt() - $req->ts();
|
123 |
-
|
124 |
-
$data = [
|
125 |
-
'strings' => [
|
126 |
-
'what_is_this' => __( 'What is this?', 'wp-simple-firewall' ),
|
127 |
-
'page_title' => sprintf( __( '%s Login Verification', 'wp-simple-firewall' ), $con->getHumanName() ),
|
128 |
-
],
|
129 |
-
'data' => [
|
130 |
-
'time_remaining' => $timeRemaining,
|
131 |
-
],
|
132 |
-
'hrefs' => [
|
133 |
-
'css_bootstrap' => $con->urls->forCss( 'bootstrap' ),
|
134 |
-
'js_bootstrap' => $con->urls->forJs( 'bootstrap' ),
|
135 |
-
'shield_logo' => 'https://ps.w.org/wp-simple-firewall/assets/banner-772x250.png',
|
136 |
-
'what_is_this' => 'https://support.getshieldsecurity.com/support/solutions/articles/3000064840',
|
137 |
-
],
|
138 |
-
'imgs' => [
|
139 |
-
'banner' => $bannerURL,
|
140 |
-
'favicon' => $con->urls->forImage( 'pluginlogo_24x24.png' ),
|
141 |
-
],
|
142 |
-
'flags' => [
|
143 |
-
'show_branded_links' => !$con->getModule_SecAdmin()->getWhiteLabelController()->isEnabled(),
|
144 |
-
'has_u2f' => isset( $IC->getProvidersForUser(
|
145 |
-
Services::WpUsers()->getCurrentWpUser(), true )[ LoginGuard\Lib\TwoFactor\Provider\U2F::SLUG ] )
|
146 |
-
],
|
147 |
-
'content' => [
|
148 |
-
'form' => $this->renderForm(),
|
149 |
-
]
|
150 |
-
];
|
151 |
-
|
152 |
-
// Provide the U2F scripts if required.
|
153 |
-
if ( $data[ 'flags' ][ 'has_u2f' ] ) {
|
154 |
-
$data[ 'head' ] = [
|
155 |
-
'scripts' => [
|
156 |
-
[
|
157 |
-
'src' => $con->urls->forJs( 'u2f-bundle.js' ),
|
158 |
-
],
|
159 |
-
[
|
160 |
-
'src' => $con->urls->forJs( 'login/u2f.js' ),
|
161 |
-
]
|
162 |
-
]
|
163 |
-
];
|
164 |
-
}
|
165 |
-
|
166 |
-
return $mod->renderTemplate( '/pages/login_intent/index.twig',
|
167 |
-
Services::DataManipulation()->mergeArraysRecursive(
|
168 |
-
$mod->getUIHandler()->getBaseDisplayData(), $data ), true );
|
169 |
-
}
|
170 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestCapture.php
ADDED
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
7 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions\{
|
8 |
+
CouldNotValidate2FA,
|
9 |
+
LoginCancelException,
|
10 |
+
NoActiveProvidersForUserException,
|
11 |
+
NoLoginIntentForUserException,
|
12 |
+
NotValidUserException,
|
13 |
+
TooManyAttemptsException
|
14 |
+
};
|
15 |
+
use FernleafSystems\Wordpress\Services\Services;
|
16 |
+
|
17 |
+
class LoginIntentRequestCapture extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
18 |
+
|
19 |
+
protected function canRun() :bool {
|
20 |
+
return $this->getCon()->getShieldAction() === 'wp_login_2fa_verify'
|
21 |
+
&& !Services::WpUsers()->isUserLoggedIn();
|
22 |
+
}
|
23 |
+
|
24 |
+
protected function run() {
|
25 |
+
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ], 8 ); // before rename login render
|
26 |
+
}
|
27 |
+
|
28 |
+
public function onWpLoaded() {
|
29 |
+
/** @var LoginGuard\ModCon $mod */
|
30 |
+
$mod = $this->getMod();
|
31 |
+
$mfaCon = $mod->getMfaController();
|
32 |
+
$req = Services::Request();
|
33 |
+
|
34 |
+
$user = $req->post( 'wp_user_id' ) ? Services::WpUsers()->getUserById( $req->post( 'wp_user_id' ) ) : null;
|
35 |
+
|
36 |
+
try {
|
37 |
+
$this->capture();
|
38 |
+
}
|
39 |
+
catch ( LoginCancelException $e ) {
|
40 |
+
$redirect = $req->post( 'cancel_href' );
|
41 |
+
empty( $redirect ) ? Services::Response()->redirectToLogin() : Services::Response()->redirect( $redirect );
|
42 |
+
}
|
43 |
+
catch ( NotValidUserException $e ) {
|
44 |
+
// put error about no login intent
|
45 |
+
Services::Response()->redirectToLogin( [
|
46 |
+
'shield_msg' => 'no_user_login_intent'
|
47 |
+
] );
|
48 |
+
}
|
49 |
+
catch ( NoLoginIntentForUserException $e ) {
|
50 |
+
// put error about no login intent
|
51 |
+
Services::Response()->redirectToLogin( [
|
52 |
+
'shield_msg' => 'no_user_login_intent'
|
53 |
+
] );
|
54 |
+
}
|
55 |
+
catch ( TooManyAttemptsException $e ) {
|
56 |
+
// put error about no login intent
|
57 |
+
Services::Response()->redirectToLogin( [
|
58 |
+
'shield_msg' => 'too_many_attempts'
|
59 |
+
] );
|
60 |
+
}
|
61 |
+
catch ( NoActiveProvidersForUserException $e ) {
|
62 |
+
Services::Response()->redirectToLogin( [
|
63 |
+
'shield_msg' => 'no_providers'
|
64 |
+
] );
|
65 |
+
}
|
66 |
+
catch ( CouldNotValidate2FA $e ) {
|
67 |
+
// Allow a further attempt to 2FA
|
68 |
+
$pageRender = $mfaCon->useLoginIntentPage() ? new Render\RenderLoginIntentPage() : new Render\RenderWpLoginReplica();
|
69 |
+
$pageRender->setMod( $mod )
|
70 |
+
->setWpUser( $user );
|
71 |
+
$pageRender->login_nonce = $req->request( 'login_nonce', false, '' );
|
72 |
+
$pageRender->redirect_to = $req->request( 'redirect_to', false, $req->getPath() );
|
73 |
+
$pageRender->rememberme = $req->request( 'rememberme' );
|
74 |
+
$pageRender->msg_error = __( 'Could not verify your 2FA codes', 'wp-simple-firewall' );
|
75 |
+
$pageRender->render(); // die();
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* @throws CouldNotValidate2FA
|
81 |
+
* @throws Exceptions\TooManyAttemptsException
|
82 |
+
* @throws LoginCancelException
|
83 |
+
* @throws NoActiveProvidersForUserException
|
84 |
+
* @throws NoLoginIntentForUserException
|
85 |
+
* @throws NotValidUserException
|
86 |
+
*/
|
87 |
+
private function capture() {
|
88 |
+
$con = $this->getCon();
|
89 |
+
/** @var LoginGuard\ModCon $mod */
|
90 |
+
$mod = $this->getMod();
|
91 |
+
/** @var LoginGuard\Options $opts */
|
92 |
+
$opts = $this->getOptions();
|
93 |
+
$req = Services::Request();
|
94 |
+
|
95 |
+
if ( $req->post( 'cancel' ) ) {
|
96 |
+
throw new LoginCancelException();
|
97 |
+
}
|
98 |
+
|
99 |
+
$user = Services::WpUsers()->getUserById( $req->post( 'wp_user_id' ) );
|
100 |
+
if ( empty( $user ) ) {
|
101 |
+
throw new NotValidUserException();
|
102 |
+
}
|
103 |
+
|
104 |
+
$nonce = (string)$req->post( 'login_nonce' );
|
105 |
+
if ( !preg_match( '#^[a-z0-9]{10}$#i', $nonce ) ) {
|
106 |
+
throw new NoLoginIntentForUserException();
|
107 |
+
}
|
108 |
+
|
109 |
+
$valid = ( new LoginIntentRequestValidate() )
|
110 |
+
->setMod( $mod )
|
111 |
+
->setWpUser( $user )
|
112 |
+
->run( $nonce );
|
113 |
+
|
114 |
+
if ( $valid ) {
|
115 |
+
wp_set_auth_cookie( $user->ID, (bool)$req->post( 'rememberme' ) );
|
116 |
+
|
117 |
+
if ( $req->post( 'skip_mfa' ) === 'Y' ) {
|
118 |
+
( new MfaSkip() )
|
119 |
+
->setMod( $this->getMod() )
|
120 |
+
->addMfaSkip( $user );
|
121 |
+
}
|
122 |
+
|
123 |
+
$con->fireEvent( '2fa_success' );
|
124 |
+
|
125 |
+
global $interim_login;
|
126 |
+
$interim_login = (bool)$req->request( 'interim-login' );
|
127 |
+
if ( $interim_login ) {
|
128 |
+
add_filter( 'login_message', function () {
|
129 |
+
return '';
|
130 |
+
}, 100, 0 );
|
131 |
+
$renderer = ( new Render\RenderWpLoginReplica() )
|
132 |
+
->setMod( $mod )
|
133 |
+
->setWpUser( $user );
|
134 |
+
$renderer->interim_message = __( '2FA authentication verified successfully.', 'wp-simple-firewall' );
|
135 |
+
$renderer->include_body = false;
|
136 |
+
$renderer->render();
|
137 |
+
}
|
138 |
+
else {
|
139 |
+
$flash = __( 'Success', 'wp-simple-firewall' ).'! '.__( 'Thank you for authenticating your login.', 'wp-simple-firewall' );
|
140 |
+
if ( $opts->isEnabledBackupCodes() ) {
|
141 |
+
$flash .= ' '.__( 'If you used your Backup Code, you will need to reset it.', 'wp-simple-firewall' );
|
142 |
+
}
|
143 |
+
$this->getMod()->setFlashAdminNotice( $flash, $user );
|
144 |
+
}
|
145 |
+
|
146 |
+
$redirect = $req->request( 'redirect_to', false, $req->getPath() );
|
147 |
+
Services::Response()->redirect(
|
148 |
+
apply_filters( 'login_redirect', $redirect, $redirect, $user ),
|
149 |
+
[], true, false
|
150 |
+
);
|
151 |
+
}
|
152 |
+
}
|
153 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginIntentRequestValidate.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Exceptions\{
|
7 |
+
CouldNotValidate2FA,
|
8 |
+
NoActiveProvidersForUserException,
|
9 |
+
NoLoginIntentForUserException,
|
10 |
+
TooManyAttemptsException
|
11 |
+
};
|
12 |
+
|
13 |
+
class LoginIntentRequestValidate {
|
14 |
+
|
15 |
+
use Shield\Modules\ModConsumer;
|
16 |
+
use Shield\Utilities\Consumer\WpUserConsumer;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @throws CouldNotValidate2FA
|
20 |
+
* @throws NoActiveProvidersForUserException
|
21 |
+
* @throws NoLoginIntentForUserException
|
22 |
+
* @throws TooManyAttemptsException
|
23 |
+
*/
|
24 |
+
public function run( string $loginNonce ) :bool {
|
25 |
+
/** @var Shield\Modules\LoginGuard\ModCon $mod */
|
26 |
+
$mod = $this->getMod();
|
27 |
+
$mfaCon = $mod->getMfaController();
|
28 |
+
$user = $this->getWpUser();
|
29 |
+
|
30 |
+
if ( empty( $mfaCon->getActiveLoginIntents( $user )[ $loginNonce ] ) ) {
|
31 |
+
throw new NoLoginIntentForUserException();
|
32 |
+
}
|
33 |
+
|
34 |
+
$providers = $mfaCon->getProvidersForUser( $user, true );
|
35 |
+
if ( empty( $providers ) ) {
|
36 |
+
throw new NoActiveProvidersForUserException();
|
37 |
+
}
|
38 |
+
|
39 |
+
$validated = false;
|
40 |
+
foreach ( $providers as $provider ) {
|
41 |
+
$provider->setUser( $user );
|
42 |
+
if ( $provider->validateLoginIntent( $loginNonce ) ) {
|
43 |
+
$provider->postSuccessActions();
|
44 |
+
$validated = true;
|
45 |
+
break;
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
// Always remove intent after success, otherwise increment attempts.
|
50 |
+
$intents = $mfaCon->getActiveLoginIntents( $user );
|
51 |
+
if ( $validated ) {
|
52 |
+
unset( $intents[ $loginNonce ] );
|
53 |
+
}
|
54 |
+
else {
|
55 |
+
$intents[ $loginNonce ][ 'attempts' ]++;
|
56 |
+
}
|
57 |
+
$this->getCon()->getUserMeta( $user )->login_intents = $intents;
|
58 |
+
|
59 |
+
if ( !$validated ) {
|
60 |
+
if ( empty( $mfaCon->getActiveLoginIntents( $user )[ $loginNonce ] ) ) {
|
61 |
+
throw new TooManyAttemptsException();
|
62 |
+
}
|
63 |
+
throw new CouldNotValidate2FA();
|
64 |
+
}
|
65 |
+
|
66 |
+
return true;
|
67 |
+
}
|
68 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/LoginRequestCapture.php
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
7 |
+
use FernleafSystems\Wordpress\Services\Services;
|
8 |
+
|
9 |
+
class LoginRequestCapture extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
10 |
+
|
11 |
+
use Shield\Utilities\Consumer\WpLoginCapture;
|
12 |
+
|
13 |
+
protected function run() {
|
14 |
+
$this->setupLoginCaptureHooks();
|
15 |
+
}
|
16 |
+
|
17 |
+
protected function captureLogin( \WP_User $user ) {
|
18 |
+
/** @var LoginGuard\ModCon $mod */
|
19 |
+
$mod = $this->getMod();
|
20 |
+
$mfaCon = $mod->getMfaController();
|
21 |
+
if ( $mfaCon->isSubjectToLoginIntent( $user ) && !Services::WpUsers()->isAppPasswordAuth() ) {
|
22 |
+
|
23 |
+
if ( !$this->canUserMfaSkip( $user ) ) {
|
24 |
+
|
25 |
+
foreach ( $mfaCon->getProvidersForUser( $user, true ) as $provider ) {
|
26 |
+
$provider->setUser( $user )
|
27 |
+
->captureLoginAttempt();
|
28 |
+
}
|
29 |
+
|
30 |
+
// login nonce
|
31 |
+
$randStart = rand( 0, 10 );
|
32 |
+
$loginNonce = substr( hash( 'sha256', uniqid( '', true ) ), $randStart, 10 );
|
33 |
+
|
34 |
+
$meta = $this->getCon()->getUserMeta( $user );
|
35 |
+
$intents = $mfaCon->getActiveLoginIntents( $user );
|
36 |
+
$intents[ $loginNonce ] = [
|
37 |
+
'start' => Services::Request()->ts(),
|
38 |
+
'attempts' => 0,
|
39 |
+
];
|
40 |
+
$meta->login_intents = $intents;
|
41 |
+
|
42 |
+
$loggedInCookie = $this->getLoggedInCookie();
|
43 |
+
if ( !empty( $loggedInCookie ) ) {
|
44 |
+
$parsed = \wp_parse_auth_cookie( $loggedInCookie );
|
45 |
+
if ( !empty( $parsed[ 'token' ] ) ) {
|
46 |
+
\WP_Session_Tokens::get_instance( $user->ID )->destroy( $parsed[ 'token' ] );
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
Services::WpUsers()->logoutUser( true );
|
51 |
+
|
52 |
+
$req = Services::Request();
|
53 |
+
$pageRender = $mfaCon->useLoginIntentPage() ? new Render\RenderLoginIntentPage() : new Render\RenderWpLoginReplica();
|
54 |
+
$pageRender->setMod( $mod )
|
55 |
+
->setWpUser( $user );
|
56 |
+
$pageRender->login_nonce = $loginNonce;
|
57 |
+
$pageRender->interim_login = $req->request( 'interim-login' );
|
58 |
+
$pageRender->redirect_to = $req->request( 'redirect_to', false, $req->getPath() );
|
59 |
+
$pageRender->rememberme = $req->request( 'rememberme' );
|
60 |
+
$pageRender->render(); // die();
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
private function canUserMfaSkip( \WP_User $user ) :bool {
|
66 |
+
$canSkip = ( new MfaSkip() )
|
67 |
+
->setMod( $this->getMod() )
|
68 |
+
->canMfaSkip( $user );
|
69 |
+
return (bool)apply_filters( 'shield/2fa_skip', apply_filters( 'odp-shield-2fa_skip', $canSkip ) );
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* We override the trait as we don't want to process the 2fa login on the cookie setting
|
74 |
+
* just the wp_login action. But we DO need to capture the cookie being set here.
|
75 |
+
*
|
76 |
+
* @param string $cookie
|
77 |
+
* @param int $expire
|
78 |
+
* @param int $expiration
|
79 |
+
* @param int $userID
|
80 |
+
*/
|
81 |
+
public function onWpSetLoggedInCookie( $cookie, $expire, $expiration, $userID ) {
|
82 |
+
if ( is_string( $cookie ) ) {
|
83 |
+
$this->setLoggedInCookie( $cookie );
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
protected function getHookPriority() :int {
|
88 |
+
return 15;
|
89 |
+
}
|
90 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaController.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
|
@@ -10,136 +10,109 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
10 |
|
11 |
class MfaController extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
12 |
|
13 |
-
use Shield\Utilities\Consumer\WpLoginCapture;
|
14 |
-
|
15 |
/**
|
16 |
* @var Provider\BaseProvider[]
|
17 |
*/
|
18 |
private $providers;
|
19 |
|
20 |
-
/**
|
21 |
-
* @var LoginIntentPage
|
22 |
-
*/
|
23 |
-
private $loginIntentPageHandler;
|
24 |
-
|
25 |
protected function run() {
|
26 |
-
add_action( 'init', [ $this, 'onWpInit' ] );
|
27 |
-
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ] );
|
28 |
-
$this
|
29 |
-
$this->handleLoginLink();
|
30 |
}
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
$this->assessLoginIntent( $user );
|
36 |
-
}
|
37 |
-
}
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
|
|
45 |
|
46 |
-
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
|
|
|
|
|
|
|
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
foreach ( $providers as $provider ) {
|
57 |
-
$provider->captureLoginAttempt( $user );
|
58 |
-
}
|
59 |
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
65 |
}
|
|
|
66 |
}
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
if ( strpos( $action, '2fa_verify' ) === 0 ) {
|
71 |
-
try {
|
72 |
-
$this->processEmail2faLink();
|
73 |
-
}
|
74 |
-
catch ( \Exception $e ) {
|
75 |
-
wp_die( $e->getMessage() );
|
76 |
-
}
|
77 |
-
}
|
78 |
-
} );
|
79 |
-
}
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
private function processEmail2faLink() {
|
85 |
-
$req = Services::Request();
|
86 |
-
$user = sanitize_user( $req->query( 'user' ) );
|
87 |
-
if ( empty( $user ) ) {
|
88 |
-
throw new \Exception( 'Not valid data.' );
|
89 |
-
}
|
90 |
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
}
|
95 |
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
}
|
100 |
-
if ( !$providers[ Provider\Email::SLUG ]->validateLoginIntent( $user ) ) {
|
101 |
-
throw new \Exception( 'Login validation failed.' );
|
102 |
-
}
|
103 |
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
}
|
108 |
|
109 |
-
if (
|
110 |
-
|
111 |
-
}
|
112 |
-
else {
|
113 |
-
Services::Response()->redirectToAdmin();
|
114 |
}
|
115 |
-
}
|
116 |
|
117 |
-
|
118 |
-
|
119 |
|
120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
|
122 |
-
|
123 |
-
|
124 |
-
}
|
125 |
-
else {
|
126 |
-
$this->destroyLogin( $user );
|
127 |
-
Services::Response()->redirectHere();
|
128 |
-
}
|
129 |
-
}
|
130 |
-
else {
|
131 |
-
// This handles the case where an admin changes a setting while a user is logged-in
|
132 |
-
// So to prevent this, we remove any intent for a user that isn't subject to it right now
|
133 |
-
$this->removeLoginIntent( $user );
|
134 |
-
}
|
135 |
-
}
|
136 |
}
|
137 |
|
138 |
-
|
139 |
-
|
140 |
-
$this->
|
141 |
-
|
142 |
-
|
|
|
143 |
}
|
144 |
|
145 |
/**
|
@@ -168,11 +141,12 @@ class MfaController extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
|
168 |
* @return Provider\BaseProvider[]
|
169 |
*/
|
170 |
public function getProvidersForUser( \WP_User $user, bool $onlyActive = false ) :array {
|
171 |
-
$Ps = array_filter(
|
|
|
172 |
function ( $provider ) use ( $user, $onlyActive ) {
|
173 |
-
|
174 |
-
return $provider->isProviderAvailableToUser(
|
175 |
-
&& ( !$onlyActive || $provider->isProfileActive(
|
176 |
}
|
177 |
);
|
178 |
|
@@ -187,93 +161,6 @@ class MfaController extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
|
187 |
return $Ps;
|
188 |
}
|
189 |
|
190 |
-
/**
|
191 |
-
* hooked to 'init' and only run if a user is logged-in (not on the login request)
|
192 |
-
*/
|
193 |
-
private function processActiveLoginIntent() {
|
194 |
-
/** @var LoginGuard\Options $opts */
|
195 |
-
$opts = $this->getOptions();
|
196 |
-
$con = $this->getCon();
|
197 |
-
$req = Services::Request();
|
198 |
-
$WPResp = Services::Response();
|
199 |
-
$WPUsers = Services::WpUsers();
|
200 |
-
|
201 |
-
// Is 2FA/login-intent submit
|
202 |
-
if ( $req->request( $this->getLoginIntentRequestFlag() ) == 1 ) {
|
203 |
-
|
204 |
-
$user = $WPUsers->getCurrentWpUser();
|
205 |
-
if ( $req->post( 'cancel' ) == 1 ) {
|
206 |
-
$this->destroyLogin( $user );
|
207 |
-
$redirect = $req->post( 'cancel_href' );
|
208 |
-
empty( $redirect ) ? $WPResp->redirectToLogin() : $WPResp->redirect( $redirect );
|
209 |
-
}
|
210 |
-
elseif ( $this->validateLoginIntentRequest() ) {
|
211 |
-
|
212 |
-
if ( $req->post( 'skip_mfa' ) === 'Y' ) {
|
213 |
-
( new MfaSkip() )
|
214 |
-
->setMod( $this->getMod() )
|
215 |
-
->addMfaSkip( $user );
|
216 |
-
}
|
217 |
-
|
218 |
-
$con->fireEvent( '2fa_success' );
|
219 |
-
|
220 |
-
$flash = __( 'Success', 'wp-simple-firewall' ).'! '.__( 'Thank you for authenticating your login.', 'wp-simple-firewall' );
|
221 |
-
if ( $opts->isEnabledBackupCodes() ) {
|
222 |
-
$flash .= ' '.__( 'If you used your Backup Code, you will need to reset it.', 'wp-simple-firewall' ); //TODO::
|
223 |
-
}
|
224 |
-
$this->getMod()->setFlashAdminNotice( $flash );
|
225 |
-
|
226 |
-
$this->removeLoginIntent( $user );
|
227 |
-
|
228 |
-
$redirect = $req->post( 'redirect_to' );
|
229 |
-
empty( $redirect ) ? $WPResp->redirectHere() : $WPResp->redirect( rawurldecode( $redirect ) );
|
230 |
-
}
|
231 |
-
else {
|
232 |
-
$con->getAdminNotices()
|
233 |
-
->addFlash(
|
234 |
-
__( 'One or more of your authentication codes failed or was missing.', 'wp-simple-firewall' ),
|
235 |
-
true
|
236 |
-
);
|
237 |
-
// We don't protect against loops here to prevent bypassing of the login intent page.
|
238 |
-
Services::Response()->redirect( Services::Request()->getUri(), [], true, false );
|
239 |
-
}
|
240 |
-
}
|
241 |
-
elseif ( $opts->isUseLoginIntentPage() ) {
|
242 |
-
$this->getLoginIntentPageHandler()->loadPage();
|
243 |
-
}
|
244 |
-
die();
|
245 |
-
}
|
246 |
-
|
247 |
-
/**
|
248 |
-
* assume that a user is logged in.
|
249 |
-
*/
|
250 |
-
private function validateLoginIntentRequest() :bool {
|
251 |
-
try {
|
252 |
-
$valid = ( new ValidateLoginIntentRequest() )
|
253 |
-
->setMfaController( $this )
|
254 |
-
->run();
|
255 |
-
}
|
256 |
-
catch ( \Exception $e ) {
|
257 |
-
$valid = true;
|
258 |
-
}
|
259 |
-
return $valid;
|
260 |
-
}
|
261 |
-
|
262 |
-
private function canUserMfaSkip( \WP_User $user ) :bool {
|
263 |
-
$canSkip = ( new MfaSkip() )
|
264 |
-
->setMod( $this->getMod() )
|
265 |
-
->canMfaSkip( $user );
|
266 |
-
|
267 |
-
if ( !$canSkip && $this->getCon()->isPremiumActive() && @class_exists( 'WC_Social_Login' ) ) {
|
268 |
-
// custom support for WooCommerce Social login
|
269 |
-
$meta = $this->getCon()->getUserMeta( $user );
|
270 |
-
$canSkip = $meta->wc_social_login_valid ?? false;
|
271 |
-
}
|
272 |
-
|
273 |
-
return (bool)apply_filters( 'icwp_shield_2fa_skip',
|
274 |
-
apply_filters( 'odp-shield-2fa_skip', $canSkip ) );
|
275 |
-
}
|
276 |
-
|
277 |
public function isSubjectToLoginIntent( \WP_User $user ) :bool {
|
278 |
/** @var LoginGuard\ModCon $mod */
|
279 |
$mod = $this->getMod();
|
@@ -286,7 +173,8 @@ class MfaController extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
|
286 |
$user = Services::WpUsers()->getUserById( $userID );
|
287 |
if ( $user instanceof \WP_User ) {
|
288 |
foreach ( $this->getProvidersForUser( $user, true ) as $provider ) {
|
289 |
-
$provider->
|
|
|
290 |
}
|
291 |
$result->success = true;
|
292 |
$result->msg_text = sprintf( __( 'All MFA providers removed from user with ID %s.' ),
|
@@ -301,50 +189,23 @@ class MfaController extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
|
301 |
return $result;
|
302 |
}
|
303 |
|
304 |
-
public function
|
305 |
-
/** @var LoginGuard\Options $opts */
|
306 |
-
$opts = $this->getOptions();
|
307 |
-
$sessCon = $this->getCon()
|
308 |
-
->getModule_Sessions()
|
309 |
-
->getSessionCon();
|
310 |
-
|
311 |
-
$expiresAt = 0;
|
312 |
-
if ( $sessCon->hasSession() && $this->hasLoginIntent( Services::WpUsers()->getCurrentWpUser() ) ) {
|
313 |
-
$expiresAt = Services::Request()
|
314 |
-
->carbon()
|
315 |
-
->setTimestamp( $sessCon->getCurrent()->logged_in_at )
|
316 |
-
->addMinutes( $opts->getLoginIntentMinutes() )->timestamp;
|
317 |
-
}
|
318 |
-
return $expiresAt;
|
319 |
-
}
|
320 |
-
|
321 |
-
private function hasLoginIntent( \WP_User $user ) :bool {
|
322 |
-
return !empty( $this->getCon()->getUserMeta( $user )->login_intents[ $this->getVisitorID() ] );
|
323 |
-
}
|
324 |
-
|
325 |
-
private function getVisitorID() :string {
|
326 |
-
return md5( Services::Request()->getUserAgent().Services::IP()->getRequestIp() );
|
327 |
-
}
|
328 |
-
|
329 |
-
/**
|
330 |
-
* Use this ONLY when the login intent has been successfully verified.
|
331 |
-
* @return $this
|
332 |
-
*/
|
333 |
-
private function removeLoginIntent( $user ) {
|
334 |
$meta = $this->getCon()->getUserMeta( $user );
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
|
|
|
|
345 |
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
}
|
350 |
}
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
|
10 |
|
11 |
class MfaController extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
12 |
|
|
|
|
|
13 |
/**
|
14 |
* @var Provider\BaseProvider[]
|
15 |
*/
|
16 |
private $providers;
|
17 |
|
|
|
|
|
|
|
|
|
|
|
18 |
protected function run() {
|
19 |
+
add_action( 'init', [ $this, 'onWpInit' ] ); // Login Intent handling
|
20 |
+
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ] ); // Profile handling
|
21 |
+
add_filter( 'login_message', [ $this, 'onLoginMessage' ], 11 );
|
|
|
22 |
}
|
23 |
|
24 |
+
private function addToUserStatusColumn() {
|
25 |
+
// Display manually suspended on the user list table; TODO: at auto suspended
|
26 |
+
add_filter( 'shield/user_status_column', function ( array $content, \WP_User $user ) {
|
|
|
|
|
|
|
27 |
|
28 |
+
$last2fa = $this->getCon()->getUserMeta( $user )->record->last_2fa_verified_at;
|
29 |
+
$content[] = sprintf( '<em>%s</em>: %s', __( '2FA At', 'wp-simple-firewall' ),
|
30 |
+
empty( $last2fa ) ? __( 'Never', 'wp-simple-firewall' ) : Services::Request()
|
31 |
+
->carbon()
|
32 |
+
->setTimestamp( $last2fa )
|
33 |
+
->diffForHumans()
|
34 |
+
);
|
35 |
|
36 |
+
$providers = array_map(
|
37 |
+
function ( $provider ) {
|
38 |
+
return $provider->getProviderName();
|
39 |
+
},
|
40 |
+
$this->getProvidersForUser( $user )
|
41 |
+
);
|
42 |
+
$content[] = sprintf( '<em>%s</em>: %s', __( '2FA Providers', 'wp-simple-firewall' ),
|
43 |
+
empty( $providers ) ? __( 'None', 'wp-simple-firewall' ) : implode( ', ', $providers ) );
|
44 |
+
|
45 |
+
return $content;
|
46 |
+
}, 10, 2 );
|
47 |
}
|
48 |
|
49 |
+
/**
|
50 |
+
* We only want to auto send email if:
|
51 |
+
* - email is the only provider
|
52 |
+
* - it's the first time loading the 2FA page (we don't auto-send reloading the page after failure)
|
53 |
+
*/
|
54 |
+
public function isAutoSend2faEmail( \WP_User $user ) :bool {
|
55 |
+
$auto = false;
|
56 |
|
57 |
+
$providers = $this->getProvidersForUser( $user, true );
|
58 |
+
unset( $providers[ Provider\BackupCodes::SLUG ] );
|
|
|
|
|
|
|
59 |
|
60 |
+
/** @var Provider\Email|null $emailProvider */
|
61 |
+
$emailProvider = $providers[ Provider\Email::SLUG ] ?? null;
|
62 |
+
if ( count( $providers ) === 1 && !empty( $emailProvider ) ) {
|
63 |
+
$nonces = array_keys( $this->getActiveLoginIntents( $user ) );
|
64 |
+
$latestNonce = (string)array_pop( $nonces );
|
65 |
+
$auto = !$emailProvider->hasOtpForNonce( $latestNonce );
|
66 |
}
|
67 |
+
return $auto;
|
68 |
}
|
69 |
|
70 |
+
public function onLoginMessage( $msg ) {
|
71 |
+
switch ( (string)Services::Request()->query( 'shield_msg' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
+
case 'too_many_attempts':
|
74 |
+
$shieldMsg = __( 'Too many 2FA verification attempts - please login again.', 'wp-simple-firewall' );
|
75 |
+
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
+
case 'no_user_login_intent':
|
78 |
+
$shieldMsg = __( 'No 2FA login intent found - your login may have expired.', 'wp-simple-firewall' );
|
79 |
+
break;
|
|
|
80 |
|
81 |
+
case 'no_providers':
|
82 |
+
$shieldMsg = __( 'No 2FA login providers found.', 'wp-simple-firewall' );
|
83 |
+
break;
|
|
|
|
|
|
|
|
|
84 |
|
85 |
+
default:
|
86 |
+
$shieldMsg = '';
|
87 |
+
break;
|
88 |
}
|
89 |
|
90 |
+
if ( !empty( $shieldMsg ) ) {
|
91 |
+
$msg = sprintf( '<div id="login_error">%s</div>', esc_html( $shieldMsg ) );
|
|
|
|
|
|
|
92 |
}
|
|
|
93 |
|
94 |
+
return $msg;
|
95 |
+
}
|
96 |
|
97 |
+
public function onWpInit() {
|
98 |
+
( new LoginRequestCapture() )
|
99 |
+
->setMod( $this->getMod() )
|
100 |
+
->execute();
|
101 |
+
( new LoginIntentRequestCapture() )
|
102 |
+
->setMod( $this->getMod() )
|
103 |
+
->execute();
|
104 |
+
}
|
105 |
|
106 |
+
public function useLoginIntentPage() :bool {
|
107 |
+
return $this->getOptions()->isOpt( 'mfa_verify_page', 'custom_shield' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
}
|
109 |
|
110 |
+
public function onWpLoaded() {
|
111 |
+
( new MfaProfilesController() )
|
112 |
+
->setMod( $this->getMod() )
|
113 |
+
->setMfaController( $this ) // TODO: remove
|
114 |
+
->execute();
|
115 |
+
$this->addToUserStatusColumn();
|
116 |
}
|
117 |
|
118 |
/**
|
141 |
* @return Provider\BaseProvider[]
|
142 |
*/
|
143 |
public function getProvidersForUser( \WP_User $user, bool $onlyActive = false ) :array {
|
144 |
+
$Ps = array_filter(
|
145 |
+
$this->getProviders(),
|
146 |
function ( $provider ) use ( $user, $onlyActive ) {
|
147 |
+
$provider->setUser( $user );
|
148 |
+
return $provider->isProviderAvailableToUser()
|
149 |
+
&& ( !$onlyActive || $provider->isProfileActive() );
|
150 |
}
|
151 |
);
|
152 |
|
161 |
return $Ps;
|
162 |
}
|
163 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
public function isSubjectToLoginIntent( \WP_User $user ) :bool {
|
165 |
/** @var LoginGuard\ModCon $mod */
|
166 |
$mod = $this->getMod();
|
173 |
$user = Services::WpUsers()->getUserById( $userID );
|
174 |
if ( $user instanceof \WP_User ) {
|
175 |
foreach ( $this->getProvidersForUser( $user, true ) as $provider ) {
|
176 |
+
$provider->setUser( $user )
|
177 |
+
->remove();
|
178 |
}
|
179 |
$result->success = true;
|
180 |
$result->msg_text = sprintf( __( 'All MFA providers removed from user with ID %s.' ),
|
189 |
return $result;
|
190 |
}
|
191 |
|
192 |
+
public function getActiveLoginIntents( \WP_User $user ) :array {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
$meta = $this->getCon()->getUserMeta( $user );
|
194 |
+
return array_filter(
|
195 |
+
is_array( $meta->login_intents ) ? $meta->login_intents : [],
|
196 |
+
function ( $intent ) {
|
197 |
+
/** @var LoginGuard\Options $opts */
|
198 |
+
$opts = $this->getOptions();
|
199 |
+
|
200 |
+
$active = false;
|
201 |
+
if ( is_array( $intent ) ) {
|
202 |
+
$active = $intent[ 'start' ] > ( Services::Request()->ts() - $opts->getLoginIntentMinutes()*60 )
|
203 |
+
&&
|
204 |
+
$intent[ 'attempts' ] < $opts->getLoginIntentMaxAttempts();
|
205 |
+
}
|
206 |
|
207 |
+
return $active;
|
208 |
+
}
|
209 |
+
);
|
210 |
}
|
211 |
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/MfaProfilesController.php
CHANGED
@@ -2,37 +2,102 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
|
5 |
-
use FernleafSystems\Utilities\Logic\ExecOnce;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield;
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Controller\Assets\Enqueue;
|
|
|
8 |
use FernleafSystems\Wordpress\Services\Services;
|
9 |
|
10 |
-
class MfaProfilesController {
|
11 |
|
12 |
use MfaControllerConsumer;
|
13 |
-
use ExecOnce;
|
14 |
|
15 |
private $rendered = false;
|
16 |
|
17 |
private $isFrontend = false;
|
18 |
|
19 |
protected function run() {
|
20 |
-
$this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
if ( Services::WpUsers()->isUserLoggedIn() ) {
|
|
|
22 |
add_action( 'wp', function () {
|
23 |
$this->enqueueAssets( true );
|
24 |
} );
|
25 |
-
|
|
|
26 |
$this->enqueueAssets( false );
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
}
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
private function enqueueAssets( bool $isFrontend ) {
|
32 |
$this->isFrontend = $isFrontend;
|
33 |
add_filter( 'shield/custom_enqueues', function ( array $enqueues, $hook = '' ) {
|
34 |
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
36 |
$enqueues[ Enqueue::JS ][] = 'shield/userprofile';
|
37 |
$enqueues[ Enqueue::CSS ][] = 'shield/dialog';
|
38 |
$enqueues[ Enqueue::CSS ][] = 'shield/userprofile';
|
@@ -83,24 +148,10 @@ class MfaProfilesController {
|
|
83 |
->render( $attributes );
|
84 |
}
|
85 |
|
|
|
|
|
|
|
86 |
private function addHooks() {
|
87 |
-
|
88 |
-
// shortcode for placing user authentication handling anywhere
|
89 |
-
if ( $this->getMfaCon()->getCon()->isPremiumActive() ) {
|
90 |
-
add_shortcode( 'SHIELD_USER_PROFILE_MFA', function ( $attributes ) {
|
91 |
-
return $this->loadUserProfileMFA( is_array( $attributes ) ? $attributes : [] );
|
92 |
-
} );
|
93 |
-
}
|
94 |
-
|
95 |
-
// Standard WordPress User Profile Editing
|
96 |
-
add_action( 'show_user_profile', function () {
|
97 |
-
$this->addOptionsToUserProfile();
|
98 |
-
}, 7, 0 );
|
99 |
-
add_action( 'edit_user_profile', function ( $user ) {
|
100 |
-
if ( $user instanceof \WP_User ) {
|
101 |
-
$this->addOptionsToUserEditProfile( $user );
|
102 |
-
}
|
103 |
-
} );
|
104 |
}
|
105 |
|
106 |
/**
|
@@ -109,9 +160,9 @@ class MfaProfilesController {
|
|
109 |
*/
|
110 |
public function addOptionsToUserProfile() {
|
111 |
echo $this->loadUserProfileMFA( [
|
112 |
-
'title'=>__( 'Multi-Factor Authentication', 'wp-simple-firewall' ),
|
113 |
'subtitle' => sprintf( __( 'Provided by %s', 'wp-simple-firewall' ),
|
114 |
-
$this->
|
115 |
] );
|
116 |
}
|
117 |
|
@@ -119,24 +170,25 @@ class MfaProfilesController {
|
|
119 |
* ONLY TO BE HOOKED TO USER PROFILE EDIT
|
120 |
*/
|
121 |
public function addOptionsToUserEditProfile( \WP_User $user ) {
|
122 |
-
$
|
123 |
-
|
124 |
-
$
|
125 |
$pluginName = $con->getHumanName();
|
126 |
|
127 |
$providers = array_map(
|
128 |
function ( $provider ) {
|
129 |
return $provider->getProviderName();
|
130 |
},
|
131 |
-
$
|
132 |
);
|
133 |
$this->rendered = true;
|
134 |
|
135 |
-
|
|
|
136 |
'flags' => [
|
137 |
'has_factors' => count( $providers ) > 0,
|
138 |
-
'is_admin_profile' => $
|
139 |
-
'can_remove' => $con->isPluginAdmin() || !$
|
140 |
],
|
141 |
'vars' => [
|
142 |
'user_id' => $user->ID,
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
|
|
|
5 |
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Controller\Assets\Enqueue;
|
7 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
8 |
use FernleafSystems\Wordpress\Services\Services;
|
9 |
|
10 |
+
class MfaProfilesController extends Shield\Modules\Base\Common\ExecOnceModConsumer {
|
11 |
|
12 |
use MfaControllerConsumer;
|
|
|
13 |
|
14 |
private $rendered = false;
|
15 |
|
16 |
private $isFrontend = false;
|
17 |
|
18 |
protected function run() {
|
19 |
+
$con = $this->getCon();
|
20 |
+
|
21 |
+
// shortcode for placing user authentication handling anywhere
|
22 |
+
if ( $con->isPremiumActive() ) {
|
23 |
+
add_shortcode( 'SHIELD_USER_PROFILE_MFA', function ( $attributes ) {
|
24 |
+
return $this->loadUserProfileMFA( is_array( $attributes ) ? $attributes : [] );
|
25 |
+
} );
|
26 |
+
}
|
27 |
+
|
28 |
if ( Services::WpUsers()->isUserLoggedIn() ) {
|
29 |
+
|
30 |
add_action( 'wp', function () {
|
31 |
$this->enqueueAssets( true );
|
32 |
} );
|
33 |
+
|
34 |
+
if ( is_admin() && !Services::WpGeneral()->isAjax() ) {
|
35 |
$this->enqueueAssets( false );
|
36 |
+
|
37 |
+
/** @var LoginGuard\Options $opts */
|
38 |
+
$opts = $this->getOptions();
|
39 |
+
$locations = $opts->getOpt( 'mfa_user_setup_pages' );
|
40 |
+
|
41 |
+
if ( in_array( 'dedicated', $locations ) ) {
|
42 |
+
add_action( $con->prefix( 'admin_submenu' ), function () {
|
43 |
+
$this->addLoginSecurityMenuItem();
|
44 |
+
}, 20 );
|
45 |
+
}
|
46 |
+
|
47 |
+
if ( in_array( 'profile', $locations ) ) {
|
48 |
+
// Standard WordPress User Profile Editing
|
49 |
+
add_action( 'show_user_profile', function () {
|
50 |
+
$this->addOptionsToUserProfile();
|
51 |
+
}, 7, 0 );
|
52 |
+
add_action( 'edit_user_profile', function ( $user ) {
|
53 |
+
if ( $user instanceof \WP_User ) {
|
54 |
+
$this->addOptionsToUserEditProfile( $user );
|
55 |
+
}
|
56 |
+
} );
|
57 |
+
}
|
58 |
+
}
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
private function addLoginSecurityMenuItem() {
|
63 |
+
$con = $this->getCon();
|
64 |
+
add_submenu_page(
|
65 |
+
$con->prefix(),
|
66 |
+
sprintf( '%s - %s', __( 'My Login Security', 'wp-simple-firewall' ), $con->getHumanName() ),
|
67 |
+
__( 'My Login Security', 'wp-simple-firewall' ),
|
68 |
+
'read',
|
69 |
+
$con->prefix( 'my-login-security' ),
|
70 |
+
function () {
|
71 |
+
echo $this->renderMyLoginSecurity();
|
72 |
+
}
|
73 |
+
);
|
74 |
+
}
|
75 |
+
|
76 |
+
private function renderMyLoginSecurity() :string {
|
77 |
+
/** @var LoginGuard\ModCon $mod */
|
78 |
+
$mod = $this->getMod();
|
79 |
+
return $mod->renderTemplate( '/wpadmin_pages/my_login_security/index.twig',
|
80 |
+
Services::DataManipulation()->mergeArraysRecursive(
|
81 |
+
$mod->getUIHandler()->getBaseDisplayData(),
|
82 |
+
[
|
83 |
+
'content' => [
|
84 |
+
'mfa_setup' => $this->loadUserProfileMFA()
|
85 |
+
]
|
86 |
+
]
|
87 |
+
)
|
88 |
+
);
|
89 |
+
}
|
90 |
+
|
91 |
private function enqueueAssets( bool $isFrontend ) {
|
92 |
$this->isFrontend = $isFrontend;
|
93 |
add_filter( 'shield/custom_enqueues', function ( array $enqueues, $hook = '' ) {
|
94 |
|
95 |
+
$isPageWithProfileDisplay = in_array( $hook, [
|
96 |
+
'profile.php',
|
97 |
+
'user-edit.php',
|
98 |
+
'shieldpro_page_icwp-wpsf-my-login-security'
|
99 |
+
] );
|
100 |
+
if ( $this->isFrontend || $isPageWithProfileDisplay ) {
|
101 |
$enqueues[ Enqueue::JS ][] = 'shield/userprofile';
|
102 |
$enqueues[ Enqueue::CSS ][] = 'shield/dialog';
|
103 |
$enqueues[ Enqueue::CSS ][] = 'shield/userprofile';
|
148 |
->render( $attributes );
|
149 |
}
|
150 |
|
151 |
+
/**
|
152 |
+
* @deprecated 14.0
|
153 |
+
*/
|
154 |
private function addHooks() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
}
|
156 |
|
157 |
/**
|
160 |
*/
|
161 |
public function addOptionsToUserProfile() {
|
162 |
echo $this->loadUserProfileMFA( [
|
163 |
+
'title' => __( 'Multi-Factor Authentication', 'wp-simple-firewall' ),
|
164 |
'subtitle' => sprintf( __( 'Provided by %s', 'wp-simple-firewall' ),
|
165 |
+
$this->getCon()->getHumanName() )
|
166 |
] );
|
167 |
}
|
168 |
|
170 |
* ONLY TO BE HOOKED TO USER PROFILE EDIT
|
171 |
*/
|
172 |
public function addOptionsToUserEditProfile( \WP_User $user ) {
|
173 |
+
$con = $this->getCon();
|
174 |
+
/** @var LoginGuard\ModCon $mod */
|
175 |
+
$mod = $this->getMod();
|
176 |
$pluginName = $con->getHumanName();
|
177 |
|
178 |
$providers = array_map(
|
179 |
function ( $provider ) {
|
180 |
return $provider->getProviderName();
|
181 |
},
|
182 |
+
$mod->getMfaController()->getProvidersForUser( $user, true )
|
183 |
);
|
184 |
$this->rendered = true;
|
185 |
|
186 |
+
$isAdmin = Services::WpUsers()->isUserAdmin( $user );
|
187 |
+
echo $mod->renderTemplate( '/admin/user/profile/mfa/remove_for_other_user.twig', [
|
188 |
'flags' => [
|
189 |
'has_factors' => count( $providers ) > 0,
|
190 |
+
'is_admin_profile' => $isAdmin,
|
191 |
+
'can_remove' => $con->isPluginAdmin() || !$isAdmin,
|
192 |
],
|
193 |
'vars' => [
|
194 |
'user_id' => $user->ID,
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Profiles/RenderCustomForms.php
CHANGED
@@ -36,7 +36,8 @@ class RenderCustomForms {
|
|
36 |
$providers = $user instanceof \WP_User ? $mfaCon->getProvidersForUser( $user ) : [];
|
37 |
$providerRenders = $user instanceof \WP_User ?
|
38 |
array_map( function ( $provider ) {
|
39 |
-
return $provider->
|
|
|
40 |
}, $providers )
|
41 |
: [];
|
42 |
|
36 |
$providers = $user instanceof \WP_User ? $mfaCon->getProvidersForUser( $user ) : [];
|
37 |
$providerRenders = $user instanceof \WP_User ?
|
38 |
array_map( function ( $provider ) {
|
39 |
+
return $provider->setUser( $this->getWpUser() )
|
40 |
+
->renderUserProfileCustomForm();
|
41 |
}, $providers )
|
42 |
: [];
|
43 |
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BackupCodes.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
@@ -8,7 +8,6 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
8 |
class BackupCodes extends BaseProvider {
|
9 |
|
10 |
const SLUG = 'backupcode';
|
11 |
-
const BYPASS_MFA = true;
|
12 |
const STANDALONE = false;
|
13 |
|
14 |
public function getProviderName() :string {
|
@@ -24,7 +23,7 @@ class BackupCodes extends BaseProvider {
|
|
24 |
];
|
25 |
}
|
26 |
|
27 |
-
protected function getProviderSpecificRenderData(
|
28 |
return [
|
29 |
'strings' => [
|
30 |
'button_gen_code' => __( 'Generate ONE-Time Backup 2FA Login Code', 'wp-simple-firewall' ),
|
@@ -47,11 +46,9 @@ class BackupCodes extends BaseProvider {
|
|
47 |
];
|
48 |
}
|
49 |
|
50 |
-
/**
|
51 |
-
* @return array
|
52 |
-
*/
|
53 |
public function getFormField() :array {
|
54 |
return [
|
|
|
55 |
'name' => $this->getLoginFormParameter(),
|
56 |
'type' => 'text',
|
57 |
'value' => '',
|
@@ -61,43 +58,30 @@ class BackupCodes extends BaseProvider {
|
|
61 |
];
|
62 |
}
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
*/
|
68 |
-
public function hasValidatedProfile( $user ) {
|
69 |
-
return $this->hasValidSecret( $user );
|
70 |
}
|
71 |
|
72 |
/**
|
73 |
-
* @
|
74 |
-
* @return $this
|
75 |
*/
|
76 |
-
public function postSuccessActions(
|
77 |
-
|
78 |
-
$this->
|
|
|
79 |
return $this;
|
80 |
}
|
81 |
|
82 |
-
protected function processOtp(
|
83 |
-
return
|
84 |
}
|
85 |
|
86 |
/**
|
87 |
-
* @param \WP_User $user
|
88 |
-
* @param string $OTP
|
89 |
-
* @return bool
|
90 |
-
*/
|
91 |
-
private function validateBackupCode( \WP_User $user, $OTP ) :bool {
|
92 |
-
return (bool)wp_check_password( str_replace( '-', '', $OTP ), $this->getSecret( $user ) );
|
93 |
-
}
|
94 |
-
|
95 |
-
/**
|
96 |
-
* @param \WP_User $user
|
97 |
* @return string
|
98 |
*/
|
99 |
-
protected function genNewSecret(
|
100 |
-
return wp_generate_password( 25, false );
|
101 |
}
|
102 |
|
103 |
public function isProviderEnabled() :bool {
|
@@ -107,19 +91,16 @@ class BackupCodes extends BaseProvider {
|
|
107 |
}
|
108 |
|
109 |
/**
|
110 |
-
* @param
|
111 |
-
* @param string $sNewSecret
|
112 |
* @return $this
|
113 |
*/
|
114 |
-
protected function setSecret( $
|
115 |
-
parent::setSecret(
|
116 |
return $this;
|
117 |
}
|
118 |
|
119 |
-
|
120 |
-
|
121 |
-
*/
|
122 |
-
private function sendBackupCodeUsedEmail( \WP_User $user ) {
|
123 |
$this->getMod()
|
124 |
->getEmailProcessor()
|
125 |
->sendEmailWithWrap(
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
8 |
class BackupCodes extends BaseProvider {
|
9 |
|
10 |
const SLUG = 'backupcode';
|
|
|
11 |
const STANDALONE = false;
|
12 |
|
13 |
public function getProviderName() :string {
|
23 |
];
|
24 |
}
|
25 |
|
26 |
+
protected function getProviderSpecificRenderData() :array {
|
27 |
return [
|
28 |
'strings' => [
|
29 |
'button_gen_code' => __( 'Generate ONE-Time Backup 2FA Login Code', 'wp-simple-firewall' ),
|
46 |
];
|
47 |
}
|
48 |
|
|
|
|
|
|
|
49 |
public function getFormField() :array {
|
50 |
return [
|
51 |
+
'slug' => static::SLUG,
|
52 |
'name' => $this->getLoginFormParameter(),
|
53 |
'type' => 'text',
|
54 |
'value' => '',
|
58 |
];
|
59 |
}
|
60 |
|
61 |
+
public function hasValidatedProfile() :bool {
|
62 |
+
$this->setProfileValidated( $this->hasValidSecret() );
|
63 |
+
return parent::hasValidatedProfile();
|
|
|
|
|
|
|
64 |
}
|
65 |
|
66 |
/**
|
67 |
+
* @inheritDoc
|
|
|
68 |
*/
|
69 |
+
public function postSuccessActions() {
|
70 |
+
parent::postSuccessActions();
|
71 |
+
$this->remove();
|
72 |
+
$this->sendBackupCodeUsedEmail();
|
73 |
return $this;
|
74 |
}
|
75 |
|
76 |
+
protected function processOtp( string $otp, string $loginNonce = '' ) :bool {
|
77 |
+
return (bool)wp_check_password( str_replace( '-', '', $otp ), $this->getSecret() );
|
78 |
}
|
79 |
|
80 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
* @return string
|
82 |
*/
|
83 |
+
protected function genNewSecret() {
|
84 |
+
return (string)wp_generate_password( 25, false );
|
85 |
}
|
86 |
|
87 |
public function isProviderEnabled() :bool {
|
91 |
}
|
92 |
|
93 |
/**
|
94 |
+
* @param string $secret
|
|
|
95 |
* @return $this
|
96 |
*/
|
97 |
+
protected function setSecret( $secret ) {
|
98 |
+
parent::setSecret( wp_hash_password( $secret ) );
|
99 |
return $this;
|
100 |
}
|
101 |
|
102 |
+
private function sendBackupCodeUsedEmail() {
|
103 |
+
$user = $this->getUser();
|
|
|
|
|
104 |
$this->getMod()
|
105 |
->getEmailProcessor()
|
106 |
->sendEmailWithWrap(
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/BaseProvider.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
@@ -10,21 +10,17 @@ abstract class BaseProvider {
|
|
10 |
use Modules\ModConsumer;
|
11 |
|
12 |
const SLUG = '';
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Set to true if this provider can be used to validate 2FA even if MFA is active.
|
16 |
-
*/
|
17 |
-
const BYPASS_MFA = false;
|
18 |
-
|
19 |
/**
|
20 |
* Set to true if this provider can be used in isolation. False if there
|
21 |
* must be at least 1 other 2FA provider active alongside it.
|
22 |
*/
|
23 |
const STANDALONE = true;
|
|
|
|
|
24 |
/**
|
25 |
-
*
|
26 |
*/
|
27 |
-
|
28 |
|
29 |
public function __construct() {
|
30 |
}
|
@@ -38,143 +34,127 @@ abstract class BaseProvider {
|
|
38 |
/**
|
39 |
* Assumes this is only called on active profiles
|
40 |
*/
|
41 |
-
public function validateLoginIntent(
|
42 |
$otpSuccess = false;
|
43 |
-
$
|
44 |
-
if ( !empty( $
|
45 |
-
$otpSuccess = $this->processOtp( $
|
46 |
-
$this->
|
47 |
}
|
48 |
return $otpSuccess;
|
49 |
}
|
50 |
|
51 |
/**
|
52 |
-
* @return string|array
|
53 |
*/
|
54 |
-
protected function getSecret(
|
55 |
-
$
|
56 |
-
return empty( $
|
57 |
}
|
58 |
|
59 |
-
|
60 |
-
|
61 |
-
* @return bool
|
62 |
-
*/
|
63 |
-
public function hasValidatedProfile( $user ) {
|
64 |
-
return $this->getCon()->getUserMeta( $user )->{static::SLUG.'_validated'} === true;
|
65 |
}
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
protected function hasValidSecret( \WP_User $user ) {
|
71 |
-
return $this->isSecretValid( $this->getSecret( $user ) );
|
72 |
}
|
73 |
|
74 |
-
protected function isEnforced(
|
75 |
return false;
|
76 |
}
|
77 |
|
78 |
-
public function isProfileActive(
|
79 |
-
return $this->
|
80 |
}
|
81 |
|
82 |
-
public function isProviderAvailableToUser(
|
83 |
return $this->isProviderEnabled();
|
84 |
}
|
85 |
|
86 |
abstract public function isProviderEnabled() :bool;
|
87 |
|
88 |
/**
|
89 |
-
* @
|
90 |
-
* @return bool
|
91 |
-
*/
|
92 |
-
protected function isSecretValid( $secret ) {
|
93 |
-
return !empty( $secret ) && is_string( $secret );
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
* @param \WP_User $user
|
98 |
-
* @return $this
|
99 |
*/
|
100 |
-
|
101 |
-
|
102 |
-
->getUserMeta( $user )->{static::SLUG.'_secret'} = null;
|
103 |
-
return $this;
|
104 |
}
|
105 |
|
106 |
/**
|
107 |
-
* @return
|
108 |
*/
|
109 |
-
public function resetSecret(
|
110 |
-
$
|
111 |
-
$this->setSecret( $
|
112 |
-
return $
|
113 |
}
|
114 |
|
115 |
-
public function remove(
|
116 |
-
$
|
117 |
-
$
|
118 |
-
$this->setProfileValidated( $user, false );
|
119 |
}
|
120 |
|
121 |
/**
|
122 |
-
* @param \WP_User $user
|
123 |
-
* @param bool $validated set true for validated, false for invalidated
|
124 |
* @return $this
|
125 |
*/
|
126 |
-
public function setProfileValidated(
|
127 |
$this->getCon()
|
128 |
-
->getUserMeta( $
|
129 |
return $this;
|
130 |
}
|
131 |
|
132 |
/**
|
133 |
-
* @param
|
134 |
-
* @param string|array $sNewSecret
|
135 |
* @return $this
|
136 |
*/
|
137 |
-
protected function setSecret( $
|
138 |
$this->getCon()
|
139 |
-
->getUserMeta( $
|
140 |
return $this;
|
141 |
}
|
142 |
|
143 |
/**
|
144 |
* @return string|mixed
|
145 |
*/
|
146 |
-
protected function genNewSecret(
|
147 |
return '';
|
148 |
}
|
149 |
|
150 |
-
abstract protected function processOtp(
|
151 |
|
152 |
/**
|
153 |
* Only to be fired if and when Login has been completely verified.
|
154 |
* @return $this
|
155 |
*/
|
156 |
-
public function postSuccessActions(
|
|
|
|
|
157 |
return $this;
|
158 |
}
|
159 |
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
->
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
|
|
|
|
|
|
178 |
$data[ 'flags' ][ 'show_explanatory_text' ] = false;
|
179 |
return $this->getMod()
|
180 |
->renderTemplate(
|
@@ -183,80 +163,53 @@ abstract class BaseProvider {
|
|
183 |
);
|
184 |
}
|
185 |
|
186 |
-
|
187 |
-
return Services::DataManipulation()->mergeArraysRecursive(
|
188 |
-
$this->getCommonData( $user ),
|
189 |
-
$this->getProviderSpecificRenderData( $user )
|
190 |
-
);
|
191 |
-
}
|
192 |
-
|
193 |
-
protected function getProviderSpecificRenderData( \WP_User $user ) :array {
|
194 |
return [];
|
195 |
}
|
196 |
|
197 |
-
|
198 |
-
* @param \WP_User $user
|
199 |
-
*/
|
200 |
-
protected function processRemovalFromAccount( \WP_User $user ) {
|
201 |
-
}
|
202 |
-
|
203 |
-
/**
|
204 |
-
* This MUST only ever be hooked into when the User is looking at their OWN profile,
|
205 |
-
* so we can use "current user" functions. Otherwise we need to be careful of mixing up users.
|
206 |
-
* @param \WP_User $user
|
207 |
-
*/
|
208 |
-
public function handleUserProfileSubmit( \WP_User $user ) {
|
209 |
-
}
|
210 |
-
|
211 |
-
public function captureLoginAttempt( \WP_User $user ) {
|
212 |
}
|
213 |
|
214 |
public function getFormField() :array {
|
215 |
return [];
|
216 |
}
|
217 |
|
218 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
$this->getCon()->fireEvent(
|
220 |
$success ? '2fa_verify_success' : '2fa_verify_fail',
|
221 |
[
|
222 |
'audit_params' => [
|
223 |
-
'user_login' => $
|
224 |
'method' => $this->getProviderName(),
|
225 |
]
|
226 |
]
|
227 |
);
|
228 |
}
|
229 |
|
230 |
-
|
231 |
-
* @param \WP_User $user
|
232 |
-
* @param bool $bIsOtpSuccess
|
233 |
-
* @return $this
|
234 |
-
*/
|
235 |
-
protected function postOtpProcessAction( \WP_User $user, bool $bIsOtpSuccess ) {
|
236 |
-
$this->auditLogin( $user, $bIsOtpSuccess );
|
237 |
-
return $this;
|
238 |
-
}
|
239 |
-
|
240 |
-
/**
|
241 |
-
* @return string
|
242 |
-
*/
|
243 |
-
protected function getLoginFormParameter() {
|
244 |
return $this->getCon()->prefixOption( static::SLUG.'_otp' );
|
245 |
}
|
246 |
|
247 |
-
|
248 |
-
|
249 |
-
*/
|
250 |
-
protected function fetchCodeFromRequest() {
|
251 |
-
return trim( Services::Request()->request( $this->getLoginFormParameter(), false, '' ) );
|
252 |
}
|
253 |
|
254 |
-
protected function getCommonData(
|
|
|
255 |
return [
|
256 |
'flags' => [
|
257 |
-
'has_validated_profile' => $this->hasValidatedProfile(
|
258 |
-
'is_enforced' => $this->isEnforced(
|
259 |
-
'is_profile_active' => $this->isProfileActive(
|
260 |
'user_to_edit_is_admin' => Services::WpUsers()->isUserAdmin( $user ),
|
261 |
'show_explanatory_text' => true
|
262 |
],
|
@@ -269,4 +222,23 @@ abstract class BaseProvider {
|
|
269 |
],
|
270 |
];
|
271 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
}
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
10 |
use Modules\ModConsumer;
|
11 |
|
12 |
const SLUG = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
/**
|
14 |
* Set to true if this provider can be used in isolation. False if there
|
15 |
* must be at least 1 other 2FA provider active alongside it.
|
16 |
*/
|
17 |
const STANDALONE = true;
|
18 |
+
const DEFAULT_SECRET = '';
|
19 |
+
|
20 |
/**
|
21 |
+
* @var \WP_User
|
22 |
*/
|
23 |
+
private $user;
|
24 |
|
25 |
public function __construct() {
|
26 |
}
|
34 |
/**
|
35 |
* Assumes this is only called on active profiles
|
36 |
*/
|
37 |
+
public function validateLoginIntent( string $loginNonce ) :bool {
|
38 |
$otpSuccess = false;
|
39 |
+
$otp = $this->fetchCodeFromRequest();
|
40 |
+
if ( !empty( $otp ) ) {
|
41 |
+
$otpSuccess = $this->processOtp( $otp, $loginNonce );
|
42 |
+
$this->auditLogin( $otpSuccess );
|
43 |
}
|
44 |
return $otpSuccess;
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
+
* @return string|array|mixed
|
49 |
*/
|
50 |
+
protected function getSecret() {
|
51 |
+
$secret = $this->getCon()->getUserMeta( $this->getUser() )->{static::SLUG.'_secret'};
|
52 |
+
return empty( $secret ) ? static::DEFAULT_SECRET : $secret;
|
53 |
}
|
54 |
|
55 |
+
public function hasValidatedProfile() :bool {
|
56 |
+
return $this->getCon()->getUserMeta( $this->getUser() )->{static::SLUG.'_validated'} === true;
|
|
|
|
|
|
|
|
|
57 |
}
|
58 |
|
59 |
+
protected function hasValidSecret() :bool {
|
60 |
+
$secret = $this->getSecret();
|
61 |
+
return !empty( $secret ) && is_string( $secret );
|
|
|
|
|
62 |
}
|
63 |
|
64 |
+
protected function isEnforced() :bool {
|
65 |
return false;
|
66 |
}
|
67 |
|
68 |
+
public function isProfileActive() :bool {
|
69 |
+
return $this->hasValidatedProfile() && $this->isProviderAvailableToUser();
|
70 |
}
|
71 |
|
72 |
+
public function isProviderAvailableToUser() :bool {
|
73 |
return $this->isProviderEnabled();
|
74 |
}
|
75 |
|
76 |
abstract public function isProviderEnabled() :bool;
|
77 |
|
78 |
/**
|
79 |
+
* @deprecated 13.1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
*/
|
81 |
+
protected function isSecretValid() :bool {
|
82 |
+
return false;
|
|
|
|
|
83 |
}
|
84 |
|
85 |
/**
|
86 |
+
* @return mixed
|
87 |
*/
|
88 |
+
public function resetSecret() {
|
89 |
+
$newSecret = $this->genNewSecret();
|
90 |
+
$this->setSecret( $newSecret );
|
91 |
+
return $newSecret;
|
92 |
}
|
93 |
|
94 |
+
public function remove() {
|
95 |
+
$this->getCon()->getUserMeta( $this->getUser() )->{static::SLUG.'_secret'} = null;
|
96 |
+
$this->setProfileValidated( false );
|
|
|
97 |
}
|
98 |
|
99 |
/**
|
|
|
|
|
100 |
* @return $this
|
101 |
*/
|
102 |
+
public function setProfileValidated( bool $validated ) {
|
103 |
$this->getCon()
|
104 |
+
->getUserMeta( $this->getUser() )->{static::SLUG.'_validated'} = $validated;
|
105 |
return $this;
|
106 |
}
|
107 |
|
108 |
/**
|
109 |
+
* @param string|array $secret
|
|
|
110 |
* @return $this
|
111 |
*/
|
112 |
+
protected function setSecret( $secret ) {
|
113 |
$this->getCon()
|
114 |
+
->getUserMeta( $this->getUser() )->{static::SLUG.'_secret'} = $secret;
|
115 |
return $this;
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
* @return string|mixed
|
120 |
*/
|
121 |
+
protected function genNewSecret() {
|
122 |
return '';
|
123 |
}
|
124 |
|
125 |
+
abstract protected function processOtp( string $otp, string $loginNonce = '' ) :bool;
|
126 |
|
127 |
/**
|
128 |
* Only to be fired if and when Login has been completely verified.
|
129 |
* @return $this
|
130 |
*/
|
131 |
+
public function postSuccessActions() {
|
132 |
+
$this->getCon()
|
133 |
+
->getUserMeta( $this->getUser() )->record->last_2fa_verified_at = Services::Request()->ts();
|
134 |
return $this;
|
135 |
}
|
136 |
|
137 |
+
public function renderUserProfileCustomForm() :string {
|
138 |
+
$user = $this->getUser();
|
139 |
+
$data = Services::DataManipulation()->mergeArraysRecursive(
|
140 |
+
[
|
141 |
+
'flags' => [
|
142 |
+
'has_validated_profile' => $this->hasValidatedProfile(),
|
143 |
+
'is_enforced' => $this->isEnforced(),
|
144 |
+
'is_profile_active' => $this->isProfileActive(),
|
145 |
+
'user_to_edit_is_admin' => Services::WpUsers()->isUserAdmin( $user ),
|
146 |
+
'show_explanatory_text' => true
|
147 |
+
],
|
148 |
+
'vars' => [
|
149 |
+
'otp_field_name' => $this->getLoginFormParameter(),
|
150 |
+
],
|
151 |
+
'strings' => [
|
152 |
+
'is_enforced' => __( 'This setting is enforced by your security administrator.', 'wp-simple-firewall' ),
|
153 |
+
'provider_name' => $this->getProviderName()
|
154 |
+
],
|
155 |
+
],
|
156 |
+
$this->getProviderSpecificRenderData()
|
157 |
+
);
|
158 |
$data[ 'flags' ][ 'show_explanatory_text' ] = false;
|
159 |
return $this->getMod()
|
160 |
->renderTemplate(
|
163 |
);
|
164 |
}
|
165 |
|
166 |
+
protected function getProviderSpecificRenderData() :array {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
return [];
|
168 |
}
|
169 |
|
170 |
+
public function captureLoginAttempt() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
}
|
172 |
|
173 |
public function getFormField() :array {
|
174 |
return [];
|
175 |
}
|
176 |
|
177 |
+
public function renderFormFieldForWpLogin() :string {
|
178 |
+
return $this->getMod()->renderTemplate(
|
179 |
+
sprintf( '/components/wplogin_replica/login_field_%s.twig', static::SLUG ),
|
180 |
+
[
|
181 |
+
'field' => $this->getFormField()
|
182 |
+
]
|
183 |
+
);
|
184 |
+
}
|
185 |
+
|
186 |
+
protected function auditLogin( bool $success ) {
|
187 |
$this->getCon()->fireEvent(
|
188 |
$success ? '2fa_verify_success' : '2fa_verify_fail',
|
189 |
[
|
190 |
'audit_params' => [
|
191 |
+
'user_login' => $this->getUser()->user_login,
|
192 |
'method' => $this->getProviderName(),
|
193 |
]
|
194 |
]
|
195 |
);
|
196 |
}
|
197 |
|
198 |
+
protected function getLoginFormParameter() :string {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
return $this->getCon()->prefixOption( static::SLUG.'_otp' );
|
200 |
}
|
201 |
|
202 |
+
protected function fetchCodeFromRequest() :string {
|
203 |
+
return trim( (string)Services::Request()->request( $this->getLoginFormParameter(), false, '' ) );
|
|
|
|
|
|
|
204 |
}
|
205 |
|
206 |
+
protected function getCommonData() :array {
|
207 |
+
$user = $this->getUser();
|
208 |
return [
|
209 |
'flags' => [
|
210 |
+
'has_validated_profile' => $this->hasValidatedProfile(),
|
211 |
+
'is_enforced' => $this->isEnforced(),
|
212 |
+
'is_profile_active' => $this->isProfileActive(),
|
213 |
'user_to_edit_is_admin' => Services::WpUsers()->isUserAdmin( $user ),
|
214 |
'show_explanatory_text' => true
|
215 |
],
|
222 |
],
|
223 |
];
|
224 |
}
|
225 |
+
|
226 |
+
protected function generateSimpleOTP( int $length = 6 ) :string {
|
227 |
+
do {
|
228 |
+
$otp = substr( strtoupper( preg_replace( '#[io01l]#i', '', wp_generate_password( 50, false ) ) ), 0, $length );
|
229 |
+
} while ( strlen( $otp ) !== $length );
|
230 |
+
return $otp;
|
231 |
+
}
|
232 |
+
|
233 |
+
protected function getUser() :\WP_User {
|
234 |
+
return $this->user ?? Services::WpUsers()->getCurrentWpUser();
|
235 |
+
}
|
236 |
+
|
237 |
+
/**
|
238 |
+
* @return $this
|
239 |
+
*/
|
240 |
+
public function setUser( \WP_User $user ) {
|
241 |
+
$this->user = $user;
|
242 |
+
return $this;
|
243 |
+
}
|
244 |
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Email.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
@@ -10,12 +10,6 @@ class Email extends BaseProvider {
|
|
10 |
|
11 |
const SLUG = 'email';
|
12 |
|
13 |
-
private $secretToDelete = '';
|
14 |
-
|
15 |
-
public function captureLoginAttempt( \WP_User $user ) {
|
16 |
-
$this->sendEmailTwoFactorVerify( $user );
|
17 |
-
}
|
18 |
-
|
19 |
public function getJavascriptVars() :array {
|
20 |
return [
|
21 |
'ajax' => [
|
@@ -25,164 +19,119 @@ class Email extends BaseProvider {
|
|
25 |
}
|
26 |
|
27 |
/**
|
28 |
-
*
|
29 |
-
*
|
30 |
*/
|
31 |
-
|
32 |
-
|
33 |
-
$
|
34 |
-
|
35 |
-
$this->storeCodes( $user, $secrets );
|
36 |
-
}
|
37 |
-
return $this;
|
38 |
}
|
39 |
|
40 |
-
protected function processOtp( \WP_User $user, string $otp ) :bool {
|
41 |
-
$valid = false;
|
42 |
-
foreach ( $this->getAllCodes( $user ) as $secret => $expiresAt ) {
|
43 |
-
if ( wp_check_password( $otp, $secret ) ) {
|
44 |
-
$valid = true;
|
45 |
-
$this->secretToDelete = $secret;
|
46 |
-
break;
|
47 |
-
}
|
48 |
-
}
|
49 |
-
return $valid;
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* @return array
|
54 |
-
*/
|
55 |
public function getFormField() :array {
|
|
|
|
|
56 |
return [
|
|
|
57 |
'name' => $this->getLoginFormParameter(),
|
58 |
'type' => 'text',
|
59 |
'value' => $this->fetchCodeFromRequest(),
|
60 |
-
'placeholder' => __( '
|
61 |
'text' => __( 'Email OTP', 'wp-simple-firewall' ),
|
62 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
];
|
64 |
}
|
65 |
|
66 |
-
|
67 |
-
* @inheritDoc
|
68 |
-
*/
|
69 |
-
public function handleUserProfileSubmit( \WP_User $user ) {
|
70 |
-
|
71 |
-
$bWasEnabled = $this->isProfileActive( $user );
|
72 |
-
$bToEnable = Services::Request()->post( 'shield_enable_mfaemail' ) === 'Y';
|
73 |
-
|
74 |
-
$msg = null;
|
75 |
-
$error = false;
|
76 |
-
if ( $bToEnable ) {
|
77 |
-
$this->setProfileValidated( $user );
|
78 |
-
if ( !$bWasEnabled ) {
|
79 |
-
$msg = __( 'Email Two-Factor Authentication has been enabled.', 'wp-simple-firewall' );
|
80 |
-
}
|
81 |
-
}
|
82 |
-
elseif ( $this->isEnforced( $user ) ) {
|
83 |
-
$msg = __( "Email Two-Factor Authentication couldn't be disabled because it is enforced based on your user roles.", 'wp-simple-firewall' );
|
84 |
-
$error = true;
|
85 |
-
}
|
86 |
-
else {
|
87 |
-
$this->setProfileValidated( $user, false );
|
88 |
-
$msg = __( 'Email Two-Factor Authentication has been disabled.', 'wp-simple-firewall' );
|
89 |
-
}
|
90 |
-
|
91 |
-
if ( !empty( $msg ) ) {
|
92 |
-
$this->getMod()->setFlashAdminNotice( $msg, $error );
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
-
public function isProfileActive( \WP_User $user ) :bool {
|
97 |
/** @var LoginGuard\Options $opts */
|
98 |
$opts = $this->getOptions();
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
|
|
102 |
}
|
103 |
|
104 |
-
protected function isEnforced(
|
105 |
/** @var LoginGuard\Options $opts */
|
106 |
$opts = $this->getOptions();
|
107 |
-
return count( array_intersect( $opts->getEmail2FaRoles(), $
|
108 |
}
|
109 |
|
110 |
-
|
111 |
-
* @param string $secret
|
112 |
-
* @return bool
|
113 |
-
*/
|
114 |
-
protected function isSecretValid( $secret ) {
|
115 |
return true;
|
116 |
}
|
117 |
|
118 |
-
|
119 |
-
|
120 |
-
* @return $this
|
121 |
-
*/
|
122 |
-
private function sendEmailTwoFactorVerify( \WP_User $user ) {
|
123 |
$sureCon = $this->getCon()->getModule_Comms()->getSureSendController();
|
124 |
$useSureSend = $sureCon->isEnabled2Fa() && $sureCon->canUserSend( $user );
|
125 |
|
|
|
126 |
try {
|
127 |
-
$code = $this->
|
128 |
-
|
129 |
-
$
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
'
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
Services::IP()->getRequestIp() ),
|
158 |
-
]
|
159 |
]
|
160 |
-
|
|
|
161 |
}
|
162 |
catch ( \Exception $e ) {
|
163 |
-
$sendSuccess = false;
|
164 |
}
|
165 |
|
166 |
-
return $
|
167 |
}
|
168 |
|
169 |
-
private function send2faEmailSureSend(
|
170 |
return ( new SendEmail() )
|
171 |
->setMod( $this->getMod() )
|
172 |
-
->send2FA(
|
173 |
-
$user,
|
174 |
-
$code
|
175 |
-
);
|
176 |
}
|
177 |
|
178 |
-
protected function getProviderSpecificRenderData(
|
179 |
return [
|
180 |
'strings' => [
|
181 |
'label_email_authentication' => __( 'Email Authentication', 'wp-simple-firewall' ),
|
182 |
'title' => __( 'Email Authentication', 'wp-simple-firewall' ),
|
183 |
'description_email_authentication_checkbox' => __( 'Toggle the option to enable/disable email-based login authentication.', 'wp-simple-firewall' ),
|
184 |
-
'provided_by' => sprintf( __( 'Provided by %s', 'wp-simple-firewall' ),
|
185 |
-
|
186 |
]
|
187 |
];
|
188 |
}
|
@@ -193,68 +142,39 @@ class Email extends BaseProvider {
|
|
193 |
return $opts->isEmailAuthenticationActive();
|
194 |
}
|
195 |
|
196 |
-
public function isProviderAvailableToUser(
|
197 |
/** @var LoginGuard\Options $opts */
|
198 |
$opts = $this->getOptions();
|
199 |
-
return parent::isProviderAvailableToUser(
|
200 |
-
&& ( $this->isEnforced(
|
201 |
}
|
202 |
|
203 |
-
private function
|
204 |
-
|
205 |
-
$
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
$this->getLoginFormParameter() => $otp,
|
211 |
-
'shield_nonce_action' => $action,
|
212 |
-
'shield_nonce' => $this->getCon()
|
213 |
-
->nonce_handler->create( $action, $opts->getLoginIntentMinutes()*60 ),
|
214 |
-
],
|
215 |
-
Services::WpGeneral()->getHomeUrl()
|
216 |
-
);
|
217 |
}
|
218 |
|
219 |
-
|
220 |
-
|
221 |
-
* @return string
|
222 |
-
*/
|
223 |
-
private function genNewCode( \WP_User $user ) {
|
224 |
-
/** @var LoginGuard\Options $opts */
|
225 |
-
$opts = $this->getOptions();
|
226 |
-
|
227 |
-
$secrets = $this->getAllCodes( $user );
|
228 |
-
$new = substr( strtoupper( preg_replace( '#io#i', '', wp_generate_password( 30, false ) ) ), 0, 6 );
|
229 |
-
$secrets[ wp_hash_password( $new ) ] = Services::Request()
|
230 |
-
->carbon()
|
231 |
-
->addMinutes( $opts->getLoginIntentMinutes() )->timestamp;
|
232 |
-
|
233 |
-
$this->storeCodes( $user, array_slice( $secrets, -10 ) );
|
234 |
-
return $new;
|
235 |
}
|
236 |
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
return array_filter(
|
244 |
is_array( $secrets ) ? $secrets : [],
|
245 |
-
|
246 |
-
return $ts >= Services::Request()->ts();
|
247 |
-
}
|
248 |
);
|
249 |
}
|
250 |
|
251 |
-
|
252 |
-
|
253 |
-
* @param array $codes
|
254 |
-
* @return $this
|
255 |
-
*/
|
256 |
-
private function storeCodes( \WP_User $user, array $codes ) {
|
257 |
-
return $this->setSecret( $user, $codes );
|
258 |
}
|
259 |
|
260 |
public function getProviderName() :string {
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
10 |
|
11 |
const SLUG = 'email';
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
public function getJavascriptVars() :array {
|
14 |
return [
|
15 |
'ajax' => [
|
19 |
}
|
20 |
|
21 |
/**
|
22 |
+
* If login nonce is provided, the OTP check is stricter and must be the same as that assigned to the nonce.
|
23 |
+
* Otherwise, we just check whether the OTP exists.
|
24 |
*/
|
25 |
+
protected function processOtp( string $otp, string $loginNonce = '' ) :bool {
|
26 |
+
return empty( $loginNonce ) ?
|
27 |
+
in_array( $otp, $this->getAllCodes() )
|
28 |
+
: ( $this->getAllCodes()[ $loginNonce ] ?? '' ) === $otp;
|
|
|
|
|
|
|
29 |
}
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
public function getFormField() :array {
|
32 |
+
/** @var LoginGuard\ModCon $mod */
|
33 |
+
$mod = $this->getMod();
|
34 |
return [
|
35 |
+
'slug' => static::SLUG,
|
36 |
'name' => $this->getLoginFormParameter(),
|
37 |
'type' => 'text',
|
38 |
'value' => $this->fetchCodeFromRequest(),
|
39 |
+
'placeholder' => __( 'A1B2C3', 'wp-simple-firewall' ),
|
40 |
'text' => __( 'Email OTP', 'wp-simple-firewall' ),
|
41 |
+
'description' => __( 'Enter code sent to your email', 'wp-simple-firewall' ),
|
42 |
+
'help_link' => 'https://shsec.io/3t',
|
43 |
+
'size' => 6,
|
44 |
+
'datas' => [
|
45 |
+
'auto_send' => $mod->getMfaController()->isAutoSend2faEmail( $this->getUser() ) ? 1 : 0,
|
46 |
+
'ajax_intent_email_send' => $mod->getAjaxActionData( 'intent_email_send', true ),
|
47 |
+
],
|
48 |
+
'supp' => [
|
49 |
+
'send_email' => __( 'Send OTP Code', 'wp-simple-firewall' ),
|
50 |
+
]
|
51 |
];
|
52 |
}
|
53 |
|
54 |
+
public function hasValidatedProfile() :bool {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
/** @var LoginGuard\Options $opts */
|
56 |
$opts = $this->getOptions();
|
57 |
+
$validated = parent::hasValidatedProfile();
|
58 |
+
$this->setProfileValidated(
|
59 |
+
$this->isEnforced() || ( $validated && $opts->isEnabledEmailAuthAnyUserSet() )
|
60 |
+
);
|
61 |
+
return parent::hasValidatedProfile();
|
62 |
}
|
63 |
|
64 |
+
protected function isEnforced() :bool {
|
65 |
/** @var LoginGuard\Options $opts */
|
66 |
$opts = $this->getOptions();
|
67 |
+
return count( array_intersect( $opts->getEmail2FaRoles(), $this->getUser()->roles ) ) > 0;
|
68 |
}
|
69 |
|
70 |
+
protected function hasValidSecret() :bool {
|
|
|
|
|
|
|
|
|
71 |
return true;
|
72 |
}
|
73 |
|
74 |
+
public function sendEmailTwoFactorVerify( string $loginNonce ) :bool {
|
75 |
+
$user = $this->getUser();
|
|
|
|
|
|
|
76 |
$sureCon = $this->getCon()->getModule_Comms()->getSureSendController();
|
77 |
$useSureSend = $sureCon->isEnabled2Fa() && $sureCon->canUserSend( $user );
|
78 |
|
79 |
+
$success = false;
|
80 |
try {
|
81 |
+
$code = $this->get2faCode( $loginNonce );
|
82 |
+
|
83 |
+
$success = ( $useSureSend && $this->send2faEmailSureSend( $code ) )
|
84 |
+
|| $this->getMod()
|
85 |
+
->getEmailProcessor()
|
86 |
+
->sendEmailWithTemplate(
|
87 |
+
'/email/lp_2fa_email_code',
|
88 |
+
$user->user_email,
|
89 |
+
__( 'Two-Factor Login Verification', 'wp-simple-firewall' ),
|
90 |
+
[
|
91 |
+
'flags' => [
|
92 |
+
'show_login_link' => !$this->getCon()->isRelabelled()
|
93 |
+
],
|
94 |
+
'vars' => [
|
95 |
+
'code' => $code
|
96 |
+
],
|
97 |
+
'hrefs' => [
|
98 |
+
'login_link' => 'https://shsec.io/96',
|
99 |
+
],
|
100 |
+
'strings' => [
|
101 |
+
'someone' => __( 'Someone attempted to login into this WordPress site using your account.', 'wp-simple-firewall' ),
|
102 |
+
'requires' => __( 'Login requires verification with the following code.', 'wp-simple-firewall' ),
|
103 |
+
'verification' => __( 'Verification Code', 'wp-simple-firewall' ),
|
104 |
+
'login_link' => __( 'Why no login link?', 'wp-simple-firewall' ),
|
105 |
+
'details_heading' => __( 'Login Details', 'wp-simple-firewall' ),
|
106 |
+
'details_url' => sprintf( '%s: %s', __( 'URL', 'wp-simple-firewall' ),
|
107 |
+
Services::WpGeneral()->getHomeUrl() ),
|
108 |
+
'details_username' => sprintf( '%s: %s', __( 'Username', 'wp-simple-firewall' ), $user->user_login ),
|
109 |
+
'details_ip' => sprintf( '%s: %s', __( 'IP Address', 'wp-simple-firewall' ),
|
110 |
+
Services::IP()->getRequestIp() ),
|
|
|
|
|
111 |
]
|
112 |
+
]
|
113 |
+
);
|
114 |
}
|
115 |
catch ( \Exception $e ) {
|
|
|
116 |
}
|
117 |
|
118 |
+
return $success;
|
119 |
}
|
120 |
|
121 |
+
private function send2faEmailSureSend( string $code ) :bool {
|
122 |
return ( new SendEmail() )
|
123 |
->setMod( $this->getMod() )
|
124 |
+
->send2FA( $this->getUser(), $code );
|
|
|
|
|
|
|
125 |
}
|
126 |
|
127 |
+
protected function getProviderSpecificRenderData() :array {
|
128 |
return [
|
129 |
'strings' => [
|
130 |
'label_email_authentication' => __( 'Email Authentication', 'wp-simple-firewall' ),
|
131 |
'title' => __( 'Email Authentication', 'wp-simple-firewall' ),
|
132 |
'description_email_authentication_checkbox' => __( 'Toggle the option to enable/disable email-based login authentication.', 'wp-simple-firewall' ),
|
133 |
+
'provided_by' => sprintf( __( 'Provided by %s', 'wp-simple-firewall' ),
|
134 |
+
$this->getCon()->getHumanName() )
|
135 |
]
|
136 |
];
|
137 |
}
|
142 |
return $opts->isEmailAuthenticationActive();
|
143 |
}
|
144 |
|
145 |
+
public function isProviderAvailableToUser() :bool {
|
146 |
/** @var LoginGuard\Options $opts */
|
147 |
$opts = $this->getOptions();
|
148 |
+
return parent::isProviderAvailableToUser()
|
149 |
+
&& ( $this->isEnforced() || $opts->isEnabledEmailAuthAnyUserSet() );
|
150 |
}
|
151 |
|
152 |
+
private function get2faCode( string $loginNonce ) :string {
|
153 |
+
$secrets = $this->getAllCodes();
|
154 |
+
if ( !isset( $secrets[ $loginNonce ] ) ) {
|
155 |
+
$secrets[ $loginNonce ] = $this->generateSimpleOTP();
|
156 |
+
$this->storeCodes( $secrets );
|
157 |
+
}
|
158 |
+
return $secrets[ $loginNonce ];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
}
|
160 |
|
161 |
+
public function hasOtpForNonce( string $loginNonce ) :bool {
|
162 |
+
return isset( $this->getAllCodes()[ $loginNonce ] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
}
|
164 |
|
165 |
+
private function getAllCodes() :array {
|
166 |
+
/** @var LoginGuard\ModCon $mod */
|
167 |
+
$mod = $this->getMod();
|
168 |
+
$mfaCon = $mod->getMfaController();
|
169 |
+
$secrets = $this->getSecret();
|
170 |
+
return array_intersect_key(
|
|
|
171 |
is_array( $secrets ) ? $secrets : [],
|
172 |
+
$mfaCon->getActiveLoginIntents( $this->getUser() )
|
|
|
|
|
173 |
);
|
174 |
}
|
175 |
|
176 |
+
private function storeCodes( array $codes ) {
|
177 |
+
$this->setSecret( $codes );
|
|
|
|
|
|
|
|
|
|
|
178 |
}
|
179 |
|
180 |
public function getProviderName() :string {
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/GoogleAuth.php
CHANGED
@@ -1,8 +1,13 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
5 |
-
use Dolondro\GoogleAuthenticator
|
|
|
|
|
|
|
|
|
|
|
6 |
use FernleafSystems\Utilities\Data\Response\StdResponse;
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
8 |
use FernleafSystems\Wordpress\Plugin\Shield\ShieldNetApi\Tools\GenerateGoogleAuthQrCode;
|
@@ -13,12 +18,12 @@ class GoogleAuth extends BaseProvider {
|
|
13 |
const SLUG = 'ga';
|
14 |
|
15 |
/**
|
16 |
-
* @var
|
17 |
*/
|
18 |
private $oWorkingSecret;
|
19 |
|
20 |
-
public function isProfileActive(
|
21 |
-
return
|
22 |
}
|
23 |
|
24 |
public function getJavascriptVars() :array {
|
@@ -29,16 +34,16 @@ class GoogleAuth extends BaseProvider {
|
|
29 |
];
|
30 |
}
|
31 |
|
32 |
-
protected function getProviderSpecificRenderData(
|
33 |
$con = $this->getCon();
|
34 |
|
35 |
-
$validatedProfile = $this->hasValidatedProfile(
|
36 |
return [
|
37 |
'hrefs' => [
|
38 |
-
'src_chart_url' => $validatedProfile ? '' : $this->getQrImage(
|
39 |
],
|
40 |
'vars' => [
|
41 |
-
'ga_secret' => $validatedProfile ? $this->getSecret(
|
42 |
],
|
43 |
'strings' => [
|
44 |
'enter_auth_app_code' => __( 'Enter 6-digit Code from App', 'wp-simple-firewall' ),
|
@@ -60,9 +65,8 @@ class GoogleAuth extends BaseProvider {
|
|
60 |
];
|
61 |
}
|
62 |
|
63 |
-
|
64 |
-
$secret = $this->getGaSecret(
|
65 |
-
|
66 |
try {
|
67 |
$qrImage = $this->getGaRegisterChartUrl( $secret );
|
68 |
}
|
@@ -74,15 +78,12 @@ class GoogleAuth extends BaseProvider {
|
|
74 |
}
|
75 |
|
76 |
/**
|
77 |
-
* @param GoogleAuthenticator\Secret $secret
|
78 |
-
* @return string
|
79 |
* @throws \Exception
|
80 |
*/
|
81 |
-
private function getGaRegisterChartUrl(
|
82 |
$rawImage = Services::HttpRequest()
|
83 |
->getContent(
|
84 |
-
( new
|
85 |
-
->generateUri( $secret ),
|
86 |
[ 'timeout' => 3 ]
|
87 |
);
|
88 |
if ( empty( $rawImage ) ) {
|
@@ -91,7 +92,7 @@ class GoogleAuth extends BaseProvider {
|
|
91 |
return base64_encode( $rawImage );
|
92 |
}
|
93 |
|
94 |
-
private function getGaRegisterChartUrlShieldNet(
|
95 |
return ( new GenerateGoogleAuthQrCode() )
|
96 |
->setMod( $this->getCon()->getModule_Plugin() )
|
97 |
->getCode(
|
@@ -102,85 +103,43 @@ class GoogleAuth extends BaseProvider {
|
|
102 |
);
|
103 |
}
|
104 |
|
105 |
-
public function
|
106 |
-
$this->
|
107 |
-
|
108 |
-
|
109 |
-
$
|
110 |
-
|
|
|
|
|
111 |
}
|
112 |
|
113 |
-
public function
|
114 |
-
$
|
115 |
-
$
|
116 |
-
if ( $
|
117 |
-
$this->setProfileValidated(
|
118 |
-
$
|
119 |
__( '%s was successfully added to your account.', 'wp-simple-firewall' ),
|
120 |
__( 'Google Authenticator', 'wp-simple-firewall' )
|
121 |
);
|
122 |
}
|
123 |
else {
|
124 |
-
$this->resetSecret(
|
125 |
-
$
|
126 |
-
|
127 |
-
}
|
128 |
-
return $response;
|
129 |
-
}
|
130 |
-
|
131 |
-
/**
|
132 |
-
* @param \WP_User $user
|
133 |
-
* @return $this
|
134 |
-
*/
|
135 |
-
protected function processRemovalFromAccount( \WP_User $user ) {
|
136 |
-
$this->setProfileValidated( $user, false )
|
137 |
-
->resetSecret( $user );
|
138 |
-
return $this;
|
139 |
-
}
|
140 |
-
|
141 |
-
/**
|
142 |
-
* @inheritDoc
|
143 |
-
*/
|
144 |
-
public function handleUserProfileSubmit( \WP_User $user ) {
|
145 |
-
$otp = $this->fetchCodeFromRequest();
|
146 |
-
|
147 |
-
if ( Services::Request()->post( 'shield_turn_off_ga' ) === 'Y' ) {
|
148 |
-
$flash = __( 'Google Authenticator was successfully removed from the account.', 'wp-simple-firewall' );
|
149 |
-
$this->processRemovalFromAccount( $user );
|
150 |
-
$this->getMod()->setFlashAdminNotice( $flash );
|
151 |
-
/**
|
152 |
-
* $flash = __( 'An email has been sent to you in order to confirm Google Authenticator removal', 'wp-simple-firewall' );
|
153 |
-
* $flash = __( 'We tried to send an email for you to confirm Google Authenticator removal but it failed.', 'wp-simple-firewall' );
|
154 |
-
*/
|
155 |
-
}
|
156 |
-
elseif ( !empty( $otp ) && !$this->hasValidatedProfile( $user ) ) { // Add GA to profile
|
157 |
-
$validOTP = $this->processOtp( $user, $otp );
|
158 |
-
if ( $validOTP ) {
|
159 |
-
$this->setProfileValidated( $user );
|
160 |
-
$flash = sprintf(
|
161 |
-
__( '%s was successfully added to your account.', 'wp-simple-firewall' ),
|
162 |
-
__( 'Google Authenticator', 'wp-simple-firewall' )
|
163 |
-
);
|
164 |
-
}
|
165 |
-
else {
|
166 |
-
$this->resetSecret( $user );
|
167 |
-
$flash = __( 'One Time Password (OTP) was not valid.', 'wp-simple-firewall' )
|
168 |
-
.' '.__( 'Please try again.', 'wp-simple-firewall' );
|
169 |
-
}
|
170 |
-
$this->getMod()->setFlashAdminNotice( $flash, !$validOTP );
|
171 |
}
|
|
|
172 |
}
|
173 |
|
174 |
-
/**
|
175 |
-
* @return array
|
176 |
-
*/
|
177 |
public function getFormField() :array {
|
178 |
return [
|
|
|
179 |
'name' => $this->getLoginFormParameter(),
|
180 |
'type' => 'text',
|
181 |
'value' => '',
|
182 |
-
'placeholder' => __( '
|
183 |
-
'text' => __( '
|
|
|
184 |
'help_link' => 'https://shsec.io/wpsf42',
|
185 |
'extras' => [
|
186 |
'onkeyup' => "this.value=this.value.replace(/[^\d]/g,'')"
|
@@ -188,52 +147,36 @@ class GoogleAuth extends BaseProvider {
|
|
188 |
];
|
189 |
}
|
190 |
|
191 |
-
protected function processOtp(
|
192 |
-
return $this->validateGaCode( $user, $otp );
|
193 |
-
}
|
194 |
-
|
195 |
-
/**
|
196 |
-
* @param \WP_User $user
|
197 |
-
* @param string $otp
|
198 |
-
* @return bool
|
199 |
-
*/
|
200 |
-
public function validateGaCode( \WP_User $user, string $otp ) :bool {
|
201 |
$valid = false;
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
catch ( \Psr\Cache\CacheException $e ) {
|
210 |
-
}
|
211 |
}
|
212 |
return $valid;
|
213 |
}
|
214 |
|
215 |
/**
|
216 |
-
* @param \WP_User $user
|
217 |
* @return string
|
218 |
*/
|
219 |
-
protected function genNewSecret(
|
220 |
try {
|
221 |
-
return $this->getGaSecret(
|
222 |
}
|
223 |
catch ( \InvalidArgumentException $e ) {
|
224 |
return '';
|
225 |
}
|
226 |
}
|
227 |
|
228 |
-
|
229 |
-
* @param \WP_User $user
|
230 |
-
* @return GoogleAuthenticator\Secret
|
231 |
-
*/
|
232 |
-
private function getGaSecret( $user ) {
|
233 |
if ( !isset( $this->oWorkingSecret ) ) {
|
234 |
-
$this->oWorkingSecret = ( new
|
235 |
->create(
|
236 |
-
sanitize_user( $
|
237 |
preg_replace( '#[^0-9a-z]#i', '', Services::WpGeneral()->getSiteName() )
|
238 |
);
|
239 |
}
|
@@ -241,20 +184,16 @@ class GoogleAuth extends BaseProvider {
|
|
241 |
}
|
242 |
|
243 |
/**
|
244 |
-
* @
|
245 |
-
* @return string
|
246 |
*/
|
247 |
-
protected function getSecret(
|
248 |
-
$
|
249 |
-
return empty( $
|
250 |
}
|
251 |
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
*/
|
256 |
-
protected function isSecretValid( $secret ) {
|
257 |
-
return parent::isSecretValid( $secret ) && ( strlen( $secret ) == 16 );
|
258 |
}
|
259 |
|
260 |
public function isProviderEnabled() :bool {
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
5 |
+
use Dolondro\GoogleAuthenticator\{
|
6 |
+
GoogleAuthenticator,
|
7 |
+
QrImageGenerator\GoogleQrImageGenerator,
|
8 |
+
Secret,
|
9 |
+
SecretFactory
|
10 |
+
};
|
11 |
use FernleafSystems\Utilities\Data\Response\StdResponse;
|
12 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
13 |
use FernleafSystems\Wordpress\Plugin\Shield\ShieldNetApi\Tools\GenerateGoogleAuthQrCode;
|
18 |
const SLUG = 'ga';
|
19 |
|
20 |
/**
|
21 |
+
* @var Secret
|
22 |
*/
|
23 |
private $oWorkingSecret;
|
24 |
|
25 |
+
public function isProfileActive() :bool {
|
26 |
+
return $this->hasValidSecret() && $this->hasValidatedProfile();
|
27 |
}
|
28 |
|
29 |
public function getJavascriptVars() :array {
|
34 |
];
|
35 |
}
|
36 |
|
37 |
+
protected function getProviderSpecificRenderData() :array {
|
38 |
$con = $this->getCon();
|
39 |
|
40 |
+
$validatedProfile = $this->hasValidatedProfile();
|
41 |
return [
|
42 |
'hrefs' => [
|
43 |
+
'src_chart_url' => $validatedProfile ? '' : $this->getQrImage(),
|
44 |
],
|
45 |
'vars' => [
|
46 |
+
'ga_secret' => $validatedProfile ? $this->getSecret() : $this->resetSecret(),
|
47 |
],
|
48 |
'strings' => [
|
49 |
'enter_auth_app_code' => __( 'Enter 6-digit Code from App', 'wp-simple-firewall' ),
|
65 |
];
|
66 |
}
|
67 |
|
68 |
+
private function getQrImage() :string {
|
69 |
+
$secret = $this->getGaSecret();
|
|
|
70 |
try {
|
71 |
$qrImage = $this->getGaRegisterChartUrl( $secret );
|
72 |
}
|
78 |
}
|
79 |
|
80 |
/**
|
|
|
|
|
81 |
* @throws \Exception
|
82 |
*/
|
83 |
+
private function getGaRegisterChartUrl( Secret $secret ) :string {
|
84 |
$rawImage = Services::HttpRequest()
|
85 |
->getContent(
|
86 |
+
( new GoogleQrImageGenerator() )->generateUri( $secret ),
|
|
|
87 |
[ 'timeout' => 3 ]
|
88 |
);
|
89 |
if ( empty( $rawImage ) ) {
|
92 |
return base64_encode( $rawImage );
|
93 |
}
|
94 |
|
95 |
+
private function getGaRegisterChartUrlShieldNet( Secret $secret ) :string {
|
96 |
return ( new GenerateGoogleAuthQrCode() )
|
97 |
->setMod( $this->getCon()->getModule_Plugin() )
|
98 |
->getCode(
|
103 |
);
|
104 |
}
|
105 |
|
106 |
+
public function removeGA() :StdResponse {
|
107 |
+
$this->setProfileValidated( false )
|
108 |
+
->resetSecret();
|
109 |
+
|
110 |
+
$r = new StdResponse();
|
111 |
+
$r->success = true;
|
112 |
+
$r->msg_text = __( 'Google Authenticator was successfully removed from the account.', 'wp-simple-firewall' );
|
113 |
+
return $r;
|
114 |
}
|
115 |
|
116 |
+
public function activateGA( string $otp ) :StdResponse {
|
117 |
+
$r = new StdResponse();
|
118 |
+
$r->success = $this->processOtp( $otp, '' );
|
119 |
+
if ( $r->success ) {
|
120 |
+
$this->setProfileValidated( true );
|
121 |
+
$r->msg_text = sprintf(
|
122 |
__( '%s was successfully added to your account.', 'wp-simple-firewall' ),
|
123 |
__( 'Google Authenticator', 'wp-simple-firewall' )
|
124 |
);
|
125 |
}
|
126 |
else {
|
127 |
+
$this->resetSecret();
|
128 |
+
$r->error_text = __( 'One Time Password (OTP) was not valid.', 'wp-simple-firewall' )
|
129 |
+
.' '.__( 'Please try again.', 'wp-simple-firewall' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
}
|
131 |
+
return $r;
|
132 |
}
|
133 |
|
|
|
|
|
|
|
134 |
public function getFormField() :array {
|
135 |
return [
|
136 |
+
'slug' => static::SLUG,
|
137 |
'name' => $this->getLoginFormParameter(),
|
138 |
'type' => 'text',
|
139 |
'value' => '',
|
140 |
+
'placeholder' => __( '123456', 'wp-simple-firewall' ),
|
141 |
+
'text' => __( 'Authenticator OTP', 'wp-simple-firewall' ),
|
142 |
+
'description' => __( 'Enter 6-digit code from your authenticator app', 'wp-simple-firewall' ),
|
143 |
'help_link' => 'https://shsec.io/wpsf42',
|
144 |
'extras' => [
|
145 |
'onkeyup' => "this.value=this.value.replace(/[^\d]/g,'')"
|
147 |
];
|
148 |
}
|
149 |
|
150 |
+
protected function processOtp( string $otp, string $loginNonce = '' ) :bool {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
$valid = false;
|
152 |
+
try {
|
153 |
+
$valid = preg_match( '#^[0-9]{6}$#', $otp )
|
154 |
+
&& ( new GoogleAuthenticator() )->authenticate( $this->getSecret(), $otp );
|
155 |
+
}
|
156 |
+
catch ( \Exception $e ) {
|
157 |
+
}
|
158 |
+
catch ( \Psr\Cache\CacheException $e ) {
|
|
|
|
|
159 |
}
|
160 |
return $valid;
|
161 |
}
|
162 |
|
163 |
/**
|
|
|
164 |
* @return string
|
165 |
*/
|
166 |
+
protected function genNewSecret() {
|
167 |
try {
|
168 |
+
return $this->getGaSecret()->getSecretKey();
|
169 |
}
|
170 |
catch ( \InvalidArgumentException $e ) {
|
171 |
return '';
|
172 |
}
|
173 |
}
|
174 |
|
175 |
+
private function getGaSecret() :Secret {
|
|
|
|
|
|
|
|
|
176 |
if ( !isset( $this->oWorkingSecret ) ) {
|
177 |
+
$this->oWorkingSecret = ( new SecretFactory() )
|
178 |
->create(
|
179 |
+
sanitize_user( $this->getUser()->user_login ),
|
180 |
preg_replace( '#[^0-9a-z]#i', '', Services::WpGeneral()->getSiteName() )
|
181 |
);
|
182 |
}
|
184 |
}
|
185 |
|
186 |
/**
|
187 |
+
* @inheritDoc
|
|
|
188 |
*/
|
189 |
+
protected function getSecret() {
|
190 |
+
$secret = parent::getSecret();
|
191 |
+
return empty( $secret ) ? $this->resetSecret() : $secret;
|
192 |
}
|
193 |
|
194 |
+
protected function hasValidSecret() :bool {
|
195 |
+
$secret = $this->getSecret();
|
196 |
+
return is_string( $secret ) && strlen( $secret ) === 16;
|
|
|
|
|
|
|
197 |
}
|
198 |
|
199 |
public function isProviderEnabled() :bool {
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/ProviderInterface.php
DELETED
@@ -1,55 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
-
|
5 |
-
interface ProviderInterface {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* Fired by Login Intent controller when capturing a login intent
|
9 |
-
*/
|
10 |
-
public function captureLoginAttempt();
|
11 |
-
|
12 |
-
/**
|
13 |
-
* @return array
|
14 |
-
*/
|
15 |
-
public function getFormField();
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @return bool
|
19 |
-
*/
|
20 |
-
public function validateLoginIntent();
|
21 |
-
|
22 |
-
/**
|
23 |
-
* @return bool
|
24 |
-
*/
|
25 |
-
public function isEnforced();
|
26 |
-
|
27 |
-
/**
|
28 |
-
* @return bool
|
29 |
-
*/
|
30 |
-
public function isProfileActive();
|
31 |
-
|
32 |
-
/**
|
33 |
-
* @return bool
|
34 |
-
*/
|
35 |
-
public function isProviderAvailableToUser();
|
36 |
-
|
37 |
-
/**
|
38 |
-
* @return bool
|
39 |
-
*/
|
40 |
-
public function isProviderEnabled();
|
41 |
-
|
42 |
-
/**
|
43 |
-
* This MUST only ever be hooked into when the User is looking at their OWN profile,
|
44 |
-
* so we can use "current user" functions. Otherwise we need to be careful of mixing up users.
|
45 |
-
* @return string
|
46 |
-
*/
|
47 |
-
public function handleUserProfileSubmit();
|
48 |
-
|
49 |
-
/**
|
50 |
-
* This MUST only ever be hooked into when the User is looking at their OWN profile, so we can use "current user"
|
51 |
-
* functions. Otherwise we need to be careful of mixing up users.
|
52 |
-
* @return string
|
53 |
-
*/
|
54 |
-
public function renderUserProfileOptions();
|
55 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Sms.php
ADDED
@@ -0,0 +1,199 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\ShieldNetApi\Sms\GetAvailableCountries;
|
7 |
+
use FernleafSystems\Wordpress\Plugin\Shield\ShieldNetApi\SureSend\SendSms;
|
8 |
+
|
9 |
+
class Sms extends BaseProvider {
|
10 |
+
|
11 |
+
const SLUG = 'sms';
|
12 |
+
|
13 |
+
public function getJavascriptVars() :array {
|
14 |
+
return [
|
15 |
+
'ajax' => [
|
16 |
+
'user_sms2fa_add' => $this->getMod()->getAjaxActionData( 'user_sms2fa_add' ),
|
17 |
+
'user_sms2fa_verify' => $this->getMod()->getAjaxActionData( 'user_sms2fa_verify' ),
|
18 |
+
'user_sms2fa_remove' => $this->getMod()->getAjaxActionData( 'user_sms2fa_remove' ),
|
19 |
+
],
|
20 |
+
];
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* @throws \Exception
|
25 |
+
*/
|
26 |
+
public function verifyProvisionalRegistration( string $country, string $phone, string $code ) :bool {
|
27 |
+
$user = $this->getUser();
|
28 |
+
$meta = $this->getCon()->getUserMeta( $user );
|
29 |
+
$reg = is_array( $meta->sms_registration ) ? $meta->sms_registration : [];
|
30 |
+
|
31 |
+
if ( @$reg[ 'country' ] === $country && @$reg[ 'phone' ] === $phone
|
32 |
+
&& ( $reg[ 'verified' ] ?? false ) ) {
|
33 |
+
throw new \Exception( 'This Phone number is already added and verified' );
|
34 |
+
}
|
35 |
+
if ( empty( $reg[ 'code' ] ) ) {
|
36 |
+
throw new \Exception( "The verification code couldn't be verified because the profile wasn't ready." );
|
37 |
+
}
|
38 |
+
if ( $reg[ 'code' ] !== trim( strtoupper( $code ) ) ) {
|
39 |
+
throw new \Exception( "The verification code provided wasn't correct." );
|
40 |
+
}
|
41 |
+
|
42 |
+
$meta->sms_registration = [
|
43 |
+
'country' => $country,
|
44 |
+
'phone' => $phone,
|
45 |
+
'verified' => true,
|
46 |
+
];
|
47 |
+
|
48 |
+
$this->setProfileValidated( true );
|
49 |
+
|
50 |
+
return true;
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @throws \Exception
|
55 |
+
*/
|
56 |
+
public function addProvisionalRegistration( string $country, string $phone ) :string {
|
57 |
+
$user = $this->getUser();
|
58 |
+
$meta = $this->getCon()->getUserMeta( $user );
|
59 |
+
$reg = is_array( $meta->sms_registration ) ? $meta->sms_registration : [];
|
60 |
+
|
61 |
+
$country = strtoupper( $country );
|
62 |
+
|
63 |
+
if ( !preg_match( '#^[0-9]{7,15}$#', $phone ) ) {
|
64 |
+
throw new \Exception( 'Phone numbers should contain only digits (0-9) and be no more than 15 digits in length.' );
|
65 |
+
}
|
66 |
+
if ( !preg_match( '#^[A-Z]{2}$#', $country ) ) {
|
67 |
+
throw new \Exception( 'Invalid country selected.' ); // TODO: Verify against official countries
|
68 |
+
}
|
69 |
+
|
70 |
+
if ( @$reg[ 'country' ] === $country && @$reg[ 'phone' ] === $phone
|
71 |
+
&& ( $reg[ 'verified' ] ?? false ) ) {
|
72 |
+
throw new \Exception( 'This phone number is already verified' );
|
73 |
+
}
|
74 |
+
|
75 |
+
$this->setProfileValidated( false );
|
76 |
+
|
77 |
+
$meta->sms_registration = [
|
78 |
+
'country' => $country,
|
79 |
+
'phone' => $phone,
|
80 |
+
'code' => $this->generateSimpleOTP(),
|
81 |
+
'verified' => false,
|
82 |
+
];
|
83 |
+
|
84 |
+
( new SendSms() )
|
85 |
+
->setMod( $this->getMod() )
|
86 |
+
->send2FA( $user, $meta->sms_registration[ 'code' ] );
|
87 |
+
|
88 |
+
return $meta->sms_registration[ 'code' ];
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* @throws \Exception
|
93 |
+
*/
|
94 |
+
public function startLoginIntent() {
|
95 |
+
$user = $this->getUser();
|
96 |
+
$meta = $this->getCon()->getUserMeta( $user );
|
97 |
+
|
98 |
+
$reg = $meta->sms_registration;
|
99 |
+
$reg[ 'code' ] = $this->generateSimpleOTP();
|
100 |
+
$meta->sms_registration = $reg;
|
101 |
+
|
102 |
+
( new SendSms() )
|
103 |
+
->setMod( $this->getMod() )
|
104 |
+
->send2FA( $user, $meta->sms_registration[ 'code' ] );
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* @inheritDoc
|
109 |
+
*/
|
110 |
+
public function postSuccessActions() {
|
111 |
+
parent::postSuccessActions();
|
112 |
+
$meta = $this->getCon()->getUserMeta( $this->getUser() );
|
113 |
+
$reg = $meta->sms_registration;
|
114 |
+
unset( $reg[ 'code' ] );
|
115 |
+
$meta->sms_registration = $reg;
|
116 |
+
return $this;
|
117 |
+
}
|
118 |
+
|
119 |
+
protected function processOtp( string $otp, string $loginNonce = '' ) :bool {
|
120 |
+
$meta = $this->getCon()->getUserMeta( $this->getUser() );
|
121 |
+
return !empty( $meta->sms_registration[ 'code' ] )
|
122 |
+
&& $meta->sms_registration[ 'code' ] === strtoupper( $otp );
|
123 |
+
}
|
124 |
+
|
125 |
+
public function getFormField() :array {
|
126 |
+
return [
|
127 |
+
'slug' => static::SLUG,
|
128 |
+
'name' => $this->getLoginFormParameter(),
|
129 |
+
'type' => 'button',
|
130 |
+
'value' => 'Click To Send 2FA Code via SMS',
|
131 |
+
'placeholder' => '',
|
132 |
+
'text' => 'SMS Authentication',
|
133 |
+
'classes' => [ 'btn', 'btn-light' ],
|
134 |
+
'help_link' => '',
|
135 |
+
'datas' => [
|
136 |
+
'ajax_intent_sms_send' => $this->getMod()->getAjaxActionData( 'intent_sms_send', true ),
|
137 |
+
'input_otp' => $this->getLoginFormParameter(),
|
138 |
+
]
|
139 |
+
];
|
140 |
+
}
|
141 |
+
|
142 |
+
protected function hasValidSecret() :bool {
|
143 |
+
return true;
|
144 |
+
}
|
145 |
+
|
146 |
+
public function remove() {
|
147 |
+
$this->getCon()->getUserMeta( $this->getUser() )->sms_registration = [];
|
148 |
+
parent::remove();
|
149 |
+
}
|
150 |
+
|
151 |
+
protected function getProviderSpecificRenderData() :array {
|
152 |
+
$user = $this->getUser();
|
153 |
+
$countries = ( new GetAvailableCountries() )
|
154 |
+
->setMod( $this->getMod() )
|
155 |
+
->run();
|
156 |
+
|
157 |
+
$validatedNumber = '';
|
158 |
+
if ( $this->hasValidatedProfile() ) {
|
159 |
+
$smsReg = $this->getCon()->getUserMeta( $user )->sms_registration;
|
160 |
+
$validatedNumber = sprintf( '[%s] (+%s) %s',
|
161 |
+
$smsReg[ 'country' ], $countries[ $smsReg[ 'country' ] ][ 'code' ], $smsReg[ 'phone' ] );
|
162 |
+
}
|
163 |
+
|
164 |
+
return [
|
165 |
+
'flags' => [
|
166 |
+
'has_countries' => !empty( $countries ),
|
167 |
+
'is_validated' => $this->isProfileActive()
|
168 |
+
],
|
169 |
+
'strings' => [
|
170 |
+
'label_email_authentication' => __( 'SMS Authentication', 'wp-simple-firewall' ),
|
171 |
+
'title' => __( 'SMS Authentication', 'wp-simple-firewall' ),
|
172 |
+
'provide_full_phone_number' => __( 'Provide Your Full Mobile Telephone Number', 'wp-simple-firewall' ),
|
173 |
+
'description_sms_auth_submit' => __( 'Verifying your number will send an SMS to your phone with a verification code.', 'wp-simple-firewall' )
|
174 |
+
.' '.__( 'This will consume your SMS credits, if available, just as with any standard 2FA SMS.', 'wp-simple-firewall' ),
|
175 |
+
'provided_by' => sprintf( __( 'Provided by %s', 'wp-simple-firewall' ),
|
176 |
+
$this->getCon()->getHumanName() ),
|
177 |
+
'registered_number' => __( 'Registered Mobile Number', 'wp-simple-firewall' ),
|
178 |
+
],
|
179 |
+
'vars' => [
|
180 |
+
'countries' => $countries,
|
181 |
+
'validated_number' => $validatedNumber,
|
182 |
+
]
|
183 |
+
];
|
184 |
+
}
|
185 |
+
|
186 |
+
public function isProviderEnabled() :bool {
|
187 |
+
/** @var LoginGuard\Options $opts */
|
188 |
+
$opts = $this->getOptions();
|
189 |
+
return $opts->isEnabledSmsAuth();
|
190 |
+
}
|
191 |
+
|
192 |
+
public function isProfileActive() :bool {
|
193 |
+
return $this->hasValidatedProfile();
|
194 |
+
}
|
195 |
+
|
196 |
+
public function getProviderName() :string {
|
197 |
+
return 'SMS';
|
198 |
+
}
|
199 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/U2F.php
CHANGED
@@ -1,9 +1,8 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
5 |
use FernleafSystems\Utilities\Data\Response\StdResponse;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Controller\Assets\Enqueue;
|
7 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
8 |
use FernleafSystems\Wordpress\Services\Services;
|
9 |
use u2flib_server\RegisterRequest;
|
@@ -12,16 +11,14 @@ use u2flib_server\SignRequest;
|
|
12 |
class U2F extends BaseProvider {
|
13 |
|
14 |
const SLUG = 'u2f';
|
15 |
-
const BYPASS_MFA = true;
|
16 |
const DEFAULT_SECRET = '[]';
|
17 |
|
18 |
-
public function isProfileActive(
|
19 |
-
return
|
20 |
}
|
21 |
|
22 |
public function getJavascriptVars() :array {
|
23 |
-
$
|
24 |
-
list( $reg, $signs ) = $this->createNewU2fRegistrationRequest( $user );
|
25 |
return [
|
26 |
'reg_request' => $reg,
|
27 |
'signs' => $signs,
|
@@ -30,7 +27,7 @@ class U2F extends BaseProvider {
|
|
30 |
'u2f_remove' => $this->getMod()->getAjaxActionData( 'u2f_remove' ),
|
31 |
],
|
32 |
'flags' => [
|
33 |
-
'has_validated' => $this->hasValidatedProfile(
|
34 |
],
|
35 |
'strings' => [
|
36 |
'not_supported' => __( 'U2F Security Key registration is not supported in this browser', 'wp-simple-firewall' ),
|
@@ -46,32 +43,28 @@ class U2F extends BaseProvider {
|
|
46 |
];
|
47 |
}
|
48 |
|
49 |
-
/**
|
50 |
-
* @return array
|
51 |
-
*/
|
52 |
public function getFormField() :array {
|
53 |
-
$
|
54 |
-
|
55 |
-
$aFieldData = [];
|
56 |
try {
|
57 |
-
/** @var SignRequest[] $
|
58 |
-
$
|
59 |
-
->getAuthenticateData( $this->getRegistrations(
|
60 |
|
61 |
-
if ( empty( $
|
62 |
throw new \Exception( 'No signature requests could be created' );
|
63 |
}
|
64 |
|
65 |
-
$
|
|
|
66 |
'name' => 'btn_u2f_start',
|
67 |
'type' => 'button',
|
68 |
-
'value' => '
|
69 |
'placeholder' => '',
|
70 |
'text' => 'U2F Authentication',
|
71 |
'classes' => [ 'btn', 'btn-light' ],
|
72 |
'help_link' => '',
|
73 |
'datas' => [
|
74 |
-
'signs' => base64_encode( json_encode( $
|
75 |
'input_otp' => $this->getLoginFormParameter(),
|
76 |
]
|
77 |
];
|
@@ -79,21 +72,19 @@ class U2F extends BaseProvider {
|
|
79 |
catch ( \Exception $e ) {
|
80 |
}
|
81 |
|
82 |
-
return $
|
83 |
}
|
84 |
|
85 |
/**
|
86 |
-
* @param \WP_User $user
|
87 |
* @return object[]
|
88 |
* @throws \u2flib_server\Error
|
89 |
*/
|
90 |
-
private function createNewU2fRegistrationRequest(
|
91 |
-
$meta = $this->getCon()->getUserMeta( $
|
92 |
list( $newRegRequest, $signRequests ) = ( new \u2flib_server\U2F( $this->getU2fAppID() ) )
|
93 |
-
->getRegisterData( $this->getRegistrations(
|
94 |
|
95 |
// Store requests as an array to allow for multiple requests to be kept
|
96 |
-
unset( $meta->u2f_regrequest ); // Old property
|
97 |
$userRegRequests = array_filter(
|
98 |
is_array( $meta->u2f_regrequests ) ? $meta->u2f_regrequests : [],
|
99 |
function ( $ts ) {
|
@@ -107,30 +98,48 @@ class U2F extends BaseProvider {
|
|
107 |
}
|
108 |
|
109 |
/**
|
110 |
-
* @param \WP_User $user
|
111 |
* @return \stdClass[]
|
112 |
*/
|
113 |
-
private function getRegistrations(
|
114 |
-
$regs =
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
}
|
122 |
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
private function getU2fAppID() {
|
128 |
-
$aPs = wp_parse_url( Services::WpGeneral()->getHomeUrl() );
|
129 |
-
$sPort = ( empty( $aPs[ 'port' ] ) || in_array( $aPs[ 'port' ], [ 80, 443 ] ) ) ? '' : $aPs[ 'port' ];
|
130 |
-
return sprintf( 'https://%s%s', $aPs[ 'host' ], $sPort );
|
131 |
}
|
132 |
|
133 |
-
protected function getProviderSpecificRenderData(
|
134 |
return [
|
135 |
'strings' => [
|
136 |
'title' => __( 'U2F', 'wp-simple-firewall' ),
|
@@ -138,52 +147,39 @@ class U2F extends BaseProvider {
|
|
138 |
'prompt' => __( 'Click To Register A U2F Device.', 'wp-simple-firewall' ),
|
139 |
],
|
140 |
'flags' => [
|
141 |
-
'is_validated' => $this->hasValidatedProfile(
|
142 |
],
|
143 |
'vars' => [
|
144 |
'registrations' => array_map(
|
145 |
-
function ( $
|
146 |
-
$
|
147 |
__( 'Used', 'wp-simple-firewall' ),
|
148 |
-
empty( $
|
149 |
__( 'Never', 'wp-simple-firewall' )
|
150 |
: Services::Request()
|
151 |
->carbon()
|
152 |
-
->setTimestamp( $
|
153 |
->diffForHumans()
|
154 |
);
|
155 |
-
return $
|
156 |
},
|
157 |
-
$this->getRegistrations(
|
158 |
)
|
159 |
],
|
160 |
];
|
161 |
}
|
162 |
|
163 |
-
|
164 |
-
|
165 |
-
*/
|
166 |
-
public function handleUserProfileSubmit( \WP_User $user ) {
|
167 |
-
$rawU2fResponse = Services::Request()->post( 'icwp_wpsf_new_u2f_response' );
|
168 |
-
if ( !empty( $rawU2fResponse ) ) {
|
169 |
-
$result = $this->addNewRegistration( $user, json_decode( $rawU2fResponse, true ) );
|
170 |
-
$this->getMod()
|
171 |
-
->setFlashAdminNotice( $result->success ? $result->msg_text : $result->error_text, $result->failed );
|
172 |
-
}
|
173 |
-
}
|
174 |
|
175 |
-
public function addNewRegistration( \WP_User $user, array $u2fResponse ) :StdResponse {
|
176 |
$response = new StdResponse();
|
177 |
-
|
178 |
-
$meta = $this->getCon()->getUserMeta( $user );
|
179 |
-
|
180 |
try {
|
181 |
$u2fResponse = (object)$u2fResponse;
|
182 |
-
$label =
|
183 |
if ( strlen( $label ) > 16 ) {
|
184 |
throw new \Exception( 'U2F Device label is larger than 16 characters.' );
|
185 |
}
|
186 |
-
if ( array_key_exists( $label, $this->getRegistrations(
|
187 |
throw new \Exception( 'U2F Device with this label already exists.' );
|
188 |
}
|
189 |
|
@@ -211,8 +207,7 @@ class U2F extends BaseProvider {
|
|
211 |
// attach the device label
|
212 |
$confirmedReg = get_object_vars( $U2FRegistration );
|
213 |
$confirmedReg[ 'label' ] = $label;
|
214 |
-
$this->addRegistration( $
|
215 |
-
->setProfileValidated( $user );
|
216 |
|
217 |
$response->msg_text = __( 'U2F Device was successfully registered on your profile.', 'wp-simple-firewall' );
|
218 |
$response->success = true;
|
@@ -226,88 +221,68 @@ class U2F extends BaseProvider {
|
|
226 |
return $response;
|
227 |
}
|
228 |
|
229 |
-
protected function processOtp(
|
230 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
}
|
232 |
|
233 |
-
|
234 |
-
|
235 |
-
* @param array $aReg
|
236 |
-
* @return $this
|
237 |
-
*/
|
238 |
-
private function addRegistration( \WP_User $user, array $aReg ) {
|
239 |
-
$aRegs = $this->getRegistrations( $user );
|
240 |
|
241 |
// We've been passed a Registration without a label. (for example counter increment)
|
242 |
// So we try to locate the pre-existing registration and update it.
|
243 |
-
if ( empty( $
|
244 |
-
$
|
245 |
-
foreach ( $
|
246 |
-
$
|
247 |
-
foreach ( $
|
248 |
-
$
|
249 |
}
|
250 |
-
if ( $
|
251 |
-
$
|
252 |
break;
|
253 |
}
|
254 |
}
|
255 |
}
|
256 |
|
257 |
// Only add if there's a label, and set defaults
|
258 |
-
if ( !empty( $
|
259 |
-
$
|
260 |
[
|
261 |
'used_at' => 0
|
262 |
],
|
263 |
-
$
|
264 |
);
|
265 |
}
|
266 |
|
267 |
-
|
268 |
-
}
|
269 |
-
|
270 |
-
/**
|
271 |
-
* @param \WP_User $user
|
272 |
-
* @param array $regs
|
273 |
-
* @return $this
|
274 |
-
*/
|
275 |
-
private function storeRegistrations( \WP_User $user, array $regs ) {
|
276 |
-
return $this->setProfileValidated( $user, !empty( $regs ) )
|
277 |
-
->setSecret( $user, json_encode( $regs ) );
|
278 |
}
|
279 |
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
* @return $this
|
284 |
-
*/
|
285 |
-
public function removeRegisteredU2fId( \WP_User $user, $sU2fID ) {
|
286 |
-
$regs = $this->getRegistrations( $user );
|
287 |
-
if ( isset( $regs[ $sU2fID ] ) ) {
|
288 |
-
unset( $regs[ $sU2fID ] );
|
289 |
-
$this->storeRegistrations( $user, $regs );
|
290 |
-
}
|
291 |
-
return $this;
|
292 |
}
|
293 |
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
$this->getRegistrations( $user ),
|
300 |
-
json_decode( $otp )
|
301 |
-
);
|
302 |
-
$aReg = get_object_vars( $oRegistration );
|
303 |
-
$aReg[ 'used_at' ] = Services::Request()->ts();
|
304 |
-
$this->addRegistration( $user, $aReg );
|
305 |
-
}
|
306 |
-
catch ( \Exception $e ) {
|
307 |
-
error_log( $e->getMessage() );
|
308 |
}
|
309 |
-
|
310 |
-
return !empty( $oRegistration );
|
311 |
}
|
312 |
|
313 |
public function isProviderEnabled() :bool {
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
5 |
use FernleafSystems\Utilities\Data\Response\StdResponse;
|
|
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
7 |
use FernleafSystems\Wordpress\Services\Services;
|
8 |
use u2flib_server\RegisterRequest;
|
11 |
class U2F extends BaseProvider {
|
12 |
|
13 |
const SLUG = 'u2f';
|
|
|
14 |
const DEFAULT_SECRET = '[]';
|
15 |
|
16 |
+
public function isProfileActive() :bool {
|
17 |
+
return $this->hasValidatedProfile();
|
18 |
}
|
19 |
|
20 |
public function getJavascriptVars() :array {
|
21 |
+
list( $reg, $signs ) = $this->createNewU2fRegistrationRequest();
|
|
|
22 |
return [
|
23 |
'reg_request' => $reg,
|
24 |
'signs' => $signs,
|
27 |
'u2f_remove' => $this->getMod()->getAjaxActionData( 'u2f_remove' ),
|
28 |
],
|
29 |
'flags' => [
|
30 |
+
'has_validated' => $this->hasValidatedProfile()
|
31 |
],
|
32 |
'strings' => [
|
33 |
'not_supported' => __( 'U2F Security Key registration is not supported in this browser', 'wp-simple-firewall' ),
|
43 |
];
|
44 |
}
|
45 |
|
|
|
|
|
|
|
46 |
public function getFormField() :array {
|
47 |
+
$fieldData = [];
|
|
|
|
|
48 |
try {
|
49 |
+
/** @var SignRequest[] $signReqs */
|
50 |
+
$signReqs = ( new \u2flib_server\U2F( $this->getU2fAppID() ) )
|
51 |
+
->getAuthenticateData( $this->getRegistrations() );
|
52 |
|
53 |
+
if ( empty( $signReqs ) ) {
|
54 |
throw new \Exception( 'No signature requests could be created' );
|
55 |
}
|
56 |
|
57 |
+
$fieldData = [
|
58 |
+
'slug' => static::SLUG,
|
59 |
'name' => 'btn_u2f_start',
|
60 |
'type' => 'button',
|
61 |
+
'value' => __( 'Start U2F Auth', 'wp-simple-firewall' ),
|
62 |
'placeholder' => '',
|
63 |
'text' => 'U2F Authentication',
|
64 |
'classes' => [ 'btn', 'btn-light' ],
|
65 |
'help_link' => '',
|
66 |
'datas' => [
|
67 |
+
'signs' => base64_encode( json_encode( $signReqs ) ),
|
68 |
'input_otp' => $this->getLoginFormParameter(),
|
69 |
]
|
70 |
];
|
72 |
catch ( \Exception $e ) {
|
73 |
}
|
74 |
|
75 |
+
return $fieldData;
|
76 |
}
|
77 |
|
78 |
/**
|
|
|
79 |
* @return object[]
|
80 |
* @throws \u2flib_server\Error
|
81 |
*/
|
82 |
+
private function createNewU2fRegistrationRequest() :array {
|
83 |
+
$meta = $this->getCon()->getUserMeta( $this->getUser() );
|
84 |
list( $newRegRequest, $signRequests ) = ( new \u2flib_server\U2F( $this->getU2fAppID() ) )
|
85 |
+
->getRegisterData( $this->getRegistrations() );
|
86 |
|
87 |
// Store requests as an array to allow for multiple requests to be kept
|
|
|
88 |
$userRegRequests = array_filter(
|
89 |
is_array( $meta->u2f_regrequests ) ? $meta->u2f_regrequests : [],
|
90 |
function ( $ts ) {
|
98 |
}
|
99 |
|
100 |
/**
|
|
|
101 |
* @return \stdClass[]
|
102 |
*/
|
103 |
+
private function getRegistrations() :array {
|
104 |
+
$regs = $this->getSecret();
|
105 |
+
if ( is_string( $regs ) ) {
|
106 |
+
/**
|
107 |
+
* @since 13.1 - now store the registrations as an array rather than encode
|
108 |
+
* and decode it each time, so we need to decode it first and re-save it as the array.
|
109 |
+
*/
|
110 |
+
$regs = json_decode( $regs, true );
|
111 |
+
$regs = array_map(
|
112 |
+
function ( $reg ) {
|
113 |
+
return (object)$reg;
|
114 |
+
},
|
115 |
+
is_array( $regs ) ? $regs : []
|
116 |
+
);
|
117 |
+
$this->storeRegistrations( $regs );
|
118 |
+
}
|
119 |
+
|
120 |
+
// should always be an array of objects
|
121 |
+
foreach ( $regs as $label => $reg ) {
|
122 |
+
if ( is_array( $reg ) ) {
|
123 |
+
if ( empty( $reg ) ) {
|
124 |
+
unset( $regs[ $label ] );
|
125 |
+
}
|
126 |
+
else {
|
127 |
+
$regs[ $label ] = (object)$reg;
|
128 |
+
}
|
129 |
+
$this->storeRegistrations( $regs );
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
return $regs;
|
134 |
}
|
135 |
|
136 |
+
private function getU2fAppID() :string {
|
137 |
+
$p = wp_parse_url( Services::WpGeneral()->getHomeUrl() );
|
138 |
+
$port = ( empty( $p[ 'port' ] ) || in_array( $p[ 'port' ], [ 80, 443 ] ) ) ? '' : $p[ 'port' ];
|
139 |
+
return sprintf( 'https://%s%s', $p[ 'host' ], $port );
|
|
|
|
|
|
|
|
|
140 |
}
|
141 |
|
142 |
+
protected function getProviderSpecificRenderData() :array {
|
143 |
return [
|
144 |
'strings' => [
|
145 |
'title' => __( 'U2F', 'wp-simple-firewall' ),
|
147 |
'prompt' => __( 'Click To Register A U2F Device.', 'wp-simple-firewall' ),
|
148 |
],
|
149 |
'flags' => [
|
150 |
+
'is_validated' => $this->hasValidatedProfile()
|
151 |
],
|
152 |
'vars' => [
|
153 |
'registrations' => array_map(
|
154 |
+
function ( $reg ) {
|
155 |
+
$reg->used_at = sprintf( '(%s: %s)',
|
156 |
__( 'Used', 'wp-simple-firewall' ),
|
157 |
+
empty( $reg->used_at ) ?
|
158 |
__( 'Never', 'wp-simple-firewall' )
|
159 |
: Services::Request()
|
160 |
->carbon()
|
161 |
+
->setTimestamp( $reg->used_at )
|
162 |
->diffForHumans()
|
163 |
);
|
164 |
+
return $reg;
|
165 |
},
|
166 |
+
$this->getRegistrations()
|
167 |
)
|
168 |
],
|
169 |
];
|
170 |
}
|
171 |
|
172 |
+
public function addNewRegistration( array $u2fResponse ) :StdResponse {
|
173 |
+
$meta = $this->getCon()->getUserMeta( $this->getUser() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
|
|
|
175 |
$response = new StdResponse();
|
|
|
|
|
|
|
176 |
try {
|
177 |
$u2fResponse = (object)$u2fResponse;
|
178 |
+
$label = sanitize_key( $u2fResponse->label );
|
179 |
if ( strlen( $label ) > 16 ) {
|
180 |
throw new \Exception( 'U2F Device label is larger than 16 characters.' );
|
181 |
}
|
182 |
+
if ( array_key_exists( $label, $this->getRegistrations() ) ) {
|
183 |
throw new \Exception( 'U2F Device with this label already exists.' );
|
184 |
}
|
185 |
|
207 |
// attach the device label
|
208 |
$confirmedReg = get_object_vars( $U2FRegistration );
|
209 |
$confirmedReg[ 'label' ] = $label;
|
210 |
+
$this->addRegistration( $confirmedReg );
|
|
|
211 |
|
212 |
$response->msg_text = __( 'U2F Device was successfully registered on your profile.', 'wp-simple-firewall' );
|
213 |
$response->success = true;
|
221 |
return $response;
|
222 |
}
|
223 |
|
224 |
+
protected function processOtp( string $otp, string $loginNonce = '' ) :bool {
|
225 |
+
try {
|
226 |
+
$registration = ( new \u2flib_server\U2F( $this->getU2fAppID() ) )
|
227 |
+
->doAuthenticate(
|
228 |
+
json_decode( base64_decode( Services::Request()->post( 'u2f_signs' ) ) ),
|
229 |
+
$this->getRegistrations(),
|
230 |
+
json_decode( $otp )
|
231 |
+
);
|
232 |
+
$reg = get_object_vars( $registration );
|
233 |
+
$reg[ 'used_at' ] = Services::Request()->ts();
|
234 |
+
$this->addRegistration( $reg );
|
235 |
+
}
|
236 |
+
catch ( \Exception $e ) {
|
237 |
+
error_log( $e->getMessage() );
|
238 |
+
}
|
239 |
+
|
240 |
+
return !empty( $registration );
|
241 |
}
|
242 |
|
243 |
+
private function addRegistration( array $reg ) {
|
244 |
+
$regs = $this->getRegistrations();
|
|
|
|
|
|
|
|
|
|
|
245 |
|
246 |
// We've been passed a Registration without a label. (for example counter increment)
|
247 |
// So we try to locate the pre-existing registration and update it.
|
248 |
+
if ( empty( $reg[ 'label' ] ) ) {
|
249 |
+
$comparisonKeys = [ 'keyHandle', 'publicKey', 'certificate', ];
|
250 |
+
foreach ( $regs as $label => $maybeReg ) {
|
251 |
+
$isReg = true;
|
252 |
+
foreach ( $comparisonKeys as $keyCompare ) {
|
253 |
+
$isReg = $isReg && ( $maybeReg->{$keyCompare} === $reg[ $keyCompare ] );
|
254 |
}
|
255 |
+
if ( $isReg ) {
|
256 |
+
$reg = array_merge( get_object_vars( $maybeReg ), $reg );
|
257 |
break;
|
258 |
}
|
259 |
}
|
260 |
}
|
261 |
|
262 |
// Only add if there's a label, and set defaults
|
263 |
+
if ( !empty( $reg[ 'label' ] ) ) {
|
264 |
+
$regs[ $reg[ 'label' ] ] = array_merge(
|
265 |
[
|
266 |
'used_at' => 0
|
267 |
],
|
268 |
+
$reg
|
269 |
);
|
270 |
}
|
271 |
|
272 |
+
$this->storeRegistrations( $regs );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
}
|
274 |
|
275 |
+
private function storeRegistrations( array $regs ) {
|
276 |
+
$this->setProfileValidated( !empty( $regs ) )
|
277 |
+
->setSecret( $regs );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
}
|
279 |
|
280 |
+
public function removeRegisteredU2fId( string $U2fID ) {
|
281 |
+
$regs = $this->getRegistrations();
|
282 |
+
if ( isset( $regs[ $U2fID ] ) ) {
|
283 |
+
unset( $regs[ $U2fID ] );
|
284 |
+
$this->storeRegistrations( $regs );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
}
|
|
|
|
|
286 |
}
|
287 |
|
288 |
public function isProviderEnabled() :bool {
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Provider/Yubikey.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
@@ -21,11 +21,10 @@ class Yubikey extends BaseProvider {
|
|
21 |
];
|
22 |
}
|
23 |
|
24 |
-
protected function getProviderSpecificRenderData(
|
25 |
-
$con = $this->getCon();
|
26 |
return [
|
27 |
'vars' => [
|
28 |
-
'yubi_ids' => $this->getYubiIds(
|
29 |
],
|
30 |
'strings' => [
|
31 |
'registered_yubi_ids' => __( 'Registered Yubikey devices', 'wp-simple-firewall' ),
|
@@ -42,21 +41,26 @@ class Yubikey extends BaseProvider {
|
|
42 |
'title' => __( 'Yubikey Authentication', 'wp-simple-firewall' ),
|
43 |
'cant_add_other_user' => sprintf( __( "Sorry, %s may not be added to another user's account.", 'wp-simple-firewall' ), 'Yubikey' ),
|
44 |
'cant_remove_admins' => sprintf( __( "Sorry, %s may only be removed from another user's account by a Security Administrator.", 'wp-simple-firewall' ), __( 'Yubikey', 'wp-simple-firewall' ) ),
|
45 |
-
'provided_by' => sprintf( __( 'Provided by %s', 'wp-simple-firewall' ),
|
|
|
46 |
'remove_more_info' => __( 'Understand how to remove Google Authenticator', 'wp-simple-firewall' )
|
47 |
],
|
48 |
];
|
49 |
}
|
50 |
|
51 |
-
private function getYubiIds(
|
52 |
-
return array_filter( array_map( 'trim', explode( ',', $this->getSecret(
|
53 |
}
|
54 |
|
55 |
-
|
|
|
|
|
|
|
|
|
56 |
$valid = false;
|
57 |
|
58 |
-
foreach ( $this->getYubiIds(
|
59 |
-
if ( strpos( $otp, $
|
60 |
$valid = true;
|
61 |
break;
|
62 |
}
|
@@ -99,7 +103,7 @@ class Yubikey extends BaseProvider {
|
|
99 |
return $success;
|
100 |
}
|
101 |
|
102 |
-
public function toggleRegisteredYubiID(
|
103 |
$response = new StdResponse();
|
104 |
$response->success = true;
|
105 |
|
@@ -113,7 +117,7 @@ class Yubikey extends BaseProvider {
|
|
113 |
}
|
114 |
else {
|
115 |
$keyID = substr( $keyOrOTP, 0, self::OTP_LENGTH );
|
116 |
-
$IDs = $this->getYubiIds(
|
117 |
|
118 |
if ( in_array( $keyID, $IDs ) ) {
|
119 |
$response->success = true;
|
@@ -137,36 +141,25 @@ class Yubikey extends BaseProvider {
|
|
137 |
}
|
138 |
|
139 |
if ( !$this->sendYubiOtpRequest( $keyOrOTP ) ) {
|
140 |
-
$response->success = false;
|
141 |
$response->error_text = 'One-Time Password verification failed';
|
142 |
}
|
143 |
$response->success = true;
|
144 |
|
145 |
-
$this->setSecret(
|
146 |
}
|
147 |
|
148 |
return $response;
|
149 |
}
|
150 |
|
151 |
-
/**
|
152 |
-
* @param \WP_User $user
|
153 |
-
* @param string $key
|
154 |
-
* @param bool $add - true to add; false to remove
|
155 |
-
* @return $this
|
156 |
-
*/
|
157 |
-
public function addRemoveRegisteredYubiId( \WP_User $user, string $key, $add = true ) {
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
* @return array
|
162 |
-
*/
|
163 |
public function getFormField() :array {
|
164 |
return [
|
|
|
165 |
'name' => $this->getLoginFormParameter(),
|
166 |
'type' => 'text',
|
167 |
-
'placeholder' =>
|
168 |
'value' => '',
|
169 |
'text' => __( 'Yubikey OTP', 'wp-simple-firewall' ),
|
|
|
170 |
'help_link' => 'https://shsec.io/4i'
|
171 |
];
|
172 |
}
|
@@ -177,19 +170,14 @@ class Yubikey extends BaseProvider {
|
|
177 |
return $opts->isEnabledYubikey();
|
178 |
}
|
179 |
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
$bValid = $bValid &&
|
189 |
-
preg_match( sprintf( '#^[a-z]{%s}$#', self::OTP_LENGTH ), $sId );
|
190 |
-
}
|
191 |
-
}
|
192 |
-
return $bValid;
|
193 |
}
|
194 |
|
195 |
public function getProviderName() :string {
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Provider;
|
4 |
|
21 |
];
|
22 |
}
|
23 |
|
24 |
+
protected function getProviderSpecificRenderData() :array {
|
|
|
25 |
return [
|
26 |
'vars' => [
|
27 |
+
'yubi_ids' => $this->getYubiIds(),
|
28 |
],
|
29 |
'strings' => [
|
30 |
'registered_yubi_ids' => __( 'Registered Yubikey devices', 'wp-simple-firewall' ),
|
41 |
'title' => __( 'Yubikey Authentication', 'wp-simple-firewall' ),
|
42 |
'cant_add_other_user' => sprintf( __( "Sorry, %s may not be added to another user's account.", 'wp-simple-firewall' ), 'Yubikey' ),
|
43 |
'cant_remove_admins' => sprintf( __( "Sorry, %s may only be removed from another user's account by a Security Administrator.", 'wp-simple-firewall' ), __( 'Yubikey', 'wp-simple-firewall' ) ),
|
44 |
+
'provided_by' => sprintf( __( 'Provided by %s', 'wp-simple-firewall' ),
|
45 |
+
$this->getCon()->getHumanName() ),
|
46 |
'remove_more_info' => __( 'Understand how to remove Google Authenticator', 'wp-simple-firewall' )
|
47 |
],
|
48 |
];
|
49 |
}
|
50 |
|
51 |
+
private function getYubiIds() :array {
|
52 |
+
return array_filter( array_map( 'trim', explode( ',', $this->getSecret() ) ) );
|
53 |
}
|
54 |
|
55 |
+
public function isProfileActive() :bool {
|
56 |
+
return count( $this->getYubiIds() ) > 0;
|
57 |
+
}
|
58 |
+
|
59 |
+
protected function processOtp( string $otp, string $loginNonce = '' ) :bool {
|
60 |
$valid = false;
|
61 |
|
62 |
+
foreach ( $this->getYubiIds() as $key ) {
|
63 |
+
if ( strpos( $otp, $key ) === 0 && $this->sendYubiOtpRequest( $otp ) ) {
|
64 |
$valid = true;
|
65 |
break;
|
66 |
}
|
103 |
return $success;
|
104 |
}
|
105 |
|
106 |
+
public function toggleRegisteredYubiID( string $keyOrOTP ) :StdResponse {
|
107 |
$response = new StdResponse();
|
108 |
$response->success = true;
|
109 |
|
117 |
}
|
118 |
else {
|
119 |
$keyID = substr( $keyOrOTP, 0, self::OTP_LENGTH );
|
120 |
+
$IDs = $this->getYubiIds();
|
121 |
|
122 |
if ( in_array( $keyID, $IDs ) ) {
|
123 |
$response->success = true;
|
141 |
}
|
142 |
|
143 |
if ( !$this->sendYubiOtpRequest( $keyOrOTP ) ) {
|
|
|
144 |
$response->error_text = 'One-Time Password verification failed';
|
145 |
}
|
146 |
$response->success = true;
|
147 |
|
148 |
+
$this->setSecret( implode( ',', array_unique( array_filter( $IDs ) ) ) );
|
149 |
}
|
150 |
|
151 |
return $response;
|
152 |
}
|
153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
public function getFormField() :array {
|
155 |
return [
|
156 |
+
'slug' => static::SLUG,
|
157 |
'name' => $this->getLoginFormParameter(),
|
158 |
'type' => 'text',
|
159 |
+
'placeholder' => '',
|
160 |
'value' => '',
|
161 |
'text' => __( 'Yubikey OTP', 'wp-simple-firewall' ),
|
162 |
+
'description' => __( 'Use your Yubikey to generate a new code', 'wp-simple-firewall' ),
|
163 |
'help_link' => 'https://shsec.io/4i'
|
164 |
];
|
165 |
}
|
170 |
return $opts->isEnabledYubikey();
|
171 |
}
|
172 |
|
173 |
+
protected function hasValidSecret() :bool {
|
174 |
+
$secret = $this->getSecret();
|
175 |
+
return count( array_filter(
|
176 |
+
explode( ',', is_string( $secret ) ? $secret : '' ),
|
177 |
+
function ( $yubiID ) {
|
178 |
+
return (bool)preg_match( sprintf( '#^[a-z]{%s}$#', self::OTP_LENGTH ), $yubiID );
|
179 |
+
}
|
180 |
+
) ) > 0;
|
|
|
|
|
|
|
|
|
|
|
181 |
}
|
182 |
|
183 |
public function getProviderName() :string {
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderBase.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Render;
|
4 |
+
|
5 |
+
use FernleafSystems\Utilities\Data\Adapter\DynProperties;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
7 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
8 |
+
use FernleafSystems\Wordpress\Services\Services;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @property string $login_nonce
|
12 |
+
* @property string $interim_login
|
13 |
+
* @property string $rememberme
|
14 |
+
* @property string $redirect_to
|
15 |
+
* @property string $msg_error
|
16 |
+
* @property string $interim_message
|
17 |
+
*/
|
18 |
+
abstract class RenderBase {
|
19 |
+
|
20 |
+
use Shield\Modules\ModConsumer;
|
21 |
+
use Shield\Utilities\Consumer\WpUserConsumer;
|
22 |
+
use DynProperties;
|
23 |
+
|
24 |
+
public function render() {
|
25 |
+
echo $this->buildPage();
|
26 |
+
die();
|
27 |
+
}
|
28 |
+
|
29 |
+
abstract protected function buildPage() :string;
|
30 |
+
|
31 |
+
protected function getCommonFormData() :array {
|
32 |
+
/** @var LoginGuard\ModCon $mod */
|
33 |
+
$mod = $this->getMod();
|
34 |
+
$mfaCon = $mod->getMfaController();
|
35 |
+
/** @var LoginGuard\Options $opts */
|
36 |
+
$opts = $mfaCon->getOptions();
|
37 |
+
$con = $mfaCon->getCon();
|
38 |
+
$req = Services::Request();
|
39 |
+
$user = $this->getWpUser();
|
40 |
+
$WP = Services::WpGeneral();
|
41 |
+
|
42 |
+
$mfaSkip = (int)( $opts->getMfaSkip()/DAY_IN_SECONDS );
|
43 |
+
|
44 |
+
return [
|
45 |
+
'hrefs' => [
|
46 |
+
'form_action' => add_query_arg( [
|
47 |
+
'shield_action' => 'wp_login_2fa_verify'
|
48 |
+
], $WP->getLoginUrl() ),
|
49 |
+
],
|
50 |
+
'flags' => [
|
51 |
+
'can_skip_mfa' => $opts->isMfaSkip(),
|
52 |
+
'show_branded_links' => !$con->getModule_SecAdmin()->getWhiteLabelController()->isEnabled(),
|
53 |
+
],
|
54 |
+
'strings' => [
|
55 |
+
'cancel' => __( 'Cancel Login', 'wp-simple-firewall' ),
|
56 |
+
'time_remaining' => __( 'Time Remaining', 'wp-simple-firewall' ),
|
57 |
+
'calculating' => __( 'Calculating', 'wp-simple-firewall' ).' ...',
|
58 |
+
'seconds' => strtolower( __( 'Seconds', 'wp-simple-firewall' ) ),
|
59 |
+
'login_expired' => __( 'Login Expired', 'wp-simple-firewall' ),
|
60 |
+
'verify_my_login' => __( 'Verify My Login', 'wp-simple-firewall' ),
|
61 |
+
'skip_mfa' => sprintf(
|
62 |
+
__( "Remember me for %s", 'wp-simple-firewall' ),
|
63 |
+
sprintf( _n( '%s day', '%s days', $mfaSkip, 'wp-simple-firewall' ), $mfaSkip )
|
64 |
+
)
|
65 |
+
],
|
66 |
+
'vars' => [
|
67 |
+
'form_hidden_fields' => $this->getHiddenFields(),
|
68 |
+
'login_fields' => array_filter( array_map(
|
69 |
+
function ( $provider ) {
|
70 |
+
return $provider->getFormField();
|
71 |
+
},
|
72 |
+
$mfaCon->getProvidersForUser( $user, true )
|
73 |
+
) ),
|
74 |
+
'show_branded_links' => !$con->getModule_SecAdmin()->getWhiteLabelController()->isEnabled(),
|
75 |
+
'time_remaining' => $this->getLoginIntentExpiresAt() - $req->ts(),
|
76 |
+
'message_type' => 'info',
|
77 |
+
]
|
78 |
+
];
|
79 |
+
}
|
80 |
+
|
81 |
+
protected function getHiddenFields() :array {
|
82 |
+
$req = Services::Request();
|
83 |
+
|
84 |
+
$referUrl = $req->server( 'HTTP_REFERER', '' );
|
85 |
+
if ( strpos( $referUrl, '?' ) ) {
|
86 |
+
list( $referUrl, $referQuery ) = explode( '?', $referUrl, 2 );
|
87 |
+
}
|
88 |
+
else {
|
89 |
+
$referQuery = '';
|
90 |
+
}
|
91 |
+
|
92 |
+
$redirectTo = $this->redirect_to;
|
93 |
+
if ( empty( $redirectTo ) ) {
|
94 |
+
|
95 |
+
if ( !empty( $referQuery ) ) {
|
96 |
+
parse_str( $referQuery, $referQueryItems );
|
97 |
+
if ( !empty( $referQueryItems[ 'redirect_to' ] ) ) {
|
98 |
+
$redirectTo = esc_url( $referQueryItems[ 'redirect_to' ] );
|
99 |
+
}
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
if ( !empty( $redirectTo ) ) {
|
104 |
+
$redirectTo = esc_url( $this->redirect_to );
|
105 |
+
}
|
106 |
+
|
107 |
+
$cancelHref = $req->post( 'cancel_href', '' );
|
108 |
+
if ( empty( $cancelHref ) && Services::Data()->isValidWebUrl( $referUrl ) ) {
|
109 |
+
$cancelHref = parse_url( $referUrl, PHP_URL_PATH );
|
110 |
+
}
|
111 |
+
|
112 |
+
global $interim_login;
|
113 |
+
|
114 |
+
$fields = array_filter( [
|
115 |
+
'interim-login' => ( $interim_login || $this->interim_login ) ? '1' : false,
|
116 |
+
'login_nonce' => $this->login_nonce,
|
117 |
+
'rememberme' => esc_attr( $this->rememberme ),
|
118 |
+
'redirect_to' => esc_attr( esc_url( $redirectTo ) ),
|
119 |
+
'cancel_href' => esc_attr( esc_url( $cancelHref ) ),
|
120 |
+
] );
|
121 |
+
$fields[ 'wp_user_id' ] = $this->getWpUser()->ID;
|
122 |
+
return $fields;
|
123 |
+
}
|
124 |
+
|
125 |
+
protected function getLoginIntentExpiresAt() :int {
|
126 |
+
/** @var LoginGuard\ModCon $mod */
|
127 |
+
$mod = $this->getMod();
|
128 |
+
$mfaCon = $mod->getMfaController();
|
129 |
+
/** @var LoginGuard\Options $opts */
|
130 |
+
$opts = $this->getOptions();
|
131 |
+
$intentAt = $mfaCon->getActiveLoginIntents( $this->getWpUser() )[ $this->login_nonce ][ 'start' ] ?? 0;
|
132 |
+
return Services::Request()
|
133 |
+
->carbon()
|
134 |
+
->setTimestamp( $intentAt )
|
135 |
+
->addMinutes( $opts->getLoginIntentMinutes() )->timestamp;
|
136 |
+
}
|
137 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderLoginIntentPage.php
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Render;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
7 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Utilities\AdminNotices\NoticeVO;
|
8 |
+
use FernleafSystems\Wordpress\Services\Services;
|
9 |
+
|
10 |
+
class RenderLoginIntentPage extends RenderBase {
|
11 |
+
|
12 |
+
use Shield\Utilities\Consumer\WpUserConsumer;
|
13 |
+
|
14 |
+
protected function buildPage() :string {
|
15 |
+
$con = $this->getCon();
|
16 |
+
/** @var LoginGuard\ModCon $mod */
|
17 |
+
$mod = $this->getMod();
|
18 |
+
|
19 |
+
$labels = $con->getLabels();
|
20 |
+
$bannerURL = empty( $labels[ 'url_login2fa_logourl' ] ) ? $con->urls->forImage( 'shield/banner-2FA.png' ) : $labels[ 'url_login2fa_logourl' ];
|
21 |
+
|
22 |
+
$data = [
|
23 |
+
'strings' => [
|
24 |
+
'what_is_this' => __( 'What is this?', 'wp-simple-firewall' ),
|
25 |
+
'page_title' => sprintf( __( '%s Login Verification', 'wp-simple-firewall' ), $con->getHumanName() ),
|
26 |
+
],
|
27 |
+
'hrefs' => [
|
28 |
+
'css_bootstrap' => $con->urls->forCss( 'bootstrap' ),
|
29 |
+
'js_bootstrap' => $con->urls->forJs( 'bootstrap' ),
|
30 |
+
'shield_logo' => 'https://ps.w.org/wp-simple-firewall/assets/banner-772x250.png',
|
31 |
+
'what_is_this' => 'https://help.getshieldsecurity.com/article/322-what-is-the-login-authentication-portal',
|
32 |
+
],
|
33 |
+
'imgs' => [
|
34 |
+
'banner' => $bannerURL,
|
35 |
+
'favicon' => $con->urls->forImage( 'pluginlogo_24x24.png' ),
|
36 |
+
],
|
37 |
+
'flags' => [
|
38 |
+
'show_branded_links' => !$con->getModule_SecAdmin()->getWhiteLabelController()->isEnabled(),
|
39 |
+
],
|
40 |
+
'content' => [
|
41 |
+
'form' => $this->renderForm(),
|
42 |
+
]
|
43 |
+
];
|
44 |
+
|
45 |
+
// Provide the U2F scripts if required.
|
46 |
+
$data[ 'head' ] = [
|
47 |
+
'scripts' => [
|
48 |
+
[
|
49 |
+
'src' => $con->urls->forJs( 'u2f-bundle' ),
|
50 |
+
],
|
51 |
+
[
|
52 |
+
'src' => $con->urls->forJs( 'shield/login2fa' ),
|
53 |
+
]
|
54 |
+
],
|
55 |
+
'styles' => [
|
56 |
+
[
|
57 |
+
'href' => $con->urls->forCss( 'shield/login2fa' ),
|
58 |
+
]
|
59 |
+
]
|
60 |
+
];
|
61 |
+
|
62 |
+
return $mod->renderTemplate( '/pages/login_intent/index.twig',
|
63 |
+
Services::DataManipulation()->mergeArraysRecursive(
|
64 |
+
$mod->getUIHandler()->getBaseDisplayData(), $data ), true );
|
65 |
+
}
|
66 |
+
|
67 |
+
private function renderForm() :string {
|
68 |
+
/** @var LoginGuard\ModCon $mod */
|
69 |
+
$mod = $this->getMod();
|
70 |
+
$con = $this->getCon();
|
71 |
+
|
72 |
+
$notice = $con->getAdminNotices()->getFlashNotice();
|
73 |
+
if ( $notice instanceof NoticeVO ) {
|
74 |
+
$msg = $notice->render_data[ 'message' ];
|
75 |
+
}
|
76 |
+
else {
|
77 |
+
$msg = __( 'Please supply at least 1 authentication code', 'wp-simple-firewall' );
|
78 |
+
}
|
79 |
+
|
80 |
+
if ( !empty( $msg ) && !$con->getModule_SecAdmin()->getWhiteLabelController()->isEnabled() ) {
|
81 |
+
$msg .= sprintf( ' [<a href="%s" target="_blank">%s</a>]', 'https://shsec.io/shieldcantaccess', __( 'More Info', 'wp-simple-firewall' ) );
|
82 |
+
}
|
83 |
+
|
84 |
+
return $mod->renderTemplate(
|
85 |
+
'/components/login_intent/form.twig',
|
86 |
+
Services::DataManipulation()->mergeArraysRecursive(
|
87 |
+
$mod->getUIHandler()->getBaseDisplayData(),
|
88 |
+
$this->getCommonFormData(),
|
89 |
+
[
|
90 |
+
'strings' => [
|
91 |
+
'message' => $msg,
|
92 |
+
],
|
93 |
+
'vars' => [
|
94 |
+
'message_type' => 'info',
|
95 |
+
],
|
96 |
+
]
|
97 |
+
),
|
98 |
+
true
|
99 |
+
);
|
100 |
+
}
|
101 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/Render/RenderWpLoginReplica.php
ADDED
@@ -0,0 +1,294 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor\Render;
|
4 |
+
|
5 |
+
use FernleafSystems\Utilities\Data\CaptureOutput;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
7 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Controller\Assets\Enqueue;
|
8 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
9 |
+
use FernleafSystems\Wordpress\Services\Services;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @property bool $include_body
|
13 |
+
*/
|
14 |
+
class RenderWpLoginReplica extends RenderBase {
|
15 |
+
|
16 |
+
public function __construct() {
|
17 |
+
$this->include_body = true;
|
18 |
+
}
|
19 |
+
|
20 |
+
protected function buildPage() :string {
|
21 |
+
$this->preRenderSetup();
|
22 |
+
return $this->getMod()->renderTemplate( '/components/wplogin_replica/wp_login.twig', [
|
23 |
+
'content' => [
|
24 |
+
'header' => $this->renderLoginHeader( __( 'Login 2FA Verification', 'wp-simple-firewall' ) ),
|
25 |
+
'body' => $this->include_body ? $this->renderLoginBody() : '',
|
26 |
+
'footer' => $this->renderLoginFooter(),
|
27 |
+
]
|
28 |
+
] );
|
29 |
+
}
|
30 |
+
|
31 |
+
private function preRenderSetup() {
|
32 |
+
add_filter( 'shield/custom_enqueues', function ( array $enqueues ) {
|
33 |
+
$enqueues[ Enqueue::JS ][] = 'shield/login2fa';
|
34 |
+
$enqueues[ Enqueue::CSS ][] = 'shield/login2fa';
|
35 |
+
return $enqueues;
|
36 |
+
} );
|
37 |
+
}
|
38 |
+
|
39 |
+
private function renderLoginBody() :string {
|
40 |
+
/** @var LoginGuard\ModCon $mod */
|
41 |
+
$mod = $this->getMod();
|
42 |
+
$WP = Services::WpGeneral();
|
43 |
+
$user = $this->getWpUser();
|
44 |
+
|
45 |
+
global $interim_login;
|
46 |
+
|
47 |
+
return $this->getMod()->renderTemplate( '/components/wplogin_replica/login_body.twig',
|
48 |
+
|
49 |
+
Services::DataManipulation()->mergeArraysRecursive(
|
50 |
+
$mod->getUIHandler()->getBaseDisplayData(),
|
51 |
+
$this->getCommonFormData(),
|
52 |
+
[
|
53 |
+
'content' => [
|
54 |
+
'providers' => array_filter( array_map(
|
55 |
+
function ( $provider ) use ( $user ) {
|
56 |
+
return $provider->setUser( $user )->renderFormFieldForWpLogin();
|
57 |
+
},
|
58 |
+
$mod->getMfaController()->getProvidersForUser( $user, true )
|
59 |
+
) )
|
60 |
+
],
|
61 |
+
'flags' => [
|
62 |
+
'has_error_msg' => !empty( $this->msg_error ),
|
63 |
+
'is_interim_login' => (bool)$interim_login,
|
64 |
+
],
|
65 |
+
'hrefs' => [
|
66 |
+
'home' => $WP->getHomeUrl(),
|
67 |
+
],
|
68 |
+
'strings' => [
|
69 |
+
'error_msg' => $this->msg_error,
|
70 |
+
'back_home' => __( 'Go Back Home', 'wp-simple-firewall' ),
|
71 |
+
'button_submit' => __( 'Complete Login', 'wp-simple-firewall' )
|
72 |
+
],
|
73 |
+
]
|
74 |
+
)
|
75 |
+
);
|
76 |
+
}
|
77 |
+
|
78 |
+
private function renderLoginFooter() :string {
|
79 |
+
/**
|
80 |
+
* Fires in the login page footer.
|
81 |
+
*
|
82 |
+
* @since 3.1.0
|
83 |
+
*/
|
84 |
+
$actionLoginFooter = CaptureOutput::Capture( function () {
|
85 |
+
do_action( 'login_footer' );
|
86 |
+
} );
|
87 |
+
|
88 |
+
return $this->getMod()->renderTemplate( '/components/wplogin_replica/login_footer.twig', [
|
89 |
+
'content' => [
|
90 |
+
'action_login_footer' => $actionLoginFooter,
|
91 |
+
],
|
92 |
+
] );
|
93 |
+
}
|
94 |
+
|
95 |
+
private function renderLoginHeader( string $title = 'Log In', string $message = '', $wp_error = null ) :string {
|
96 |
+
global $interim_login, $action;
|
97 |
+
|
98 |
+
// Don't index any of these forms.
|
99 |
+
if ( function_exists( 'wp_robots_sensitive_page' ) ) {
|
100 |
+
add_filter( 'wp_robots', 'wp_robots_sensitive_page' );
|
101 |
+
}
|
102 |
+
if ( function_exists( 'wp_strict_cross_origin_referrer' ) ) {
|
103 |
+
add_action( 'login_head', 'wp_strict_cross_origin_referrer' );
|
104 |
+
}
|
105 |
+
|
106 |
+
if ( !is_wp_error( $wp_error ) ) {
|
107 |
+
$wp_error = new \WP_Error();
|
108 |
+
}
|
109 |
+
|
110 |
+
if ( function_exists( 'wp_login_viewport_meta' ) ) {
|
111 |
+
add_action( 'login_head', 'wp_login_viewport_meta' );
|
112 |
+
}
|
113 |
+
|
114 |
+
$login_title = get_bloginfo( 'name', 'display' );
|
115 |
+
|
116 |
+
/* translators: Login screen title. 1: Login screen name, 2: Network or site name. */
|
117 |
+
$login_title = sprintf( __( '%1$s ‹ %2$s — WordPress' ), $title, $login_title );
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Filters the title tag content for login page.
|
121 |
+
*
|
122 |
+
* @since 4.9.0
|
123 |
+
*
|
124 |
+
* @param string $login_title The page title, with extra context added.
|
125 |
+
* @param string $title The original page title.
|
126 |
+
*/
|
127 |
+
$login_title = apply_filters( 'login_title', $login_title, $title );
|
128 |
+
|
129 |
+
wp_enqueue_style( 'login' );
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Enqueue scripts and styles for the login page.
|
133 |
+
*
|
134 |
+
* @since 3.1.0
|
135 |
+
*/
|
136 |
+
$actionLoginEnqScripts = CaptureOutput::Capture( function () {
|
137 |
+
do_action( 'login_enqueue_scripts' );
|
138 |
+
} );
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Fires in the login page header after scripts are enqueued.
|
142 |
+
*
|
143 |
+
* @since 2.1.0
|
144 |
+
*/
|
145 |
+
$actionLoginHead = CaptureOutput::Capture( function () {
|
146 |
+
do_action( 'login_head' );
|
147 |
+
} );
|
148 |
+
|
149 |
+
$login_header_url = __( 'https://wordpress.org/' );
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Filters link URL of the header logo above login form.
|
153 |
+
*
|
154 |
+
* @since 2.1.0
|
155 |
+
*
|
156 |
+
* @param string $login_header_url Login header logo URL.
|
157 |
+
*/
|
158 |
+
$login_header_url = apply_filters( 'login_headerurl', $login_header_url );
|
159 |
+
|
160 |
+
$login_header_title = '';
|
161 |
+
|
162 |
+
$login_header_text = empty( $login_header_title ) ? __( 'Powered by WordPress' ) : $login_header_title;
|
163 |
+
|
164 |
+
/**
|
165 |
+
* Filters the link text of the header logo above the login form.
|
166 |
+
*
|
167 |
+
* @since 5.2.0
|
168 |
+
*
|
169 |
+
* @param string $login_header_text The login header logo link text.
|
170 |
+
*/
|
171 |
+
$login_header_text = apply_filters( 'login_headertext', $login_header_text );
|
172 |
+
|
173 |
+
$classes = [ 'login-action-'.Services::Request()->request( 'action', 'login' ), 'wp-core-ui' ];
|
174 |
+
|
175 |
+
if ( is_rtl() ) {
|
176 |
+
$classes[] = 'rtl';
|
177 |
+
}
|
178 |
+
|
179 |
+
if ( $interim_login ) {
|
180 |
+
$classes[] = 'interim-login';
|
181 |
+
}
|
182 |
+
|
183 |
+
if ( 'success' === $interim_login ) {
|
184 |
+
$classes[] = 'interim-login-success';
|
185 |
+
}
|
186 |
+
|
187 |
+
$classes[] = ' locale-'.sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Filters the login page body classes.
|
191 |
+
*
|
192 |
+
* @since 3.5.0
|
193 |
+
*
|
194 |
+
* @param string[] $classes An array of body classes.
|
195 |
+
* @param string $action The action that brought the visitor to the login page.
|
196 |
+
*/
|
197 |
+
$classes = apply_filters( 'login_body_class', $classes, $action );
|
198 |
+
|
199 |
+
$actionLoginHeader = CaptureOutput::Capture( function () {
|
200 |
+
/**
|
201 |
+
* Fires in the login page header after the body tag is opened.
|
202 |
+
*
|
203 |
+
* @since 4.6.0
|
204 |
+
*/
|
205 |
+
do_action( 'login_header' );
|
206 |
+
} );
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Filters the message to display above the login form.
|
210 |
+
*
|
211 |
+
* @since 2.1.0
|
212 |
+
*
|
213 |
+
* @param string $message Login message text.
|
214 |
+
*/
|
215 |
+
$message = apply_filters( 'login_message', $message );
|
216 |
+
if ( !empty( $message ) ) {
|
217 |
+
echo $message."\n";
|
218 |
+
}
|
219 |
+
|
220 |
+
$loginErrors = '';
|
221 |
+
$loginMessages = '';
|
222 |
+
if ( $wp_error->has_errors() ) {
|
223 |
+
$errors = '';
|
224 |
+
$messages = '';
|
225 |
+
|
226 |
+
foreach ( $wp_error->get_error_codes() as $code ) {
|
227 |
+
$severity = $wp_error->get_error_data( $code );
|
228 |
+
foreach ( $wp_error->get_error_messages( $code ) as $error_message ) {
|
229 |
+
if ( 'message' === $severity ) {
|
230 |
+
$messages .= ' '.$error_message."<br />\n";
|
231 |
+
}
|
232 |
+
else {
|
233 |
+
$errors .= ' '.$error_message."<br />\n";
|
234 |
+
}
|
235 |
+
}
|
236 |
+
}
|
237 |
+
|
238 |
+
if ( !empty( $errors ) ) {
|
239 |
+
/**
|
240 |
+
* Filters the error messages displayed above the login form.
|
241 |
+
*
|
242 |
+
* @since 2.1.0
|
243 |
+
*
|
244 |
+
* @param string $errors Login error message.
|
245 |
+
*/
|
246 |
+
$loginErrors = apply_filters( 'login_errors', $errors );
|
247 |
+
}
|
248 |
+
|
249 |
+
if ( !empty( $messages ) ) {
|
250 |
+
/**
|
251 |
+
* Filters instructional messages displayed above the login form.
|
252 |
+
*
|
253 |
+
* @since 2.5.0
|
254 |
+
*
|
255 |
+
* @param string $messages Login messages.
|
256 |
+
*/
|
257 |
+
$loginMessages = apply_filters( 'login_messages', $messages );
|
258 |
+
}
|
259 |
+
}
|
260 |
+
|
261 |
+
return $this->getMod()->renderTemplate( '/components/wplogin_replica/login_header.twig', [
|
262 |
+
'content' => [
|
263 |
+
'action_login_enqueue_scripts' => $actionLoginEnqScripts,
|
264 |
+
'action_login_head' => $actionLoginHead,
|
265 |
+
'action_login_header' => $actionLoginHeader,
|
266 |
+
'meta_content_type' => get_bloginfo( 'html_type' ),
|
267 |
+
'meta_charset' => get_bloginfo( 'charset' ),
|
268 |
+
'login_errors' => $loginErrors,
|
269 |
+
'login_messages' => $loginMessages,
|
270 |
+
],
|
271 |
+
'flags' => [
|
272 |
+
'has_login_errors' => !empty( $loginErrors ),
|
273 |
+
'has_login_messages' => !empty( $loginMessages ),
|
274 |
+
'has_interim_message' => $interim_login && !empty( $this->interim_message ),
|
275 |
+
'is_interim_login' => $interim_login,
|
276 |
+
],
|
277 |
+
'hrefs' => [
|
278 |
+
'login_header_url' => esc_url( $login_header_url ),
|
279 |
+
],
|
280 |
+
'strings' => [
|
281 |
+
'login_header_text' => $login_header_text,
|
282 |
+
'login_title' => $login_title,
|
283 |
+
'message' => $message,
|
284 |
+
'interim_message' => $this->interim_message ?? '',
|
285 |
+
],
|
286 |
+
'vars' => [
|
287 |
+
'language_attributes' => get_language_attributes( 'html' ),
|
288 |
+
'meta_content_type' => get_bloginfo( 'html_type' ),
|
289 |
+
'meta_charset' => get_bloginfo( 'charset' ),
|
290 |
+
'classes_body' => esc_attr( implode( ' ', $classes ) ),
|
291 |
+
]
|
292 |
+
] );
|
293 |
+
}
|
294 |
+
}
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/UserProfile.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
-
|
5 |
-
use FernleafSystems\Utilities\Logic\ExecOnce;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield;
|
7 |
-
|
8 |
-
/**
|
9 |
-
* @deprecated 13.0.5
|
10 |
-
*/
|
11 |
-
class UserProfile {
|
12 |
-
|
13 |
-
use MfaControllerConsumer;
|
14 |
-
use ExecOnce;
|
15 |
-
|
16 |
-
protected function run() {
|
17 |
-
}
|
18 |
-
|
19 |
-
/**
|
20 |
-
* This MUST only ever be hooked into when the User is looking at their OWN profile, so we can use "current user"
|
21 |
-
* functions. Otherwise we need to be careful of mixing up users.
|
22 |
-
* @param \WP_User $user
|
23 |
-
*/
|
24 |
-
public function addOptionsToUserProfile( $user ) {
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* ONLY TO BE HOOKED TO USER PROFILE EDIT
|
29 |
-
* @param \WP_User $user
|
30 |
-
*/
|
31 |
-
public function addOptionsToUserEditProfile( $user ) {
|
32 |
-
}
|
33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/LoginGuard/Lib/TwoFactor/ValidateLoginIntentRequest.php
DELETED
@@ -1,66 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard\Lib\TwoFactor;
|
4 |
-
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\LoginGuard;
|
7 |
-
use FernleafSystems\Wordpress\Services\Services;
|
8 |
-
|
9 |
-
class ValidateLoginIntentRequest {
|
10 |
-
|
11 |
-
use MfaControllerConsumer;
|
12 |
-
|
13 |
-
/**
|
14 |
-
* @throws \Exception
|
15 |
-
*/
|
16 |
-
public function run() :bool {
|
17 |
-
$mfaCon = $this->getMfaCon();
|
18 |
-
/** @var LoginGuard\Options $opts */
|
19 |
-
$opts = $mfaCon->getOptions();
|
20 |
-
|
21 |
-
$user = Services::WpUsers()->getCurrentWpUser();
|
22 |
-
if ( !$user instanceof \WP_User ) {
|
23 |
-
throw new \Exception( 'No user logged-in.' );
|
24 |
-
}
|
25 |
-
|
26 |
-
$providers = $mfaCon->getProvidersForUser( $user, true );
|
27 |
-
if ( empty( $providers ) ) {
|
28 |
-
throw new \Exception( 'No valid providers' );
|
29 |
-
}
|
30 |
-
|
31 |
-
$providerStates = [];
|
32 |
-
$successfulProviders = [];
|
33 |
-
foreach ( $providers as $slug => $provider ) {
|
34 |
-
$providerStates[ $slug ] = $provider->validateLoginIntent( $user );
|
35 |
-
if ( $providerStates[ $slug ] ) {
|
36 |
-
$successfulProviders[ $slug ] = $provider;
|
37 |
-
}
|
38 |
-
}
|
39 |
-
|
40 |
-
$validated = false;
|
41 |
-
|
42 |
-
foreach ( $providers as $slug => $provider ) {
|
43 |
-
if ( $provider::BYPASS_MFA ) {
|
44 |
-
if ( $providerStates[ $slug ] ) {
|
45 |
-
$validated = true;
|
46 |
-
}
|
47 |
-
unset( $providers[ $slug ] );
|
48 |
-
unset( $providerStates[ $slug ] );
|
49 |
-
}
|
50 |
-
}
|
51 |
-
|
52 |
-
if ( !$validated ) {
|
53 |
-
$countSuccessful = count( array_filter( $providerStates ) );
|
54 |
-
$validated = $opts->isChainedAuth() ? $countSuccessful == count( $providers ) : $countSuccessful > 0;
|
55 |
-
}
|
56 |
-
|
57 |
-
if ( $validated ) {
|
58 |
-
// Some cleanup can only run if login is completely tested and completely valid.
|
59 |
-
foreach ( $successfulProviders as $provider ) {
|
60 |
-
$provider->postSuccessActions( $user );
|
61 |
-
}
|
62 |
-
}
|
63 |
-
|
64 |
-
return $validated;
|
65 |
-
}
|
66 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/src/Modules/LoginGuard/ModCon.php
CHANGED
@@ -12,7 +12,7 @@ class ModCon extends BaseShield\ModCon {
|
|
12 |
/**
|
13 |
* @var Lib\TwoFactor\MfaController
|
14 |
*/
|
15 |
-
private $
|
16 |
|
17 |
protected function preProcessOptions() {
|
18 |
/** @var Options $opts */
|
@@ -50,22 +50,41 @@ class ModCon extends BaseShield\ModCon {
|
|
50 |
}
|
51 |
|
52 |
$opts->setOpt( 'two_factor_auth_user_roles', $opts->getEmail2FaRoles() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
}
|
54 |
|
55 |
public function ensureCorrectCaptchaConfig() {
|
56 |
/** @var Options $opts */
|
57 |
$opts = $this->getOptions();
|
58 |
|
59 |
-
$
|
60 |
if ( $this->isPremium() ) {
|
61 |
$cfg = $this->getCaptchaCfg();
|
62 |
if ( $cfg->provider == $cfg::PROV_GOOGLE_RECAP2 ) {
|
63 |
-
if ( !$cfg->invisible && $
|
64 |
$opts->setOpt( 'enable_google_recaptcha_login', 'default' );
|
65 |
}
|
66 |
}
|
67 |
}
|
68 |
-
elseif ( !in_array( $
|
69 |
$opts->setOpt( 'enable_google_recaptcha_login', 'default' );
|
70 |
}
|
71 |
}
|
@@ -91,14 +110,14 @@ class ModCon extends BaseShield\ModCon {
|
|
91 |
$this->saveModOptions();
|
92 |
|
93 |
if ( $opts->getIfCanSendEmailVerified() ) {
|
94 |
-
$
|
95 |
-
$
|
96 |
}
|
97 |
else {
|
98 |
-
$
|
99 |
-
$
|
100 |
}
|
101 |
-
$this->setFlashAdminNotice( $
|
102 |
if ( Services::WpUsers()->isUserLoggedIn() ) {
|
103 |
Services::Response()->redirect( $this->getUrl_AdminPage() );
|
104 |
}
|
@@ -149,15 +168,6 @@ class ModCon extends BaseShield\ModCon {
|
|
149 |
}
|
150 |
}
|
151 |
|
152 |
-
/**
|
153 |
-
* @deprecated 13.0.5
|
154 |
-
*/
|
155 |
-
public function getOptEmailTwoFactorRolesDefaults() {
|
156 |
-
/** @var Options $opts */
|
157 |
-
$opts = $this->getOptions();
|
158 |
-
return $opts->getEmail2FaRoles();
|
159 |
-
}
|
160 |
-
|
161 |
public function getGaspKey() :string {
|
162 |
/** @var Options $opts */
|
163 |
$opts = $this->getOptions();
|
@@ -201,17 +211,17 @@ class ModCon extends BaseShield\ModCon {
|
|
201 |
|
202 |
/**
|
203 |
* @return Lib\TwoFactor\MfaController
|
|
|
204 |
*/
|
205 |
public function getLoginIntentController() {
|
206 |
-
|
207 |
-
$this->loginIntentCon = ( new Lib\TwoFactor\MfaController() )
|
208 |
-
->setMod( $this );
|
209 |
-
}
|
210 |
-
return $this->loginIntentCon;
|
211 |
}
|
212 |
|
213 |
-
public function
|
214 |
-
|
|
|
|
|
|
|
215 |
}
|
216 |
|
217 |
/**
|
@@ -231,13 +241,6 @@ class ModCon extends BaseShield\ModCon {
|
|
231 |
$this->getOptions()->setOpt( 'enable_google_authenticator', $enable ? 'Y' : 'N' );
|
232 |
}
|
233 |
|
234 |
-
/**
|
235 |
-
* @return string
|
236 |
-
*/
|
237 |
-
public function getLoginIntentRequestFlag() {
|
238 |
-
return $this->getCon()->prefix( 'login-intent-request' );
|
239 |
-
}
|
240 |
-
|
241 |
public function getTextOptDefault( string $key ) :string {
|
242 |
|
243 |
switch ( $key ) {
|
12 |
/**
|
13 |
* @var Lib\TwoFactor\MfaController
|
14 |
*/
|
15 |
+
private $mfaCon;
|
16 |
|
17 |
protected function preProcessOptions() {
|
18 |
/** @var Options $opts */
|
50 |
}
|
51 |
|
52 |
$opts->setOpt( 'two_factor_auth_user_roles', $opts->getEmail2FaRoles() );
|
53 |
+
|
54 |
+
if ( !$opts->isOpt( 'mfa_verify_page', 'custom_shield' )
|
55 |
+
&& !Services::WpGeneral()->getWordpressIsAtLeastVersion( '4.0' ) ) {
|
56 |
+
$opts->resetOptToDefault( 'mfa_verify_page' );
|
57 |
+
}
|
58 |
+
|
59 |
+
$redirect = preg_replace( '#[^0-9a-z_\-/.]#i', '', (string)$opts->getOpt( 'rename_wplogin_redirect' ) );
|
60 |
+
if ( !empty( $redirect ) ) {
|
61 |
+
|
62 |
+
$redirect = preg_replace( '#^http(s)?//.*/#iU', '', $redirect );
|
63 |
+
if ( !empty( $redirect ) ) {
|
64 |
+
$redirect = '/'.ltrim( $redirect, '/' );
|
65 |
+
}
|
66 |
+
}
|
67 |
+
$opts->setOpt( 'rename_wplogin_redirect', $redirect );
|
68 |
+
|
69 |
+
if ( empty( $opts->getOpt( 'mfa_user_setup_pages' ) ) ) {
|
70 |
+
$opts->setOpt( 'mfa_user_setup_pages', [ 'profile' ] );
|
71 |
+
}
|
72 |
}
|
73 |
|
74 |
public function ensureCorrectCaptchaConfig() {
|
75 |
/** @var Options $opts */
|
76 |
$opts = $this->getOptions();
|
77 |
|
78 |
+
$style = $opts->getOpt( 'enable_google_recaptcha_login' );
|
79 |
if ( $this->isPremium() ) {
|
80 |
$cfg = $this->getCaptchaCfg();
|
81 |
if ( $cfg->provider == $cfg::PROV_GOOGLE_RECAP2 ) {
|
82 |
+
if ( !$cfg->invisible && $style == 'invisible' ) {
|
83 |
$opts->setOpt( 'enable_google_recaptcha_login', 'default' );
|
84 |
}
|
85 |
}
|
86 |
}
|
87 |
+
elseif ( !in_array( $style, [ 'disabled', 'default' ] ) ) {
|
88 |
$opts->setOpt( 'enable_google_recaptcha_login', 'default' );
|
89 |
}
|
90 |
}
|
110 |
$this->saveModOptions();
|
111 |
|
112 |
if ( $opts->getIfCanSendEmailVerified() ) {
|
113 |
+
$success = true;
|
114 |
+
$msg = __( 'Email verification completed successfully.', 'wp-simple-firewall' );
|
115 |
}
|
116 |
else {
|
117 |
+
$success = false;
|
118 |
+
$msg = __( 'Email verification could not be completed.', 'wp-simple-firewall' );
|
119 |
}
|
120 |
+
$this->setFlashAdminNotice( $msg, null, !$success );
|
121 |
if ( Services::WpUsers()->isUserLoggedIn() ) {
|
122 |
Services::Response()->redirect( $this->getUrl_AdminPage() );
|
123 |
}
|
168 |
}
|
169 |
}
|
170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
public function getGaspKey() :string {
|
172 |
/** @var Options $opts */
|
173 |
$opts = $this->getOptions();
|
211 |
|
212 |
/**
|
213 |
* @return Lib\TwoFactor\MfaController
|
214 |
+
* @deprecated 13.1
|
215 |
*/
|
216 |
public function getLoginIntentController() {
|
217 |
+
return $this->getMfaController();
|
|
|
|
|
|
|
|
|
218 |
}
|
219 |
|
220 |
+
public function getMfaController() :Lib\TwoFactor\MfaController {
|
221 |
+
if ( !isset( $this->mfaCon ) ) {
|
222 |
+
$this->mfaCon = ( new Lib\TwoFactor\MfaController() )->setMod( $this );
|
223 |
+
}
|
224 |
+
return $this->mfaCon;
|
225 |
}
|
226 |
|
227 |
/**
|
241 |
$this->getOptions()->setOpt( 'enable_google_authenticator', $enable ? 'Y' : 'N' );
|
242 |
}
|
243 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
public function getTextOptDefault( string $key ) :string {
|
245 |
|
246 |
switch ( $key ) {
|
src/lib/src/Modules/LoginGuard/Options.php
CHANGED
@@ -7,7 +7,15 @@ use FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
|
7 |
class Options extends BaseShield\Options {
|
8 |
|
9 |
public function getBotProtectionLocations() :array {
|
10 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
}
|
12 |
|
13 |
public function getLoginIntentMinutes() :int {
|
@@ -19,15 +27,15 @@ class Options extends BaseShield\Options {
|
|
19 |
|
20 |
public function getAntiBotFormSelectors() :array {
|
21 |
$ids = $this->getOpt( 'antibot_form_ids', [] );
|
22 |
-
return
|
23 |
}
|
24 |
|
25 |
public function getCooldownInterval() :int {
|
26 |
-
return
|
27 |
}
|
28 |
|
29 |
public function getCustomLoginPath() :string {
|
30 |
-
return
|
31 |
}
|
32 |
|
33 |
public function getEmail2FaRoles() :array {
|
@@ -47,21 +55,17 @@ class Options extends BaseShield\Options {
|
|
47 |
}
|
48 |
|
49 |
public function getMfaSkip() :int { // seconds
|
50 |
-
return DAY_IN_SECONDS*( $this->isPremium() ?
|
51 |
}
|
52 |
|
53 |
public function getYubikeyAppId() :string {
|
54 |
-
return
|
55 |
}
|
56 |
|
57 |
public function isMfaSkip() :bool {
|
58 |
return $this->getMfaSkip() > 0;
|
59 |
}
|
60 |
|
61 |
-
public function isChainedAuth() :bool {
|
62 |
-
return $this->isOpt( 'enable_chained_authentication', 'Y' );
|
63 |
-
}
|
64 |
-
|
65 |
public function isEmailAuthenticationActive() :bool {
|
66 |
return $this->getIfCanSendEmailVerified() && $this->isEnabledEmailAuth();
|
67 |
}
|
@@ -70,13 +74,16 @@ class Options extends BaseShield\Options {
|
|
70 |
return $this->isOpt( 'enable_email_authentication', 'Y' );
|
71 |
}
|
72 |
|
|
|
|
|
|
|
|
|
73 |
public function isEnabledCooldown() :bool {
|
74 |
return $this->getCooldownInterval() > 0;
|
75 |
}
|
76 |
|
77 |
public function isEnabledGaspCheck() :bool {
|
78 |
-
return $this->isOpt( 'enable_login_gasp_check', 'Y' )
|
79 |
-
&& !$this->isEnabledAntiBot();
|
80 |
}
|
81 |
|
82 |
public function isEnabledAntiBot() :bool {
|
@@ -124,10 +131,6 @@ class Options extends BaseShield\Options {
|
|
124 |
return in_array( $location, is_array( $locs ) ? $locs : $this->getOptDefault( 'bot_protection_locations' ) );
|
125 |
}
|
126 |
|
127 |
-
public function isUseLoginIntentPage() :bool {
|
128 |
-
return $this->isOpt( 'use_login_intent_page', true );
|
129 |
-
}
|
130 |
-
|
131 |
public function isEnabledYubikey() :bool {
|
132 |
return $this->isOpt( 'enable_yubikey', 'Y' ) && $this->isYubikeyConfigReady();
|
133 |
}
|
7 |
class Options extends BaseShield\Options {
|
8 |
|
9 |
public function getBotProtectionLocations() :array {
|
10 |
+
return $this->getOpt( 'bot_protection_locations' );
|
11 |
+
}
|
12 |
+
|
13 |
+
public function getHiddenLoginRedirect() :string {
|
14 |
+
return $this->getOpt( 'rename_wplogin_redirect' );
|
15 |
+
}
|
16 |
+
|
17 |
+
public function getLoginIntentMaxAttempts() :int {
|
18 |
+
return (int)max( 1, apply_filters( 'shield/2fa_max_attempts', $this->getDef( 'login_intent_max_attempts' ) ) );
|
19 |
}
|
20 |
|
21 |
public function getLoginIntentMinutes() :int {
|
27 |
|
28 |
public function getAntiBotFormSelectors() :array {
|
29 |
$ids = $this->getOpt( 'antibot_form_ids', [] );
|
30 |
+
return $this->isPremium() ? $ids : [];
|
31 |
}
|
32 |
|
33 |
public function getCooldownInterval() :int {
|
34 |
+
return $this->getOpt( 'login_limit_interval' );
|
35 |
}
|
36 |
|
37 |
public function getCustomLoginPath() :string {
|
38 |
+
return $this->getOpt( 'rename_wplogin_path', '' );
|
39 |
}
|
40 |
|
41 |
public function getEmail2FaRoles() :array {
|
55 |
}
|
56 |
|
57 |
public function getMfaSkip() :int { // seconds
|
58 |
+
return DAY_IN_SECONDS*( $this->isPremium() ? $this->getOpt( 'mfa_skip', 0 ) : 0 );
|
59 |
}
|
60 |
|
61 |
public function getYubikeyAppId() :string {
|
62 |
+
return $this->getOpt( 'yubikey_app_id', '' );
|
63 |
}
|
64 |
|
65 |
public function isMfaSkip() :bool {
|
66 |
return $this->getMfaSkip() > 0;
|
67 |
}
|
68 |
|
|
|
|
|
|
|
|
|
69 |
public function isEmailAuthenticationActive() :bool {
|
70 |
return $this->getIfCanSendEmailVerified() && $this->isEnabledEmailAuth();
|
71 |
}
|
74 |
return $this->isOpt( 'enable_email_authentication', 'Y' );
|
75 |
}
|
76 |
|
77 |
+
public function isEnabledSmsAuth() :bool {
|
78 |
+
return $this->isOpt( 'enable_sms_auth', 'Y' );
|
79 |
+
}
|
80 |
+
|
81 |
public function isEnabledCooldown() :bool {
|
82 |
return $this->getCooldownInterval() > 0;
|
83 |
}
|
84 |
|
85 |
public function isEnabledGaspCheck() :bool {
|
86 |
+
return $this->isOpt( 'enable_login_gasp_check', 'Y' ) && !$this->isEnabledAntiBot();
|
|
|
87 |
}
|
88 |
|
89 |
public function isEnabledAntiBot() :bool {
|
131 |
return in_array( $location, is_array( $locs ) ? $locs : $this->getOptDefault( 'bot_protection_locations' ) );
|
132 |
}
|
133 |
|
|
|
|
|
|
|
|
|
134 |
public function isEnabledYubikey() :bool {
|
135 |
return $this->isOpt( 'enable_yubikey', 'Y' ) && $this->isYubikeyConfigReady();
|
136 |
}
|
src/lib/src/Modules/LoginGuard/Processor.php
CHANGED
@@ -15,17 +15,12 @@ class Processor extends BaseShield\Processor {
|
|
15 |
if ( Services::WpGeneral()->isXmlrpc() && $mod->isXmlrpcBypass() ) {
|
16 |
return;
|
17 |
}
|
18 |
-
|
19 |
-
// /** @var Options $opts */
|
20 |
-
// $opts = $this->getOptions();
|
21 |
-
// var_dump( $opts->getEmail2FaRoles() );
|
22 |
-
// die(0);
|
23 |
-
//;
|
24 |
( new Lib\Rename\RenameLogin() )
|
25 |
->setMod( $mod )
|
26 |
->execute();
|
27 |
|
28 |
-
$mod->
|
29 |
}
|
30 |
|
31 |
public function onWpInit() {
|
15 |
if ( Services::WpGeneral()->isXmlrpc() && $mod->isXmlrpcBypass() ) {
|
16 |
return;
|
17 |
}
|
18 |
+
|
|
|
|
|
|
|
|
|
|
|
19 |
( new Lib\Rename\RenameLogin() )
|
20 |
->setMod( $mod )
|
21 |
->execute();
|
22 |
|
23 |
+
$mod->getMfaController()->execute();
|
24 |
}
|
25 |
|
26 |
public function onWpInit() {
|
src/lib/src/Modules/LoginGuard/Strings.php
CHANGED
@@ -111,8 +111,8 @@ class Strings extends Base\Strings {
|
|
111 |
break;
|
112 |
|
113 |
case 'section_2fa_ga' :
|
114 |
-
$title = __( '
|
115 |
-
$titleShort = __( '
|
116 |
$summary = [
|
117 |
sprintf( '%s - %s', __( 'Purpose', 'wp-simple-firewall' ), __( 'Verifies the identity of users who log in to your site using Google Authenticator one-time-passwords.', 'wp-simple-firewall' ) ),
|
118 |
sprintf( '%s: %s', __( 'Note', 'wp-simple-firewall' ), __( 'You may combine multiple authentication factors for increased security.', 'wp-simple-firewall' ) )
|
@@ -168,13 +168,29 @@ class Strings extends Base\Strings {
|
|
168 |
break;
|
169 |
|
170 |
case 'rename_wplogin_path' :
|
171 |
-
$name = __( 'Hide WP Login
|
172 |
-
$summary = __( 'Hide The WordPress Login
|
173 |
-
$desc =
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
break;
|
179 |
|
180 |
case 'enable_chained_authentication' :
|
@@ -183,9 +199,30 @@ class Strings extends Base\Strings {
|
|
183 |
$desc = __( 'When enabled, all multi-factor authentication methods will be applied to a user login. Disable to require only one to login.', 'wp-simple-firewall' );
|
184 |
break;
|
185 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
case 'mfa_skip' :
|
187 |
-
$name = __( '
|
188 |
-
$summary = __( 'A User Can Bypass
|
189 |
$desc = __( 'Enter the number of days a user can bypass future MFA after a successful MFA-login. 0 to disable.', 'wp-simple-firewall' );
|
190 |
break;
|
191 |
|
111 |
break;
|
112 |
|
113 |
case 'section_2fa_ga' :
|
114 |
+
$title = __( 'One-Time Passwords', 'wp-simple-firewall' );
|
115 |
+
$titleShort = __( 'One-Time Passwords', 'wp-simple-firewall' );
|
116 |
$summary = [
|
117 |
sprintf( '%s - %s', __( 'Purpose', 'wp-simple-firewall' ), __( 'Verifies the identity of users who log in to your site using Google Authenticator one-time-passwords.', 'wp-simple-firewall' ) ),
|
118 |
sprintf( '%s: %s', __( 'Note', 'wp-simple-firewall' ), __( 'You may combine multiple authentication factors for increased security.', 'wp-simple-firewall' ) )
|
168 |
break;
|
169 |
|
170 |
case 'rename_wplogin_path' :
|
171 |
+
$name = __( 'Hide WP Login & Admin', 'wp-simple-firewall' );
|
172 |
+
$summary = __( 'Hide The WordPress Login And Admin Areas', 'wp-simple-firewall' );
|
173 |
+
$desc = [
|
174 |
+
__( 'Creating a path here will disable your wp-login.php', 'wp-simple-firewall' ),
|
175 |
+
sprintf( __( 'Only letters and numbers are permitted: %s', 'wp-simple-firewall' ), '<strong>abc123</strong>' ),
|
176 |
+
sprintf( __( 'Your current login URL is: %s', 'wp-simple-firewall' ), '<br /><strong> '.wp_login_url().'</strong>' )
|
177 |
+
];
|
178 |
+
break;
|
179 |
+
|
180 |
+
case 'rename_wplogin_redirect' :
|
181 |
+
$name = __( 'WP Login & Admin Redirect', 'wp-simple-firewall' );
|
182 |
+
$summary = __( 'Automatic Redirect URL For Hidden Pages', 'wp-simple-firewall' );
|
183 |
+
$desc = [
|
184 |
+
__( 'Automatically redirect requests to this location for the hidden pages.', 'wp-simple-firewall' ),
|
185 |
+
sprintf( '%s: %s',
|
186 |
+
__( 'Note', 'wp-simple-firewall' ),
|
187 |
+
__( 'Leave this blank to serve a standard "404 Not Found" error page.', 'wp-simple-firewall' )
|
188 |
+
),
|
189 |
+
sprintf( '%s: %s',
|
190 |
+
__( 'Important', 'wp-simple-firewall' ),
|
191 |
+
sprintf( __( 'Use relative paths e.g. %s redirects to your homepage.', 'wp-simple-firewall' ), '<code>/</code>' )
|
192 |
+
),
|
193 |
+
];
|
194 |
break;
|
195 |
|
196 |
case 'enable_chained_authentication' :
|
199 |
$desc = __( 'When enabled, all multi-factor authentication methods will be applied to a user login. Disable to require only one to login.', 'wp-simple-firewall' );
|
200 |
break;
|
201 |
|
202 |
+
case 'mfa_verify_page' :
|
203 |
+
$name = __( 'MFA Verification Page', 'wp-simple-firewall' );
|
204 |
+
$summary = __( 'Type Of MFA Verification Page', 'wp-simple-firewall' );
|
205 |
+
$desc = [
|
206 |
+
__( 'Choose the type of page provided to users for MFA verification.', 'wp-simple-firewall' ),
|
207 |
+
sprintf( '%s - %s', __( 'Note', 'wp-simple-firewall' ),
|
208 |
+
__( 'Choose the Custom Shield page if there are conflicts or issues with the WP Login page for 2FA.', 'wp-simple-firewall' ) ),
|
209 |
+
sprintf( '%s - %s', __( 'Note', 'wp-simple-firewall' ),
|
210 |
+
__( 'WP Login page option is only available for WordPress v4.0 and above.', 'wp-simple-firewall' ) ),
|
211 |
+
];
|
212 |
+
break;
|
213 |
+
|
214 |
+
case 'mfa_user_setup_pages' :
|
215 |
+
$name = __( 'User 2FA Setup', 'wp-simple-firewall' );
|
216 |
+
$summary = __( 'User 2FA Setup Page Locations', 'wp-simple-firewall' );
|
217 |
+
$desc = [
|
218 |
+
__( 'Specify pages available to users to configure 2FA on their account.', 'wp-simple-firewall' ),
|
219 |
+
__( 'At least 1 option must be provided and defaults to the user profile page within the WP admin area.', 'wp-simple-firewall' )
|
220 |
+
];
|
221 |
+
break;
|
222 |
+
|
223 |
case 'mfa_skip' :
|
224 |
+
$name = __( '2FA Remember Me', 'wp-simple-firewall' );
|
225 |
+
$summary = __( 'A User Can Bypass 2FA For The Set Number Of Days', 'wp-simple-firewall' );
|
226 |
$desc = __( 'Enter the number of days a user can bypass future MFA after a successful MFA-login. 0 to disable.', 'wp-simple-firewall' );
|
227 |
break;
|
228 |
|
src/lib/src/Modules/Plugin/AjaxHandler.php
CHANGED
@@ -131,14 +131,14 @@ class AjaxHandler extends Shield\Modules\BaseShield\AjaxHandler {
|
|
131 |
}
|
132 |
|
133 |
private function ajaxExec_DeleteForceOff() :array {
|
134 |
-
$
|
135 |
-
|
136 |
-
|
137 |
-
if ( $
|
138 |
$this->getMod()
|
139 |
-
->setFlashAdminNotice( __( 'File could not be automatically removed.', 'wp-simple-firewall' ), true );
|
140 |
}
|
141 |
-
return [ 'success' => !$
|
142 |
}
|
143 |
|
144 |
private function ajaxExec_RenderTableAdminNotes() :array {
|
131 |
}
|
132 |
|
133 |
private function ajaxExec_DeleteForceOff() :array {
|
134 |
+
$stillActive = $this->getCon()
|
135 |
+
->deleteForceOffFile()
|
136 |
+
->getIfForceOffActive();
|
137 |
+
if ( $stillActive ) {
|
138 |
$this->getMod()
|
139 |
+
->setFlashAdminNotice( __( 'File could not be automatically removed.', 'wp-simple-firewall' ), null, true );
|
140 |
}
|
141 |
+
return [ 'success' => !$stillActive ];
|
142 |
}
|
143 |
|
144 |
private function ajaxExec_RenderTableAdminNotes() :array {
|
src/lib/src/Modules/Plugin/Lib/Debug/Collate.php
CHANGED
@@ -227,7 +227,7 @@ class Collate {
|
|
227 |
$licPing->lookup_url_stub = $con->getModule_License()->getOptions()->getDef( 'license_store_url_api' );
|
228 |
$data[ 'Ping License Server' ] = $licPing->ping() ? 'Yes' : 'No';
|
229 |
|
230 |
-
$data[ 'Write TMP/Cache DIR' ] = $con->
|
231 |
|
232 |
return $data;
|
233 |
}
|
227 |
$licPing->lookup_url_stub = $con->getModule_License()->getOptions()->getDef( 'license_store_url_api' );
|
228 |
$data[ 'Ping License Server' ] = $licPing->ping() ? 'Yes' : 'No';
|
229 |
|
230 |
+
$data[ 'Write TMP/Cache DIR' ] = $con->cache_dir_handler->dirExists() ? 'Yes: '.$con->getPluginCachePath() : 'No';
|
231 |
|
232 |
return $data;
|
233 |
}
|
src/lib/src/Modules/Plugin/Lib/TestCacheDirWrite.php
CHANGED
@@ -41,13 +41,19 @@ class TestCacheDirWrite {
|
|
41 |
|
42 |
$FS = Services::WpFs();
|
43 |
|
44 |
-
$testDir = $this->getCon()->paths->forCacheItem(
|
|
|
|
|
|
|
|
|
45 |
$FS->mkdir( $testDir );
|
46 |
if ( $FS->isDir( $testDir ) ) {
|
47 |
$file = path_join( $testDir, uniqid() );
|
48 |
$FS->touch( $file );
|
49 |
$canTouchFile = $FS->isFile( $file );
|
|
|
50 |
$FS->deleteDir( $testDir );
|
|
|
51 |
$canWrite = $canTouchFile && !$FS->isDir( $testDir );
|
52 |
}
|
53 |
return $canWrite;
|
@@ -61,9 +67,10 @@ class TestCacheDirWrite {
|
|
61 |
$testFile = $this->getCon()->paths->forCacheItem( 'test_write_file.txt' );
|
62 |
$uniq = uniqid();
|
63 |
$FS->putFileContent( $testFile, $uniq );
|
64 |
-
if ( $FS->
|
|
|
65 |
$FS->deleteFile( $testFile );
|
66 |
-
$canWrite = !$FS->exists( $testFile );
|
67 |
}
|
68 |
return $canWrite;
|
69 |
}
|
41 |
|
42 |
$FS = Services::WpFs();
|
43 |
|
44 |
+
$testDir = $this->getCon()->paths->forCacheItem( 'test-dir' );
|
45 |
+
if ( $FS->isFile( $testDir ) ) {
|
46 |
+
$FS->deleteFile( $testDir );
|
47 |
+
}
|
48 |
+
|
49 |
$FS->mkdir( $testDir );
|
50 |
if ( $FS->isDir( $testDir ) ) {
|
51 |
$file = path_join( $testDir, uniqid() );
|
52 |
$FS->touch( $file );
|
53 |
$canTouchFile = $FS->isFile( $file );
|
54 |
+
$FS->deleteFile( $file );
|
55 |
$FS->deleteDir( $testDir );
|
56 |
+
clearstatcache();
|
57 |
$canWrite = $canTouchFile && !$FS->isDir( $testDir );
|
58 |
}
|
59 |
return $canWrite;
|
67 |
$testFile = $this->getCon()->paths->forCacheItem( 'test_write_file.txt' );
|
68 |
$uniq = uniqid();
|
69 |
$FS->putFileContent( $testFile, $uniq );
|
70 |
+
if ( $FS->isFile( $testFile ) ) {
|
71 |
+
$canWrite = $FS->getFileContent( $testFile ) == $uniq;
|
72 |
$FS->deleteFile( $testFile );
|
73 |
+
$canWrite = $canWrite && !$FS->exists( $testFile );
|
74 |
}
|
75 |
return $canWrite;
|
76 |
}
|
src/lib/src/Modules/Plugin/ModCon.php
CHANGED
@@ -130,7 +130,7 @@ class ModCon extends BaseShield\ModCon {
|
|
130 |
$success = false;
|
131 |
$msg = $e->getMessage();
|
132 |
}
|
133 |
-
$this->setFlashAdminNotice( $msg, !$success );
|
134 |
Services::Response()->redirect(
|
135 |
$this->getCon()->getModule_Insights()->getUrl_SubInsightsPage( 'importexport' )
|
136 |
);
|
130 |
$success = false;
|
131 |
$msg = $e->getMessage();
|
132 |
}
|
133 |
+
$this->setFlashAdminNotice( $msg, null, !$success );
|
134 |
Services::Response()->redirect(
|
135 |
$this->getCon()->getModule_Insights()->getUrl_SubInsightsPage( 'importexport' )
|
136 |
);
|
src/lib/src/Modules/Plugin/WpCli.php
CHANGED
@@ -2,20 +2,17 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Plugin;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Plugin;
|
7 |
|
8 |
-
class WpCli extends
|
9 |
|
10 |
-
|
11 |
-
* @inheritDoc
|
12 |
-
*/
|
13 |
-
protected function getCmdHandlers() :array {
|
14 |
return [
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
];
|
20 |
}
|
21 |
}
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\Plugin;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Plugin;
|
7 |
|
8 |
+
class WpCli extends BaseShield\WpCli {
|
9 |
|
10 |
+
protected function enumCmdHandlers() :array {
|
|
|
|
|
|
|
11 |
return [
|
12 |
+
Plugin\WpCli\ForceOff::class,
|
13 |
+
Plugin\WpCli\Reset::class,
|
14 |
+
Plugin\WpCli\Export::class,
|
15 |
+
Plugin\WpCli\Import::class,
|
16 |
];
|
17 |
}
|
18 |
}
|
src/lib/src/Modules/SecurityAdmin/Lib/SecurityAdmin/Restrictions/Users.php
CHANGED
@@ -46,12 +46,12 @@ class Users extends Base {
|
|
46 |
public function restrictSetUserRole( $userId, $role, $oldRoles = [] ) {
|
47 |
$WPU = Services::WpUsers();
|
48 |
|
49 |
-
$role = strtolower( $role );
|
50 |
if ( !is_array( $oldRoles ) ) {
|
51 |
$oldRoles = [];
|
52 |
}
|
53 |
|
54 |
-
if ( $WPU->getCurrentWpUserId() !== $userId ) {
|
55 |
$newRoleIsAdmin = $role == 'administrator';
|
56 |
|
57 |
// 1. Setting administrator role where it doesn't previously exist
|
@@ -87,7 +87,7 @@ class Users extends Base {
|
|
87 |
public function restrictRemoveUserRole( $userId, $role ) {
|
88 |
$WPU = Services::WpUsers();
|
89 |
|
90 |
-
if ( $WPU->getCurrentWpUserId() !== $userId && strtolower( $role ) === 'administrator' ) {
|
91 |
$modifiedUser = $WPU->getUserById( $userId );
|
92 |
|
93 |
remove_action( 'add_user_role', [ $this, 'restrictAddUserRole' ], 100 );
|
@@ -113,7 +113,7 @@ class Users extends Base {
|
|
113 |
* @return array[]
|
114 |
*/
|
115 |
public function restrictEditableRoles( $roles ) {
|
116 |
-
if ( isset( $roles[ 'administrator' ] ) ) {
|
117 |
unset( $roles[ 'administrator' ] );
|
118 |
}
|
119 |
return $roles;
|
46 |
public function restrictSetUserRole( $userId, $role, $oldRoles = [] ) {
|
47 |
$WPU = Services::WpUsers();
|
48 |
|
49 |
+
$role = strtolower( (string)$role );
|
50 |
if ( !is_array( $oldRoles ) ) {
|
51 |
$oldRoles = [];
|
52 |
}
|
53 |
|
54 |
+
if ( !empty( $role ) && $WPU->getCurrentWpUserId() !== (int)$userId ) {
|
55 |
$newRoleIsAdmin = $role == 'administrator';
|
56 |
|
57 |
// 1. Setting administrator role where it doesn't previously exist
|
87 |
public function restrictRemoveUserRole( $userId, $role ) {
|
88 |
$WPU = Services::WpUsers();
|
89 |
|
90 |
+
if ( $WPU->getCurrentWpUserId() !== $userId && strtolower( (string)$role ) === 'administrator' ) {
|
91 |
$modifiedUser = $WPU->getUserById( $userId );
|
92 |
|
93 |
remove_action( 'add_user_role', [ $this, 'restrictAddUserRole' ], 100 );
|
113 |
* @return array[]
|
114 |
*/
|
115 |
public function restrictEditableRoles( $roles ) {
|
116 |
+
if ( is_array( $roles ) && isset( $roles[ 'administrator' ] ) ) {
|
117 |
unset( $roles[ 'administrator' ] );
|
118 |
}
|
119 |
return $roles;
|
src/lib/src/Modules/SecurityAdmin/WpCli.php
CHANGED
@@ -1,20 +1,17 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\SecurityAdmin;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\SecurityAdmin;
|
7 |
|
8 |
-
class WpCli extends
|
9 |
|
10 |
-
|
11 |
-
* @inheritDoc
|
12 |
-
*/
|
13 |
-
protected function getCmdHandlers() :array {
|
14 |
return [
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
];
|
19 |
}
|
20 |
}
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\SecurityAdmin;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\BaseShield;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\SecurityAdmin;
|
7 |
|
8 |
+
class WpCli extends BaseShield\WpCli {
|
9 |
|
10 |
+
protected function enumCmdHandlers() :array {
|
|
|
|
|
|
|
11 |
return [
|
12 |
+
SecurityAdmin\WpCli\Pin::class,
|
13 |
+
SecurityAdmin\WpCli\AdminAdd::class,
|
14 |
+
SecurityAdmin\WpCli\AdminRemove::class
|
15 |
];
|
16 |
}
|
17 |
}
|
src/lib/src/Modules/Traffic/Lib/TrafficTable/LoadRawTableData.php
CHANGED
@@ -137,10 +137,10 @@ class LoadRawTableData extends BaseLoadTableData {
|
|
137 |
|
138 |
return sprintf( '<div>%s</div>', implode( '</div><div>', [
|
139 |
sprintf( '%s: %s', __( 'Response', 'wp-simple-firewall' ),
|
140 |
-
sprintf( '<span class="badge
|
141 |
sprintf( '%s: %s', __( 'Offense', 'wp-simple-firewall' ),
|
142 |
sprintf(
|
143 |
-
'<span class="badge
|
144 |
@$this->log->meta[ 'offense' ] ? 'danger' : 'info',
|
145 |
@$this->log->meta[ 'offense' ] ? __( 'Yes', 'wp-simple-firewall' ) : __( 'No', 'wp-simple-firewall' )
|
146 |
)
|
@@ -168,7 +168,7 @@ class LoadRawTableData extends BaseLoadTableData {
|
|
168 |
$this->ipInfo[ '' ] = 'n/a';
|
169 |
}
|
170 |
else {
|
171 |
-
$badgeTemplate = '<span class="badge
|
172 |
$status = __( 'No Record', 'wp-simple-firewall' );
|
173 |
|
174 |
$record = ( new LookupIpOnList() )
|
137 |
|
138 |
return sprintf( '<div>%s</div>', implode( '</div><div>', [
|
139 |
sprintf( '%s: %s', __( 'Response', 'wp-simple-firewall' ),
|
140 |
+
sprintf( '<span class="badge bg-%s">%s</span>', $codeType, $this->log->meta[ 'code' ] ) ),
|
141 |
sprintf( '%s: %s', __( 'Offense', 'wp-simple-firewall' ),
|
142 |
sprintf(
|
143 |
+
'<span class="badge bg-%s">%s</span>',
|
144 |
@$this->log->meta[ 'offense' ] ? 'danger' : 'info',
|
145 |
@$this->log->meta[ 'offense' ] ? __( 'Yes', 'wp-simple-firewall' ) : __( 'No', 'wp-simple-firewall' )
|
146 |
)
|
168 |
$this->ipInfo[ '' ] = 'n/a';
|
169 |
}
|
170 |
else {
|
171 |
+
$badgeTemplate = '<span class="badge bg-%s">%s</span>';
|
172 |
$status = __( 'No Record', 'wp-simple-firewall' );
|
173 |
|
174 |
$record = ( new LookupIpOnList() )
|
src/lib/src/Modules/Traffic/ModCon.php
CHANGED
@@ -42,12 +42,4 @@ class ModCon extends BaseShield\ModCon {
|
|
42 |
&& $this->getCon()->getModule_Data()->getDbH_ReqLogs()->isReady()
|
43 |
&& parent::isReadyToExecute();
|
44 |
}
|
45 |
-
|
46 |
-
/**
|
47 |
-
* @inheritDoc
|
48 |
-
* @deprecated 12.1
|
49 |
-
*/
|
50 |
-
public function getDbHandlers( $bInitAll = false ) {
|
51 |
-
return [];
|
52 |
-
}
|
53 |
}
|
42 |
&& $this->getCon()->getModule_Data()->getDbH_ReqLogs()->isReady()
|
43 |
&& parent::isReadyToExecute();
|
44 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
}
|
src/lib/src/Modules/UserManagement/Lib/Password/UserPasswordHandler.php
CHANGED
@@ -10,8 +10,6 @@ use ZxcvbnPhp\Zxcvbn;
|
|
10 |
|
11 |
/**
|
12 |
* Referenced some of https://github.com/BenjaminNelan/PwnedPasswordChecker
|
13 |
-
* Class UserPasswordController
|
14 |
-
* @package FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Lib\Password
|
15 |
*/
|
16 |
class UserPasswordHandler extends ExecOnceModConsumer {
|
17 |
|
@@ -26,11 +24,7 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
26 |
protected function run() {
|
27 |
$this->setupLoginCaptureHooks();
|
28 |
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ] );
|
29 |
-
add_action( '
|
30 |
-
if ( $user instanceof \WP_User ) {
|
31 |
-
$this->onPasswordReset( $user );
|
32 |
-
}
|
33 |
-
}, 100 );
|
34 |
add_filter( 'registration_errors', [ $this, 'checkPassword' ], 100, 3 );
|
35 |
add_action( 'user_profile_update_errors', [ $this, 'checkPassword' ], 100, 3 );
|
36 |
add_action( 'validate_password_reset', [ $this, 'checkPassword' ], 100, 3 );
|
@@ -45,9 +39,12 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
45 |
$failed = false;
|
46 |
}
|
47 |
catch ( \Exception $e ) {
|
48 |
-
|
|
|
49 |
}
|
50 |
-
|
|
|
|
|
51 |
}
|
52 |
}
|
53 |
|
@@ -59,11 +56,14 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
59 |
}
|
60 |
}
|
61 |
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
64 |
$meta = $this->getCon()->getUserMeta( $user );
|
65 |
unset( $meta->pass_hash );
|
66 |
-
$meta->
|
67 |
}
|
68 |
}
|
69 |
|
@@ -71,7 +71,7 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
71 |
/** @var UserManagement\Options $opts */
|
72 |
$opts = $this->getOptions();
|
73 |
if ( $opts->isPassExpirationEnabled() ) {
|
74 |
-
$startedAt =
|
75 |
if ( $startedAt > 0 && ( Services::Request()->ts() - $startedAt > $opts->getPassExpireTimeout() ) ) {
|
76 |
$this->getCon()->fireEvent( 'password_expired', [
|
77 |
'audit_params' => [
|
@@ -89,7 +89,7 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
89 |
$meta = $this->getCon()->getCurrentUserMeta();
|
90 |
|
91 |
$checkFailed = $this->getOptions()->isOpt( 'pass_force_existing', 'Y' )
|
92 |
-
&&
|
93 |
|
94 |
if ( $checkFailed ) {
|
95 |
$this->redirectToResetPassword(
|
@@ -120,7 +120,7 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
120 |
|
121 |
$msg .= ' '.__( 'For your security, please use the password section below to update your password.', 'wp-simple-firewall' );
|
122 |
$this->getMod()
|
123 |
-
->setFlashAdminNotice( $msg, true, true );
|
124 |
$this->getCon()->fireEvent( 'password_policy_force_change', [
|
125 |
'audit_params' => [
|
126 |
'user_login' => $user->user_login
|
@@ -209,7 +209,7 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
209 |
* @throws \Exception
|
210 |
*/
|
211 |
private function testPasswordMeetsMinimumStrength( string $password, int $min ) {
|
212 |
-
$score = ( new Zxcvbn() )->passwordStrength( $password )[ 'score' ];
|
213 |
|
214 |
if ( $score < $min ) {
|
215 |
/** @var UserManagement\ModCon $mod */
|
@@ -293,8 +293,5 @@ class UserPasswordHandler extends ExecOnceModConsumer {
|
|
293 |
* @param bool $failed
|
294 |
*/
|
295 |
private function setPasswordFailedFlag( \WP_User $user, bool $failed = false ) {
|
296 |
-
$this->getCon()
|
297 |
-
->getUserMeta( $user )
|
298 |
-
->pass_check_failed_at = $failed ? Services::Request()->ts() : 0;
|
299 |
}
|
300 |
}
|
10 |
|
11 |
/**
|
12 |
* Referenced some of https://github.com/BenjaminNelan/PwnedPasswordChecker
|
|
|
|
|
13 |
*/
|
14 |
class UserPasswordHandler extends ExecOnceModConsumer {
|
15 |
|
24 |
protected function run() {
|
25 |
$this->setupLoginCaptureHooks();
|
26 |
add_action( 'wp_loaded', [ $this, 'onWpLoaded' ] );
|
27 |
+
add_action( 'after_password_reset', [ $this, 'onPasswordReset' ] );
|
|
|
|
|
|
|
|
|
28 |
add_filter( 'registration_errors', [ $this, 'checkPassword' ], 100, 3 );
|
29 |
add_action( 'user_profile_update_errors', [ $this, 'checkPassword' ], 100, 3 );
|
30 |
add_action( 'validate_password_reset', [ $this, 'checkPassword' ], 100, 3 );
|
39 |
$failed = false;
|
40 |
}
|
41 |
catch ( \Exception $e ) {
|
42 |
+
// We don't fail when the PWNED API is not available.
|
43 |
+
$failed = ( $e->getCode() != 999 );
|
44 |
}
|
45 |
+
|
46 |
+
$this->getCon()
|
47 |
+
->getUserMeta( $user )->pass_check_failed_at = $failed ? Services::Request()->ts() : 0;
|
48 |
}
|
49 |
}
|
50 |
|
56 |
}
|
57 |
}
|
58 |
|
59 |
+
/**
|
60 |
+
* This hook is only available on WP 4.4+
|
61 |
+
*/
|
62 |
+
public function onPasswordReset( $user ) {
|
63 |
+
if ( $user instanceof \WP_User && $user->ID > 0 ) {
|
64 |
$meta = $this->getCon()->getUserMeta( $user );
|
65 |
unset( $meta->pass_hash );
|
66 |
+
$meta->updatePasswordStartedAt( $user->user_pass );
|
67 |
}
|
68 |
}
|
69 |
|
71 |
/** @var UserManagement\Options $opts */
|
72 |
$opts = $this->getOptions();
|
73 |
if ( $opts->isPassExpirationEnabled() ) {
|
74 |
+
$startedAt = $this->getCon()->getCurrentUserMeta()->record->pass_started_at;
|
75 |
if ( $startedAt > 0 && ( Services::Request()->ts() - $startedAt > $opts->getPassExpireTimeout() ) ) {
|
76 |
$this->getCon()->fireEvent( 'password_expired', [
|
77 |
'audit_params' => [
|
89 |
$meta = $this->getCon()->getCurrentUserMeta();
|
90 |
|
91 |
$checkFailed = $this->getOptions()->isOpt( 'pass_force_existing', 'Y' )
|
92 |
+
&& $meta->pass_check_failed_at > 0;
|
93 |
|
94 |
if ( $checkFailed ) {
|
95 |
$this->redirectToResetPassword(
|
120 |
|
121 |
$msg .= ' '.__( 'For your security, please use the password section below to update your password.', 'wp-simple-firewall' );
|
122 |
$this->getMod()
|
123 |
+
->setFlashAdminNotice( $msg, $user, true, true );
|
124 |
$this->getCon()->fireEvent( 'password_policy_force_change', [
|
125 |
'audit_params' => [
|
126 |
'user_login' => $user->user_login
|
209 |
* @throws \Exception
|
210 |
*/
|
211 |
private function testPasswordMeetsMinimumStrength( string $password, int $min ) {
|
212 |
+
$score = (int)( new Zxcvbn() )->passwordStrength( $password )[ 'score' ];
|
213 |
|
214 |
if ( $score < $min ) {
|
215 |
/** @var UserManagement\ModCon $mod */
|
293 |
* @param bool $failed
|
294 |
*/
|
295 |
private function setPasswordFailedFlag( \WP_User $user, bool $failed = false ) {
|
|
|
|
|
|
|
296 |
}
|
297 |
}
|
src/lib/src/Modules/UserManagement/Lib/Registration/EmailValidate.php
CHANGED
@@ -2,31 +2,30 @@
|
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Lib\Registration;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement;
|
7 |
use FernleafSystems\Wordpress\Services\Utilities\Integrations\WpHashes\Verify\Email;
|
8 |
|
9 |
-
class EmailValidate {
|
10 |
-
|
11 |
-
use ModConsumer;
|
12 |
|
13 |
private $track;
|
14 |
|
15 |
-
|
16 |
-
/** @var UserManagement\Options $
|
17 |
-
$
|
18 |
-
if ( $
|
19 |
add_filter( 'wp_pre_insert_user_data', [ $this, 'validateNewUserEmail' ] );
|
20 |
}
|
21 |
}
|
22 |
|
23 |
/**
|
24 |
-
* @param array $
|
25 |
* @return array
|
26 |
*/
|
27 |
-
public function validateNewUserEmail( $
|
28 |
-
$email = $
|
29 |
/** @var UserManagement\Options $opts */
|
|
|
30 |
|
31 |
if ( !is_array( $this->track ) ) {
|
32 |
$this->track = [];
|
@@ -36,7 +35,6 @@ class EmailValidate {
|
|
36 |
if ( !empty( $email ) && !in_array( $email, $this->track ) ) {
|
37 |
$this->track[] = $email;
|
38 |
|
39 |
-
$opts = $this->getOptions();
|
40 |
$invalidBecause = null;
|
41 |
if ( !is_email( $email ) ) {
|
42 |
$invalidBecause = 'syntax';
|
@@ -47,12 +45,12 @@ class EmailValidate {
|
|
47 |
->getWpHashesTokenManager()
|
48 |
->getToken();
|
49 |
if ( !empty( $apiToken ) ) {
|
50 |
-
$
|
51 |
-
$
|
52 |
-
if ( is_array( $
|
53 |
-
foreach ( $
|
54 |
-
if ( !$
|
55 |
-
$invalidBecause = $
|
56 |
break;
|
57 |
}
|
58 |
}
|
@@ -80,6 +78,6 @@ class EmailValidate {
|
|
80 |
}
|
81 |
}
|
82 |
|
83 |
-
return $
|
84 |
}
|
85 |
}
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Lib\Registration;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\Common\ExecOnceModConsumer;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement;
|
7 |
use FernleafSystems\Wordpress\Services\Utilities\Integrations\WpHashes\Verify\Email;
|
8 |
|
9 |
+
class EmailValidate extends ExecOnceModConsumer {
|
|
|
|
|
10 |
|
11 |
private $track;
|
12 |
|
13 |
+
protected function run() {
|
14 |
+
/** @var UserManagement\Options $opts */
|
15 |
+
$opts = $this->getOptions();
|
16 |
+
if ( $opts->getValidateEmailOnRegistration() != 'disabled' ) {
|
17 |
add_filter( 'wp_pre_insert_user_data', [ $this, 'validateNewUserEmail' ] );
|
18 |
}
|
19 |
}
|
20 |
|
21 |
/**
|
22 |
+
* @param array $userData
|
23 |
* @return array
|
24 |
*/
|
25 |
+
public function validateNewUserEmail( $userData ) {
|
26 |
+
$email = $userData[ 'user_email' ];
|
27 |
/** @var UserManagement\Options $opts */
|
28 |
+
$opts = $this->getOptions();
|
29 |
|
30 |
if ( !is_array( $this->track ) ) {
|
31 |
$this->track = [];
|
35 |
if ( !empty( $email ) && !in_array( $email, $this->track ) ) {
|
36 |
$this->track[] = $email;
|
37 |
|
|
|
38 |
$invalidBecause = null;
|
39 |
if ( !is_email( $email ) ) {
|
40 |
$invalidBecause = 'syntax';
|
45 |
->getWpHashesTokenManager()
|
46 |
->getToken();
|
47 |
if ( !empty( $apiToken ) ) {
|
48 |
+
$checks = $opts->getEmailValidationChecks();
|
49 |
+
$verifys = ( new Email( $apiToken ) )->getEmailVerification( $email );
|
50 |
+
if ( is_array( $verifys ) ) {
|
51 |
+
foreach ( $verifys as $verifyKey => $valid ) {
|
52 |
+
if ( !$valid && in_array( $verifyKey, $checks ) ) {
|
53 |
+
$invalidBecause = $verifyKey;
|
54 |
break;
|
55 |
}
|
56 |
}
|
78 |
}
|
79 |
}
|
80 |
|
81 |
+
return $userData;
|
82 |
}
|
83 |
}
|
src/lib/src/Modules/UserManagement/Lib/Suspend/Base.php
CHANGED
@@ -1,38 +1,37 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Lib\Suspend;
|
4 |
|
5 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Modules\
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Users\ShieldUserMeta;
|
7 |
|
8 |
-
abstract class Base {
|
9 |
-
|
10 |
-
use ModConsumer;
|
11 |
|
12 |
const HOOK_PRIORITY = 1000; // so only authenticated user is notified of account state.
|
13 |
|
14 |
-
|
15 |
add_filter( 'authenticate', [ $this, 'checkUser' ], static::HOOK_PRIORITY );
|
16 |
}
|
17 |
|
18 |
/**
|
19 |
* Should be a filter added to WordPress's "authenticate" filter, but before WordPress performs
|
20 |
-
*
|
21 |
* @param null|\WP_User|\WP_Error $user
|
22 |
* @return \WP_User|\WP_Error
|
23 |
*/
|
24 |
public function checkUser( $user ) {
|
25 |
if ( $user instanceof \WP_User ) {
|
26 |
-
$
|
|
|
|
|
|
|
27 |
}
|
28 |
return $user;
|
29 |
}
|
30 |
|
31 |
/**
|
32 |
* Test the User and its Meta and if it fails return \WP_Error; Always return Error or User
|
33 |
-
* @param \WP_User $user
|
34 |
-
* @param ShieldUserMeta $meta
|
35 |
* @return \WP_Error|\WP_User
|
36 |
*/
|
37 |
-
abstract protected function processUser( \WP_User $user, $meta );
|
38 |
}
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Lib\Suspend;
|
4 |
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\Base\Common\ExecOnceModConsumer;
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Users\ShieldUserMeta;
|
7 |
|
8 |
+
abstract class Base extends ExecOnceModConsumer {
|
|
|
|
|
9 |
|
10 |
const HOOK_PRIORITY = 1000; // so only authenticated user is notified of account state.
|
11 |
|
12 |
+
protected function run() {
|
13 |
add_filter( 'authenticate', [ $this, 'checkUser' ], static::HOOK_PRIORITY );
|
14 |
}
|
15 |
|
16 |
/**
|
17 |
* Should be a filter added to WordPress's "authenticate" filter, but before WordPress performs
|
18 |
+
* its own authentication (theirs is priority 30, so we could go in at around 20).
|
19 |
* @param null|\WP_User|\WP_Error $user
|
20 |
* @return \WP_User|\WP_Error
|
21 |
*/
|
22 |
public function checkUser( $user ) {
|
23 |
if ( $user instanceof \WP_User ) {
|
24 |
+
$meta = $this->getCon()->getUserMeta( $user );
|
25 |
+
if ( !empty( $meta ) ) {
|
26 |
+
$user = $this->processUser( $user, $meta );
|
27 |
+
}
|
28 |
}
|
29 |
return $user;
|
30 |
}
|
31 |
|
32 |
/**
|
33 |
* Test the User and its Meta and if it fails return \WP_Error; Always return Error or User
|
|
|
|
|
34 |
* @return \WP_Error|\WP_User
|
35 |
*/
|
36 |
+
abstract protected function processUser( \WP_User $user, ShieldUserMeta $meta );
|
37 |
}
|
src/lib/src/Modules/UserManagement/Lib/Suspend/Idle.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<?php
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Lib\Suspend;
|
4 |
|
@@ -9,17 +9,15 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
9 |
class Idle extends Base {
|
10 |
|
11 |
/**
|
12 |
-
* @param \WP_User $user
|
13 |
-
* @param ShieldUserMeta $meta
|
14 |
* @return \WP_Error|\WP_User
|
15 |
*/
|
16 |
-
protected function processUser( \WP_User $user, $meta ) {
|
17 |
/** @var UserManagement\Options $opts */
|
18 |
$opts = $this->getOptions();
|
19 |
|
20 |
-
$
|
21 |
|
22 |
-
if ( count( $
|
23 |
$user = new \WP_Error(
|
24 |
$this->getCon()->prefix( 'pass-expired' ),
|
25 |
implode( ' ', [
|
@@ -35,13 +33,9 @@ class Idle extends Base {
|
|
35 |
return $user;
|
36 |
}
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
protected function isLastVerifiedAtExpired( $oMeta ) {
|
43 |
-
/** @var UserManagement\Options $oOpts */
|
44 |
-
$oOpts = $this->getOptions();
|
45 |
-
return ( Services::Request()->ts() - $oMeta->getLastVerifiedAt() > $oOpts->getSuspendAutoIdleTime() );
|
46 |
}
|
47 |
}
|
1 |
+
<?php declare( strict_types=1 );
|
2 |
|
3 |
namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Lib\Suspend;
|
4 |
|
9 |
class Idle extends Base {
|
10 |
|
11 |
/**
|
|
|
|
|
12 |
* @return \WP_Error|\WP_User
|
13 |
*/
|
14 |
+
protected function processUser( \WP_User $user, ShieldUserMeta $meta ) {
|
15 |
/** @var UserManagement\Options $opts */
|
16 |
$opts = $this->getOptions();
|
17 |
|
18 |
+
$roles = array_intersect( $opts->getSuspendAutoIdleUserRoles(), array_map( 'strtolower', $user->roles ) );
|
19 |
|
20 |
+
if ( count( $roles ) > 0 && $this->isLastVerifiedAtExpired( $meta ) ) {
|
21 |
$user = new \WP_Error(
|
22 |
$this->getCon()->prefix( 'pass-expired' ),
|
23 |
implode( ' ', [
|
33 |
return $user;
|
34 |
}
|
35 |
|
36 |
+
protected function isLastVerifiedAtExpired( ShieldUserMeta $meta ) :bool {
|
37 |
+
/** @var UserManagement\Options $opts */
|
38 |
+
$opts = $this->getOptions();
|
39 |
+
return ( Services::Request()->ts() - $meta->last_verified_at > $opts->getSuspendAutoIdleTime() );
|
|
|
|
|
|
|
|
|
40 |
}
|
41 |
}
|
src/lib/src/Modules/UserManagement/Lib/Suspend/PasswordExpiry.php
CHANGED
@@ -6,23 +6,12 @@ use FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement;
|
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Users\ShieldUserMeta;
|
7 |
use FernleafSystems\Wordpress\Services\Services;
|
8 |
|
9 |
-
/**
|
10 |
-
* Class PasswordExpiry
|
11 |
-
* @package FernleafSystems\Wordpress\Plugin\Shield\Modules\UserManagement\Suspend
|
12 |
-
*/
|
13 |
class PasswordExpiry extends Base {
|
14 |
|
15 |
/**
|
16 |
-
* @var int
|
17 |
-
*/
|
18 |
-
private $nMaxPasswordAge;
|
19 |
-
|
20 |
-
/**
|
21 |
-
* @param \WP_User $user
|
22 |
-
* @param ShieldUserMeta $meta
|
23 |
* @return \WP_Error|\WP_User
|
24 |
*/
|
25 |
-
protected function processUser( \WP_User $user, $meta ) {
|
26 |
if ( $this->isPassExpired( $meta ) ) {
|
27 |
|
28 |
$user = new \WP_Error(
|
@@ -40,29 +29,17 @@ class PasswordExpiry extends Base {
|
|
40 |
return $user;
|
41 |
}
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
/** @var UserManagement\Options $oOpts */
|
49 |
-
$oOpts = $this->getOptions();
|
50 |
-
if ( empty( $oMeta->pass_started_at ) ) {
|
51 |
-
$oMeta->pass_started_at = $oMeta->first_seen_at;
|
52 |
-
}
|
53 |
-
return ( Services::Request()->ts() - $oMeta->pass_started_at > $oOpts->getPassExpireTimeout() );
|
54 |
-
}
|
55 |
-
|
56 |
-
public function getMaxPasswordAge() :int {
|
57 |
-
return (int)$this->nMaxPasswordAge;
|
58 |
}
|
59 |
|
60 |
/**
|
61 |
-
* @
|
62 |
-
* @return $this
|
63 |
*/
|
64 |
-
public function setMaxPasswordAge(
|
65 |
-
$this->nMaxPasswordAge = $nMaxPasswordAge;
|
66 |
return $this;
|
67 |
}
|
68 |
}
|
6 |
use FernleafSystems\Wordpress\Plugin\Shield\Users\ShieldUserMeta;
|
7 |
use FernleafSystems\Wordpress\Services\Services;
|
8 |
|
|
|
|
|
|
|
|
|
9 |
class PasswordExpiry extends Base {
|
10 |
|
11 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
* @return \WP_Error|\WP_User
|
13 |
*/
|
14 |
+
protected function processUser( \WP_User $user, ShieldUserMeta $meta ) {
|
15 |
if ( $this->isPassExpired( $meta ) ) {
|
16 |
|
17 |
$user = new \WP_Error(
|
29 |
return $user;
|
30 |
}
|
31 |
|
32 |
+
private function isPassExpired( ShieldUserMeta $meta ) :bool {
|
33 |
+
/** @var UserManagement\Options $opts */
|
34 |
+
$opts = $this->getOptions();
|
35 |
+
return !empty( $meta->record->pass_started_at )
|
36 |
+
&& ( Services::Request()->ts() - $meta->record->pass_started_at > $opts->getPassExpireTimeout() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
|
39 |
/**
|
40 |
+
* @deprecated 13.1
|
|
|
41 |
*/
|
42 |
+
public function setMaxPasswordAge() {
|
|
|
43 |
return $this;
|
44 |
}
|
45 |
}
|
src/{lib/src/Modules/UserManagement/Lib/Suspend/Suspended.php → li}
RENAMED
File without changes
|