CH-J Server Managerpamamahala ng server sa pamamagitan ng SSH
Menu

Server Diagnostics

I-download ang file

Kasalukuyang sinusuri ang pagsasaling ito sa aspektong pangwika. Kung may bahaging hindi malinaw, ihambing ito sa orihinal na tekstong Ingles.

Naka-integrate sa sidebar ng Core, sa pagkakasunod-sunod na Plugins → Server Diagnostics → Hash & Checksum. Hindi ito nangangailangan ng SSH session o na-download na plugin. Nasa app/ ang lahat ng runtime code, test at fixture; walang dependency ang module sa mga katabing repository. Walang doc.md ang repository, kaya ang dokumentong ito at ang dalawang README ang naglalarawan sa implementasyon.

Daloy ng trabaho ng user

Maglagay ng hostname, IPv4, IPv6 o HTTP(S)/WS(S) URL. HTTPS ang default para sa mga hostname/IP na walang scheme; pinananatili ng mga tahasang URL ang path, query at port nila sa kahilingan. Tinatanggihan ang mga kredensyal sa URL, hindi sinusuportahang scheme, whitespace/control character at mga hostname na kahawig ng shell. Awtomatikong inilalagay sa bracket ang mga IPv6 literal; hindi sinusuportahan ng URL parser ang mga scoped/link-local zone identifier.

Piliin ang Auto (mas gusto ang IPv4, kung wala ay IPv6), IPv4, IPv6 o Both. I-resolve ang mga address para pumili ng partikular na kasalukuyang sagot. Ipinapakita ng overview ang lahat ng na-resolve na sagot; sinusubukan ng mga probe ang napiling address o isang address bawat hiniling na family. Independiyenteng sinusukat ang dalawang family. Hindi kailanman nangangahulugan ng gumaganang IPv6 connectivity ang presensya lamang ng AAAA.

Pinapatakbo ng Run Diagnostics ang DNS, ping, traceroute, HTTP, compression, TLS at ang mga napiling TCP port. Kailangang tahasang i-enable ang WebSocket. May sariling Run/Stop control din ang bawat tool. Isang diagnostic run lamang ang maaaring aktibo sa bawat pagkakataon. Ang natapos na run ay nangangahulugang tapos na ang mga tool, hindi na nagtagumpay ang bawat probe. Walang pangkalahatang hatol na “offline ang server”.

Nako-configure ang timeout, bilang ng packet, mga pag-uulit, maximum na hop, DNS resolver, pagpili ng protocol, warm na koneksyon at paghahambing ng HTTP/HTTPS. Nililinis ng pagbabago ng target ang dating napiling IP. Maaaring buksang muli ng kasaysayan, ihambing ang dalawang ulat, magbura, mag-import ng JSON, kumopya o mag-export ng JSON/CSV/TXT sa pamamagitan ng mga native dialog ng Core. Nalalapat ang light/dark/system na tema sa seksyon ng diagnostiko at sine-save ito sa umiiral na configuration ng UI. Agad na sinusunod ng CZ/DE/EN ang wika ng application.

Mga component at gawi ng protocol

Component Implementasyon at interpretasyon
common.js Bine-validate ang mga target/opsyon, limitasyon at enum value; IDNA conversion; hindi isinasama sa numerical na istatistika ang mga hindi alam na value.
dnsDiagnostics.js Gumagamit ang address resolution ng sistema ng dns.lookup para sundin ang configuration ng OS at ang mga hosts file. Gumagamit ang mga record query ng limitadong UDP DNS na may TCP fallback para sa mga naputol na tugon laban sa dns.getServers(), o sa tahasang piniling custom/pampublikong resolver. Walang implicit na paglipat sa pampublikong DNS.
processTools.js Pinapatakbo ang ping/traceroute ng OS gamit ang argument array at shell: false, limitadong output, tahasang timeout at paglilinis sa abort/kill. Pina-parse ang mga packet reply at hop, sa halip na ituring na RTT ang tagal ng proseso.
httpDiagnostics.js Kasamang curl para sa HTTP/1.1, HTTP/2 at HTTP/3; mahigpit na pag-verify ng sertipiko at naka-pin na IP family. Independiyenteng hinihiling ang bawat bersyon; itinatala ang aktwal na bersyon.
socketDiagnostics.js Tahasang mga TLS version probe, limitadong TCP connect/passive banner, pag-obserba sa SSH host key bago ang authentication gamit ang umiiral na ssh2 dependency, at opsyonal na pag-validate ng RFC 6455 Upgrade.
diagnosticsService.js Pinapatakbo at kinakansela ang mga tool, pinipili/bine-validate ang mga address, nag-i-stream ng progreso, pinapanatili ang bahagyang mga pagsukat at hawak ang deadline ng run.
historyStore.js May bersyon at limitadong lokal na kasaysayan, pagtatago ng data, mga import na sinuri ang schema at mga export ng sinukat na data.

