#!/bin/bash cd /var/www/html || exit 1 # Fix permissions on config.yml if it exists if [ -f config.yml ]; then chmod 0600 config.yml fi # Create repo icon directory if it doesn't exist mkdir -p repo/icons # Create a basic repo icon if missing if [ ! -f repo/icons/icon.png ]; then echo "Creating placeholder repo icon..." # Try to download a simple icon wget -q -O repo/icons/icon.png "https://f-droid.org/assets/favicon-256.png" || echo "Could not create icon, please add one manually" fi # Function to extract version from APK (if aapt is available) get_version() { apk_file=$1 if command -v aapt >/dev/null 2>&1; then version=$(aapt dump badging "$apk_file" 2>/dev/null | grep versionName | awk -F"'" '{print $4}') echo "$version" else echo "unknown (aapt not installed)" fi } # Function to download and update only if changed update_app() { app_name=$1 app_url=$2 echo "Processing $app_name..." # Create temp directory mkdir -p ./temp # Download to temp file wget -q -O "./temp/${app_name}.apk.new" "$app_url" # Check if download was successful if [ ! -s "./temp/${app_name}.apk.new" ]; then echo " ✗ Failed to download $app_name, skipping" rm -f "./temp/${app_name}.apk.new" return fi # Extract version info from the new APK new_version=$(get_version "./temp/${app_name}.apk.new") echo " Downloaded version: $new_version" # Check if app exists and if it's different if [ -f "./repo/${app_name}.apk" ]; then # Extract version info from the existing APK current_version=$(get_version "./repo/${app_name}.apk") echo " Current version: $current_version" # Compare files (binary comparison to be absolutely sure) if ! cmp -s "./temp/${app_name}.apk.new" "./repo/${app_name}.apk"; then echo " ✓ $app_name: New version detected ($current_version → $new_version), updating..." mv "./temp/${app_name}.apk.new" "./repo/${app_name}.apk" touch -d "$(date +%Y-%m-%d)" "./repo/${app_name}.apk" else echo " ✓ $app_name: No changes detected (version $current_version), keeping existing version" rm "./temp/${app_name}.apk.new" fi else echo " ✓ $app_name: File does not exist yet, adding version $new_version..." mv "./temp/${app_name}.apk.new" "./repo/${app_name}.apk" touch -d "$(date +%Y-%m-%d)" "./repo/${app_name}.apk" fi } # Make sure archive directory exists mkdir -p archive/ # Process each app update_app "YouTube" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/youtube-revanced-extended.apk" update_app "Reddit" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/reddit-revanced-extended.apk" update_app "SoundCloud" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/soundcloud-revanced.apk" update_app "Duolingo" "https://git.felo.gg/FeloStore/Data/releases/download/latest/duolingo.apk" update_app "GoogleNews" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/googlenews-arm64-v8a-revanced.apk" update_app "Instagram" "https://git.felo.gg/FeloStore/Data/releases/download/latest/instagram.apk" update_app "Twitter" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/twitter-stable-piko.apk" update_app "NovaLauncher" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/nova-launcher-indrastorms.apk" update_app "Busuu" "https://git.felo.gg/FeloStore/Data/releases/download/latest/busuu.apk" update_app "Quizlet" "https://git.felo.gg/FeloStore/Data/releases/download/latest/quizlet.apk" update_app "Telegram" "https://git.felo.gg/FeloStore/Data/releases/download/latest/telegram.apk" # Clean up temp directory rm -rf ./temp # Add option to config to accept unsigned APKs if [ -f config.yml ]; then if ! grep -q "allow_disabled_algorithms:" config.yml; then echo "allow_disabled_algorithms: True" >> config.yml fi fi # Update F-Droid repository first with nosign to prevent signature verification issues echo "Updating F-Droid repository with nosign first..." fdroid update --allow-disabled-algorithms --use-date-from-apk --nosign # Now check for archived APKs and restore them to repo echo "Checking for archived APKs to restore..." for app in YouTube Reddit SoundCloud Duolingo GoogleNews Instagram Twitter NovaLauncher Busuu Quizlet Telegram; do if [ -f "archive/${app}.apk" ]; then echo "Restoring ${app}.apk from archive to repo" cp "archive/${app}.apk" "repo/${app}.apk" touch -d "$(date +%Y-%m-%d)" "repo/${app}.apk" fi done # Final update to ensure everything is included echo "Running final update with metadata creation..." fdroid update --allow-disabled-algorithms --use-date-from-apk --create-metadata --clean --nosign echo "Update complete!"