#!/bin/bash

echo "=== ЭКСТРЕННОЕ ИСПРАВЛЕНИЕ РЕПОЗИТОРИЯ ==="

# 1. Находим репозиторий
if [ -d "/var/www/html/repo.notpeer.icu" ]; then
    REPO_PATH="/var/www/html/repo.notpeer.icu"
elif [ -d "/var/www/repo.notpeer.icu" ]; then
    REPO_PATH="/var/www/repo.notpeer.icu"
else
    echo "❌ Репозиторий не найден!"
    echo "Ищу .deb файлы в текущей директории..."
    REPO_PATH="."
fi

cd "$REPO_PATH"
echo "📁 Работаю в: $(pwd)"
echo ""

# 2. Показываем что есть
echo "📦 Содержимое директории:"
ls -la
echo ""

# 3. УДАЛЯЕМ все старые файлы репозитория
echo "🗑️ Удаляю старые файлы репозитория..."
rm -f Packages Packages.gz Packages.bz2 Release 2>/dev/null

# 4. Генерируем НОВЫЙ Packages файл ПРАВИЛЬНО
echo "📝 Генерирую Packages файл..."
cat > generate_packages.sh << 'GEN'
#!/bin/bash
echo "Генерация Packages..."

# Находим все .deb файлы
DEB_FILES=$(find . -maxdepth 1 -name "*.deb" -type f)

if [ -z "$DEB_FILES" ]; then
    echo "# Empty repository - waiting for packages" > Packages
    echo "⚠️  Нет .deb файлов! Создаю пустой Packages"
    exit 0
fi

# Очищаем файл
> Packages

# Обрабатываем каждый .deb файл
for DEB in $DEB_FILES; do
    echo "Обрабатываю: $(basename "$DEB")"
    
    # Извлекаем контрольную информацию
    dpkg-deb -I "$DEB" control 2>/dev/null | while IFS= read -r line; do
        echo "$line"
    done
    
    # Добавляем размер и хэш
    FILE_SIZE=$(stat -c%s "$DEB" 2>/dev/null || stat -f%z "$DEB")
    MD5=$(md5sum "$DEB" | cut -d' ' -f1)
    SHA1=$(sha1sum "$DEB" | cut -d' ' -f1)
    SHA256=$(sha256sum "$DEB" | cut -d' ' -f1)
    
    echo "Filename: ./$(basename "$DEB")"
    echo "Size: $FILE_SIZE"
    echo "MD5sum: $MD5"
    echo "SHA1: $SHA1"
    echo "SHA256: $SHA256"
    echo ""
    
done > Packages

echo "✅ Packages сгенерирован"
GEN

chmod +x generate_packages.sh
./generate_packages.sh

# 5. Проверяем и исправляем Packages если пустой
if [ ! -s "Packages" ]; then
    echo "⚠️  Packages пустой, создаю минимальный..."
    cat > Packages << PKG
Package: com.notpeer.dummypackage
Name: Dummy Package
Version: 1.0
Architecture: iphoneos-arm
Description: Temporary package for repository initialization
Maintainer: notpeer.icu <admin@notpeer.icu>
Section: System
Filename: ./test-package_1.0_iphoneos-arm.deb
Size: 544
MD5sum: d41d8cd98f00b204e9800998ecf8427e
SHA1: da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

PKG
fi

# 6. Сжимаем Packages ПРАВИЛЬНО
echo "📦 Сжимаю Packages..."
gzip -c Packages > Packages.gz

# Проверяем bzip2
if command -v bzip2 &> /dev/null; then
    bzip2 -c Packages > Packages.bz2
else
    echo "⚠️  bzip2 не установлен, создаю пустой файл"
    touch Packages.bz2
fi

# 7. Создаем ПРОСТОЙ Release файл который РАБОТАЕТ
echo "📄 Создаю Release файл..."

# Берем реальные размеры
if [ -f "Packages" ]; then
    PACK_SIZE=$(wc -c < Packages)
else
    PACK_SIZE=0
fi