ICMP at mga ruta

Apat na ICMP echo request na isa-isang pinapatakbo ang default ng ping. Naglalaman ang mga resulta ng sinukat na RTT bawat packet, bilang ng natanggap/naipadala, pagkawala, min/average/max, population standard deviation, mean absolute difference sa pagitan ng magkakasunod na sinukat na RTT (jitter), TTL/Hop Limit kapag naka-print, at mga timestamp. Binibilang na natanggap na may upper bound ang reply na <1 ms, sa halip na mag-imbento ng numerical na RTT. Hindi isinasama sa istatistika ng latency ang mga hindi alam na RTT. Gumagamit ang istatistika ng pinanatiling window na hanggang 500 packet; saklaw ng bilang ng naipadala/natanggap/nawala ang buong run. Ipinapakita ng mga graph ang huling 200 obserbasyon, na may magkakaibang simbolo para sa mga reply, mga reply na mas mababa sa resolution, mga nawawalang reply at mga tahasang timeout ng kahilingan/proseso.

Maaaring sumalamin ang nawawalang reply sa pag-filter ng ICMP, pagkawala ng packet o timeout; hindi tiyak na matutukoy ng mga obserbasyong ito ang isang firewall. Hiwalay na mga error ng tool ang mga nawawalang executable, lokal na pagkabigo sa pahintulot at hindi wastong pagtawag sa tool, hindi pagkawala ng packet o hindi pagiging available ng server. Walang hinihiling na pagtaas ng pribilehiyo.

Nag-i-stream ang traceroute ng mga hop, address, indibidwal na probe, average at naobserbahang porsiyento ng mga probe na walang sagot. Nire-resolve ang reverse DNS pagkatapos ng ruta, gamit ang napiling resolver. Inihahambing ng mga pag-uulit ang naobserbahang mga sequence ng address ng hop; maaaring sumalamin ang mga pagkakaiba sa load balancing. Hindi pinatutunayan ng mga intermediate hop na hindi sumasagot ang sirang ruta. Lumalabas sa mga napapalawak na detalye ang raw na metadata at paraan ng probe. Nangangailangan ang macOS ng mga traceroute wait na buong segundo; itinatala ang epektibong naka-round na timeout.

DNS

Ang labindalawang uri ng record ay A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS at DNSKEY. Sinusuri ng pag-parse ng DNS wire format ang pagkakakilanlan ng transaksyon/tanong, mga laki ng record, mga loop ng compression pointer at mga limitasyon ng mensahe. Pinananatili ng mga sagot ang mga TTL ng record, timing ng query, resolver at mga estadong NXDOMAIN/NODATA/SERVFAIL/refused/timeout. Hindi makapagbibigay ng TTL ang mga address lookup ng OS; kaya ito ng hiwalay na record query.

Limitado sa walong link ang pagsunod sa CNAME na may pagtukoy ng cycle. Inuulit ng pagsusuri sa consistency ang mga sagot na A/AAAA mula sa napiling resolver, at gumagawa ng forward-confirmed PTR para sa mga DNS test na IP literal. Mga obserbasyon ang nagbagong sagot, hindi patunay ng sira sa DNS. Ginagamit ng mga SRV query ang target na pangalan ayon sa pagkakabigay; maglagay ng pangalan ng serbisyo tulad ng _service._tcp.example.org kung kailangan. Palaging hindi bine-validate ang DNSSEC. Hindi kailanman itinuturing na independiyenteng pag-validate ang presensya ng DS/DNSKEY at maging ang AD flag ng resolver.

HTTP, performance at compression

Tinatanggap lamang na sinusuportahan ang HTTP/1.1 kapag talagang ibinalik ang bersyong iyon. Nangangailangan ang HTTPS HTTP/2 ng napagkasunduang h2; walang fallback na binibigyan ng ibang label. Gumagamit ang cleartext na HTTP/2 ng prior knowledge, hindi ng HTTP/1.1 Upgrade probe. Nananatiling mahigpit ang pag-verify ng TLS para sa bawat HTTP/WebSocket request.

