Files

88 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

2026-05-25 14:16:59 +03:00
# 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
```