- NetBIOS-Namensabfrage (UDP 137) je Host integriert - mdnsScan: neue Plugin-Methode, mDNS/Bonjour via NsdManager — findet Drucker, Kameras, Chromecast, AirPlay; liefert Namen + Diensttypen - Quick-Port-Probe (22/80/443/554/9100 …) speist eine deviceType-Heuristik (Kamera, Drucker, Router, Switch, NAS, Wallbox, Server …) - OUI-Vendor-Tabelle von 6 auf ~150 kuratierte Einträge erweitert - ipscan.ts führt IP-Scan + mDNS pro IP zusammen, mDNS-only-Geräte ergänzt - neue DeviceCard-Komponente: zeigt Geräteart-Badge, offene Ports, mDNS-Dienste, mac, NetBIOS-Name; ersetzt die Inline-Geräteliste - upsertDevice überschreibt vorhandene Daten nicht mehr mit undefined (Favorit/eigener Name bleiben bei magerem Re-Scan erhalten) - Manifest: CHANGE_WIFI_MULTICAST_STATE für die mDNS-Suche Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| NetDiagScannerPlugin.kt | ||
| README.md | ||
| Snmp.kt | ||
Natives Scan-Plugin NetDiagScanner
Der WebView kann keine Raw-Sockets/ICMP/ARP — die eigentliche Netzwerk-Messung läuft in diesem nativen Android-Plugin (Kotlin).
Dateien
NetDiagScannerPlugin.kt— Capacitor-Plugin mit allen Scan-MethodenSnmp.kt— minimaler SNMP-v2c-GET-Client
Integration (einmalig, nach npx cap add android)
-
Android-Projekt erzeugen (falls noch nicht vorhanden):
npm install npm run build npx cap add android -
Plugin-Dateien kopieren nach:
android/app/src/main/java/de/data_it_solution/netdiag/ ├── NetDiagScannerPlugin.kt └── Snmp.kt -
Plugin registrieren in
android/app/src/main/java/de/data_it_solution/netdiag/MainActivity.kt:package de.data_it_solution.netdiag import android.os.Bundle import com.getcapacitor.BridgeActivity class MainActivity : BridgeActivity() { override fun onCreate(savedInstanceState: Bundle?) { registerPlugin(NetDiagScannerPlugin::class.java) super.onCreate(savedInstanceState) } } -
Berechtigungen in
android/app/src/main/AndroidManifest.xml(innerhalb<manifest>):<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />ACCESS_FINE_LOCATIONist Pflicht, damit Android WLAN-Scan-Ergebnisse liefert. -
Kotlin-Coroutines sicherstellen — in
android/app/build.gradle:dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0" }
Bekannte Einschränkungen
- ARP/MAC:
/proc/net/arpist ab Android 10 teils nicht mehr lesbar — dann bleiben MAC/Hersteller leer; Geräte werden trotzdem über Ping/Hostname erkannt. - Hersteller-Lookup: nur kleiner OUI-Auszug eingebaut. Für volle Abdeckung
die IEEE-OUI-Datei als Asset einbinden und in
ouiVendor()nutzen. - DHCP-Discover: Best-effort — Port 68 kann vom System-DHCP-Client belegt sein.
- Durchsatz-Test: benötigt eine TCP-Sink/Source-Gegenstelle (2. Gerät bzw. iperf3-kompatibler Server). Misst sonst nur Fehlversuche.
- Stresstest: für lange Läufe sollte ein Foreground-Service ergänzt werden, sonst kann Android den Prozess im Hintergrund beenden.
- PoE-/Strommessung: bewusst nicht enthalten (Hardware-Grenze) — späteres Modul.