#!/bin/bash

# 1. Запрашиваем домен
echo -n "Введите домен для сертификата [по умолчанию: yandex.ru]: "
read DOMAIN

if [ -z "$DOMAIN" ]; then
    DOMAIN="yandex.ru"
fi

# 2. Создаем папку и переходим в нее
TARGET_DIR="fakecert"
mkdir -p "$TARGET_DIR"
cd "$TARGET_DIR" || exit 1

echo -e "\n[+] Создана папка: $TARGET_DIR"
echo "[+] Генерируем сертификат для домена: $DOMAIN на 10 лет..."

# 3. Команда генерации с динамическим именем файлов под домен
openssl req -x509 -newkey rsa:4096 \
  -keyout "${DOMAIN}.key" \
  -out "${DOMAIN}.crt" \
  -days 3650 \
  -nodes \
  -subj "/CN=$DOMAIN" \
  -addext "subjectAltName = DNS:$DOMAIN, DNS:*.$DOMAIN"

# 4. Проверяем, появились ли файлы
if [ -f "${DOMAIN}.crt" ]; then
    # Получаем полные абсолютные пути к созданным файлам
    CRT_PATH=$(pwd)/${DOMAIN}.crt
    KEY_PATH=$(pwd)/${DOMAIN}.key

    echo -e "\n\033[1;34m[+] СЕРТИФИКАТЫ УСПЕШНО СОЗДАНЫ:\033[0m"
    echo "• Сертификат:       $CRT_PATH"
    echo "• Приватный ключ:   $KEY_PATH"

    echo -e "\n======================================================================"
    echo -e "ВАШ ЧИСТЫЙ SHA-256 ХЕШ ДЛЯ XRAY (pinnedPeerCertificateChainSha256):"
    echo -e "======================================================================"
    
    # Получаем чистый HEX-хеш из созданного файла
    HEX_HASH=$(openssl x509 -in "${DOMAIN}.crt" -outform der | openssl dgst -sha256 -hex | sed 's/^.*= //')
    
    echo -e "\033[1;32m$HEX_HASH\033[0m"
    echo -e "======================================================================\n"
    
    echo "Пример для config.json клиента Xray:"
    echo "------------------------------------"
    echo "\"pinnedPeerCertificateChainSha256\": ["
    echo "    \"$HEX_HASH\""
    echo ]
else
    echo -e "\n\033[1;31m[!] Что-то пошло не так, файлы сертификата не найдены.\033[0m"
fi