generated from Dicken/dickendock
Fix: visible-Flag für Scan-Müll, editierbare Hostname/Port/HTTPS, Sidebar fixiert, Suche nur bei Eingabe
This commit is contained in:
@@ -18,6 +18,23 @@ export interface DiscoveredService {
|
||||
suggestedDisplayName: string;
|
||||
category?: string;
|
||||
icon?: string;
|
||||
/** Startwert für neu angelegte Dienste: false bei Fehlerseiten/generischen Ladetiteln. */
|
||||
visible: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erkennt generische/nichtssagende Titel, die keine sinnvolle Dienst-
|
||||
* Bezeichnung abgeben: HTTP-Statuszeilen ("404 Not Found", "302 Found") und
|
||||
* Lade-/Weiterleitungsplatzhalter (der Scanner führt kein JavaScript aus,
|
||||
* sieht bei manchen Web-UIs also nur den Ladebildschirm statt des echten Titels).
|
||||
*/
|
||||
function isLikelyJunkTitle(title: string | undefined): boolean {
|
||||
if (!title) return true;
|
||||
const trimmed = title.trim();
|
||||
if (trimmed.length === 0) return true;
|
||||
if (/^\d{3}\b/.test(trimmed)) return true; // "404 Not Found", "400 ...", "302 Found"
|
||||
if (/^(loading|lädt|please wait|redirecting|weiterleitung)/i.test(trimmed)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,6 +68,14 @@ export async function scanDeviceServices(
|
||||
port,
|
||||
});
|
||||
|
||||
const titleIsJunk = isLikelyJunkTitle(probe.title);
|
||||
const fallbackName = `${address}:${port}`;
|
||||
|
||||
// Nur sichtbar, wenn Software erkannt wurde oder eine erfolgreiche Antwort
|
||||
// (Status < 400) mit einem brauchbaren Titel vorliegt. Fehlerseiten und
|
||||
// Ladebildschirme landen als ausgeblendeter Dienst im Adminbereich.
|
||||
const visible = !!software || (probe.ok && !titleIsJunk);
|
||||
|
||||
found.push({
|
||||
hostname: address,
|
||||
url: baseUrl,
|
||||
@@ -58,9 +83,10 @@ export async function scanDeviceServices(
|
||||
port,
|
||||
favicon: probe.faviconUrl,
|
||||
description: software ? `${software.name} (automatisch erkannt)` : probe.title,
|
||||
suggestedDisplayName: software?.name ?? probe.title ?? `${address}:${port}`,
|
||||
suggestedDisplayName: software?.name ?? (titleIsJunk ? fallbackName : probe.title ?? fallbackName),
|
||||
category: software?.category,
|
||||
icon: software?.icon,
|
||||
visible,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user