Все проекты

Huawei SMS

SMS-шлюз для Huawei HiLink с поддержкой команд и внешних обработчиков

О проекте

Веб-приложение для приёма, отправки и хранения SMS через модемы Huawei HiLink. Сообщения автоматически переносятся из памяти модема в локальную базу SQLite и удаляются с устройства после сохранения. С доверенных телефонных номеров можно отправлять SMS-команды, которые запускают подключённые Bash- или Python-обработчики и возвращают результат выполнения ответным сообщением.

Стек
PHP · SQLite · Bash · Python · nginx · PHP-FPM · systemd
Направление
Автоматизация
Год
2026

Задача

Huawei HiLink позволяет работать с SMS через собственный веб-интерфейс и API, но при постоянном использовании быстро возникает несколько проблем: сообщения остаются в ограниченной памяти модема, историю неудобно хранить и просматривать, а использовать SMS как резервный канал управления инфраструктурой приходится отдельными самописными скриптами.

Задачей проекта было сделать небольшой универсальный SMS-шлюз, который самостоятельно забирает сообщения с модема, хранит их на сервере и при этом позволяет использовать обычное SMS как канал выполнения заранее разрешённых административных команд.

При этом само приложение не должно быть привязано к конкретной организации или инфраструктуре. Все специфические действия — диагностика серверов, проверка сервисов, управление оборудованием и другие сценарии — должны подключаться отдельно и не требовать изменения основного кода.

Реализация

Huawei SMS работает как обычное PHP-приложение с SQLite и использует API Huawei HiLink для чтения, отправки и удаления SMS.

Периодический опрос выполняется отдельным однократным заданием. За один запуск приложение последовательно читает сообщения из памяти модема, сохраняет их в SQLite и после успешного переноса удаляет с Huawei. Таким образом, память модема используется только как временное хранилище, а полная история остаётся на сервере.

Веб-интерфейс позволяет просматривать входящие и исходящие сообщения, отправлять новые SMS и вручную запускать синхронизацию. Доступ защищён паролем, поддерживается двухфакторная аутентификация TOTP, ограничение попыток входа и защита запросов от подделки.

Отдельная часть проекта — механизм SMS-команд. Для доверенных телефонных номеров входящее сообщение может быть распознано как команда. Основное приложение проверяет аргументы и ограничения, после чего запускает внешний Bash- или Python-обработчик без использования командной оболочки. Текст, который обработчик выводит в стандартный поток вывода, становится ответным SMS.

Пользовательские команды подключаются через локальный файл commands.local.php и каталог scripts.local/. Для каждой команды можно задать псевдонимы, число и формат аргументов, время выполнения, максимальный размер результата и параметры журналирования. Благодаря этому можно подключать собственную диагностику или автоматизацию, не изменяя основной код проекта.

В комплект входят три базовые команды: проверка доступности узла, проверка TCP-порта и диагностика самого Huawei-модема.

Также реализованы контроль доступности модема, уведомления о потере и восстановлении связи, плановая перезагрузка Huawei и отправка уведомлений через Telegram, MAX и Matrix. Для Telegram и MAX поддерживается работа через прокси-сервер с авторизацией и возможность прямого подключения при недоступности прокси.

Конфигурация конкретной установки, доверенные номера, токены, пользовательские команды и локальные скрипты отделены от основного кода и не входят в публичный репозиторий.

Результат

Получился самостоятельный SMS-шлюз, который можно использовать как обычный веб-интерфейс для Huawei HiLink и одновременно как резервный канал автоматизации.

Сообщения больше не зависят от памяти модема и сохраняются в локальной базе, а добавление новых SMS-команд не требует изменения ядра приложения. Достаточно зарегистрировать команду и подключить собственный Bash- или Python-скрипт.

Проект прошёл проверку на реальном Huawei-модеме: приём и удаление сообщений из памяти устройства, хранение входящих и исходящих SMS, выполнение команд с доверенного номера, отправка ответов, проверка узлов и портов, а также диагностика параметров мобильной сети.

Huawei SMS опубликован как самостоятельный проект и не содержит настроек или скриптов, привязанных к конкретной инфраструктуре.