Vassiliy Yegorov 6c5c81e033
All checks were successful
Build SMS Gateway / Build image (push) Successful in 16s
fix front
2026-02-02 07:31:48 +07:00
2026-02-02 05:55:48 +07:00
2026-01-19 18:49:45 +07:00
2026-01-19 18:49:45 +07:00
2026-02-02 07:20:37 +07:00
2026-01-19 18:44:24 +07:00
2026-02-02 05:55:48 +07:00
2026-01-19 21:04:12 +07:00
2026-01-19 19:26:57 +07:00
2026-02-02 05:55:48 +07:00
2026-01-19 18:44:24 +07:00
fix
2026-02-02 06:30:13 +07:00
2026-02-02 07:31:48 +07:00
2026-02-02 07:31:48 +07:00

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

Ответ:

{
  "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
  • 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
Description
No description provided
Readme 72 KiB
Languages
HTML 59.3%
JavaScript 38.6%
Dockerfile 2.1%