taler-deployment

Deployment scripts and configuration files
Log | Files | Refs | README

commit 0c57d904a57394810fc9e83b122af62ff2f5c9c9
parent e6a701472728a63a4114aa621b6b4f890f01b016
Author: Florian Dold <florian@dold.me>
Date:   Wed, 17 May 2023 18:28:17 +0200

sandcastle: restructure exchange scripts

Diffstat:
Msandcastle/images/exchange/Dockerfile | 7++++---
Asandcastle/images/exchange/scripts/config.sh | 33+++++++++++++++++++++++++++++++++
Asandcastle/images/exchange/scripts/startup.sh | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dsandcastle/images/exchange/startup.sh | 105-------------------------------------------------------------------------------
4 files changed, 114 insertions(+), 108 deletions(-)

diff --git a/sandcastle/images/exchange/Dockerfile b/sandcastle/images/exchange/Dockerfile @@ -1,5 +1,6 @@ FROM taler_local/taler_base -COPY startup.sh / -RUN chmod +x /startup.sh -ENTRYPOINT /startup.sh +RUN mkdir -p /scripts +COPY scripts/* /scripts +RUN chmod +x /scripts/*.sh +ENTRYPOINT /scripts/startup.sh diff --git a/sandcastle/images/exchange/scripts/config.sh b/sandcastle/images/exchange/scripts/config.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -o pipefail +set -eu + +export LD_LIBRARY_PATH=/usr/local/lib +export GNUNET_FORCE_LOG=";;;;WARNING" + +mkdir -p /etc/taler +TALERCONF=/etc/taler/taler.conf +cp /config/exchange/taler.conf $TALERCONF + +# Values from config file mounted at run time: +CURRENCY=`taler-config -c /config/deployment.conf -s taler-deployment -o currency` +EXCHANGE_URL=`taler-config -c /config/deployment.conf -s taler-deployment -o default-exchange` + +EXCHANGE_NEXUS_USERNAME=`taler-config -c /config/deployment.conf -s taler-deployment -o exchange-nexus-username` +EXCHANGE_NEXUS_PASSWORD=`taler-config -c /config/deployment.conf -s taler-deployment -o exchange-nexus-password` +EXCHANGE_IBAN=DE159593 +TALER_FACADE_NAME=taler-facade +DB_PASSWORD=`taler-config -c /config/deployment.conf -s taler-deployment -o db-password` +sed -i "s;__EXCHANGE_URL__;${EXCHANGE_URL};" $TALERCONF +sed -i "s;__DB_PASSWORD__;${DB_PASSWORD};" $TALERCONF +sed -i "s/__CURRENCY__/${CURRENCY}/" $TALERCONF +sed -i "s/__EXCHANGE_NEXUS_USERNAME__/${EXCHANGE_NEXUS_USERNAME}/" $TALERCONF +sed -i "s/__EXCHANGE_NEXUS_PASSWORD__/${EXCHANGE_NEXUS_PASSWORD}/" $TALERCONF +sed -i "s/__EXCHANGE_IBAN__/${EXCHANGE_IBAN}/" $TALERCONF +sed -i "s/__TALER_FACADE_NAME__/${TALER_FACADE_NAME}/" $TALERCONF +sed -i "s;__NEXUS_URL__;http://bank:15001;" $TALERCONF + +EXCHANGE_MASTER_PUB=$(taler-exchange-offline -c $TALERCONF setup) + +sed -i "s/__EXCHANGE_MASTER_PUB__/$EXCHANGE_MASTER_PUB/" $TALERCONF diff --git a/sandcastle/images/exchange/scripts/startup.sh b/sandcastle/images/exchange/scripts/startup.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +source /scripts/config.sh + +while ! pg_isready -h talerdb -d taler; do + echo DB not ready yet. + sleep 2 +done +echo Now DB is ready. + +socat TCP-LISTEN:5555,fork,reuseaddr TCP:localhost:80 & + +echo -n "Init database... " +taler-exchange-dbinit -L WARNING -c $TALERCONF +echo DONE + +echo -n "Starting EDDSA helper..." +taler-exchange-secmod-eddsa -L WARNING \ + -c $TALERCONF 2>&1 | \ + rotatelogs -e /logs/taler-exchange-secmod-eddsa-%Y-%m-%d.log 86400 & +echo DONE +echo -n "Starting RSA helper..." +taler-exchange-secmod-rsa -L WARNING \ + -c $TALERCONF 2>&1 | \ + rotatelogs -e /logs/taler-exchange-secmod-rsa-%Y-%m-%d.log 86400 & +echo DONE +echo -n "Starting CS helper..." +taler-exchange-secmod-cs -L WARNING \ + -c $TALERCONF 2>&1 | \ + rotatelogs -e /logs/taler-exchange-secmod-cs-%Y-%m-%d.log 86400 & +echo DONE + +echo -n "Launching exchange HTTPD..." +taler-exchange-httpd -L WARNING -c $TALERCONF 2>&1 | \ + rotatelogs -e /logs/taler-exchange-httpd-%Y-%m-%d.log 86400 & +for n in `seq 1 50` + do + echo "." + sleep 0.3 + OK=1 + wget $EXCHANGE_URL -t 1 -o /dev/null -O /dev/null >/dev/null && break + OK=0 + done + if [ 1 != $OK ] + then + echo "ERROR: failed to launch Exchange" + exit 1 + fi +echo DONE + +echo -n "Launching wirewatch..." +taler-exchange-wirewatch -L WARNING --longpoll-timeout=2s -c $TALERCONF 2>&1 | \ + rotatelogs -e /logs/taler-exchange-wirewatch-%Y-%m-%d.log 86400 & +echo DONE +echo -n "Launching transfer service..." +taler-exchange-transfer -L WARNING -c $TALERCONF 2>&1 | \ + rotatelogs -e /logs/taler-exchange-transfer-%Y-%m-%d.log 86400 & +echo DONE +echo -n "Launching aggregator service..." +taler-exchange-aggregator -L WARNING -c $TALERCONF 2>&1 | \ + rotatelogs -e /logs/taler-exchange-aggregator-%Y-%m-%d.log 86400 & +echo DONE +echo +echo -n "Setup keys and fees with taler-exchange-offline..." +taler-exchange-offline -L WARNING -c $TALERCONF \ + download sign \ + enable-account "payto://iban/SANDBOXX/${EXCHANGE_IBAN}?receiver-name=Exchange+Company" \ + wire-fee now iban ${CURRENCY}:0.01 ${CURRENCY}:0.01 \ + global-fee now ${CURRENCY}:0 ${CURRENCY}:0 ${CURRENCY}:0 1h 1year 5 \ + upload 2>&1 +echo DONE + +echo -n "Requesting exchange's /keys..." +curl --max-time 4 -s "${EXCHANGE_URL}keys" +echo DONE + +wait -n diff --git a/sandcastle/images/exchange/startup.sh b/sandcastle/images/exchange/startup.sh @@ -1,105 +0,0 @@ -#!/bin/bash - -set -o pipefail -set -eu - -export LD_LIBRARY_PATH=/usr/local/lib -export GNUNET_FORCE_LOG=";;;;WARNING" - -mkdir -p /etc/taler -TALERCONF=/etc/taler/taler.conf -cp /config/exchange/taler.conf $TALERCONF - -# Values from config file mounted at run time: -CURRENCY=`taler-config -c /config/deployment.conf -s taler-deployment -o currency` -EXCHANGE_URL=`taler-config -c /config/deployment.conf -s taler-deployment -o default-exchange` - -socat TCP-LISTEN:5555,fork,reuseaddr TCP:localhost:80 & - -EXCHANGE_NEXUS_USERNAME=`taler-config -c /config/deployment.conf -s taler-deployment -o exchange-nexus-username` -EXCHANGE_NEXUS_PASSWORD=`taler-config -c /config/deployment.conf -s taler-deployment -o exchange-nexus-password` -EXCHANGE_IBAN=DE159593 -TALER_FACADE_NAME=taler-facade -DB_PASSWORD=`taler-config -c /config/deployment.conf -s taler-deployment -o db-password` -sed -i "s;__EXCHANGE_URL__;${EXCHANGE_URL};" $TALERCONF -sed -i "s;__DB_PASSWORD__;${DB_PASSWORD};" $TALERCONF -sed -i "s/__CURRENCY__/${CURRENCY}/" $TALERCONF -sed -i "s/__EXCHANGE_NEXUS_USERNAME__/${EXCHANGE_NEXUS_USERNAME}/" $TALERCONF -sed -i "s/__EXCHANGE_NEXUS_PASSWORD__/${EXCHANGE_NEXUS_PASSWORD}/" $TALERCONF -sed -i "s/__EXCHANGE_IBAN__/${EXCHANGE_IBAN}/" $TALERCONF -sed -i "s/__TALER_FACADE_NAME__/${TALER_FACADE_NAME}/" $TALERCONF -sed -i "s;__NEXUS_URL__;http://bank:15001;" $TALERCONF - -while ! pg_isready -h talerdb -d taler; do - echo DB not ready yet. - sleep 2 -done -echo Now DB is ready. - -echo -n "Init database... " -taler-exchange-dbinit -L WARNING -c $TALERCONF -echo DONE - -echo -n "Starting EDDSA helper..." -taler-exchange-secmod-eddsa -L WARNING \ - -c $TALERCONF 2>&1 | \ - rotatelogs -e /logs/taler-exchange-secmod-eddsa-%Y-%m-%d.log 86400 & -echo DONE -echo -n "Starting RSA helper..." -taler-exchange-secmod-rsa -L WARNING \ - -c $TALERCONF 2>&1 | \ - rotatelogs -e /logs/taler-exchange-secmod-rsa-%Y-%m-%d.log 86400 & -echo DONE -echo -n "Starting CS helper..." -taler-exchange-secmod-cs -L WARNING \ - -c $TALERCONF 2>&1 | \ - rotatelogs -e /logs/taler-exchange-secmod-cs-%Y-%m-%d.log 86400 & -echo DONE -EXCHANGE_MASTER_PUB=$(taler-exchange-offline -c $TALERCONF setup) - -sed -i "s/__EXCHANGE_MASTER_PUB__/$EXCHANGE_MASTER_PUB/" $TALERCONF -echo -n "Launching exchange HTTPD..." -taler-exchange-httpd -L WARNING -c $TALERCONF 2>&1 | \ - rotatelogs -e /logs/taler-exchange-httpd-%Y-%m-%d.log 86400 & -for n in `seq 1 50` - do - echo "." - sleep 0.3 - OK=1 - wget $EXCHANGE_URL -t 1 -o /dev/null -O /dev/null >/dev/null && break - OK=0 - done - if [ 1 != $OK ] - then - echo "ERROR: failed to launch Exchange" - exit 1 - fi -echo DONE - -echo -n "Launching wirewatch..." -taler-exchange-wirewatch -L WARNING --longpoll-timeout=2s -c $TALERCONF 2>&1 | \ - rotatelogs -e /logs/taler-exchange-wirewatch-%Y-%m-%d.log 86400 & -echo DONE -echo -n "Launching transfer service..." -taler-exchange-transfer -L WARNING -c $TALERCONF 2>&1 | \ - rotatelogs -e /logs/taler-exchange-transfer-%Y-%m-%d.log 86400 & -echo DONE -echo -n "Launching aggregator service..." -taler-exchange-aggregator -L WARNING -c $TALERCONF 2>&1 | \ - rotatelogs -e /logs/taler-exchange-aggregator-%Y-%m-%d.log 86400 & -echo DONE -echo -echo -n "Setup keys and fees with taler-exchange-offline..." -taler-exchange-offline -L WARNING -c $TALERCONF \ - download sign \ - enable-account "payto://iban/SANDBOXX/${EXCHANGE_IBAN}?receiver-name=Exchange+Company" \ - wire-fee now iban ${CURRENCY}:0.01 ${CURRENCY}:0.01 \ - global-fee now ${CURRENCY}:0 ${CURRENCY}:0 ${CURRENCY}:0 1h 1year 5 \ - upload 2>&1 -echo DONE - -echo -n "Requesting exchange's /keys..." -curl --max-time 4 -s "${EXCHANGE_URL}keys" -echo DONE - -wait -n