Sobre o projeto
O httpSMS é um serviço que permite usar um telefone Android como gateway de SMS. Você chama uma API HTTP simples, e a requisição faz o telefone Android enviar um SMS. As mensagens recebidas no telefone podem ser encaminhadas para um endpoint de webhook que você fornecer. O projeto foi criado porque números de telefone virtuais não estão disponíveis em muitos países, e o autor queria uma forma automatizada e orientada por API de enviar e receber SMS por meio de um telefone celular real.
Componentes
- Interface web: uma aplicação de página única construída com Nuxt e Vuetify, hospedada no Firebase; o código-fonte fica no diretório web.
- API: construída com Go e Fiber, usando CockroachDB, e projetada para rodar sem servidor no Google Cloud Run. A documentação da API é publicada separadamente.
- App Android: uma aplicação nativa em Kotlin que precisa ser instalada no telefone antes que mensagens possam ser enviadas ou recebidas. É distribuída como APK e via releases do GitHub.
Recursos
- Criptografia ponta a ponta: as mensagens podem ser criptografadas com AES-256, com a chave armazenada apenas no telefone, de modo que o servidor não consegue ler o conteúdo das mensagens.
- Webhooks: os SMS recebidos podem ser encaminhados para uma URL de callback para criar integrações.
- Contrapressão: um limite de taxa configurável (por exemplo, três mensagens por minuto) evita inundar a API de SMS do telefone mesmo quando muitos destinatários estão na fila.
- Expiração de mensagem: um tempo limite pode ser definido para a validade da mensagem, e você é notificado se uma mensagem expirar antes de ser enviada.
Clientes de API
Bibliotecas cliente oficiais estão listadas para Go e JavaScript/TypeScript.
Fluxo de envio
Uma requisição ao endpoint de envio é aceita com HTTP 202, uma notificação push é agendada e entregue ao app Android, o app busca a mensagem, envia-a pela API de SMS do Android e reporta o resultado do envio e o relatório de entrega de volta à API de forma assíncrona.
Auto-hospedagem com Docker
O README documenta um caminho de auto-hospedagem baseado em Docker: crie um projeto Firebase e a configuração do SDK web, habilite o login por e-mail/senha (com uma solução alternativa indicada para a proteção contra enumeração de e-mail), gere credenciais de conta de serviço do Firebase e um google-services.json para Android, configure um serviço de e-mail SMTP, configure um widget Cloudflare Turnstile para proteger a rota de busca de mensagens, clone o repositório, copie os arquivos .env.docker fornecidos para web e api, preencha as variáveis de ambiente e então execute docker compose up --build. A interface web fica então acessível na porta 3000 e a API na porta 8000. Um usuário de sistema deve ser inserido na tabela users com um id e api_key correspondentes às configurações da fila de eventos, e o contêiner da API reiniciado depois. O app Android deve ser compilado no Android Studio com o google-services.json substituído para que o envio de mensagens push funcione.
Testes e licença
Testes de integração ponta a ponta executam a pilha completa (API, PostgreSQL, Redis) no Docker com um emulador de telefone simulando um dispositivo Android, e também rodam na CI em pushes e pull requests para a main. O projeto é licenciado sob a GNU Affero General Public License v3.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.