netdiag-app/native-plugin
Eduard Wisch 53d91d1526
All checks were successful
Build APK / build-apk (push) Successful in 1m41s
Bugfixes: IP-Scanner, DHCP, Aufträge, Messergebnisse [apk]
- IP-Scanner: ConnectivityManager.getLinkProperties statt hartcodiertem /24 –
  erkennt jetzt das echte Subnetz inkl. Prefix-Länge und Gateway
- DHCP: dhcpDiscover durch dhcpInfo ersetzt (liest WifiManager.dhcpInfo,
  kein Root nötig) – zeigt Server, Gateway, Lease-Zeit, DNS
- Aufträge: tms-Feld ergänzt, Order by tms DESC – "zuletzt bearbeitet" zuerst;
  Checkbox-Logik invertiert (Standard: alle Aufträge, Haken = nur aktive)
- MeasurementResult-Komponente: Arrays (WLAN-Netze, Traceroute-Hops) als
  echte Liste statt Komma-String; Skalare kompakt in einer Zeile
- Traceroute: 5 aufeinanderfolgende Timeouts → Abbruch statt endlos warten
- tools/types.ts: MeasureStatus exportiert (behebt 5 Svelte-Check-Fehler)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 22:02:46 +02:00
..
NetDiagScannerPlugin.kt Bugfixes: IP-Scanner, DHCP, Aufträge, Messergebnisse [apk] 2026-05-19 22:02:46 +02:00
README.md Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00
Snmp.kt Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00

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-Methoden
  • Snmp.kt — minimaler SNMP-v2c-GET-Client

Integration (einmalig, nach npx cap add android)

  1. Android-Projekt erzeugen (falls noch nicht vorhanden):

    npm install
    npm run build
    npx cap add android
    
  2. Plugin-Dateien kopieren nach:

    android/app/src/main/java/de/data_it_solution/netdiag/
    ├── NetDiagScannerPlugin.kt
    └── Snmp.kt
    
  3. 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)
      }
    }
    
  4. 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_LOCATION ist Pflicht, damit Android WLAN-Scan-Ergebnisse liefert.

  5. 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/arp ist 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.