> Selle tõlke keeleline läbivaatamine on pooleli. Ebaselguse korral võrrelge [ingliskeelse originaaliga](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Serveri diagnostika Integreeritud Core külgriba, et pluginad → Server Diagnostika → Hash & Checksum. See ei nõua SSH seansi või alla laadida plugin. Kõik `app/`-s elavad tööajakoodid, testid ja seadmed; moodulil puudub sõltuvus õdede-vendade hoidlatest. Hoidla ei ole `doc.md`, seega see dokument ja mõlemad READMEs kirjeldada rakendamist. ## Kasutaja töökorraldus Sisesta masinanimi, IPv4, IPv6 või HTTP(S) / WS(S) URL. Paljad masinanimed/ IP- id vaikimisi HTTPS- le; selgesõnalised URL- id säilitavad päringu ajal oma asukoha, päringu ja porti. URL- ide, toetatud skeemide, tühimärkide/ kontrollmärkide ja shellilaadsete masinanimede usaldusmärgid lükatakse tagasi. IPv6 sõna otseses mõttes on sulgudes automaatselt; URL- i parser ei toeta skoopi/ linki kohaliku tsooni identifikaatoreid. Vali auto (eelista IPv4, muidu IPv6), IPv4 , IPv6 või mõlemad. Lahenda aadressid, et valida konkreetne praegune vastus. Ülevaade näitab kõiki lahendatud vastuseid; sondid testivad valitud aadressi või üht aadressi soovitud perekonna kohta. Mõlemaid perekondi mõõdetakse sõltumatult. AAA olemasolu üksi ei tähenda kunagi IPv6 ühenduvust. Käivita Diagnostika töötab DNS, ping, trace, HTTP, compression, TLS ja valitud TCP port. WebSocket on opt-in. Igal tööriistal on ka eraldi töö- ja peatumiskontroll. Üks diagnostiline käik võib olla aktiivne. Läbitud käik tähendab, et tööriistad on valmis, mitte et iga sondil õnnestuks. Ei ole olemas tekki ~server offline kohtuotsus. Ajapiirang, pakettide arv, kordused, maksimaalne humal, DNS lahendaja, protokolli valik, soe ühendus ja HTTP/HTTPS võrdlus on seadistatav. Sihtmärgi muutmine puhastab eelnevalt valitud IP. Ajalugu saab taasavada, võrrelda kahte aruannet, kustutada, importida JSON, kopeerida või eksportida JSON/CSV/TXT läbi native Core dialoogid. Light/dark/system teema kehtib diagnostika osa ja salvestatakse olemasolevas UI konfiguratsioonis. CZ/DE/EN järgib kohe taotluse keelt. ## Komponendid ja protokolli käitumine | komponent | rakendamine ja tõlgendamine | | --- | --- | | `common.js` | Valideerib sihtmärgid/valikud, piirmäärad ja väärtused; IDNA teisendamine; numbriline statistika ei sisalda tundmatuid väärtusi. | | `dnsDiagnostics.js`Z | Süsteemi aadressi eraldusvõime kasutab `dns.lookup` OS seadistuste ja masinate failide austamiseks. Rekord päringud kasutada piiratud UDP DNS TCP varukoopia jaoks kärbitud vastuseid vastu `dns.getServers()`, või selgesõnaliselt valitud custom / avaliku lahendaja. Ei mingit kaudset üleminekut avalikule DNS-le. | | `processTools.js`Z | Käivitab OS ping/traceroute koos argument massiivi ja `shell: false`, piiratud väljund, selge ajapiirang ja katkestab/tapmine puhastamine. Parsib paketi vastused ja humal, selle asemel, et käsitleda protsessi kestus RTT. | | `httpDiagnostics.js` | Paigas curl for HTTP/1.1, HTTP/2 ning HTTP/3; range sertifikaadi kontroll ja pinned IP pere. Iga versiooni taotletakse sõltumatult; tegelik versioon on registreeritud. | | `socketDiagnostics.js` | Explicit TLS versioonisondid, piiratud TCP ühendused/passiivsed bännerid, pre-autentimine SSH host-key tähelepanek kasutades olemasolevat ssh2 sõltuvus ja vabatahtlik RFC 6455 Upgrade valideerimine. | | `diagnosticsService.js` | Käivitab ja tühistab tööriistad, valib/valideerib aadressid, ojad edenevad, säilitab osalised mõõtmised ja omab käivitamistähtaega. | | `historyStore.js`Z | Versioonitud piiratud kohalik ajalugu, Redaction, skeemi kontrollitud import ja mõõdetud andmete eksport. | ### ICMP ja marsruudid Ping vaikimisi neli individuaalselt täidetud ICMP kaja päringud. Tulemused sisaldavad iga pakendi kohta mõõdetud RTT-d, saadud/saadetud arvu, kadu, min/average/max, populatsiooni standardhälvet, keskmist absoluutset erinevust järjestikuste mõõdetud RTTde (jutter), TTL/Hop Limiti ja ajatemplite vahel. `<1 ms` vastus loetakse saadud ülemine piir, mitte leiutada numbriline RTT. Tundmatuid RTTsid ei võeta latentsusstatistikast välja. Statistikas kasutatakse kõige rohkem 500 pakette, saadetakse /received/loss loendab kogu töö. Graafikud näitavad 200 viimaseid tähelepanekuid, millel on erinevad sümbolid vastuste jaoks, alamresolutsiooni vastused, puuduvad vastused ja selgesõnalised päringu/protsessi tähtajad. Puuduv vastus võib peegeldada ICMP filtreerimist, paketi kadu või aegumist; need tähelepanekud ei suuda tulemüüri lõplikult tuvastada. Käivitatavate failide puudumine, kohaliku loa nurjumine ja vigased tööriistavead on eraldi tööriistavigu, mitte paketi kadu või serveri puudumine. Mingit privileegi ei ole vaja. Marsruudi ojad humal, aadressid, individuaalsed sondid, vahendid ja jälgitavad vastuseta prooviprotsendid. Pöörd DNS laheneb pärast marsruuti, kasutades valitud lahendajat. Vastused võrdlevad täheldatud humala-aadressi järjestusi; erinevused võivad peegeldada koormuse tasakaalustamist. Vastuseta keskmise suurusega humala puhul ei ole kindlaks määratud katkist marsruuti. Toorsondi metaandmed ja meetod on esitatud laiendatavates detailides. macOS nõuab täisarvulise teise jälgimise ootet; efektiivne ümardatud ajapiirang registreeritakse. ### DNS Need kaksteist plaaditüüpi on A, AAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS ja DNSKEY. DNS traat parsimine kontrollib tehingu / küsimuse identiteeti, kirje suurust, tihendus-punkti silmuseid ja sõnumi piiranguid. Vastused säilitada rekord TTLs, päringu ajastus, lahendaja ja NXDOMAIN/NODATA/SERVFAIL/refused/timeout riigid. OS-aadressi otsing ei saa anda TTL- i; eraldi kirjepäring saab. CNAME järgmine on piiratud kaheksa lingid tsükli tuvastamine. Järjepidevus kordab valitud lahendaja A/AAA vastuseid ja teeb IP-liitrise DNS testide jaoks eelnevalt kinnitatud PTR-i. Muudetud vastused on tähelepanekud, mitte tõend DNS viga. SRV päringud kasutavad antud sihtnime; sisestage vajadusel teenuse nimi, näiteks `_service._tcp.example.org`. DNSSEC on alati ** ei ole valideeritud **. DS/DNSKEY kohalolekut ja isegi lahendaja AD-lippu ei käsitleta kunagi sõltumatu valideerimisena. ### HTTP, jõudlus ja tihendus HTTP/1.1 aktsepteerib seda versiooni toetatud ainult siis, kui see tegelikult tagastatakse. HTTPS HTTP/2 nõuab läbiräägitud h2; mingit varukoopiat ei ole uuesti märgistatud. Cleartext HTTP/2 kasutab eelnevaid teadmisi, mitte HTTP/1.1 Upgrade sondi. TLS kontrollimine jääb rangelt iga HTTP/WebSocket päringu. Käsitsi ümbersuunamine on piiratud kaheksaga; silmuseid, vigaseid sihtkohti ja liigseid ümbersuunamisi ei õnnestu selgesõnaliselt. Kogu ahel salvestab valdkonnaülesed muudatused ja HTTPS alandab tasemeid; skeemid ja www-muutused on nähtavad lähte -/sihtkoha URL-ides. Usaldusväärsuse tagamise skeemid ja mitte-HTTP(S) ümbersuunamise kavad lükatakse tagasi. Iga risthost ümbersuunamine lahendatakse iseseisvalt läbi valitud lahendaja ja palus IP pere. Mõõtmiste hulka kuuluvad DNS (kui see on tehtud), TCP, TLS, lõplik vastus TTFB, üldine TFTB sealhulgas DNS/redirects, allalaadimine, ümbersuunamine ja kogu seinaaeg, tegelik üksus baitides, ülekandekiirus, staatus, vastuse päised, tegelik serveri aadress/port, ALPN ja kontrollitud ühenduse korduskasutus. DNS/TCP/TLS faasid, mis ei ole teostatud pinned või korduvkasutatud ühendus on `N/A`, mitte võlts nullid. QUIC-il ei ole TCP-faasi, selle käepigistus salvestatakse eraldi. Päis-ülekande või täisjuhtmega ülevoolu ei esitata üksuse baidi mõõtmisena. Need on serveri/võrgu ajastus, mitte lehekülje renderdamine või Lighthouse skoorid. Iga valitud protokoll kasutab sama sihtmärki ja kordusi. IPv4/IPv6 ja HTTP/HTTPS on otsesed võrdlusvõimalused. Asendusskeem kasutab vaikimisi porti. Iga protokoll käivitab sõltumatu komplekteeritud kliendi protsessi proovi kohta. Ühenduse korduskasutust ei kinnitata. Koguaja statistika sisaldab min/average/median/max/nearest-rank P95 ja eraldi transpordi / protokolli veamäära; HTTP olekukoodid jäävad nähtavaks ka siis, kui server edukalt tagastab 4xx/5xx vastuse. Kompressioon saadab identiteeti, gzip, deflate, br ja (kui tööaeg seda toetab) zstd kui eraldi vastuvõtva kodeerimise taotlused. Sisu kodeering peab sobima, ja piiratud dekompressioon peab õnnestuma. Suhe arvutatakse ainult siis, kui dekodeeritud keha hašiši, lõplik URL ja olek vastavad identiteedi algväärtusele. Ignoreeritud kodeeringud ei ole toetatud; muutuvatel/dünaamilistel kehadel puudub suhe. See on vaatlus selle URL / staatus, mitte universaalne server toetust. Turvakontrollid näitavad HSTS, CSP, X-Content-Type-Options, Referenceer-Policy, Permissions-Policy ja X-Frame-Options olemasolu ja väärtust. CSP kaadrite direktiiv võib viimase asendada. Kohalolek ei näita, et poliitika oleks õigesti seadistatud või et veebisait on turvaline. ### HTTP/3 nõuded ja tõendid HTTP/1.1, HTTP/2 ja HTTP/3 kasutavad sama komplekteeritud loki klienti. macOS arm64 ning Linux x64 kasutada lokit 8.22.0, OpenSSL 3.5.9, nghttp2 1.70.0, ngtcp2 1.25.0 ja nghttp3 1.18.0. Windows x64 kasutab ametlikku lokit.se curl-for-win 8.22.0_3 staatiline hoone LibresSL 4.3.3 ja sama HTTP teekid. Ei süsteemi loki varukoopia, Runtime alla laadida või administraatori luba on vaja. Windows ülesvoolu korratav ehitada retsept on https://github.com/curl/curl-for-win/tree/9d77e31e . Ehitamine `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`) enne pakendamist. macOS/Linux nõuab C/C++ tööriistu, CMake'i, Ninja, Perli, make ja pkg-config. Allikad pinned versiooni ja ülesvoolu SHA-256 `scripts/native/dependencies.lock.json`. Skript kontrollib igat allalaadimist, ühendab staatiliselt kolmanda osapoole transporditeegid ja ei tööta ilma HTTP2/HTTP3/SSL funktsioonideta. Dünaamiliseks jäävad ainult operatsioonisüsteemi raamatukogud. Windows kasutab pinned ametlik binaararhiiv, mitte kohapeal koostatud Windows transpordi korstnat. Kompundeeritud CA failil on oma riputatud hash; komponentide litsentsid ja ülesehitus lähtekoht kaasas tööaeg. Klient ja usalduskauplus on paigaldatud väljaspool app.asar sisse `resources/native-runtime/-/`. Iga diagnostika kontrollib komponendi hashes, arhitektuur ja käivitatav võimeid enne kasutamist. Konfig failid, proxies, TLS usaldus keskkond üle ja teegi süsti muutujad on välistatud. loki jookseb absoluutse tee, shell keelatud, kontrollitud CA usaldust, selgelt lahendatud IP perekond, ei ole küpsiseid, automaatne ümbersuunamine, ning piiratud väljund ja aeg. Ümbersuunamised valideeritakse ja lahendatakse uuesti rakenduse abil. HTTPS muude portide kui 443 puhul on toetatud. HTTP/3 kasutab `--http3-only`-d ja see kinnitatakse alles pärast HTTP versiooni 3 edastamist ning sertifikaadi edukat kontrollimist. HTTP-vea vastused, näiteks 404, võivad protokolli kinnitada. Alt-Svc on reklaam, mitte tõend. QUIC ajapiirang, sertifikaadi viga, DNS rike, ühenduse andmisest keeldumine, kokkusobimatu protokoll ja komponendi rike jäävad eristatuks. UDP ajapiirang jätab serveri toetuse kontrollimata. QUIC käepigistus ajastus ei ole teatatud TCP ajastus. Iga mõõtmine algab eraldi protsessi/ühendusega. Soe valik ei nõua ühendunud kliendi jaoks ühenduse taaskasutamist. See hoiab protokolli võrdlused järjepidevana. Aruanded hõlmavad tööaja versioone, võimeid, TLS kontrolli ja QUIC ajastus, samas ajalugu / eksport eemaldada asutused, URL päringud ja autentimise päised. Uuenda need viigud ja taastada iga toetatud platvormi ajakohastamisel transpordi korstna või CA usalduskauplus. Avaldatud esemed ja lähtepildid on asendamatud. ## IPC tuum Eellaadimine paljastab ainult `window.chjCore.diagnostics`; kõik käitlejad säilitavad olemasoleva peaakna saatja kontrolli ja võrgu töö jääb peamiselt. Tulemused kasutada `{ ok: true, value }` või `{ ok: false, error: { code, message } }`. | Channel / preload method | Payload / result | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Kinnitatud sihtmärk/seaded → sihtmärk ja lahendatud aadressid. Kõige rohkem kaks samaaegset kriisilahendustaotlust. | | `diagnostics:start` / `start(options)` | Valideeritud sihtmärk/settings/tool valik → läbipaistmatu töö ID ja esialgne aruanne. | | `diagnostics:cancel` / `cancel(id, tool?)` | Tühista üks aktiivne/queued tööriist või kogu töö. | | `diagnostics:get` / `get(id)` | Snapshot tuntud run või salvestatud raport. | | `diagnostics:history` / `history()` | Kohaliku ajaloo kokkuvõtted. | | `diagnostics:removeHistory` / `removeHistory(id)` | Eemalda valitud ajalooelement. | | `diagnostics:copy` / `copy(id, format)` | Main kirjutab ümberacted tuntud aruande lõikepuhvrisse. | | `diagnostics:export` / `export(id, format)` | JSON/CSV/TXT native salvestamise dialoogi kaudu; renderdaja ei saa määrata failisüsteemi asukohta. | | `diagnostics:import` / `import()` | Kohalik failivalija, suurus/schema/depth valideerimine ja ümbertöötamine enne ladustamist. | | `diagnostics:progress` / `onProgress(callback)` | Lahendatud aadressid, tööriista algus/lõpetamine, paketid, humal, HTTP proovid ja lõpetamine; tagastab tellimata tagasihelistamise. | Geneeriline shell, failisüsteem või võrk API ei ole avatud. Konteksti isoleerimine, liivakast, keelatud sõlme integreerimine ja olemasolev renderdaja CSP on endiselt lubatud. Olemasolevad pluginalepingud ja uuendaja kontroll/väljaarvamised ei muutu. ## Eelarve ja kohalikud andmed - Üks käik, kaks aktiivset tööriista, kõige rohkem kaks IP-pere proovivõtturit töövahendi kohta; TCP piirab iga aadressi nelja ühendusega. - Tegevuse ajaline piirang 250–30000 ms; 1–100 pakettreisid; 1–20 kordused; 1–40 humal, 1–16 sadamad. Regulaarne peatus viie minuti pärast; pidev ping 30 minutit. Jälitustee alamprotsessil on veel 180-sekundiline kork. - Protsess väljund tavaliselt 256 KiB; HTTP üksuse keha 2 MiB; dekompresseeritud asutus 8 MIB; HTTP päised piiratud; ükski vastus asutused sisestada ajalugu. - Säilitada kõige 500 paketid / edu sündmused, viis mälus töötab, kolmkümmend ajaloo aruanded ja 10 MiB ajalugu. Ajalugu kasutab `/diagnostics/history.json` (mode 0600) olemasolevat isikliku aatomi kirjanikku. - Import on maksimaalselt 2 MiB, skeem 1, piiratud pesitsemine ja valideeritud tulemuste kogud. CSV rakud on põgenenud ja valemi eesliited neutraliseeritud. URL päringud / fragments, volikirjad, küpsised, autentimise päised ja toorkehad on välistatud salvestatud /copied/exported aruanded. Toorandmed näitavad mõõdetavaid struktureeritud andmeid, mitte pakette koguvat või säilitatud reageerimisorganit. - Pilve sünkroniseerimine, automaatne sisselogimine, serveri konfiguratsiooni muutmine või agressiivne/piiramata skaneerimine puudub. Kasutaja valib selgesõnaliselt sihtmärgi /ports/resolver. ## Platvormile esitatavad nõuded ja kontroll | Platform | ICMP | Route | Muud protokollid | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`, ICMP | Paigaldatud curl.exe koos HTTP/2 ning HTTP/3. Kohalikud RTT väljad ei sõltu sõnast ~time'. | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; täisarv- second ootab | Punutud curl with HTTP/2 ning HTTP/3. | | Ubuntu/Linux | iputils `ping -4/-6` | standard `traceroute -4/-6`UDP | Punutud curl with HTTP/2 ning HTTP/3; puuduvad ICMP/marsruudi tööriistad esitatakse eraldi. | Uusi sõltuvusi pPM- ist ei lisatud. Rakenduses kasutatakse sõlme sisseehitatud ja rakenduse olemasolevat ssh2. See ei paigalda süsteemi vahendeid ega nõua haldusõigusi. Tulemüürid ja UDP piirangud võivad takistada katsel toetuse leidmist; neid ei saa tuletada ainult ajapiirangust. Automaatne katvus on `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` ning `diagnosticsIpc.test.js`: valideerimine /IPv6 sõna otseses mõttes, native/ local DNS UDP+TCP seadmed, puuduvad/kahe-pere vastused ja lahendaja vead, CNAME/järjekindlus, OS argument/parsing seadmed, piiratud reaalne laste protsessid, blokeeritud ICMP vaatlused, tõeline kohalik HTTP/1.1 ning TLS h2, ümbersuunatud / keha piirangud/timeouts/reuse, surve sisse lülitatud/võõrandatud; HTTP3 võimed/edukas tulemus parsimine/tagasilükkamine, kohalik CA usaldus/mismatch/expiration ja reaalne IPv6 HTTP/HTTPS, TCP ühendus/refused/mock aeg maha, tõeline WebSocket ja SSH Autentimiseelsed käepigistused, tühistamine/cleanup/partial tulemused, offline state, eraajalugu edasi-tagasi / import tagasilükkamine / eksport, usaldusväärne IPC ja eellaadimine tellimusi. `npm test` teeb deterministlikke teste ilma avalike katseserveriteta. `npm run test:diagnostics:ui` töötab `scripts/smokeDiagnostics.js` graafilises Electron töölauas, kasutades tootmist UI/preload/IPC ja reaalseid kohalikke HTTP/kompressioonisonde. Seotud teenused on välja lülitatud/välja lülitatud ainult selles katserakmetes. See kontrollib navigeerimiskorda, protokolli tulemusi, püsivust, CZ/DE/EN, nii teemasid, kitsas akna ülevoolu ja liivakasti eelistusi. Kui shell määrab ELECTRON_ RUN_ AS_ NODE, eemalda see selle käsu jaoks. hetke tööaja kontroll hõlmab kontrollitud QUIC ülekandeid; IPv4/IPv6, HTTPS mittevaikimisi port, 404 vastused; TLS tõrked ja TCP ainus teenuste reklaam Alt-Svc. Per-build tulemused kaasas iga vabastamist. Selged vabatahtlikud piirangud: sõltumatu DNSSECi valideerimine puudub (nõuab täielikku valideerimist lahendaja/usalduse-ankru elutsükli kohta), tuletorni audit puudub (ainult serveri/võrgu ajastus), ei ole aegunud TLS auditit või tühistamist/CT teenust, HTTP3 sooja-reuse nõuet ega HTTP/3 soe-reuse mõõtmist. Toetamata võimeid näidatakse, mitte simuleeritakse. ## Selles muudatuses olevad failid Loodud: seitse teenusefaili `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js` ja `diagnostics.css`. Neli `test/diagnostics*.test.js` faili; viis faili `test/fixtures/diagnostics/` all; `scripts/smokeDiagnostics.js` selles dokumendis. Integreeritud/uuendatud: `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`, juur `README.md`, `.gitignore` (neli avalikku erandit) ja gitleaks lubatud kitsalt nimetades tahtlikult avalikkuse TLS katsevõti. Allakirjutanu CA privaatvõti jäeti kõrvale; seadmet ei kasutata kunagi rakenduse käivitamise ajal.