#!/usr/bin/env bash
set -euo pipefail

# Этот скрипт проверяет файл Nextcloud config.php на наличие 'nextcloud_web_1' в массиве доверенных_доменов и добавляет его, если он не существует. При установке версий до 29.0.4 на umbrelOS домен не будет добавлен через `NEXTCLOUD_TRUSTED_DOMAIN`.
# Это обрабатывается в перехватчике после обновления, чтобы гарантировать, что мы не мешаем процессу запуска Nextcloud и предстартовому сценарию, в который записывается config.php.

APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)"
CONFIG_PHP_FILE="${APP_DATA_DIR}/data/nextcloud/config/config.php"

DOMAIN_TO_ADD="nextcloud_web_1"

domain_exists() {
    grep -q "'$DOMAIN_TO_ADD'" "$CONFIG_PHP_FILE"
}

get_highest_index() {
    awk -F "=>" '/trusted_domains/ {
        max = 0
        while (getline && !/\),/) {
            if ($1 ~ /^[[:space:]]*[0-9]+/) {
                split($1, a, " ")
                if (a[1] > max) max = a[1]
            }
        }
        print max
    }' "$CONFIG_PHP_FILE"
}

if domain_exists; then
    echo "Domain '$DOMAIN_TO_ADD' already exists in trusted_domains."
else
    echo "Domain '$DOMAIN_TO_ADD' not found. Adding it to trusted_domains..."
    
    # Получите самый высокий текущий индекс в массиве доверенных_доменов.
    highest_index=$(get_highest_index)
    
    # Рассчитайте новый индекс для добавления
    new_index=$((highest_index + 1))

    # Добавьте новую запись домена
    sed -i "/trusted_domains/,/),/ s/),/  $new_index => '$DOMAIN_TO_ADD',\n&/" "$CONFIG_PHP_FILE"
    
    echo "Domain '$DOMAIN_TO_ADD' added successfully."
fi