generated from Dicken/dickendock
Fix: FritzBox faelschlich als Home Assistant erkannt + Reverse-DNS + Namens-Aenderungsvorschlaege beim Scan
This commit is contained in:
@@ -25,7 +25,7 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
|
||||
// erkennen, welche davon diesmal nicht mehr gefunden wurden ("stale").
|
||||
const servicesBeforeScan = serviceRepo.listServicesByDevice(device.id);
|
||||
|
||||
const discovered = await scanDeviceServices(device);
|
||||
const { services: discovered, suggestedHostname } = await scanDeviceServices(device);
|
||||
|
||||
// Jede erkannte Kategorie auch in der categories-Tabelle anlegen, damit
|
||||
// sie unter Admin -> Kategorien auftaucht und dort umbenannt/sortiert
|
||||
@@ -70,11 +70,28 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
|
||||
const foundPorts = new Set(discovered.map((d) => d.port));
|
||||
const staleServices = servicesBeforeScan.filter((s) => !foundPorts.has(s.port));
|
||||
|
||||
// Vorschläge für abweichende Namen/Kategorien bereits bekannter Dienste
|
||||
// einsammeln (siehe upsertServiceFromScan) - werden NICHT automatisch
|
||||
// übernommen, nur zur Bestätigung zurückgegeben.
|
||||
const nameChanges = results.flatMap((r) =>
|
||||
r.nameChanges.map((change) => ({
|
||||
serviceId: r.service.id,
|
||||
serviceHostname: r.service.hostname,
|
||||
servicePort: r.service.port,
|
||||
...change,
|
||||
}))
|
||||
);
|
||||
|
||||
// Gerätename-Vorschlag per Reverse-DNS, falls er sich vom aktuell
|
||||
// gespeicherten Hostnamen unterscheidet - ebenfalls nur zur Bestätigung.
|
||||
const deviceNameSuggestion =
|
||||
suggestedHostname && suggestedHostname !== device.hostname ? suggestedHostname : null;
|
||||
|
||||
logRepo.logScan({
|
||||
type: "device",
|
||||
targetId: device.id,
|
||||
level: "info",
|
||||
message: `${device.hostname} (${device.ip}): ${discovered.length} Dienst(e) gefunden (Ports: ${ports.join(", ") || "keine"}), ${created} neu, ${updated} aktualisiert${staleServices.length > 0 ? `, ${staleServices.length} nicht mehr gefunden` : ""}`,
|
||||
message: `${device.hostname} (${device.ip}): ${discovered.length} Dienst(e) gefunden (Ports: ${ports.join(", ") || "keine"}), ${created} neu, ${updated} aktualisiert${staleServices.length > 0 ? `, ${staleServices.length} nicht mehr gefunden` : ""}${nameChanges.length > 0 ? `, ${nameChanges.length} Namensänderung(en) vorgeschlagen` : ""}`,
|
||||
});
|
||||
|
||||
return {
|
||||
@@ -85,6 +102,8 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
|
||||
updated,
|
||||
services: results.map((r) => r.service),
|
||||
staleServices,
|
||||
nameChanges,
|
||||
deviceNameSuggestion,
|
||||
};
|
||||
} catch (err) {
|
||||
const detail = err instanceof Error ? err.message : String(err);
|
||||
|
||||
Reference in New Issue
Block a user