Skip to content

feat: add Telnet port 17000 support for Wave SoundTouch IV (#352)#355

Open
scheilch wants to merge 2 commits into
mainfrom
feat/352-wave-telnet-support
Open

feat: add Telnet port 17000 support for Wave SoundTouch IV (#352)#355
scheilch wants to merge 2 commits into
mainfrom
feat/352-wave-telnet-support

Conversation

@scheilch

Copy link
Copy Markdown
Collaborator

Summary

Adds backend support for configuring Wave SoundTouch IV devices via Telnet port 17000. These devices don't support USB provisioning/SSH — Telnet is the only configuration method.

Changes

New: TelnetConfigService (setup/telnet_config_service.py)

  • configure_urls() — sends sys configuration commands for all 4 URLs + envswitch boseurls set
  • verify_configuration() — reads getpdo CurrentSystemConfiguration, parses XML response
  • reboot() — sends sys reboot
  • Built on existing SoundTouchTelnetClient from ssh_client.py

New Endpoints (wizard_routes.py)

  • POST /wizard/telnet-configure — configure device via Telnet (IP + OCT host)
  • POST /wizard/telnet-verify — verify current device configuration

Extended: Connectivity Check (service.py)

  • check_device_connectivity() now returns telnet_available and setup_method ("ssh" | "telnet" | "none")

Security

  • Input validation on oct_host and device_ip (Pydantic validators + defense-in-depth in constructor)
  • Newline/command injection prevention
  • Telnet no-auth documented in module docstring

Test Results

  • Backend: All tests pass (2135+)
  • 38 new tests: configure/verify/reboot flows, command string validation, input validation, connectivity checks
  • All pre-commit/pre-push hooks: Passed

Frontend

Backend-only for now. Frontend wizard integration (conditional step rendering for Telnet devices) will follow as separate PR.

Device Testing Required

  • Wave SoundTouch IV (Telnet port 17000)
  • Verify envswitch boseurls set command syntax on real device
  • Verify getpdo CurrentSystemConfiguration XML parsing

Related

- New TelnetConfigService for device configuration via sys commands
- New endpoints: POST /wizard/telnet-configure, POST /wizard/telnet-verify
- Extend connectivity check with telnet_available + setup_method fields
- Input validation: oct_host and device_ip validated against injection
- envswitch boseurls set command with correct syntax per manual guide
- Add 38 new tests (26 base + 12 review fixes)

Closes #352
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

✅ CI Passed

Job Status
Mojibake Check ✅ success
Commit Lint ✅ success
Security Scan ✅ success
License Check ✅ success
Lint ✅ success
Backend Tests ✅ success
Frontend Tests ✅ success
E2E Tests ✅ success

🔗 Full details

@sonarqubecloud

Copy link
Copy Markdown

@torstenhoppe

Copy link
Copy Markdown

Is there a way to contribute with testing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Telnet Port 17000 support for Wave SoundTouch IV

3 participants