> Denne oversættelse er under sproglig gennemgang. Sammenlign uklare afsnit med den [engelske original](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Serverdiagnosticering Integreret i Core sidebjælken, i rækkefølge Plugins → Server Diagnostics → Hash & Checksum. Det kræver ingen SSH session eller downloadet plugin. Alle runtime kode, tests og inventar live i `app/`; modulet har ingen afhængighed af søskende repositories. Lageret har ingen `doc.md`, så dette dokument og begge README'er beskriver implementeringen. ## Brugerarbejdsgang Angiv et værtsnavn. IPv4, IPv6 eller HTTP(S) / WS(S) URL. Bare værtsnavne / IP'er standard til HTTPS; eksplicitte URL'er bevarer deres sti, forespørgsel og port under anmodningen. URL'er, ikke-understøttede ordninger, blanke tegn/kontroltegn og skallignende værtsnavne afvises. IPv6 bogstavelige er opdelt automatisk; scoped / link-lokal zone identifikatorer understøttes ikke af URL parser. Vælg Auto (foretag IPv4, ellers IPv6), IPv4., IPv6 eller begge dele. Løs adresser for at vælge et bestemt aktuelt svar. Oversigten viser alle løste svar; sonder tester den valgte adresse eller en adresse pr. ønsket familie. Begge familier måles uafhængigt. AAAA tilstedeværelse alene indebærer aldrig arbejder IPv6 connectivity. Kør Diagnostiske kører DNS, ping, traceroute, HTTP, komprimering, TLS og de valgte TCP-porte. WebSocket er opt-in. Hvert værktøj har også en separat Run / Stop control. En diagnostisk operation kan være aktiv med det samme. En gennemført køre betyder, at værktøjerne er færdig, ikke at hver sonde lykkedes. Der er ingen tæppe server offline! dom. Timeout, pakketælling, gentagelser, maksimal humle, DNS resolver, protokolvalg, varm forbindelse og HTTP/HTTPS sammenligning kan konfigureres. Ændring af målet rydder en tidligere valgt IP. Historien kan genåbne, sammenligne to rapporter, slette, importere JSON, kopiere eller eksportere JSON/CSV/TXT gennem native Core dialoger. Light/dark/system tema gælder for diagnostik sektion og gemmes i den eksisterende UI konfiguration. CZ/DE/EN følger straks programssproget. ## Komponenter og protokol adfærd | Komponent | Gennemførelse og fortolkning | | --- | --- | | `common.js` | Validerer mål/indstillinger, grænser og enumværdier; IDNA konvertering; numeriske statistikker udelukker ukendte værdier. | | `dnsDiagnostics.js` | systemadresseopløsning bruger `dns.lookup` til at ære OS konfiguration og vært filer. Record forespørgsler bruge afgrænset UDP DNS med TCP fallback for afkortet svar mod `dns.getServers()`, eller den udtrykkeligt valgte brugerdefinerede / offentlige resolver. Ingen implicit skifte til offentlig DNS. | | `processTools.js` | Executes OS ping/traceroute med et argument array og `shell: false`, afgrænset output, eksplicit timeout og afbryd/dræbe oprydning. Parses pakke svar og humle, snarere end at behandle proces varighed som RTT. | | `httpDiagnostics.js` | Bundled curl til HTTP/1.1, HTTP/2 og HTTP/3; streng certifikat verifikation og fastspændte IP-familie. Hver version er uafhængigt anmodet; den faktiske udgave registreres. | | `socketDiagnostics.js` | Eksplicit TLS versionssonder, afgrænset TCP forbinder/passive bannere, præauthenticering SSH vært-nøgle observation ved hjælp af den eksisterende ssh2 afhængighed, og valgfri RFC 6455 Opgrader validering. | | `diagnosticsService.js` | Kører og annullerer værktøjer, vælger / validerer adresser, strømme fremskridt, bevarer delvise målinger og ejer køre deadline. | | `historyStore.js` | Versioneret afgrænset lokal historie, redigering, skema-kontrolleret import og målt dataeksport. | ### ICMP og ruter Ping-standard til fire individuelt udførte ICMP ekkoanmodninger. Resultater indeholder målt RTT pr. pakke, modtagne/sendede tællinger, tab, min/average/max, populationsstandardafvigelse, gennemsnitlig absolut forskel mellem målte RTT'er (jitter), TTL/Hop Limit ved udskrivning og tidsstempler. Et `<1 ms` svar tælles som modtaget med en øvre grænse, snarere end at opfinde en numerisk RTT. Ukendte RTTs er udelukket fra latenstid statistik. Statistikker bruger det bevarede vindue på de fleste 500 pakker; sendte/received/loss tæller dækker hele køre. Grafer viser de sidste 200 observationer, med særskilte symboler for svar, sub-opløsning svar, manglende svar og eksplicit anmodning / proces timeouts. Et manglende svar kan afspejle ICMP-filtrering, pakketab eller timeout; disse observationer kan ikke identificere en firewall endeligt. Manglende eksekverbare, lokale tilladelsesfejl og ugyldige værktøjskaldelser er separate værktøjsfejl, ikke pakketab eller serverudygtighed. Der anmodes ikke om nogen rettighedsforøgelse. Traceroute strømme humle, adresser, individuelle sonder, midler og observerede usvarede-probe procenter. Omvendt DNS løses efter ruten, ved hjælp af den valgte resolver. Gentagelser sammenligne observerede hop-adresse sekvenser; forskelle kan afspejle belastning balancering. Humle, der ikke er omfattet af et svar, etablerer ikke en brudt rute. Rå probe metadata og metode vises i udvidelige detaljer. macOS kræver heltal-sekundær sporrute venter; den effektive afrundede timeout registreres. ### DNS De tolv pladetyper er A, AAAA, CNAME, MX, NS, TXT, SOA, SSRV, CAAP, PTR, DS og DNSKEY. DNS wire parsing checks transaktion/spørgsmål identitet, rekord størrelser, kompression-pointer loops og besked grænser. Svar bevare rekord TTL'er, forespørgsel timing, resolver og NXDOMAIN/NODATA/SERVFAIL/refused/timeout stater. OS-adresseopslag kan ikke levere TTL; den separate rekordforespørgsel kan. CNAME's efterfølgende led er afgrænset til otte led med detektering af cyklussen. Konsistens gentager A/AAAA svar fra den valgte resolver, og udfører fremadbekræftede PTR til IP-literal DNS test. Ændrede svar er observationer, ikke bevis på en DNS fejl. Forespørgsler om SRV bruge målnavnet som angivet; indtast et tjenestenavn såsom `_service._tcp.example.org` når det er nødvendigt. DNSSEC er altid **not valideret**. DS/DNSKEY tilstedeværelse og selv en resolvers AD flag behandles aldrig som uafhængig validering. ### HTTP, ydeevne og komprimering HTTP/1.1 accepterer denne version som understøttet kun, når den faktisk blev returneret. HTTPS HTTP/2 kræver forhandlet h2; ingen tilbagefald er ommærket. Cleartext HTTP/2 bruger forudgående viden, ikke en HTTP/1.1 Upgrade sonde. TLS verifikation forbliver streng for hver HTTP / WebSocket anmodning. Manuelle omdirigeringer er begrænset til otte; sløjfer, ugyldige destinationer og overdreven omdirigering mislykkes eksplicit. De komplette kæde optegnelser cross-domæne ændringer og HTTPS nedgraderinger; ordninger og www ændringer er synlige i kilde / destination URL'er. Valgs prøvelser og ikke-HTTP(S) omdirigeringsordninger afvises. Hver cross-host omdirigering er løst uafhængigt gennem den valgte resolver og anmodede IP-familie. Målinger omfatter DNS (når udført), TCP, TLS, endelige svar TTFB, samlet TTFb herunder DNS / omdirigeringer, downloade, omdirigere og samlede væg tid, faktiske enhed bytes, overførselshastighed, status, respons overskrifter, faktisk serveradresse / port, ALPN og verificeret tilslutning genbrug. DNS/TCP/TLS faser ikke udføres på en fastspændt eller genbrugt forbindelse er `N/A`, ikke falske nuller. QUIC har ingen TCP-fase; dets håndtryk registreres separat. Header-transfer eller fuld wire overhead hævdes ikke som entity-byte måling. Disse er server / netværk timinger, ikke side rendering eller Lighthouse scorer. Hver valgt protokol bruger samme mål og gentagelser. IPv4/IPv6 og HTTP/HTTPS er eksplicitte sammenligningsmuligheder. Den alternative ordning bruger sin standardport. Hver protokol starter en uafhængig bundtet-klient proces per prøve. Forbindelse genbrug hævdes ikke. Total-time statistik omfatter min/average/median/max/nearest-rank P95 og en separat transport / protokol fejlrate; HTTP statuskoder forbliver synlige, selv når en server med succes returnerer et 4xx/5xx svar. Komprimering sender identitet, gzip, deflat, br og (når runtime understøtter det) zstd som separate Accept-Encoding anmodninger. Content-Encoding skal matche, og afgrænset dekompression skal lykkes. Et forhold beregnes kun, hvis den afkodede krop hash, endelige URL og status matcher identitetsbaseline. Ignorerede kodninger er ikke understøttet; skiftende/dynamiske organer har intet forhold. Dette er en observation for at URL / status, ikke universel server støtte. Sikkerheds-header kontrol viser tilstedeværelse og værdi af HSTS, CSP, X-Content-Type-Options, Referrer-Politik, Tilladelser-Policy og X-Frame-Options. Et CSP frame-ancestors direktiv kan erstatte sidstnævnte. Tilstedeværelsen viser ikke, at politikken er korrekt konfigureret eller at hjemmesiden er sikker. ### HTTP/3 krav og bevis HTTP/1.1, HTTP/2 og HTTP/3 bruge den samme bundtede krølle klient. macOS arm64 og Linux x64 bruger curl 8.22.0, openSSL 3.5.9. nghttp2 1.70.0; ngtcp2 1.25.0 and nghttp3 1.18.0 Windows x64 bruger den officielle curl.se curl-for-win 8.22.0_3 statiske bygge med LibreSSL 4.3.3 og de samme HTTP biblioteker. Ingen system curl fallback, runtime download eller administrator tilladelse er nødvendig. Windows opstrøms reproducerbare byggeopskrift er https://github.com/curl/curl-for-win/tree/9d77e31e. Byg med `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`) før emballage. macOS/Linux kræver C / C ++ værktøjer, CMake, Ninja, Perl, make og pkg-config. Kilder er fastgjort af version og opstrøms SHA-256 i `scripts/native/dependencies.lock.json`. Scriptet kontrollerer hver download, statisk forbinder tredjeparts transport biblioteker og mislykkes uden HTTP2/HTTP3/SSL funktioner. Kun drifts-system biblioteker forbliver dynamiske. Windows bruger den pinned officielle binære arkiv, ikke en lokalt kompileret Windows transport stack. Den bundtede CA-fil har sin egen pinned hash; komponentlicenser og opstrøms build herkomst ledsage runtime. Klienten og tillid butik er installeret uden app.asar i `resources/native-runtime/-/`. Hver diagnose kontrollerer komponent hashes, arkitektur og eksekverbare kapaciteter før brug. Config filer, fuldmagter, TLS tillid miljø tilsidesætter og bibliotek injektion variabler er udelukket. curl kører med en absolut sti, shell deaktiveret, verificeret CA-tillid, en eksplicit løst IP-familie, ingen cookies, ingen automatiske omdirigeringer, og afgrænset output og tid. Omdirigeringer valideres og løses igen af programmet. HTTPS på andre porte end 443 understøttes. HTTP/3 bruger `--http3-only` og bekræftes først efter en afsluttet overførsel rapportering HTTP-version 3 samt vellykket certifikat verifikation. HTTP fejl svar såsom 404 kan bekræfte protokollen. Alt-Svc er en reklame, ikke bevis. QUIC timeout, certifikatfejl, DNS-fejl, tilslutningsafslag, uforenelig protokol og komponentfejl forbliver forskellige. En UDP timeout efterlader serverunderstøttelse ubekræftet. QUIC håndtryk timing er ikke rapporteret som TCP timing. Hver måling starter en separat proces/forbindelse. Den varme indstilling kræver ikke tilslutning genbrug for den bundtede klient. Dette holder protokol sammenligninger konsekvent. Rapporterne omfatter runtime versioner, kapaciteter, TLS verifikation og QUIC timing, mens historie / eksport fjerne organer, URL-forespørgsler og autentificering overskrifter. Opdater disse pins og genopbygge hver understøttet platform, når du opdaterer transport stack eller CA trust butik. Udgivet artefakter og kilde snapshots er uforanderlige. ## Kerne IPC Preload udsætter kun `window.chjCore.diagnostics`; alle handlere bevarer den eksisterende hoved-vindue afsender check og netværk arbejde forbliver i hovedsagen. Resultater bruger `{ ok: true, value }` eller `{ ok: false, error: { code, message } }`. | Kanal / preload metode | Payload / resultat | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Valideret mål/indstillinger → mål og løst adresser. Højst to anmodninger om samtidig løsning. | | `diagnostics:start` / `start(options)` | Valideret mål/settings/tool udvælgelse → uigennemsigtig job-id og indledende rapport. | | `diagnostics:cancel` / `cancel(id, tool?)` | Annuller et aktivt/queued værktøj eller hele løbet. | | `diagnostics:get` / `get(id)` | snapshot af en kendt køre eller gemt rapport. | | `diagnostics:history` / `history()` | lokal historie resuméer. | | `diagnostics:removeHistory` / `removeHistory(id)` | Fjern den valgte historie element. | | `diagnostics:copy` / `copy(id, format)` | Main skriver en redigeret kendt rapport til klippebordet. | | `diagnostics:export` / `export(id, format)` | dJSON/CSV/TXT via native save dialog; renderer kan ikke levere en filsystem sti. | | `diagnostics:import` / `import()` | native filvælger, størrelse/schema/depth validering og redigering før lagring. | | `diagnostics:progress` / `onProgress(callback)` | Løste adresser, værktøj starter/færdiggørelser, pakker, humle, HTTP-prøver og færdiggørelse; returnerer en unsubscribe callback. | Ingen generisk shell, filsystem eller netværk API er udsat. Kontekstisolering, sandkasse, deaktiveret Node integration og den eksisterende renderer CSP forbliver aktiveret. Eksisterende plugin-kontrakter og updater verifikation / undtagelser er uændrede. ## Budgetter og lokale data - En løbetur, to aktive værktøjer, højst to IP-familie prober pr. værktøj; TCP begrænser desuden hver adresse til fire forbindelser. - Per- operation timeout 250–30000 ms 1–100 pakninger 1–20 gentagelser 1–40 humle 1–16 havne. Regelmæssig kører stop på fem minutter; kontinuerlig ping ved tredive minutter. Traceroute-underprocessen har en yderligere 180-sekundær hætte. - Proces output normalt 256 KiB; HTTP enhed organ 2 MiB; dekomprimeret krop 8 MIB; HtTP headers afgrænset; ingen respons organer indtaste historie. - Bevar på de fleste 500 pakker / fremskridt begivenheder, fem in-hukommelse kører, tredive historie rapporter og 10 MiB af historien. Historien bruger den eksisterende private atomforfatter på `/diagnostics/history.json` (mode 0600). - Import er på højst 2 MiB, skema 1, med afgrænset rede og validerede resultatsamlinger. CSV celler er undsluppet og formel præfikser neutraliseret. URL-forespørgsler/fragmenter, legitimationsoplysninger, cookies, autentificeringsoverskrifter og rå organer er udelukket fra gemte/copied/exported rapporter. Rå detaljer viser målte strukturerede data, ikke en pakkeopfangning eller bevarede respons organ. - Ingen skysynkronisering, automatisk login, serverkonfigurationsændringer eller aggressiv/ubundet scanning. Brugeren vælger udtrykkeligt target/ports/resolver. ## Krav til platform og verifikation | Platform | ICMP | Rute | Andre protokoller | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`, ICMP | Bundtet curl.exe med HTTP/2 og HTTP/3. Lokaliserede RTT-felter afhænger ikke af ordet "tid" (tid). | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; heltal-anden ventetid | Bundtet krølle med HTTP/2 og HTTP/3. | | Ubuntu/Linux | iputils `ping -4/-6`Z | standard `traceroute -4/-6`, UDP | Bundled curl med HTTP/2 og HTTP/3; manglende ICMP/route-værktøjer rapporteres separat. | Ingen ny npm afhængighed blev tilføjet. Gennemførelsen bruger node indbyggede og programmet eksisterende ssh2. Det hverken installerer systemværktøjer eller anmoder om administrative rettigheder. Firewalls og UDP begrænsninger kan forhindre en test i at etablere støtte; de kan ikke udledes fra en timeout alene. Automatiseret dækning `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` og `diagnosticsIpc.test.js`: validering /IPv6 bogstavelige, indfødte/lokale DNS UDP + TCP inventar, manglende / dual-familie svar og resolver fejl, CNAME / consistency, OS argument/parsing inventars, afgrænset rigtige barn processer, blokeret ICMP observationer, virkelige lokale HTTP/1.1 og TLS h2, omdirigeringer/kropsgrænser/timeouts/reuse, komprimering aktiveret / ignoreret HTTP3 kapaciteter/succes-resultat parsing / fallback afvisning, lokal CA tillid/mismatch/expiration og ægte IPv6 HTTP/HTTPS, TCP-forbindelse/refused/mock timeout, ægte WebSocket og SSH håndtryk, aflysning/cleanup/partial resultater, offline stat, privat historie round-trip/import afvisning / eksport, betroede IPC og preload abonnementer. `npm test` kører deterministiske tests uden offentlige testservere. `npm run test:diagnostics:ui` kører `scripts/smokeDiagnostics.js` i en grafisk Electron desktop, ved hjælp af produktion UI/preload/IPC og rigtige lokale HTTP / kompression prober. Ikke-relaterede tjenester er kun stubbede/offline i denne test sele. Det kontrollerer navigationsordre, protokolresultater, persistens, CZ/DE/EN, både temaer, smal-vindue overløb og sandkasse præferencer. Hvis skallen sætter ELEKTRON_RUN_AS_NODE, unset it for this command. Løbende kontrol af driftstid omfatter kontrollerede QUIC-overførsler IPv4/IPv6, HTTPS på en ikke-standard port, 404 svar TLS fejl og en TCP-only service reklame Alt-Svc. Per-build resultater ledsage hver udgivelse. Eksplicit valgfrie grænser: ingen uafhængig DNSSEC validering (kræver en komplet validering resolver/trust-anchor livscyklus), ingen Fyrhus revision (server / netværk timing kun), ingen forældet TLS audit eller tilbagekaldelse/CT-tjeneste, nej HTTP3 Varmt genbrugskrav, og nej HTTP/3 måling af varmegenbrug. Ikke-understøttede kapaciteter vises snarere end simuleret. ## Filer i denne ændring Oprettet: de syv servicefiler i `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js` og `diagnostics.css`.De fire `test/diagnostics*.test.js`-filer; fem filer under `test/fixtures/diagnostics/`); `scripts/smokeDiagnostics.js` dette dokument. Integreret/opdateret: `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`, rod `README.md`, `.gitignore` (fire undtagelser fra det offentlige armatur) og roden gitleaks tillader liste snævert navngivning af bevidst offentlig TLS test-key stativ. Den signerende CA privat nøgle blev kasseret; stativet bruges aldrig af programmet runtime.