round27: Ping-Regression rueckgaengig gemacht (Echo/Samsung-Geraete ignorieren ICMP), Aktualisiert-Text entfernt, Suchmaschinen-Hinweis+README, API-Scanner stark erweitert mit eigenem Reiter

This commit is contained in:
2026-07-24 09:24:57 +02:00
parent 0fc063b2a2
commit 430b79763c
10 changed files with 358 additions and 80 deletions

View File

@@ -27,15 +27,29 @@ export function listDetectedApis(): DetectedApiEntry[] {
return db.select().from(detectedApis).all().map(mapRow);
}
export function getApisForService(serviceId: string): DetectedApiEntry[] {
return db.select().from(detectedApis).where(eq(detectedApis.serviceId, serviceId)).all().map(mapRow);
}
/**
* Ersetzt die gespeicherten API-Funde eines Dienstes komplett durch die
* neuen Ergebnisse eines Scan-Laufs - kein Anhäufen von veralteten
* Einträgen, wenn sich z. B. der API-Pfad einer Software mal ändert.
*
* Liefert zusätzlich `added` zurück: die Einträge, die VORHER noch nicht
* gespeichert waren (nach Pfad+Typ verglichen) - damit der Scanner auf der
* Scanner-Seite nach dem ersten Mal nur noch NEUE/geänderte Funde anzeigen
* kann, statt bei jedem erneuten Scan die komplette (meist unveränderte)
* Liste erneut runterzurattern. Die vollständige Liste bleibt jederzeit
* unter Admin -> APIs einsehbar.
*/
export function replaceApisForService(
serviceId: string,
found: { path: string; type: string; status: number }[]
): DetectedApiEntry[] {
): { saved: DetectedApiEntry[]; added: DetectedApiEntry[] } {
const before = getApisForService(serviceId);
const beforeKeys = new Set(before.map((e) => `${e.path}::${e.type}`));
db.delete(detectedApis).where(eq(detectedApis.serviceId, serviceId)).run();
const timestamp = new Date().toISOString();
@@ -52,7 +66,10 @@ export function replaceApisForService(
db.insert(detectedApis).values(rows).run();
}
return rows.map(mapRow);
const saved = rows.map(mapRow);
const added = saved.filter((e) => !beforeKeys.has(`${e.path}::${e.type}`));
return { saved, added };
}
export function deleteApisForService(serviceId: string): void {