CH-J ToolsSSH के ज़रिए सर्वर प्रबंधन
मेनू

Server Diagnostics (सर्वर डायग्नोस्टिक्स)

फ़ाइल डाउनलोड करें

इस अनुवाद की भाषाई समीक्षा जारी है। कोई अंश अस्पष्ट हो, तो अंग्रेज़ी मूल पाठ से मिलाएँ।

Core साइडबार में Plugins → Server Diagnostics → Hash & Checksum क्रम में एकीकृत। इसके लिए न तो SSH सेशन की ज़रूरत है और न ही डाउनलोड किए गए प्लगइन की। सारा रनटाइम कोड, परीक्षण और फ़िक्स्चर app/ में हैं; मॉड्यूल किसी सहोदर रिपॉज़िटरी पर निर्भर नहीं है। रिपॉज़िटरी में doc.md नहीं है, इसलिए यह दस्तावेज़ और दोनों README कार्यान्वयन का वर्णन करते हैं।

उपयोगकर्ता वर्कफ़्लो

होस्टनेम, IPv4, IPv6 या HTTP(S)/WS(S) URL दर्ज करें। केवल होस्टनेम/IP देने पर डिफ़ॉल्ट रूप से HTTPS उपयोग होता है; स्पष्ट URL अनुरोध के दौरान अपना पथ, क्वेरी और पोर्ट बनाए रखते हैं। URL में क्रेडेंशियल, असमर्थित स्कीम, रिक्त/कंट्रोल अक्षर और शेल जैसे होस्टनेम अस्वीकार किए जाते हैं। IPv6 लिटरल अपने-आप कोष्ठक में रखे जाते हैं; scoped/link-local ज़ोन पहचानकर्ता URL पार्सर में समर्थित नहीं हैं।

Auto (IPv4 को प्राथमिकता, अन्यथा IPv6), IPv4, IPv6 या Both चुनें। किसी विशेष मौजूदा उत्तर को चुनने के लिए "पते रिज़ॉल्व करें" का उपयोग करें। अवलोकन सभी रिज़ॉल्व किए गए उत्तर दिखाता है; प्रोब चुने गए पते का या हर अनुरोधित फ़ैमिली के एक पते का परीक्षण करते हैं। दोनों फ़ैमिली अलग-अलग मापी जाती हैं। केवल AAAA रिकॉर्ड होने का अर्थ कभी यह नहीं होता कि IPv6 कनेक्टिविटी काम कर रही है।

Run Diagnostics (डायग्नोस्टिक्स चलाएँ) DNS, ping, traceroute, HTTP, कम्प्रेशन, TLS और चुने गए TCP पोर्ट की जाँच चलाता है। WebSocket केवल चुनने पर चलता है। हर टूल का अपना अलग Run/Stop नियंत्रण भी है। एक समय में केवल एक डायग्नोस्टिक रन सक्रिय हो सकता है। पूरा हुआ रन केवल यह बताता है कि टूल समाप्त हो गए, यह नहीं कि हर प्रोब सफल रहा। कोई सामान्य "सर्वर ऑफ़लाइन" निर्णय नहीं दिया जाता।

टाइमआउट, पैकेट संख्या, दोहराव, अधिकतम हॉप, DNS रिज़ॉल्वर, प्रोटोकॉल चयन, warm कनेक्शन और HTTP/HTTPS तुलना कॉन्फ़िगर की जा सकती है। लक्ष्य बदलने पर पहले चुना गया IP साफ़ हो जाता है। इतिहास में रिपोर्ट फिर से खोली जा सकती है, दो रिपोर्ट की तुलना की जा सकती है, उन्हें हटाया जा सकता है, JSON इम्पोर्ट किया जा सकता है, कॉपी किया जा सकता है या नेटिव Core संवादों से JSON/CSV/TXT में एक्सपोर्ट किया जा सकता है। Light/dark/system थीम डायग्नोस्टिक्स सेक्शन पर लागू होती है और मौजूदा UI कॉन्फ़िगरेशन में सहेजी जाती है। CZ/DE/EN तुरंत ऐप्लिकेशन की भाषा का पालन करता है।

घटक और प्रोटोकॉल व्यवहार

