#!/bin/bash

# Скрипт для обновления белого списка IP поисковых ботов
# Автоматически скачивает актуальные списки Google и Bing

MANUAL_FILE="/etc/haproxy/whitelists/whitelist-manual.txt"
OUTPUT_FILE="/etc/haproxy/whitelists/whitelist-bots.txt"
TEMP_DIR="/tmp/whitelist-update"

# Создаем временную директорию
mkdir -p "$TEMP_DIR"

echo "Начинаем обновление белого списка..."

# 1. Копируем ручные записи (Yandex + Add)
cp "$MANUAL_FILE" "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"

# 2. Скачиваем и парсим Google
echo "# Google (автоматически обновлено $(date '+%Y-%m-%d %H:%M'))" >> "$OUTPUT_FILE"
curl -s "https://developers.google.com/static/crawling/ipranges/common-crawlers.json" > "$TEMP_DIR/google.json"

if [ -f "$TEMP_DIR/google.json" ]; then
    # Извлекаем ipv4Prefix и ipv6Prefix
    grep -oE '"(ipv4Prefix|ipv6Prefix)":\s*"[^"]+"' "$TEMP_DIR/google.json" | \
    sed -E 's/"(ipv4Prefix|ipv6Prefix)":\s*"([^"]+)"/\2/' | \
    sort -u >> "$OUTPUT_FILE"
    echo "Google: OK"
else
    echo "Google: ОШИБКА скачивания"
fi

echo "" >> "$OUTPUT_FILE"

# 3. Скачиваем и парсим Bing
echo "# Bing (автоматически обновлено $(date '+%Y-%m-%d %H:%M'))" >> "$OUTPUT_FILE"
curl -s "https://www.bing.com/toolbox/bingbot.json" > "$TEMP_DIR/bing.json"

if [ -f "$TEMP_DIR/bing.json" ]; then
    # Извлекаем ipv4Prefix и ipv6Prefix
    grep -oE '"(ipv4Prefix|ipv6Prefix)":\s*"[^"]+"' "$TEMP_DIR/bing.json" | \
    sed -E 's/"(ipv4Prefix|ipv6Prefix)":\s*"([^"]+)"/\2/' | \
    sort -u >> "$OUTPUT_FILE"
    echo "Bing: OK"
else
    echo "Bing: ОШИБКА скачивания"
fi

# 4. Чистим временные файлы
rm -rf "$TEMP_DIR"

# 5. Устанавливаем правильные права
chown haproxy:haproxy "$OUTPUT_FILE"
chmod 640 "$OUTPUT_FILE"

echo "Обновление завершено!"
echo "Итоговый файл: $OUTPUT_FILE"