Limitado sa walo ang manwal na mga redirect; tahasang nabibigo ang mga loop, hindi wastong destinasyon at labis na redirect. Itinatala ng buong chain ang mga pagbabago sa ibang domain at mga pag-downgrade mula HTTPS; nakikita sa mga source/destination URL ang mga pagbabago sa scheme at www. Tinatanggihan ang mga kredensyal at ang mga redirect scheme na hindi HTTP(S). Independiyenteng nire-resolve ang bawat redirect sa ibang host sa pamamagitan ng napiling resolver at hiniling na IP family.

Kasama sa mga pagsukat ang DNS (kapag ginawa), TCP, TLS, TTFB ng huling tugon, kabuuang TTFB kasama ang DNS/mga redirect, download, redirect at kabuuang wall time, aktwal na entity byte, bilis ng transfer, status, mga response header, aktwal na address/port ng server, ALPN at na-verify na muling paggamit ng koneksyon. N/A ang mga yugto ng DNS/TCP/TLS na hindi ginawa sa naka-pin o muling ginamit na koneksyon, hindi pekeng zero. Walang yugtong TCP ang QUIC; hiwalay na itinatala ang handshake nito. Hindi inaangking pagsukat ng entity byte ang overhead ng header transfer o ang buong wire overhead. Mga timing ito ng server/network, hindi pag-render ng pahina o mga Lighthouse score.

Gumagamit ang bawat napiling protocol ng parehong target at mga pag-uulit. Tahasang mga opsyon sa paghahambing ang IPv4/IPv6 at HTTP/HTTPS. Ginagamit ng alternatibong scheme ang default na port nito. Nagsisimula ang bawat protocol ng independiyenteng proseso ng kasamang client para sa bawat sample. Hindi inaangkin ang muling paggamit ng koneksyon. Kasama sa istatistika ng kabuuang oras ang min/average/median/max/nearest-rank P95 at hiwalay na rate ng error sa transport/protocol; nananatiling nakikita ang mga HTTP status code kahit matagumpay na nagbalik ang server ng 4xx/5xx na tugon.

Nagpapadala ang compression ng identity, gzip, deflate, br at (kapag sinusuportahan ng runtime) zstd bilang hiwalay na mga Accept-Encoding request. Dapat tumugma ang Content-Encoding, at dapat magtagumpay ang limitadong decompression. Kinakalkula lamang ang ratio kung tumutugma sa identity baseline ang hash ng na-decode na body, ang huling URL at ang status. Hindi sinusuportahan ang mga encoding na hindi pinansin; walang ratio ang nagbabago/dynamic na mga body. Obserbasyon ito para sa URL/status na iyon, hindi pangkalahatang suporta ng server.

Ipinapakita ng mga pagsusuri sa security header ang presensya at value ng HSTS, CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy at X-Frame-Options. Maaaring palitan ng CSP frame-ancestors directive ang huli. Hindi pinatutunayan ng presensya na tama ang pagkaka-configure ng patakaran o na ligtas ang website.

Mga kinakailangan at patunay ng HTTP/3

Gumagamit ang HTTP/1.1, HTTP/2 at HTTP/3 ng iisang kasamang curl client. Gumagamit ang macOS arm64 at Linux x64 ng curl 8.22.0, OpenSSL 3.5.9, nghttp2 1.70.0, ngtcp2 1.25.0 at nghttp3 1.18.0. Gumagamit ang Windows x64 ng opisyal na static build ng curl-for-win 8.22.0_3 mula sa curl.se na may LibreSSL 4.3.3 at parehong mga HTTP library. Hindi kailangan ng fallback sa curl ng sistema, pag-download habang tumatakbo o pahintulot ng administrator. Ang reproducible na upstream build recipe para sa Windows ay https://github.com/curl/curl-for-win/tree/9d77e31e .

Mag-build gamit ang python3 scripts/native/build.py (Windows: python scripts/native/build.py) bago ang packaging. Nangangailangan ang macOS/Linux ng mga tool para sa C/C++, CMake, Ninja, Perl, make at pkg-config. Naka-pin ang mga source ayon sa bersyon at upstream SHA-256 sa scripts/native/dependencies.lock.json. Bine-verify ng script ang bawat download, statically na nili-link ang mga third-party transport library at nabibigo kapag walang mga feature na HTTP2/HTTP3/SSL. Ang mga library lamang ng operating system ang nananatiling dynamic. Gumagamit ang Windows ng naka-pin na opisyal na binary archive, hindi ng lokal na kinompile na Windows transport stack. May sariling naka-pin na hash ang kasamang CA file; kasama ng runtime ang mga lisensya ng component at ang pinagmulan ng upstream build.

