=================================================================================
 netcheck v4.4 2026  -  Netzwerk-Werkzeugkasten im Browser
 (Nachfolger von DDNS Check 2.2)
================================= (o_o) (¬_¬) ( ʘ_ʘ) ┌(°_°)┐ (⌐■_■) (•_•) =======

WAS IST DAS?
++++++++++++++++++++++++++++++
  Eine Webseite (index.html) plus ein kleiner Python-Helfer (netcheck.py).
  Der Browser darf selbst nicht pingen oder Netzwerkbefehle ausfuehren,
  deshalb erledigt der Helfer das und liefert die Ergebnisse an die Seite.
  Kein Node, keine Zusatzpakete, nur Python 3.

SCHNELLSTART (Linux)
++++++++++++++++++++++++++++++
  1. Ordner entpacken, z. B. nach ~/netcheck
  2. config/device.py oeffnen und eigene Geraete eintragen (Name, IP, Etage)
  3. Im Ordner starten:      python3 netcheck.py
  4. Im Browser oeffnen:     http://127.0.0.1:8099/netcheck/
     (oder index.html direkt per file:// oeffnen, Helfer muss laufen)
  Beenden mit Strg+C. Kein sudo noetig, besser ohne.

DIE BOXEN
++++++++++++++++++++++++++++++
  Geraete    Ping-Status je Geraet, nach Etage gruppiert, Knopf "Pruefen"
             Umschalter:  Live      = jeder Klick pingt wirklich
                          Snapshot  = zeigt den letzten gespeicherten Stand
  Netzwerk   Schnittstellen: Typ, Status, Link ja/nein (nein = kein Kabel/
             kein Signal), MAC, IP-Adressen, MTU, Tempo
  DNS        Nameserver, Suchdomaene, Testabfragen mit Antwortzeit
  ARP        Nachbarn im LAN (IP, MAC, Schnittstelle, Status), Filterfeld
  Netstat    Ports und Verbindungen, Listener zuerst, Filterfeld
  Jede Box:  (Neu laden)  und  - / +  (ein-/ausklappen, wird gemerkt)
  Kopfzeile: "Alles neu laden" und "Auto 30 s" (eingeklappte Boxen
             werden nicht nachgeladen)

SNAPSHOT-BETRIEB (ohne laufenden Server)
++++++++++++++++++++++++++++++
  python3 netcheck.py --snap
  schreibt data.js, state.json und netcheck.log in die RAM-Ablage
  (Linux: /dev/shm/netcheck/). Per Cron zyklisch, z. B. jede Minute:
    * * * * * python3 /pfad/zu/netcheck/netcheck.py --snap
  Die Seite liest data.js unter file:// ueber den Pfad aus os/<system>/client.js.

PLAIN-SEITE (ohne JavaScript, fuer alte Browser, z. B. AWeb)
++++++++++++++++++++++++++++++
  http://<Helfer-Rechner>:8099/netcheck/plain
  Fertig vom Server erzeugt, aktualisiert sich alle 30 Sekunden.

ORDNERSTRUKTUR
++++++++++++++++++++++++++++++
  index.html             Einstieg, erkennt das System per User-Agent
  netcheck.py            Helfer (Server und --snap)
  config/device.py       Geraete, Port, RAM-Pfade, DNS-Tests, Optionen
  style/css/common.css   Aussehen
  style/js/common.js     Boxen, Umschalter, Nachladen
  os/lin|win|mac/        ping.py  = Ping-Aufruf des jeweiligen Systems
                         info.py  = Daten fuer Netzwerk/DNS/ARP/Netstat
                         client.js = Hinweistexte und Snapshot-Pfad
  os/mos|ami/            nur client.js (Platzhalter)

EINSTELLUNGEN (config/device.py)
++++++++++++++++++++++++++++++
  HOST         "127.0.0.1" = nur lokal. "0.0.0.0" = auch im LAN erreichbar
  PORT         Standard 8099
  LOG_LINES    Laenge des Verlaufs in netcheck.log (Standard 500)
  DEVICES      "name": {"ip": "...", "etage": "..."}
  DATA_DIRS    RAM-Pfad je System, sonst Temp-Ordner
  DNS_TESTS    Namen fuer die DNS-Testabfragen
  INFO_REMOTE  False = Netzwerk/ARP/Netstat/DNS nur fuer lokale Clients

SICHERHEIT
++++++++++++++++++++++++++++++
  - Der Helfer fuehrt nur feste Befehle aus (Ping auf die Geraeteliste,
    Systeminfos), keine Eingaben aus dem Browser als Befehl.
  - Ausgeliefert werden nur index.html, style/ und os/*/client.js.
    config/ und alle .py-Dateien bleiben unerreichbar.
  - Fremde Host-/Origin-Header werden abgelehnt (Schutz vor fremden Webseiten).
  - Bei HOST = "0.0.0.0" ist der Helfer im LAN sichtbar. Info-Boxen bleiben
    trotzdem lokal, solange INFO_REMOTE = False ist.

STAND DER SYSTEME
++++++++++++++++++++++++++++++
  Linux      getestet (Geraete, Netzwerk, DNS, ARP, Snapshot, Plain)
  Windows    Ping-Code vorhanden, Info-Boxen als Rohtext, ungetestet
  macOS      Ping-Code vorhanden, Info-Boxen als Rohtext, ungetestet
  MorphOS    Anzeige moeglich, Shell-Script-Helfer folgt
  AmigaOS    nur Plain-Seite, Shell-Script-Helfer folgt

FEHLERSUCHE
++++++++++++++++++++++++++++++
  "Address already in use"
      Auf Port 8099 laeuft schon etwas (meist eine alte Instanz):
        ss -ltnp | grep 8099        dann   kill <PID>
      oder in config/device.py einen anderen PORT eintragen.
  Seite zeigt "Helfer nicht erreichbar"
      python3 netcheck.py starten und Seite neu laden.
  Alle Geraete "offline"
      IPs in config/device.py pruefen, Geraet im Netz erreichbar?
  Netstat leer oder Fehler
      Programm "ss" fehlt (Paket iproute2). Prozessnamen sieht man nur
      fuer eigene Programme.
  Snapshot-Modus: "Kein Snapshot gefunden"
      python3 netcheck.py --snap ausfuehren, Pfad in os/<system>/client.js
      pruefen.
  USB-Stick (FAT/exFAT): Ausfuehrungsrechte fehlen, immer per python3 starten.

FEATURE & AUTOR
++++++++++++++++++++++++++++++
Für die Zukunft werden einige Dinge noch Optional erweitert
1. Wahl der Router Konfiguration "Un-Management Router / Switch" & "Management Router / Switch"
2. zzgl. TCP IP Netzwerk Tools, Programme, Binaeries in Einbindung

gemacht in Übernahme (Eigene Personen Namens Änderung Aufgrund Scheidung)
somit auf den MorphOS Betriebssystem seit 2019 in Test Reihen, Namensänderung DDNS Check auf "NETcheck"

Meldungen an : Alexander, Thomas Niesner | Solbad Strasse 28 | 31812 Bad Pyrmont
               Mails + Fehlermeldungen bitte an " sysop@bbs.fpv-de.com "
               www.fpv-de.com
Die Software ist Free Ware - Spenden zur Unterstützung sind dennoch immer Willkommen !
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

               
