Files
sms-otp-gateway/README.md
Vassiliy Yegorov 1fc17991ae
All checks were successful
Build SMS Gateway / Build image (push) Successful in 30s
add balance
2026-02-02 05:55:48 +07:00

4.6 KiB
Raw Blame History

SMS OTP Gateway

Легковесный сервис для логирования SMS-сообщений. Принимает запросы в формате SMS-провайдера и сохраняет их в локальный файл для просмотра.

Требования

  • Docker и Docker Compose

Быстрый старт

# Сборка и запуск
docker-compose up -d --build

# Просмотр логов
docker-compose logs -f

# Остановка
docker-compose down

Сервис будет доступен на http://localhost:3000

API

POST /send-msg

Принимает SMS-сообщение и сохраняет в протокол.

Content-Type: application/x-www-form-urlencoded

Параметры:

Параметр Тип Описание
login string Логин отправителя
psw string Пароль
phones string Номер телефона
mes string Текст сообщения

Пример запроса:

curl -X POST http://localhost:3000/send-msg \
  -d "login=admin&psw=secret&phones=+79001234567&mes=Your code: 1234"

Ответ (успех):

{
  "status": "ok",
  "id": 1705678901234
}

Ответ (неверные credentials):

{
  "error": "Invalid credentials"
}

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

Ответ:

{
  "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/send-msg
  • GET /sms/view-all-sms
  • POST /sms/clear-all-sms
  • GET /sms/balance
  • GET /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