CH-J Server ManagerSerververwaltung über SSH
Menü

Serverdiagnose

Datei herunterladen

Dieser übersetzte Text wird sprachlich überarbeitet. Vergleichen Sie unklare Stellen mit dem englischen Original.

In die Core Sidebar integriert, in der Reihenfolge Plugins → Server Diagnostics → Hash & Checksum. Es erfordert keine SSH Sitzung oder heruntergeladen Plugin. Alle Laufzeitcodes, Tests und Fixtures leben in app/ ; das Modul hat keine Abhängigkeit von Geschwister-Repositorien. Das Projektarchiv hat kein doc.md , daher beschreiben dieses Dokument und beide READMEs die Implementierung.

Benutzer-Workflow

Geben Sie einen Hostnamen ein. IPv4, IPv6 oder HTTP(S)/WS(S) URL. Bare hostnames/IPs default to HTTPS; explizite URLs behalten während der Anfrage ihren Pfad, ihre Abfrage und ihren Port. Anmeldeinformationen in URLs, nicht unterstützten Schemata, Whitespace/Control-Zeichen und Shell-ähnlichen Hostnamen werden abgelehnt. IPv6-Literaturen werden automatisch geklammert; scoped/link-local Zone Identifier werden vom URL Parser nicht unterstützt.

Wählen Sie Auto (vorzugsweise IPv4, sonst IPv6), IPv4 oder IPv6. Lösen Sie Adressen, um eine bestimmte aktuelle Antwort zu wählen. Die Übersicht zeigt alle gelösten Antworten an; Sonden testen die ausgewählte Adresse oder eine Adresse pro angeforderter Familie. Beide Familien werden unabhängig voneinander gemessen. AAAA-Präsenz allein impliziert nie, dass IPv6-Konnektivität funktioniert.

Führen Sie Diagnose läuft DNS, ping, traceroute, HTTP, Kompression, TLS und die ausgewählten TCP-Ports. WebSocket ist Opt-in. Jedes Tool hat auch eine separate Run/Stop-Steuerung. Ein Diagnoselauf kann sofort aktiv sein. Ein abgeschlossener Lauf bedeutet, dass die Werkzeuge fertig sind, nicht dass jede Sonde erfolgreich war. Es gibt keine decke .server offline-Urteil.

Timeout, Paketanzahl, Wiederholungen, maximale Hops, DNS-Resolver, Protokollauswahl, warme Verbindung und HTTP/HTTPS-Vergleich sind konfigurierbar. Das Ändern des Ziels löscht eine zuvor ausgewählte IP. Die Historie kann zwei Berichte erneut öffnen, vergleichen, löschen, JSON importieren, JSON/CSV/TXT durch native Core-Dialoge kopieren oder exportieren. Das Light/dark/system-Theme gilt für den Diagnosebereich und wird in der bestehenden UI-Konfiguration gespeichert. CZ/DE/EN folgt der Anwendungssprache sofort.

Komponenten und Protokollverhalten

KomponenteImplementierung und Interpretation
common.js ZValidiert Ziele/Optionen, Grenzwerte und Enum-Werte; IDNA-Konvertierung; numerische Statistiken schließen unbekannte Werte aus.
dnsDiagnostics.jsSystem-Adressauflösung verwendet dns.lookup um die OS-Konfiguration und Hosts zu ehren. Record-Abfragen verwenden begrenzt UDP DNS mit TCP Fallback für verkürzte Antworten gegen dns.getServers() , oder den explizit gewählten Custom/public Resolver. Keine implizite Umstellung auf öffentliche DNS.
processTools.js Dieführt OS ping/traceroute mit einem argumentaren Array und shell: false , begrenzter Ausgabe, explizitem Timeout und Abbruch/Kill-Reinigung aus. Parses Paket antwortet und hops, anstatt Prozessdauer als RTT zu behandeln.
httpDiagnostics.jsGebundene Locke für HTTP/1.1, HTTP/2 und HTTP/3; strenge Zertifikatsverifizierung und IP-Familie. Jede Version wird unabhängig angefordert; die aktuelle Version wird aufgezeichnet.
socketDiagnostics.js ZExplizite TLS-Versionssonden, geschränkte TCP-Verbindungen/passive Banner, Vorab-Authentifizierung SSH Host-Key-Beobachtung über die bestehende ssh2-Abhängigkeit und optionale RFC 6455 Upgrade-Validierung.
diagnosticsService.js Dasläuft und storniert Werkzeuge, wählt/validiert Adressen, streamt Fortschritt, bewahrt Teilmessungen und besitzt die Laufzeitfrist.
historyStore.jsVersionierte begrenzte lokale Geschichte, Redaktion, schema-kontrollierte Importe und Messdatenexporte.

