forked from Mailtrain-org/mailtrain
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-entrypoint.sh
More file actions
223 lines (205 loc) · 5 KB
/
Copy pathdocker-entrypoint.sh
File metadata and controls
223 lines (205 loc) · 5 KB
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
#!/bin/bash
set -e
function printHelp {
cat <<EOF
Optional parameters:
--trustedUrlBase XXX - sets the trusted url of the instance (default: http://localhost:3000)
--sandboxUrlBase XXX - sets the sandbox url of the instance (default: http://localhost:3003)
--publicUrlBase XXX - sets the public url of the instance (default: http://localhost:3004)
--withProxy - use if Mailtrain is behind an http reverse proxy
--mongoHost XXX - sets mongo host (default: mongo)
--redisHost XXX - sets redis host (default: redis)
--mySqlHost XXX - sets mysql host (default: mysql)
--mySqlDatabase XXX - sets mysql database (default: mailtrain)
--mySqlUser XXX - sets mysql user (default: mailtrain)
--mySqlPassword XXX - sets mysql password (default: mailtrain)
--withLdap - use if you want to enable LDAP authentication
--ldapHost XXX - LDAP Host for authentication (default: ldap)
--ldapPort XXX - LDAP port (default: 389)
--ldapSecure - use if you want to use LDAP with ldaps protocol
--ldapBindUser XXX - User for LDAP connexion
--ldapBindPass XXX - Password for LDAP connexion
--ldapFilter XXX - LDAP filter
--ldapBaseDN XXX - LDAP base DN
--ldapUidTag XXX - LDAP UID tag (e.g. uid/cn/username)
EOF
exit 1
}
urlBaseTrusted=http://localhost:3000
urlBaseSandbox=http://localhost:3003
urlBasePublic=http://localhost:3004
wwwProxy=false
withLdap=false
ldapHost=ldap
ldapPort=389
ldapSecure=false
ldapBindUser=""
ldapBindPass=""
ldapFilter=""
ldapBaseDN=""
ldapUidTag=""
mongoHost=mongo
redisHost=redis
mySqlHost=mysql
mySqlDatabase=mailtrain
mySqlUser=mailtrain
mySqlPassword=mailtrain
while [ $# -gt 0 ]; do
case "$1" in
--help)
printHelp
;;
--trustedUrlBase)
urlBaseTrusted="$2"
shift 2
;;
--sandboxUrlBase)
urlBaseSandbox="$2"
shift 2
;;
--publicUrlBase)
urlBasePublic="$2"
shift 2
;;
--withProxy)
wwwProxy=true
shift 1
;;
--mongoHost)
mongoHost="$2"
shift 2
;;
--redisHost)
redisHost="$2"
shift 2
;;
--mySqlHost)
mySqlHost="$2"
shift 2
;;
--mySqlDatabase)
mySqlDatabase="$2"
shift 2
;;
--mySqlUser)
mySqlUser="$2"
shift 2
;;
--mySqlPassword)
mySqlPassword="$2"
shift 2
;;
--withLdap)
withLdap=true
shift 1
;;
--ldapHost)
ldapHost="$2"
shift 2
;;
--ldapPort)
ldapPort="$2"
shift 2
;;
--ldapSecure)
ldapSecure=true
shift 1
;;
--ldapBindUser)
ldapBindUser="$2"
shift 2
;;
--ldapBindPass)
ldapBindPass="$2"
shift 2
;;
--ldapFilter)
ldapFilter="$2"
shift 2
;;
--ldapBaseDN)
ldapBaseDN="$2"
shift 2
;;
--ldapUidTag)
ldapUidTag="$2"
shift 2
;;
*)
echo "Error: unrecognized option $1."
printHelp
esac
done
if [ "$ldapBindUser" == "" ]; then
ldapBindUserLine=""
else
ldapBindUserLine="bindUser: $ldapBindUser"
fi
if [ "$ldapBindPass" == "" ]; then
ldapBindPassLine=""
else
ldapBindPassLine="bindPassword: $ldapBindPass"
fi
if [ "$ldapFilter" == "" ]; then
ldapFilterLine=""
else
ldapFilterLine="filter: $ldapFilter"
fi
if [ "$ldapBaseDN" == "" ]; then
ldapBaseDNLine=""
else
ldapBaseDNLine="baseDN: $ldapBaseDN"
fi
if [ "$ldapUidTag" == "" ]; then
ldapUidTagLine=""
else
ldapUidTagLine="uidTag: $ldapUidTag"
fi
cat > server/config/production.yaml <<EOT
www:
host: 0.0.0.0
proxy: $wwwProxy
secret: "`pwgen -1`"
trustedUrlBase: $urlBaseTrusted
sandboxUrlBase: $urlBaseSandbox
publicUrlBase: $urlBasePublic
mysql:
host: $mySqlHost
database: $mySqlDatabase
user: $mySqlUser
password: $mySqlPassword
redis:
enabled: true
host: $redisHost
log:
level: info
builtinZoneMTA:
log:
level: warn
mongo: mongodb://${mongoHost}:27017/zone-mta
redis: redis://${redisHost}:6379/2
queue:
processes: 5
ldap:
enabled: $withLdap
host: $ldapHost
port: $ldapPort
secure: $ldapSecure
$ldapBindUserLine
$ldapBindPassLine
$ldapFilterLine
$ldapBaseDNLine
$ldapUidTagLine
EOT
cat > server/services/workers/reports/config/production.yaml <<EOT
mysql:
host: $mySqlHost
log:
level: warn
EOT
# Wait for the other services to start
while ! nc -z $mySqlHost 3306; do sleep 1; done
while ! nc -z $redisHost 6379; do sleep 1; done
while ! nc -z $mongoHost 27017; do sleep 1; done
cd server
NODE_ENV=production node index.js