171 lines
7.3 KiB
Bash
171 lines
7.3 KiB
Bash
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 |