From f87cddbd215d94816009d831fbe7da95495e093b Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sat, 12 Sep 2026 16:13:20 +0200 Subject: [PATCH] Probe: die Fehlerseiten stammen nicht von Plex MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zehn Runden lang habe ich die Antwort gelesen, ohne sie anzusehen: Bad Request

400 Bad Request

So antwortet Plex nicht. Plex schickt XML oder JSON. Das ist die Standardseite eines Webservers. Dazu passt, dass ping und stop mit 404 antworten, obwohl es sie in jedem Plex gibt. Die Anfragen erreichen Plex also womöglich gar nicht, sondern werden davor abgewiesen — vom Router, vom Webserver des NAS oder einem Proxy. Das erklärt, warum wirklich jede Variante scheitert, auch die minimalste, und warum eine gewöhnliche Datei genauso betroffen ist. Der Probe zeigt jetzt alle Wege zum Server und nimmt mit `--local` den lokalen. Geht es dort, liegt es an dem, was von außen dazwischensteht, und nicht an Flixy. Co-Authored-By: Claude Opus 5 --- .../FlixyKit/Sources/FlixyProbe/main.swift | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Packages/FlixyKit/Sources/FlixyProbe/main.swift b/Packages/FlixyKit/Sources/FlixyProbe/main.swift index 1af5119..360c58f 100644 --- a/Packages/FlixyKit/Sources/FlixyProbe/main.swift +++ b/Packages/FlixyKit/Sources/FlixyProbe/main.swift @@ -54,12 +54,29 @@ let directory = PlexServerDirectory(identity: identity, token: token) let servers = try await directory.servers() guard let resource = servers.first else { fatalError("Kein Server am Konto.") } +// Welche Wege es zu diesem Server gibt. Die Fehlerseiten sehen nicht nach +// Plex aus, sondern nach einem Webserver davor — dann macht es einen +// Unterschied, ob die Anfrage durch die Portweiterleitung geht oder direkt. +print("Wege zu \(resource.name):") +for candidate in resource.connections { + print(" \(candidate.local ? "lokal " : "entfernt") \(candidate.uri)") +} + +let forceLocal = CommandLine.arguments.contains("--local") let selector = PlexConnectionSelector(identity: identity) -guard let connection = await selector.selectConnection(for: resource), + +let chosen: PlexConnection? +if forceLocal { + chosen = resource.connections.first { $0.local } +} else { + chosen = await selector.selectConnection(for: resource) +} + +guard let connection = chosen, let server = PlexServer(resource: resource, connection: connection, identity: identity) else { fatalError("Kein Weg zu \(resource.name) erreichbar.") } -print("Server: \(resource.name) über \(connection.local ? "lokal" : "entfernt")\n") +print("\nGenommen: \(connection.local ? "lokal" : "entfernt") — \(connection.uri)\n") // MARK: - Freie Abfrage