wormhole/algorand/sandbox-algorand/images/indexer/start.sh

88 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Start indexer daemon. There are various configurations controlled by
# environment variables.
#
# Configuration:
# DISABLED - If set start a server that returns an error instead of indexer.
# CONNECTION_STRING - the postgres connection string to use.
# SNAPSHOT - snapshot to import, if set don't connect to algod.
# PORT - port to start indexer on.
# ALGOD_ADDR - host:port to connect to for algod.
# ALGOD_TOKEN - token to use when connecting to algod.
export PORT="8980"
export CONNECTION_STRING="host=localhost port=5432 user=algorand password=algorand dbname=indexer_db sslmode=disable"
export ALGOD_ADDR="localhost:4001"
export ALGOD_TOKEN="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
set -e
set -x
start_with_algod() {
echo "Starting indexer against algod."
for i in 1 2 3 4 5; do
wget "${ALGOD_ADDR}"/genesis -O genesis.json && break
echo "Algod not responding... waiting."
sleep 15
done
if [ ! -f genesis.json ]; then
echo "Failed to create genesis file!"
exit 1
fi
# PGPASSWORD=algorand psql --host=algo-indexer-db --port=5432 --username=algorand --dbname=indexer_db -c "DROP DATABASE IF EXISTS postgres"
# PGPASSWORD=algorand psql --host=algo-indexer-db --port=5432 --username=algorand --dbname=indexer_db -c "DROP DATABASE IF EXISTS template0"
# PGPASSWORD=algorand psql --host=algo-indexer-db --port=5432 --username=algorand --dbname=indexer_db -c "DROP DATABASE IF EXISTS template1"
# PGPASSWORD=algorand psql --host=algo-indexer-db --port=5432 --username=algorand -c "DROP DATABASE IF EXISTS indexer_db"
# PGPASSWORD=algorand psql --host=algo-indexer-db --port=5432 --username=algorand -c "CREATE DATABASE indexer_db"
/tmp/algorand-indexer daemon \
--dev-mode \
--server ":$PORT" \
--enable-all-parameters \
-P "$CONNECTION_STRING" \
--algod-net "${ALGOD_ADDR}" \
--algod-token "${ALGOD_TOKEN}" \
--genesis "genesis.json" \
--logfile "/dev/stdout" >> /tmp/command.txt
}
import_and_start_readonly() {
echo "Starting indexer with DB."
# Extract the correct dataset
ls -lh /tmp
mkdir -p /tmp/indexer-snapshot
echo "Extracting ${SNAPSHOT}"
tar -xf "${SNAPSHOT}" -C /tmp/indexer-snapshot
/tmp/algorand-indexer import \
-P "$CONNECTION_STRING" \
--genesis "/tmp/indexer-snapshot/algod/genesis.json" \
/tmp/indexer-snapshot/blocktars/* \
--logfile "/tmp/indexer-log.txt" >> /tmp/command.txt
/tmp/algorand-indexer daemon \
--dev-mode \
--server ":$PORT" \
-P "$CONNECTION_STRING" \
--logfile "/tmp/indexer-log.txt" >> /tmp/command.txt
}
disabled() {
go run /tmp/disabled.go -port "$PORT" -code 400 -message "Indexer disabled for this configuration."
}
if [ ! -z "$DISABLED" ]; then
disabled
elif [ -z "${SNAPSHOT}" ]; then
start_with_algod
else
import_and_start_readonly
fi
sleep infinity