घटक कार्यान्वयन और व्याख्या
common.js लक्ष्य/विकल्प, सीमाएँ और enum मान सत्यापित करता है; IDNA रूपांतरण; संख्यात्मक आँकड़ों में अज्ञात मान शामिल नहीं किए जाते।
dnsDiagnostics.js सिस्टम पता रिज़ॉल्यूशन OS कॉन्फ़िगरेशन और hosts फ़ाइलों का पालन करने के लिए dns.lookup का उपयोग करता है। रिकॉर्ड क्वेरी सीमित UDP DNS का उपयोग करती हैं और कटे हुए उत्तरों के लिए TCP पर लौटती हैं, dns.getServers() या स्पष्ट रूप से चुने गए कस्टम/सार्वजनिक रिज़ॉल्वर के विरुद्ध। सार्वजनिक DNS पर कोई अप्रत्यक्ष स्विच नहीं।
processTools.js OS ping/traceroute को आर्ग्युमेंट ऐरे और shell: false के साथ चलाता है, सीमित आउटपुट, स्पष्ट टाइमआउट और abort/kill सफ़ाई के साथ। प्रोसेस की अवधि को RTT मानने के बजाय पैकेट जवाब और हॉप पार्स करता है।
httpDiagnostics.js HTTP/1.1, HTTP/2 और HTTP/3 के लिए बंडल curl; सख़्त प्रमाणपत्र सत्यापन और तय IP फ़ैमिली। हर संस्करण का अलग अनुरोध होता है; वास्तविक संस्करण दर्ज किया जाता है।
socketDiagnostics.js स्पष्ट TLS संस्करण प्रोब, सीमित TCP कनेक्ट/निष्क्रिय बैनर, मौजूदा ssh2 डिपेंडेंसी से प्रमाणीकरण से पहले SSH होस्ट-कुंजी अवलोकन और वैकल्पिक RFC 6455 Upgrade सत्यापन।
diagnosticsService.js टूल चलाता और रद्द करता है, पते चुनता/सत्यापित करता है, प्रगति स्ट्रीम करता है, आंशिक माप सुरक्षित रखता है और रन की समय-सीमा संभालता है।
historyStore.js संस्करण वाला सीमित स्थानीय इतिहास, जानकारी छिपाना, स्कीमा-जाँच वाले इम्पोर्ट और मापे गए डेटा के एक्सपोर्ट।

ICMP और रूट

Ping डिफ़ॉल्ट रूप से अलग-अलग चलाए गए चार ICMP echo अनुरोध भेजता है। परिणामों में हर पैकेट का मापा गया RTT, प्राप्त/भेजे गए की संख्या, हानि, न्यूनतम/औसत/अधिकतम, जनसंख्या मानक विचलन, लगातार मापे गए RTT के बीच औसत निरपेक्ष अंतर (jitter), प्रिंट होने पर TTL/Hop Limit और टाइमस्टैम्प होते हैं। <1 ms जवाब को ऊपरी सीमा के साथ प्राप्त माना जाता है, कोई संख्यात्मक RTT गढ़ा नहीं जाता। अज्ञात RTT लेटेंसी आँकड़ों से बाहर रखे जाते हैं। आँकड़े अधिकतम 500 पैकेट की रखी गई विंडो का उपयोग करते हैं; भेजे/प्राप्त/हानि की गिनती पूरे रन को कवर करती है। ग्राफ़ अंतिम 200 अवलोकन दिखाते हैं, जवाब, रिज़ॉल्यूशन से कम जवाब, न मिले जवाब और स्पष्ट अनुरोध/प्रोसेस टाइमआउट के लिए अलग-अलग चिह्नों के साथ।

जवाब न मिलना ICMP फ़िल्टरिंग, पैकेट हानि या टाइमआउट को दर्शा सकता है; इन अवलोकनों से फ़ायरवॉल की निर्णायक पहचान नहीं हो सकती। न मिले एक्ज़िक्यूटेबल, स्थानीय अनुमति विफलताएँ और अमान्य टूल कॉल अलग टूल त्रुटियाँ हैं, पैकेट हानि या सर्वर की अनुपलब्धता नहीं। कोई विशेषाधिकार वृद्धि नहीं माँगी जाती।

