This commit is contained in:
171
README.md
Normal file
171
README.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# 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 | - | Пароль для авторизации (обяз)|
|
||||
|
||||
Переменные `SMS_LOGIN` и `SMS_PASSWORD` задаются в `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- SMS_LOGIN=admin
|
||||
- SMS_PASSWORD=secret
|
||||
```
|
||||
|
||||
Изменение порта в 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
|
||||
```
|
||||
Reference in New Issue
Block a user