> Jazyková revízia tohto prekladu prebieha. Pri nejasnostiach porovnajte [anglický originál](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Diagnostika servera Integrovaný do bočného panela jadra, v poradí Plugins → Server Diagnostika → Hash & Checksum. Nevyžaduje žiadne sedenie SSH alebo stiahnutý plugin. Všetky bežecké kódy, testy a upínacie zariadenia žijú v `app/`; modul nemá žiadnu závislosť na súrodeneckých úložiskách. Úložisko nemá `doc.md`, takže tento dokument a obe README popisujú implementáciu. ## Užívateľský pracovný postup Zadajte názov hostiteľa, IPv4, IPv6 alebo HTTP [S]/WS (S) URL. Bare hostnames/IPs default to HTTPS; explicitné URL si počas žiadosti zachovávajú svoju cestu, dotaz a port. Credenciály v URL, nepodporované schémy, znaky bielej plochy/kontroly a shell-like hostnames sú odmietnuté. Doslovné znaky IPv6 sú automaticky zafixované; identifikátory s rozsahom/odkazom na lokálnu zónu nie sú podporované parserom URL. Vyberte si Auto (prefer IPv4, inak IPv6), IPv4 a IPv6 alebo oboje. Resolvovať adresy pre výber konkrétnej aktuálnej odpovede. Prehľad zobrazuje všetky vyriešené odpovede; sondy testujú vybranú adresu alebo jednu adresu na požadovanú skupinu. Obidve rodiny sa merajú nezávisle. Samotná prítomnosť AAA nikdy neznamená fungovanie pripojenia IPv6. Spustiť Diagnostika beží DNS, ping, traceroute, HTTP, kompresie, TLS a vybrané TCP porty. WebSocket je opt-in. Každý nástroj má tiež samostatné ovládanie Run/Stop. Jeden diagnostický beh môže byť aktívny naraz. Dokončená scéna znamená, že nástroje sa skončili, nie že by bola úspešná každá sonda. Neexistuje žiadna deka yserver offline a rozsudok. Časový limit, počet paketov, opakovania, maximálny chmeľ, rozdeľovač DNS, výber protokolu, teplé pripojenie a porovnanie HTTP/HTTPS sú konfigurovateľné. Zmena cieľa vylučuje predtým vybrané IP. História môže znovu otvoriť, porovnať dve správy, odstrániť, import JSON, kopírovať alebo exportovať JSON/CSV/TXT prostredníctvom natívneho Core dialógov. Téma Light/dark/system sa vzťahuje na diagnostickú časť a je uložená v existujúcej UI konfigurácii. CZ/DE/EN okamžite nasleduje jazyk aplikácie. ## Komponenty a správanie protokolu | Komponent | Implementácia a interpretácia | | --- | --- | | `common.js` | Overuje ciele/možnosti, limity a enum hodnoty; konverziu IDNA; číselné štatistiky nezahŕňajú neznáme hodnoty. | | `dnsDiagnostics.js` | Použitie rozlíšenia systémovej adresy `dns.lookup` poctiť konfiguráciu OS a hostiť súbory. Nahrávať otázky použiť ohraničené UDP DNS s TCP záložný pre skrátené odpovede proti `dns.getServers()`, alebo explicitne zvolený vlastný / verejný riešiteľ. Žiadny implicitný prechod na verejné DNS. | | `processTools.js` | Vykonáva OS ping/traceroute s pole argumentov a `shell: false`, ohraničený výstup, explicitný časový limit a zrušenie/vyčistenie zabitia. Spracuje odpovede na balíčky a chmeľ, namiesto toho, aby sa s ním zaobchádzalo ako s RTT. | | `httpDiagnostics.js` | Prebublávaná kučera na HTTP/1.1, HTTP/2 a HTTP/3; prísne overenie certifikátu a prišpendovaný rad IP. Každá verzia sa požaduje nezávisle; skutočná verzia je zaznamenaná. | | `socketDiagnostics.js` | Výslovný TLS verziové sondy, ohraničené TCP spojenia/pasívne bannery, predautentifikácia SSH pozorovanie pomocou kľúča hostiteľa s použitím existujúcej závislosti ssh2 a voliteľného RFC 6455 Upgrade validácie. | | `diagnosticsService.js` | Spustí a zruší nástroje, vyberie/overuje adresy, streams progress, zachová čiastočné merania a vlastní konečný termín. | | `historyStore.js`, | Verzia ohraničená lokálnou históriou, redakciou, schémou kontrolovaným dovozom a meraným vývozom dát. | ### ICMP a trasy Ping defaults to four individually executed ICMP echo requests. Výsledky obsahujú namerané hodnoty RTT, prijaté/prijaté počty, straty, min/average/max, smerodajnú odchýlku populácie, priemerný absolútny rozdiel medzi po sebe nasledujúcimi meraniami RTT (jitter), TTL/Hop Limit pri vytlačení a časovými pečiatkami. Odpoveď `<1 ms` sa počíta ako prijatá s hornou hranicou, namiesto vynájdenia numerickej RTT. Neznáme RTT sú vylúčené zo štatistiky latencie. Štatistiky používajú zachované okno väčšiny pakiet 500; send/received/loss počíta celý beh. Grafy zobrazujú posledné pozorovania 200, s odlišnými symbolmi pre odpovede, odpovede na podrozlíšenie, chýbajúce odpovede a explicitné žiadosti/časy procesu. Chýbajúca odpoveď môže odzrkadľovať filtrovanie ICMP, stratu paketov alebo časový limit; tieto pozorovania nemôžu jednoznačne identifikovať firewall. Chýbajúce spustiteľné zariadenia, lokálne poruchy povolenia a neplatné invokácie nástroja sú samostatné chyby nástrojov, nie strata paketov alebo nedostupnosť servera. Nevyžaduje sa žiadna eskalácia privilégií. Traceroute potoky chmeľ, adresy, jednotlivé sondy, prostriedky a pozorované nezodpovedané percentá sondy. Reverzné DNS je vyriešené po trase pomocou vybraného resolvera. Opakovania porovnávajú pozorované sekvencie hop-adresy; rozdiely môžu odrážať vyváženie zaťaženia. Nezodpovedaný medzichmeľ nevytvára rozbitú cestu. Surové metaúdaje a metóda sondy sa objavujú v expandovateľných detailoch. macOS vyžaduje celočíselné-druhé traceroute čakania; je zaznamenaný efektívny zaokrúhlený čas odstávky. ### DNS Dvanásť typov záznamov sú A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS a DNSKEY. DNS wire parsing checks transaction/question identita, veľkosť záznamov, kompresné slučky a limity správ. Odpovede uchovávajú záznamy TTL, časovanie dotazu, resolver a NXDOMAIN/NODATA/SERVFAIL/refused/timeout štáty. Hľadanie adresy OS nie je možné poskytnúť TTL; samostatné dotaz záznamu môže. CNAME nasledujúce je ohraničená na osem spojení s detekcia cyklu. Konzistentnosť opakuje odpovede A/AAA z vybraného resolvera a vykonáva vopred potvrdené PTR pre IP-doslovné testy DNS. Zmenené odpovede sú pozorovania, nie dôkaz poruchy DNS. Otázky pre SRV použite cieľový názov, ako je uvedené; v prípade potreby zadajte názov služby, ako je `_service._tcp.example.org`. DNSSEC je vždy **not validované**. Prítomnosť DS/DNSKEY a dokonca aj AD vlajka riešiteľa sa nikdy nepovažujú za nezávislé potvrdenie. ### HTTP, výkon a kompresia HTTP/1.1 akceptuje túto verziu ako podporovanú len vtedy, keď bola skutočne vrátená. HTTPS HTTP/2 vyžaduje dohodnuté h2; žiadna opomenutie nie je znovu označené. Cleartext HTTP/2 používa predchádzajúce znalosti, nie sondu Upgrade HTTP/1.1. Overenie TLS zostáva prísne pre každú požiadavku HTTP/WebSocket. Manuálne presmerovanie je obmedzené na osem; slučky, neplatné destinácie a nadmerné presmerovania výslovne zlyhávajú. Celý reťazec zaznamenáva zmeny medzi doménami a zníženie hodnoty HTTPS; schémy a zmeny www sú viditeľné v URL zdroja/určenia. Systémy presmerovania kreditov a neHTTP (S) sa zamietajú. Každý cross-host presmerovanie je vyriešený nezávisle prostredníctvom vybraného riešiteľa a požadovanej skupiny IP. Merania zahŕňajú DNS (pri vykonávaní), TCP, TLS, konečnú odpoveď TTFB, celkovú hodnotu TTFB vrátane DNS/redirects, sťahovanie, presmerovanie a celkový čas steny, skutočné byty subjektu, prenosovú rýchlosť, stav, hlavičky odozvy, aktuálnu adresu servera/prístavu, ALPN a overené opätovné použitie pripojenia. Fázy DNS/TCP/TLS sa nevykonávajú na prišpendlenom alebo opätovne používanom pripojení sú `N/A`, nie falošné nuly. QUIC nemá TCP fázu; jeho podanie ruky sa zaznamenáva osobitne. Prevod záhlavia alebo plný drôt nad hlavou sa nevyhlasuje ako meranie bytovej jednotky. Jedná sa o server/sieť načasovanie, nie stránky renderovanie alebo Lighthouse skóre. Každý vybraný protokol používa rovnaký cieľ a opakovania. IPv4/IPv6 a HTTP/HTTPS sú explicitné možnosti porovnávania. Alternatívna schéma používa svoj štandardný port. Každý protokol spustí nezávislý proces zviazaného klienta na vzorku. Opätovné použitie spojenia sa netvrdí. Celková časová štatistika obsahuje min/average/median/max/nearest-rank P95 a samostatnú chybovosť prenosu/protokolu; statusové kódy HTTP zostávajú viditeľné aj vtedy, keď server úspešne vráti odpoveď 4xx/5xx. Kompresia posiela identitu, gzip, deflate, br a (keď ju podporuje behtime) zstd ako samostatné požiadavky Accept-Encoding. Content-Encoding musí zodpovedať, a ohraničená dekompresia musí byť úspešná. Pomer sa vypočíta len vtedy, ak dekódované telo haš, konečné URL a stav zodpovedajú základnej línii identity. Ignorované kódovanie nie je podporované; meniace sa/dynamické orgány nemajú pomer. Toto je pozorovanie pre URL/status, nie univerzálny server podporu. Kontroly bezpečnostnej záhlavia ukazujú prítomnosť a hodnotu HSTS, CSP, X-Content-Type-Možnosti, Odkaz-Politika, Oprávnenia-Policia a X-Frame-Možností. Smernica zo CSP snímok prepínačov môže nahradiť druhú smernicu. Prítomnosť nestanovuje, že politika je správne konfigurovaná alebo že webová stránka je bezpečná. ### Požiadavky na HTTP/3 a dôkaz HTTP/1.1, HTTP/2 a HTTP/3 používajú rovnakého kučerového klienta. macOS arm64 a Linux x64 použiť kučeru 8.22.0, OpenSSL 3.5.9, nghttp2 1.70.0, ngtcp2 1.25.0 nghttp3 1.18.0. Windows x64 používa oficiálnu curl.se curl-for-win 8.22.0_3 statickú stavbu s LibreSSL 4.3.3 a rovnakými HTTP knižnicami. Nie je potrebné žiadne systémové curl fallback, sťahovanie času alebo povolenie správcu. Windows predreceptúra reprodukovateľnej konštrukcie je https://github.com/curl/curl-for-win/tree/9d77e31e . Zostavte so `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`) pred balením. macOS/Linux vyžadujú C/C++ nástroje, CMake, Ninja, Perl, make a pkg-config. Zdroje sú pripinnené podľa verzie a proti prúdu SHA-256 v `scripts/native/dependencies.lock.json`. Skript overuje každý sťahovanie, staticky spája dopravné knižnice tretích strán a zlyhá bez funkcie HTTP2/HTTP3/SSL. Iba knižnice operačného systému zostávajú dynamické. Windows používa oficiálny binárny archív, nie lokálne zostavený prepravný stack Windows. Súbor zviazaného CA má svoj vlastný prišpendovaný hash; licencie na komponenty a predné stavba proveniencie sprevádzajú čas. Klient a dôveryhodný obchod sú nainštalované mimo App.asar v `resources/native-runtime/-/`. Každá diagnostika pred použitím overí hashes, architektúru a spustiteľné schopnosti komponentov. Konfig súbory, proxies, TLS dôveryhodné prostredie prepíše a premenné vstrekovania knižníc sú vylúčené. curl beží s absolútnou cestou, shell vypnutý, overené CA dôveru, explicitne vyriešený IP rodina, žiadne cookies, žiadne automatické presmerovanie, a ohraničený výstup a čas. Redirects sú validované a re-riešené v žiadosti. HTTPS na portoch iných ako 443 je podporovaný. HTTP/3 používa `--http3-only` a potvrdzuje sa až po dokončení prenosu HTTP verzie 3, ako aj po úspešnom overení certifikátu. HTTP chybové odpovede, ako je 404 môže potvrdiť protokol. Alt-Svc je reklama, nie dôkaz. QUIC timeout, zlyhanie certifikátu, zlyhanie DNS, odmietnutie pripojenia, nezlučiteľný protokol a porucha komponentu zostávajú odlišné. Časový limit UDP ponecháva server podporu neoverený. QUIC podanie ruky načasovanie nie je hlásené ako TCP načasovanie. Každé meranie spustí samostatný proces/spojenie. Teplá možnosť nevyžaduje opätovné použitie pripojenia pre zoskupeného klienta. To vedie k konzistentným porovnávaniam protokolov. Správy zahŕňajú runtime verzie, schopnosti, overenie TLS a načasovanie QUIC, zatiaľ čo história/export odstrániť telá, URL otázky a autentifikačné hlavičky. Aktualizujte tieto kolíky a prestavte každú podporovanú platformu pri aktualizácii prepravného zásobníka alebo CA trust obchod. Publikované artefakty a zdrojové snímky sú nemenné. ## Základné IPC Pred načítaním sa odhalí iba `window.chjCore.diagnostics`; všetci manipulátori si zachovajú kontrolu hlavného okna odosielateľa a sieťovú prácu zostane v hlavnom. Výsledky používajú `{ ok: true, value }` alebo `{ ok: false, error: { code, message } }`. | Channel / metóda prednačítania | Payload / výsledok | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Overené ciele/nastavenia → cieľová a vyriešená adresa. Nanajvýš dve súbežné žiadosti o uznesenie. | | `diagnostics:start` / `start(options)` | Overený cieľ/settings/tool výber → nepriehľadné ID úlohy a počiatočná správa. | | `diagnostics:cancel` / `cancel(id, tool?)` | Zrušiť jeden aktívny/prerušený nástroj alebo celý beh. | | `diagnostics:get` / `get(id)`Z | Snapshot známeho spustiť alebo uložiť správu. | | `diagnostics:history` / `history()` | Súhrny o miestnej histórii. | | `diagnostics:removeHistory` / `removeHistory(id)`Z | Odstrániť vybranú položku histórie. | | `diagnostics:copy` / `copy(id, format)` | Main píše do schránky redigovanú známu správu. | | `diagnostics:export` / `export(id, format)` | JSON/CSV/TXT pomocou natívneho dialógu uloženia; kresba nemôže poskytnúť cestu súborového systému. | | `diagnostics:import` / `import()` | Natívny zberateľ súborov, veľkosť/schema/depth validácia a redakcia pred uskladnením. | | `diagnostics:progress` / `onProgress(callback)`Z | Vyriešené adresy, spustenie/doplnenie nástroja, pakety, chmeľ, vzorky HTTP a dokončenie; vráti odhlásiť callback. | Nie je vystavený žiadny generický shell, súborový systém ani sieť API. Kontextová izolácia, pieskovisko, vypnutá integrácia uzla a existujúci konfigurátor CSP zostávajú zapnuté. Existujúce zmluvy o module a overovanie/výnimky aktualizácie sú nezmenené. ## Rozpočtové a miestne údaje - Jeden beh, dva aktívne nástroje, nanajvýš dve sondy z IP rodiny na nástroj; TCP navyše obmedzuje každú adresu na štyri spojenia. - Časový interval na prevádzku 250–30000 ms; 1–100 balíčky, 1–20 opakovania, 1–40 chmeľ, 1–16 prístavy. Pravidelné jazdy sa zastavujú na päť minút; nepretržitý ping na tridsať minút. Subproces traceroute má ďalšie 180-sekundové viečko. - Procesný výstup normálne 256 KiB; HTTP telo subjektu 2 MiB; dekomprimované telo 8 MIB; HTTP hlavičky ohraničené; žiadne orgány odpovede vstúpiť do histórie. - Udržať na väčšine 500 pakety/progresívne udalosti, päť in-memory beží, tridsať historických správ a 10 MiB histórie. História využíva existujúceho súkromného atómového spisovateľa v `/diagnostics/history.json` (mode 0600). - Dovozy sú nanajvýš 2 MiB, schéma 1, s ohraničeným hniezdením a validovanými zbierkami výsledkov. CSV bunky sú unikli a vzorec predpony neutralizuje. URL dotazy/fragmenty, poverovacie listiny, cookies, autentifikačné hlavičky a surové telá sú vylúčené zo správ uložených/copied/exported. Surové detaily ukazujú namerané štruktúrované údaje, nie pakety zachytávajú alebo uchovávajú orgán reakcie. - Žiadna synchronizácia cloudu, automatické prihlásenie, zmeny konfigurácie servera alebo agresívne/neviazané skenovanie. Užívateľ si výslovne vyberá cieľ/ports/resolver. ## Požiadavky na nástupištia a overovanie Platforma | | IMPCP | Trasa | Ostatné protokoly | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`, ICMP | Zabuchnuté curl.exe s HTTP/2 a HTTP/3. Lokalizované RTT polia nie sú závislé na slove. | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; celé číslo sekundy čakania | s hrúbkou najviac 3 mm, HTTP/2 a HTTP/3. | | Ubuntu/Linux | iputily `ping -4/-6` | štandardná `traceroute -4/-6`, UDP | s hrúbkou najviac 3 mm, HTTP/2 a HTTP/3; chýbajúce nástroje ICMP/route sa vykazujú osobitne. | Nebola pridaná žiadna nová závislosť od Npm. Implementácia využíva vstavané uzly a aplikácie existujú ssh2. Neinštaluje ani systémové nástroje, ani nevyžaduje administratívne práva. Firewally a obmedzenia UDP môžu zabrániť testu vytvoriť podporu; nemožno ich odvodiť len z časového prestávky. Automatizované pokrytie `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` a `diagnosticsIpc.test.js`: validácia/IPv6 doslovné, pôvodné/miestne DNS UDP+TCP upínacie zariadenia, chýbajúce/dvojrodinné odpovede a chyby riešiteľa, CNAME/konzistentnosť, OS argument/parsing upínacích prvkov, ohraničené procesy reálneho dieťaťa, blokované ICMP pozorovania, skutočné miestne HTTP/1.1 a TLS h2, presmerovanie/telesné limity/timeouts/reuse, kompresný/ignorovaný, HTTP3 schopnosti/úspech-výsledok pri posudzovaní/odmietnutí úpadku, miestna dôvera CA/mismatch/expiration a skutočné IPv6 HTTP/HTTPS, TCP connect/refused/mock timeout, skutočný WebSocket a SSH potrasenie rukou pred autentifikáciou, zrušenie/cleanup/partial výsledky, offline state, privátna história round-trip/import odmietnutie/export, dôveryhodné IPC a predplatné. `npm test` vykonáva deterministické testy bez verejných testovacích serverov. `npm run test:diagnostics:ui` spúšťa `scripts/smokeDiagnostics.js` v grafickej ploche Electron pomocou produkcie UI/preload/IPC a skutočných lokálnych HTTP/kompresných sond. Nepríbuzné služby sú v tomto skúšobnom postroji vytesané/vypnuté. Kontroluje navigačný poriadok, výsledky protokolu, perzistenciu, CZ/DE/EN, obe témy, úzke obežné preteky a preferencie pieskoviska. Ak shell nastaví ELECTRON_RUN_AS_NODE, odpojte ho pre tento príkaz. Súčasné overovanie času zahŕňa kontrolované QUIC transfery, IPv4/IPv6, HTTPS na non-default porte, odpovede 404 a zlyhania TLS. Výsledky na budovanie sprevádzať každé vydanie. Výslovné voliteľné limity: žiadna nezávislá validácia DNSSEC (vyžaduje úplnú validáciu životnosti riešiteľa/ručiteľa), žiadny audit majáka (len časovanie servera/siete), žiadny deprekovaný audit TLS alebo zrušenie/CT služby, žiadne tvrdenie o tepelnom použití HTTP3 a žiadne meranie tepelného využitia HTTP/3. Nepodporované schopnosti sú zobrazené skôr ako simulované. ## Súbory v tejto zmene Vytvorené: sedem súborov služieb v `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js` a `diagnostics.css`. Štyri súbory `test/diagnostics*.test.js` - päť súborov v rámci `test/fixtures/diagnostics/` (`scripts/smokeDiagnostics.js`); tento dokument. Integrovaný/aktualizovaný: `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`, koreň `README.md`, `.gitignore` (štyroch výnimiek z verejných prostriedkov) a koreňové gitleaks umožňujú úzko pomenovať úmyselne verejnosť TLS skúšobné kľúče. Podpis CA súkromný kľúč bol vyradený; upínacie zariadenie nie je nikdy použité v čase aplikácie.