All checks were successful
Build SMS Gateway / Build image (push) Successful in 11s
180 lines
4.3 KiB
Markdown
180 lines
4.3 KiB
Markdown
# SMS OTP Gateway
|
||
|
||
Легковесный сервис для логирования SMS-сообщений. Принимает запросы в формате SMS-провайдера и сохраняет их в локальный файл для просмотра.
|
||
|
||
## Требования
|
||
|
||
- Docker и Docker Compose
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
# Сборка и запуск
|
||
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 | Текст сообщения |
|
||
|
||
**Пример запроса:**
|
||
|
||
```bash
|
||
curl -X POST http://localhost:3000/send-msg \
|
||
-d "login=admin&psw=secret&phones=+79001234567&mes=Your code: 1234"
|
||
```
|
||
|
||
**Ответ (успех):**
|
||
|
||
```json
|
||
{
|
||
"status": "ok",
|
||
"id": 1705678901234
|
||
}
|
||
```
|
||
|
||
**Ответ (неверные credentials):**
|
||
|
||
```json
|
||
{
|
||
"error": "Invalid credentials"
|
||
}
|
||
```
|
||
|
||
### 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"
|
||
}
|
||
```
|
||
|
||
## Веб-интерфейс
|
||
|
||
Доступен по адресу `http://localhost:3000`
|
||
|
||
Функции:
|
||
- Просмотр всех сообщений в реальном времени (автообновление каждые 5 сек)
|
||
- Ручное обновление списка
|
||
- Очистка всех сообщений
|
||
|
||
## Хранение данных
|
||
|
||
Сообщения сохраняются в файл `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-msg`
|
||
- `GET /sms/view-all-sms`
|
||
- `POST /sms/clear-all-sms`
|
||
- `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
|
||
```
|