Об этом проекте
httpSMS — это сервис, позволяющий использовать Android-смартфон в качестве SMS-шлюза. Вы вызываете простой HTTP API, и запрос запускает отправку SMS через Android-устройство. Входящие сообщения, полученные на телефон, могут пересылаться на указанный вами webhook-эндпоинт. Проект был создан, потому что виртуальные номера недоступны во многих странах, и автору требовался автоматизированный, управляемый через API способ отправки и получения SMS через реальный мобильный телефон.
Компоненты
- Веб-интерфейс: одностраничное приложение на Nuxt и Vuetify, размещённое на Firebase; исходный код находится в каталоге web.
- API: написан на Go и Fiber, использует CockroachDB и предназначен для бессерверного запуска на Google Cloud Run. Документация API публикуется отдельно.
- Android-приложение: нативное Kotlin-приложение, которое необходимо установить на телефон до отправки или получения сообщений. Распространяется в виде APK и через релизы GitHub.
Возможности
- Сквозное шифрование: сообщения могут шифроваться с помощью AES-256, при этом ключ хранится только на телефоне, поэтому сервер не может прочитать содержимое сообщений.
- Webhooks: входящие SMS могут пересылаться на callback-URL для создания интеграций.
- Ограничение нагрузки: настраиваемый лимит частоты (например, три сообщения в минуту) предотвращает перегрузку SMS-API телефона, даже если в очереди много получателей.
- Истечение срока действия сообщений: можно задать тайм-аут для действительности сообщения, и вы получите уведомление, если сообщение истечёт до отправки.
Клиенты API
Официальные клиентские библиотеки перечислены для Go и JavaScript/TypeScript.
Процесс отправки
Запрос к эндпоинту отправки принимается с HTTP 202, планируется и доставляется push-уведомление в Android-приложение, приложение получает сообщение, отправляет его через Android SMS API и асинхронно сообщает результат отправки и отчёт о доставке обратно в API.
Самостоятельный хостинг с Docker
В README описан путь самостоятельного хостинга на основе Docker: создайте проект Firebase и конфигурацию веб-SDK, включите вход по email/паролю (с отмеченным обходным решением для защиты от перечисления email), сгенерируйте учётные данные сервисного аккаунта Firebase и google-services.json для Android, настройте SMTP-сервис для email, создайте виджет Cloudflare Turnstile для защиты маршрута поиска сообщений, клонируйте репозиторий, скопируйте предоставленные файлы .env.docker для web и api, заполните переменные окружения, затем выполните docker compose up --build. Веб-интерфейс будет доступен на порту 3000, а API — на порту 8000. В таблицу users необходимо вставить системного пользователя с id и api_key, соответствующими настройкам очереди событий, после чего перезапустить контейнер API. Android-приложение должно быть собрано в Android Studio с заменённым google-services.json для работы push-уведомлений.
Тестирование и лицензия
Сквозные интеграционные тесты запускают полный стек (API, PostgreSQL, Redis) в Docker с эмулятором телефона, имитирующим Android-устройство, и также выполняются в CI при пушах и pull-запросах в main. Проект лицензирован под GNU Affero General Public License v3.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.