#!/bin/bash

set -ex

mkdir -p $HOME/.bitcoin

if [ -f "$HOME/.bitcoin/bitcoin.conf" ];
then
  echo "Backing up bitcoin.conf"
  TMPEXT=$(date +%Y.%m.%d.%H.%M.%S)
  mv $HOME/.bitcoin/bitcoin.conf $HOME/.bitcoin/bitcoin.conf.bak.$TMPEXT
fi

echo "Creating bitcoin.conf"

# Seed a random password for JSON RPC server
cat <<EOF > $HOME/.bitcoin/bitcoin.conf
#
# Do not modify this file as it is autogenerated. 
# You can either:
#   (a) Modify this template "btc_init" in build or
#   (b) You can pass a variable name as env variable during container launch
#
# Environmental Variable Name List
#
# MAINNET
# TESTNET
# REGTEST
# MEMPOOLFULLRBF
# MAXMEMPOOL
# MEMPOOLEXPIRY
# PERSISTMEMPOOL
# MAXORPHANTX
# BANTIME
# SERVER
# LISTEN
# LISTENONION
# DAEMON
# TXINDEX
# PRUNE
# DISABLEWALLET
# PRINTCONSOLE
# WHITELIST
# RPCUSER
# RPCPASSWORD
# RPCCONNECT
# RPCPORT
# RPCAUTH
# DBCACHE
# MAXCONNECTIONS
# MAXUPLOADTARGET
# PROXY
# SEEDNODE1
# SEEDNODE2
# SEEDNODE3
# REINDEXCHAINSTATE
# WALLETBROADCAST

# network
# Choose what network to connect to (mutually exclusive choice)
mainnet=${MAINNET:-1}             
testnet=${TESTNET:-0}             
regtest=${REGTEST:-0}
# Allow all transactions to be replaced by RBF by default
mempoolfullrbf=${MEMPOOLFULLRBF:-1}
# Max size in MB for mempool memory reserve 
maxmempool=${MAXMEMPOOL:-256}
# Max time in hours before old mempool items expire 
mempoolexpiry=${MEMPOOLEXPIRY:-336}
blockfilterindex=${BLOCKFILTERINDEX:-1}
# Save mempool to disk on shutdown
persistmempool=${PERSISTMEMPOOL:-1}
# Max num of orphan tx to be kept
maxorphantx=${MAXORPHANTX:-50}
# Time in mins to ban bad peers
bantime=${BANTIME:-86400}
# Recommended to disable wallet broadcast to stop IP analytic attacks (https://stacker.news/items/543603)
walletbroadcast=${WALLETBROADCAST:-0}

# server
server=${SERVER:-1}               
listen=${LISTEN:-1}               
listenonion=${LISTENONION:-0}     
daemon=${DAEMON:-0}               
txindex=${TXINDEX:-1}             
prune=${PRUNE:-0}                 
disablewallet=${DISABLEWALLET:-1} 
printtoconsole=${PRINTTOCONSOLE:-1} 

# rpc
#rpcuser=${RPCUSER:-bitcoinrpc}    
#rpcpassword=${RPCPASSWORD:-`dd if=/dev/urandom bs=33 count=1 2>/dev/null | base64`} 
rpccookiefile=.cookie
#rpcconnect=${RPCCONNECT:-127.0.0.1} 
#rpcport=${RPCPORT:-8332}         
rpcauth=${RPCAUTH:-xxx}          
whitelist=${WHITELIST:-127.0.0.1}

# performance
#Max cache size of db in mb
dbcache=${DBCACHE:-2000}

maxconnections=${MAXCONNECTIONS:-75} 
maxuploadtarget=${MAXUPLOADTARGET:-5000} 

# tor
#proxy=${PROXY:-127.0.0.1:9050}   
#seednode=${SEEDNODE1:-nkf5e6b7pl4jfd4a.onion} 
#seednode=${SEEDNODE2:-xqzfakpeuvrobvpj.onion} 
#seednode=${SEEDNODE3:-tsyvzsqwa2kkf6b2.onion} 

# validation
reindex-chainstate=${REINDEXCHAINSTATE:-0} 

EOF

cat $HOME/.bitcoin/bitcoin.conf

echo "Initialization completed successfully"
