Some checks failed
Build APK / build-apk (push) Failing after 11m29s
SvelteKit + Capacitor 6 Netzwerk-Diagnose-App: - Tool-Plattform (IP-Scan, Port, Ping, WLAN, DHCP, SNMP, Traceroute, Stresstest, iperf) - Offline-First SQLite-Cache + idempotenter Dolibarr-Sync - Natives Kotlin-Plugin NetDiagScanner (ARP, Ping, Ports, WLAN, DHCP, SNMP, Traceroute) - Backbutton-Single-Instance-Modul, Auto-Updater, Toast-System - Auftrags-/Kunden-Übersicht nach Baustellen-App-Muster - CI: [apk]-Tag → Forgejo Runner → Package Registry netdiag-apk Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.8 KiB
2.8 KiB
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.