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
|
|||
|
|
```
|