Release 3.9.0+3: subscription-URL routing, emoji flags, Remnawave provisioning.

Route credential-less http(s) URLs pasted into the add-link field to
subscription import (fixes remaining 'proxy URI missing username').
Extend geoflag with RU country names and city hints; live Remnawave
names already carrying emoji flags are kept as-is. Add admin
provisioning via configs/remnawave-api.json (GET by-username / POST
users, 50 GB MONTH plan) and the «Выдать доступ» UI panel.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Navis
2026-08-01 17:36:54 +03:00
co-authored by Cursor
parent e34312ef9c
commit 77bd7da861
24 changed files with 974 additions and 110 deletions
+23
View File
@@ -230,6 +230,29 @@ build.bat
Токены хранятся только локально в `configs/config.json` (не коммитьте).
### Выдача доступа из приложения (admin API)
Приложение умеет само создавать пользователей в панели Remnawave и сразу импортировать их конфиги (панель «Выдать доступ» в интерфейсе). Для этого нужен **отдельный** файл с админ-ключом:
1. Скопируйте `configs/remnawave-api.example.json``configs/remnawave-api.json`.
2. Вставьте `panel_url` и `api_token` (панель → API Tokens). `caddy_api_key` — только если панель за Caddy-auth.
3. Перезапустите Navis — появится панель «Выдать доступ».
Файл читается **в рантайме** из папки `configs` рядом с `config.json` — пересборка (repack) не требуется, достаточно положить файл и перезапустить приложение.
Тариф по умолчанию (настраивается в блоке `provision`):
| Поле | Значение по умолчанию |
|------|----------------------|
| `traffic_gb` | 50 ГБ |
| `days` | 30 дней (expireAt = сейчас + days) |
| `strategy` | `MONTH` (сброс трафика; также `NO_RESET` / `DAY` / `WEEK`) |
| `hwid_device_limit` | 0 = без лимита устройств |
Логика: `GET /api/users/by-username/{username}` — если пользователь есть, берётся его `subscriptionUrl`; иначе `POST /api/users` с тарифом выше, затем подписка импортируется в приложение автоматически.
`configs/remnawave-api.json` в `.gitignore`**никогда не коммитьте** реальный ключ, в репозитории только `remnawave-api.example.json`.
## Сборка macOS (кросс с Windows / Linux)
```bat