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,676 @@
1
+ #!/bin/bash
2
+ #
3
+ # system management
4
+
5
+ #######################################
6
+ # creates user
7
+ # Arguments:
8
+ # None
9
+ #######################################
10
+ system_create_user() {
11
+ print_banner
12
+ printf "${WHITE} 💻 Agora, vamos criar o usuário para a nova Instância...${GRAY_LIGHT}"
13
+ printf "\n\n"
14
+
15
+ sleep 2
16
+
17
+ # cria o usuário sem senha
18
+ sudo useradd -m -s /bin/bash -G sudo deploy
19
+
20
+ # define a senha corretamente
21
+ echo "deploy:${mysql_root_password}" | sudo chpasswd
22
+
23
+ sleep 2
24
+ }
25
+
26
+
27
+ #######################################
28
+ # garante unzip instalado (idempotente)
29
+ # Arguments:
30
+ # None
31
+ #######################################
32
+ system_ensure_unzip() {
33
+ print_banner
34
+ printf "${WHITE} 💻 Verificando dependência: unzip...${GRAY_LIGHT}\n\n"
35
+ sleep 1
36
+
37
+ sudo su - root <<'EOF'
38
+ if ! command -v unzip >/dev/null 2>&1; then
39
+ apt -y update && apt -y install unzip
40
+ fi
41
+ EOF
42
+ sleep 1
43
+ }
44
+
45
+ #######################################
46
+ # cria pasta da instância (idempotente)
47
+ # Arguments:
48
+ # None
49
+ #######################################
50
+ system_create_folder() {
51
+ print_banner
52
+ printf "${WHITE} 💻 Agora, vamos criar a nova pasta da Instância...${GRAY_LIGHT}"
53
+ printf "\n\n"
54
+
55
+ sleep 2
56
+
57
+ sudo su - deploy <<EOF
58
+ mkdir -p "/home/deploy/${instancia_add}"
59
+ EOF
60
+
61
+ sleep 2
62
+ }
63
+
64
+ #######################################
65
+ # copia o zip para a pasta da instância
66
+ # Arguments:
67
+ # None
68
+ #######################################
69
+ system_mv_folder() {
70
+ print_banner
71
+ printf "${WHITE} 💻 Fazendo download do código Multizap...${GRAY_LIGHT}"
72
+ printf "\n\n"
73
+
74
+ sleep 2
75
+
76
+ sudo su - root <<EOF
77
+ cp -f "${PROJECT_ROOT}/Multizap.zip" "/home/deploy/${instancia_add}/"
78
+ chown deploy:deploy "/home/deploy/${instancia_add}/Multizap.zip"
79
+ EOF
80
+
81
+ sleep 2
82
+ }
83
+
84
+ #######################################
85
+ # unzip Multizap
86
+ # Arguments:
87
+ # None
88
+ #######################################
89
+ system_unzip_Multizap() {
90
+ print_banner
91
+ printf "${WHITE} 💻 Extraindo o Multizap...${GRAY_LIGHT}"
92
+ printf "\n\n"
93
+
94
+ sleep 2
95
+
96
+ # Garante que o unzip esteja disponível
97
+ system_ensure_unzip
98
+
99
+ sudo su - deploy <<EOF
100
+ set -e
101
+ cd "/home/deploy/${instancia_add}"
102
+ # -o: overwrite; -q: quiet
103
+ unzip -o -q "Multizap.zip" -d "/home/deploy/${instancia_add}"
104
+ EOF
105
+
106
+ # Ajuste de permissões após extração
107
+ sudo chown -R deploy:deploy "/home/deploy/${instancia_add}"
108
+ if [ -d "/home/deploy/${instancia_add}/backend/public" ]; then
109
+ sudo chmod -R 777 "/home/deploy/${instancia_add}/backend/public"
110
+ fi
111
+
112
+ sleep 1
113
+ }
114
+
115
+ #######################################
116
+ # localiza e executa o install.sh
117
+ # Arguments:
118
+ # None
119
+ #######################################
120
+ system_run_installer() {
121
+ print_banner
122
+ printf "${WHITE} 💻 Executando instalador do Multizap...${GRAY_LIGHT}\n\n"
123
+ sleep 1
124
+
125
+ # Encontra o primeiro install.sh (mesmo se o zip criar subpasta)
126
+ INSTALLER_PATH=$(sudo -u deploy bash -lc "shopt -s globstar nullglob; for f in /home/deploy/${instancia_add}/**/install.sh; do echo \"\$f\"; break; done")
127
+
128
+ if [ -z "$INSTALLER_PATH" ]; then
129
+ printf "${RED} ⚠️ Não encontrei install.sh dentro de /home/deploy/${instancia_add}. Verifique o conteúdo do zip.${GRAY_LIGHT}\n"
130
+ return 1
131
+ fi
132
+
133
+ sudo chmod +x "$INSTALLER_PATH"
134
+ sudo -u deploy bash -lc "cd \"\$(dirname \"$INSTALLER_PATH\")\" && ./install.sh"
135
+
136
+ sleep 1
137
+ }
138
+
139
+ #######################################
140
+ # updates system
141
+ # Arguments:
142
+ # None
143
+ #######################################
144
+ system_update() {
145
+ print_banner
146
+ printf "${WHITE} 💻 Vamos atualizar o sistema Multizap...${GRAY_LIGHT}"
147
+ printf "\n\n"
148
+
149
+ sleep 2
150
+
151
+ sudo su - root <<EOF
152
+ apt -y update
153
+ sudo apt-get install -y libxshmfence-dev libgbm-dev wget unzip fontconfig locales gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils
154
+ EOF
155
+
156
+ sleep 2
157
+ }
158
+
159
+ #######################################
160
+ # delete system
161
+ # Arguments:
162
+ # None
163
+ #######################################
164
+ deletar_tudo() {
165
+ print_banner
166
+ printf "${WHITE} 💻 Vamos deletar uma Instância do Multizap...${GRAY_LIGHT}"
167
+ printf "\n\n"
168
+
169
+ sleep 2
170
+
171
+ sudo su - root <<EOF
172
+ docker container rm redis-${empresa_delete} --force
173
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_delete}-frontend
174
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_delete}-backend
175
+ cd && rm -rf /etc/nginx/sites-available/${empresa_delete}-frontend
176
+ cd && rm -rf /etc/nginx/sites-available/${empresa_delete}-backend
177
+
178
+ sleep 2
179
+
180
+ sudo su - postgres
181
+ dropuser ${empresa_delete}
182
+ dropdb ${empresa_delete}
183
+ exit
184
+ EOF
185
+
186
+ sleep 2
187
+
188
+ sudo su - deploy <<EOF
189
+ rm -rf /home/deploy/${empresa_delete}
190
+ pm2 delete ${empresa_delete}-frontend ${empresa_delete}-backend
191
+ pm2 save
192
+ EOF
193
+
194
+ sleep 2
195
+
196
+ print_banner
197
+ printf "${WHITE} 💻 Remoção da Instância/Empresa ${empresa_delete} realizado com sucesso ...${GRAY_LIGHT}"
198
+ printf "\n\n"
199
+
200
+ sleep 2
201
+ }
202
+
203
+ #######################################
204
+ # bloquear system
205
+ # Arguments:
206
+ # None
207
+ #######################################
208
+ configurar_bloqueio() {
209
+ print_banner
210
+ printf "${WHITE} 💻 Vamos Bloquear o Multizap...${GRAY_LIGHT}"
211
+ printf "\n\n"
212
+
213
+ sleep 2
214
+
215
+ sudo su - deploy <<EOF
216
+ pm2 stop ${empresa_bloquear}-backend
217
+ pm2 save
218
+ EOF
219
+
220
+ sleep 2
221
+
222
+ print_banner
223
+ printf "${WHITE} 💻 Bloqueio da Instância/Empresa ${empresa_bloquear} realizado com sucesso ...${GRAY_LIGHT}"
224
+ printf "\n\n"
225
+
226
+ sleep 2
227
+ }
228
+
229
+ #######################################
230
+ # desbloquear system
231
+ # Arguments:
232
+ # None
233
+ #######################################
234
+ configurar_desbloqueio() {
235
+ print_banner
236
+ printf "${WHITE} 💻 Vamos Desbloquear o Multizap de uma Instância...${GRAY_LIGHT}"
237
+ printf "\n\n"
238
+
239
+ sleep 2
240
+
241
+ sudo su - deploy <<EOF
242
+ pm2 start ${empresa_bloquear}-backend
243
+ pm2 save
244
+ EOF
245
+
246
+ sleep 2
247
+
248
+ print_banner
249
+ printf "${WHITE} 💻 Desbloqueio da Instância/Empresa ${empresa_desbloquear} realizado com sucesso ...${GRAY_LIGHT}"
250
+ printf "\n\n"
251
+
252
+ sleep 2
253
+ }
254
+
255
+ #######################################
256
+ # alter dominio system
257
+ # Arguments:
258
+ # None
259
+ #######################################
260
+ configurar_dominio() {
261
+ print_banner
262
+ printf "${WHITE} 💻 Vamos alterar os domínios do Multizap de uma Instância...${GRAY_LIGHT}"
263
+ printf "\n\n"
264
+
265
+ sleep 2
266
+
267
+ sudo su - root <<EOF
268
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_dominio}-frontend
269
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_dominio}-backend
270
+ cd && rm -rf /etc/nginx/sites-available/${empresa_dominio}-frontend
271
+ cd && rm -rf /etc/nginx/sites-available/${empresa_dominio}-backend
272
+ EOF
273
+
274
+ sleep 2
275
+
276
+ sudo su - deploy <<EOF
277
+ cd && cd /home/deploy/${empresa_dominio}/frontend
278
+ sed -i "1c\REACT_APP_BACKEND_URL=https://${alter_backend_url}" .env
279
+ cd && cd /home/deploy/${empresa_dominio}/backend
280
+ sed -i "2c\BACKEND_URL=https://${alter_backend_url}" .env
281
+ sed -i "3c\FRONTEND_URL=https://${alter_frontend_url}" .env
282
+ EOF
283
+
284
+ sleep 2
285
+
286
+ backend_hostname=$(echo "${alter_backend_url/https:\/\/}")
287
+
288
+ sudo su - root <<EOF
289
+ cat > /etc/nginx/sites-available/${empresa_dominio}-backend << 'END'
290
+ server {
291
+ server_name $backend_hostname;
292
+ location / {
293
+ proxy_pass http://127.0.0.1:${alter_backend_port};
294
+ proxy_http_version 1.1;
295
+ proxy_set_header Upgrade \$http_upgrade;
296
+ proxy_set_header Connection 'upgrade';
297
+ proxy_set_header Host \$host;
298
+ proxy_set_header X-Real-IP \$remote_addr;
299
+ proxy_set_header X-Forwarded-Proto \$scheme;
300
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
301
+ proxy_cache_bypass \$http_upgrade;
302
+ }
303
+ }
304
+ END
305
+ ln -s /etc/nginx/sites-available/${empresa_dominio}-backend /etc/nginx/sites-enabled
306
+ EOF
307
+
308
+ sleep 2
309
+
310
+ frontend_hostname=$(echo "${alter_frontend_url/https:\/\/}")
311
+
312
+ sudo su - root << EOF
313
+ cat > /etc/nginx/sites-available/${empresa_dominio}-frontend << 'END'
314
+ server {
315
+ server_name $frontend_hostname;
316
+ location / {
317
+ proxy_pass http://127.0.0.1:${alter_frontend_port};
318
+ proxy_http_version 1.1;
319
+ proxy_set_header Upgrade \$http_upgrade;
320
+ proxy_set_header Connection 'upgrade';
321
+ proxy_set_header Host \$host;
322
+ proxy_set_header X-Real-IP \$remote_addr;
323
+ proxy_set_header X-Forwarded-Proto \$scheme;
324
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
325
+ proxy_cache_bypass \$http_upgrade;
326
+ }
327
+ }
328
+ END
329
+ ln -s /etc/nginx/sites-available/${empresa_dominio}-frontend /etc/nginx/sites-enabled
330
+ EOF
331
+
332
+ sleep 2
333
+
334
+ sudo su - root <<EOF
335
+ service nginx restart
336
+ EOF
337
+
338
+ sleep 2
339
+
340
+ backend_domain=$(echo "${backend_url/https:\/\/}")
341
+ frontend_domain=$(echo "${frontend_url/https:\/\/}")
342
+
343
+ sudo su - root <<EOF
344
+ certbot -m $deploy_email \
345
+ --nginx \
346
+ --agree-tos \
347
+ --non-interactive \
348
+ --domains $backend_domain,$frontend_domain
349
+ EOF
350
+
351
+ sleep 2
352
+
353
+ print_banner
354
+ printf "${WHITE} 💻 Alteração de dominio da Instância/Empresa ${empresa_dominio} realizado com sucesso ...${GRAY_LIGHT}"
355
+ printf "\n\n"
356
+
357
+ sleep 2
358
+ }
359
+
360
+ #######################################
361
+ # installs node
362
+ # Arguments:
363
+ # None
364
+ #######################################
365
+ system_node_install() {
366
+ print_banner
367
+ printf "${WHITE} 💻 Instalando nodejs...${GRAY_LIGHT}"
368
+ printf "\n\n"
369
+
370
+ sleep 2
371
+
372
+ sudo su - root <<EOF
373
+ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
374
+ apt-get install -y nodejs
375
+ sleep 2
376
+ npm install -g npm@latest
377
+ sleep 2
378
+ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
379
+ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
380
+ sudo apt-get update -y && sudo apt-get -y install postgresql
381
+ sleep 2
382
+ sudo timedatectl set-timezone America/Sao_Paulo
383
+ EOF
384
+
385
+ sleep 2
386
+ }
387
+
388
+ #######################################
389
+ # installs docker
390
+ # Arguments:
391
+ # None
392
+ #######################################
393
+ system_docker_install() {
394
+ print_banner
395
+ printf "${WHITE} 💻 Instalando docker...${GRAY_LIGHT}"
396
+ printf "\n\n"
397
+
398
+ sleep 2
399
+
400
+ sudo su - root <<EOF
401
+ apt install -y apt-transport-https \
402
+ ca-certificates curl \
403
+ software-properties-common
404
+
405
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
406
+
407
+ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
408
+
409
+ apt install -y docker-ce
410
+ EOF
411
+
412
+ sleep 2
413
+ }
414
+
415
+ #######################################
416
+ # instala dependências do puppeteer
417
+ # Arguments:
418
+ # None
419
+ #######################################
420
+ system_puppeteer_dependencies() {
421
+ print_banner
422
+ printf "${WHITE} 💻 Instalando dependências do puppeteer...${GRAY_LIGHT}"
423
+ printf "\n\n"
424
+
425
+ sleep 2
426
+
427
+ sudo su - root <<EOF
428
+ apt-get install -y libxshmfence-dev \
429
+ libgbm-dev \
430
+ wget \
431
+ unzip \
432
+ fontconfig \
433
+ locales \
434
+ gconf-service \
435
+ libasound2 \
436
+ libatk1.0-0 \
437
+ libc6 \
438
+ libcairo2 \
439
+ libcups2 \
440
+ libdbus-1-3 \
441
+ libexpat1 \
442
+ libfontconfig1 \
443
+ libgcc1 \
444
+ libgconf-2-4 \
445
+ libgdk-pixbuf2.0-0 \
446
+ libglib2.0-0 \
447
+ libgtk-3-0 \
448
+ libnspr4 \
449
+ libpango-1.0-0 \
450
+ libpangocairo-1.0-0 \
451
+ libstdc++6 \
452
+ libx11-6 \
453
+ libx11-xcb1 \
454
+ libxcb1 \
455
+ libxcomposite1 \
456
+ libxcursor1 \
457
+ libxdamage1 \
458
+ libxext6 \
459
+ libxfixes3 \
460
+ libxi6 \
461
+ libxrandr2 \
462
+ libxrender1 \
463
+ libxss1 \
464
+ libxtst6 \
465
+ ca-certificates \
466
+ fonts-liberation \
467
+ libappindicator1 \
468
+ libnss3 \
469
+ lsb-release \
470
+ xdg-utils
471
+ EOF
472
+
473
+ sleep 2
474
+ }
475
+
476
+ #######################################
477
+ # installs pm2
478
+ # Arguments:
479
+ # None
480
+ #######################################
481
+ system_pm2_install() {
482
+ print_banner
483
+ printf "${WHITE} 💻 Instalando pm2...${GRAY_LIGHT}"
484
+ printf "\n\n"
485
+
486
+ sleep 2
487
+
488
+ sudo su - root <<EOF
489
+ npm install -g pm2
490
+ EOF
491
+
492
+ sleep 2
493
+ }
494
+
495
+ #######################################
496
+ # installs snapd
497
+ # Arguments:
498
+ # None
499
+ #######################################
500
+ system_snapd_install() {
501
+ print_banner
502
+ printf "${WHITE} 💻 Instalando snapd...${GRAY_LIGHT}"
503
+ printf "\n\n"
504
+
505
+ sleep 2
506
+
507
+ sudo su - root <<EOF
508
+ apt install -y snapd
509
+ snap install core
510
+ snap refresh core
511
+ EOF
512
+
513
+ sleep 2
514
+ }
515
+
516
+ #######################################
517
+ # installs certbot
518
+ # Arguments:
519
+ # None
520
+ #######################################
521
+ system_certbot_install() {
522
+ print_banner
523
+ printf "${WHITE} 💻 Instalando certbot...${GRAY_LIGHT}"
524
+ printf "\n\n"
525
+
526
+ sleep 2
527
+
528
+ sudo su - root <<EOF
529
+ apt-get remove -y certbot || true
530
+ snap install --classic certbot
531
+ ln -sf /snap/bin/certbot /usr/bin/certbot
532
+ EOF
533
+
534
+ sleep 2
535
+ }
536
+
537
+ #######################################
538
+ # installs nginx
539
+ # Arguments:
540
+ # None
541
+ #######################################
542
+ system_nginx_install() {
543
+ print_banner
544
+ printf "${WHITE} 💻 Instalando nginx...${GRAY_LIGHT}"
545
+ printf "\n\n"
546
+
547
+ sleep 2
548
+
549
+ sudo su - root <<EOF
550
+ apt install -y nginx
551
+ rm -f /etc/nginx/sites-enabled/default
552
+ EOF
553
+
554
+ sleep 2
555
+ }
556
+
557
+ #######################################
558
+ # restarts nginx
559
+ # Arguments:
560
+ # None
561
+ #######################################
562
+ system_nginx_restart() {
563
+ print_banner
564
+ printf "${WHITE} 💻 Reiniciando nginx...${GRAY_LIGHT}"
565
+ printf "\n\n"
566
+
567
+ sleep 2
568
+
569
+ sudo su - root <<EOF
570
+ service nginx restart
571
+ EOF
572
+
573
+ sleep 2
574
+ }
575
+
576
+ #######################################
577
+ # setup for nginx.conf
578
+ # Arguments:
579
+ # None
580
+ #######################################
581
+ system_nginx_conf() {
582
+ print_banner
583
+ printf "${WHITE} 💻 Configurando nginx...${GRAY_LIGHT}"
584
+ printf "\n\n"
585
+
586
+ sleep 2
587
+
588
+ sudo su - root << 'EOF'
589
+ cat > /etc/nginx/conf.d/deploy.conf << 'END'
590
+ client_max_body_size 100M;
591
+ END
592
+ EOF
593
+
594
+ sleep 2
595
+ }
596
+
597
+ #######################################
598
+ # certbot setup
599
+ # Arguments:
600
+ # None
601
+ #######################################
602
+ system_certbot_setup() {
603
+ print_banner
604
+ printf "${WHITE} 💻 Configurando certbot...${GRAY_LIGHT}"
605
+ printf "\n\n"
606
+
607
+ sleep 2
608
+
609
+ backend_domain=$(echo "${backend_url/https:\/\/}")
610
+ frontend_domain=$(echo "${frontend_url/https:\/\/}")
611
+
612
+ sudo su - root <<EOF
613
+ certbot -m $deploy_email \
614
+ --nginx \
615
+ --agree-tos \
616
+ --non-interactive \
617
+ --domains $backend_domain,$frontend_domain
618
+ EOF
619
+
620
+ sleep 2
621
+ }
622
+
623
+ #######################################
624
+ # Pipeline de instalação completo
625
+ #######################################
626
+ system_install_multizap() {
627
+ print_banner
628
+ printf "${WHITE} 💻 Iniciando instalação completa do Multizap...${GRAY_LIGHT}"
629
+ printf "\n\n"
630
+
631
+ # Atualiza sistema
632
+ system_update
633
+
634
+ # Cria usuário
635
+ system_create_user
636
+
637
+ # Instala dependências do sistema
638
+ system_node_install
639
+ system_docker_install
640
+ system_puppeteer_dependencies
641
+ system_pm2_install
642
+ system_snapd_install
643
+ system_certbot_install
644
+ system_nginx_install
645
+ system_nginx_conf
646
+
647
+ # Cria estrutura da instância
648
+ system_create_folder
649
+ system_mv_folder
650
+ system_unzip_Multizap
651
+
652
+ # Configura serviços
653
+ system_nginx_restart
654
+
655
+ # Executa instalador específico do Multizap
656
+ system_run_installer
657
+
658
+ # Configura SSL
659
+ system_certbot_setup
660
+
661
+ sleep 2
662
+ print_banner
663
+ printf "${WHITE} 💻 Instalação do Multizap completa! ${GREEN}✓${GRAY_LIGHT}"
664
+ printf "\n\n"
665
+ }
666
+
667
+ #######################################
668
+ # Exemplo de pipeline de instalação (comentado)
669
+ # Descomente e use conforme seu fluxo:
670
+ #
671
+ # system_create_user
672
+ # system_create_folder
673
+ # system_mv_folder
674
+ # system_unzip_Multizap
675
+ # system_run_installer
676
+ #######################################
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+
3
+ source "${PROJECT_ROOT}"/lib/_backend.sh
4
+ source "${PROJECT_ROOT}"/lib/_frontend.sh
5
+ source "${PROJECT_ROOT}"/lib/_system.sh
6
+ source "${PROJECT_ROOT}"/lib/_inquiry.sh
@@ -0,0 +1,45 @@
1
+ #!/bin/bash
2
+ #
3
+ # Print banner art.
4
+
5
+ #######################################
6
+ # Print a board.
7
+ # Globals:
8
+ # BG_BROWN
9
+ # NC
10
+ # WHITE
11
+ # CYAN_LIGHT
12
+ # RED
13
+ # GREEN
14
+ # YELLOW
15
+ # Arguments:
16
+ # None
17
+ #######################################
18
+ print_banner() {
19
+
20
+ clear
21
+
22
+ printf "\n\n"
23
+
24
+ printf "${YELLOW}";
25
+
26
+
27
+ printf ${CYAN}" ,-.\n"
28
+ printf ${CYAN}" / ( '\n"
29
+ printf ${CYAN}" * _.--'! '--._\n"
30
+ printf ${CYAN}" ,' ''_ _____ __ .___ ___________.__ __ __ \n"
31
+ printf ${CYAN}" |! / _ \_/ |_ ____ ____ __| _/___\__ ___/|__| ____ | | __ _____/ |_ \n"
32
+ printf ${CYAN}" _.' O ___ / /_\ \ __\/ __ \ / \ / __ |/ __ \| | | |/ ___\| |/ // __ \ __\\n"
33
+ printf ${CYAN}" (_.-^, __..-' ''''-./ | \ | \ ___/| | \/ /_/ \ ___/| | | \ \___| <\ ___/| |\n"
34
+ printf ${CYAN}" /,' ' _\____|____/__| \_____>___|__/\____ |\_____>____| |__|\_____>__|__\\_____>__| \n"
35
+ printf ${CYAN}" ' * .-'' |\n"
36
+ printf ${CYAN}" (..--^. ' \n"
37
+ printf ${CYAN}" | /\n"
38
+ printf ${CYAN}" '\n"
39
+ printf "\n"
40
+
41
+ printf " \033[1;33m ";
42
+ printf "${NC}";
43
+
44
+ printf "\n"
45
+ }