CH-J Server Managerpengurusan pelayan melalui SSH
Menu

Server Diagnostics

Muat turun fail

Terjemahan ini sedang disemak dari segi bahasa. Jika ada bahagian yang kurang jelas, bandingkan dengan teks asal bahasa Inggeris.

Disepadukan ke dalam bar sisi Core, mengikut susunan Plugins → Server Diagnostics → Hash & Checksum. Ia tidak memerlukan sesi SSH atau pemalam yang dimuat turun. Semua kod masa jalan, ujian dan fixture berada dalam app/; modul ini tidak bergantung pada repositori bersebelahan. Repositori tidak mempunyai doc.md, jadi dokumen ini dan kedua-dua README menerangkan pelaksanaannya.

Aliran kerja pengguna

Masukkan nama hos, IPv4, IPv6 atau URL HTTP(S)/WS(S). Nama hos/IP tanpa skema menggunakan HTTPS secara lalai; URL eksplisit mengekalkan laluan, pertanyaan dan port semasa permintaan. Bukti kelayakan dalam URL, skema yang tidak disokong, ruang kosong/aksara kawalan dan nama hos yang menyerupai shell ditolak. Literal IPv6 diletakkan dalam kurungan secara automatik; pengecam zon scoped/link-local tidak disokong oleh penghurai URL.

Pilih Auto (utamakan IPv4, jika tiada gunakan IPv6), IPv4, IPv6 atau Both (Kedua-dua). Selesaikan alamat untuk memilih jawapan semasa yang tertentu. Gambaran keseluruhan memaparkan semua jawapan yang diselesaikan; probe menguji alamat yang dipilih atau satu alamat bagi setiap keluarga yang diminta. Kedua-dua keluarga diukur secara bebas. Kehadiran AAAA sahaja tidak pernah bermakna sambungan IPv6 berfungsi.

Run Diagnostics (Jalankan diagnostik) menjalankan DNS, ping, traceroute, HTTP, pemampatan, TLS dan port TCP yang dipilih. WebSocket perlu didayakan secara eksplisit. Setiap alat juga mempunyai kawalan Run/Stop (Jalankan/Henti) yang berasingan. Hanya satu larian diagnostik boleh aktif pada satu masa. Larian yang selesai bermakna alat telah selesai, bukan bahawa setiap probe berjaya. Tiada keputusan menyeluruh “pelayan luar talian”.

Tamat masa, bilangan paket, ulangan, hop maksimum, penyelesai DNS, pilihan protokol, sambungan warm dan perbandingan HTTP/HTTPS boleh dikonfigurasikan. Mengubah sasaran mengosongkan IP yang dipilih sebelumnya. Sejarah boleh membuka semula, membandingkan dua laporan, memadam, mengimport JSON, menyalin atau mengeksport JSON/CSV/TXT melalui dialog Core asli. Tema cerah/gelap/sistem terpakai pada bahagian diagnostik dan disimpan dalam konfigurasi UI sedia ada. CZ/DE/EN mengikut bahasa aplikasi dengan serta-merta.

Komponen dan tingkah laku protokol

Komponen Pelaksanaan dan tafsiran
common.js Mengesahkan sasaran/pilihan, had dan nilai enum; penukaran IDNA; statistik berangka mengecualikan nilai yang tidak diketahui.
dnsDiagnostics.js Penyelesaian alamat sistem menggunakan dns.lookup untuk mematuhi konfigurasi sistem pengendalian dan fail hosts. Pertanyaan rekod menggunakan DNS UDP terhad dengan sandaran TCP untuk respons terpotong terhadap dns.getServers(), atau penyelesai tersuai/awam yang dipilih secara eksplisit. Tiada pertukaran tersirat kepada DNS awam.
processTools.js Melaksanakan ping/traceroute sistem pengendalian dengan tatasusunan argumen dan shell: false, output terhad, tamat masa eksplisit dan pembersihan abort/kill. Menghurai balasan paket dan hop, dan bukannya menganggap tempoh proses sebagai RTT.
httpDiagnostics.js curl yang disertakan untuk HTTP/1.1, HTTP/2 dan HTTP/3; pengesahan sijil yang ketat dan keluarga IP yang dipin. Setiap versi diminta secara bebas; versi sebenar direkodkan.
socketDiagnostics.js Probe versi TLS eksplisit, sambungan TCP terhad/banner pasif, pemerhatian kunci hos SSH sebelum pengesahan menggunakan kebergantungan ssh2 sedia ada, dan pengesahan Upgrade RFC 6455 pilihan.
diagnosticsService.js Menjalankan dan membatalkan alat, memilih/mengesahkan alamat, menstrim kemajuan, mengekalkan pengukuran separa dan memiliki tarikh akhir larian.
historyStore.js Sejarah setempat berversi yang terhad, penyuntingan data, import yang disemak skema dan eksport data yang diukur.

