summaryrefslogtreecommitdiff
path: root/bin/taler-deployment-shared-data
blob: d15083f13594a39413fbd289ce4e53ac2e4fb300 (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
#!/bin/bash

# @author Marcello Stanisci
# @brief Creates the directories hierarchy under $HOME/shared-data/.
#        Note: shared-data/ must already exist and give execute
#        permission to the group (test|demo).  Also note that any
#        program that creates files must set perms by its own!

set -e

if test -z $TALER_CONFIG_ENV; then
  echo Please run 'source ~/activate' first.
  exit 1
fi

SHARED_DATA=$(taler-config -s paths -o taler_deployment_shared -f)

# Check shared-data/ exists
if ! test -e $SHARED_DATA; then
  echo "Please bootstrap your setup first (run 'bootstrap-bluegreen' script?)."
  exit 1
fi

# Check if shared-data/ is clean.
if ls -L -1 $SHARED_DATA | grep -q [a-zA-Z]; then
  echo "$SHARED_DATA not empty, exiting"
  exit 0
fi

# Check if it's writeable.
if ! test -w $SHARED_DATA; then
  echo "Can't write under $SHARED_DATA, please ajdust permissions"
  exit 0
fi

# Check if shared-data/ has the right group (test|demo),
# and set the SETGID permission if so.
SHARED_DATA_GROUP=$(stat -L --format "%G" $SHARED_DATA)
if ! echo $SHARED_DATA_GROUP | grep -q "^$TALER_CONFIG_ENV$"; then
  echo "$SHARED_DATA has the wrong group ($SHARED_DATA_GROUP), please fix."
  exit 1
fi

# Double-check if setgid was set.
if stat -L --format "%a" $SHARED_DATA | grep -q -v "^[2367][0-9][0-9][0-9]$"; then
  echo "Please make sure $SHARED_DATA has setgid asserted"
  exit 1
fi

declare -A TALER_DIRS=(
  [MERCHANT_WIRE]=$(dirname $(taler-config -s account-merchant -o wire_response -f))
  [MERCHANT]=$(dirname $(taler-config -s instance-default -o keyfile -f))
  
  [EXCHANGE_WIREFEES]=$(taler-config -s exchangedb -o wirefee_base_dir -f)
  [EXCHANGE_AUDITOR_REQUEST]=$(taler-config -s exchangedb -o auditor_inputs -f)
  [EXCHANGE_WIRE]=$(basename $(taler-config -s account-1 -o wire_response -f))
  [EXCHANGE_OFFLINE_KEYS]=$(dirname $(taler-config -s exchange -o master_priv_file -f))
  [EXCHANGE_LIVE_KEYS]=$(taler-config -s -o keydir -f)
  [EXCHANGE_AUDITORS]=$(taler-config -s exchangedb -o auditor_base_dir -f)
  
  [AUDITOR_REPORTS]=$(taler-config -s auditor -o reports -f)
  [AUDITOR_OFFLINE_KEYS]=$(dirname $(taler-config -s auditor -o auditor_priv_file -f))
)

for dir in ${TALER_DIRS[@]}; do
  mkdir -p $dir
done
  
# All dirs will give only the group RWX perms.
chmod -R 770 $SHARED_DATA/*
touch $SHARED_DATA/hier.lock