aboutsummaryrefslogtreecommitdiffstats
path: root/docker/root/etc/cont-init.d/50-config
blob: 72b2d00ae7964153adf4b9b2ae333ac377baa4ae (plain) (blame)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#!/usr/bin/with-contenv bash

# Display variables for troubleshooting
echo " "
echo "-------------------------------------"
echo " "
echo -e "Variables set:\\n\
NODE_ENV=${NODE_ENV}\\n\
EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}\\n\
DB_CONNECTION=${DB_CONNECTION}\\n\
DB_HOST=${DB_HOST}\\n\
DB_PORT=${DB_PORT}\\n\
DB_USER=${DB_USER}\\n\
DB_PASSWORD=${DB_PASSWORD}\\n\
DB_DATABASE=${DB_DATABASE}\\n\
DB_SSL=${DB_SSL}\\n\
IS_CREATION_ENABLED=${IS_CREATION_ENABLED}\\n\
IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}\\n\
IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}\\n\
CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}\\n\
MAIL_CONNECTION=${MAIL_CONNECTION}\\n\
SMTP_PORT=${SMTP_PORT}\\n\
SMTP_HOST=${SMTP_HOST}\\n\
MAIL_SSL=${MAIL_SSL}\\n\
MAIL_USERNAME=${MAIL_USERNAME}\\n\
MAIL_PASSWORD=${MAIL_PASSWORD}\\n\
MAIL_SENDER=${MAIL_SENDER}\\n"

# Echo init finish for test runs
if [ -n "${TEST_RUN}" ]; then
	echo " "
	echo '**** [services.d] done ****'
fi

# set ferdi-server status
echo " "
echo "**** Checking Ferdi-server settings ****"
if [ -f /config/config.txt ]; then
    [[ "${NODE_ENV}" ]] && sed -i "s/NODE_ENV=.*/NODE_ENV=${NODE_ENV}/g" /config/config.txt
    [[ "${EXTERNAL_DOMAIN}" ]] && sed -i "s/EXTERNAL_DOMAIN=.*/EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}/g" /config/config.txt
    [[ "${IS_CREATION_ENABLED}" ]] && sed -i "s/IS_CREATION_ENABLED=.*/IS_CREATION_ENABLED=${IS_CREATION_ENABLED}/g" /config/config.txt
    [[ "${IS_DASHBOARD_ENABLED}" ]] && sed -i "s/IS_DASHBOARD_ENABLED=.*/IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}/g" /config/config.txt
    [[ "${IS_REGISTRATION_ENABLED}" ]] && sed -i "s/IS_REGISTRATION_ENABLED=.*/IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}/g" /config/config.txt	
    [[ "${CONNECT_WITH_FRANZ}" ]] && sed -i "s/CONNECT_WITH_FRANZ=.*/CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}/g" /config/config.txt
    [[ "${DB_CONNECTION}" ]] && sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=${DB_CONNECTION}/g" /config/config.txt
    [[ "${DB_HOST}" ]] && sed -i "s/DB_HOST=.*/DB_HOST=${DB_HOST}/g" /config/config.txt
    [[ "${DB_PORT}" ]] && sed -i "s/DB_PORT=.*/DB_PORT=${DB_PORT}/g" /config/config.txt
    [[ "${DB_DATABASE}" ]] && sed -i "s/DB_DATABASE=.*/DB_DATABASE=${DB_DATABASE}/g" /config/config.txt
    [[ "${DB_USER}" ]] && sed -i "s/DB_USER=.*/DB_USER=${DB_USER}/g" /config/config.txt
    [[ "${DB_PASSWORD}" ]] && sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/g" /config/config.txt
    [[ "${DB_SSL}" ]] && sed -i "s/DB_SSL=.*/DB_SSL=${DB_SSL}/g" /config/config.txt
    [[ "${MAIL_CONNECTION}" ]] && sed -i "s/MAIL_CONNECTION=.*/MAIL_CONNECTION=${MAIL_CONNECTION}/g" /config/config.txt	
    [[ "${SMTP_HOST}" ]] && sed -i "s/SMTP_HOST=.*/SMTP_HOST=${SMTP_HOST}/g" /config/config.txt
    [[ "${SMTP_PORT}" ]] && sed -i "s/SMTP_PORT=.*/SMTP_PORT=${SMTP_PORT}/g" /config/config.txt
    [[ "${MAIL_SSL}" ]] && sed -i "s/MAIL_SSL=.*/MAIL_SSL=${MAIL_SSL}/g" /config/config.txt
    [[ "${MAIL_USERNAME}" ]] && sed -i "s/MAIL_USERNAME=.*/MAIL_USERNAME=${MAIL_USERNAME}/g" /config/config.txt
    [[ "${MAIL_PASSWORD}" ]] && sed -i "s/MAIL_PASSWORD=.*/MAIL_PASSWORD=${MAIL_PASSWORD}/g" /config/config.txt
    [[ "${MMAIL_SENDER}" ]] && sed -i "s/MAIL_SENDER=.*/MAIL_SENDER=${MAIL_SENDER}/g" /config/config.txt
    rm /config/.env
    cp /config/config.txt /config/.env