ICMP dan laluan

Ping secara lalai menghantar empat permintaan ICMP echo yang dilaksanakan secara individu. Hasil mengandungi RTT yang diukur bagi setiap paket, kiraan diterima/dihantar, kehilangan, min/purata/maks, sisihan piawai populasi, purata perbezaan mutlak antara RTT terukur yang berturutan (jitter), TTL/Hop Limit apabila dicetak, dan cap masa. Balasan <1 ms dikira sebagai diterima dengan had atas, dan bukannya mereka RTT berangka. RTT yang tidak diketahui dikecualikan daripada statistik kependaman. Statistik menggunakan tetingkap yang dikekalkan sehingga 500 paket; kiraan dihantar/diterima/kehilangan meliputi keseluruhan larian. Graf menunjukkan 200 pemerhatian terakhir, dengan simbol yang berbeza untuk balasan, balasan di bawah resolusi, balasan yang hilang dan tamat masa permintaan/proses yang eksplisit.

Balasan yang hilang boleh mencerminkan penapisan ICMP, kehilangan paket atau tamat masa; pemerhatian ini tidak dapat mengenal pasti tembok api secara muktamad. Boleh laku yang tiada, kegagalan kebenaran setempat dan pemanggilan alat yang tidak sah ialah ralat alat yang berasingan, bukan kehilangan paket atau ketidaksediaan pelayan. Tiada peningkatan keistimewaan diminta.

Traceroute menstrim hop, alamat, probe individu, purata dan peratusan probe tidak berjawab yang diperhatikan. DNS songsang diselesaikan selepas laluan, menggunakan penyelesai yang dipilih. Ulangan membandingkan jujukan alamat hop yang diperhatikan; perbezaan boleh mencerminkan pengimbangan beban. Hop perantaraan yang tidak menjawab tidak membuktikan laluan yang rosak. Metadata probe mentah dan kaedahnya muncul dalam butiran yang boleh dikembangkan. macOS memerlukan masa tunggu traceroute dalam saat integer; tamat masa berkesan yang dibundarkan direkodkan.

DNS

Dua belas jenis rekod ialah A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS dan DNSKEY. Penghuraian format wire DNS menyemak identiti transaksi/soalan, saiz rekod, gelung penuding pemampatan dan had mesej. Jawapan mengekalkan TTL rekod, masa pertanyaan, penyelesai dan keadaan NXDOMAIN/NODATA/SERVFAIL/refused/timeout. Carian alamat sistem pengendalian tidak dapat membekalkan TTL; pertanyaan rekod yang berasingan boleh.

Penjejakan CNAME dihadkan kepada lapan pautan dengan pengesanan kitaran. Semakan konsistensi mengulangi jawapan A/AAAA daripada penyelesai yang dipilih, dan melaksanakan PTR disahkan ke hadapan untuk ujian DNS literal IP. Jawapan yang berubah ialah pemerhatian, bukan bukti kerosakan DNS. Pertanyaan SRV menggunakan nama sasaran seperti yang diberikan; masukkan nama perkhidmatan seperti _service._tcp.example.org apabila perlu. DNSSEC sentiasa tidak disahkan. Kehadiran DS/DNSKEY dan juga bendera AD penyelesai tidak pernah dianggap sebagai pengesahan bebas.

HTTP, prestasi dan pemampatan

HTTP/1.1 hanya diterima sebagai disokong apabila versi itu benar-benar dikembalikan. HTTP/2 HTTPS memerlukan h2 yang dirundingkan; tiada sandaran yang dilabel semula. HTTP/2 teks jelas menggunakan prior knowledge, bukan probe Upgrade HTTP/1.1. Pengesahan TLS kekal ketat untuk setiap permintaan HTTP/WebSocket.

