You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
New - automatic VPN recovery: with DSM_VPN_NAME set (and the new AUTO_RECOVER_VPN, default 1), the reconcile daemon runs recover-vpn by itself when the forwarded port tests closed 3 times in a row, instead of waiting for someone to notice the red chip and run the Task Scheduler script. While the port tests closed it is re-tested every 2 minutes, so a real outage is acted on in ~5 minutes. Rate-limited by AUTO_RECOVER_COOLDOWN_SEC (default 30 min) and AUTO_RECOVER_MAX_PER_6H (default 3); past the cap the shield logs an ERROR and stops redialing until the window frees up.
New - Transmission is never left stopped by a failed recovery: recover-vpn marks Transmission as held when it stops it; if the run then bails out (tunnel still up after disconnect, slow to come back, script interrupted, reboot mid-run), reconcile restarts Transmission as soon as the VPN, routes and ip rules are all in place - the same safety checks as AUTOSTART_TRANSMISSION. If the run left the profile disconnected (reconnect failed), the shield redials it every 5 minutes until the tunnel is back.
Fix: recover-vpn re-issues the disconnect once when VPN_IF is still up 15s after the first one, instead of giving up - seen live, where only a second manual run got through.
Fix: recover-vpn no longer touches the VPN when synopkg stop didn't actually stop Transmission (previously the failure was ignored, which could open a leak window on kernels without the kill switch), and two runs (automatic + manual) can no longer overlap.
Fix: the cached port-test result is dropped whenever a new transmission-daemon process is detected, whatever restarted it - previously only a successfulrecover-vpn run cleared it, so a manual start left a stale "closed" in the UI for up to 10 minutes.
Fix: /usr/syno/bin is added to PATH by the shared library, so synopkg is found even from contexts with a minimal PATH (plain ssh host command, some Task Scheduler runs).
Change: the "failed to set Transmission peer-port via RPC" warning is logged once after 3 consecutive failures (plus a line when pushes work again), instead of every 30 seconds while Transmission is restarting or stopped.
Tests + CI: new suites for recover-vpn (disconnect retry, stuck tunnel, failed stop/connect, lock handling, shield stopped mid-run), postinst (upgrade migration of guard.conf), the web UI alerts and the Kuma push verdict, on top of new reconcile coverage for the closed-port streak, automatic recovery and Transmission resume. A new Tests GitHub workflow runs all of them on every pull request and push to main, and the release build now only starts once they pass. Every suite runs against an isolated PKG_DIR, so running them on a NAS with the shield installed never writes into the live package's var/.
Fix: the closed-port streak is tied to the port it was counted for, so changing FORWARDED_PORT starts a new streak; a recovery lock left behind by a reboot no longer blocks automatic recovery when its PID gets reused by another process; and stopping the shield while a recovery is finishing can no longer leave Transmission running without the shield's rules.