Traceroute हॉप, पते, अलग-अलग प्रोब, औसत और देखे गए अनुत्तरित-प्रोब प्रतिशत को क्रमशः दिखाता है। रिवर्स DNS रूट के बाद चुने गए रिज़ॉल्वर से रिज़ॉल्व होता है। दोहराव देखे गए हॉप-पते क्रमों की तुलना करते हैं; अंतर लोड बैलेंसिंग के कारण हो सकते हैं। बीच के अनुत्तरित हॉप से टूटा हुआ रूट सिद्ध नहीं होता। कच्चा प्रोब मेटाडेटा और विधि विस्तार योग्य विवरण में दिखते हैं। macOS को traceroute प्रतीक्षा पूर्ण सेकंड में चाहिए; लागू किया गया पूर्णांकित टाइमआउट दर्ज किया जाता है।

DNS

बारह रिकॉर्ड प्रकार हैं A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS और DNSKEY। DNS वायर पार्सिंग ट्रांज़ैक्शन/प्रश्न की पहचान, रिकॉर्ड आकार, कम्प्रेशन-पॉइंटर लूप और संदेश सीमाएँ जाँचती है। उत्तर रिकॉर्ड TTL, क्वेरी समय, रिज़ॉल्वर और NXDOMAIN/NODATA/SERVFAIL/refused/timeout स्थितियाँ सुरक्षित रखते हैं। OS पता लुकअप TTL नहीं दे सकते; अलग रिकॉर्ड क्वेरी दे सकती है।

CNAME का पालन चक्र पहचान के साथ आठ लिंक तक सीमित है। स्थिरता जाँच चुने गए रिज़ॉल्वर से A/AAAA उत्तरों को दोहराती है और IP-लिटरल DNS परीक्षणों के लिए forward-confirmed PTR करती है। बदले हुए उत्तर अवलोकन हैं, DNS दोष का प्रमाण नहीं। SRV क्वेरी लक्ष्य नाम को दिए गए रूप में उपयोग करती हैं; ज़रूरत हो तो _service._tcp.example.org जैसा सेवा नाम दर्ज करें। DNSSEC हमेशा सत्यापित नहीं होता। DS/DNSKEY की उपस्थिति, यहाँ तक कि रिज़ॉल्वर का AD फ़्लैग भी, कभी स्वतंत्र सत्यापन नहीं माना जाता।

HTTP, प्रदर्शन और कम्प्रेशन

HTTP/1.1 उस संस्करण को केवल तभी समर्थित मानता है जब वह वास्तव में लौटाया गया हो। HTTPS HTTP/2 के लिए h2 का नेगोशिएट होना ज़रूरी है; किसी भी फ़ॉलबैक का लेबल नहीं बदला जाता। सादा HTTP/2 prior knowledge का उपयोग करता है, HTTP/1.1 Upgrade प्रोब का नहीं। हर HTTP/WebSocket अनुरोध के लिए TLS सत्यापन सख़्त रहता है।

मैन्युअल रीडायरेक्ट आठ तक सीमित हैं; लूप, अमान्य गंतव्य और अत्यधिक रीडायरेक्ट स्पष्ट रूप से विफल होते हैं। पूरी शृंखला क्रॉस-डोमेन बदलाव और HTTPS डाउनग्रेड दर्ज करती है; स्कीम और www बदलाव स्रोत/गंतव्य URL में दिखते हैं। क्रेडेंशियल और गैर-HTTP(S) रीडायरेक्ट स्कीम अस्वीकार किए जाते हैं। हर क्रॉस-होस्ट रीडायरेक्ट चुने गए रिज़ॉल्वर और अनुरोधित IP फ़ैमिली से स्वतंत्र रूप से रिज़ॉल्व होता है।