Naka-install ang client at ang trust store sa labas ng app.asar sa resources/native-runtime/<platform>-<arch>/. Bine-verify ng bawat diagnostiko ang mga hash ng component, arkitektura at mga kakayahan ng executable bago gamitin. Hindi isinasama ang mga config file, proxy, environment override para sa tiwala ng TLS at mga variable para sa library injection. Tumatakbo ang curl gamit ang absolute path, naka-disable ang shell, may na-verify na tiwala sa CA, tahasang itinakdang IP family, walang cookie, walang awtomatikong redirect, at may limitadong output at oras. Bine-validate at muling nire-resolve ng application ang mga redirect. Sinusuportahan ang HTTPS sa mga port na iba sa 443.

Gumagamit ang HTTP/3 ng --http3-only at kinukumpirma lamang pagkatapos ng natapos na transfer na nag-uulat ng HTTP version 3 at matagumpay na pag-verify ng sertipiko. Maaaring kumpirmahin ng mga HTTP error response tulad ng 404 ang protocol. Patalastas ang Alt-Svc, hindi patunay. Nananatiling magkakaiba ang QUIC timeout, pagkabigo ng sertipiko, pagkabigo ng DNS, pagtanggi sa koneksyon, hindi compatible na protocol at pagkabigo ng component. Ang UDP timeout ay nag-iiwan sa suporta ng server na hindi pa na-verify. Hindi iniuulat bilang TCP timing ang timing ng QUIC handshake.

Nagsisimula ang bawat pagsukat ng hiwalay na proseso/koneksyon. Hindi inaangkin ng warm na opsyon ang muling paggamit ng koneksyon para sa kasamang client. Pinapanatili nitong pare-pareho ang mga paghahambing ng protocol. Kasama sa mga ulat ang mga bersyon ng runtime, mga kakayahan, pag-verify ng TLS at timing ng QUIC, habang inaalis ng kasaysayan/export ang mga body, URL query at authentication header.

I-update ang mga pin na ito at muling i-build ang bawat sinusuportahang platform kapag ina-update ang transport stack o ang CA trust store. Hindi nababago ang mga nailathalang artifact at source snapshot.

IPC ng Core

Inilalantad lamang ng preload ang window.chjCore.diagnostics; pinananatili ng lahat ng handler ang umiiral na pagsusuri sa sender na pangunahing window at nananatili sa main ang gawain sa network. Gumagamit ang mga resulta ng { ok: true, value } o { ok: false, error: { code, message } }.

Channel / preload method Payload / resulta
diagnostics:resolve / resolve(options) Na-validate na target/mga setting → target at mga na-resolve na address. Hanggang dalawang sabay-sabay na resolution request.
diagnostics:start / start(options) Na-validate na target/mga setting/pagpili ng tool → opaque na job ID at paunang ulat.
diagnostics:cancel / cancel(id, tool?) Kanselahin ang isang aktibo/nakapilang tool o ang buong run.
diagnostics:get / get(id) Snapshot ng isang kilalang run o naka-save na ulat.
diagnostics:history / history() Mga buod ng lokal na kasaysayan.
diagnostics:removeHistory / removeHistory(id) Alisin ang napiling item ng kasaysayan.
diagnostics:copy / copy(id, format) Isinusulat ng main sa clipboard ang isang kilalang ulat na itinago ang sensitibong data.
diagnostics:export / export(id, format) JSON/CSV/TXT sa pamamagitan ng native na save dialog; hindi makapagbibigay ang renderer ng filesystem path.
diagnostics:import / import() Native na file picker, pag-validate ng laki/schema/lalim at pagtatago ng data bago iimbak.
diagnostics:progress / onProgress(callback) Mga na-resolve na address, pagsisimula/pagtatapos ng tool, mga packet, hop, HTTP sample at pagkumpleto; nagbabalik ng callback para sa pag-unsubscribe.

Walang inilalantad na generic na shell, filesystem o network API. Nananatiling naka-enable ang context isolation, sandbox, naka-disable na Node integration at ang umiiral na renderer CSP. Hindi binago ang mga umiiral na kontrata ng plugin at ang pag-verify/mga eksepsiyon ng updater.

Mga budget at lokal na data

Mga kinakailangan sa platform at pag-verify