if [ -f "Packages.gz" ]; then
    PACK_GZ_SIZE=$(wc -c < Packages.gz)
else
    PACK_GZ_SIZE=0
fi

if [ -f "Packages.bz2" ]; then
    PACK_BZ2_SIZE=$(wc -c < Packages.bz2)
else
    PACK_BZ2_SIZE=0
fi

# Создаем Release с реальными хэшами
cat > Release << EOF
Origin: notpeer.icu
Label: notpeer.icu Repository
Suite: stable
Codename: ios
Architectures: iphoneos-arm
Components: main
Description: Custom tweaks for iOS
Date: $(date -R)
EOF

# Добавляем MD5Sum если файлы существуют
if [ $PACK_SIZE -gt 0 ]; then
    PACK_MD5=$(md5sum Packages | cut -d' ' -f1)
    echo "MD5Sum:" >> Release
    echo " $PACK_MD5 $PACK_SIZE Packages" >> Release
fi

if [ $PACK_GZ_SIZE -gt 0 ]; then
    PACK_GZ_MD5=$(md5sum Packages.gz | cut -d' ' -f1)
    if ! grep -q "MD5Sum:" Release; then
        echo "MD5Sum:" >> Release
    fi
    echo " $PACK_GZ_MD5 $PACK_GZ_SIZE Packages.gz" >> Release
fi

if [ $PACK_BZ2_SIZE -gt 0 ] && [ -s "Packages.bz2" ]; then
    PACK_BZ2_MD5=$(md5sum Packages.bz2 | cut -d' ' -f1 2>/dev/null || echo "00000000000000000000000000000000")
    if ! grep -q "MD5Sum:" Release; then
        echo "MD5Sum:" >> Release
    fi
    echo " $PACK_BZ2_MD5 $PACK_BZ2_SIZE Packages.bz2" >> Release
fi

# 8. Создаем update.sh для будущих обновлений
echo "⚙️ Создаю скрипт обновления..."
cat > update.sh << 'UPDATE'
#!/bin/bash
echo "Обновление репозитория notpeer.icu..."

cd "$(dirname "$0")"

# Удаляем старые файлы
rm -f Packages Packages.gz Packages.bz2 Release

# Генерируем Packages
find . -name "*.deb" -type f | while read DEB; do
    echo "Package: $(basename "$DEB" .deb)"
    echo "Filename: ./$(basename "$DEB")"
    echo "Size: $(stat -c%s "$DEB" 2>/dev/null || stat -f%z "$DEB")"
    echo "MD5sum: $(md5sum "$DEB" | cut -d' ' -f1)"
    echo ""
done > Packages

# Если нет .deb файлов
if [ ! -s "Packages" ]; then
    echo "# Репозиторий notpeer.icu" > Packages
    echo "# Добавьте .deb файлы" >> Packages
fi

# Сжимаем
gzip -c Packages > Packages.gz
touch Packages.bz2 2>/dev/null

# Создаем Release
cat > Release << REL
Origin: notpeer.icu
Label: notpeer.icu Repo
Architectures: iphoneos-arm
Date: $(date -R)
REL

echo "✅ Репозиторий обновлен!"
UPDATE

chmod +x update.sh

# 9. Запускаем обновление
echo "🔄 Запускаю обновление..."
./update.sh

# 10. Проверяем результат
echo ""
echo "✅ ПРОВЕРКА РЕЗУЛЬТАТА:"
echo "========================"
ls -la Packages*
echo ""
echo "📦 Размеры файлов:"
echo "Packages: $(wc -l < Packages) строк"
echo "Packages.gz: $(wc -c < Packages.gz) байт"
echo "Packages.bz2: $(wc -c < Packages.bz2) байт"
echo ""
echo "🌐 Проверка доступности:"
echo "curl -sI http://$(hostname -I | awk '{print $1}')/repo.notpeer.icu/Release | head -1"
echo ""
echo "📱 Для добавления в Cydia:"
echo "http://$(hostname -I | awk '{print $1}')/repo.notpeer.icu/"
echo ""
echo "⚡ Для быстрого обновления: ./update.sh"
