#!/usr/bin/env bash

APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../data)"
DESIRED_OWNER="1000:1000"

set_correct_permissions() {
	local -r path="${1}"

	# Проверьте, существует ли файл
	if [[ -f "${path}" ]]; then
		owner=$(stat -c "%u:%g" "${path}")

		if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then
			chown "${DESIRED_OWNER}" "${path}"
			echo "Changed ownership of ${path} to ${DESIRED_OWNER}"
		fi
	else
		echo "Skipping ${path} - file does not exist"
	fi
}

# Мы устанавливаем правильные разрешения для любых файлов, которые могли быть созданы предыдущим приложением, работающим с правами root:
set_correct_permissions "${APP_DATA_DIR}/bitcoin/umbrel-bitcoin.conf"
set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf"
set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf.save"
# settings.json для любой сети могло быть исправлено самим старым приложением, работающим под root.
set_correct_permissions "${APP_DATA_DIR}/bitcoin/settings.json"
set_correct_permissions "${APP_DATA_DIR}/bitcoin/regtest/settings.json"
set_correct_permissions "${APP_DATA_DIR}/bitcoin/signet/settings.json"
set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet3/settings.json"
set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet4/settings.json"

# Устанавливайте разрешения рекурсивно для всего каталога привязки /app.
if [[ -d "${APP_DATA_DIR}/app" ]]; then
	chown -R "${DESIRED_OWNER}" "${APP_DATA_DIR}/app"
fi

# Отложите загрузку полной версии приложения до тех пор, пока не будут готовы скрытые службы Tor RPC и P2P.

HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname"

if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then
	exit
fi

"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach app
"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor

echo "App: ${APP_ID} - Generating Tor Hidden Service..."

for attempt in $(seq 1 100); do
	if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then
		echo "App: ${APP_ID} - Hidden service file created successfully!"
		break
	fi
	sleep 0.1
done

if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then
	echo "App: ${APP_ID} - Hidden service file wasn't created"
fi