ICMP und Routen

Ping-Standards für vier individuell ausgeführte ICMP-Echo-Anfragen. Die Ergebnisse enthalten pro Packung gemessene RTT, empfangene/gesendete Zählungen, Verlust, min/average/max, Populationsstandardabweichung, mittlere absolute Differenz zwischen aufeinanderfolgenden gemessenen RTTs (Jitter), TTL/Hop Limit beim Drucken und Zeitstempeln. Eine <1 ms -Antwort wird als empfangen mit einer oberen Grenze gezählt, anstatt eine numerische RTT zu erfinden. Unbekannte RTTs sind von der Latenzstatistik ausgeschlossen. Statistiken verwenden das beibehaltene Fenster von höchstens 500 Paketen; gesendet/received/loss Zählungen decken den gesamten Lauf ab. Die Graphiken zeigen die letzten 200-Beobachtungen mit unterschiedlichen Symbolen für Antworten, Subauflösungsantworten, fehlenden Antworten und expliziten Anforderungs-/Prozess-Timeouts.

Eine fehlende Antwort kann ICMP-Filterung, Paketverlust oder Timeout widerspiegeln; diese Beobachtungen können eine Firewall nicht abschließend identifizieren. Fehlende ausführbare Dateien, lokale Berechtigungsausfälle und ungültige Werkzeugaufrufe sind separate Tool-Fehler, nicht Paketverlust oder Server-Unverfügbarkeit. Es wird keine Privilegisierungseskalation verlangt.

Traceroute strömt Hopfen, Adressen, einzelne Sonden, Mittel und beobachtete unbeantwortete Probenprozentsätze. Der Reverse DNS wird nach der Route mit dem ausgewählten Resolver aufgelöst. Wiederholungen vergleichen beobachtete Hop-Adress-Sequenzen; Unterschiede können Lastausgleich widerspiegeln. Unbeantworteter Zwischenhopfen stellt keine kaputte Route dar. Rohe Sonde Metadaten und Methode erscheinen in erweiterbaren Details. macOS benötigt Integer-Sekunde Traceroute wartet; der effektive abgerundete Timeout wird aufgezeichnet.

DNS

Die zwölf Plattentypen sind A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS und DNSKEY. DNS Wire Parsing überprüft Transaktion/Frage Identität, Datensatzgrößen, Kompressions-Pointer-Schleifen und Nachrichtengrenzen. Die Antworten behalten die Aufzeichnung von TTLs, Abfragetiming, Resolver und NXDOMAIN/NODATA/SERVFAIL/refused/timeout-Zuständen. OS-Adressen-Suchen können TTL nicht liefern; die separate Datensatzabfrage kann.

CNAME folgt auf acht Verbindungen mit Zykluserkennung begrenzt. Konsistenz wiederholt A/AAAA-Antworten des ausgewählten Resolvers und führt vorausbestätigte PTR für IP-literale DNS-Tests durch. Veränderte Antworten sind Beobachtungen, kein Beweis eines DNS-Fehlers. Abfragen für SRV verwenden den Zielnamen wie angegeben; geben Sie bei Bedarf einen Dienstnamen wie _service._tcp.example.org ein. DNSSEC ist immer not validiert . DS/DNSKEY-Präsenz und sogar die AD-Flagge eines Resolvers werden nie als unabhängige Validierung behandelt.

HTTP, Leistung und Kompression

HTTP/1.1 akzeptiert diese Version nur als unterstützt, wenn sie tatsächlich zurückgegeben wurde. HTTPS HTTP/2 erfordert verhandeltes h2; kein Fallback wird neu markiert. Cleartext HTTP/2 verwendet Vorkenntnisse, keine HTTP/1.1 Upgrade-Sonde. Die TLS-Verifikation bleibt für jede HTTP/WebSocket-Anfrage streng.

Manuelle Umleitungen sind auf acht begrenzt; Loops, ungültige Ziele und übermäßige Umleitungen scheitern explizit. Die komplette Kette zeichnet domänenübergreifende Änderungen auf und HTTPS-Downgrades; Schemata und www-Änderungen sind in den URLs der Quelle/destination sichtbar. Beglaubigungen und Nicht-HTTP(S)-Umleitungsregelungen werden abgelehnt. Jede Cross-Host-Umleitung wird unabhängig über den ausgewählten Resolver und die angeforderte IP-Familie aufgelöst.

