Files

171 lines
7.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export APP_LIBRE_RELAY_IP="10.21.22.20"
export APP_LIBRE_RELAY_NODE_IP="10.21.21.20"
export APP_LIBRE_RELAY_TOR_PROXY_IP="10.21.22.21"
export APP_LIBRE_RELAY_I2P_DAEMON_IP="10.21.22.22"
export APP_LIBRE_RELAY_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin"
# Сохранение того же шаблона портов, что и у Bitcoin Core, но переход на диапазон 84xx, чтобы избежать конфликтов с приложением Bitcion Node.
export APP_LIBRE_RELAY_RPC_PORT="8442"
export APP_LIBRE_RELAY_P2P_PORT="8443"
export APP_LIBRE_RELAY_TOR_PORT="8444"
export APP_LIBRE_RELAY_ZMQ_RAWBLOCK_PORT="28442"
export APP_LIBRE_RELAY_ZMQ_RAWTX_PORT="28443"
export APP_LIBRE_RELAY_ZMQ_HASHBLOCK_PORT="28444"
export APP_LIBRE_RELAY_ZMQ_SEQUENCE_PORT="28445"
BITCOIN_CHAIN="main"
BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env"
{
BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/bitcoin-config.json"
if [[ -f "${BITCOIN_APP_CONFIG_FILE}" ]]
then
bitcoin_app_network=$(jq -r '.network' "${BITCOIN_APP_CONFIG_FILE}")
case $bitcoin_app_network in
"main")
BITCOIN_NETWORK="mainnet";;
"test")
BITCOIN_NETWORK="testnet";;
"testnet4")
BITCOIN_NETWORK="testnet4";;
"signet")
BITCOIN_NETWORK="signet";;
"regtest")
BITCOIN_NETWORK="regtest";;
esac
fi
} > /dev/null || true
if [[ ! -f "${BITCOIN_ENV_FILE}" ]]; then
if [[ -z "${BITCOIN_NETWORK}" ]]; then
BITCOIN_NETWORK="mainnet"
fi
if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]] || [[ -z ${BITCOIN_RPC_AUTH+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)
BITCOIN_RPC_AUTH=$(echo "$BITCOIN_RPC_DETAILS" | head -2 | tail -1 | sed -e "s/^rpcauth=//")
fi
echo "export APP_LIBRE_RELAY_NETWORK='${BITCOIN_NETWORK}'" > "${BITCOIN_ENV_FILE}"
echo "export APP_LIBRE_RELAY_RPC_USER='${BITCOIN_RPC_USER}'" >> "${BITCOIN_ENV_FILE}"
echo "export APP_LIBRE_RELAY_RPC_PASS='${BITCOIN_RPC_PASS}'" >> "${BITCOIN_ENV_FILE}"
echo "export APP_LIBRE_RELAY_RPC_AUTH='${BITCOIN_RPC_AUTH}'" >> "${BITCOIN_ENV_FILE}"
fi
. "${BITCOIN_ENV_FILE}"
# Убедитесь, что мы не сохраняем исходное значение в .env, если у нас есть более свежая версия.
# значение из конфигурации приложения
{
if [[ ! -z ${BITCOIN_NETWORK+x} ]] && [[ "${BITCOIN_NETWORK}" ]] && [[ "${APP_LIBRE_RELAY_NETWORK}" ]]
then
APP_LIBRE_RELAY_NETWORK="${BITCOIN_NETWORK}"
fi
} > /dev/null || true
if [[ "${APP_LIBRE_RELAY_NETWORK}" == "mainnet" ]]; then
BITCOIN_CHAIN="main"
elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "testnet" ]]; then
BITCOIN_CHAIN="test"
# экспорт APP_LIBRE_RELAY_RPC_PORT="18332"
# экспорт APP_LIBRE_RELAY_P2P_PORT="18333"
# экспорт APP_LIBRE_RELAY_TOR_PORT="18334"
elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "testnet4" ]]; then
BITCOIN_CHAIN="testnet4"
# экспорт APP_LIBRE_RELAY_RPC_PORT="48332"
# экспорт APP_LIBRE_RELAY_P2P_PORT="48333"
# экспорт APP_LIBRE_RELAY_TOR_PORT="48334"
elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "signet" ]]; then
BITCOIN_CHAIN="signet"
# экспорт APP_LIBRE_RELAY_RPC_PORT="38332"
# экспорт APP_LIBRE_RELAY_P2P_PORT="38333"
# экспорт APP_LIBRE_RELAY_TOR_PORT="38334"
elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "regtest" ]]; then
BITCOIN_CHAIN="regtest"
# экспорт APP_LIBRE_RELAY_RPC_PORT="18443"
# экспорт APP_LIBRE_RELAY_P2P_PORT="18444"
# экспорт APP_LIBRE_RELAY_TOR_PORT="18445"
else
echo "Warning (${EXPORTS_APP_ID}): Bitcoin Network '${APP_LIBRE_RELAY_NETWORK}' is not supported"
fi
export BITCOIN_DEFAULT_NETWORK="${BITCOIN_CHAIN}"
BIN_ARGS=()
# Комментирование опций, которые заменяются сгенерированным файлом конфигурации. Мы должны перенести все это в будущем обновлении.
# BIN_ARGS+=( "-chain=${BITCOIN_CHAIN}" )
# BIN_ARGS+=( "-proxy=${TOR_PROXY_IP}:${TOR_PROXY_PORT}" )
# BIN_ARGS+=( "-listen" )
# BIN_ARGS+=( "-bind=0.0.0.0:${APP_LIBRE_RELAY_TOR_PORT}=onion" )
# BIN_ARGS+=( "-bind=${APP_LIBRE_RELAY_NODE_IP}" )
# BIN_ARGS+=( "-port=${APP_LIBRE_RELAY_P2P_PORT}" )
# BIN_ARGS+=( "-rpcport=${APP_LIBRE_RELAY_RPC_PORT}" )
# Мы жестко запрограммировали порты p2p и rpc, чтобы они всегда были одинаковыми для всех сетей.
BIN_ARGS+=( "-port=${APP_LIBRE_RELAY_P2P_PORT}" )
BIN_ARGS+=( "-rpcport=${APP_LIBRE_RELAY_RPC_PORT}" )
BIN_ARGS+=( "-rpcbind=${APP_LIBRE_RELAY_NODE_IP}" )
BIN_ARGS+=( "-rpcbind=127.0.0.1" )
BIN_ARGS+=( "-rpcallowip=${NETWORK_IP}/16" )
BIN_ARGS+=( "-rpcallowip=127.0.0.1" )
BIN_ARGS+=( "-rpcauth=\"${APP_LIBRE_RELAY_RPC_AUTH}\"" )
BIN_ARGS+=( "-zmqpubrawblock=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_RAWBLOCK_PORT}" )
BIN_ARGS+=( "-zmqpubrawtx=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_RAWTX_PORT}" )
BIN_ARGS+=( "-zmqpubhashblock=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_HASHBLOCK_PORT}" )
BIN_ARGS+=( "-zmqpubsequence=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_SEQUENCE_PORT}" )
# BIN_ARGS+=( "-txindex=1" )
# BIN_ARGS+=( "-blockfilterindex=1" )
# BIN_ARGS+=( "-peerbloomfilters=1" )
# BIN_ARGS+=( "-peerblockfilters=1" )
# BIN_ARGS+=( "-rpcworkqueue=128" )
# Мы можем удалить depratedrpc=create_bdb в будущем обновлении, как только Jam (JoinMarket) реализует поддержку дескрипторного кошелька.
BIN_ARGS+=( "-deprecatedrpc=create_bdb" )
# Требуется для совместимости с LND. Мы можем удалить deprecatedrpc=warnings в будущем обновлении, как только LND выпустит версию с этим исправлением: https://github.com/btcsuite/btcd/pull/2245
BIN_ARGS+=( "-deprecatedrpc=warnings" )
export APP_LIBRE_RELAY_COMMAND=$(IFS=" "; echo "${BIN_ARGS[@]}")
# эхо "${APP_LIBRE_RELAY_COMMAND}"
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_LIBRE_RELAY_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"
export APP_LIBRE_RELAY_P2P_HIDDEN_SERVICE="$(cat "${p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"
# параметр сети, совместимый с lectrs
export APP_LIBRE_RELAY_NETWORK_ELECTRS=$APP_LIBRE_RELAY_NETWORK
if [[ "${APP_LIBRE_RELAY_NETWORK_ELECTRS}" = "mainnet" ]]; then
APP_LIBRE_RELAY_NETWORK_ELECTRS="bitcoin"
fi
for var in \
IP \
NODE_IP \
TOR_PROXY_IP \
I2P_DAEMON_IP \
DATA_DIR \
RPC_PORT \
P2P_PORT \
TOR_PORT \
ZMQ_RAWBLOCK_PORT \
ZMQ_RAWTX_PORT \
ZMQ_HASHBLOCK_PORT \
ZMQ_SEQUENCE_PORT \
NETWORK \
RPC_USER \
RPC_PASS \
RPC_AUTH \
COMMAND \
RPC_HIDDEN_SERVICE \
P2P_HIDDEN_SERVICE \
NETWORK_ELECTRS
do
bitcoin_var="APP_BITCOIN_${var}"
libre_relay_var="APP_LIBRE_RELAY_${var}"
if [ -n "${!libre_relay_var-}" ]; then
export "$bitcoin_var"="${!bitcoin_var:=${!libre_relay_var}}"
else
echo "Warning: $libre_relay_var is unset or empty"
fi
done