88 lines
3.3 KiB
Markdown
88 lines
3.3 KiB
Markdown
# 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
|
||
``` |