Исправлены имена полей Keenetic RCI:
allowed-ips → allowed-address
persistent-keepalive → keepalive
Добавлен GET существующего Wireguard0 в лог для проверки формата.
Keenetic требует последовательную нумерацию WireguardN (0,1,2...).
Теперь сканируем существующие nwg0..nwg20, берём max+1 — гарантированно
свободный индекс без конфликтов с Polsh/AM/etc.
Fallback ip-link по-прежнему использует nwg50+ для разделения.
- Парсим realm+challenge из JSON-тела GET /auth (не из HTTP-заголовков)
- Вычисляем хеш: MD5("admin:realm:pass") → MD5(hash+challenge)
- Нумерация интерфейсов начинается с 50 (nwg50, nwg51...) чтобы не затирать существующие
- Fallback: ip link add nwgN + wg set + init.d S50hydravpn при неудаче RCI
ndmc без PTY принимает stdin но не применяет конфигурационные команды
(system failed 0xcffd00cc) — это не баг синтаксиса, а ограничение TTY.
RCI HTTP API — то же что использует веб-интерфейс:
- Auth: MD5(admin:realm:pass) + MD5(hash+challenge) через /auth
- Конфиги Wireguard0-5 собираются в Python (json.dumps, без escaping)
и встраиваются в скрипт как heredoc-файлы
- Автоподбор свободного индекса Wireguard0-5 через /rci/show/interface/
- Fallback: raw wg+ip (wg0, работает но не виден в Keenetic UI)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Убрать kmod-wireguard из opkg (не существует, ядро Keenetic уже имеет WireGuard)
- ndmc теперь основной путь (нативная интеграция в Keenetic UI), а не fallback
- Fallback: raw wg set + ip link/addr (без wg-quick, которого нет в Entware)
- init.d S50wg0 использует wg + ip вместо wg-quick
- Приватный ключ пишется в отдельный файл wg0.key для wg set private-key
- Убрать set -e — чтобы fallback-пути не прерывали скрипт
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Новая вкладка «🔒 WireGuard VPN» в панели
- Авто-установка WireGuard сервера на VPS (apt + systemd wg-quick@wg0)
- Генерация ключевых пар (сервер + клиент на каждый роутер)
- Выдача IP из подсети 10.8.0.0/24
- Деплой на роутер по SSH: opkg install wireguard-tools + wg-quick + init.d
- Попытка нативной интеграции через Keenetic CLI (ndmc) — роутер появится
в «Приоритетах подключений»; fallback на wg-quick если ndmc недоступен
- Просмотр и копирование конфигов (wg0.conf для VPS и для каждого роутера)
- Добавление/удаление пиров с авто-обновлением wg0.conf на VPS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace setsid/nohup with start-stop-daemon -S -b as primary daemon
method (setsid fails silently when script runs inside curl|sh pipe)
- Same fix in init.d S99hydra_tun start/restart cases
- Add "✓ Готово" button to tunnel modal to close it after setup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>