atendeticket 2.1.13 → 2.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,453 @@
1
+ #!/bin/bash
2
+ #
3
+ # functions for setting up app backend
4
+ #######################################
5
+ # creates REDIS db using docker
6
+ # Arguments:
7
+ # None
8
+ #######################################
9
+ backend_redis_create() {
10
+ print_banner
11
+ printf "${WHITE} 💻 Criando Redis & Banco Postgres...${GRAY_LIGHT}"
12
+ printf "\n\n"
13
+
14
+ sleep 2
15
+
16
+ # Configurações automáticas do Redis
17
+ redis_host="localhost"
18
+ redis_password="${mysql_root_password}"
19
+
20
+ sudo su - root <<EOF
21
+ usermod -aG docker deploy
22
+
23
+ # Verifica se o container Redis já existe e remove se existir
24
+ if docker ps -a | grep -q "redis-${instancia_add}"; then
25
+ echo "🔄 Removendo container Redis existente..."
26
+ docker rm -f redis-${instancia_add}
27
+ fi
28
+
29
+ echo "🐳 Criando container Redis..."
30
+ # Cria o container Redis com configurações automáticas
31
+ docker run --name redis-${instancia_add} \
32
+ -p ${redis_port}:6379 \
33
+ --restart always \
34
+ --detach \
35
+ redis:alpine \
36
+ redis-server --requirepass ${redis_password}
37
+
38
+ # Aguarda o Redis inicializar
39
+ echo "⏳ Aguardando Redis inicializar..."
40
+ sleep 5
41
+
42
+ # Verifica se o Redis está rodando
43
+ if docker ps | grep -q "redis-${instancia_add}"; then
44
+ echo "✅ Redis criado com sucesso!"
45
+ echo " 📍 Porta: ${redis_port}"
46
+ echo " 🔑 Senha: mesma do banco de dados"
47
+ echo " 🏠 Host: localhost"
48
+ else
49
+ echo "❌ Erro ao criar Redis"
50
+ exit 1
51
+ fi
52
+
53
+ sleep 2
54
+
55
+ # Configuração do PostgreSQL
56
+ echo "🗄️ Configurando PostgreSQL..."
57
+ sudo su - postgres <<DBEOF
58
+ createdb ${instancia_add};
59
+ psql -c "CREATE USER ${instancia_add} SUPERUSER INHERIT CREATEDB CREATEROLE;"
60
+ psql -c "ALTER USER ${instancia_add} PASSWORD '${mysql_root_password}';"
61
+ DBEOF
62
+
63
+ EOF
64
+
65
+ sleep 2
66
+ }
67
+
68
+ #######################################
69
+ # sets environment variable for backend.
70
+ # Arguments:
71
+ # None
72
+ #######################################
73
+ backend_set_env() {
74
+ print_banner
75
+ printf "${WHITE} 💻 Configurando variáveis de ambiente (backend)...${GRAY_LIGHT}"
76
+ printf "\n\n"
77
+
78
+ sleep 2
79
+
80
+ # ensure idempotency
81
+ backend_url=$(echo "${backend_url/https:\/\/}")
82
+ backend_url=${backend_url%%/*}
83
+ backend_url=https://$backend_url
84
+
85
+ # ensure idempotency
86
+ frontend_url=$(echo "${frontend_url/https:\/\/}")
87
+ frontend_url=${frontend_url%%/*}
88
+ frontend_url=https://$frontend_url
89
+
90
+ # Configurações automáticas do Redis
91
+ redis_host="localhost"
92
+ redis_password="${mysql_root_password}"
93
+ redis_uri="redis://:${redis_password}@${redis_host}:${redis_port}"
94
+
95
+ sudo su - deploy << EOF
96
+ cat <<[-]EOF > /home/deploy/${instancia_add}/backend/.env
97
+ NODE_ENV=
98
+ BACKEND_URL=${backend_url}
99
+ FRONTEND_URL=${frontend_url}
100
+ PROXY_PORT=443
101
+ PORT=${backend_port}
102
+
103
+ DB_HOST=localhost
104
+ DB_DIALECT=postgres
105
+ DB_USER=${instancia_add}
106
+ DB_PASS=${mysql_root_password}
107
+ DB_NAME=${instancia_add}
108
+ DB_PORT=5432
109
+
110
+ MASTER_KEY=senha_master
111
+
112
+ IMPORT_FALLBACK_FILE=1
113
+
114
+ TIMEOUT_TO_IMPORT_MESSAGE=1000
115
+
116
+ APP_TRIALEXPIRATION=3
117
+
118
+ JWT_SECRET=${jwt_secret}
119
+ JWT_REFRESH_SECRET=${jwt_refresh_secret}
120
+
121
+ # REDIS CONFIGURADO AUTOMATICAMENTE
122
+ REDIS_URI=${redis_uri}
123
+ REDIS_OPT_LIMITER_MAX=1
124
+ REDIS_OPT_LIMITER_DURATION=3000
125
+
126
+ FLOW_MENU_COOLDOWN_SEC=8
127
+
128
+ USER_LIMIT=${max_user}
129
+ CONNECTIONS_LIMIT=${max_whats}
130
+ CLOSED_SEND_BY_ME=true
131
+
132
+ VERIFY_TOKEN=whaticket
133
+
134
+ #METODOS DE PAGAMENTO
135
+ MP_ACCESS_TOKEN=
136
+
137
+ FACEBOOK_APP_ID=2813216208828642
138
+ FACEBOOK_APP_SECRET=8233912aeade366dd8e2ebef6be256b6
139
+
140
+ # EMAIL
141
+ SMTP_HOST="smtp.gmail.com"
142
+ SMTP_PORT="587"
143
+ SMTP_SECURE="false"
144
+ SMTP_USER="seuemail@gmail.com"
145
+ SMTP_PASS="suasenha"
146
+ SMTP_FROM="Redefinição de senha <seuemail@gmail.com>"
147
+
148
+ [-]EOF
149
+
150
+ echo "✅ Variáveis de ambiente configuradas com Redis automático"
151
+ EOF
152
+
153
+ sleep 2
154
+ }
155
+
156
+ #######################################
157
+ # installs node.js dependencies
158
+ # Arguments:
159
+ # None
160
+ #######################################
161
+ backend_node_dependencies() {
162
+ print_banner
163
+ printf "${WHITE} 💻 Instalando dependências do backend...${GRAY_LIGHT}"
164
+ printf "\n\n"
165
+
166
+ sleep 2
167
+
168
+ sudo su - deploy <<EOF
169
+ cd /home/deploy/${instancia_add}/backend
170
+ npm -f install
171
+ EOF
172
+
173
+ sleep 2
174
+ }
175
+
176
+ #######################################
177
+ # compiles backend code
178
+ # Arguments:
179
+ # None
180
+ #######################################
181
+ backend_node_build() {
182
+ print_banner
183
+ printf "${WHITE} 💻 Compilando o código do backend...${GRAY_LIGHT}"
184
+ printf "\n\n"
185
+
186
+ sleep 2
187
+
188
+ sudo su - deploy <<EOF
189
+ cd /home/deploy/${instancia_add}/backend
190
+ npm run build
191
+
192
+ # Verifica se o build foi bem-sucedido
193
+ if [ -d "dist" ] && [ -f "dist/server.js" ]; then
194
+ echo "✅ Build backend realizado com sucesso!"
195
+ else
196
+ echo "❌ Falha no build backend"
197
+ exit 1
198
+ fi
199
+ EOF
200
+
201
+ sleep 2
202
+ }
203
+
204
+ #######################################
205
+ # updates frontend code
206
+ # Arguments:
207
+ # None
208
+ #######################################
209
+ backend_update() {
210
+ print_banner
211
+ printf "${WHITE} 💻 Atualizando o backend...${GRAY_LIGHT}"
212
+ printf "\n\n"
213
+
214
+ sleep 2
215
+
216
+ sudo su - deploy <<EOF
217
+ cd /home/deploy/${empresa_atualizar}
218
+ pm2 stop ${empresa_atualizar}-backend
219
+ git pull
220
+ cd /home/deploy/${empresa_atualizar}/backend
221
+ npm -f install
222
+ npm update -f
223
+ npm -f install @types/fs-extra
224
+ rm -rf dist
225
+ npm run build
226
+ npx sequelize db:migrate
227
+ npx sequelize db:seed
228
+ pm2 start ${empresa_atualizar}-backend
229
+ pm2 save
230
+ EOF
231
+
232
+ sleep 2
233
+ }
234
+
235
+ #######################################
236
+ # runs db migrate
237
+ # Arguments:
238
+ # None
239
+ #######################################
240
+ backend_db_migrate() {
241
+ print_banner
242
+ printf "${WHITE} 💻 Executando db:migrate...${GRAY_LIGHT}"
243
+ printf "\n\n"
244
+
245
+ sleep 2
246
+
247
+ sudo su - deploy <<EOF
248
+ cd /home/deploy/${instancia_add}/backend
249
+ npx sequelize db:migrate
250
+
251
+ # Verifica se migrate foi bem-sucedido
252
+ if [ $? -eq 0 ]; then
253
+ echo "✅ Migrations executadas com sucesso!"
254
+ else
255
+ echo "❌ Erro ao executar migrations"
256
+ exit 1
257
+ fi
258
+ EOF
259
+
260
+ sleep 2
261
+ }
262
+
263
+ #######################################
264
+ # runs db seed
265
+ # Arguments:
266
+ # None
267
+ #######################################
268
+ backend_db_seed() {
269
+ print_banner
270
+ printf "${WHITE} 💻 Executando db:seed...${GRAY_LIGHT}"
271
+ printf "\n\n"
272
+
273
+ sleep 2
274
+
275
+ sudo su - deploy <<EOF
276
+ cd /home/deploy/${instancia_add}/backend
277
+ npx sequelize db:seed:all
278
+
279
+ # Verifica se seed foi bem-sucedido
280
+ if [ $? -eq 0 ]; then
281
+ echo "✅ Seeds executados com sucesso!"
282
+ else
283
+ echo "❌ Erro ao executar seeds"
284
+ exit 1
285
+ fi
286
+ EOF
287
+
288
+ sleep 2
289
+ }
290
+
291
+ #######################################
292
+ # starts backend using pm2 in
293
+ # production mode.
294
+ # Arguments:
295
+ # None
296
+ #######################################
297
+ backend_start_pm2() {
298
+ print_banner
299
+ printf "${WHITE} 💻 Iniciando pm2 (backend)...${GRAY_LIGHT}"
300
+ printf "\n\n"
301
+
302
+ sleep 2
303
+
304
+ sudo su - deploy <<EOF
305
+ cd /home/deploy/${instancia_add}/backend
306
+
307
+ # Para processo existente se houver
308
+ pm2 stop ${instancia_add}-backend 2>/dev/null || true
309
+ pm2 delete ${instancia_add}-backend 2>/dev/null || true
310
+
311
+ # Inicia o backend
312
+ pm2 start dist/server.js --name ${instancia_add}-backend
313
+
314
+ # Verifica se iniciou corretamente
315
+ if pm2 list | grep -q "${instancia_add}-backend"; then
316
+ echo "✅ Backend iniciado com sucesso no PM2"
317
+ else
318
+ echo "❌ Falha ao iniciar backend no PM2"
319
+ exit 1
320
+ fi
321
+ EOF
322
+
323
+ sleep 2
324
+ }
325
+
326
+ #######################################
327
+ # updates frontend code
328
+ # Arguments:
329
+ # None
330
+ #######################################
331
+ backend_nginx_setup() {
332
+ print_banner
333
+ printf "${WHITE} 💻 Configurando nginx (backend)...${GRAY_LIGHT}"
334
+ printf "\n\n"
335
+
336
+ sleep 2
337
+
338
+ backend_hostname=$(echo "${backend_url/https:\/\/}")
339
+
340
+ sudo su - root << EOF
341
+ # Remove configuração existente se houver
342
+ rm -f /etc/nginx/sites-enabled/${instancia_add}-backend
343
+ rm -f /etc/nginx/sites-available/${instancia_add}-backend
344
+
345
+ cat > /etc/nginx/sites-available/${instancia_add}-backend << 'END'
346
+ server {
347
+ server_name $backend_hostname;
348
+ location / {
349
+ proxy_pass http://127.0.0.1:${backend_port};
350
+ proxy_http_version 1.1;
351
+ proxy_set_header Upgrade \$http_upgrade;
352
+ proxy_set_header Connection 'upgrade';
353
+ proxy_set_header Host \$host;
354
+ proxy_set_header X-Real-IP \$remote_addr;
355
+ proxy_set_header X-Forwarded-Proto \$scheme;
356
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
357
+ proxy_cache_bypass \$http_upgrade;
358
+ }
359
+ }
360
+ END
361
+
362
+ # Cria link simbólico se não existir
363
+ if [ ! -f "/etc/nginx/sites-enabled/${instancia_add}-backend" ]; then
364
+ ln -s /etc/nginx/sites-available/${instancia_add}-backend /etc/nginx/sites-enabled
365
+ fi
366
+
367
+ echo "✅ Nginx backend configurado para ${backend_hostname}"
368
+ EOF
369
+
370
+ sleep 2
371
+ }
372
+
373
+ #######################################
374
+ # verifies backend installation
375
+ # Arguments:
376
+ # None
377
+ #######################################
378
+ backend_verify_installation() {
379
+ print_banner
380
+ printf "${WHITE} 💻 Verificando instalação do backend...${GRAY_LIGHT}"
381
+ printf "\n\n"
382
+
383
+ sleep 2
384
+
385
+ sudo su - deploy <<EOF
386
+ echo "🔍 Verificando backend..."
387
+
388
+ # Verifica PM2
389
+ if pm2 list | grep -q "${instancia_add}-backend"; then
390
+ echo "✅ PM2 backend: OK"
391
+ else
392
+ echo "❌ PM2 backend: FALHA"
393
+ exit 1
394
+ fi
395
+
396
+ # Verifica se responde na porta
397
+ sleep 5
398
+ if curl -f http://localhost:${backend_port}/ >/dev/null 2>&1; then
399
+ echo "✅ Backend respondendo: OK"
400
+ else
401
+ echo "⚠️ Backend não respondeu imediatamente, aguardando..."
402
+ sleep 10
403
+ if curl -f http://localhost:${backend_port}/ >/dev/null 2>&1; then
404
+ echo "✅ Backend respondendo: OK"
405
+ else
406
+ echo "❌ Backend não responde: FALHA"
407
+ exit 1
408
+ fi
409
+ fi
410
+ EOF
411
+
412
+ sleep 2
413
+ }
414
+
415
+ #######################################
416
+ # verifies redis installation
417
+ # Arguments:
418
+ # None
419
+ #######################################
420
+ backend_verify_redis() {
421
+ print_banner
422
+ printf "${WHITE} 💻 Verificando instalação do Redis...${GRAY_LIGHT}"
423
+ printf "\n\n"
424
+
425
+ sleep 2
426
+
427
+ sudo su - root <<EOF
428
+ echo "🔍 Verificando Redis..."
429
+
430
+ # Verifica container
431
+ if docker ps | grep -q "redis-${instancia_add}"; then
432
+ echo "✅ Container Redis: OK"
433
+ else
434
+ echo "❌ Container Redis: FALHA"
435
+ exit 1
436
+ fi
437
+
438
+ # Testa conexão com Redis
439
+ if docker exec redis-${instancia_add} redis-cli -a ${mysql_root_password} ping | grep -q "PONG"; then
440
+ echo "✅ Conexão Redis: OK"
441
+ else
442
+ echo "❌ Conexão Redis: FALHA"
443
+ exit 1
444
+ fi
445
+
446
+ echo "📊 Redis configurado automaticamente:"
447
+ echo " 🏠 Host: localhost"
448
+ echo " 🔑 Senha: mesma do banco"
449
+ echo " 📍 Porta: ${redis_port}"
450
+ EOF
451
+
452
+ sleep 2
453
+ }