89 lines
2.9 KiB
Bash
Executable File
89 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" \
|
|
--data-dir "/opt/data" \
|
|
--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
|