elif [ ! -f /config/config.txt ]; then
    echo " " 
    echo "**** Generating .env file ****"	
    cp /defaults/.env.example /config/.env
    [[ "${NODE_ENV}" ]] && sed -i "s/NODE_ENV=.*/NODE_ENV=${NODE_ENV}/g" /config/.env
    [[ "${EXTERNAL_DOMAIN}" ]] && sed -i "s/EXTERNAL_DOMAIN=.*/EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}/g" /config/.env
    [[ "${IS_CREATION_ENABLED}" ]] && sed -i "s/IS_CREATION_ENABLED=.*/IS_CREATION_ENABLED=${IS_CREATION_ENABLED}/g" /config/.env
    [[ "${IS_DASHBOARD_ENABLED}" ]] && sed -i "s/IS_DASHBOARD_ENABLED=.*/IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}/g" /config/.env
    [[ "${IS_REGISTRATION_ENABLED}" ]] && sed -i "s/IS_REGISTRATION_ENABLED=.*/IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}/g" /config/.env	
    [[ "${CONNECT_WITH_FRANZ}" ]] && sed -i "s/CONNECT_WITH_FRANZ=.*/CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}/g" /config/.env
    [[ "${DB_CONNECTION}" ]] && sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=${DB_CONNECTION}/g" /config/.env
    [[ "${DB_HOST}" ]] && sed -i "s/DB_HOST=.*/DB_HOST=${DB_HOST}/g" /config/.env
    [[ "${DB_PORT}" ]] && sed -i "s/DB_PORT=.*/DB_PORT=${DB_PORT}/g" /config/.env
    [[ "${DB_DATABASE}" ]] && sed -i "s/DB_DATABASE=.*/DB_DATABASE=${DB_DATABASE}/g" /config/.env
    [[ "${DB_USER}" ]] && sed -i "s/DB_USER=.*/DB_USER=${DB_USER}/g" /config/.env
    [[ "${DB_PASSWORD}" ]] && sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/g" /config/.env
    [[ "${DB_SSL}" ]] && sed -i "s/DB_SSL=.*/DB_SSL=${DB_SSL}/g" /config/.env
    [[ "${MAIL_CONNECTION}" ]] && sed -i "s/MAIL_CONNECTION=.*/MAIL_CONNECTION=${MAIL_CONNECTION}/g" /config/.env	
    [[ "${SMTP_HOST}" ]] && sed -i "s/SMTP_HOST=.*/SMTP_HOST=${SMTP_HOST}/g" /config/.env
    [[ "${SMTP_PORT}" ]] && sed -i "s/SMTP_PORT=.*/SMTP_PORT=${SMTP_PORT}/g" /config/.env
    [[ "${MAIL_SSL}" ]] && sed -i "s/MAIL_SSL=.*/MAIL_SSL=${MAIL_SSL}/g" /config/.env
    [[ "${MAIL_USERNAME}" ]] && sed -i "s/MAIL_USERNAME=.*/MAIL_USERNAME=${MAIL_USERNAME}/g" /config/.env
    [[ "${MAIL_PASSWORD}" ]] && sed -i "s/MAIL_PASSWORD=.*/MAIL_PASSWORD=${MAIL_PASSWORD}/g" /config/.env
    [[ "${MMAIL_SENDER}" ]] && sed -i "s/MAIL_SENDER=.*/MAIL_SENDER=${MAIL_SENDER}/g" /config/.env
    cp /config/.env /config/config.txt
fi

# update .env
if [ -f /app/.env ]; then
	rm /app/.env
	ln -s /config/.env /app/.env
elif [ ! -f /app/.env ]; then
	ln -s /config/.env /app/.env
fi

# install adonisjs cli
echo " "
echo "**** Installing AdonisJS and deps ****"
cd /app
echo " " 
npm config set unsafe-perm true
npm i -g @adonisjs/cli

# install adonisjs dependencies
npm install

# make custom recipe dir
if [ ! -f /app/recipes/dev ]; then
mkdir -p /app/recipes/dev
fi

# setting the database helper
if [ "${DB_CONNECTION}" = "sqlite" ]; then
	echo " "
    echo "**** DB helper loaded ****"
  else npm i ${DB_CONNECTION} 
  echo " "
  echo "**** DB Helper loaded ****"
fi

# check for the database endpoint for 30 seconds
echo " "
echo "**** Checking DB endpoint ****"
source .env
END=$((SECONDS+30))
while [ ${SECONDS} -lt ${END} ] && [ "${DB_HOST} ${DB_PORT}" ];
	do
	/usr/bin/nc -z ${DB_HOST} ${DB_PORT} && \
	if [ ! -z "$(/usr/bin/nc -w1 ${DB_HOST} ${DB_PORT})" ];
		then
		[ ! -z "${RUN}" ] && break
		RUN="RAN"
		# we sleep here again due to first run init on DB containers
		[ ! -f /dbwait.lock ] && sleep 5
	else
		sleep 1
	fi
	sleep 1
done

# source the .env file
source .env

# database migration
echo " "
echo "**** Run DB migration ****"
adonis migration:run --force

# Create APP key if needed
if [ ! -f "/config/FERDI_APP_KEY.txt" ];
	then
	echo " "
	echo "**** Generating Ferdi-server app key for first run ****"
	adonis key:generate
	source .env
	echo $APP_KEY > /config/FERDI_APP_KEY.txt
	echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****"
	sed -i "s/APP_KEY=/APP_KEY=$APP_KEY/g" /config/config.txt
elif [ -f "/config/FERDI_APP_KEY.txt" ];
	then
	echo " "
	echo "**** App Key found ****"
	APP_KEY=$(cat /config/FERDI_APP_KEY.txt)
	sed -i "s/APP_KEY=.*/APP_KEY=$APP_KEY/g" /config/config.txt
	echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****"
fi

# set permissions
chown -R abc:abc \
	/config \
	/app

# set lockfile to avoid DB waits for this specific container
touch /dbwait.lock