Zu den Messungen gehören DNS (wenn durchgeführt), TCP, TLS, final-response TTFB, insgesamt TTFB einschließlich DNS/Redirects, Download, Redirect und Gesamtwandzeit, tatsächliche Entity Bytes, Übertragungsgeschwindigkeit, Status, Response Header, aktuelle Serveradresse/Port, ALPN und verifizierte Verbindungswiederverwendung. DNS/TCP/TLS Phasen, die nicht an einer gepinnten oder wiederverwendeten Verbindung durchgeführt werden, sind N/A , keine gefälschten Nullen. QUIC hat keine TCP-Phase; sein Handshake wird separat aufgezeichnet. Header-Übertragung oder Volldraht Overhead wird nicht als Entity-Byte-Messung behauptet. Dies sind Server/Netzwerk Timings, nicht Seitenrendering oder Lighthouse Punkte.

Jedes ausgewählte Protokoll verwendet das gleiche Ziel und Wiederholungen. IPv4/IPv6 und HTTP/HTTPS sind explizite Vergleichsoptionen. Das alternative Schema verwendet seinen Standardport. Jedes Protokoll startet einen unabhängigen gebündelten Client-Prozess pro Sample. Die Wiederverwendung der Verbindung wird nicht behauptet. Die Gesamtzeitstatistik umfasst min/average/median/max/nearest-rank P95 und eine separate Transport/Protokoll-Fehlerrate; HTTP-Statuscodes bleiben auch dann sichtbar, wenn ein Server erfolgreich eine 4xx/5xx-Antwort zurückgibt.

Kompression sendet Identität, gzip, deflate, br und (wenn die Laufzeit es unterstützt) zstd als separate Accept-Encoding Anfragen. Content-Encoding muss übereinstimmen, und eine begrenzte Dekompression muss erfolgreich sein. Ein Verhältnis wird nur berechnet, wenn der dekodierte Body Hash, die endgültige URL und der Status mit dem Identitäts-Baselineal übereinstimmen. Ignorierte Kodierungen werden nicht unterstützt; wechselnde/dynamische Körper haben kein Verhältnis. Dies ist eine Beobachtung für diese URL/Status, nicht universelle Server-Unterstützung.

Sicherheits-Header-Checks zeigen Vorhandensein und Wert von HSTS, CSP, X-Content-Type-Optionen, Referrer-Policy, Berechtigungs-Policie und X-Frame-Option. Eine CSP-Rahmenanzen-Direktive kann letztere ersetzen. Die Anwesenheit stellt nicht fest, dass die Richtlinie korrekt konfiguriert ist oder dass die Website sicher ist.

HTTP/3 Anforderungen und Nachweis

HTTP/1.1, HTTP/2 und HTTP/3 verwenden den gleichen gebündelten Curl-Client. macOS arm64 und Linux x64 Curl verwenden 8.22.0, OpenSSL 3.5.9== Einzelnachweise == 1.70.0, ngtcp2 1.25.0 und nghttp3 1.18.0. Windows x64 verwendet die offizielle curl.se Curl-for-win 8.22.0_3 statischen Aufbau mit LibreSSL 4.3.3 und den gleichen HTTP-Bibliotheken. Es wird keine Systemcurl-Fallback-, Laufzeit-Download- oder Administratorberechtigung benötigt. Das Windows vorgelagerte reproduzierbare Baurezept ist https://github.com/curl/curl-for-win/tree/9d77e31e .

Bauen Sie mit python3 scripts/native/build.py (Windows: python scripts/native/build.py ) vor der Verpackung. macOS/Linux benötigen C/C++-Tools, CMake, Ninja, Perl, make und pkg-config. Quellen werden durch die Version und vorgelagerte SHA-256 in scripts/native/dependencies.lock.json gepinnt. Das Skript überprüft jeden Download, verknüpft statisch Transportbibliotheken von Drittanbietern und scheitert ohne HTTP2/HTTP3/SSL-Funktionen. Nur Betriebssystem-Bibliotheken bleiben dynamisch. Windows verwendet das angepinnte offizielle Binärarchiv, nicht einen lokal kompilierten Windows Transport Stack. Die gebündelte CA-Datei verfügt über einen eigenen Pinned Hash; Komponentenlizenzen und Upstream-Build Provenance begleiten die Laufzeit.

