#!/bin/sh
set -e

APK_PATH="/usr/local/tomcat/webapps/static/pc-twa-app-unsigned.apk"
APK_RELEASE_PATH="/usr/local/tomcat/webapps/static/pc-twa-app.apk"
OUTPUT_DIR="/usr/local/tomcat/webapps/static/extracted"
SIGNED_APK="/usr/local/tomcat/webapps/static/app-repacked.apk"
KEYSTORE_DIR="/usr/local/tomcat/webapps/keystore"
JKS_FILE="$KEYSTORE_DIR/keystore.jks"
KEY_ALIAS="pricechecker"
KEYSTORE_PASS="artix-pricechecker"
KEY_PASS="artix-pricechecker"

if [ ! -f /usr/local/tomcat/initialized ]; then
    echo "Первый запуск, помечаем контейнер как инициализированный"
    touch /usr/local/tomcat/initialized

    # Проверяем, существует ли директория keystore
    if [ ! -d "$KEYSTORE_DIR" ]; then
        echo "==> Создаем директорию keystore..."
        mkdir -p "$KEYSTORE_DIR"
    fi

    # Проверяем, существует ли JKS-файл
    if [ ! -f "$JKS_FILE" ]; then
        echo "==> Keystore не найден, создаем новый..."
        keytool -genkeypair -v \
            -keystore "$JKS_FILE" \
            -alias "$KEY_ALIAS" \
            -keyalg RSA -keysize 2048 -validity 10000 \
            -storepass "$KEYSTORE_PASS" -keypass "$KEY_PASS" \
            -dname "CN=ARTIX, OU=Dev, O=ARTIX, L=Barnaul, ST=AltKrai, C=RU"
    else
        echo "==> Keystore найден, используем существующий."
    fi

    echo "==> Создаем assetlinks.json..."
    WELL_KNOWN=/usr/local/tomcat/webapps/.well-known
    if [ ! -d "$WELL_KNOWN" ]; then
        mkdir -p "$WELL_KNOWN"
    fi

    FINGERPRINT=`keytool \
        -list \
        -keystore "$JKS_FILE" \
        -alias "$KEY_ALIAS" \
        -storepass "$KEYSTORE_PASS" \
        -keypass "$KEY_PASS" | \
    sed -n 's/.*Certificate fingerprint (SHA-256): \([^[:space:]]\+\).*/\1/p'`

    cat > "$WELL_KNOWN/assetlinks.json" <<EOF
[
    {
        "relation": ["delegate_permission/common.handle_all_urls"],
        "target": {
            "namespace": "android_app",
            "package_name": "ru.rssib.pricecheckerTwa",
            "sha256_cert_fingerprints": [
                "$FINGERPRINT"
            ]
        }
    }
]
EOF

    echo "==> Декомпиляция APK..."
    apktool d "$APK_PATH" -o "$OUTPUT_DIR" --force
    
    SERVICE_HOST="https://$SERVICE_ADDR:443"

    STRINGS_XML="$OUTPUT_DIR/res/values/strings.xml"

    if [ -f "$STRINGS_XML" ]; then
        echo "==> Замена IP-адреса в strings.xml..."
        echo "==> Используем SERVICE_HOST: ${SERVICE_HOST}"
        sed -i "s|SERVICE_HOST|${SERVICE_HOST}|g" "$STRINGS_XML"
    else
        echo "Ошибка: файл $STRINGS_XML не найден!" >&2
        exit 1
    fi

    echo "==> Пересборка APK..."
    apktool b "$OUTPUT_DIR" -o "$SIGNED_APK"

    echo "==> Подписание APK..."
    uber-apk-signer --apks "$SIGNED_APK" --ks "$JKS_FILE" --ksAlias "$KEY_ALIAS" --ksKeyPass "$KEY_PASS" --ksPass "$KEYSTORE_PASS"

    # Переименовываем подписанный файл
    SIGNED_FINAL="/usr/local/tomcat/webapps/static/app-repacked-aligned-signed.apk"

    if [ -f "$SIGNED_FINAL" ]; then
        mv "$SIGNED_FINAL" "$APK_RELEASE_PATH"
    else
        echo "Ошибка: подписанный APK не найден!" >&2
        exit 1
    fi

    echo "==> Готово. APK подписан."

    echo "==> Удаляем промежуточные файлы..."
    rm -rf "$OUTPUT_DIR"
    rm -f "$SIGNED_APK"

else
    echo "Контейнер уже был инициализирован, пропускаем."
fi

# Запускаем основной процесс контейнера
exec /usr/local/tomcat/bin/catalina.sh run