mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 09:06:14 +00:00
Adds `soundtouch-cli setup enable-ssh`, the first iteration of foob61451's #471: turn on SSH on a speaker that has no prior SSH access and without a USB recovery stick, then fall into the migration / CA-install flow we already have. Mechanism (new Manager methods, reusing the existing telnet :17000 client): - EnableSSHViaTelnet sends `envswitch boseurls set "<url>;touch /tmp/remote_services;/etc/init.d/sshd start" "<url>/update"`. The injected shell commands run when the speaker next parses its boseurls (~60s), starting sshd. The URL is only the vehicle for the injection — it does NOT need a live server, so this works before any AfterTouch service exists. - WaitForSSHPort polls :22 until sshd is up. - ResetBoseURLs restores a clean marge URL afterwards. - Persistence reuses the existing EnsureRemoteServices (writes the marker over the now-open SSH so it survives reboot). CLI flow: inject → wait for :22 → reset clean URLs → persist. `--service-url` is optional (placeholder used otherwise; set real URLs later via migration). Securing/closing port 17000 is deliberately OPT-IN and not done here. Unit tests pin the exact injected/reset command strings and the double-quote guard. This lands in -cli first (cheapest to iterate); the future soundtouch-app can reuse the same Manager methods. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>