# IP-АДРЕСА
export APP_BITCOIN_NODE_IP="10.21.21.8"
export APP_BITCOIN_TOR_PROXY_IP="10.21.22.10"
export APP_BITCOIN_I2P_DAEMON_IP="10.21.22.11"

# КАТАЛОГ ДАННЫХ
export APP_BITCOIN_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin"

# ПОРТЫ
export APP_BITCOIN_RPC_PORT="8332"
export APP_BITCOIN_P2P_PORT="8333"
# Дополнительный входящий прослушиватель P2P, предоставляющий разрешения из белого списка (whitebind) этому порту; только для доверенных внутренних приложений; не публиковать на внешних ресурсах
export APP_BITCOIN_P2P_WHITEBIND_PORT="8335"
# Начиная с версии 28.1, порт прослушивания луковицы по умолчанию теперь будет иметь значение -port + 1 вместо фиксированного значения (8334 в основной сети).
# У нас все в порядке, потому что мы всегда жестко запрограммируем порт на 8333 независимо от сети.
export APP_BITCOIN_TOR_PORT="8334"
export APP_BITCOIN_ZMQ_RAWBLOCK_PORT="28332"
export APP_BITCOIN_ZMQ_RAWTX_PORT="28333"
export APP_BITCOIN_ZMQ_HASHBLOCK_PORT="28334"
export APP_BITCOIN_ZMQ_SEQUENCE_PORT="28335"
export APP_BITCOIN_ZMQ_HASHTX_PORT="28336"

# СЕТЬ
export APP_BITCOIN_NETWORK="mainnet" 

# Проверьте наличие существующего файла settings.json, чтобы переопределить APP_BITCOIN_NETWORK по выбору пользователя.
{
	BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/settings.json"
	if [[ -f "${BITCOIN_APP_CONFIG_FILE}" ]]
	then
		bitcoin_app_network=$(jq -r '.chain' "${BITCOIN_APP_CONFIG_FILE}")
		case $bitcoin_app_network in
			"main")
				APP_BITCOIN_NETWORK="mainnet";;
			"test")
				APP_BITCOIN_NETWORK="testnet";;
			"testnet4")
				APP_BITCOIN_NETWORK="testnet4";;
			"signet")
				APP_BITCOIN_NETWORK="signet";;
			"regtest")
				APP_BITCOIN_NETWORK="regtest";;
			*)
				if [[ -n "$bitcoin_app_network" ]] && [[ "$bitcoin_app_network" != "null" ]]; then
					echo "Warning (${EXPORTS_APP_ID}): Invalid network '${bitcoin_app_network}' in settings.json. Exporting APP_BITCOIN_NETWORK as default 'mainnet'."
				fi;;
		esac
	fi
} > /dev/null || true

# Файл .env для сохранения имени пользователя и пароля RPC.
BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env"

# Если файла .env не существует, создайте его со сгенерированными значениями.
if [[ ! -f "${BITCOIN_ENV_FILE}" ]]; then
	if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]]; then
		BITCOIN_RPC_USER="dfwebos"
		BITCOIN_RPC_DETAILS=$("${EXPORTS_APP_DIR}/scripts/rpcauth.py" "${BITCOIN_RPC_USER}")
		BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1)
	fi

	echo "export APP_BITCOIN_RPC_USER='${BITCOIN_RPC_USER}'"	>> "${BITCOIN_ENV_FILE}"
	echo "export APP_BITCOIN_RPC_PASS='${BITCOIN_RPC_PASS}'"	>> "${BITCOIN_ENV_FILE}"
fi

# Создайте файл .env для экспорта APP_BITCOIN_RPC_USER и APP_BITCOIN_RPC_PASS.
. "${BITCOIN_ENV_FILE}"

# СКРЫТЫЕ УСЛУГИ
rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname"
p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname"
export APP_BITCOIN_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"
export APP_BITCOIN_P2P_HIDDEN_SERVICE="$(cat "${p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"

# TODO: было бы неплохо, чтобы Electrs занялся этим вместо этого, но удаление этого приведет к поломке существующих установок Electrs до тех пор, пока они не обновятся.
# Экспортируйте параметр сети, совместимый с lectres
# lectrs использует "bitcoin" вместо "mainnet", но соответствует всем остальным тестовым сетям.
export APP_BITCOIN_NETWORK_ELECTRS=$APP_BITCOIN_NETWORK
if [[ "${APP_BITCOIN_NETWORK_ELECTRS}" = "mainnet" ]]; then
	APP_BITCOIN_NETWORK_ELECTRS="bitcoin"
fi