#!/usr/bin/env bash # This pre-start script updates the datum_gateway_config.json file with the user's Knots RPC configuration APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" DATUM_CONFIG_FILE="${APP_DATA_DIR}/data/settings/datum_gateway_config.json" DESIRED_OWNER="1000:1000" if [ -f "${DATUM_CONFIG_FILE}" ]; then echo "Checking DATUM configuration file." # Check if Knots environment variables are set if [ -z "${APP_BITCOIN_RPC_USER}" ] || [ -z "${APP_BITCOIN_RPC_PASS}" ] || [ -z "${APP_BITCOIN_NODE_IP}" ] || [ -z "${APP_BITCOIN_RPC_PORT}" ]; then echo "Missing Bitcoin Knots environment variables. Exiting." exit 1 fi # Check if the file contains default placeholder values that we need to configure on install # These have values of "auto-configure-on-install" if jq -e '.bitcoind | .rpcuser, .rpcpassword, .rpcurl | select(. == "auto-configure-on-install")' "$DATUM_CONFIG_FILE" > /dev/null; then echo "Initializing DATUM config with Bitcoin Knots RPC settings." # Update the configuration jq --arg user "$APP_BITCOIN_RPC_USER" \ --arg pass "$APP_BITCOIN_RPC_PASS" \ --arg url "${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" \ '.bitcoind.rpcuser = $user | .bitcoind.rpcpassword = $pass | .bitcoind.rpcurl = $url' \ "$DATUM_CONFIG_FILE" > "${DATUM_CONFIG_FILE}.tmp" && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" # reset permissions chown "${DESIRED_OWNER}" "$DATUM_CONFIG_FILE" echo "DATUM configuration updated successfully." else echo "DATUM configuration is up-to-date." fi if jq -e '.mining.pool_address | select(. == "enter your bitcoin address")' "$DATUM_CONFIG_FILE" > /dev/null; then echo "Bitcoin address invalid, resetting." jq -e '.mining.pool_address = ""' "$DATUM_CONFIG_FILE" > "$DATUM_CONFIG_FILE".tmp && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" fi if jq -e '.api.modify_conf' "$DATUM_CONFIG_FILE" > /dev/null; then echo "New API already set" else jq -e '.api.modify_conf = true' "$DATUM_CONFIG_FILE" > "$DATUM_CONFIG_FILE".tmp && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" fi if jq -e '.api.admin_password' "$DATUM_CONFIG_FILE" > /dev/null; then echo "Admin password already set" else jq -e '.api.admin_password = "umbrel"' "$DATUM_CONFIG_FILE" > "$DATUM_CONFIG_FILE".tmp && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" fi else echo "DATUM configuration file not found. Installation incomplete." exit 1 fi