Ubah hala manual dihadkan kepada lapan; gelung, destinasi tidak sah dan ubah hala berlebihan gagal secara eksplisit. Rantaian penuh merekodkan perubahan merentas domain dan penurunan taraf HTTPS; perubahan skema dan www kelihatan dalam URL sumber/destinasi. Bukti kelayakan dan skema ubah hala bukan HTTP(S) ditolak. Setiap ubah hala merentas hos diselesaikan secara bebas melalui penyelesai dan keluarga IP yang dipilih.

Pengukuran merangkumi DNS (apabila dilaksanakan), TCP, TLS, TTFB respons akhir, TTFB keseluruhan termasuk DNS/ubah hala, muat turun, ubah hala dan jumlah masa sebenar, bait entiti sebenar, kelajuan pemindahan, status, pengepala respons, alamat/port pelayan sebenar, ALPN dan penggunaan semula sambungan yang disahkan. Fasa DNS/TCP/TLS yang tidak dilaksanakan pada sambungan yang dipin atau digunakan semula ialah N/A, bukan sifar palsu. QUIC tidak mempunyai fasa TCP; jabat tangannya direkodkan secara berasingan. Overhed pemindahan pengepala atau overhed wire penuh tidak didakwa sebagai pengukuran bait entiti. Ini ialah masa pelayan/rangkaian, bukan pemaparan halaman atau skor Lighthouse.

Setiap protokol yang dipilih menggunakan sasaran dan ulangan yang sama. IPv4/IPv6 dan HTTP/HTTPS ialah pilihan perbandingan yang eksplisit. Skema alternatif menggunakan port lalainya. Setiap protokol memulakan proses klien disertakan yang bebas bagi setiap sampel. Penggunaan semula sambungan tidak didakwa. Statistik jumlah masa merangkumi min/purata/median/maks/P95 kedudukan terdekat dan kadar ralat pengangkutan/protokol yang berasingan; kod status HTTP kekal kelihatan walaupun pelayan berjaya mengembalikan respons 4xx/5xx.

Pemampatan menghantar identity, gzip, deflate, br dan (apabila masa jalan menyokongnya) zstd sebagai permintaan Accept-Encoding yang berasingan. Content-Encoding mesti sepadan, dan penyahmampatan terhad mesti berjaya. Nisbah dikira hanya jika hash kandungan yang dinyahkod, URL akhir dan status sepadan dengan garis dasar identity. Pengekodan yang diabaikan dianggap tidak disokong; kandungan yang berubah/dinamik tidak mempunyai nisbah. Ini ialah pemerhatian untuk URL/status tersebut, bukan sokongan pelayan secara universal.

Semakan pengepala keselamatan menunjukkan kehadiran dan nilai HSTS, CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy dan X-Frame-Options. Arahan CSP frame-ancestors boleh mengatasi yang terakhir. Kehadiran tidak membuktikan bahawa dasar dikonfigurasikan dengan betul atau laman web itu selamat.

Keperluan dan bukti HTTP/3

HTTP/1.1, HTTP/2 dan HTTP/3 menggunakan klien curl disertakan yang sama. macOS arm64 dan Linux x64 menggunakan curl 8.22.0, OpenSSL 3.5.9, nghttp2 1.70.0, ngtcp2 1.25.0 dan nghttp3 1.18.0. Windows x64 menggunakan binaan statik rasmi curl-for-win 8.22.0_3 daripada curl.se dengan LibreSSL 4.3.3 dan pustaka HTTP yang sama. Tiada sandaran kepada curl sistem, muat turun semasa masa jalan atau kebenaran pentadbir diperlukan. Resipi binaan huluan Windows yang boleh dihasilkan semula ialah https://github.com/curl/curl-for-win/tree/9d77e31e .

Bina dengan python3 scripts/native/build.py (Windows: python scripts/native/build.py) sebelum pembungkusan. macOS/Linux memerlukan alat C/C++, CMake, Ninja, Perl, make dan pkg-config. Sumber dipin mengikut versi dan SHA-256 huluan dalam scripts/native/dependencies.lock.json. Skrip mengesahkan setiap muat turun, memaut pustaka pengangkutan pihak ketiga secara statik dan gagal tanpa ciri HTTP2/HTTP3/SSL. Hanya pustaka sistem pengendalian kekal dinamik. Windows menggunakan arkib binari rasmi yang dipin, bukan tindanan pengangkutan Windows yang dikompil secara setempat. Fail CA yang disertakan mempunyai hash pinnya sendiri; lesen komponen dan asal usul binaan huluan disertakan bersama masa jalan.

