Plugin Directory

Changeset 3763154


Ignore:
Timestamp:
10/24/2026 10:59:14 AM (75 minutes ago)
Author:
gataurus
Message:

Tagging 5.9.1.2: Configurable AI bot protection, expanded signatures, and hardened .htaccess rules.

Location:
cyberpulse/trunk
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • cyberpulse/trunk/assets/css/cyberpulse-admin.css

    r3760235 r3763154  
    32373237}
    32383238
     3239.cp-recommend--info {
     3240    background: var(--sw-info-light);
     3241    color: var(--sw-info);
     3242    border: 1px solid var(--sw-info-border);
     3243}
     3244
    32393245.cp-recommend--off {
    32403246    background: var(--sw-danger-light);
    … …  
    32543260    color: #9a5e00;
    32553261    border-color: rgba(196, 120, 0, 0.3);
     3262}
     3263
     3264.sw-light-mode .cp-recommend--info {
     3265    background: rgba(0, 128, 176, 0.1);
     3266    color: #006a94;
     3267    border-color: rgba(0, 128, 176, 0.3);
    32563268}
    32573269
  • cyberpulse/trunk/cyberpulse-core.php

    r3761760 r3763154  
    4545define('CYBERSEC_PERMANENT_BLOCKED_SUBNETS', 'secwall_permanent_blocked_subnets');
    4646define('CYBERSEC_UA_BLOCKS_OPTION', 'secwall_blocked_user_agents');
    47 define('CYBERSEC_VERSION', '5.9.1.1');
     47define('CYBERSEC_VERSION', '5.9.1.2');
    4848
    4949if (!file_exists(CYBERSEC_LOG_DIR)) {
    … …  
    114114        'cybersec_language' => 'auto',
    115115        'htaccess_protection_enabled' => 0,
     116        'ai_training_block_enabled' => 1,
     117        'ai_search_block_enabled'   => 0,
    116118    );
    117119   
    … …  
    35383540
    35393541/**
    3540  * Returns the single source of truth for AI bot User-Agent signatures.
    3541  * Used by cybersec_is_bot_user_agent(), cybersec_check_ai_scraper(),
    3542  * cybersec_check_user_agent_anomalies() and cybersec_check_all().
     3542 * Returns the full map of AI bot signatures => category.
     3543 * Categories:
     3544 *   'training' — collect data for AI training. No traffic back.
     3545 *   'search'   — AI search bots that can bring visitors.
    35433546 *
    35443547 * @return array
    35453548 */
     3549function cybersec_get_ai_bot_signatures_map() {
     3550    static $map = null;
     3551    if ($map !== null) {
     3552        return $map;
     3553    }
     3554
     3555    $map = array(
     3556        // --- TRAINING (no traffic back) ---
     3557        // OpenAI (training)
     3558        'GPTBot' => 'training',
     3559
     3560        // Anthropic (training)
     3561        'ClaudeBot' => 'training',
     3562        'Claude-Web' => 'training',
     3563        'anthropic-ai' => 'training',
     3564
     3565        // Common Crawl
     3566        'CCBot' => 'training',
     3567
     3568        // Amazon (Alexa training)
     3569        'Amazonbot' => 'training',
     3570
     3571        // Apple (Apple Intelligence training)
     3572        'Applebot-Extended' => 'training',
     3573
     3574        // ByteDance (mass scraping)
     3575        'Bytespider' => 'training',
     3576
     3577        // Meta
     3578        'Meta-ExternalAgent' => 'training',
     3579        'meta-externalagent' => 'training',
     3580        'Meta-ExternalFetcher' => 'training',
     3581
     3582        // Google (Gemini training)
     3583        'Google-Extended' => 'training',
     3584
     3585        // Misc training crawlers
     3586        'cohere-ai' => 'training',
     3587        'cohere-training-data-crawler' => 'training',
     3588        'Diffbot' => 'training',
     3589        'ImagesiftBot' => 'training',
     3590        'YouBot' => 'training',
     3591        'AI2Bot' => 'training',
     3592        'FriendlyCrawler' => 'training',
     3593        'Timpibot' => 'training',
     3594        'Gigablast' => 'training',
     3595        'Webz.io' => 'training',
     3596        'NeevaAI' => 'training',
     3597        'Lepton' => 'training',
     3598
     3599        // Chinese AI (training)
     3600        'YandexGPT' => 'training',
     3601        'Sogou' => 'training',
     3602        'AI-Scraper' => 'training',
     3603        'AISearch' => 'training',
     3604        'AICrawler' => 'training',
     3605        'AI-Bot' => 'training',
     3606        'Omgilibot' => 'training',
     3607        'ShapBot' => 'training',
     3608        'DeepSeek' => 'training',
     3609        'DeepSeekBot' => 'training',
     3610        'Qwen' => 'training',
     3611        'QwenBot' => 'training',
     3612        'Ernie' => 'training',
     3613        'ChatGLM' => 'training',
     3614        'KimiBot' => 'training',
     3615        'Moonshot' => 'training',
     3616        'Hunyuan' => 'training',
     3617        'PanguBot' => 'training',
     3618        'YiBot' => 'training',
     3619
     3620        // xAI / Mistral (training)
     3621        'GrokBot' => 'training',
     3622        'xAI-Grok' => 'training',
     3623        'xAI-Crawler' => 'training',
     3624
     3625        // SEO / spam AI bots (training-ish)
     3626        'AionBot' => 'training',
     3627        'BeansLLM' => 'training',
     3628        'SEOJuice' => 'training',
     3629        'IAS Crawler' => 'training',
     3630        'KlavdiaBot' => 'training',
     3631        'PRLabBacklinkBot' => 'training',
     3632        'KeenableBot' => 'training',
     3633
     3634        // htaccess-only signatures that must be present in PHP too
     3635        'RayluBot' => 'training',
     3636        'TokenFoundryBot' => 'training',
     3637
     3638        // --- SEARCH (can bring visitors) ---
     3639        'ChatGPT-User' => 'search',
     3640        'OAI-SearchBot' => 'search',
     3641        'PerplexityBot' => 'search',
     3642        'Perplexity-User' => 'search',
     3643        'Claude-User' => 'search',
     3644        'Claude-SearchBot' => 'search',
     3645        'Amzn-SearchBot' => 'search',
     3646        'Amzn-User' => 'search',
     3647        'Kimi-SearchBot' => 'search',
     3648        'MistralAI-User' => 'search',
     3649        'MistralAI' => 'search',
     3650        'ExaSearchBot' => 'search',
     3651        'DuckAssistBot' => 'search',
     3652        'Grok-DeepSearch' => 'search',
     3653    );
     3654
     3655    return $map;
     3656}
     3657
     3658/**
     3659 * Returns the list of AI bot signatures active under the current
     3660 * settings. Respects the two independent toggles:
     3661 *   ai_training_block_enabled — blocks training bots
     3662 *   ai_search_block_enabled   — blocks AI search bots
     3663 *
     3664 * Returns an empty array when both are disabled — callers then
     3665 * skip AI detection entirely.
     3666 *
     3667 * @return array
     3668 */
     3669function cybersec_get_active_ai_bot_signatures() {
     3670    static $cache = null;
     3671    if ($cache !== null) {
     3672        return $cache;
     3673    }
     3674
     3675    $s = cybersec_get_settings();
     3676    $train  = !empty($s['ai_training_block_enabled']);
     3677    $search = !empty($s['ai_search_block_enabled']);
     3678
     3679    if (!$train && !$search) {
     3680        $cache = array();
     3681        return $cache;
     3682    }
     3683
     3684    $map = cybersec_get_ai_bot_signatures_map();
     3685    $result = array();
     3686    foreach ($map as $sig => $cat) {
     3687        if (($cat === 'training' && $train) || ($cat === 'search' && $search)) {
     3688            $result[] = $sig;
     3689        }
     3690    }
     3691
     3692    $cache = $result;
     3693    return $cache;
     3694}
     3695
     3696/**
     3697 * Backward-compatible alias. Kept so any external code (PRO build,
     3698 * custom integrations) that calls cybersec_get_ai_bot_signatures()
     3699 * still works and respects the new toggles.
     3700 *
     3701 * @deprecated Use cybersec_get_active_ai_bot_signatures() instead.
     3702 * @return array
     3703 */
    35463704function cybersec_get_ai_bot_signatures() {
    3547     static $signatures = null;
    3548     if ($signatures !== null) {
    3549         return $signatures;
    3550     }
    3551    
    3552     $signatures = array(
    3553         // OpenAI
    3554         'ChatGPT-User','OAI-SearchBot','GPTBot',
    3555 
    3556         // Anthropic
    3557         'ClaudeBot','Claude-User','Claude-SearchBot','Claude-Web','anthropic-ai',
    3558 
    3559         // Perplexity
    3560         'PerplexityBot','Perplexity-User',
    3561 
    3562         // Common Crawl
    3563         'CCBot',
    3564 
    3565         // Amazon
    3566         'Amazonbot','Amzn-SearchBot',
    3567 
    3568         // Apple
    3569         'Applebot-Extended',
    3570 
    3571         // ByteDance
    3572         'Bytespider',
    3573 
    3574         // Meta
    3575         'Meta-ExternalAgent','meta-externalagent','Meta-ExternalFetcher',
    3576 
    3577         // Google
    3578         'Google-Extended',
    3579 
    3580         // Others
    3581         'cohere-ai','Diffbot','ImagesiftBot','YouBot','AI2Bot',
    3582         'FriendlyCrawler','Timpibot','Gigablast','Webz.io','NeevaAI','Lepton',
    3583 
    3584         // Chinese
    3585         'YandexGPT','Sogou','AI-Scraper','AISearch','AICrawler','AI-Bot',
    3586         'Omgilibot','ShapBot','DeepSeek','Qwen','Ernie','ChatGLM','KimiBot',
    3587         'Moonshot','Hunyuan','PanguBot','YiBot','Kimi-SearchBot',
    3588 
    3589         // xAI / Mistral
    3590         'GrokBot','xAI-Grok','MistralAI-User','MistralAI',
    3591 
    3592         // SEO spam bots
    3593         'AionBot','BeansLLM','SEOJuice','IAS Crawler','KlavdiaBot',
    3594         'PRLabBacklinkBot','KeenableBot','ExaSearchBot',
    3595     );
    3596    
    3597     return $signatures;
     3705    return cybersec_get_active_ai_bot_signatures();
    35983706}
    35993707
    … …  
    41804288    if ($cached_result !== null) return $cached_result;
    41814289   
     4290    $ai_signatures_probe = cybersec_get_active_ai_bot_signatures();
     4291    if (empty($ai_signatures_probe)) {
     4292        $cached_result = false;
     4293        return $cached_result;
     4294    }
     4295   
    41824296    $ua = isset($_SERVER['HTTP_USER_AGENT']) ? sanitize_text_field(wp_unslash($_SERVER['HTTP_USER_AGENT'])) : '';
    41834297    $ip = cybersec_get_visitor_ip();
    … …  
    42514365    }
    42524366   
    4253     // Filter prev entries older than 3 seconds.
     4367        // Filter prev entries older than 30 seconds
    42544368    $state['prev'] = array_filter($state['prev'], function($entry) use ($now) {
    4255         return ($now - $entry['time']) < 3;
     4369        return ($now - $entry['time']) < 30;
    42564370    });
    42574371   
    … …  
    42634377        }
    42644378        $state['current'] = $ua_hash;
    4265         set_transient($key, $state, 10);
     4379        set_transient($key, $state, 35);
    42664380    }
    42674381   
    … …  
    43184432    }
    43194433   
    4320     if (count($unique_os) >= 3) {
     4434        if (count($unique_os) >= 2) {
    43214435        $cached_result = true;
    43224436        return true;
    … …  
    47454859       
    47464860        if ($is_static) {
    4747             $static_bad_uas = array(
    4748                 'Presto/', 'Windows CE',
    4749                 'curl/', 'wget/',
    4750                 'python-requests', 'python-urllib', 'python-httpx',
    4751                 'Go-http-client', 'Apache-HttpClient',
    4752                 'PhantomJS', 'HeadlessChrome',
    4753                 'zgrab', 'masscan', 'nmap', 'sqlmap',
    4754                 'compatible; crawler', 'compatible; scraper',
    4755                 'compatible; archiver', 'compatible; mirror',
    4756                 'compatible; parser', 'compatible; downloader',
     4861                        $static_bad_patterns = array(
     4862                '/Presto\//i',
     4863                '/Windows CE/i',
     4864                '/MSIE [1-9]\./i',
     4865                '/Opera\/[0-9]\./i',
     4866                '/PPC Mac OS X 10_[0-6]/i',
     4867                '/CriOS\/(?:[1-9]|[1-4][0-9])\./i',
     4868                '/Chrome\/(?:[1-9]|[1-9][0-9]|1[0-6])\./i',
     4869                '/Firefox\/(?:[1-9]|[1-3][0-9])\./i',
     4870                '/Version\/[1-9]\.\d+ .*Mobile\/[0-9A-F]+ Safari/i',
     4871                '/PhantomJS|HeadlessChrome|puppeteer|playwright|selenium/i',
     4872                '/curl\/|wget\/|python-requests|python-urllib|python-httpx/i',
     4873                '/Go-http-client|Apache-HttpClient|okhttp\/|axios\/|node-fetch/i',
     4874                '/zgrab|masscan|nmap|sqlmap|nikto|nessus/i',
     4875                '/compatible; (?:crawler|scraper|archiver|mirror|parser|downloader)/i',
    47574876            );
    4758             foreach ($static_bad_uas as $bad) {
    4759                 if (stripos($ua_check, $bad) !== false) {
     4877            foreach ($static_bad_patterns as $bad_re) {
     4878                if (preg_match($bad_re, $ua_check)) {
    47604879                    cybersec_increment_stat('blocked');
    4761                     cybersec_ban_and_log($ip_early, 'Static file via bot UA: ' . $bad, true);
     4880                    cybersec_ban_and_log($ip_early, 'Static file via bot UA: ' . $bad_re, true);
    47624881                    cybersec_show_block_page($ip_early, cybersec_translate('Access denied.'));
    47634882                    exit;
  • cyberpulse/trunk/cyberpulse-htaccess.php

    r3761760 r3763154  
    180180        $block .= "RewriteRule .* - [F,L]\n\n";
    181181    }
     182
     183    // Configuration files that must NEVER be exposed to the web.
     184    // Apache usually blocks .htaccess via <FilesMatch "^\.ht"> in the
     185    // main config, but not all shared hosts do this — defense in depth.
     186    $block .= "RewriteRule (^|/)\\.htaccess($|\\.) - [F,L]\n";
     187    $block .= "RewriteRule (^|/)\\.htpasswd($|\\.) - [F,L]\n";
     188    $block .= "RewriteRule (^|/)\\.user\\.ini($|\\.) - [F,L]\n";
     189
     190    // WordPress default files leaking version / plugin info.
     191    // PHP-level check (cybersec_hide_wordpress) also blocks these,
     192    // but blocking at .htaccess saves the PHP round-trip.
     193    $block .= "RewriteRule (^|/)(readme|license|changelog)\\.(html|txt|md)$ - [F,L,NC]\n";
    182194
    183195    // Path rules — only files/dirs that are NEVER legitimate to expose.
    … …  
    199211    $block .= "RewriteRule (^|/)@fs(/|$) - [F,L]\n";
    200212    $block .= "RewriteRule (^|/)proc/self(/|$) - [F,L]\n";
    201     $block .= "RewriteRule (^|/)wp-config\\.(bak|old|txt|save|orig|tmp|swp)$ - [F,L]\n";
     213    $block .= "RewriteRule (^|/)wp-config(\\.php)?\\.(bak|old|txt|save|orig|tmp|swp|zip|tar\\.gz)$ - [F,L]\n";
    202214    $block .= "RewriteRule (^|/)(database|dump|db|users|backup)\\.sql$ - [F,L]\n";
    203215
    204     // AI crawlers ONLY.
    205     //
    206     // SEO tools (AhrefsBot, SemrushBot, MozBot, DataForSeoBot,
    207     // serpstatbot, BLEXBot, MJ12bot, AwarioBot, Screaming Frog,
    208     // SERankingBacklinksBot, ExaSearchBot) are intentionally NOT
    209     // listed here. Site owners pay for these services and rely on
    210     // their crawlers for site audits, backlink monitoring and rank
    211     // tracking. Blocking them at server level silently breaks those
    212     // paid tools.
    213     //
    214     // Note: AhrefsSiteAudit, SemrushBot-SA, SemrushBot-BA are also
    215     // SEO-audit-specific — excluded too, even though the base bots
    216     // may be AI-adjacent.
    217     $bot_ua = '(GPTBot|ChatGPT-User|OAI-SearchBot|ClaudeBot|Claude-Web|anthropic-ai'
    218             . '|PerplexityBot|Perplexity-User|CCBot'
    219             . '|Amazonbot|Bytespider|Google-Extended'
    220             . '|Meta-ExternalAgent|Meta-ExternalFetcher|Applebot-Extended'
    221             . '|cohere-ai|Diffbot|ImagesiftBot|YouBot|AI2Bot|FriendlyCrawler'
    222             . '|Timpibot|Omgilibot|KeenableBot|RayluBot|TokenFoundryBot)';
    223     $block .= "RewriteCond %{HTTP_USER_AGENT} " . $bot_ua . " [NC]\n";
    224     $block .= "RewriteRule .* - [F,L]\n\n";
     216    // Build the AI-bot regex from the ACTIVE signatures only,
     217    // respecting the ai_training_block_enabled / ai_search_block_enabled
     218    // toggles. When both are off, this whole section is skipped.
     219    $active_ai = function_exists('cybersec_get_active_ai_bot_signatures')
     220        ? cybersec_get_active_ai_bot_signatures()
     221        : array();
     222
     223        if (!empty($active_ai)) {
     224        // preg_quote: protects against regex injection.
     225        // str_replace: replaces literal spaces (e.g. "IAS Crawler")
     226        // with \s+ so Apache parses the regex correctly.
     227        $escaped = array();
     228        foreach ($active_ai as $sig) {
     229            $safe = preg_quote($sig, '/');
     230            $safe = str_replace(' ', '\s+', $safe);
     231            $escaped[] = $safe;
     232        }
     233        $bot_ua = '(' . implode('|', $escaped) . ')';
     234        $block .= "RewriteCond %{HTTP_USER_AGENT} " . $bot_ua . " [NC]\n";
     235        $block .= "RewriteRule .* - [F,L]\n\n";
     236    }
    225237
    226238    $block .= "</IfModule>\n";
  • cyberpulse/trunk/cyberpulse-tabs.php

    r3760235 r3763154  
    258258            'cybersec_language' => sanitize_text_field(wp_unslash($_POST['cybersec_language'] ?? 'auto')),
    259259            'htaccess_protection_enabled' => isset($_POST['cybersec_htaccess_protection_enabled']) ? 1 : 0,
     260            'ai_training_block_enabled' => isset($_POST['cybersec_ai_training_block_enabled']) ? 1 : 0,
     261            'ai_search_block_enabled'   => isset($_POST['cybersec_ai_search_block_enabled']) ? 1 : 0,
    260262        );
    261263
    … …  
    281283                    delete_option('cybersec_htaccess_version');
    282284                }
     285            }
     286        }
     287       
     288                // Rebuild .htaccess if AI toggles changed while htaccess protection
     289        // is already enabled. Otherwise the UA regex stays stale until the
     290        // next version bump / manual sync.
     291        $old_ai_train  = !empty($existing['ai_training_block_enabled']);
     292        $new_ai_train  = !empty($ns['ai_training_block_enabled']);
     293        $old_ai_search = !empty($existing['ai_search_block_enabled']);
     294        $new_ai_search = !empty($ns['ai_search_block_enabled']);
     295
     296        if (!empty($ns['htaccess_protection_enabled'])
     297            && ($old_ai_train !== $new_ai_train || $old_ai_search !== $new_ai_search)) {
     298            if (function_exists('cybersec_htaccess_sync')) {
     299                cybersec_htaccess_sync(false);
    283300            }
    284301        }
    … …  
    20702087                            <?php echo esc_html(cybersec_translate('AI Scraping Protection')); ?>
    20712088                        </span>
    2072                         <span class="sw-status sw-status-active">
    2073                             <?php echo esc_html(cybersec_translate('Always active')); ?>
    2074                         </span>
    20752089                    </h4>
    2076                    
     2090
    20772091                    <p style="margin-top:8px;">
    2078                         <?php echo esc_html(cybersec_translate('Blocks bots used to collect data for AI model training: GPTBot (OpenAI), ChatGPT-User, CCBot (Common Crawl), Claude-Web / ClaudeBot (Anthropic), PerplexityBot, Google-Extended, Bytespider (ByteDance), Amazonbot, and others.')); ?>
    2079                         <strong><?php echo esc_html(cybersec_translate('Always active. Does not affect legitimate search engines.')); ?></strong>
     2092                        <?php echo esc_html(cybersec_translate('AI bots are split into two independent categories. Enable only what you actually want to block.')); ?>
    20802093                    </p>
    2081                    
    2082                     <div style="background:var(--sw-success-light);border:2px solid var(--sw-success-border);border-radius:var(--sw-radius);padding:10px 14px;margin-top:12px;">
    2083                         <span style="font-size:11px;color:var(--sw-success); display:flex; align-items:center; gap:6px;">
    2084                             <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
    2085                             <?php echo esc_html(cybersec_translate('AI scraping protection is always enabled and working.')); ?>
    2086                         </span>
     2094
     2095                    <!-- AI Training Bots -->
     2096                    <div style="background:var(--sw-success-light);border:2px solid var(--sw-success-border);border-radius:var(--sw-radius);padding:14px 16px;margin-top:12px;">
     2097                        <h4 style="margin:0 0 6px 0;font-size:12px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;">
     2098                            <span><?php echo esc_html(cybersec_translate('AI Training Bots')); ?></span>
     2099                            <span class="cp-recommend cp-recommend--on"><?php echo esc_html(cybersec_translate('Recommended: ON')); ?></span>
     2100                        </h4>
     2101                        <p style="margin:0 0 10px 0;font-size:11px;color:var(--sw-text-secondary);line-height:1.5;">
     2102                            <?php echo esc_html(cybersec_translate('Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.')); ?>
     2103                        </p>
     2104                        <label style="display:inline-flex;align-items:center;gap:6px;font-weight:600;cursor:pointer;font-size:12px;">
     2105                            <input type="checkbox" name="cybersec_ai_training_block_enabled" value="1" <?php checked($st['ai_training_block_enabled'] ?? 1, 1); ?>>
     2106                            <?php echo esc_html(cybersec_translate('Block AI training bots')); ?>
     2107                        </label>
    20872108                    </div>
    20882109
     2110                    <!-- AI Search Bots -->
     2111                    <div style="background:var(--sw-info-light);border:2px solid var(--sw-info-border);border-radius:var(--sw-radius);padding:14px 16px;margin-top:12px;">
     2112                        <h4 style="margin:0 0 6px 0;font-size:12px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;">
     2113                            <span><?php echo esc_html(cybersec_translate('AI Search Bots')); ?></span>
     2114                            <span class="cp-recommend cp-recommend--info"><?php echo esc_html(cybersec_translate('Your choice')); ?></span>
     2115                        </h4>
     2116                        <p style="margin:0 0 10px 0;font-size:11px;color:var(--sw-text-secondary);line-height:1.5;">
     2117                            <?php echo esc_html(cybersec_translate('Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.')); ?>
     2118                        </p>
     2119                        <label style="display:inline-flex;align-items:center;gap:6px;font-weight:600;cursor:pointer;font-size:12px;">
     2120                            <input type="checkbox" name="cybersec_ai_search_block_enabled" value="1" <?php checked($st['ai_search_block_enabled'] ?? 0, 1); ?>>
     2121                            <?php echo esc_html(cybersec_translate('Block AI search bots')); ?>
     2122                        </label>
     2123                    </div>
     2124
    20892125                    <!-- .htaccess Sub-section -->
     2126                    <?php
     2127                    // Server-aware state detection for the .htaccess recommendation block.
     2128                    $cp_server_supports   = function_exists('cybersec_htaccess_server_supports')
     2129                        ? cybersec_htaccess_server_supports()
     2130                        : false;
     2131                    $cp_htaccess_path     = ABSPATH . '.htaccess';
     2132                    $cp_htaccess_writable = file_exists($cp_htaccess_path)
     2133                        ? wp_is_writable($cp_htaccess_path)
     2134                        : wp_is_writable(ABSPATH);
     2135                    $cp_htaccess_on       = !empty($st['htaccess_protection_enabled']);
     2136                    $cp_can_enable        = $cp_server_supports && $cp_htaccess_writable;
     2137                    ?>
    20902138                    <div style="margin-top:16px; padding-top:16px; border-top:1px dashed var(--sw-border-light);">
    2091                         <h4 style="display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; font-size:12px; margin-bottom:8px;">
     2139                        <h4 style="display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; font-size:12px; margin-bottom:8px; gap:8px;">
    20922140                            <span style="display:inline-flex; align-items:center; gap:6px;">
    20932141                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:var(--sw-warning);">
    … …  
    20992147                                <?php echo esc_html(cybersec_translate('.htaccess Protection (Web-Server Level)')); ?>
    21002148                            </span>
    2101                             <span class="sw-status <?php echo !empty($st['htaccess_protection_enabled']) ? 'sw-status-active' : 'sw-status-inactive'; ?>">
    2102                                 <?php echo !empty($st['htaccess_protection_enabled']) ? esc_html(cybersec_translate('Enabled')) : esc_html(cybersec_translate('Disabled')); ?>
    2103                             </span>
     2149
     2150                                <?php if (!$cp_server_supports): ?>
     2151                                <span class="sw-status sw-status-inactive"><?php echo esc_html(cybersec_translate('Not applicable')); ?></span>
     2152                            <?php elseif (!$cp_htaccess_writable): ?>
     2153                                <span class="sw-status sw-status-inactive"><?php echo esc_html(cybersec_translate('Not available')); ?></span>
     2154                            <?php else: ?>
     2155                                <span class="sw-status <?php echo $cp_htaccess_on ? 'sw-status-active' : 'sw-status-inactive'; ?>">
     2156                                    <?php echo $cp_htaccess_on ? esc_html(cybersec_translate('Enabled')) : esc_html(cybersec_translate('Disabled')); ?>
     2157                                </span>
     2158                            <?php endif; ?>
    21042159                        </h4>
    2105                        
     2160
    21062161                        <p style="font-size:11px; color:var(--sw-text-secondary); margin-bottom:12px; line-height:1.5;">
    2107                             <?php echo esc_html(cybersec_translate('Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots before PHP even loads, saving server resources.')); ?>
     2162                            <?php echo esc_html(cybersec_translate('Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.')); ?>
    21082163                        </p>
    2109                        
    2110                         <label style="display:inline-flex;align-items:center;gap:6px;font-weight:600;cursor:pointer;font-size:12px;">
    2111                             <input type="checkbox" name="cybersec_htaccess_protection_enabled" value="1" <?php checked($st['htaccess_protection_enabled'] ?? 0, 1); ?>>
     2164
     2165                        <?php if ($cp_can_enable): ?>
     2166                            <div style="background:var(--sw-info-light);border:2px solid var(--sw-info-border);border-radius:var(--sw-radius);padding:10px 14px;margin-bottom:12px;font-size:11px;color:var(--sw-text-secondary);line-height:1.5;">
     2167                                <strong style="color:var(--sw-info);"><?php echo esc_html(cybersec_translate('Recommendation:')); ?></strong>
     2168                                <?php echo esc_html(cybersec_translate('enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.')); ?>
     2169                            </div>
     2170                        <?php elseif (!$cp_server_supports): ?>
     2171                            <div style="background:var(--sw-warning-light);border:2px solid var(--sw-warning-border);border-radius:var(--sw-radius);padding:10px 14px;margin-bottom:12px;font-size:11px;line-height:1.5;">
     2172                                <strong style="color:var(--sw-warning);">⚠ <?php echo esc_html(cybersec_translate('Your server does not use .htaccess.')); ?></strong><br>
     2173                                <?php echo esc_html(cybersec_translate('Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.')); ?>
     2174                            </div>
     2175                        <?php else: ?>
     2176                            <div style="background:var(--sw-warning-light);border:2px solid var(--sw-warning-border);border-radius:var(--sw-radius);padding:10px 14px;margin-bottom:12px;font-size:11px;line-height:1.5;">
     2177                                <strong style="color:var(--sw-warning);">⚠ <?php echo esc_html(cybersec_translate('.htaccess is not writable.')); ?></strong><br>
     2178                                <?php echo esc_html(cybersec_translate('CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.')); ?>
     2179                            </div>
     2180                        <?php endif; ?>
     2181
     2182                        <label style="display:inline-flex;align-items:center;gap:6px;font-weight:600;cursor:pointer;font-size:12px;<?php echo !$cp_can_enable ? 'opacity:0.5;pointer-events:none;' : ''; ?>">
     2183                            <input type="checkbox" name="cybersec_htaccess_protection_enabled" value="1"
     2184                                   <?php checked($st['htaccess_protection_enabled'] ?? 0, 1); ?>
     2185                                   <?php disabled(!$cp_can_enable); ?>>
    21122186                            <?php echo esc_html(cybersec_translate('Enable .htaccess protection')); ?>
    21132187                        </label>
    2114                        
     2188
    21152189                        <p style="margin:6px 0 0 24px;font-size:10px;color:var(--sw-text-secondary);">
    2116                             <?php echo esc_html(cybersec_translate('Applied automatically on save. Rules removed when unchecked. Other .htaccess content is preserved.')); ?>
     2190                            <?php echo esc_html(cybersec_translate('Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.')); ?>
    21172191                        </p>
    21182192                    </div>
  • cyberpulse/trunk/cyberpulse.php

    r3761760 r3763154  
    22/**
    33 * Plugin Name: CyberPulse — Advanced Security & Bot Protection
     4 * Plugin URI: https://wordpress.org/plugins/cyberpulse
    45 * Description: Real-time security heartbeat for your WordPress. Monitors every request, blocks bots instantly, protects against brute force and AI scraping. Feel the pulse of protection. Free version with PRO upgrade available.
    5  * Version: 5.9.1.1
     6 * Version: 5.9.1.2
    67 * Author: CyberPulse Security
    78 * Author URI: https://cyberpulse-security.com
  • cyberpulse/trunk/languages/cyberpulse-de_DE.php

    r3760235 r3763154  
    10361036    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10371037    'legitimate users have long updated, such versions are used only by bots with old signatures.' => 'legitime Benutzer haben längst aktualisiert, solche Versionen werden nur von Bots mit alten Signaturen verwendet.',
     1038   
     1039    // AI Scraping Protection
     1040    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'KI-Bots sind in zwei unabhängige Kategorien unterteilt. Aktivieren Sie nur das, was Sie wirklich blockieren möchten.',
     1041    'AI Training Bots' => 'KI-Trainings-Bots',
     1042    'AI Search Bots' => 'KI-Such-Bots',
     1043    'Block AI training bots' => 'KI-Trainings-Bots blockieren',
     1044    'Block AI search bots' => 'KI-Such-Bots blockieren',
     1045    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => 'Bots, die Ihre Inhalte herunterladen, um KI-Modelle zu trainieren (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot usw.). Sie zeigen Ihre Website den Nutzern nicht an – sie sammeln nur Daten.',
     1046    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => 'Bots, die Ihre Website für KI-Suchmaschinen indexieren (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Ihre Anfragen sind mit der Generierung von Antworten für Nutzer dieser Dienste verbunden. Aktivieren Sie dies, wenn Sie KI-Crawler vollständig von Ihrer Website ausschließen möchten.',
     1047    'Recommended: ON' => 'Empfohlen: EIN',
     1048    'Your choice' => 'Ihre Wahl',
     1049    'Not applicable' => 'Nicht zutreffend',
     1050    'Not available' => 'Nicht verfügbar',
     1051    'Recommendation:' => 'Empfehlung:',
     1052    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => 'aktivieren Sie den .htaccess-Schutz – er blockiert Bedrohungen, bevor PHP geladen wird, und verhindert den direkten Zugriff auf sensible Dateien, die PHP nicht sehen kann. Ihr Server unterstützt dies und .htaccess ist beschreibbar.',
     1053    'Your server does not use .htaccess.' => 'Ihr Server verwendet kein .htaccess.',
     1054    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => 'Erkannter Server: nginx oder ein anderer Nicht-Apache-Stack. .htaccess-Regeln werden ignoriert. KI-Bots und sensible Dateien sind auf PHP-Ebene weiterhin geschützt. Für serverseitige Blockierung auf nginx fügen Sie äquivalente Regeln manuell in Ihre nginx-Konfiguration ein.',
     1055    '.htaccess is not writable.' => '.htaccess ist nicht beschreibbar.',
     1056    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'CyberPulse kann auf diesem Host nicht in .htaccess schreiben. Überprüfen Sie die Dateiberechtigungen (normalerweise 644) oder wenden Sie sich an Ihren Hosting-Anbieter. KI-Bots werden weiterhin auf PHP-Ebene blockiert.',
     1057    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => 'Wird beim Speichern automatisch angewendet. Regeln werden entfernt, wenn das Häkchen entfernt wird. Andere .htaccess-Inhalte (WordPress, Caching-Plugins usw.) bleiben erhalten. Ein fehlgeschlagenes Schreiben wird überprüft und automatisch zurückgesetzt.',
     1058    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => 'Fügt Blockierungsregeln direkt zu .htaccess hinzu (nur Apache / LiteSpeed). Blockiert KI-Bots und sensible Dateien (.git, .env, .sql, Schlüssel, Backups), bevor PHP geladen wird, um Serverressourcen zu sparen. Die KI-Bot-Regeln folgen den beiden Schaltern oben – das Deaktivieren einer Kategorie entfernt sie auch aus .htaccess.',
    10381059);
  • cyberpulse/trunk/languages/cyberpulse-en_US.php

    r3760235 r3763154  
    10291029    'Hidden file scanner (cached allowed)' => 'Hidden file scanner (cached allowed)',
    10301030    'Fake User-Agent (browser version mismatch)' => 'Fake User-Agent (browser version mismatch)',
     1031   
     1032    // ------------------------------------------------------------------
     1033    // AI Scraping Protection — two independent categories (Training / Search)
     1034    // ------------------------------------------------------------------
     1035    'AI bots are split into two independent categories. Enable only what you actually want to block.'
     1036        => 'AI bots are split into two independent categories. Enable only what you actually want to block.',
     1037    'AI Training Bots'
     1038        => 'AI Training Bots',
     1039    'AI Search Bots'
     1040        => 'AI Search Bots',
     1041    'Block AI training bots'
     1042        => 'Block AI training bots',
     1043    'Block AI search bots'
     1044        => 'Block AI search bots',
     1045    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.'
     1046        => 'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.',
     1047    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.'
     1048        => 'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.',
     1049    'Recommended: ON'
     1050        => 'Recommended: ON',
     1051    'Your choice'
     1052        => 'Your choice',
     1053
     1054    // ------------------------------------------------------------------
     1055    // .htaccess Protection — server-aware recommendation & status
     1056    // ------------------------------------------------------------------
     1057    'Not applicable'
     1058        => 'Not applicable',
     1059    'Not available'
     1060        => 'Not available',
     1061    'Recommendation:'
     1062        => 'Recommendation:',
     1063    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.'
     1064        => 'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.',
     1065    'Your server does not use .htaccess.'
     1066        => 'Your server does not use .htaccess.',
     1067    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.'
     1068        => 'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.',
     1069    '.htaccess is not writable.'
     1070        => '.htaccess is not writable.',
     1071    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.'
     1072        => 'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.',
     1073    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.'
     1074        => 'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.',
     1075    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.'
     1076        => 'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.',
    10311077);
  • cyberpulse/trunk/languages/cyberpulse-es_ES.php

    r3760235 r3763154  
    10341034    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10351035    'legitimate users have long updated, such versions are used only by bots with old signatures.' => 'los usuarios legítimos se actualizaron hace mucho tiempo, tales versiones solo son utilizadas por bots con firmas antiguas.',
     1036   
     1037    // AI Scraping Protection
     1038    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'Los bots de IA se dividen en dos categorías independientes. Habilite solo lo que realmente desea bloquear.',
     1039    'AI Training Bots' => 'Bots de entrenamiento de IA',
     1040    'AI Search Bots' => 'Bots de búsqueda de IA',
     1041    'Block AI training bots' => 'Bloquear bots de entrenamiento de IA',
     1042    'Block AI search bots' => 'Bloquear bots de búsqueda de IA',
     1043    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => 'Bots que descargan su contenido para entrenar modelos de IA (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). No muestran su sitio a los usuarios, solo recopilan datos.',
     1044    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => 'Bots que indexan su sitio para motores de búsqueda de IA (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Sus solicitudes están vinculadas a la generación de respuestas para los usuarios de esos servicios. Habilite esto si desea excluir completamente los rastreadores de IA de su sitio.',
     1045    'Recommended: ON' => 'Recomendado: ACTIVADO',
     1046    'Your choice' => 'Su elección',
     1047    'Not applicable' => 'No aplicable',
     1048    'Not available' => 'No disponible',
     1049    'Recommendation:' => 'Recomendación:',
     1050    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => 'habilite la protección .htaccess: bloquea las amenazas antes de que se cargue PHP y detiene el acceso directo a archivos confidenciales que PHP no puede ver. Su servidor lo admite y .htaccess tiene permisos de escritura.',
     1051    'Your server does not use .htaccess.' => 'Su servidor no utiliza .htaccess.',
     1052    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => 'Servidor detectado: nginx u otra pila que no sea Apache. Las reglas de .htaccess se ignorarán. Los bots de IA y los archivos confidenciales siguen protegidos a nivel de PHP. Para el bloqueo a nivel de servidor en nginx, agregue reglas equivalentes manualmente en su configuración de nginx.',
     1053    '.htaccess is not writable.' => '.htaccess no tiene permisos de escritura.',
     1054    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'CyberPulse no puede escribir en .htaccess en este host. Verifique los permisos del archivo (normalmente 644) o comuníquese con su proveedor de alojamiento. Los bots de IA siguen bloqueados a nivel de PHP.',
     1055    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => 'Se aplica automáticamente al guardar. Las reglas se eliminan cuando se desmarca. Se conserva el resto del contenido de .htaccess (WordPress, complementos de caché, etc.). Una escritura fallida se verifica y se revierte automáticamente.',
     1056    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => 'Agrega reglas de bloqueo directamente a .htaccess (solo Apache / LiteSpeed). Bloquea bots de IA y archivos confidenciales (.git, .env, .sql, claves, copias de seguridad) antes de que se cargue PHP, ahorrando recursos del servidor. Las reglas de los bots de IA siguen los dos interruptores anteriores: deshabilitar una categoría también la elimina de .htaccess.',
    10361057);
  • cyberpulse/trunk/languages/cyberpulse-fr_FR.php

    r3760235 r3763154  
    10361036    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10371037    'legitimate users have long updated, such versions are used only by bots with old signatures.' => 'les utilisateurs légitimes ont mis à jour depuis longtemps, ces versions ne sont utilisées que par des bots avec de vieilles signatures.',
     1038   
     1039    // AI Scraping Protection
     1040    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'Les bots IA sont divisés en deux catégories indépendantes. Activez uniquement ce que vous voulez vraiment bloquer.',
     1041    'AI Training Bots' => 'Bots d\'entraînement IA',
     1042    'AI Search Bots' => 'Bots de recherche IA',
     1043    'Block AI training bots' => 'Bloquer les bots d\'entraînement IA',
     1044    'Block AI search bots' => 'Bloquer les bots de recherche IA',
     1045    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => 'Bots qui téléchargent votre contenu pour entraîner des modèles d\'IA (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). Ils n\'affichent pas votre site aux utilisateurs — ils ne font que collecter des données.',
     1046    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => 'Bots qui indexent votre site pour les moteurs de recherche IA (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Leurs requêtes sont liées à la génération de réponses pour les utilisateurs de ces services. Activez ceci si vous souhaitez exclure complètement les crawlers IA de votre site.',
     1047    'Recommended: ON' => 'Recommandé : ACTIF',
     1048    'Your choice' => 'Votre choix',
     1049    'Not applicable' => 'Non applicable',
     1050    'Not available' => 'Non disponible',
     1051    'Recommendation:' => 'Recommandation :',
     1052    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => 'activez la protection .htaccess — elle bloque les menaces avant le chargement de PHP et empêche l\'accès direct aux fichiers sensibles que PHP ne peut pas voir. Votre serveur le prend en charge et .htaccess est accessible en écriture.',
     1053    'Your server does not use .htaccess.' => 'Votre serveur n\'utilise pas .htaccess.',
     1054    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => 'Serveur détecté : nginx ou une autre pile non-Apache. Les règles .htaccess seront ignorées. Les bots IA et les fichiers sensibles sont toujours protégés au niveau de PHP. Pour un blocage au niveau du serveur sur nginx, ajoutez manuellement des règles équivalentes dans votre configuration nginx.',
     1055    '.htaccess is not writable.' => '.htaccess n\'est pas accessible en écriture.',
     1056    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'CyberPulse ne peut pas écrire dans .htaccess sur cet hôte. Vérifiez les autorisations de fichier (généralement 644) ou contactez votre hébergeur. Les bots IA sont toujours bloqués au niveau de PHP.',
     1057    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => 'Appliqué automatiquement lors de l\'enregistrement. Les règles sont supprimées lorsque la case est décochée. Le reste du contenu de .htaccess (WordPress, plugins de cache, etc.) est préservé. Un échec d\'écriture est vérifié et annulé automatiquement.',
     1058    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => 'Ajoute des règles de blocage directement dans .htaccess (Apache / LiteSpeed uniquement). Bloque les bots IA et les fichiers sensibles (.git, .env, .sql, clés, sauvegardes) avant même le chargement de PHP, économisant les ressources du serveur. Les règles des bots IA suivent les deux interrupteurs ci-dessus — la désactivation d\'une catégorie la supprime également de .htaccess.',
    10381059);
  • cyberpulse/trunk/languages/cyberpulse-it_IT.php

    r3760235 r3763154  
    10221022    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10231023    'legitimate users have long updated, such versions are used only by bots with old signatures.' => 'gli utenti legittimi si sono aggiornati da tempo, tali versioni sono usate solo da bot con vecchie firme.',
     1024   
     1025    // AI Scraping Protection
     1026    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'I bot IA sono divisi in due categorie indipendenti. Abilita solo ciò che vuoi effettivamente bloccare.',
     1027    'AI Training Bots' => 'Bot di addestramento IA',
     1028    'AI Search Bots' => 'Bot di ricerca IA',
     1029    'Block AI training bots' => 'Blocca i bot di addestramento IA',
     1030    'Block AI search bots' => 'Blocca i bot di ricerca IA',
     1031    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => 'Bot che scaricano i tuoi contenuti per addestrare modelli IA (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, ecc.). Non mostrano il tuo sito agli utenti — raccolgono solo dati.',
     1032    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => 'Bot che indicizzano il tuo sito per i motori di ricerca IA (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Le loro richieste sono legate alla generazione di risposte per gli utenti di quei servizi. Abilita questa opzione se vuoi escludere completamente i crawler IA dal tuo sito.',
     1033    'Recommended: ON' => 'Consigliato: ON',
     1034    'Your choice' => 'A tua scelta',
     1035    'Not applicable' => 'Non applicabile',
     1036    'Not available' => 'Non disponibile',
     1037    'Recommendation:' => 'Raccomandazione:',
     1038    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => 'abilita la protezione .htaccess — blocca le minacce prima che PHP venga caricato e impedisce l\'accesso diretto a file sensibili che PHP non può vedere. Il tuo server lo supporta e .htaccess è scrivibile.',
     1039    'Your server does not use .htaccess.' => 'Il tuo server non utilizza .htaccess.',
     1040    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => 'Server rilevato: nginx o un altro stack non Apache. Le regole .htaccess verranno ignorate. I bot IA e i file sensibili sono comunque protetti a livello PHP. Per il blocco a livello di server su nginx, aggiungi manualmente regole equivalenti nella tua configurazione nginx.',
     1041    '.htaccess is not writable.' => '.htaccess non è scrivibile.',
     1042    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'CyberPulse non può scrivere in .htaccess su questo host. Controlla i permessi del file (tipicamente 644) o contatta il tuo provider di hosting. I bot IA sono comunque bloccati a livello PHP.',
     1043    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => 'Applicato automaticamente al salvataggio. Le regole vengono rimosse quando la casella viene deselezionata. Il resto del contenuto di .htaccess (WordPress, plugin di caching, ecc.) viene preservato. Una scrittura fallita viene verificata e ripristinata automaticamente.',
     1044    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => 'Aggiunge regole di blocco direttamente in .htaccess (solo Apache / LiteSpeed). Blocca bot IA e file sensibili (.git, .env, .sql, chiavi, backup) prima ancora che PHP venga caricato, risparmiando risorse del server. Le regole dei bot IA seguono i due interruttori sopra — la disabilitazione di una categoria la rimuove anche da .htaccess.',
    10241045);
  • cyberpulse/trunk/languages/cyberpulse-ja.php

    r3760235 r3763154  
    10361036    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10371037    'legitimate users have long updated, such versions are used only by bots with old signatures.' => '正規のユーザーはとっくに更新しています。このようなバージョンは古いシグネチャを持つボットによってのみ使用されます。',
     1038   
     1039    // AI Scraping Protection
     1040    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'AIボットは2つの独立したカテゴリに分かれています。実際にブロックしたいものだけを有効にしてください。',
     1041    'AI Training Bots' => 'AIトレーニングボット',
     1042    'AI Search Bots' => 'AI検索ボット',
     1043    'Block AI training bots' => 'AIトレーニングボットをブロック',
     1044    'Block AI search bots' => 'AI検索ボットをブロック',
     1045    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => 'AIモデルのトレーニングのためにコンテンツをダウンロードするボット(GPTBot、CCBot、Google-Extended、ClaudeBot、Bytespider、Amazonbotなど)。ユーザーにサイトを表示することはなく、データを収集するだけです。',
     1046    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => 'AI検索エンジン(ChatGPT Search、Perplexity、Claude Search、Amazon Rufus)のためにサイトをインデックスするボット。これらのリクエストは、それらのサービスのユーザーへの回答生成に関連しています。AIクローラーをサイトから完全に除外したい場合は、これを有効にしてください。',
     1047    'Recommended: ON' => '推奨:オン',
     1048    'Your choice' => 'お任せします',
     1049    'Not applicable' => '該当なし',
     1050    'Not available' => '利用不可',
     1051    'Recommendation:' => '推奨:',
     1052    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => '.htaccess保護を有効にします — PHPが読み込まれる前に脅威をブロックし、PHPが見ることのできない機密ファイルへの直接アクセスを停止します。サーバーがサポートしており、.htaccessは書き込み可能です。',
     1053    'Your server does not use .htaccess.' => 'サーバーは.htaccessを使用していません。',
     1054    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => '検出されたサーバー:nginxまたはその他の非Apacheスタック。.htaccessルールは無視されます。AIボットと機密ファイルはPHPレベルで保護されています。nginxでのサーバーレベルのブロックには、同等のルールをnginx設定に手動で追加してください。',
     1055    '.htaccess is not writable.' => '.htaccessは書き込み可能ではありません。',
     1056    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'CyberPulseはこのホストの.htaccessに書き込むことができません。ファイルの権限(通常644)を確認するか、ホスティングプロバイダーに連絡してください。AIボットはPHPレベルでブロックされています。',
     1057    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => '保存時に自動的に適用されます。チェックを外すとルールが削除されます。他の.htaccessの内容(WordPress、キャッシュプラグインなど)は保持されます。書き込みに失敗した場合は検証され、自動的にロールバックされます。',
     1058    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => 'ブロックルールを.htaccessに直接追加します(Apache / LiteSpeedのみ)。PHPが読み込まれる前にAIボットと機密ファイル(.git、.env、.sql、キー、バックアップ)をブロックし、サーバーリソースを節約します。AIボットのルールは上記の2つのトグルに従います — カテゴリを無効にすると.htaccessからも削除されます。',
    10381059);
  • cyberpulse/trunk/languages/cyberpulse-ko_KR.php

    r3760235 r3763154  
    10191019    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10201020    'legitimate users have long updated, such versions are used only by bots with old signatures.' => '정상 사용자는 오래전에 업데이트했습니다. 이러한 버전은 오래된 서명을 가진 봇만 사용합니다.',
     1021   
     1022    // AI Scraping Protection
     1023    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'AI 봇은 두 개의 독립적인 범주로 나뉩니다. 실제로 차단하려는 항목만 활성화하세요.',
     1024    'AI Training Bots' => 'AI 학습 봇',
     1025    'AI Search Bots' => 'AI 검색 봇',
     1026    'Block AI training bots' => 'AI 학습 봇 차단',
     1027    'Block AI search bots' => 'AI 검색 봇 차단',
     1028    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => 'AI 모델 학습을 위해 콘텐츠를 다운로드하는 봇(GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot 등). 사용자에게 사이트를 표시하지 않고 데이터만 수집합니다.',
     1029    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => 'AI 검색 엔진(ChatGPT Search, Perplexity, Claude Search, Amazon Rufus)을 위해 사이트를 색인하는 봇. 이들의 요청은 해당 서비스 사용자를 위한 답변 생성과 관련이 있습니다. 사이트에서 AI 크롤러를 완전히 배제하려면 이 옵션을 활성화하세요.',
     1030    'Recommended: ON' => '권장: 켜짐',
     1031    'Your choice' => '선택 사항',
     1032    'Not applicable' => '해당 없음',
     1033    'Not available' => '사용할 수 없음',
     1034    'Recommendation:' => '권장 사항:',
     1035    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => '.htaccess 보호를 활성화하세요 — PHP가 로드되기 전에 위협을 차단하고 PHP가 볼 수 없는 민감한 파일에 대한 직접 액세스를 중지합니다. 서버가 이를 지원하며 .htaccess를 쓸 수 있습니다.',
     1036    'Your server does not use .htaccess.' => '서버가 .htaccess를 사용하지 않습니다.',
     1037    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => '감지된 서버: nginx 또는 기타 비 Apache 스택. .htaccess 규칙은 무시됩니다. AI 봇 및 민감한 파일은 여전히 PHP 수준에서 보호됩니다. nginx에서 서버 수준 차단을 사용하려면 동등한 규칙을 nginx 구성에 수동으로 추가하세요.',
     1038    '.htaccess is not writable.' => '.htaccess에 쓸 수 없습니다.',
     1039    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'CyberPulse는 이 호스트의 .htaccess에 쓸 수 없습니다. 파일 권한(일반적으로 644)을 확인하거나 호스팅 제공업체에 문의하세요. AI 봇은 여전히 PHP 수준에서 차단됩니다.',
     1040    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => '저장 시 자동으로 적용됩니다. 선택을 취소하면 규칙이 제거됩니다. 기타 .htaccess 콘텐츠(WordPress, 캐싱 플러그인 등)는 보존됩니다. 쓰기 실패는 확인 후 자동으로 롤백됩니다.',
     1041    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => '차단 규칙을 .htaccess에 직접 추가합니다(Apache / LiteSpeed 전용). PHP가 로드되기 전에 AI 봇 및 민감한 파일(.git, .env, .sql, 키, 백업)을 차단하여 서버 리소스를 절약합니다. AI 봇 규칙은 위의 두 토글을 따릅니다 — 범주를 비활성화하면 .htaccess에서도 제거됩니다.',
    10211042);
  • cyberpulse/trunk/languages/cyberpulse-pt_BR.php

    r3760235 r3763154  
    10321032    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10331033    'legitimate users have long updated, such versions are used only by bots with old signatures.' => 'usuários legítimos já atualizaram há muito tempo, essas versões são usadas apenas por bots com assinaturas antigas.',
     1034   
     1035    // AI Scraping Protection
     1036    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'Os bots de IA são divididos em duas categorias independentes. Ative apenas o que você realmente deseja bloquear.',
     1037    'AI Training Bots' => 'Bots de treinamento de IA',
     1038    'AI Search Bots' => 'Bots de busca de IA',
     1039    'Block AI training bots' => 'Bloquear bots de treinamento de IA',
     1040    'Block AI search bots' => 'Bloquear bots de busca de IA',
     1041    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => 'Bots que baixam seu conteúdo para treinar modelos de IA (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). Eles não exibem seu site aos usuários — apenas coletam dados.',
     1042    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => 'Bots que indexam seu site para mecanismos de busca de IA (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Suas solicitações estão vinculadas à geração de respostas para usuários desses serviços. Ative isso se quiser excluir completamente os rastreadores de IA do seu site.',
     1043    'Recommended: ON' => 'Recomendado: LIGADO',
     1044    'Your choice' => 'Sua escolha',
     1045    'Not applicable' => 'Não aplicável',
     1046    'Not available' => 'Não disponível',
     1047    'Recommendation:' => 'Recomendação:',
     1048    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => 'ative a proteção .htaccess — ela bloqueia ameaças antes que o PHP carregue e impede o acesso direto a arquivos confidenciais que o PHP não consegue ver. Seu servidor oferece suporte e o .htaccess é gravável.',
     1049    'Your server does not use .htaccess.' => 'Seu servidor não usa .htaccess.',
     1050    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => 'Servidor detectado: nginx ou outra pilha não-Apache. As regras do .htaccess serão ignoradas. Bots de IA e arquivos confidenciais ainda estão protegidos no nível do PHP. Para bloqueio no nível do servidor no nginx, adicione regras equivalentes manualmente na configuração do seu nginx.',
     1051    '.htaccess is not writable.' => 'O .htaccess não é gravável.',
     1052    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'O CyberPulse não pode gravar no .htaccess neste host. Verifique as permissões do arquivo (normalmente 644) ou entre em contato com seu provedor de hospedagem. Os bots de IA ainda são bloqueados no nível do PHP.',
     1053    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => 'Aplicado automaticamente ao salvar. As regras são removidas quando desmarcadas. O restante do conteúdo do .htaccess (WordPress, plugins de cache, etc.) é preservado. Uma gravação com falha é verificada e revertida automaticamente.',
     1054    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => 'Adiciona regras de bloqueio diretamente ao .htaccess (apenas Apache / LiteSpeed). Bloqueia bots de IA e arquivos confidenciais (.git, .env, .sql, chaves, backups) antes mesmo de o PHP carregar, economizando recursos do servidor. As regras de bots de IA seguem os dois botões acima — desativar uma categoria também a remove do .htaccess.',
    10341055);
  • cyberpulse/trunk/languages/cyberpulse-ru_RU.php

    r3760235 r3763154  
    10391039    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10401040    'legitimate users have long updated, such versions are used only by bots with old signatures.' => 'легитимные пользователи давно обновились, такие версии используют только боты со старыми сигнатурами.',
     1041
     1042    // ------------------------------------------------------------------
     1043    // AI Scraping Protection — two independent categories (Training / Search)
     1044    // ------------------------------------------------------------------
     1045    'AI bots are split into two independent categories. Enable only what you actually want to block.'
     1046        => 'ИИ-боты разделены на две независимые категории. Включайте только те, которые действительно хотите блокировать.',
     1047    'AI Training Bots'
     1048        => 'Боты обучения ИИ',
     1049    'AI Search Bots'
     1050        => 'Боты ИИ-поиска',
     1051    'Block AI training bots'
     1052        => 'Блокировать ботов обучения ИИ',
     1053    'Block AI search bots'
     1054        => 'Блокировать ботов ИИ-поиска',
     1055    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.'
     1056        => 'Боты, скачивающие ваш контент для обучения ИИ-моделей (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot и др.). Они не показывают ваш сайт пользователям — только собирают данные.',
     1057    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.'
     1058        => 'Боты, индексирующие ваш сайт для ИИ-поисковиков (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Их запросы связаны с формированием ответов для пользователей этих сервисов. Включайте, если хотите полностью исключить ИИ-краулеров с вашего сайта.',
     1059    'Recommended: ON'
     1060        => 'Рекомендуется: ВКЛ',
     1061    'Your choice'
     1062        => 'На ваш выбор',
     1063
     1064    // ------------------------------------------------------------------
     1065    // AI Scraping Protection — two independent categories (Training / Search)
     1066    // ------------------------------------------------------------------
     1067    'AI bots are split into two independent categories. Enable only what you actually want to block.'
     1068        => 'ИИ-боты разделены на две независимые категории. Включайте только те, которые действительно хотите блокировать.',
     1069    'AI Training Bots'
     1070        => 'Боты обучения ИИ',
     1071    'AI Search Bots'
     1072        => 'Боты ИИ-поиска',
     1073    'Block AI training bots'
     1074        => 'Блокировать ботов обучения ИИ',
     1075    'Block AI search bots'
     1076        => 'Блокировать ботов ИИ-поиска',
     1077    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.'
     1078        => 'Боты, скачивающие ваш контент для обучения ИИ-моделей (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot и др.). Они не показывают ваш сайт пользователям — только собирают данные.',
     1079    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.'
     1080        => 'Боты, индексирующие ваш сайт для ИИ-поисковиков (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Их запросы связаны с формированием ответов для пользователей этих сервисов. Включайте, если хотите полностью исключить ИИ-краулеров с вашего сайта.',
     1081    'Recommended: ON'
     1082        => 'Рекомендуется: ВКЛ',
     1083    'Your choice'
     1084        => 'На ваш выбор',
     1085
     1086    // ------------------------------------------------------------------
     1087    // .htaccess Protection — server-aware recommendation & status
     1088    // ------------------------------------------------------------------
     1089    'Not applicable'
     1090        => 'Не применимо',
     1091    'Not available'
     1092        => 'Недоступно',
     1093    'Recommendation:'
     1094        => 'Рекомендация:',
     1095    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.'
     1096        => 'включите .htaccess-защиту — она блокирует угрозы до загрузки PHP и закрывает прямой доступ к чувствительным файлам, которые PHP не видит. Ваш сервер поддерживает её, и .htaccess доступен для записи.',
     1097    'Your server does not use .htaccess.'
     1098        => 'Ваш сервер не использует .htaccess.',
     1099    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.'
     1100        => 'Обнаружен сервер: nginx или другой не-Apache стек. Правила .htaccess будут проигнорированы. ИИ-боты и чувствительные файлы всё равно защищены на уровне PHP. Для блокировки на уровне сервера в nginx добавьте аналогичные правила в конфиг nginx вручную.',
     1101    '.htaccess is not writable.'
     1102        => '.htaccess недоступен для записи.',
     1103    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.'
     1104        => 'CyberPulse не может писать в .htaccess на этом хостинге. Проверьте права на файл (обычно 644) или обратитесь к хостинг-провайдеру. ИИ-боты всё равно блокируются на уровне PHP.',
     1105    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.'
     1106        => 'Применяется автоматически при сохранении. Правила удаляются при снятии галочки. Остальное содержимое .htaccess (WordPress, кэширующие плагины и т.д.) сохраняется. Неудачная запись проверяется и автоматически откатывается.',
     1107    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.'
     1108        => 'Добавляет правила блокировки прямо в .htaccess (только Apache / LiteSpeed). Блокирует ИИ-ботов и чувствительные файлы (.git, .env, .sql, ключи, бэкапы) ещё до загрузки PHP, экономя ресурсы сервера. Правила для ИИ-ботов подчиняются двум переключателям выше — отключение категории убирает её и из .htaccess.',
    10411109);
  • cyberpulse/trunk/languages/cyberpulse-zh_CN.php

    r3760235 r3763154  
    10321032    'Chrome < 70 (2018), Firefox < 60, Safari < 12' => 'Chrome < 70 (2018), Firefox < 60, Safari < 12',
    10331033    'legitimate users have long updated, such versions are used only by bots with old signatures.' => '正常用户早已更新,此类版本仅被带有旧签名的机器人使用。',
     1034   
     1035    // AI Scraping Protection
     1036    'AI bots are split into two independent categories. Enable only what you actually want to block.' => 'AI 机器人分为两个独立的类别。仅启用您确实想要阻止的内容。',
     1037    'AI Training Bots' => 'AI 训练机器人',
     1038    'AI Search Bots' => 'AI 搜索机器人',
     1039    'Block AI training bots' => '阻止 AI 训练机器人',
     1040    'Block AI search bots' => '阻止 AI 搜索机器人',
     1041    'Bots that download your content to train AI models (GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc.). They do not display your site to users — they only collect data.' => '下载您的内容以训练 AI 模型的机器人(如 GPTBot、CCBot、Google-Extended、ClaudeBot、Bytespider、Amazonbot 等)。它们不会向用户显示您的网站,仅收集数据。',
     1042    'Bots that index your site for AI search engines (ChatGPT Search, Perplexity, Claude Search, Amazon Rufus). Their requests are tied to generating answers for users of those services. Enable this if you want to fully exclude AI crawlers from your site.' => '为 AI 搜索引擎(如 ChatGPT Search、Perplexity、Claude Search、Amazon Rufus)索引您网站的机器人。它们的请求与为这些服务的用户生成答案相关。如果您想将 AI 抓取程序从您的网站中完全排除,请启用此项。',
     1043    'Recommended: ON' => '推荐:开启',
     1044    'Your choice' => '由您决定',
     1045    'Not applicable' => '不适用',
     1046    'Not available' => '不可用',
     1047    'Recommendation:' => '建议:',
     1048    'enable .htaccess protection — it blocks threats before PHP loads and stops direct access to sensitive files that PHP cannot see. Your server supports it and .htaccess is writable.' => '启用 .htaccess 保护——它可以在加载 PHP 之前拦截威胁,并阻止直接访问 PHP 无法看到的敏感文件。您的服务器支持此功能,且 .htaccess 可写。',
     1049    'Your server does not use .htaccess.' => '您的服务器不使用 .htaccess。',
     1050    'Detected server: nginx or another non-Apache stack. .htaccess rules will be ignored. AI bots and sensitive files are still protected at the PHP level. For server-level blocking on nginx, add equivalent rules to your nginx config manually.' => '检测到的服务器:nginx 或其他非 Apache 环境。.htaccess 规则将被忽略。AI 机器人和敏感文件仍然在 PHP 级别受到保护。要在 nginx 上实现服务器级别的拦截,请手动将等效规则添加到您的 nginx 配置中。',
     1051    '.htaccess is not writable.' => '.htaccess 不可写。',
     1052    'CyberPulse cannot write to .htaccess on this host. Check file permissions (typically 644) or contact your hosting provider. AI bots are still blocked at the PHP level.' => 'CyberPulse 无法在此主机上写入 .htaccess。请检查文件权限(通常为 644)或联系您的托管服务提供商。AI 机器人仍然在 PHP 级别被拦截。',
     1053    'Applied automatically on save. Rules removed when unchecked. Other .htaccess content (WordPress, caching plugins, etc.) is preserved. A failed write is verified and rolled back automatically.' => '保存时自动应用。取消勾选时删除规则。保留 .htaccess 的其他内容(如 WordPress、缓存插件等)。写入失败时会自动验证并回滚。',
     1054    'Adds blocking rules directly to .htaccess (Apache / LiteSpeed only). Blocks AI bots and sensitive files (.git, .env, .sql, keys, backups) before PHP even loads, saving server resources. The AI-bot rules follow the two toggles above — disabling a category also removes it from .htaccess.' => '直接将拦截规则添加到 .htaccess(仅限 Apache / LiteSpeed)。在加载 PHP 之前拦截 AI 机器人和敏感文件(.git、.env、.sql、密钥、备份),节省服务器资源。AI 机器人规则遵循上方的两个开关——禁用某个类别也会将其从 .htaccess 中移除。',
    10341055);
  • cyberpulse/trunk/readme.txt

    r3761760 r3763154  
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 5.9.1.1
     7Stable tag: 5.9.1.2
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    112112== Changelog ==
    113113
     114= 5.9.1.2 =
     115* 🤖 AI bot protection is now configurable. Added two independent toggles so you control exactly what gets blocked.
     116* 🧠 AI Training Bots (default ON) — blocks GPTBot, CCBot, Google-Extended, ClaudeBot, Bytespider, Amazonbot, etc. They only download your content and never show your site to users.
     117* 🔍 AI Search Bots (default OFF) — blocks OAI-SearchBot, ChatGPT-User, PerplexityBot, Claude-User, Amzn-SearchBot, etc. They index your site for AI search engines. Enable this if you want the old strict behavior.
     118* 🆕 Expanded signature database — added new AI bots: DuckAssistBot (DuckDuckGo), Amzn-User (Amazon), Grok-DeepSearch (xAI), QwenBot (Alibaba), DeepSeekBot, xAI-Crawler, and cohere-training-data-crawler.
     119* 🛡️ New server-aware .htaccess panel: shows "Recommended: ON" on Apache/LiteSpeed with a writable file, warns clearly on nginx or read-only setups, and disables the checkbox when the feature cannot work.
     120
    114121= 5.9.1.1 =
    115122* 🔒 Security: User-Agent validation rewritten — hardcoded Chrome version threshold replaced with behavioural verification (Sec-Fetch-*, Client Hints, Accept-Language).
Note: See TracChangeset for help on using the changeset viewer.