Der Client und Trust Store sind außerhalb von app.asar in resources/native-runtime/<platform>-<arch>/ installiert. Jede Diagnose überprüft vor der Verwendung die Hische, Architektur und ausführbare Funktionen von Komponenten. Config-Dateien, Proxies, TLS Trust-Umgebungen überschreiben und Bibliotheksinjektionsvariablen sind ausgeschlossen. curl läuft mit einem absoluten Pfad, Shell deaktiviert, überprüft CA Vertrauen, eine explizite aufgelöste IP-Familie, keine Cookies, keine automatischen Weiterleitungen und begrenzt Ausgabe und Zeit. Umleitungen werden durch die Anwendung validiert und wieder aufgelöst. HTTPS auf anderen Ports als 443 wird unterstützt.

HTTP/3 verwendet --http3-only und wird erst nach einer abgeschlossenen Übertragungsreporting-HTTP-Version 3 bestätigt. HTTP-Fehlerantworten wie 404 können das Protokoll bestätigen. Alt-Svc ist eine Werbung, kein Beweis. QUIC-Timeout, Zertifikatsfehler, DNS-Ausfall, Verbindungsverweigerung, inkompatibles Protokoll und Bauteilausfall bleiben deutlich. Ein UDP-Timeout lässt die Server-Unterstützung ungeprüft. QUIC Handshake Timing wird nicht als TCP Timing gemeldet.

Jede Messung startet einen separaten Prozess/Anschluß. Die warme Option beansprucht keine Wiederverwendung der Verbindung für den gebündelten Client. Dies hält Protokollvergleiche konsistent. Berichte umfassen Laufzeitversionen, Funktionen, TLS Verifikation und QUIC Timing, während Geschichte / Export entfernen Körper, URL-Abfragen und Authentifizierung Header.

Aktualisieren Sie diese Pins und bauen Sie jede unterstützte Plattform neu, wenn Sie den Transport Stack oder CA Trust Store aktualisieren. Veröffentlichte Artefakte und Quell-Snapshots sind unveränderlich.

Kern-IPC

Preload setzt nur window.chjCore.diagnostics aus; alle Handler behalten die bestehende Hauptfenster-Senderprüfung und Netzwerkarbeit im Hauptzustand. Die Ergebnisse verwenden { ok: true, value } oder { ok: false, error: { code, message } } .

Kanal / Preload MethodeNutzlast / Ergebnis
diagnostics:resolve / resolve(options)Validierte Ziel/Einstellungen → Ziel und aufgelöste Adressen. Höchstens zwei gleichzeitige Entschließungsanträge.
diagnostics:start / start(options) ZValidiertes Ziel/settings/tool Auswahl → Undurchsichtige Job-ID und Erstbericht.
diagnostics:cancel / cancel(id, tool?)Abbrechen Sie ein aktives/queued Werkzeug oder den gesamten Lauf.
diagnostics:get / get(id)Snapshot eines bekannten Run- oder gespeicherten Reports.
diagnostics:history / history()Zusammenfassungen der lokalen Geschichte.
diagnostics:removeHistory / removeHistory(id) ZEntfernen Sie den ausgewählten Historieneintrag.
diagnostics:copy / copy(id, format) DerMain schreibt einen reagierten bekannten Bericht in die Zwischenablage.
diagnostics:export / export(id, format)Z JSON/CSV/TXT über nativen Speicherdialog; Renderer kann keinen Dateisystempfad liefern.
diagnostics:import / import()Native Datei Picker, Größe/schema/depth Validierung und Redaktion vor dem Speichern.
diagnostics:progress / onProgress(callback)Behobene Adressen, Werkzeugstarts/Vervollständigungen, Pakete, Hops, HTTP-Muster und Fertigstellung; gibt einen abmeldenden Callback zurück.

Es wird keine generische Shell, Dateisystem oder Netzwerk API ausgesetzt. Kontextisolation, Sandbox, deaktivierte Knotenintegration und der vorhandene Renderer CSP bleiben aktiviert. Bestehende Plugin-Verträge und Updater-Verifizierung/Ausnahmen sind unverändert.

Haushaltspläne und lokale Daten

Anforderungen an die Plattform und Überprüfung

