blob: 04ca162bdb04adeb1548b31c5602db9ac98b8a5f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
#!/bin/bash
# This file is in the public domain.
#
# This script configure libeufin-bank and libeufin-nexus.
set -eu
source functions.sh
source config/user.conf
source config/internal.conf
say "Beginning LibEuFin setup"
if test -z "${BANK_NAME:-}"; then
say "Error: config/user.conf does not specify BANK_NAME"
exit 1
fi
if test -z "${DOMAIN_NAME:-}"; then
say "Error: config/user.conf does not specify DOMAIN_NAME"
exit 1
fi
if test -z "${BANK_ADMIN_PASSWORD:-}"; then
say "Error: config/user.conf does not specify BANK_ADMIN_PASSWORD"
exit 1
fi
if test -z "${BANK_EXCHANGE_PASSWORD:-}"; then
say "Error: config/user.conf does not specify BANK_EXCHANGE_PASSWORD"
exit 1
fi
say "Configuring libeufin-nexus with ${FIAT_CURRENCY}..."
taler-config -s nexus-ebics -o currency \
-V $FIAT_CURRENCY -c /etc/libeufin/libeufin-nexus.conf
say "Configuring libeufin-bank with ${CURRENCY}..."
cat >/etc/libeufin/libeufin-bank.conf <<EOF
[libeufin-bank]
CURRENCY=${CURRENCY}
WIRE_TYPE=x-taler-bank
X_TALER_BANK_PAYTO_HOSTNAME=bank.${DOMAIN_NAME}
SUGGESTED_WITHDRAWAL_EXCHANGE=${PROTO}://exchange.${DOMAIN_NAME}
SERVE=tcp
PORT=${BANK_PORT}
ALLOW_CONVERSION=yes
FIAT_CURRENCY=${FIAT_CURRENCY}
ALLOW_EDIT_CASHOUT_PAYTO_URI=yes
EOF
if test -n "$TELESIGN_AUTH_TOKEN"; then
cat >>/etc/libeufin/libeufin-bank.conf <<EOF
TAN_SMS=libeufin-tan-sms.sh
TAN_SMS_ENV="AUTH_TOKEN=$TELESIGN_AUTH_TOKEN"
EOF
fi
cat >>/etc/libeufin/libeufin-bank.conf <<EOF
[CURRENCY-NETZBON]
enabled=yes
name=NetzBon
code=NETZBON
fractional_input_digits=2
fractional_normal_digits=2
fractional_trailing_zero_digits=2
alt_unit_names={"0":"NETZBON"}
EOF
say "Setting up libeufin database..."
libeufin-dbconfig &>> setup.log
say "Setting up libeufin-bank..."
say "Setting up libeufin-bank admin account..."
sudo -u libeufin-bank \
libeufin-bank passwd \
-c /etc/libeufin/libeufin-bank.conf \
admin "${BANK_ADMIN_PASSWORD}" &>> setup.log
say "Setting up admin's debt limit..."
sudo -u libeufin-bank \
libeufin-bank edit-account \
-c /etc/libeufin/libeufin-bank.conf \
admin --debit_threshold=${CURRENCY}:200000000 &>> setup.log
say "Setting up SPA configuration..."
echo "settings = { bankName: \"${BANK_NAME}\" }" >/etc/libeufin/settings.js
say "Create exchange account..."
if test -z "${EXCHANGE_PAYTO:-}"; then
EXCHANGE_PAYTO_NEW="$(sudo -u libeufin-bank libeufin-bank create-account -c /etc/libeufin/libeufin-bank.conf --username exchange --password "${BANK_EXCHANGE_PASSWORD}" --name Exchange --exchange 2>> setup.log)?receiver-name=Exchange"
echo "EXCHANGE_PAYTO=\"${EXCHANGE_PAYTO_NEW}\"" >> config/internal.conf
fi
if test -z "${EXCHANGE_WIRE_GATEWAY_URL:-}"; then
EXCHANGE_WIRE_GATEWAY_URL_NEW="${PROTO}://bank.$DOMAIN_NAME/accounts/exchange/taler-wire-gateway/"
echo "EXCHANGE_WIRE_GATEWAY_URL=\"${EXCHANGE_WIRE_GATEWAY_URL_NEW}\"" >> config/internal.conf
fi
say "Start the bank..."
systemctl enable --now libeufin-bank &>> setup.log
say "Waiting for the bank (/config)..."
curl -sS --max-time 2 \
--retry-all-errors \
--retry-delay 2 \
--retry 10 \
${PROTO}://bank.${DOMAIN_NAME}/config &>> setup.log
say "Setting conversion figures..."
curl -sS -u "admin:${BANK_ADMIN_PASSWORD}" \
-H 'Content-Type: application/json; charset=utf-8' \
${PROTO}://bank.${DOMAIN_NAME}/conversion-info/conversion-rate \
--data-binary @- &>> setup.log << EOF
{
"cashin_ratio": "1",
"cashin_fee": "${CURRENCY}:0",
"cashin_tiny_amount": "${CURRENCY}:0.01",
"cashin_rounding_mode": "nearest",
"cashin_min_amount": "${FIAT_CURRENCY}:1",
"cashout_ratio": "1",
"cashout_fee": "${FIAT_CURRENCY}:0",
"cashout_tiny_amount": "${FIAT_CURRENCY}:0.01",
"cashout_rounding_mode": "nearest",
"cashout_min_amount": "${CURRENCY}:1"
}
EOF
say "LibEuFin setup finished"
|