4.9 KiB
SMS OTP Gateway
Легковесный сервис для логирования SMS-сообщений. Принимает запросы в формате SMSC.ru API и сохраняет их в локальный файл для просмотра.
Требования
- Docker и Docker Compose
Быстрый старт
# Сборка и запуск
docker-compose up -d --build
# Просмотр логов
docker-compose logs -f
# Остановка
docker-compose down
Сервис будет доступен на http://localhost:3000
API
Формат ответов совместим с SMSC.ru API.
POST /send
Принимает SMS-сообщение и сохраняет в протокол.
Content-Type: application/x-www-form-urlencoded
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
| login | string | Логин отправителя |
| psw | string | Пароль |
| phones | string | Номер телефона |
| mes | string | Текст сообщения |
Пример запроса:
curl -X POST http://localhost:3000/send \
-d "login=admin&psw=secret&phones=+79001234567&mes=Your code: 1234"
Ответ (успех):
{
"id": 1705678901234,
"cnt": 1
}
Ответ (ошибка авторизации):
{
"error": "Ошибка авторизации",
"error_code": 2
}
Ответ (отсутствуют параметры):
{
"error": "Отсутствуют обязательные параметры",
"error_code": 1
}
GET /view-all-sms
Возвращает все сохраненные сообщения.
Пример запроса:
curl http://localhost:3000/view-all-sms
Ответ:
{
"messages": [
{
"id": 1705678901234,
"timestamp": "2025-01-19T12:00:00.000Z",
"login": "user",
"phone": "+79001234567",
"message": "Your code: 1234"
}
]
}
POST /clear-all-sms
Очищает все сохраненные сообщения.
Пример запроса:
curl -X POST http://localhost:3000/clear-all-sms
Ответ:
{
"status": "ok",
"message": "All messages cleared"
}
GET /balance
Пример запроса:
curl http://localhost:3000/balance.php
Ответ:
{
"balance": "1000.00"
}
Веб-интерфейс
Доступен по адресу http://localhost:3000
Функции:
- Просмотр всех сообщений в реальном времени (автообновление каждые 5 сек)
- Отображение текущего баланса (автообновление каждые 30 сек)
- Ручное обновление списка
- Очистка всех сообщений
Хранение данных
Сообщения сохраняются в файл data/base.json. Директория data/ монтируется как volume, данные сохраняются между перезапусками контейнера.
Конфигурация
| Переменная | По умолчанию | Описание |
|---|---|---|
| PORT | 3000 | Порт сервера |
| SMS_LOGIN | - | Логин для авторизации (обяз) |
| SMS_PASSWORD | - | Пароль для авторизации (обяз) |
| BASE_PATH | / | Базовый путь для всех роутов |
Пример настройки в docker-compose.yml:
environment:
- SMS_LOGIN=admin
- SMS_PASSWORD=secret
- BASE_PATH=/sms
При BASE_PATH=/sms все эндпоинты будут доступны по путям:
POST /sms/sendGET /sms/view-all-smsPOST /sms/clear-all-smsGET /sms/balance.phpGET /sms/- веб-интерфейс
Изменение порта в docker-compose.yml:
services:
sms-gateway:
ports:
- "8080:3000" # внешний:внутренний
Структура проекта
sms-opt-gateway/
├── server.js # Express сервер
├── package.json # Зависимости
├── Dockerfile # Docker образ
├── docker-compose.yml # Compose конфигурация
├── .dockerignore
├── public/
│ └── index.html # Веб-интерфейс
└── data/
└── base.json # Хранилище сообщений
Локальная разработка
# Установка зависимостей
npm install
# Запуск
npm start