मापों में DNS (जब किया गया हो), TCP, TLS, अंतिम-प्रतिक्रिया TTFB, DNS/रीडायरेक्ट सहित कुल TTFB, डाउनलोड, रीडायरेक्ट और कुल समय, वास्तविक एंटिटी बाइट, ट्रांसफ़र गति, स्थिति, प्रतिक्रिया हेडर, वास्तविक सर्वर पता/पोर्ट, ALPN और सत्यापित कनेक्शन पुनः उपयोग शामिल हैं। तय या पुनः उपयोग किए गए कनेक्शन पर न किए गए DNS/TCP/TLS चरण N/A होते हैं, नकली शून्य नहीं। QUIC का कोई TCP चरण नहीं है; उसका हैंडशेक अलग दर्ज किया जाता है। हेडर ट्रांसफ़र या पूरे वायर ओवरहेड को एंटिटी-बाइट माप के रूप में प्रस्तुत नहीं किया जाता। ये सर्वर/नेटवर्क समय हैं, पेज रेंडरिंग या Lighthouse स्कोर नहीं।

हर चुना गया प्रोटोकॉल समान लक्ष्य और दोहराव का उपयोग करता है। IPv4/IPv6 और HTTP/HTTPS स्पष्ट तुलना विकल्प हैं। दूसरी स्कीम अपने डिफ़ॉल्ट पोर्ट का उपयोग करती है। हर प्रोटोकॉल हर नमूने के लिए एक स्वतंत्र बंडल-क्लाइंट प्रोसेस शुरू करता है। कनेक्शन पुनः उपयोग का दावा नहीं किया जाता। कुल-समय आँकड़ों में न्यूनतम/औसत/माध्यिका/अधिकतम/nearest-rank P95 और अलग ट्रांसपोर्ट/प्रोटोकॉल त्रुटि दर शामिल हैं; जब सर्वर सफलतापूर्वक 4xx/5xx प्रतिक्रिया लौटाता है, तब भी HTTP स्थिति कोड दिखाई देते रहते हैं।

कम्प्रेशन जाँच identity, gzip, deflate, br और (जब रनटाइम सपोर्ट करे) zstd को अलग-अलग Accept-Encoding अनुरोधों के रूप में भेजती है। Content-Encoding मेल खाना चाहिए और सीमित डीकम्प्रेशन सफल होना चाहिए। अनुपात केवल तभी निकाला जाता है जब डिकोड की गई बॉडी का हैश, अंतिम URL और स्थिति identity बेसलाइन से मेल खाएँ। अनदेखी की गई एन्कोडिंग असमर्थित मानी जाती हैं; बदलती/डायनैमिक बॉडी का कोई अनुपात नहीं होता। यह उस URL/स्थिति के लिए एक अवलोकन है, सर्वर का सार्वभौमिक समर्थन नहीं।

सुरक्षा-हेडर जाँच HSTS, CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy और X-Frame-Options की उपस्थिति और मान दिखाती है। CSP का frame-ancestors निर्देश अंतिम वाले की जगह ले सकता है। उपस्थिति से यह सिद्ध नहीं होता कि नीति सही कॉन्फ़िगर है या वेबसाइट सुरक्षित है।

HTTP/3 की आवश्यकताएँ और प्रमाण

HTTP/1.1, HTTP/2 और HTTP/3 एक ही बंडल curl क्लाइंट का उपयोग करते हैं। macOS arm64 और Linux x64 पर curl 8.22.0, OpenSSL 3.5.9, nghttp2 1.70.0, ngtcp2 1.25.0 और nghttp3 1.18.0 उपयोग होते हैं। Windows x64 पर curl.se का आधिकारिक curl-for-win 8.22.0_3 स्टैटिक बिल्ड, LibreSSL 4.3.3 और वही HTTP लाइब्रेरी उपयोग होती हैं। सिस्टम curl पर लौटने, रनटाइम डाउनलोड या व्यवस्थापक अनुमति की ज़रूरत नहीं है। Windows अपस्ट्रीम की पुनरुत्पादनीय बिल्ड विधि https://github.com/curl/curl-for-win/tree/9d77e31e पर है।

