> Šī tulkojuma valodas pārskatīšana vēl turpinās. Neskaidrību gadījumā salīdziniet ar [oriģinālu angļu valodā](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Servera diagnostika Integrēta Core sānjoslā, secībā Spraudņi → Server Diagnostika → Hash & Checksum. Tas prasa SSH sesijas vai lejupielādes spraudnis. Visi darba laika kodi, testi un aprīkojums dzīvo `app/`; modulim nav atkarības no brāļu un māsu repozitorijiem. Krātuvei nav `doc.md`, tāpēc šis dokuments un abi READMEs apraksta īstenošanu. ## Lietotāja darbplūsma Ievadiet datora nosaukumu, IPv4, IPv6 vai HTTP(S)/WS(S) URL. Neierobežots datora nosaukums/IP noklusētais HTTPS sistēmā; nepārprotams URL saglabā ceļu, vaicājumu un portu pieprasījuma laikā. Tiek noraidītas kredenti URL, neatbalstītās shēmas, balttelpas/kontroles rakstzīmes un čaulai līdzīgi datornosaukumi. IPv6 burti tiek atlocīti automātiski; URL pārlūks neatbalsta sfēriskās/saites zonas identifikatorus. Izvēlieties Auto (iepriekš IPv4, pretējā gadījumā IPv6), IPv4 vai IPv6. Novērst adreses, lai izvēlētos konkrētu pašreizējo atbildi. Pārskats parāda visas atrisinātās atbildes; zondes pārbauda izvēlēto adresi vai vienu adresi katrai pieprasītajai ģimenei. Abas ģimenes tiek mērītas atsevišķi. AAAA klātbūtne viena pati nekad nenozīmē darba IPv6 savienojamību. Palaist Diagnostika darbojas DNS, ping, trackroute, HTTP, kompresija, TLS un izvēlētās TCP pieslēgvietas. WebSocket ir opt-in. Katram instrumentam ir arī atsevišķa Skrējiena/Stop vadības ierīce. Viena diagnostikas programma var būt aktīva vienlaicīgi. Pabeigts palaist nozīmē, ka instrumenti ir pabeigti, nevis ka katrs zonde izdevies. Nav sega “server offse” spriedums. Noildze, pakešu skaits, atkārtojumi, maksimāli apiņi, DNS atrisinātājs, protokola izvēle, silts savienojums un HTTP/HTTPS salīdzinājums ir konfigurējams. Mainot mērķi, tiek noskaidrots iepriekš izvēlētais IP. Vēsture var atsākt, salīdzināt divus ziņojumus, dzēst, importēt JSON, kopija vai eksports JSON/CSV/TXT caur dzimto Core dialogiem. Light/dark/system tēma attiecas uz diagnostikas sadaļu un tiek saglabāta esošajā UI konfigurācijā. CZ/DE/EN ir lietotājvārds, un tas tiek ievadīts nekavējoties. ## Sastāvdaļas un protokola uzvedība | Komponente | Īstenošana un interpretācija | | --- | --- | | `common.js` | Pārbauda mērķus/iespējas, limitus un enum vērtības; IDNS konversija; skaitliskā statistika izslēdz nezināmas vērtības. | | `dnsDiagnostics.js` | Sistēmas adrešu izšķirtspēja izmanto `dns.lookup`, lai godinātu OS konfigurācijas un datora failus. Ierakstu vaicājumi izmantot ierobežoto UDP DNS ar TCP rezerves atpakaļgaitu saīsinātās atbildes pret `dns.getServers()`, vai skaidri izvēlēts pasūtījuma/publisks risinājums. Netieša pāreja uz publisko DNS. | | `processTools.js` | Executes OS ping/traceroute ar argumentu masīvu un `shell: false`, ierobežoto izvadi, skaidru noildze un atteikšanās/prasmju tīrīšana. Parses pakešu atbildes un apiņi, nevis apstrādes procesa ilgumu kā RTT. | | `httpDiagnostics.js` z | Bundled cirta HTTP/1.1, HTTP/2 un HTTP/3; stingra sertifikātu pārbaude un piestiprināta IP saime. Katra versija tiek pieprasīta neatkarīgi; faktisko versiju reģistrē. | | `socketDiagnostics.js` z | Explicit TLS versijas zondes, ierobežotie TCP savienojumi/pasīvas baneri, priekšautentifikācija SSH datora taustiņu novērošana, izmantojot esošo ssh2 atkarību, un fakultatīva RFC 6455 upgrade validācija. | | `diagnosticsService.js` | Palaiž un anulē rīkus, izvēlas/validē adreses, plūsmas progresu, saglabā daļējus mērījumus un īpašnieks izpildes termiņu. | | `historyStore.js` z | Versija norobežota vietējā vēsture, pārrāvums, shematiski pārbaudīts imports un izmērīta datu eksports. | ### ICMP un maršruti ICMP atbalss pieprasījumiem. Rezultāti satur uz iepakojuma izmērīto RTT, saņemto/sūtīto skaitu, zaudējumus, min/average/max, populācijas standartnovirzi, vidējo absolūto starpību starp secīgiem mērījumiem RTT (jitter), TTL/Hop limitu, kad drukāta, un laika zīmju skaitu. Atbildi uz `<1 ms` uzskata par saņemtu ar augšējo robežu, nevis izgudrotu skaitlisko RTT. Nezināmi RTT nav iekļauti latentuma statistikā. Statistikas dati izmanto saglabāto logu 500 paketes; nosūtītas/received/loss skaits sedz visu ieskrējienu. Grafikā parādīt pēdējo 200 novērojumiem, ar atsevišķiem atbilžu, apakšlēmuma atbilžu simboliem, trūkstošajām atbildēm un skaidri izteiktiem pieprasījumiem/procesa noildzēm. Trūkstoša atbilde var atspoguļot ICMP filtrēšanu, pakešu zudumu vai noildzi; šie novērojumi nevar pārliecinoši noteikt ugunsmūri. Trūkst izpildfailu, lokālās atļaujas kļūdas un nederīgs rīks piesaistīšanu ir atsevišķas rīku kļūdas, nevis pakešu zudumu vai servera nepieejamību. Privilēģijas palielināšana netiek pieprasīta. Maršruta apiņi, adreses, individuālās zondes, vidēji un novērotie neatbildētie procenti. Apgrieztā DNS tiek atrisināta pēc maršruta, izmantojot izvēlēto izšķirošo. Atkārtojumi salīdzina novērotās apiņu-adresju sekvences; atšķirības var atspoguļot slodzes balansēšanu. Neatbildētie apiņi nenosaka salauztu ceļu. Neapstrādātas zondes metadati un metode parādās paplašināmās detaļās. macOS prasa vesela- sekundāra trackroute gaidīs; reģistrē efektīvu noapaļoto noildzi. ### DNS Divpadsmit ierakstu tipi ir A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS un DSKEY. DNS vadu parsēšanas pārbaudes darījumu/jautājumu identitāte, ierakstu izmēri, kompresijas kursora cilnes un ziņojumu ierobežojumi. Atbildes saglabāt rekordu TTL, vaicājumu laiku, atrisinātājs un NXDOMAIN/NODATA/SERVFAIL/refused/timeout štati. OS adrešu meklēšanas nevar piegādāt TTL; atsevišķu ierakstu vaicājumu var. CNAME ir ierobežota līdz astoņām saiknēm ar cikla noteikšanu. Konsekvence atkārto A/AAAA atbildes no izvēlētā atrisinātāja, un veic uz priekšu apstiprinātu PTR IP-literāla DNS testiem. Izmainītas atbildes ir novērojumi, nevis pierādījums DNS vaina. Ierakstīt SRV izmantot mērķa nosaukumu, kā norādīts; ievadiet pakalpojuma nosaukumu, piemēram `_service._tcp.example.org` kad nepieciešams. DNSSEC vienmēr ir **not validated**. DS/DNSKEY klātbūtne un pat noregulētāja AD karogs nekad netiek uzskatīti par neatkarīgu apstiprināšanu. ### HTTP, veiktspēja un saspiešana HTTP/1.1 pieņem šo versiju kā atbalstītu tikai tad, kad tā tika faktiski atgriezta. HTTPS HTTP/2 prasa vienošanos h2; nav rezerves tiek pārmarķēts. Skaidrs teksts HTTP/2 izmanto iepriekšējās zināšanas, nevis HTTP/1.1 Atjaunināt zondi. TLS pārbaude joprojām ir stingra attiecībā uz katru HTTP/WebSocket pieprasījumu. Manuālie pārrāvumi ir ierobežoti līdz astoņiem; cilpas, nederīgi galamērķi un pārmērīgas pārvirzes nepārprotami neizdodas. Visas ķēdes ieraksti starp domēnu un HTTPS pazemina kvalitāti, shēmas un www izmaiņas ir redzamas avota/izlidošanas URL. Credentials un ne-HTTP(S) rediģēšanas shēmas tiek noraidītas. Katrs starphosta pāradresējums tiek atrisināts neatkarīgi, izmantojot izvēlēto izšķirtājsistēmu un pieprasīto IP ģimeni. Mērījumos ietilpst DNS (ja tas tiek veikts), TCP, TLS, galīgās atbildes TTFB, kopējā TEFB, tostarp DNS/reorientācija, lejupielāde, pāradresēšana un kopējais sienas laiks, faktiskās vienības baiti, pārraides ātrums, statuss, atbildes galvenes, faktiskā servera adrese/ports, ALPN un pārbaudītas savienojuma atkārtota izmantošana. DNS/TCP/TLS fāzes, kas nav veiktas pie pieslēdzamā vai atkārtoti lietotā savienojuma, ir `N/A`, nav viltotas nulles. QUIC nav TCP fāzes; tā roku dūriens tiek reģistrēts atsevišķi. Galvenes transfēra vai pilna stieples virsotnes netiek apgalvotas kā vienības-baitu mērījumi. Šie ir servera/tīkla laika, nevis lapu renderēšanas vai bākas punktu skaita. Katrā izvēlētajā protokolā tiek izmantots tas pats mērķis un atkārtojumi. IPv4/IPv6 un HTTP/HTTPS ir skaidras salīdzināšanas iespējas. Alternatīvā shēma izmanto noklusēto portu. Katrā protokolā tiek uzsākts neatkarīgs salikta klienta process uz paraugu. Savienojumu atkārtota izmantošana nav apgalvota. Kopējā laika statistika ietver min/average/median/max/nearest-rank P95 un atsevišķu transporta/protokola kļūdu ātrums; HTTP statusa kodi paliek redzami pat tad, ja serveris veiksmīgi atgriež 4xx/5xx atbildi. Saspiešana sūta identitāti, gzip, deflat, br un (ja skriešanas laiks to atbalsta) zstd kā atsevišķus Pieņemt- Enkodēšanas pieprasījumus. Satura kodēšanai jāatbilst, un ierobežotajai dekompresijai jābūt veiksmīgai. Attiecību aprēķina tikai tad, ja atkodētais ķermeņa ash, galīgais URL un statuss atbilst identitātes bāzes līmenim. Ignorēti kodējumi nav atbalstīti; mainīgiem/dinamiskiem ķermeņiem nav attiecības. Šis ir šā URL/ statusa novērojums, nevis universāls servera atbalsts. Drošības galvas pārbaudēs ir redzams HSTS, CSP, X-Content-Type-Policy, Atļaujas politikā un X-Frame-Iespēju esamība un vērtība. A CSP direktīvu var aizstāt ar pamatdirektīvu. Esība nekonstatē, ka politika ir pareizi konfigurēta vai tīmekļa vietne ir droša. ### HTTP/3 prasības un pierādījums HTTP/1.1, HTTP/2 kā arī HTTP/3 izmantot to pašu salikto cirta klientu. macOS arm64 kā arī Linux x64 izmantot cirtu 8.22.0, OpenSSL 3.5.9, nghttphttp 1.70.0, ngtcp2 1.25.0 un nghttphttp3 1.18.0. Windows x64 izmanto oficiālo cirt.se cirta-win 8.22.0_3 statisko būvēt ar LibresSL 4.3.3 un tās pašas HTTP bibliotēkas. Nav sistēmas cirta atkāpšanās, dīkstāves vai administratora atļauja nav nepieciešama. Windows iepriekš reproducējama būvēt recepti ir https://github.com/curl/curl-for-win/tree/9d77e31e . Būvēt ar `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`) pirms iepakojuma. macOS/Linux nepieciešams C/C++ rīkiem, CMake, Ninja, Perl, make un pkg-config. Avoti tiek pievienoti versijas un augšu SHA-256 ar `scripts/native/dependencies.lock.json`. Skripts pārbauda katru lejupielādi, statiski saites trešo personu transporta bibliotēkām un neizdodas bez HTTP2/HTTP3/SSL funkcijas. Tikai operētājsistēmu bibliotēkas paliek dinamiskas. Windows izmanto piesieto oficiālo bināro arhīvu, nevis lokāli apkopotu Windows transporta kaudze. Komplektēta CA fails ir savu pinsed hash; sastāvdaļu licences un augšpuses veidot provenience pavada skriešanās laiku. Klientu un uzticamības veikals ir uzstādīta ārpus app.asar `resources/native-runtime/-/`. Katra diagnostikas pārbaudes komponenta hashes, arhitektūra un izpildvaras spējas pirms lietošanas. Konfigurēt failus, pieskaņas, TLS uzticamības vide pārslēdzas un bibliotēkas ievades mainīgie lielumi nav iekļauti. Cirta iet ar absolūto ceļu, čaula ir atslēgta, pārbaudītais CA uzticamība, skaidri noteikta IP saime, nav sīkdatņu, nav automātiskas pārbīdes, un ierobežotā izvade un laiks. Pārvirzes validē un atkārtoti nošķir ar pieteikumu. HTTPS tiek atbalstīta ostās, kas nav 443. HTTP/3 izmanto `--http3-only` un ir apstiprināts tikai pēc pabeigtas pārsūtīšanas ziņojumu HTTP versija 3, kā arī veiksmīga sertifikāta verifikācija. HTTP kļūdas atbildes, piemēram, 404 var apstiprināt protokolu. Alt-Svc ir reklāma, nevis pierādījums. QUIC noildze, sertifikāta neizdošanās, DNS neizdevās, savienojuma atteikums, nesaderīgs protokols un komponenta defekti joprojām ir atšķirīgi. UDP noildze neatstāj servera atbalstu nepārbaudītu. QUIC handhake laiks netiek ziņots kā TCP laika. Katrs mērījums sāk atsevišķu procesu/savienojumu. Siltā opcija nepieprasa pieslēguma atkārtotu izmantošanu saliktajam klientam. Tādējādi protokols tiek salīdzināts konsekventi. Ziņojumi ietver darba laika versijas, iespējas, TLS pārbaudi un QUIC laiku, kamēr vēsture/eksports noņem struktūras, URL jautājumus un autentifikācijas galvenes. Atjauniniet šīs adatas un atjaunot katru atbalstīto platformu, atjauninot transporta kaudze vai CA uzticamības veikals. Publicētie artefakti un avota fotogrāfijām ir nekustīgi. ## Pamata IPC Iepriekš ielādēts atmasko tikai `window.chjCore.diagnostics`; visi apstrādātāji saglabā esošo galvenā- window sūtītāja pārbaudi un tīkla darbs paliek galvenais. Rezultāti izmanto `{ ok: true, value }` vai `{ ok: false, error: { code, message } }`. | Kanāla/priekšslodzes metode | Darba slodze/rezultāts | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Validēts mērķis/iestatījumi → mērķis un atrisinātas adreses. Ne vairāk kā divas vienlaikus iesniegtas noregulējuma prasības. | | `diagnostics:start` / `start(options)` | Apstiprināts mērķis/settings/tool izvēle → necaurspīdīga darba ID un sākotnējais ziņojums. | | `diagnostics:cancel` / `cancel(id, tool?)` | Atcelt vienu aktīvu/kvēpu rīku vai visu darbību. | | `diagnostics:get` / `get(id)` | Zināma palaist vai saglabāta ziņojuma norādīšana. | | `diagnostics:history` / `history()` | Vietējās vēstures kopsavilkums. | | `diagnostics:removeHistory` / `removeHistory(id)` | Izņemt izvēlēto vēstures ierakstu. | | `diagnostics:copy` / `copy(id, format)` z | Main raksta pārkārtotu zināmo ziņojumu starpliktuvē. | | `diagnostics:export` / `export(id, format)` | JSON/CSV/TXT izmantojot dzimto saglabāšanas logu; renders nevar nodrošināt failu sistēmas ceļu. | | `diagnostics:import` / `import()` z | Native failu izvēlētājs, izmērs/schema/depth validācija un reducēšana pirms uzglabāšanas. | | `diagnostics:progress` / `onProgress(callback)` z | Izšķirtas adreses, rīku palaišanas/apdares, apiņi, HTTP paraugi un pabeigšana; atgriež neaprakstītu zvanu. | Nav pakļauta neviena ģenēriska čaula, failu sistēma vai tīkls API. Konteksta izolācija, smilšu kaste, atslēgts mezglis integrācija un esošais tēlētājs CSP paliek ieslēgts. Esošie spraudņa līgumi un atjauninātāja verifikācija/izņēmumi nav mainīti. ## Budžeti un vietējie dati - Viens palaist, divi aktīvi instrumenti, ne vairāk kā divas IP ģimenes zondes uz vienu rīku; TCP papildus ierobežo katru adresi līdz četriem savienojumiem. - Darbības ilgums 250–30000 ms; 1–100 paketes, 1–20 atkārtošanās, 1–40 apiņi, 1–16 ostas. Regulāri skrējējputni apstājušies pie piecām minūtēm; nepārtraukti pings pēc trīsdesmit minūtēm. Trackroute apakšprocess ir vēl viens 180- Otrs uzgalis. - Procesa izvade parasti 256 KiB; HTTP vienības korpuss 2 MiB; dekompresīvs korpusā 8 miB, HTTP galvenes ierobežotas; atbildes struktūras neiekļūst vēsturē. - Saglabāt maksimāli 500 paketes/progresa notikumi, pieci atmiņai veltītie stendi, trīsdesmit vēstures ziņojumi un 10 MiB vēstures. Vēsture izmanto esošo privāto atomu rakstītāju `/diagnostics/history.json` (mode 0600). - Imports ir lielākais 2 MiB, shēma 1 ar ierobežotu ligzdošanas un validētu rezultātu kolekcijas. CSV šūnas tiek izbēgtas un formulas prefiksi neitralizēti. URL vaicājumi/fragmenti, pilnvaras, sīkdatnes, autentifikācijas galvenes un izejmateriālu struktūras tiek izslēgtas no uzglabāšanas/copied/exported ziņojumus. Jēldati parāda izmērītos strukturētos datus, nevis pakešu uztveršanas vai saglabāšanas struktūru. - Nav mākoņu sinhronizācijas, automātiska pieteikšanās, servera konfigurācijas maiņa vai agresīva/neaprobežota skenēšana. Lietotājs skaidri izvēlas targ/ports/resolver. ## Platformas prasības un verifikācija | Platforma | ICMP | Maršruts | Citi protokoli | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`, ICMP | Bundled curl.exe kur: HTTP/2 kā arī HTTP/3. Lokalizēti RTT lauki nav atkarīgi no vārda “laiks”. | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; veselais- sekundes gaida | Bundled cirta ar HTTP/2 kā arī HTTP/3. | | Ubuntu/Linux | iputi `ping -4/-6` | standarts `traceroute -4/-6`, UDP | Bundled cirta ar HTTP/2 kā arī HTTP/3; trūkstošie ICMP/maršruta rīki tiek paziņoti atsevišķi. | Netika pievienota jauna atkarība no npm. Īstenošanas izmanto Node iebūvētās un pieteikuma esošo ssh2. Tā neinstalē sistēmas instrumentus, nedz pieprasa administratīvas tiesības. Ugunsmūri un UDP ierobežojumi var novērst pārbaudi, lai izveidotu atbalstu; tos nevar secināt tikai no laika grafika. Automatizētais pārklājums `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` kā arī `diagnosticsIpc.test.js`: validācija/IPv6 burti, dzimtā/vietējā DNS UDP+TCP aprīkojums, trūkstošas/divkāršas atbildes un atrisinājuma kļūdas, CNAME/konsekvence, OS argumenti/parsēšanas palīglīdzekļi, ierobežoti reāli bērnu procesi, bloķēti ICMP novērojumi, reāls vietējais HTTP/1.1 kā arī TLS h2, pārrāvumi/ķermeņa ierobežojumi/timeouts/reusekompresijaizslēgta/atsaukta, HTTP3 Iespējas/panākumu rezultāts parsēšana/atteikšanās no finansējuma, vietēja CA uzticēšanās/mismatch/expiration un reāli IPv6 HTTP/HTTPS, TCP savienojums/refused/mock noildze, reāls WebSocket un SSH pirmsautentifikācijas handshakes, atcelšana/cleanup/partial rezultāti, bezsaistes valsts, privātā vēsture apaļā strip/importa noraidījums/eksports, uzticama IPC un iepriekšējas piegādes abonēšana. `npm test` veic deterministiskus testus bez publiskiem testēšanas serveriem. `npm run test:diagnostics:ui` darbojas `scripts/smokeDiagnostics.js` grafiskā Electron darbvirsmā, izmantojot ražošanu UI/preload/IPC un reālās lokālās HTTP/kompresijas zondes. Nesaistītie pakalpojumi ir apdullināti/neierobežoti tikai šajā testa komplektā. Tā pārbauda navigācijas pasūtījumu, protokola rezultātus, pastāvību, CZ/DE/EN, abas tēmas, šauri windown pārplūdes un smilšu kastes preferences. Ja čaula iestatījusi ELECTRON_RUN_AS_NODE, atiestatiet to šai komandai. Pašreizējā darba laika pārbaude ietver kontrolētus QUIC pārskaitījumus, IPv4/IPv6, HTTPS uz noklusējuma pieslēgvietu, 404 atbildes, TLS atteices un tikai TCP pakalpojumu reklāmu Alt-Svc. Katrai izlaidei pievienoti rezultāti, kas iegūti pēc uzbūves. Specifiski izvēles ierobežojumi: nav neatkarīga DNSSEC validācija (nepieciešams pilnīgs apstiprinošs noregulētāja/uzticības devēja dzīves cikls), nav veikts bākas audits (tikai servera/tīkla laiks), nav deprecēta TLS audita vai atsaukšanas/CT pakalpojuma, nav HTTP3 siltas atkalizmantošanas pieprasījuma un nav HTTP/3 Siltās atkārtotas izmantošanas mērījumu. Neatbalstītās spējas tiek parādītas, nevis simulētas. ## Faili šajā izmaiņā Izveidots: septiņi servisa faili `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js`, `diagnostics.css`; četri `test/diagnostics*.test.js` datnes; pieci faili `test/fixtures/diagnostics/`; `scripts/smokeDiagnostics.js`Šis dokuments. Integrēts/atjaunināts: `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`, root `README.md`, `.gitignore` (četri izņēmumi, kas saistīti ar sabiedrisko darbību), un saknes gitleaks ļaujsarakstīties šauri nosaucot tīši populāru TLS testa atslēgas palīgierīce. Parakstīšana CA privātā atslēga tika izmesta; armatūra nekad netiek izmantota ar lietojumprogrammas darba laiku.