> Jezična revizija ovog prijevoda je u tijeku. Ako je odlomak nejasan, pogledajte [engleski izvornik](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Dijagnostika poslužitelja Integrirana u jezgrovu bočnu traku, u redoslijedu Priključci → Dijagnostike poslužitelja → Hash & Kontrolna suma. Ne zahtijeva SSH sesiju ili preuzeti dodatak. Svi trčanje kod, testovi i fiks u `app/`; modul nema ovisnost o repozitorijima braće i sestre. Repozitorij nema `doc.md`, tako da ovaj dokument i oba README opisuju implementaciju. ## Korisnički radni proces Unesite ime računala, IPv4, IPv6 ili HTTP( S)/WS( S) URL. Zadano ime računala/IP- a za HTTPS; eksplicitni URL-ovi zadržavaju put, upit i port tijekom zahtjeva. Odbačeni su autoriteti u URL-ovima, nepodržane sheme, prazna/kontrolna znakova i nazivna imena slična ljusci. IPv6 doslovni podaci su automatski zaglavljeni; ID_BAR_Lokalni identifikatori _ link- lokalne zone ne podržavaju URL analizator. Automatski (preferiraj IPv4, inače IPv6), IPv4, IPv6 ili oboje. Odluči adrese za izbor određenog trenutnog odgovora. Pregled prikazuje sve rješene odgovore; sonde testiraju odabranu adresu ili jednu adresu po zatražinoj obitelji. Obje obitelji se mjeri samostalno. AAAA prisutnost nikada ne podrazumeva rad IPv6 povezivanje. Pokreni dijagnostiku DNS, ping, trag, HTTP, kompresija, TLS i odabrani TCP portovi. WebSocket je opt-in. Svaki alat također ima zasebnu Run/Stop kontrolu. Jedan dijagnostički pokret može biti aktivan odjednom. Završena trčanje znači da su alati gotovi, a ne da je svaka sonda uspjela. Ne postoji deka “server offline” presuda. Vremensko ograničenje, broj paketa, ponavljanja, maksimalni hop, DNS rješavač, odabir protokola, topla veza i HTTP/HTTPS usporedba su podesivi. Promjena cilja briše prethodno odabrani IP. Povijest može ponovno otvoriti, usporediti dva izvješća, izbrisati, uvoz JSON, kopiranje ili izvoz JSON/CSV/TXT kroz izvorne jezgre dijaloge. Light/dark/system tema primjenjuje se na dio za dijagnostiku i spremljena je u postojećoj konfiguraciji korisničkog interfejsa. CZ/DE/EN prati odmah jezik aplikacije. ## Komponente i ponašanje protokola | Komponenta | Provedba i tumačenje | | --- | --- | | `common.js` | Provjerava ciljeve/opcije, ograničenja i vrijednosti enum; IDNA konverzija; brojčana statistika isključuje nepoznate vrijednosti. | | `dnsDiagnostics.js` | Upotreba rezolucije sustava `dns.lookup` u čast OS konfiguracije i domaćina datoteka. Upiti o zapisu korištenje ograničenih UDP DNS s TCP-om za odrezane odgovore protiv `dns.getServers()`, ili izričito odabrani posaditelj/javni rješavač. Nema implicitnog prebacivanja na javnost DNS. | | `processTools.js` | Izvršava OS ping/trasaute s nizom argumenta i `shell: false`, ograničen izlaz, eksplicitno vremensko ograničenje i prekid/ubojstvo čišćenje. Analizira odgovore paketa i hops, umjesto da se postupak trajanja tretira kao RTT. | | `httpDiagnostics.js` | Zavrtljaj HTTP/1.1, HTTP/2 Sluči HTTP/3; stroga provjera certifikata i pričvršćena IP obitelj. Svaka inačica je neovisno zahtijevana; stvarna verzija se snima. | | `socketDiagnostics.js` | Izričito TLS sonde za verziju, ograničene TCP veze / pasivne bannere, prije-autentikacije SSH Opažanje host- tipke pomoću postojeće ovisnosti ssh2, i opcionalno RFC 6455 Potvrda nadogradnje. | | `diagnosticsService.js` | Pokreće i otkazuje alate, odabire/validates adrese, napredak potoka, čuva djelomična mjerenja i posjeduje rok. | | `historyStore.js` | Verzija ograničena lokalna povijest, redakcija, provjeren uvoz i izmjereni izvoz podataka. | ### ICMP i rute Ping zadano na četiri pojedinačno izvršene ICMP zahtjeve za odjekom. Rezultati sadrže po paketu mjerenog RTT, primljen broj/posla, gubitak, min/average/max, populacijski standardni odstupanje, znači apsolutnu razliku između uzastopno izmjerenih RTT (Jitter), TTL/Hop Limit kada se štampa, i vremenskih oznaka. A `<1 ms` Odgovor se računa kao primljen s gornjom granicom, umjesto da se izumi brojni RTT. Nepoznati RTT-ovi isključeni su iz statistike o latenciji. Statistika koristi zadržani prozor najviše 500 paketi; poslani/received/loss Pokriva cijelu vožnju. Grafikoni prikažu posljednju 200 opažanja, s različitim simbolima za odgovore, odgovore na podrazlučivanje, nedostaju odgovori i izričito vremenski ograničenje zahtjeva/procesa. Nedostajući odgovor može odražavati ICMP filtriranje, gubitak paketa ili vremenski prekid; ova promatranja ne mogu konačno identificirati firewall. Nedostaju izvršni programi, lokalni neuspjesi i neispravne alatke su odvojene greške u alatu, ne gubitak paketa ili nerazpoložljivost poslužitelja. Ne zahtijeva se eskalacija privilegija. Traceroute preskake, adrese, pojedinačne sonde, sredstva i promatrane neodgovorene postotke. Obrni DNS rešava se nakon rute, koristeći odabrani rješavač. Ponavljanje usporeduje opažene sekvence adrese chompa; razlike mogu odražavati ravnotežu opterećenja. Neodgovorni međunožni hop ne uspostavlja pokvarenu rutu. Neobrađeni metapodaci i metoda sonde pojavljuju se u proširivim detaljima. macOS zahtijeva cijeli drugi tragač čeka; efikasan zaobljeni timeout je zabilježen. ### DNS Dvanaest rekordnih tipova su A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DNS i DNSKEY. DNS žica analiza provjera transakcije/identitet pitanja, veličina zapisa, kompresijski-pokazivač petlje i ograničenja poruka. Odgovori sačuvati zapis TTLs, upit vrijeme, rješavač i NXDOMAIN/NODATA/SERVFAIL/refused/timeout TAKO JE. Pretraživanje adrese OS-a ne može dostaviti TTL; zasebni upit zapisa može. CNAME slijedi ograničen je na osam veza s otkrivanjem ciklusa. Dosljednost ponavlja A/AAAA odgovore odabranog rješavača i obavlja napredno potvrđenu PTR za IP-literal DNS Testovi. Promijenjeni odgovori su promatranja, a ne dokaz o DNS Pogreška. Upit za SRV koristi ciljno ime kao što je navedeno; unesite ime usluge kao što je `_service._tcp.example.org` kada je potrebno. DNSSEC je uvijek **nije validirano**. DS/DNSKEY prisutnost, a čak i AD zastava riješitelja nikada se ne tretira kao neovisna potvrda. ### HTTP, performansa i kompresija HTTP/1.1 prihvaća tu inačicu kao podržanu samo kada je zapravo vraćena. HTTPS HTTP/2 zahtijeva pregovaranje h2; nijedan zamjenski znak nije preoznačen. Obriši tekst HTTP/2 koristi prethodno znanje, a ne HTTP/1.1 Unaprijed sondu. TLS provjera ostaje stroga za svaki HTTP/WebSocket zahtjev. Ručno preusmjeravanje ograničeno je na osam; petlje, neispravna odredišta i prekomjerno preusmjerenje propadaju izričito. Pune promjene u lancu i HTTPS-ovi smanjuju; sheme i www promjene su vidljive u izvornim/određenim URL-ovima. Odbačeni su programi preusmjeravanja ovlasti i ne-HTTP-a. Svaka preusmjeravanje među voditeljima rešava se neovisno putem odabranog rješavača i tražene IP obitelji. Mjerenja uključuju DNS (kada se izvede), TCP, TLS, konačna odgovorna TTFB, ukupno TTFB DNS/redirects, download, preusmjeravanje i ukupno vrijeme zida, stvarne entitetske bajtove, brzina prijenosa, status, zaglavlja odgovora, stvarna adresa/port servera, ALPN i provjerena ponovno korištenje veze. DNS/TCP/TLS faze koje nisu izvedene na pričvršćenoj ili ponovno korištenoj vezi su `N/A`, ne lažne nule . QUIC nema TCP fazu; njegovo rukovanje je odvojeno zabilježeno. Zaglavlje-transfer ili puna žica nad glavom nije utvrđeno kao mjerilo entitet-bajta. To su vremenski razmaci poslužitelja/mreže, ne prikaz stranica ili Lighthouse rezultati. Svaki odabrani protokol koristi istu metu i ponavljanja. IPv4/IPv6 i HTTP/HTTPS su eksplicitne opcije usporedbe. Nadomjesna shema koristi svoju zadanu luku. Svaki protokol započinje neovisan proces svježeg klijenta po uzorku. Ponovo korištenje veze nije utvrđeno. Statistika ukupnog vremena obuhvaća min/average/median/max/nearest-rank P95 i odvojenu stopu prijenosa/protokola pogreške; HTTP kodovi statusa ostaju vidljivi čak i kada poslužitelj uspješno vrati 4xx/5xx odgovor. Kompresija šalje identitet, gzip, deflate, br i (kada ga pokretač podržava) zstd kao odvojene zahtjeve za prihvatanje kodiranja. Sadržaj-Kodiranje mora odgovarati, a ograničena dekompresija mora uspjeti. Omjer se izračunava samo ako dekodirani hash tijela, konačni URL i status odgovaraju početnoj osnovi identiteta. Ignorirana kodiranja nisu podržana; promjena/dinamična tijela nemaju omjer. Ovo je promatranje za taj URL/status, a ne univerzalna podrška poslužitelja. Provjere sigurnosnog glavnog elementa pokazuju prisutnost i vrijednost HSTS-a, CSP, X-Content-Tip-opcije, referent-politika, dozvole-politika i X-frame-opcije. A CSP Direktiva o okvirnim arbitražama može zamijeniti posljednju. Prisustvo ne utvrđuje da je politika ispravno podešena ili da je web-mjesto osigurano. ### HTTP/3 zahtjevi i dokaz HTTP/1.1, HTTP/2 Sluči HTTP/3 Koristite isti svježi curl klijent. macOS arm64 Sluči Linux x64 Koristi kolut 8.22.0OpenSSL 3.5.9, nghttp2 1.70.0, ngtcp2 1.25.0 i nghttp3 1.18.0. Windows x64 koristi službeni curl.se curl-for-win 8.22.0_3 Statička izgradnja s LibreSSL 4.3.3 i iste HTTP biblioteke. Nije potrebno sustavsko curl backtrance, pokretanje vremena preuzimanja ili administratorsko dopuštenje. Windows recept za obnovljivu izgradnju je https://github.com/curl/curl-for-win/tree/9d77e31e . Izgradi sa `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`) prije pakiranja. macOS/Linux zahtijeva C/C++ alat, CMake, Ninja, Perl, make i pkg-config. Izvori su zaglavljeni po verziji i uzvodno SHA-256 u `scripts/native/dependencies.lock.json`. Skripta potvrđuje svaki preuzimanje, statički povezuje biblioteke prijevoza trećih strana i ne uspije bez HTTP2/HTTP3/SSL crteži. Samo dinamičke biblioteke operacijskog sustava ostaju dinamične. Windows koristi pričvršćenu službenu binarnu arhivu, a ne lokalno kompiliranu Windows transportni stog. Svežena CA datoteka ima vlastitu pričvršćenu hash; komponente licence i uzvodno gradnju prate vrijeme trčanja. Klijent i trgovina povjerenjem instalirani su izvan aplikacije.asar u `resources/native-runtime/-/`. Svaka dijagnostička potvrda komponente hašes, arhitektura i izvršne mogućnosti prije korištenja. Konfiguracijske datoteke, proxies, TLS Povjerljivo okruženje premošća i knjižničke injekcijske varijable su isključene. curd trčanje s apsolutnom putanjom, ljuska isključena, provjereno povjerenje CA, eksplicitno razriješena IP obitelj, bez kolačića, bez automatskih preusmjeravanja, i ograničen izlaz i vrijeme. Preusmjeravanje je ovlašteno i re- rješava aplikacija. HTTPS na lukama osim 443 podržava se. HTTP/3 korištenje `--http3-only` i potvrđuje se tek nakon završetka prijenosa prijavljivanja HTTP inačice 3 i uspješna provjera certifikata. Odgovori HTTP greške kao što su 404 Potvrdi protokol. Alt-Svc je oglas, a ne dokaz. QUIC timeout, kvar certifikata, DNS neuspjeh, odbijanje veze, nekompatibilan protokol i kvar komponenti ostaju različiti. UDP timeout ostavlja nepotvrđenu podršku poslužitelja. QUIC vrijeme rukovanja nije prijavljeno kao TCP vrijeme. Svaka mjera započinje odvojen proces/povezivanje. Topla opcija ne zahtijeva ponovno korištenje veze za svezanog klijenta. To održi usporedbu protokola dosljedno. Izvješća uključuju verzije pokretnog vremena, mogućnosti, TLS provjera i QUIC vrijeme, dok povijest/izvoz uklanjanje tijela, URL upiti i zaglavlja autorizacije. Ažurirajte ove igle i obnovite svaku podržanu platformu prilikom ažuriranja prijenosnog stacka ili CA trgovina povjerenjem. Objavljeni artefakti i izvorni snimci su nepromjenjivi. ## IPC jezgre Predučitavanje samo razotkrivanja `window.chjCore.diagnostics`; svi rukovodioci zadržavaju postojeću provjeru glavnog prozora pošiljatelja i rad na mreži ostaje u glavnom položaju. Upotreba rezultata `{ ok: true, value }` ili `{ ok: false, error: { code, message } }`. | Način prije učitavanja kanala | Isplata / rezultat | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Potvrđeno cilj/oznake → cilj i rješene adrese. Najviše dva istodobna zahtjeva za rješavanje. | | `diagnostics:start` / `start(options)` | Ovjeren cilj/settings/tool odabir → neprozirni ID posla i početni izvještaj. | | `diagnostics:cancel` / `cancel(id, tool?)` | Otkaži jedan aktivni/queued alat ili cijeli pokret. | | `diagnostics:get` / `get(id)` | Snimak poznatog pokrenutog ili snimljenog izvještaja. | | `diagnostics:history` / `history()` | Lokalna povijest sažetaka. | | `diagnostics:removeHistory` / `removeHistory(id)` | Ukloni odabranu stavku iz povijesti. | | `diagnostics:copy` / `copy(id, format)` | Main piše redacted poznati izvješće u odlagalište. | | `diagnostics:export` / `export(id, format)` | JSON/CSV/TXT pomoću izvornog dijaloga za spremanje; iscrtavač ne može pružiti putanju datotečnog sustava. | | `diagnostics:import` / `import()` | Nazivni birač datoteka, veličina/schema/depth potvrda i redakcija prije spremanja. | | `diagnostics:progress` / `onProgress(callback)` | Razriješene adrese, početak/dovršavanje alata, paketi, hops, HTTP uzorci i dovršavanje; vraća Odjavljeni poziv. | Nema generičke ljuske, datotečnog sustava ili mreže API je izložena. Kontekstna izolacija, pješčanik, integracija isključenog čvora i postojeći reflektor CSP ostaju omogućeni. Postojeći ugovori o ugovorima i provjera/iznimke ažuriranja nisu izmijenjene. ## Proračuni i lokalni podaci - Jedan trčanje, dva aktivna alata, na najviše dvije IP-rodičan sonda po alatu; TCP dodatno ograničava svaku adresu na četiri veze. - Vrijeme za radnju 250–30000 Ms; 1–100 paketi, 1–20 ponavljanja, 1–40 hops, 1–16 luke. Redovni trčanje stajati na pet minuta; kontinuirani ping na trideset minuta. Podproces u tragu ima daljnji 180-Druga kapa. - Izlaz procesa obično 256 KiB; HTTP entitet tijelo 2 MB; dekompresirano tijelo 8 Zaglavlja HTTP- a su ograničena; nijedan odgovor ne ulazi u povijest. - Održi najviše 500 paketi/napretci, pet pokrenutih u memoriji, trideset izvješća povijesti i 10 MiB povijesti. Povijest koristi postojeći privatni atomski pisac na `/diagnostics/history.json` (način 0600). - Uvoz je najviše 2 MiB, shema 1, s ograničenim gnijezdima i validiranim zbirkama rezultata. CSV ćelije su izbjegle i prefiksi formule su neutralizirani. Upiti/fragmenti URL-a, vjerodostojnosti, kolačiće, zaglavlja autorizacije i sirova tijela su isključeni iz pohranjenih/copied/exported izvješća. Neobrađeni detalji pokazuju mjerene strukturirane podatke, a ne zahvat paketa ili zadržani odgovor tijela. - Nema sinhronizacije oblaka, automatskog prijavljivanja, promjena konfiguracije poslužitelja ili agresivnog/nevezanog skeniranja. Korisnik izričito odabire cilj/ports/resolver. ## Zahtjevi platforme i provjera | Platforma | ICMP | Put | Ostali protokoli | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`, ICMP | Uključeno curl.exe s HTTP/2 Sluči HTTP/3. Lokalizirana polja RTT ne ovise o riječi “vremen”. | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; cijeli broj sekundi čeka | pletena kovrčava s HTTP/2 Sluči HTTP/3. | | Ubuntu/Linux | iputil `ping -4/-6` | standard `traceroute -4/-6`, UDP | pletena kovrčava s HTTP/2 Sluči HTTP/3; nedostaju ICMP/route alati su prijavljeni odvojeno. | Nije dodana ovisnost o novom modelu. Implementacija koristi ugrađene čvorove i postojeće ssh2. Niti instalira sustavne alate niti traži administrativna prava. Vatrozidovi i Ograničenja UDP-a mogu spriječiti utvrđivanje podrške; ne mogu se zaključiti samo iz vremenskog ograničenja. Automatizirana pokrivenost je u `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` Sluči `diagnosticsIpc.test.js`: potvrda/IPv6 doslovni, matični/lokalni DNS UDP+TCP fiksure, nestale/dvostruko-obiteljske odgovore i pogreške rješavanja, CNAME/konzistencija, OS argument/parziranje, ograničeni stvarni dječji procesi, blokirani ICMP opažanja, pravi lokalni HTTP/1.1 Sluči TLS h2, preusmjeravanje/ograničenja tijela/timeouts/reuse, kompresija omogućena/zanemirena, HTTP3 sposobnosti/uspjeh-nalaz analize/odbacivanje povratka, lokalno povjerenje CA/mismatch/expiration i stvarni IPv6 HTTP/HTTPS, TCP poveznica/refused/mock Vremenski prekid, stvarni WebSocket and SSH prije-autentifikacija rukovanja, otkazivanje/cleanup/partial rezultati, stanje offline, privatna povijest zaokret/odbacivanje/izvoz, pouzdani IPC i pretplata prije učitavanja. `npm test` vodi determinističke testove bez javnih test servera. `npm run test:diagnostics:ui` pokrenuti `scripts/smokeDiagnostics.js` u grafičnom Electron radna površina, korištenje proizvodnog korisničkog interfejsa/preload/IPC i pravi lokalni HTTP/kompresijski sondi. Nepovezane usluge su samo u ovom testnom postrojenju. Provjerava navigaciju, ishode protokola, upornost, CZ/DE/EN, obje teme, uski-prozori prelivanje i pješčanik postavke. Ako ljuska postavi ELECTRON_RUN_AS_NODE, poništi ga za ovu naredbu. Provjera trenutnog trajanja obuhvaća kontrolirane QUIC transfere, IPv4/IPv6, HTTPS na neuobičajenoj porti, 404 odgovore, TLS neuspjeh i TCP-samo oglašavanje usluga Alt-Svc. Rezultati po izgradnji prate svaki puštanje. Eksplicitna opcionalna ograničenja: bez neovisne DNSSEC validacije (zahtjeva potpunu validaciju rješavač/moždanski životni ciklus), bez revizije svjetlosnog sustava (samo za server/mreža), bez zastarjelog TLS usluga revizije ili poništavanja/CT-a, ne HTTP3 Tvrdnja o toplom ponovnom korištenju, i ne HTTP/3 mjerenje toplog poremećaja. Nepodržane mogućnosti su prikazane, a ne simulirane. ## Datoteke u ovoj promjeni Stvoreno: sedam servisnih datoteka u `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js`, `diagnostics.css`; četiri `test/diagnostics*.test.js` datoteke; pet datoteka ispod `test/fixtures/diagnostics/`; `scripts/smokeDiagnostics.js`; ovaj dokument. Integrirano/obnovano: `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`, korijen `README.md`, `.gitignore` (četiri javne iznimke) i korijen gitleaks omogućuje lista usko imenovanje namjerno javnost TLS Test-kljuc fiksiranje. Potpisivanje CA privatnog ključa je odbačeno; fiksure se nikada ne koristi od strane izvršnog programa.