PlattformICMPRouteAndere Protokolle
Windows 10/11ping.exe -4/-6tracert.exe -4/-6 , ICMPGebündelt curl.exe mit HTTP/2 und HTTP/3. Lokalisierte RTT-Felder hängen nicht vom Wort "Time" ab.
macOS/sbin/ping , /sbin/ping6/usr/sbin/traceroute , /usr/sbin/traceroute6 , UDP; ganze Sekunde wartetGebundene Locke mit HTTP/2 und HTTP/3.
Ubuntu/LinuxIputils ping -4/-6 ZStandard traceroute -4/-6 , UDPBundled Curl mit HTTP/2 und HTTP/3; fehlende ICMP/Routen-Tools werden separat gemeldet.

Es wurde keine neue npm-Abhängigkeit hinzugefügt. Die Implementierung verwendet Node built-ins und die bestehende ssh2. Es installiert weder Systemtools noch verlangt es administrative Rechte. Firewalls und UDP-Einschränkungen können verhindern, dass ein Test Unterstützung herstellt; sie können nicht allein aus einem Timeout abgeleitet werden.

Automatisierte Abdeckung ist in diagnosticsCore.test.js , diagnosticsNetwork.test.js , diagnosticsHttp.test.js und diagnosticsIpc.test.js : Validierung/IPv6 wörtlich, einheimisch/lokal DNS UDP+TCP-Fixtures, fehlende/duale Familienantworten und Resolverfehler, CNAME/Konsistenz, OS-Argumente/parsing-Fixturen, gebundene reale Kindprozesse, blockierte ICMP-Beobachtungen, real lokal HTTP/1.1 und TLS h2, Umleitungen/Körpergrenzen/timeouts/reuse, Kompression aktiviert/ignoriert, HTTP3 Fähigkeiten/Erfolgsergebnis-Parsing/Fallback-Abweisung, lokale CA-Vertrauen/mismatch/expiration und real IPv6 HTTP/HTTPS, TCP-Verbindung/refused/mock Timeout, echte WebSocket und SSH Prä-Authentifizierung Handshakes, Stornierung/cleanup/partial Ergebnisse, Offline-Zustand, private Geschichte Round-Trip/Import Ablehnung/Exporte, vertrauenswürdige IPC und Preload-Abonnements.

npm test führt deterministische Tests ohne öffentliche Testserver durch. npm run test:diagnostics:ui läuft scripts/smokeDiagnostics.js in einem grafischen Electron-Desktop mit UI/preload/IPC und echten lokalen HTTP/Kompressionssonden. Unverbundene Dienste werden nur in diesem Testbaum abgestumpft/offline. Es überprüft Navigationsreihenfolge, Protokollergebnisse, Persistenz, CZ/DE/EN, beide Themen, schmale Fensterüberlauf und Sandbox-Einstellungen. Wenn die Shell ELECTRON_RUN_AS_NODE setzt, setzen Sie sie für diesen Befehl aus.

Die aktuelle Laufzeitüberprüfung umfasst kontrollierte QUIC-Übertragungen, IPv4/IPv6, HTTPS an einem nicht standardmäßigen Port, 404-Antworten, TLS Fehler und eine TCP-only Servicewerbung Alt-Svc. Pro-Build Ergebnisse begleiten jede Veröffentlichung.

Explizite optionale Grenzwerte: keine unabhängige DNSSEC-Validierung (erfordert einen vollständigen Validierungsresolver/Trust-Anchor-Lebenszyklus), kein Lighthouse-Audit (nur Server-/Netzwerkzeitpunkt), kein veraltetes TLS-Audits oder Widerrufs-/CT-Service, kein HTTP3 Warmwiederverwendungsanspruch und keine HTTP/3 Wärmewiederverwendungsmessung. Nicht unterstützte Fähigkeiten werden eher angezeigt als simuliert.

Dateien in dieser Änderung

Erstellt: die sieben Dienstdateien in src/main/diagnostics/ ; src/renderer/diagnostics.js , diagnosticsI18n.js und diagnostics.css . Die vier test/diagnostics*.test.js -Dateien; fünf Dateien unter test/fixtures/diagnostics/ ; scripts/smokeDiagnostics.js : Dieses Dokument.

Integriert/aktualisiert: src/main/index.js , src/main/ipc/registerCoreIpc.js , src/preload/corePreload.js ; src/renderer/index.html ; app.js : i18n.js = package.json + app/README.md / README.md x .gitignore (vier öffentliche Fixture-Ausnahmen) und die Root Gitleaks Allowlist nennen das bewusst öffentliche TLS Testkey-Fessel nur knapp. Der Signing-CA-Privatschlüssel wurde verworfen; die Fixture wird von der Laufzeit der Anwendung nie verwendet.