generated from Dicken/dickendock
round49: masscan/httpx-Timeout-Erkennung und Nebenlaeufigkeits-Begrenzung, httpx verwirft offene Ports nicht mehr, FritzBox-Namens-Downgrade auf Platzhalter verhindert
This commit is contained in:
@@ -394,8 +394,31 @@ function mergeFritzboxHosts(hosts: FritzBoxHost[]): FritzBoxHost[] {
|
||||
// Vorschläge für abweichende Hostnamen/IPs bereits bekannter Geräte
|
||||
// einsammeln (siehe upsertDeviceFromScan) - werden NICHT automatisch
|
||||
// übernommen, nur zur Bestätigung zurückgegeben.
|
||||
const deviceChanges = results.flatMap((r) =>
|
||||
r.changes.map((c) => ({ deviceId: r.device.id, deviceHostname: r.device.hostname, ...c }))
|
||||
//
|
||||
// WICHTIG: Ein Vorschlag, der einen bereits bekannten ECHTEN Namen
|
||||
// (z. B. "cam-reolink-einfahrt") auf den generischen
|
||||
// FritzBox-Platzhalter "PC-192-168-1-39" zurückstufen würde, wird
|
||||
// hier ausgefiltert und gar nicht erst vorgeschlagen. Das war die
|
||||
// Ursache der Namens-Regression: mergeFritzboxHosts() bevorzugt den
|
||||
// echten Namen nur, wenn IN DEMSELBEN Scan-Durchlauf mehrere
|
||||
// TR-064-Einträge für dieselbe MAC vorliegen - hat die FritzBox in
|
||||
// einem Durchlauf für ein Gerät NUR den Platzhalter gemeldet (z. B.
|
||||
// kurz nach einem Neustart/DHCP-Lease-Renewal, bevor sie den
|
||||
// mDNS/NetBIOS-Namen kennt), gab es bisher keine zweite Quelle zum
|
||||
// Vergleich - der Platzhalter wurde als ganz normale "Namensänderung"
|
||||
// vorgeschlagen und konnte (z. B. über "Alle bestätigen") den guten
|
||||
// Namen dauerhaft überschreiben.
|
||||
const deviceChanges = results.flatMap((r, i) => {
|
||||
const scannedIp = mergedHosts[i].ip;
|
||||
return r.changes
|
||||
.filter((c) => {
|
||||
if (c.field !== "hostname") return true;
|
||||
const suggestedIsPlaceholder = isGenericFritzboxHostname(c.suggested, scannedIp);
|
||||
const currentIsPlaceholder = isGenericFritzboxHostname(c.current, scannedIp);
|
||||
return !(suggestedIsPlaceholder && !currentIsPlaceholder);
|
||||
})
|
||||
.map((c) => ({ deviceId: r.device.id, deviceHostname: r.device.hostname, ...c }));
|
||||
}
|
||||
);
|
||||
|
||||
// Geräte, die die FritzBox früher gemeldet hatte, diesmal aber nicht
|
||||
|
||||
Reference in New Issue
Block a user