init
All checks were successful
Build SMS Gateway / Build image (push) Successful in 19s

This commit is contained in:
2026-01-19 18:44:24 +07:00
commit c49851de8b
11 changed files with 514 additions and 0 deletions

171
README.md Normal file
View 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
```