fix: use start-stop-daemon for autossh background launch + add close button

- 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>
This commit is contained in:
Андрей Бобырев
2026-04-28 10:22:19 +03:00
parent 9ff5c61551
commit cc20329798
2 changed files with 13 additions and 3 deletions

View File

@@ -445,9 +445,16 @@ chmod +x /opt/bin/hydra_tun
cat > /opt/etc/init.d/S99hydra_tun <<'INITEOF'
#!/bin/sh
case "$1" in
start) killall -0 autossh 2>/dev/null || ( nohup /opt/bin/hydra_tun </dev/null >/dev/null 2>&1 & ) ;;
start)
killall -0 autossh 2>/dev/null && exit 0
/opt/sbin/start-stop-daemon -S -b -x /opt/bin/hydra_tun 2>/dev/null || \
( nohup /opt/bin/hydra_tun </dev/null >/dev/null 2>&1 & )
;;
stop) killall autossh 2>/dev/null ;;
restart) killall autossh 2>/dev/null; sleep 1; ( nohup /opt/bin/hydra_tun </dev/null >/dev/null 2>&1 & ) ;;
restart) killall autossh 2>/dev/null; sleep 1
/opt/sbin/start-stop-daemon -S -b -x /opt/bin/hydra_tun 2>/dev/null || \
( nohup /opt/bin/hydra_tun </dev/null >/dev/null 2>&1 & )
;;
esac
INITEOF
chmod +x /opt/etc/init.d/S99hydra_tun
@@ -456,7 +463,9 @@ echo '[4/4] Запуск...'
killall autossh 2>/dev/null || true
sleep 1
rm -f /tmp/hydra_tun.log
if command -v setsid >/dev/null 2>&1; then
if /opt/sbin/start-stop-daemon -S -b -x /opt/bin/hydra_tun 2>/dev/null; then
:
elif command -v setsid >/dev/null 2>&1; then
setsid /opt/bin/hydra_tun </dev/null >/dev/null 2>&1 &
else
( nohup /opt/bin/hydra_tun </dev/null >/dev/null 2>&1 & )

View File

@@ -232,6 +232,7 @@ input[type=text]:focus,input[type=password]:focus{border-color:var(--accent)}
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap;align-items:center">
<button class="btn btn-b" onclick="checkTunnelStatus()" style="font-size:12px">⟳ Проверить связь</button>
<button class="btn" onclick="closeTunnel()" style="font-size:12px;background:var(--green);color:#fff">✓ Готово</button>
<span id="tun-status" style="font-size:12px;color:var(--muted)"></span>
</div>
<div style="margin-top:14px;font-size:11px;color:var(--muted)">