# GitLeaks config для сателлитных сайтов hhivp.
# Extends default rules and adds allowlist for known false-positives.
# https://github.com/gitleaks/gitleaks#configuration

[extend]
useDefault = true

[allowlist]
description = "Allowlist for IndexNow public keys + legacy WP plugin code"

# Пути, которые целиком игнорируем
paths = [
  # IndexNow validation file (32-hex .txt в корне или в public/).
  # Это публичный ключ, по дизайну отдаётся всем — НЕ секрет.
  '''public/[a-f0-9]{32}\.txt''',
  '''^[a-f0-9]{32}\.txt$''',

  # IndexNow ping-скрипты содержат `const KEY = '<32hex>'` —
  # тот же публичный ключ, не секрет (для авторизации перед Яндекс/Bing API).
  '''scripts/indexnow\.(js|mjs|sh|ts)$''',
  '''scripts/indexnow-ping\.sh$''',

  # Legacy WordPress plugin code (akismet, jetpack, wpforms-lite, wp-cache).
  # Все "ключи" внутри — placeholder/template/internal параметры,
  # не настоящие секреты. Импортировано из старого WP-сайта как static.
  '''wp-content/.*''',

  # Минифицированные ассеты — часто содержат hash'и/токены, не секреты.
  '''.*\.min\.(js|css)$''',
  '''dist/.*''',
  '''build/.*''',

  # Защита на случай возврата CMS exports / production logs в репо
  # (см. инцидент 2026-05-24 с Ghost ghost_private_key + members_private_key).
  # Сами файлы УЖЕ удалены из history через git filter-repo, allowlist —
  # дополнительная защита для будущих commit'ов.
  '''content/logs/.*''',
  '''content/data/.*''',
  '''.*\.production\.log(\.[0-9]+)?$''',
  '''.*\.ghost\..*\.json$''',
]

# Конкретные паттерны, которые false-positive
regexes = [
  # Наш scripts/indexnow.js: const KEY = '<32-hex>' — IndexNow public key.
  '''const\s+KEY\s*=\s*['"][a-f0-9]{32}['"]''',
  # Аналог для других форм объявления того же ключа.
  '''KEY\s*[:=]\s*['"][a-f0-9]{32}['"]''',
]
