mirror of
https://github.com/andrey271192/domen_hydra.git
synced 2026-09-21 14:51:59 +00:00
fix: RCI — allowed-address/keepalive + диагностика существующего Wireguard0
Исправлены имена полей Keenetic RCI: allowed-ips → allowed-address persistent-keepalive → keepalive Добавлен GET существующего Wireguard0 в лог для проверки формата.
This commit is contained in:
@@ -744,42 +744,39 @@ if [ -n "$REALM" ] && [ -n "$CHAL" ]; then
|
|||||||
-d '{{"login":"admin","password":"'"$RESP"'"}}')
|
-d '{{"login":"admin","password":"'"$RESP"'"}}')
|
||||||
echo "Login: $LOGIN"
|
echo "Login: $LOGIN"
|
||||||
|
|
||||||
|
echo "=== Существующий Wireguard0 (для проверки формата) ==="
|
||||||
|
curl -s -b /tmp/rci.jar 'http://localhost/rci/interface/Wireguard0' 2>/dev/null | head -c 800
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Найти следующий свободный последовательный индекс WireGuard
|
# Найти следующий свободный последовательный индекс WireGuard
|
||||||
# Keenetic требует последовательную нумерацию: 0,1,2...
|
|
||||||
# nwgN = WireguardN в RCI
|
|
||||||
MAX_WG=-1
|
MAX_WG=-1
|
||||||
for i in $(seq 0 20); do
|
for i in $(seq 0 20); do
|
||||||
wg show nwg$i >/dev/null 2>&1 && MAX_WG=$i
|
wg show nwg$i >/dev/null 2>&1 && MAX_WG=$i
|
||||||
done
|
done
|
||||||
WG_IDX=$((MAX_WG + 1))
|
WG_IDX=$((MAX_WG + 1))
|
||||||
echo "Существующие интерфейсы до nwg${{MAX_WG}}, создаём Wireguard${{WG_IDX}} (nwg${{WG_IDX}})"
|
echo "Создаём Wireguard${{WG_IDX}} (nwg${{WG_IDX}})"
|
||||||
|
|
||||||
# JSON для RCI: создать WireGuard интерфейс
|
# JSON с правильными именами полей Keenetic: allowed-address, keepalive
|
||||||
cat > /tmp/wg_rci.json << RCIEOF
|
cat > /tmp/wg_rci.json << RCIEOF
|
||||||
{{"interface":{{"Wireguard${{WG_IDX}}":{{"description":"HydraVPN","up":true,"address":[{{"ip":"{client_ip}","mask":"255.255.255.255"}}],"wireguard":{{"private-key":"{priv_key_sh}","peer":[{{"public-key":"{pub_key_sh}","endpoint":{{"address":"{vps_host}","port":{port}}},"allowed-ips":[{{"ip":"0.0.0.0","mask":"0.0.0.0"}}],"persistent-keepalive":25}}]}}}}}}}}
|
{{"interface":{{"Wireguard${{WG_IDX}}":{{"description":"HydraVPN","up":true,"address":[{{"ip":"{client_ip}","mask":"255.255.255.255"}}],"wireguard":{{"private-key":"{priv_key_sh}","peer":[{{"public-key":"{pub_key_sh}","endpoint":{{"address":"{vps_host}","port":{port}}},"allowed-address":[{{"ip":"0.0.0.0","mask":"0.0.0.0"}}],"keepalive":25}}]}}}}}}}}
|
||||||
RCIEOF
|
RCIEOF
|
||||||
echo "RCI JSON: $(cat /tmp/wg_rci.json)"
|
echo "RCI JSON: $(cat /tmp/wg_rci.json)"
|
||||||
|
|
||||||
CFG=$(curl -s -b /tmp/rci.jar -X POST http://localhost/rci/ \\
|
CFG=$(curl -s -b /tmp/rci.jar -X POST http://localhost/rci/ \\
|
||||||
-H 'Content-Type: application/json' \\
|
-H 'Content-Type: application/json' \\
|
||||||
--data-binary @/tmp/wg_rci.json)
|
--data-binary @/tmp/wg_rci.json)
|
||||||
echo "RCI Config response: $CFG"
|
echo "RCI response: $CFG"
|
||||||
|
|
||||||
# Сохранить конфиг
|
|
||||||
curl -s -b /tmp/rci.jar -X POST http://localhost/rci/ \\
|
curl -s -b /tmp/rci.jar -X POST http://localhost/rci/ \\
|
||||||
-H 'Content-Type: application/json' \\
|
-H 'Content-Type: application/json' \\
|
||||||
-d '{{"system":{{"configuration":{{"save":true}}}}}}' >/dev/null
|
-d '{{"system":{{"configuration":{{"save":true}}}}}}' >/dev/null
|
||||||
|
|
||||||
# Проверить, что интерфейс реально создался
|
|
||||||
sleep 2
|
sleep 2
|
||||||
if wg show nwg${{WG_IDX}} >/dev/null 2>&1; then
|
if wg show nwg${{WG_IDX}} >/dev/null 2>&1; then
|
||||||
DONE=1
|
DONE=1
|
||||||
echo "OK: Wireguard${{WG_IDX}} (nwg${{WG_IDX}}) создан в Keenetic — виден в UI"
|
echo "OK: Wireguard${{WG_IDX}} (nwg${{WG_IDX}}) создан — виден в UI"
|
||||||
elif printf '%s' "$CFG" | grep -v '"error"' | grep -q '"Wireguard'; then
|
|
||||||
DONE=1
|
|
||||||
echo "OK: RCI принял конфиг Wireguard${{WG_IDX}}"
|
|
||||||
else
|
else
|
||||||
echo "RCI не создал интерфейс"
|
echo "RCI не создал интерфейс. Смотри response выше."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
rm -f /tmp/rci.jar /tmp/wg_rci.json 2>/dev/null
|
rm -f /tmp/rci.jar /tmp/wg_rci.json 2>/dev/null
|
||||||
|
|||||||
Reference in New Issue
Block a user