> Jazyková revize tohoto překladu probíhá. Při nejasnostech porovnejte [anglický originál](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Diagnostika serverů Integrovaný do hlavní postranní lišty, v pořadí Pluginy → Diagnostika serveru → Hash & Checksum. Nevyžaduje žádnou relaci SSH nebo stažený plugin. Všechny runtime kódy, testy a příslušenství žijí ve `app/`; modul nemá žádnou závislost na úložišti sourozenců. Repozitář nemá žádné `doc.md`, takže tento dokument i oba README popisují implementaci. ## Pracovní postup uživatele Zadejte jméno hostitele, URL IPv4, IPv6 nebo HTTP(S)/WS(S). Bare hostnames/IPs default HTTPS; explicitní URL si během požadavku zachovávají svou cestu, dotaz a port. Credentials in URLs, unsupported schemes, whitespace/control characters and shell-like hostnames are recommended. IPv6 literály jsou automaticky řazeny; identifikátory zaokrouhlených/link-local zón nejsou podporovány URL parserem. Vyberte Auto (prefer IPv4, jinak IPv6), IPv4 a IPv6 nebo obojí. Vyřešit adresy pro výběr konkrétní aktuální odpovědi. Přehled zobrazuje všechny vyřešené odpovědi; sondy testují zvolenou adresu nebo jednu adresu na požadovanou rodinu. Obě rodiny se měří nezávisle. Samotná přítomnost AAAA nikdy neznamená, že pracuje na konektitě IPv6. Spusťte diagnostiku běží DNS, ping, traceroute, HTTP, komprese, TLS a vybrané TCP porty. WebSocket je opt-in. Každý nástroj má také samostatné řízení běhu/stop. Jeden diagnostický test může být okamžitě aktivní. Dokončený běh znamená, že nástroje skončily, ne že by každá sonda uspěla. Neexistuje žádný verdikt deky ? Server offline. Timeout, počet paketů, opakování, maximální chmel, DNS resolver, výběr protokolu, teplé připojení a HTTP/HTPS srovnání jsou konfigurovatelné. Změna cíle vymaže dříve vybranou IP adresu. Historie může znovu otevřít, porovnat dvě reporty, odstranit, importovat JSON, kopírovat nebo exportovat JSON/CSV/TXT prostřednictvím nativních dialogů Core. Light/dark/system téma se vztahuje na diagnostické sekce a je uložena ve stávající konfiguraci UI. CZ/DE/EN okamžitě následuje jazyk aplikace. ## Komponenty a chování protokolu | Komponenta | Implementace a interpretace | | --- | --- | | `common.js` | validuje cíle/optiky, limity a hodnoty enum; IDNA konverze; numerická statistika vylučuje neznámé hodnoty. | | `dnsDiagnostics.js` | Použití řešení systémového rozlišení `dns.lookup` ctít OS konfiguraci a hostí soubory. Rekordní dotazy používají ohraničené UDP DNS se zpožděním TCP pro redukované odpovědi proti `dns.getServers()` nebo explicitně zvolenému vlastnímu/veřejnému řešiteli. Žádné implicitní přepnutí na veřejný DNS. | | `processTools.js` | Provádí OS ping/traceroute s polem argumentů a `shell: false`, ohraničený výstup, explicitní timeout a přerušit / zabít čištění. Parses paket repairs and hop, spíše než zpracování trvání procesu jako RTT. | | `httpDiagnostics.js` | Bundled curl for HTTP/1.1, HTTP/2 and HTTP/3; striktní ověření certifikátu a zapnutá rodina IP. Každá verze je požadována nezávisle; skutečná verze se zaznamenává. | | `socketDiagnostics.js` | Explicit TLS version sondy, ohraničené TCP připojení/pasivní bannery, předautentifikace SSH sledování hostitele pomocí stávající závislosti na ssh2 a volitelné RFC 6455 upgrade validation. | | `diagnosticsService.js` | Spustí a zruší nástroje, vybere/opraví adresy, streamuje pokrok, zachovává částečná měření a vlastní termín spuštění. | | `historyStore.js` | Verze ohraničené místní historie, redakce, schema-kontrolované dovozy a vývoz naměřených dat. | ### ICMP a trasy Ping defaults to four individually exponed ICMP echo requests. Výsledky obsahují naměřené per-packet RTT, přijaté/zaslané počty, ztráty, min/average/max, směrodatnou odchylku populace, střední absolutní rozdíl mezi po sobě jdoucími změřenými RTT (jitter), TTL/Hop Limit při tisku a časovými známkami. Odpověď `<1 ms` se započítává spíše jako přijatá s horní hranicí, než aby byla vynalezena numerická RTT. Neznámé RTT jsou vyloučeny ze statistiky latence. Statistika používá uchované okno maximálně paketů 500; odeslané počty /received/loss pokrývají celý chod. Grafy zobrazují poslední pozorování 200, s odlišnými symboly pro odpovědi, odpovědi na dílčí rozlišení, chybějící odpovědi a explicitní timeouty požadavku/procesu. Chybějící odpověď může odrážet filtrování ICMP, ztrátu paketu nebo timeout; tato pozorování nemohou jednoznačně identifikovat firewall. Chybějící spustitely, lokální selhání oprávnění a neplatná vývolnost nástroje jsou samostatné chyby nástrojů, nikoli ztráta paketů nebo nedostupnost serveru. Nevyžaduje se žádná eskalace výsad. Traceroute proudí chmel, adresy, jednotlivé sondy, prostředky a pozorované nezodpovězená procenta. Reverzní DNS se po trase vyřeší pomocí vybraného resolveru. Repetice porovnávají pozorované sekvence hop-adresy; rozdíly mohou odrážet vyvážení zatížení. Nezodpovězený mezi chmelem nezajišťuje rozbitou trasu. Metadata a metody sondy se objevují v rozbalitelných detailech. macOS vyžaduje celoplošnou stopovou trasu; efektivní zaoblený timeout se zaznamená. ### DNS Dvanáct typů záznamu jsou A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS a DNSKEY. DNS drátový parsing kontroluje identifikaci transakce/dotazník, velikost záznamů, smyčky kompresního pointeru a limity zpráv. Odpovědi zachovávají rekordní TTL, časování dotazů, resolver a stavy NXDOMAIN/NODATA/SERVFAIL/refused/timeout. Vyhledávání adres OS nemůže TTL dodat; samostatný dotaz na záznam může. Následující CNAME je ohraničen na osm spojení s detekcem cyklu. Konzistence opakuje A/AAAA odpovědi z vybraného řešitele a provádí PTR s potvrzením dopředu pro IP literální DNS testy. Změněné odpovědi jsou postřehy, nikoli důkaz chyby DNS. Vyžádejte si SRV podle zadání cílového jména; v případě potřeby zadejte název služby, jako je `_service._tcp.example.org`. DNSSEC je vždy **not validován**. Přítomnost DS/DNSKEY a dokonce ani vlajka AD řešitele se nikdy nepovažuje za nezávislé potvrzení. ### HTTP, výkon a komprese HTTP/1.1 tuto verzi přijímá jako podporovanou pouze tehdy, když byla skutečně vrácena. HTTPS HTTP/2 vyžaduje vyjednané h2; není přeznačeno žádné zpětné převzetí. Cleartext HTTP/2 používá předchozí znalosti, nikoli Upgrade sondu HTTP/1.1. Verifikace TLS zůstává přísná pro každý HTTP/WebSocket požadavek. Ruční přesměrování je omezeno na osm; smyčky, neplatná místa a nadměrné přesměrování selhávají explicitně. V URL zdroje/určení jsou viditelné kompletní řetězové záznamy změn v oblasti cross-domain a HTTPS downgrade; schémata a www změny. Zamítnou se programy přesměrování k potvrzení a jiné systémy než HTTP(S). Každý přesměrování přes křížový host je řešen nezávisle prostřednictvím vybraného resolveru a požaduje rodinu IP. Měření zahrnují DNS (pokud jsou provedena), TCP, TLS, konečnou odpověď TTFB, celkovou TTF B včetně DNS/redirects, download, přesměrování a celkový čas stěny, aktuální jednotky bytes, přenosová rychlost, stav, hlavičky odezvy, aktuální adresu serveru/port, ALPN a ověřené opětovné použití připojení. Fáze DNS/TCP/TLS, které nejsou prováděny na připínání nebo opětovném připojení, jsou `N/A` a nikoli falešné nuly. QUIC nemá fázi TCP; jeho podání rukou je zaznamenáno zvlášť. Jako měření entity-byte se neuplatňuje hlavičkový převod nebo plný přenos drátu. Jedná se o server/síť načasování, ne renderování stránek nebo Lighthouse skóre. Každý zvolený protokol používá stejný cíl a opakování. IPv4/IPv6 a HTTP/HTTPS jsou explicitní možnosti srovnání. Alternativní schéma používá svůj výchozí port. Každý protokol spouští nezávislý proces svazování klientů na jeden vzorek. Spojení není uplatněno. Statistika celkového času zahrnuje min/average/median/max/nearest-rank P95 a oddělenou míru chyb v dopravě/protocolu; kódy stavu HTTP zůstávají viditelné i tehdy, když server úspěšně vrací odpověď 4xx/5xx. Kompresi posílá identitu, gzip, deflovat, br a (kdy runtime podporuje) zstd jako samostatné žádosti o kódování. Obsah-kódování musí odpovídat, a ohraničené dekomprese musí uspět. Poměr se vypočítá pouze v případě, že dekódované tělo hash, konečné URL a stav odpovídají výchozí hodnotě identity. Ignorovaná kódování jsou nepodporována; měnící se / dynamické subjekty nemají žádný poměr. Toto je pozorování pro URL/status, nikoli univerzální podporu serveru. Kontrola bezpečnostního záhlaví ukazuje přítomnost a hodnotu HSTS, CSP, X-Content-Type-Options, Referler-Policy, oprávnění-Policie a X-Frame-Options. Směrnice o rámových předcích CSP může tuto směrnici nahradit. Přítomnost neurčuje, že je politika správně nastavena nebo že je web zabezpečen. ### Požadavky a důkaz HTTP/3 HTTP/1.1, HTTP/2 a HTTP/3 používají stejný curp klient. macOS arm64 a Linux x64 Použít kudrliny 8.22.0, OpenSSL 3.5.9, nhttp2 1.70.0, ngtcp2 1.25.0 anghttp3 1.18.0. Windows x64 používá oficiální curl-for-win 8.22.0_3 static build s LibreSSL 4.3.3 a stejné HTTP knihovny. Není potřeba žádný systémový zádrhel, runtime download nebo povolení administrátora. Receptem Windows progressně opakovatelné konstrukce je https://github.com/curl/curl-for-win/tree/9d77e31e. Před balením postavte `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`). macOS/Linux vyžaduje nástroje C/C++, CMake, Ninja, Perl, make a pkg-config. Zdroje jsou připínány verzí a proti proudu SHA-256 ve `scripts/native/dependencies.lock.json`. Skript ověřuje každý download, staticky propojuje třetí strany transportní knihovny a selhává bez funkcí HTTP2/HTTP3/SSL. Pouze knihovny operačního systému zůstávají dynamické. Windows používá přišpendlovaný oficiální binární archiv, nikoli lokálně sestavený transportní stoh Windows. Sdružený CA soubor má svůj vlastní připíchnutý hash; licence komponent a protipostavený provenience doprovází runtime. Klient a obchod s důvěrou jsou nainstalovány mimo aplikaci.asar v `resources/native-runtime/-/`. Před použitím každý diagnostický test hašů, architektury a spustitelných schopností. Konfigové soubory, proxies, TLS důvěry prostředí přesměrování a vstřikovací proměnné knihovny jsou vyloučeny. Curdig běží s absolutní cestou, shell disabled, ověřený CA důvěru, explicitně vyřešené rodiny IP, žádné cookies, automatické přesměrování, a ohraničený výstup a čas. Přesměrování je ověřeno a znovu vyřešeno aplikací. Je podporován HTTPS v jiných portech než 443. HTTP/3 používá `--http3-only` a potvrzuje se až po dokončení přenosu hlášení HTTP verze 3, úspěšném ověření certifikátu. Chybové odpovědi HTTP jako 404 mohou protokol potvrdit. Alt-Svc je reklama, ne důkaz. Timeout QUIC, porucha certifikátu, selhání DNS, odmítnutí připojení, nekompatibilní protokol a selhání komponenty zůstávají odlišné. UDP timeout zanechá podporu serveru neověřenou. QUIC potřesení rukou není uvedeno jako TCP načasování. Každé měření začíná samostatným procesem/spojením. Teplá volba nevyžaduje opětovné použití spojení pro sdruženého klienta. To udržuje porovnání protokolu konzistentní. Zprávy zahrnují runtime verze, schopnosti, ověření TLS a QUIC načasování, zatímco historie/export odstraní těla, URL dotazy a autentizační hlavičky. Aktualizovat tyto kolíky a obnovit každou podporovanou platformu při aktualizaci přepravního stacku nebo CA Trust store. Publikované artefakty a zdrojové snímky jsou neměnné. ## hlavní IPC Přednačítá pouze `window.chjCore.diagnostics`; všichni manažeři si zachovávají stávající kontrolu odesílatele hlavního okna a práce na síti zůstane v hlavní části. Výsledky používají `{ ok: true, value }` nebo `{ ok: false, error: { code, message } }`. | Channel / preload method | Payload / result | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Validované cílové/settingy → cílové a vyřešené adresy. Nanejvýš dvě souběžné žádosti o řešení krize. | | `diagnostics:start` / `start(options)` | validovaný cíl/settings/tool výběr → neprůhledné ID úlohy a počáteční report. | | `diagnostics:cancel` / `cancel(id, tool?)` | Stornol one active/queued tool or the whole run. | | `diagnostics:get` / `get(id)` | Snapshot známé run nebo uložené zprávy. | | `diagnostics:history` / `history()` | Přehledy místních dějin. | | `diagnostics:removeHistory` / `removeHistory(id)` | Odebrat vybranou položku historie. | | `diagnostics:copy` / `copy(id, format)` | Hlavní píše redigovanou známou zprávu do schránky. | | `diagnostics:export` / `export(id, format)` | JSON/CSV/TXT pomocí dialogového okna nativního uložení; renderer nemůže dodat cestu souborového systému. | | `diagnostics:import` / `import()` | Native file driver, size/schema/depth validation and redaction before storing. | | `diagnostics:progress` / `onProgress(callback)` | Vyřešené adresy, spouštění/dokončování nástrojů, pakety, chmel, HTTP vzorky a dokončení; vrací odhlášení zpětného odběru. | Není vystaven žádný druh shellu, souborového systému nebo sítě API. Kontextová izolace, pískoviště, vypnutá integrace uzlů a stávající renderer CSP zůstávají zapnuty. Stávající smlouvy o pluginu a ověření aktualizace/výjimky se nemění. ## Rozpočtové a místní údaje - Jeden běh, dva aktivní nástroje, maximálně dvě IP rodinné sondy na jeden nástroj; TCP navíc omezuje každou adresu na čtyři spoje. - Timeout pro per-operaci 250–30000 ms; pakety 1–100, opakování 1–20 , 1–40 chmel, porty 1–16. Pravidelné běhy se zastaví na 5 minut; kontinuální ping na 30 minut. Podproces traceroute má další kryt 180-sekundu. - Procesní výstup normálně 256 KiB; HTTP entita tělo 2 MiB; dekompresní tělo 8 miB; HTTP hlavičky ohraničené; žádné odezvy subjekty zadat historii. - Udržujte maximálně pakety 500/progress akce, pět in-paměti běží, třicet historických zpráv a 10 MiB historie. Historie využívá existujícího soukromého atomového spisovatele na `/diagnostics/history.json` (mode 0600). - Dovozy jsou nanejvýš 2 MiB, schema 1, s ohraničeným hnízděním a validovanými výsledky kolekce. CSV buňky jsou unikly a předpony vzorce neutralizovány. Dotazy/fragmenty URL, pověřovací listiny, cookies, autentizační hlavičky a raw body jsou vyloučeny z uložených zpráv /copied/exported. Surové detaily zobrazují naměřená strukturovaná data, nikoli paketové zachycovací nebo zachycené těleso odezvy. - Žádná synchronizace cloudů, automatické přihlášení, změny konfigurace serveru nebo agresivní/nevázané skenování. Uživatel si výslovně zvolí cíl/ports/resolver. ## Požadavky na platformu a ověřování | Platforma | ICMP | Route | Další protokoly | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`, ICMP | Punčochové curl.exe s HTTP/2 a HTTP/3. Lokální RTT pole nezávisí na slově ¶rim time'. | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; celá sekunda čeká | Bundled curl s HTTP/2 a HTTP/3. | | Ubuntu/Linux | iputils `ping -4/-6`Z | standard `traceroute -4/-6`, UDP | Bundled curl with HTTP/2 and HTTP/3; chybějící ICMP/route tools jsou hlášeny samostatně. | Nebyla přidána žádná nová závislost na npm. Implementace využívá zabudované uzly a stávající ssh2 aplikace. Neinstaluje systémové nástroje ani nevyžaduje správní práva. Firewally a omezení UDP mohou zabránit tomu, aby test zavedl podporu; nemohou být odvozeny pouze z timeoutu. Automatické pokrytí je v `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` a `diagnosticsIpc.test.js`: validace/IPv6 doslovné, původní/místní DNS UDP+TCP příslušenství, chybějící/dvourodinné odpovědi a chyby řešitelů, CNAME/consistence, OS argument/parsing utilizations, ohraničené reálné dětské procesy, blokované ICMP pozorování, skutečné místní HTTP/1.1 a TLS h2, přesměrování/omezení těla/timeouts/reuse, kompresi povoleno/ignorováno, HTTP3 schopnosti/výsledek úspěchu analýze/odmítnutí pádu, místní důvěra CA/mismatch/expiration a skutečné IPv6 HTTP/HTTPS, TCP připojení/refused/mock Timeout, skutečný WebSocket a SSH pre-authentication podání ruky, zrušení/cleanup/partial výsledky, offline stát, soukromá historie kolo-trip/import odmítnutí / vývoz, důvěryhodné IPC a předzásobení předplatné. `npm test` provádí deterministické testy bez veřejných testovacích serverů. `npm run test:diagnostics:ui` spouští `scripts/smokeDiagnostics.js` v grafické Electron ploše pomocí výroby UI/preload/IPC a reálných lokálních HTTP/kompresních sond. Nesouvisející služby jsou pouze v tomto zkušebním postroji napíchnuty/vypnuty. Kontroluje navigační řád, výstupy protokolu, perzistence, CZ/DE/EN, obě témata, úzký přepad oken a předvolby pískoviště. Pokud shell nastaví ELECTRON_RUN_AS_NODE, odpojte jej pro tento příkaz. Aktuální runtime verification pokrývá řízené QUIC transfery, IPv4/IPv6, HTTPS na nevýchozím portu, 404 odezvy, TLS selhání a TCP-pouze servisní reklama Alt-Svc. Per-build výsledky doprovázet každé uvolnění. Explicitní volitelné limity: žádné nezávislé validace DNSSEC (vyžaduje kompletní validaci životního cyklu řešitele/trust-anchor), žádný audit Lighthouse (pouze čas serveru/sítě), bez deprecovaného TLS audit nebo zrušení / služba CT, ne HTTP3 tvrzení o použití tepla a ne HTTP/3 měření tepla a tepla. Nepodporované schopnosti jsou zobrazeny spíše než simulovány. ## Soubory v této změně Vytvořeno: sedm servisních souborů v souborech `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js` a `diagnostics.css`. Čtyři soubory `test/diagnostics*.test.js`: pět souborů v rámci `test/fixtures/diagnostics/` (`scripts/smokeDiagnostics.js`); tento dokument. Integrovaný/aktualizováno: `src/main/index.js`, `src/main/ipc/registerCoreIpc.js` , `src/preload/corePreload.js` a `src/renderer/index.html` (`app.js`), `i18n.js`; `package.json` - `app/README.md`. kořen `README.md`: `.gitignore` (4 výjimky z veřejných zdrojů) a kořenové gitleaks umožňují úzké pojmenování veřejně test-klíčového zařízení TLS . Podepisovací CA soukromý klíč byl vyřazen; upínač se nikdy nepoužívá v runtime aplikace.