Platform ICMP Ruta Iba pang protocol
Windows 10/11 ping.exe -4/-6 tracert.exe -4/-6, ICMP Kasamang curl.exe na may HTTP/2 at HTTP/3. Hindi nakadepende sa salitang “time” ang mga naka-localize na RTT field.
macOS /sbin/ping, /sbin/ping6 /usr/sbin/traceroute, /usr/sbin/traceroute6, UDP; mga wait na buong segundo Kasamang curl na may HTTP/2 at HTTP/3.
Ubuntu/Linux iputils ping -4/-6 karaniwang traceroute -4/-6, UDP Kasamang curl na may HTTP/2 at HTTP/3; hiwalay na iniuulat ang mga nawawalang tool para sa ICMP/ruta.

Walang idinagdag na bagong npm dependency. Gumagamit ang implementasyon ng mga built-in ng Node at ng umiiral na ssh2 ng application. Hindi ito nag-i-install ng mga tool ng sistema at hindi humihiling ng mga karapatang administratibo. Maaaring pigilan ng mga firewall at paghihigpit sa UDP ang isang test na mapatunayan ang suporta; hindi ito mahihinuha mula sa timeout lamang.

Nasa diagnosticsCore.test.js, diagnosticsNetwork.test.js, diagnosticsHttp.test.js at diagnosticsIpc.test.js ang awtomatikong saklaw: pag-validate/mga IPv6 literal, native/lokal na DNS UDP+TCP fixture, nawawala/dual-family na sagot at mga error ng resolver, CNAME/consistency, mga fixture ng argument/parsing ng OS, limitadong totoong child process, mga obserbasyon ng naka-block na ICMP, totoong lokal na HTTP/1.1 at TLS h2, mga redirect/limitasyon ng body/timeout/muling paggamit, compression na naka-enable/hindi pinansin, mga kakayahan ng HTTP3/pag-parse ng matagumpay na resulta/pagtanggi sa fallback, lokal na tiwala sa CA/hindi pagtugma/pag-expire at totoong IPv6 HTTP/HTTPS, TCP connect/tinanggihan/mock na timeout, totoong WebSocket at SSH pre-authentication handshake, pagkansela/paglilinis/bahagyang resulta, offline na estado, pribadong round-trip ng kasaysayan/pagtanggi sa import/mga export, pinagkakatiwalaang IPC at mga preload subscription.

Pinapatakbo ng npm test ang mga deterministic na test nang walang pampublikong test server. Pinapatakbo ng npm run test:diagnostics:ui ang scripts/smokeDiagnostics.js sa isang graphical na Electron desktop, gamit ang production na UI/preload/IPC at totoong lokal na HTTP/compression probe. Sa test harness na ito lamang ginagaya/ginagawang offline ang mga hindi kaugnay na serbisyo. Sinusuri nito ang pagkakasunod-sunod ng navigation, mga resulta ng protocol, persistence, CZ/DE/EN, ang dalawang tema, overflow sa makitid na window at mga kagustuhan sa sandbox. Kung itinatakda ng shell ang ELECTRON_RUN_AS_NODE, alisin ito para sa command na ito.

Saklaw ng kasalukuyang pag-verify ng runtime ang kontroladong mga QUIC transfer, IPv4/IPv6, HTTPS sa hindi default na port, mga 404 na tugon, mga pagkabigo ng TLS at isang serbisyong TCP lamang na nag-a-advertise ng Alt-Svc. Kasama ng bawat release ang mga resulta para sa bawat build.

Mga tahasang opsyonal na limitasyon: walang independiyenteng pag-validate ng DNSSEC (nangangailangan ng kumpletong validating resolver/lifecycle ng trust anchor), walang Lighthouse audit (timing lamang ng server/network), walang audit sa lumang TLS o serbisyo sa revocation/CT, walang pag-angkin ng HTTP3 warm reuse, at walang pagsukat ng HTTP/3 warm reuse. Ipinapakita ang mga hindi sinusuportahang kakayahan sa halip na gayahin.

Mga file sa pagbabagong ito

Ginawa: ang pitong service file sa src/main/diagnostics/; src/renderer/diagnostics.js, diagnosticsI18n.js, diagnostics.css; ang apat na test/diagnostics*.test.js na file; limang file sa ilalim ng test/fixtures/diagnostics/; scripts/smokeDiagnostics.js; ang dokumentong ito.

Na-integrate/na-update: 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 (apat na eksepsiyon para sa pampublikong fixture), at ang root gitleaks allowlist na makitid na pinapangalanan ang sinadyang pampublikong TLS test-key fixture. Itinapon na ang private key ng signing CA; hindi kailanman ginagamit ng runtime ng application ang fixture.