Об этом проекте

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.