Internet-Wiederkehrmelder
=========================

Version 2.2.0
Portable Tray-App für Windows 10 und 11


INSTALLATION
------------

Internet-Wiederkehrmelder-Setup.exe
  Installiert die App ohne Administratorrechte für den aktuellen
  Windows-Benutzer unter
  %LOCALAPPDATA%\Programs\AmrumSoftware\Internet-Wiederkehrmelder.

Nach der Installation liegen Einstellungen, Protokoll und Installations-ID
getrennt von den Programmdateien unter
%LOCALAPPDATA%\AmrumSoftware\Internet-Wiederkehrmelder.


ZWECK
-----

Der Internet-Wiederkehrmelder prüft, ob über eine frei wählbare
Hauptverbindung wieder externes Internet erreichbar ist. Eine gleichzeitig
zugeschaltete Ersatzverbindung stellt während des Ausfalls den Internetzugang
bereit.

Haupt- und Ersatzverbindung dürfen jeweils LAN oder WLAN sein. Unterstützt
werden deshalb:

* LAN als Hauptnetz und WLAN als Ersatznetz
* WLAN als Hauptnetz und LAN als Ersatznetz
* LAN als Hauptnetz und zweites LAN als Ersatznetz
* WLAN als Hauptnetz und zweites WLAN als Ersatznetz

Die App ändert ausdrücklich keine:

* Adapterzustände
* WLAN-Verbindungen
* IP-Adressen
* Routen
* Schnittstellenmetriken


WICHTIGE VORAUSSETZUNG
----------------------

Haupt- und Ersatzverbindung müssen zwei verschiedene Windows-Netzwerkadapter
sein. Zwei WLANs auf demselben einzelnen WLAN-Adapter können nicht gleichzeitig
verbunden und überwacht werden. Für WLAN zu WLAN sind daher zwei WLAN-Adapter
erforderlich.


ERSTE EINRICHTUNG AUF EINEM ANDEREN COMPUTER
--------------------------------------------

1. Einrichten.cmd öffnen.
2. Den normalerweise verwendeten Adapter als Hauptadapter auswählen.
3. Den bei einem Ausfall zugeschalteten Adapter als Ersatzadapter auswählen.
4. Bei einem Ersatz-WLAN das bereits in Windows gespeicherte WLAN-Profil
   auswählen. Die App speichert kein WLAN-Passwort.
5. Prüfintervall und Anzahl der erfolgreichen Prüfungen festlegen.
6. Optional den Windows-Autostart einschalten.
7. Für einen eindeutigen IPv4-Vorrang einmalig
   UAC-Ersatznetz-Prioritaet-einrichten.cmd ausführen.


LOKALE PROFILE BLEIBEN PRIVAT
-----------------------------

Gespeicherte WLAN-Profilnamen und WLAN-Kennwörter werden nicht in Setup,
Portable-ZIP, Website oder öffentliche Dokumentation aufgenommen. Ein lokales
Profil wird ausschließlich in der Konfiguration des jeweiligen Windows-
Benutzers gespeichert. Die App liest keine WLAN-Kennwörter aus.

Der tatsächliche Test bindet seine ausgehenden Verbindungen an die jeweils
aktuelle IPv4-Adresse des ausgewählten Hauptadapters. Dadurch kann das
funktionierende Ersatznetz das Ergebnis des Hauptnetzes nicht als Erfolg
erscheinen lassen.


START
-----

Starten.cmd
  Startet die Tray-App. Das Symbol erscheint im Windows-Infobereich neben
  der Uhr, möglicherweise zunächst hinter dem Pfeil für ausgeblendete Symbole.

Einrichten.cmd
  Wählt Hauptadapter, Ersatzadapter, optionales Ersatz-WLAN-Profil,
  Prüfintervall und Autostart.

Einmal-pruefen.cmd
  Führt eine einzelne Prüfung mit sichtbarer Textausgabe aus.

Autostart-einrichten.cmd
  Aktiviert den Windows-Autostart nur für den aktuellen Benutzer. Dafür sind
  keine Administratorrechte nötig.


TRAY-MENÜ
---------

Jetzt prüfen
  Prüft sofort die gewählte Hauptverbindung.

Netzwerkdetails
  Zeigt Haupt- und Ersatzadapter, Adressen, Routenstatus und das letzte
  Prüfergebnis.

Protokoll öffnen
  Öffnet LAN-Wiederkehrmelder.log.

Einstellungen
  Ändert Haupt-/Ersatzverbindung, WLAN-Profil, Prüfintervall und Autostart.

Beenden
  Beendet ausschließlich den Monitor.


WIE WIRD INTERNET ERKANNT?
--------------------------

Die App ruft über die lokale IPv4-Adresse des ausgewählten Hauptadapters genau
diese Windows-Internetprüfseite ab:

http://www.msftconnecttest.com/connecttest.txt

Nur die exakte Antwort „Microsoft Connect Test“ gilt als Erfolg. Dadurch kann
die funktionierende Ersatzverbindung das Ergebnis der Hauptverbindung nicht
versehentlich als Erfolg erscheinen lassen.

