Files
1c-lic-decoder-web/readme.md
2026-05-25 14:16:59 +03:00

88 lines
3.3 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.
# Lic Decoder
Web-утилита для извлечения регистрационных данных из файлов лицензий 1С:Предприятие (.lic). Позволяет восстановить PIN-код, данные владельца и другую информацию, если файл LicData.txt был утерян.
## Запуск через Docker
1. Задайте секрет JWT в `.env` или напрямую в `docker-compose.yml`:
```bash
echo "JWT_SECRET=your-strong-random-secret" > .env
```
2. Запустите:
```bash
docker compose up -d
```
Приложение будет доступно на `http://localhost:3080`.
## Переменные окружения
| Переменная | По умолчанию | Описание |
|-----------------|-----------------------------|---------------------------------------|
| `JWT_SECRET` | `change-me-to-a-strong-secret` | Секрет для подписи/проверки JWT |
| `PORT` | `3000` | Порт внутри контейнера |
| `UPLOAD_DIR` | `/tmp/lic-decoder-uploads` | Директория для загрузок |
| `TMP_BASE` | `/tmp/lic-decoder` | Базовая директория временных файлов |
| `RING_CMD` | `ring` | Путь к команде ring |
## Rate Limits
Без JWT-токена: **3 декодирования в час** на один IP-адрес. IP берётся из заголовков реверс-прокси (`X-Forwarded-For`).
С валидным JWT-токеном в заголовке `Authorization: Bearer <token>` лимит снимается.
## Генерация JWT-токена
```bash
JWT_SECRET="your-strong-random-secret" node -e "
const jwt = require('jsonwebtoken');
console.log(jwt.sign({}, process.env.JWT_SECRET, { expiresIn: '30d' }));
"
```
## API
Полная документация: [API.md](API.md)
### Кратко
| Метод | Путь | Описание | Auth | Rate Limit |
|--------|---------------|-----------------------------------|-------|------------|
| GET | `/api/status` | Проверка готовности системы | нет | нет |
| POST | `/api/decode` | Декодирование .lic файла | опц. | 3/час* |
| GET | `/api/docs` | API документация (JSON) | нет | нет |
\* без JWT; с JWT — без лимита
### Примеры
```bash
# Проверка статуса
curl http://localhost:3080/api/status
# Декодирование (без JWT — считается в rate limit)
curl -F "license=@license.lic" http://localhost:3080/api/decode
# Декодирование (с JWT — без rate limit)
curl -H "Authorization: Bearer <your-token>" \
-F "license=@license.lic" \
http://localhost:3080/api/decode
# Подробный режим
curl -F "license=@license.lic" -F "detailed=true" http://localhost:3080/api/decode
```
## Локальная установка (без Docker)
Необходимы:
- JRE 11+
- 1C:Enterprise License Tools (ring)
```bash
cd web
npm install
JWT_SECRET=your-secret npm run dev
```