Initial commit
This commit is contained in:
88
readme.md
Normal file
88
readme.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user