Files
sms-otp-gateway/README.md
Vassiliy Yegorov f72f335807
All checks were successful
Build SMS Gateway / Build image (push) Successful in 19s
fix
2026-02-02 06:30:13 +07:00

210 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
**Ответ:**
```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`
- `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
```