Este worker HTTP é um sistema que gerencia os arquivos de conexão das sessões do WhatsApp. Ele escuta requisições HTTP na porta 5656, recebe e armazena arquivos de sessão, e também recupera esses arquivos quando solicitado. A segurança é garantida mantendo o worker na mesma rede que a API de WhatsApp, e a porta do worker não é exposta ao público. O worker pode ser executado em um ambiente Docker e está pronto para futuras expansões e refinamentos.
-
Escuta de Requisições HTTP: O worker foi configurado para ouvir requisições HTTP na porta 5656. Qualquer requisição enviada para essa porta será tratada pelo worker.
-
Recebimento de Arquivos de SessĂŁo: Quando uma sessĂŁo de WhatsApp Ă© iniciada ou atualizada, o worker recebe os arquivos de conexĂŁo correspondentes atravĂ©s de requisições HTTP POST. Esses arquivos contĂŞm informações necessárias para manter a conexĂŁo ativa e permitir a comunicação contĂnua com o WhatsApp.
-
Armazenamento de Arquivos de SessĂŁo: ApĂłs receber os arquivos de sessĂŁo, o worker os armazena em um local seguro no servidor. O armazenamento Ă© feito de maneira organizada para garantir que os arquivos possam ser facilmente recuperados e identificados.
-
Recuperação de Arquivos de SessĂŁo: O worker tambĂ©m oferece uma funcionalidade de recuperação dos arquivos de sessĂŁo. Quando solicitado atravĂ©s de uma requisição HTTP GET, ele localiza e retorna os arquivos de sessĂŁo especĂficos, permitindo que a conexĂŁo com o WhatsApp seja restaurada ou mantida.
-
Segurança e Confiabilidade: A segurança é uma responsabilidade compartilhada. É essencial que o worker permaneça na mesma rede que a API para evitar acessos não autorizados. Apenas a API deve se comunicar diretamente com o worker, e a porta na qual o worker escuta as requisições não deve ser exposta ao público.
Além disso, um token global deve ser definido nas variáveis de ambiente. O cliente deve enviar esse token em “headers.apikey” ao fazer uma requisição. Esse token global deve ser o mesmo configurado na API cliente para gestão das instâncias. Isso adiciona uma camada extra de segurança, garantindo que apenas componentes autorizados dentro da mesma rede possam acessar as funcionalidades do worker, minimizando riscos de segurança. -
Requisitos de Rede: É recomendado, mas não obrigatório, que este worker permaneça na mesma rede que a aplicação principal para assegurar a comunicação eficiente e segura entre os componentes. Se estiver utilizando o Docker Swarm, o worker deve estar na mesma rede do Swarm para garantir o correto funcionamento e a integração dos serviços.
/worker-session
├── /.vscode
│ └── settings.json
│
├── /api
│ ├── /handlers
│ │ ├── handler.go
│ │ └── sessio_handler.go
│ ├── /middlewares
│ │ ├── auth_guard.go
│ │ └── body_size.go
│ └── /routers
│ ├── routers.go
│ └── session_routes.go
│
├── /cmd
│ └── /server
│ └── main.go
│
├── /instances # criasda internamente pelo serviço
│
├── /internal
│ ├─ /session
│ │ └── service.go
│ └── app.go
│
├── /pkg
│ └── /config
│ └── config.go
│
├── .env
├── .gitignore
├── build.sh
├── docker-compose.yaml
├── Dockerfile
├── go.sum
├── LICENSE
├── main
└── README.md
- Download do binário
wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz
- Extraindo binário
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz
- Definindo o
PATH
export PATH=$PATH:/usr/local/go/bin
- Testando o
go
go version
# go version go1.22.3 linux/amd64
git clone https://github.com/code-chat-br/session-manager.git
- Instalando as dependĂŞncias
go mod tidy
- Executando a aplicação
go run cmd/server/main.go
cp .env_dev .env
GLOBAL_AUTH_TOKEN
(requerido): Token global definido na API cliente;BODY_SIZE
(padrão 5mb): comprimento máximo do corpo da requisição;HTTP_LOGS
(padrĂŁofalse
): Determina a exibição dos logs http.
sh build.sh
Executando o build
./main
As discurções sobre esse worker devem ser realizadas aqui.