# 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 ` лимит снимается. ## Генерация 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 " \ -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 ```