Ein einzelner erfolgreicher Prüflauf genügt nicht. Erst nach drei
aufeinanderfolgenden Erfolgen zeigt die App eine Windows-Meldung
„Hauptverbindung wieder online“ und spielt eine fünf Sekunden lange Sirene ab.
Die Sirene wird nur ausgelöst, wenn zuvor mindestens zwei Fehlprüfungen der
Hauptverbindung festgestellt wurden. Beim Start mit bereits funktionierendem
Hauptnetz bleibt sie still.
Die Sirene verwendet eine hohe Signalamplitude, verändert aber nicht die
eingestellte Windows-Systemlautstärke. Im Tray-Menü kann sie mit
„Sirene testen (5 Sekunden)“ jederzeit geprüft werden.

ALLGEMEINER ABLAUF BEIM NÄCHSTEN AUSFALL
----------------------------------------

1. Den eingerichteten Ersatzrouter beziehungsweise Ersatzadapter zuschalten.
2. Ein gespeichertes Ersatz-WLAN verbindet sich automatisch, wenn es in den
   Einstellungen ausgewählt wurde.
3. Starten.cmd starten, falls der Melder nicht bereits im Autostart läuft.
4. Der Melder prüft weiterhin ausschließlich die Hauptverbindung.
5. Nach drei erfolgreichen Prüfungen der Hauptverbindung ertönt die Sirene.
6. Danach kann das Ersatznetz getrennt werden. Windows verwendet wieder die
   Hauptverbindung.

Für einen garantiert eindeutigen IPv4-Wechsel muss einmalig die Priorität des
Ersatzadapters niedriger als die des Hauptadapters gesetzt werden. Das benötigt
einmal Administratorrechte. Die allgemeine Datei

UAC-Ersatznetz-Prioritaet-einrichten.cmd

liest die aktuell ausgewählten Adapter aus LAN-Wiederkehrmelder.json und setzt
nur deren IPv4-Schnittstellenmetriken auf Ersatzadapter 5 und Hauptadapter 20.
IPv6 wird dabei nicht verändert. Für jedes konfigurierte Adapterpaar wird eine
eigene Sicherung der vorherigen Werte angelegt.

Solange der Ersatzadapter verbunden ist, wird er danach für IPv4 bevorzugt.
Nach dem Trennen verschwindet seine Route und Windows verwendet wieder den
Hauptadapter. Die vorherigen Einstellungen werden lokal gesichert. Eine
Rückkehr zu diesen Werten ist mit
UAC-Netzprioritaet-wiederherstellen.cmd möglich.


DATEIEN
-------

LAN-Wiederkehrmelder.ps1
  Hauptprogramm.

LAN-Wiederkehrmelder.json
  Enthält Hauptadapter, Ersatzadapter, optionales lokales WLAN-Profil und
  Intervalle. Installiert liegt die Datei im oben genannten Programmdatenordner;
  portabel liegt sie neben dem Hauptprogramm.

Mobilrouter-Prioritaet-einrichten.ps1
  Allgemeine UAC-Hilfe für die zwei aktuell ausgewählten Adapter. Der alte
  Dateiname bleibt aus Kompatibilitätsgründen erhalten.

LAN-Wiederkehrmelder.log
  Enthält Datum, Uhrzeit und jedes Prüfergebnis. Installiert liegt die Datei
  im Programmdatenordner.

installation-id.txt
  Zufällige UUID4 der portablen Programmkopie. Sie wird zusätzlich
  benutzerspezifisch unter HKCU gespiegelt. Sie wird nicht aus Hardware-,
  Konto- oder Netzwerkdaten abgeleitet. Sie wird beim höchstens einmal
  täglichen HTTPS-Updatecheck als URL-Parameter installation_id übertragen.
  Bei der installierten Fassung liegt sie im Programmdatenordner.

update-state.json
  Speichert das Datum des letzten Updateversuchs sowie gegebenenfalls die
  zuerst erfolgreich erkannte neuere Version und deren Fristbeginn. Die Datei
  enthält keine WLAN-Profile, Kennwörter oder Hardwarekennungen.


DATENSCHUTZ UND NOTWENDIGE UPDATES
---------------------------------

Beim Programmstart ruft die App höchstens einmal pro Kalendertag über HTTPS
die maschinenlesbare Datei versions.txt ab. Dabei wird ausschließlich die
pseudonyme UUID4-installation_id als URL-Parameter übertragen. WLAN-Profile,
Kennwörter, Adapterdaten, MAC-Adressen, Rechnername, Windows-Konto und
E-Mail-Adresse werden nicht übertragen.

Erst wenn der Abruf erfolgreich eine tatsächlich neuere veröffentlichte
Version ergibt, beginnt eine Frist von 90 Tagen. Bis zum Fristende warnt die
App und nennt die verbleibenden Tage. Danach wird die Netzüberwachung bis zum
Update gesperrt und die Downloadseite angeboten. Ein Netzwerk-, DNS-, TLS-
oder Serverfehler allein startet weder eine Frist noch eine Sperre. Eine bereits
begonnene Frist bleibt lokal gespeichert.


KOMMANDOZEILE
-------------

powershell.exe -File LAN-Wiederkehrmelder.ps1 --help
powershell.exe -File LAN-Wiederkehrmelder.ps1 -h
powershell.exe -File LAN-Wiederkehrmelder.ps1 --configure
powershell.exe -File LAN-Wiederkehrmelder.ps1 --once
powershell.exe -File LAN-Wiederkehrmelder.ps1 --show-config
powershell.exe -File LAN-Wiederkehrmelder.ps1 --self-test
powershell.exe -File LAN-Wiederkehrmelder.ps1 --enable-autostart
powershell.exe -File LAN-Wiederkehrmelder.ps1 --disable-autostart

Ohne Parameter startet die Tray-App.