Klien dan stor kepercayaan dipasang di luar app.asar dalam resources/native-runtime/<platform>-<arch>/. Setiap diagnostik mengesahkan hash komponen, seni bina dan keupayaan boleh laku sebelum digunakan. Fail konfigurasi, proksi, penggantian persekitaran kepercayaan TLS dan pemboleh ubah suntikan pustaka dikecualikan. curl berjalan dengan laluan mutlak, shell dilumpuhkan, kepercayaan CA yang disahkan, keluarga IP yang ditetapkan secara eksplisit, tanpa kuki, tanpa ubah hala automatik, serta output dan masa yang terhad. Ubah hala disahkan dan diselesaikan semula oleh aplikasi. HTTPS pada port selain 443 disokong.

HTTP/3 menggunakan --http3-only dan hanya disahkan selepas pemindahan lengkap yang melaporkan HTTP versi 3 dan pengesahan sijil yang berjaya. Respons ralat HTTP seperti 404 boleh mengesahkan protokol tersebut. Alt-Svc ialah iklan, bukan bukti. Tamat masa QUIC, kegagalan sijil, kegagalan DNS, penolakan sambungan, protokol yang tidak serasi dan kegagalan komponen kekal dibezakan. Tamat masa UDP menyebabkan sokongan pelayan kekal tidak disahkan. Masa jabat tangan QUIC tidak dilaporkan sebagai masa TCP.

Setiap pengukuran memulakan proses/sambungan yang berasingan. Pilihan warm tidak mendakwa penggunaan semula sambungan untuk klien yang disertakan. Ini memastikan perbandingan protokol kekal konsisten. Laporan merangkumi versi masa jalan, keupayaan, pengesahan TLS dan masa QUIC, manakala sejarah/eksport membuang kandungan, pertanyaan URL dan pengepala pengesahan.

Kemas kini pin ini dan bina semula setiap platform yang disokong apabila mengemas kini tindanan pengangkutan atau stor kepercayaan CA. Artifak yang diterbitkan dan petikan sumber adalah kekal.

IPC Core

Preload hanya mendedahkan window.chjCore.diagnostics; semua pengendali mengekalkan semakan penghantar tetingkap utama yang sedia ada dan kerja rangkaian kekal dalam proses utama. Hasil menggunakan { ok: true, value } atau { ok: false, error: { code, message } }.

Saluran / kaedah preload Muatan / hasil
diagnostics:resolve / resolve(options) Sasaran/tetapan yang disahkan → sasaran dan alamat yang diselesaikan. Paling banyak dua permintaan penyelesaian serentak.
diagnostics:start / start(options) Sasaran/tetapan/pilihan alat yang disahkan → ID tugas legap dan laporan awal.
diagnostics:cancel / cancel(id, tool?) Batalkan satu alat yang aktif/dalam baris gilir atau keseluruhan larian.
diagnostics:get / get(id) Petikan larian yang diketahui atau laporan yang disimpan.
diagnostics:history / history() Ringkasan sejarah setempat.
diagnostics:removeHistory / removeHistory(id) Buang item sejarah yang dipilih.
diagnostics:copy / copy(id, format) Proses utama menulis laporan diketahui yang telah disunting ke papan keratan.
diagnostics:export / export(id, format) JSON/CSV/TXT melalui dialog simpan asli; renderer tidak boleh membekalkan laluan sistem fail.
diagnostics:import / import() Pemilih fail asli, pengesahan saiz/skema/kedalaman dan penyuntingan sebelum disimpan.
diagnostics:progress / onProgress(callback) Alamat yang diselesaikan, permulaan/penyelesaian alat, paket, hop, sampel HTTP dan penyelesaian; mengembalikan callback nyahlanggan.

Tiada API shell, sistem fail atau rangkaian generik yang didedahkan. Pengasingan konteks, kotak pasir, integrasi Node yang dilumpuhkan dan CSP renderer sedia ada kekal didayakan. Kontrak pemalam sedia ada serta pengesahan/pengecualian pengemas kini tidak berubah.

Belanjawan dan data setempat

Keperluan platform dan pengesahan

