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