पैकेजिंग से पहले python3 scripts/native/build.py से बिल्ड करें (Windows: python scripts/native/build.py)। macOS/Linux के लिए C/C++ टूल, CMake, Ninja, Perl, make और pkg-config ज़रूरी हैं। सोर्स संस्करण और अपस्ट्रीम SHA-256 के आधार पर scripts/native/dependencies.lock.json में तय हैं। स्क्रिप्ट हर डाउनलोड सत्यापित करती है, तृतीय-पक्ष ट्रांसपोर्ट लाइब्रेरी को स्टैटिक रूप से लिंक करती है और HTTP2/HTTP3/SSL सुविधाओं के बिना विफल हो जाती है। केवल ऑपरेटिंग-सिस्टम लाइब्रेरी डायनैमिक रहती हैं। Windows स्थानीय रूप से कंपाइल किए गए Windows ट्रांसपोर्ट स्टैक के बजाय तय आधिकारिक बाइनरी आर्काइव का उपयोग करता है। बंडल CA फ़ाइल का अपना तय हैश है; घटकों के लाइसेंस और अपस्ट्रीम बिल्ड का स्रोत-विवरण रनटाइम के साथ आते हैं।

क्लाइंट और ट्रस्ट स्टोर app.asar के बाहर resources/native-runtime/<platform>-<arch>/ में इंस्टॉल होते हैं। हर डायग्नोस्टिक उपयोग से पहले घटकों के हैश, आर्किटेक्चर और एक्ज़िक्यूटेबल की क्षमताएँ सत्यापित करता है। कॉन्फ़िगरेशन फ़ाइलें, प्रॉक्सी, TLS ट्रस्ट से जुड़े एनवायरनमेंट ओवरराइड और लाइब्रेरी इंजेक्शन वेरिएबल बाहर रखे जाते हैं। curl एक पूर्ण पथ, बंद शेल, सत्यापित CA ट्रस्ट और स्पष्ट रूप से तय IP फ़ैमिली के साथ चलता है, बिना कुकी और बिना स्वचालित रीडायरेक्ट के, तथा सीमित आउटपुट और समय के साथ। रीडायरेक्ट को ऐप्लिकेशन सत्यापित करता है और फिर से रिज़ॉल्व करता है। 443 के अलावा अन्य पोर्ट पर HTTPS समर्थित है।

HTTP/3 --http3-only का उपयोग करता है और उसकी पुष्टि केवल तब होती है जब ऐसा ट्रांसफ़र पूरा हो जो HTTP संस्करण 3 और सफल प्रमाणपत्र सत्यापन की रिपोर्ट करे। 404 जैसी HTTP त्रुटि प्रतिक्रियाएँ भी प्रोटोकॉल की पुष्टि कर सकती हैं। Alt-Svc एक घोषणा है, प्रमाण नहीं। QUIC टाइमआउट, प्रमाणपत्र विफलता, DNS विफलता, कनेक्शन अस्वीकृति, असंगत प्रोटोकॉल और घटक विफलता अलग-अलग रहते हैं। UDP टाइमआउट से सर्वर का समर्थन अपुष्ट रहता है। QUIC हैंडशेक का समय TCP समय के रूप में रिपोर्ट नहीं किया जाता।

हर माप एक अलग प्रोसेस/कनेक्शन शुरू करता है। warm विकल्प बंडल क्लाइंट के लिए कनेक्शन के पुनः उपयोग का दावा नहीं करता। इससे प्रोटोकॉल तुलनाएँ सुसंगत रहती हैं। रिपोर्ट में रनटाइम संस्करण, क्षमताएँ, TLS सत्यापन और QUIC समय शामिल होते हैं, जबकि इतिहास/एक्सपोर्ट बॉडी, URL क्वेरी और प्रमाणीकरण हेडर हटा देते हैं।

ट्रांसपोर्ट स्टैक या CA ट्रस्ट स्टोर अपडेट करते समय इन तय मानों को अपडेट करें और हर समर्थित प्लेटफ़ॉर्म के लिए फिर से बिल्ड करें। प्रकाशित आर्टिफ़ैक्ट और सोर्स स्नैपशॉट अपरिवर्तनीय हैं।

Core IPC

Preload केवल window.chjCore.diagnostics उपलब्ध कराता है; सभी हैंडलर मौजूदा मुख्य-विंडो प्रेषक जाँच बनाए रखते हैं और नेटवर्क कार्य मुख्य प्रोसेस में ही रहता है। परिणाम { ok: true, value } या { ok: false, error: { code, message } } का उपयोग करते हैं।