Platform ICMP Laluan Protokol lain
Windows 10/11 ping.exe -4/-6 tracert.exe -4/-6, ICMP curl.exe yang disertakan dengan HTTP/2 dan HTTP/3. Medan RTT yang disetempatkan tidak bergantung pada perkataan “time”.
macOS /sbin/ping, /sbin/ping6 /usr/sbin/traceroute, /usr/sbin/traceroute6, UDP; masa tunggu dalam saat integer curl yang disertakan dengan HTTP/2 dan HTTP/3.
Ubuntu/Linux iputils ping -4/-6 traceroute -4/-6 standard, UDP curl yang disertakan dengan HTTP/2 dan HTTP/3; alat ICMP/laluan yang tiada dilaporkan secara berasingan.

Tiada kebergantungan npm baharu ditambah. Pelaksanaan menggunakan modul terbina dalam Node dan ssh2 sedia ada aplikasi. Ia tidak memasang alat sistem dan tidak meminta hak pentadbiran. Tembok api dan sekatan UDP boleh menghalang ujian daripada membuktikan sokongan; ia tidak boleh disimpulkan daripada tamat masa sahaja.

Liputan automatik terdapat dalam diagnosticsCore.test.js, diagnosticsNetwork.test.js, diagnosticsHttp.test.js dan diagnosticsIpc.test.js: pengesahan/literal IPv6, fixture DNS UDP+TCP asli/setempat, jawapan yang tiada/dwi-keluarga dan ralat penyelesai, CNAME/konsistensi, fixture argumen/penghuraian sistem pengendalian, proses anak sebenar yang terhad, pemerhatian ICMP yang disekat, HTTP/1.1 dan TLS h2 setempat sebenar, ubah hala/had kandungan/tamat masa/penggunaan semula, pemampatan didayakan/diabaikan, keupayaan HTTP3/penghuraian hasil berjaya/penolakan sandaran, kepercayaan CA setempat/ketidakpadanan/tamat tempoh dan HTTP/HTTPS IPv6 sebenar, sambungan TCP/ditolak/tamat masa olok-olok, jabat tangan WebSocket dan SSH pra-pengesahan sebenar, pembatalan/pembersihan/hasil separa, keadaan luar talian, perjalanan pergi balik sejarah persendirian/penolakan import/eksport, IPC yang dipercayai dan langganan preload.

npm test menjalankan ujian berketentuan tanpa pelayan ujian awam. npm run test:diagnostics:ui menjalankan scripts/smokeDiagnostics.js dalam desktop Electron grafik, menggunakan UI/preload/IPC pengeluaran dan probe HTTP/pemampatan setempat sebenar. Perkhidmatan yang tidak berkaitan hanya disimulasikan/dijadikan luar talian dalam abah-abah ujian ini. Ia menyemak susunan navigasi, hasil protokol, kegigihan data, CZ/DE/EN, kedua-dua tema, limpahan tetingkap sempit dan keutamaan kotak pasir. Jika shell menetapkan ELECTRON_RUN_AS_NODE, nyahtetapkannya untuk arahan ini.

Pengesahan masa jalan semasa merangkumi pemindahan QUIC terkawal, IPv4/IPv6, HTTPS pada port bukan lalai, respons 404, kegagalan TLS dan perkhidmatan TCP sahaja yang mengiklankan Alt-Svc. Hasil bagi setiap binaan disertakan dengan setiap keluaran.

Had pilihan yang eksplisit: tiada pengesahan DNSSEC bebas (memerlukan penyelesai pengesahan lengkap/kitaran hayat trust anchor), tiada audit Lighthouse (masa pelayan/rangkaian sahaja), tiada audit TLS lapuk atau perkhidmatan pembatalan/CT, tiada dakwaan penggunaan semula warm HTTP3, dan tiada pengukuran penggunaan semula warm HTTP/3. Keupayaan yang tidak disokong dipaparkan dan bukannya disimulasikan.

Fail dalam perubahan ini

Dicipta: tujuh fail perkhidmatan dalam src/main/diagnostics/; src/renderer/diagnostics.js, diagnosticsI18n.js, diagnostics.css; empat fail test/diagnostics*.test.js; lima fail di bawah test/fixtures/diagnostics/; scripts/smokeDiagnostics.js; dokumen ini.

Disepadukan/dikemas kini: 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, README.md akar, .gitignore (empat pengecualian fixture awam), dan senarai benar gitleaks akar yang secara sempit menamakan fixture kunci ujian TLS yang sengaja diumumkan. Kunci persendirian CA tandatangan telah dibuang; fixture tidak pernah digunakan oleh masa jalan aplikasi.