Skip to content

Add generated URL validation and reachability checks #52

Description

@rroy676

Goal

Add validation and reachability checks for generated M3U/XMLTV URLs so users can confirm their downstream apps will be able to access Stationarr outputs.

Problem

Users often struggle with generated URLs when Stationarr, Plex, Channels DVR, Jellyfin, or other clients are hosted on different machines, networks, reverse proxies, or Tailscale addresses.

Common pain points include:

- generated URL works in the browser but not from the client app
- wrong base URL
- wrong port
- reverse proxy path problems
- client cannot reach LAN IP from another location
- Tailscale URL should be used instead of public/LAN URL
- XMLTV URL is reachable but M3U URL is not, or vice versa

Expected behaviour

Add a way to validate generated URLs before the user copies them into another app.

Suggested checks:

- URL format is valid
- selected base URL is configured
- M3U URL returns a successful response
- XMLTV URL returns a successful response
- response content looks like M3U/XMLTV
- warnings if BASE_URL points to localhost or an unreachable container-only hostname
- warnings if public/LAN/Tailscale URL mode may not match the selected client use case

Suggested UI

In the Serve / generated output modal:

M3U URL       [Copy] [Test]
XMLTV URL     [Copy] [Test]

Result:
- M3U reachable: yes
- XMLTV reachable: yes
- Notes/warnings

When #41 exists, this should work with:

- Local/LAN URL
- Public URL
- Tailscale URL

Validation

  • Generate URLs using the local base URL and test them.
  • Generate URLs using a public base URL and test them.
  • Generate URLs using a Tailscale base URL when configured and test them.
  • Confirm Stationarr warns when a URL uses localhost or an obviously wrong host.
  • Confirm M3U/XMLTV content is detected correctly.

Related

Related to #41 Tailscale base URL support and #51 client compatibility presets.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions