__( 'Opens neverlast.ro in a new tab to compare the separate Pro edition. Lite stays complete and fully functional without it.', 'neverlast-security-lite' ), 'link.health' => __( 'Opens Health & Integrity: the health check, the file baseline, integrity comparisons and quarantine decisions.', 'neverlast-security-lite' ), 'link.password_recovery' => __( 'Opens the standard WordPress password reset. A completed administrator password reset also lifts the login freeze.', 'neverlast-security-lite' ), 'label.version' => __( 'The installed NeverLast Security Lite version.', 'neverlast-security-lite' ), 'summary.package_files' => __( 'Shows the files grouped into this finding (up to the first 50).', 'neverlast-security-lite' ), // Dashboard and report metrics. 'metric.health_score' => __( 'Score from the most recent health check, out of 100. Run the health check again after fixing an item to update it.', 'neverlast-security-lite' ), 'metric.firewall' => __( 'Current firewall state. Monitor only records matching requests; Balanced and Strict block them.', 'neverlast-security-lite' ), 'metric.baseline' => __( 'The approved snapshot of your files that integrity comparisons use. A baseline is never approved automatically.', 'neverlast-security-lite' ), 'metric.totp' => __( 'Whether authenticator-app two-factor login is active for the account you are signed in with.', 'neverlast-security-lite' ), 'metric.retained_events' => __( 'Security events kept in the local activity log. The log holds at most 5,000 rows and older events are removed by the retention setting.', 'neverlast-security-lite' ), 'metric.critical_events' => __( 'Retained events recorded with critical severity.', 'neverlast-security-lite' ), 'metric.baseline_files' => __( 'Number of files recorded in the approved baseline.', 'neverlast-security-lite' ), 'metric.latest_comparison' => __( 'Whether a stored integrity comparison is available to review or export.', 'neverlast-security-lite' ), // Severity badges. 'severity.critical' => __( 'Critical: review this first. It points to a likely compromise, a failed protection or a high-impact exposure.', 'neverlast-security-lite' ), 'severity.high' => __( 'High: review soon. A significant weakness or an unexplained change in a sensitive location.', 'neverlast-security-lite' ), 'severity.medium' => __( 'Medium: worth checking, but less likely to be urgent.', 'neverlast-security-lite' ), 'severity.low' => __( 'Low: minor or informational. Usually no immediate action is needed.', 'neverlast-security-lite' ), 'severity.warning' => __( 'Warning: an event that may need attention, such as a failed login or a suspicious request.', 'neverlast-security-lite' ), 'severity.info' => __( 'Info: a routine event recorded for context.', 'neverlast-security-lite' ), // Protection settings. 'setting.firewall_enabled' => __( 'Inspects the address, query string and submitted form data of each request that WordPress handles, plus a few routing headers, for common attack patterns. Cookies are only observed. When off, no firewall rule runs.', 'neverlast-security-lite' ), 'setting.firewall_mode' => __( 'Monitor records matching requests without blocking. Balanced blocks high-confidence attacks and suits most sites. Strict also blocks lower-confidence matches; test forms, checkout and APIs first.', 'neverlast-security-lite' ), 'setting.block_bad_user_agents' => __( 'Blocks requests whose User-Agent names a known attack or scanning tool, such as sqlmap, Nikto or WPScan. Browsers and search engines are not affected.', 'neverlast-security-lite' ), 'setting.upload_guard_enabled' => __( 'Rejects uploads with server-side script extensions such as .php or .phar, server configuration files such as .htaccess, and images that contain executable code.', 'neverlast-security-lite' ), 'setting.public_rate_limit_per_minute' => __( 'Maximum requests per minute from one visitor IP address that is not logged in. Requests over the limit are blocked in Balanced and Strict and recorded in Monitor. 0 turns the limit off.', 'neverlast-security-lite' ), 'setting.verified_bot_rate_limit_bypass' => __( 'Googlebot, Bingbot, Applebot and Yandex crawlers confirmed through forward-confirmed reverse DNS are not counted against the per-minute limit (GET and HEAD requests only). Uses your server\'s DNS resolver. Firewall inspection still applies.', 'neverlast-security-lite' ), 'setting.allowed_paths' => __( 'Exact path prefixes, one per line, whose request content is not inspected, for example a webhook that legitimately receives code-like data. Attack-tool detection and the per-minute limit still apply.', 'neverlast-security-lite' ), 'setting.verified_bot_duck_enabled' => __( 'Downloads DuckDuckGo\'s published crawler IP list once a day. Requests from those addresses with a DuckDuckBot User-Agent are not counted against the per-minute limit (GET and HEAD requests only). Off by default.', 'neverlast-security-lite' ), 'setting.verified_bot_ahrefs_enabled' => __( 'Downloads Ahrefs\' published crawler IP ranges once a day. Requests from those addresses with an AhrefsBot or AhrefsSiteAudit User-Agent are not counted against the per-minute limit (GET and HEAD requests only). Off by default.', 'neverlast-security-lite' ), 'setting.verified_bot_uptime_enabled' => __( 'Downloads UptimeRobot\'s published monitor IP list once a day. Requests from those addresses with an UptimeRobot User-Agent are not counted against the per-minute limit (GET and HEAD requests only). Off by default.', 'neverlast-security-lite' ), 'setting.login_rate_limit_enabled' => __( 'Counts failed logins for each account name and locks that account\'s login after too many failures, whichever IP addresses they come from. A successful login resets the count.', 'neverlast-security-lite' ), 'setting.login_ip_rate_limit_enabled' => __( 'Also locks out a single IP address after many failures across accounts (four times the per-account limit, at least 10). Leave off behind a proxy or CDN that makes visitors share one address.', 'neverlast-security-lite' ), 'setting.login_max_attempts' => __( 'Failed logins allowed for one account within the attempt window before that account is locked (2 to 20).', 'neverlast-security-lite' ), 'setting.login_window_minutes' => __( 'How long a failed login keeps counting toward a lockout (1 to 120 minutes).', 'neverlast-security-lite' ), 'setting.login_lockout_minutes' => __( 'How long login stays blocked once the attempt limit is reached (1 to 1440 minutes).', 'neverlast-security-lite' ), 'setting.generic_login_errors' => __( 'Shows one generic message for every failed login, so nobody can learn whether an account name exists.', 'neverlast-security-lite' ), 'setting.block_admin_username' => __( 'Rejects every login attempt that uses the account name "admin". Tick it only if no real account uses that name.', 'neverlast-security-lite' ), 'setting.disable_xmlrpc' => __( 'Turns off XML-RPC (xmlrpc.php), a frequent brute-force target, and removes its discovery link and header. Untick it if Jetpack, a mobile app or another integration needs XML-RPC.', 'neverlast-security-lite' ), 'setting.protect_rest_users' => __( 'Hides the REST API user routes (/wp-json/wp/v2/users) from visitors who are not logged in, so account names are not published there.', 'neverlast-security-lite' ), 'setting.block_author_enumeration' => __( 'Returns "not found" for ?author= lookups and author archive pages, and removes users from the sitemap, so account names are harder to discover.', 'neverlast-security-lite' ), 'setting.disable_application_passwords' => __( 'Turns off WordPress Application Passwords, which let external apps and scripts sign in. Untick it if a trusted integration signs in with one.', 'neverlast-security-lite' ), 'setting.two_factor_enabled' => __( 'Lets administrators protect their login with an authenticator app. When off, enrolled accounts are not asked for a code at login.', 'neverlast-security-lite' ), 'setting.security_headers_enabled' => __( 'Sends X-Content-Type-Options, X-Frame-Options, Referrer-Policy and Permissions-Policy headers when your site does not already send them.', 'neverlast-security-lite' ), 'setting.csp_report_only' => __( 'Sends a Content-Security-Policy in report-only mode: browsers list what the policy would block in their console, but nothing is blocked. For diagnostics only.', 'neverlast-security-lite' ), 'setting.hide_file_editor' => __( 'Removes the built-in theme and plugin file editors from the dashboard, so a stolen administrator session cannot edit code there.', 'neverlast-security-lite' ), 'setting.integrity_schedule_enabled' => __( 'Runs the file comparison once a day through WP-Cron, in small chunks. Needs an approved baseline. It only reports differences and never changes files.', 'neverlast-security-lite' ), 'setting.wporg_checksums_enabled' => __( 'Off by default. When on, changed WordPress core and WordPress.org plugin files are checked against the official checksums for that release. Only the version and locale, or the plugin slug and version, are sent to WordPress.org.', 'neverlast-security-lite' ), 'setting.activity_retention_days' => __( 'How many days security events are kept before the daily cleanup removes them (1 to 90).', 'neverlast-security-lite' ), 'setting.delete_data_on_uninstall' => __( 'When you delete the plugin from the Plugins screen, also delete its settings, tables, logs, two-factor enrolments and held quarantine copies. Deactivating never deletes data.', 'neverlast-security-lite' ), // Alert settings. 'setting.alert_email' => __( 'Mailbox that receives security alerts and summaries. Leave blank to use the site\'s Administration Email Address.', 'neverlast-security-lite' ), 'setting.critical_email_enabled' => __( 'Emails critical events such as critical integrity findings, critical health results or a login freeze. Repeats of the same alert are throttled.', 'neverlast-security-lite' ), 'setting.admin_login_email' => __( 'Emails the security mailbox whenever an administrator account logs in, so an unexpected login is noticed quickly.', 'neverlast-security-lite' ), 'setting.weekly_summary_enabled' => __( 'Emails a weekly summary built from the locally retained event totals.', 'neverlast-security-lite' ), 'setting.emergency_email_enabled' => __( 'Adds a one-time emergency link to administrator-login emails. Opening it and entering the separate emergency secret ends all sessions and freezes logins. The link expires after 15 minutes.', 'neverlast-security-lite' ), 'setting.login_freeze_minutes' => __( 'How long logins stay frozen after an emergency link is used, and the suggested duration for a manual freeze (5 to 1440 minutes).', 'neverlast-security-lite' ), // Actions (admin-post handlers). 'action.nlssl_save_settings' => __( 'Saves the settings on this page and confirms they were stored.', 'neverlast-security-lite' ), 'action.nlssl_run_health' => __( 'Runs every health check now and updates the score and recommendations. Your site configuration is not changed.', 'neverlast-security-lite' ), 'action.nlssl_repair_storage' => __( 'Recreates any missing NeverLast Security database tables and verifies that reads and writes work. Existing security data is kept.', 'neverlast-security-lite' ), 'action.nlssl_build_baseline' => __( 'Records the SHA-256 fingerprint of every tracked file as the approved state that comparisons use. Review the site first: a baseline shows later change, not that today\'s files are clean.', 'neverlast-security-lite' ), 'action.nlssl_run_integrity' => __( 'Compares tracked files with the approved baseline and inspects uploads. Read-only: nothing is changed, deleted or quarantined. Large sites continue in chunks.', 'neverlast-security-lite' ), 'action.nlssl_integrity_trust' => __( 'Hides this finding while the file keeps exactly this SHA-256 hash. Any later change to the file makes the finding visible again.', 'neverlast-security-lite' ), 'action.nlssl_integrity_quarantine' => __( 'Removes this upload from the site and holds an encrypted, non-executable copy until you export it for offline review or delete it.', 'neverlast-security-lite' ), 'action.nlssl_integrity_download' => __( 'Downloads the held copy as Base64 text for offline analysis. Decode it only in a safe environment.', 'neverlast-security-lite' ), 'action.nlssl_integrity_purge' => __( 'Permanently deletes the held copy. Nothing is restored to the site, and this cannot be undone.', 'neverlast-security-lite' ), 'action.nlssl_integrity_clear_record' => __( 'Removes this entry after its held copy disappeared outside NeverLast Security. The file itself cannot be recovered.', 'neverlast-security-lite' ), 'action.nlssl_refresh_bot_ip_lists' => __( 'Queues a background download of the enabled official crawler IP lists through WP-Cron, at most once every five minutes.', 'neverlast-security-lite' ), 'action.nlssl_start_audit_window' => __( 'For 15 minutes, requests from your current IP address are not counted against the per-minute limit (GET and HEAD requests only), so a Lighthouse or local audit is not blocked. Firewall inspection still applies.', 'neverlast-security-lite' ), 'action.nlssl_stop_audit_window' => __( 'Ends the audit window now, so requests from your IP address count toward the per-minute limit again.', 'neverlast-security-lite' ), 'action.nlssl_totp_start' => __( 'Creates a new authenticator secret for your account. Two-factor login starts only after you verify a code and store the recovery codes.', 'neverlast-security-lite' ), 'action.nlssl_totp_confirm' => __( 'Checks the six-digit code from your authenticator app to prove it is set up correctly.', 'neverlast-security-lite' ), 'action.nlssl_totp_acknowledge' => __( 'Confirms you stored the recovery codes and turns on two-factor login for your account.', 'neverlast-security-lite' ), 'action.nlssl_totp_regenerate' => __( 'Replaces your recovery codes with new ones after checking a current app code. The previous codes stop working.', 'neverlast-security-lite' ), 'action.nlssl_totp_disable' => __( 'Turns off two-factor login for your account after checking an app code or a recovery code.', 'neverlast-security-lite' ), 'action.nlssl_totp_admin_reset' => __( 'Clears this administrator\'s two-factor setup so they can sign in with their password and enroll again. Requires your own current password.', 'neverlast-security-lite' ), 'action.nlssl_unfreeze_login' => __( 'Lifts the emergency login freeze so users can log in again immediately.', 'neverlast-security-lite' ), 'action.nlssl_freeze_login' => __( 'Ends every WordPress session, including yours, and blocks all new logins for the chosen number of minutes.', 'neverlast-security-lite' ), 'action.nlssl_logout_sessions' => __( 'Signs out every user on the site, including you, without blocking new logins.', 'neverlast-security-lite' ), 'action.nlssl_test_email' => __( 'Sends one harmless test message through your site\'s mail setup. Success means WordPress accepted it, not that it reached the inbox.', 'neverlast-security-lite' ), 'action.nlssl_save_emergency_secret' => __( 'Saves the separate emergency secret that emergency links require. Only a hash is stored. Changing it requires the current secret.', 'neverlast-security-lite' ), 'action.nlssl_export_report' => __( 'Downloads a JSON snapshot of settings, health, baseline state, the latest comparison and event totals. Email addresses and secrets are excluded.', 'neverlast-security-lite' ), 'action.nlssl_export_activity' => __( 'Downloads up to 5,000 retained events as a CSV file, with masked IP addresses and redacted details.', 'neverlast-security-lite' ), 'action.nlssl_clear_reports' => __( 'Permanently deletes the activity log and the stored health and integrity reports. Settings, the baseline, trusted hashes, quarantine and two-factor setups are kept.', 'neverlast-security-lite' ), 'action.nlssl_emergency_freeze' => __( 'Checks the emergency secret, then ends every WordPress session and freezes new logins.', 'neverlast-security-lite' ), 'action.nlssl_2fa_verify' => __( 'Checks the authenticator code or recovery code to finish signing in.', 'neverlast-security-lite' ), 'action.activity_filter' => __( 'Shows only the events that match the chosen severity and text.', 'neverlast-security-lite' ), // Form fields and confirmations. 'field.confirm_baseline' => __( 'Required: confirms you reviewed the installed files and want them recorded as the approved baseline.', 'neverlast-security-lite' ), 'field.confirm_trust' => __( 'Required: confirms you reviewed this exact file content before hiding the finding.', 'neverlast-security-lite' ), 'field.confirm_quarantine' => __( 'Required: confirms you understand the file leaves the site until you export the evidence or delete it.', 'neverlast-security-lite' ), 'field.confirm_purge' => __( 'Required: confirms the permanent deletion of the held copy.', 'neverlast-security-lite' ), 'field.confirm_clear_reports' => __( 'Required: confirms the permanent deletion of the retained reports.', 'neverlast-security-lite' ), 'field.codes_saved' => __( 'Required: confirms you stored the recovery codes somewhere safe and offline.', 'neverlast-security-lite' ), 'field.totp_code' => __( 'The six-digit code currently shown in your authenticator app.', 'neverlast-security-lite' ), 'field.totp_or_recovery_code' => __( 'A current code from your authenticator app, or one unused recovery code.', 'neverlast-security-lite' ), 'field.freeze_minutes' => __( 'How long new logins stay blocked (5 to 1440 minutes).', 'neverlast-security-lite' ), 'field.current_password' => __( 'Your own WordPress password, to confirm that you are the one resetting another administrator.', 'neverlast-security-lite' ), 'field.current_secret' => __( 'The emergency secret in use now. It is required to change the secret.', 'neverlast-security-lite' ), 'field.new_secret' => __( '6 to 128 characters. Use a long phrase you do not use anywhere else, and store it offline.', 'neverlast-security-lite' ), 'field.confirm_secret' => __( 'Type the new secret again to rule out a typing mistake.', 'neverlast-security-lite' ), 'field.emergency_secret' => __( 'The separate emergency secret set under Alerts & Recovery. It is not your WordPress password.', 'neverlast-security-lite' ), 'field.filter_severity' => __( 'Show only events of one severity.', 'neverlast-security-lite' ), 'field.filter_search' => __( 'Show only events whose type or message contains this text.', 'neverlast-security-lite' ), ); return $texts; } }