चैनल / preload मेथड पेलोड / परिणाम
diagnostics:resolve / resolve(options) सत्यापित लक्ष्य/सेटिंग्स → लक्ष्य और रिज़ॉल्व किए गए पते। एक साथ अधिकतम दो रिज़ॉल्यूशन अनुरोध।
diagnostics:start / start(options) सत्यापित लक्ष्य/सेटिंग्स/टूल चयन → अपारदर्शी जॉब ID और प्रारंभिक रिपोर्ट।
diagnostics:cancel / cancel(id, tool?) एक सक्रिय/कतारबद्ध टूल या पूरा रन रद्द करें।
diagnostics:get / get(id) किसी ज्ञात रन या सहेजी गई रिपोर्ट का स्नैपशॉट।
diagnostics:history / history() स्थानीय इतिहास के सारांश।
diagnostics:removeHistory / removeHistory(id) चुना गया इतिहास आइटम हटाएँ।
diagnostics:copy / copy(id, format) मुख्य प्रोसेस एक छिपाई गई ज्ञात रिपोर्ट क्लिपबोर्ड में लिखता है।
diagnostics:export / export(id, format) नेटिव सेव संवाद से JSON/CSV/TXT; रेंडरर फ़ाइल सिस्टम पथ नहीं दे सकता।
diagnostics:import / import() नेटिव फ़ाइल पिकर, सहेजने से पहले आकार/स्कीमा/गहराई सत्यापन और जानकारी छिपाना।
diagnostics:progress / onProgress(callback) रिज़ॉल्व किए गए पते, टूल की शुरुआत/समाप्ति, पैकेट, हॉप, HTTP नमूने और पूर्णता; अनसब्सक्राइब कॉलबैक लौटाता है।

कोई सामान्य शेल, फ़ाइल सिस्टम या नेटवर्क API उपलब्ध नहीं कराया जाता। कॉन्टेक्स्ट आइसोलेशन, सैंडबॉक्स, बंद Node इंटीग्रेशन और मौजूदा रेंडरर CSP सक्षम रहते हैं। मौजूदा प्लगइन अनुबंध और अपडेटर सत्यापन/अपवाद अपरिवर्तित हैं।

संसाधन सीमाएँ और स्थानीय डेटा

प्लेटफ़ॉर्म आवश्यकताएँ और सत्यापन

प्लेटफ़ॉर्म ICMP रूट अन्य प्रोटोकॉल
Windows 10/11 ping.exe -4/-6 tracert.exe -4/-6, ICMP HTTP/2 और HTTP/3 वाला बंडल curl.exe। स्थानीयकृत RTT फ़ील्ड "time" शब्द पर निर्भर नहीं हैं।
macOS /sbin/ping, /sbin/ping6 /usr/sbin/traceroute, /usr/sbin/traceroute6, UDP; पूर्ण-सेकंड प्रतीक्षा HTTP/2 और HTTP/3 वाला बंडल curl।
Ubuntu/Linux iputils ping -4/-6 मानक traceroute -4/-6, UDP HTTP/2 और HTTP/3 वाला बंडल curl; न मिले ICMP/रूट टूल अलग से रिपोर्ट होते हैं।

कोई नई npm डिपेंडेंसी नहीं जोड़ी गई। कार्यान्वयन Node के अंतर्निहित मॉड्यूल और ऐप्लिकेशन के मौजूदा ssh2 का उपयोग करता है। यह न तो सिस्टम टूल इंस्टॉल करता है और न ही व्यवस्थापक अधिकार माँगता है। फ़ायरवॉल और UDP प्रतिबंध किसी परीक्षण को समर्थन स्थापित करने से रोक सकते हैं; केवल टाइमआउट से उनका अनुमान नहीं लगाया जा सकता।

स्वचालित कवरेज diagnosticsCore.test.js, diagnosticsNetwork.test.js, diagnosticsHttp.test.js और diagnosticsIpc.test.js में है: सत्यापन/IPv6 लिटरल, नेटिव/स्थानीय DNS UDP+TCP फ़िक्स्चर, न मिले/दोहरी-फ़ैमिली उत्तर और रिज़ॉल्वर त्रुटियाँ, CNAME/स्थिरता, OS आर्ग्युमेंट/पार्सिंग फ़िक्स्चर, सीमित वास्तविक चाइल्ड प्रोसेस, ब्लॉक किए गए ICMP अवलोकन, वास्तविक स्थानीय HTTP/1.1 और TLS h2, रीडायरेक्ट/बॉडी सीमाएँ/टाइमआउट/पुनः उपयोग, सक्षम/अनदेखा कम्प्रेशन, HTTP3 क्षमताएँ/सफल-परिणाम पार्सिंग/फ़ॉलबैक अस्वीकृति, स्थानीय CA ट्रस्ट/बेमेल/समाप्ति और वास्तविक IPv6 HTTP/HTTPS, TCP कनेक्ट/अस्वीकृत/मॉक टाइमआउट, वास्तविक WebSocket और SSH प्री-ऑथेंटिकेशन हैंडशेक, रद्दीकरण/सफ़ाई/आंशिक परिणाम, ऑफ़लाइन स्थिति, निजी इतिहास राउंड-ट्रिप/इम्पोर्ट अस्वीकृति/एक्सपोर्ट, विश्वसनीय IPC और preload सब्सक्रिप्शन।

npm test सार्वजनिक टेस्ट सर्वर के बिना निर्धारक परीक्षण चलाता है। npm run test:diagnostics:ui एक ग्राफ़िकल Electron डेस्कटॉप में scripts/smokeDiagnostics.js चलाता है, प्रोडक्शन UI/preload/IPC और वास्तविक स्थानीय HTTP/कम्प्रेशन प्रोब के साथ। असंबंधित सेवाएँ केवल इस टेस्ट हार्नेस में stub/ऑफ़लाइन की जाती हैं। यह नेविगेशन क्रम, प्रोटोकॉल परिणाम, स्थायित्व, CZ/DE/EN, दोनों थीम, संकरी विंडो में ओवरफ़्लो और सैंडबॉक्स प्राथमिकताएँ जाँचता है। अगर शेल ELECTRON_RUN_AS_NODE सेट करता है, तो इस कमांड के लिए उसे हटा दें।

मौजूदा रनटाइम सत्यापन नियंत्रित QUIC ट्रांसफ़र, IPv4/IPv6, गैर-डिफ़ॉल्ट पोर्ट पर HTTPS, 404 प्रतिक्रियाएँ, TLS विफलताएँ और Alt-Svc घोषित करने वाली केवल-TCP सेवा को कवर करता है। हर बिल्ड के परिणाम हर रिलीज़ के साथ आते हैं।

स्पष्ट वैकल्पिक सीमाएँ: कोई स्वतंत्र DNSSEC सत्यापन नहीं (इसके लिए पूरा सत्यापन करने वाला रिज़ॉल्वर/ट्रस्ट-एंकर जीवनचक्र चाहिए), कोई Lighthouse ऑडिट नहीं (केवल सर्वर/नेटवर्क समय), कोई अप्रचलित TLS ऑडिट या रद्दीकरण/CT सेवा नहीं, HTTP3 warm-reuse का कोई दावा नहीं, और HTTP/3 warm-reuse का कोई माप नहीं। असमर्थित क्षमताएँ अनुकरण करने के बजाय दिखाई जाती हैं।

इस बदलाव की फ़ाइलें

बनाई गईं: src/main/diagnostics/ में सात सेवा फ़ाइलें; src/renderer/diagnostics.js, diagnosticsI18n.js, diagnostics.css; चार test/diagnostics*.test.js फ़ाइलें; test/fixtures/diagnostics/ में पाँच फ़ाइलें; scripts/smokeDiagnostics.js; यह दस्तावेज़।

एकीकृत/अपडेट की गईं: 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, .gitignore (चार सार्वजनिक फ़िक्स्चर अपवाद) और रूट gitleaks अनुमति-सूची, जिसमें जानबूझकर सार्वजनिक TLS टेस्ट-कुंजी फ़िक्स्चर का संकीर्ण रूप से नाम दिया गया है। साइनिंग CA निजी कुंजी नष्ट कर दी गई; फ़िक्स्चर का उपयोग ऐप्लिकेशन रनटाइम कभी नहीं करता।