در نوار کناری Core و به ترتیب Plugins ← Server Diagnostics ← Hash & Checksum یکپارچه شده است. به نشست SSH یا افزونهٔ دانلودشده نیازی ندارد. همهٔ کد محیط اجرا، آزمونها و دادههای نمونه (fixtures) در app/ قرار دارند؛ این ماژول به مخزنهای همسطح وابسته نیست. مخزن doc.md ندارد، بنابراین این سند و هر دو README پیادهسازی را شرح میدهند.
گردش کار کاربر
نام میزبان، IPv4، IPv6 یا URL از نوع HTTP(S)/WS(S) را وارد کنید. نامهای میزبان/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 (اجرا/توقف) جداگانه نیز دارد. در هر زمان فقط یک اجرای عیبیابی میتواند فعال باشد. اجرای کاملشده یعنی ابزارها تمام شدهاند، نه اینکه همهٔ کاوشها موفق بودهاند. هیچ حکم کلی «سرور آفلاین است» وجود ندارد.
مهلت، تعداد بستهها، تکرارها، بیشینهٔ hop، حلکنندهٔ DNS، انتخاب پروتکل، اتصال warm و مقایسهٔ HTTP/HTTPS قابل پیکربندیاند. تغییر مقصد IP انتخابشدهٔ قبلی را پاک میکند. تاریخچه امکان باز کردن دوباره، مقایسهٔ دو گزارش، حذف، درونریزی JSON، کپی یا برونبری JSON/CSV/TXT را از طریق پنجرههای بومی Core فراهم میکند. پوستهٔ روشن/تیره/مطابق سیستم برای بخش عیبیابی اعمال میشود و در پیکربندی موجود رابط کاربری ذخیره میشود. CZ/DE/EN فوراً از زبان برنامه پیروی میکند.
اجزا و رفتار پروتکل
| جزء | پیادهسازی و تفسیر |
|---|---|
common.js |
مقصدها/گزینهها، محدودیتها و مقادیر enum را اعتبارسنجی میکند؛ تبدیل IDNA؛ آمار عددی مقادیر نامعلوم را کنار میگذارد. |
dnsDiagnostics.js |
حل نشانی سیستم از dns.lookup استفاده میکند تا پیکربندی سیستمعامل و فایلهای hosts رعایت شود. پرسوجوهای رکورد از DNS محدود روی UDP با بازگشت به TCP برای پاسخهای بریدهشده در برابر dns.getServers() یا حلکنندهٔ سفارشی/عمومیِ صراحتاً انتخابشده استفاده میکنند. هیچ جابهجایی ضمنی به DNS عمومی وجود ندارد. |
processTools.js |
ping/traceroute سیستمعامل را با آرایهٔ آرگومانها و shell: false، خروجی محدود، مهلت صریح و پاکسازی abort/kill اجرا میکند. پاسخهای بسته و hopها را تجزیه میکند، بهجای آنکه مدت فرایند را RTT بداند. |
httpDiagnostics.js |
curl همراه برای HTTP/1.1، HTTP/2 و HTTP/3؛ راستیآزمایی سختگیرانهٔ گواهی و خانوادهٔ IP تثبیتشده. هر نسخه مستقلاً درخواست میشود؛ نسخهٔ واقعی ثبت میشود. |
socketDiagnostics.js |
کاوشهای صریح نسخهٔ TLS، اتصالهای محدود TCP/بنرهای غیرفعال، مشاهدهٔ کلید میزبان SSH پیش از احراز هویت با وابستگی موجود ssh2، و اعتبارسنجی اختیاری Upgrade طبق RFC 6455. |
diagnosticsService.js |
ابزارها را اجرا و لغو میکند، نشانیها را انتخاب/اعتبارسنجی میکند، پیشرفت را جریان میدهد، اندازهگیریهای جزئی را حفظ میکند و مهلت نهایی اجرا را در اختیار دارد. |
historyStore.js |
تاریخچهٔ محلی نسخهدار و محدود، پنهانسازی دادهها، درونریزی با بررسی طرح و برونبری دادههای اندازهگیریشده. |
ICMP و مسیرها
ping بهطور پیشفرض چهار درخواست ICMP echo را جداگانه اجرا میکند. نتایج شامل RTT اندازهگیریشدهٔ هر بسته، شمار دریافت/ارسال، اتلاف، کمینه/میانگین/بیشینه، انحراف معیار جامعه، میانگین اختلاف مطلق میان RTTهای پیاپی اندازهگیریشده (jitter)، TTL/Hop Limit در صورت چاپ، و برچسبهای زمانیاند. پاسخ <1 ms بهجای ساختن RTT عددی، دریافتشده با کران بالا شمرده میشود. RTTهای نامعلوم از آمار تأخیر کنار گذاشته میشوند. آمار از پنجرهٔ نگهداشتهشدهٔ حداکثر 500 بسته استفاده میکند؛ شمار ارسال/دریافت/اتلاف کل اجرا را پوشش میدهد. نمودارها 200 مشاهدهٔ آخر را با نمادهای متمایز برای پاسخها، پاسخهای زیر دقت، پاسخهای گمشده و پایان مهلت صریح درخواست/فرایند نشان میدهند.
پاسخ گمشده میتواند ناشی از پالایش ICMP، اتلاف بسته یا پایان مهلت باشد؛ این مشاهدهها نمیتوانند وجود دیوار آتش را قطعی تشخیص دهند. نبود فایل اجرایی، شکست مجوز محلی و فراخوانی نامعتبر ابزار خطاهای جداگانهٔ ابزارند، نه اتلاف بسته یا در دسترس نبودن سرور. هیچ ارتقای امتیازی درخواست نمیشود.
traceroute hopها، نشانیها، کاوشهای تکی، میانگینها و درصد مشاهدهشدهٔ کاوشهای بیپاسخ را جریان میدهد. DNS معکوس پس از مسیر و با حلکنندهٔ انتخابشده حل میشود. تکرارها توالی نشانیهای hop مشاهدهشده را مقایسه میکنند؛ تفاوتها ممکن است ناشی از توزیع بار باشند. hopهای میانی بیپاسخ مسیر خراب را ثابت نمیکنند. فرادادهٔ خام کاوش و روش آن در جزئیات بازشونده نمایش داده میشوند. macOS انتظارهای traceroute را با ثانیهٔ صحیح میخواهد؛ مهلت مؤثر گردشده ثبت میشود.
DNS
دوازده نوع رکورد عبارتاند از A، AAAA، CNAME، MX، NS، TXT، SOA، SRV، CAA، PTR، DS و DNSKEY. تجزیهٔ قالب wire در DNS هویت تراکنش/پرسش، اندازهٔ رکوردها، حلقههای اشارهگر فشردهسازی و محدودیتهای پیام را بررسی میکند. پاسخها TTL رکوردها، زمانبندی پرسوجو، حلکننده و وضعیتهای NXDOMAIN/NODATA/SERVFAIL/refused/timeout را حفظ میکنند. جستوجوی نشانی سیستمعامل نمیتواند TTL ارائه دهد؛ پرسوجوی جداگانهٔ رکورد میتواند.
دنبال کردن CNAME با تشخیص چرخه به هشت پیوند محدود است. بررسی سازگاری پاسخهای A/AAAA را از حلکنندهٔ انتخابشده تکرار میکند و برای آزمونهای DNS با IP لفظی، PTR با تأیید رو به جلو انجام میدهد. پاسخهای تغییریافته مشاهدهاند، نه مدرک خرابی DNS. پرسوجوهای SRV از نام مقصد همانگونه که داده شده استفاده میکنند؛ در صورت نیاز نام سرویسی مانند _service._tcp.example.org وارد کنید. DNSSEC همیشه اعتبارسنجی نمیشود. وجود DS/DNSKEY و حتی پرچم AD حلکننده هرگز اعتبارسنجی مستقل تلقی نمیشود.
HTTP، کارایی و فشردهسازی
HTTP/1.1 فقط زمانی پشتیبانیشده پذیرفته میشود که همان نسخه واقعاً بازگردانده شود. HTTP/2 روی HTTPS به h2 مذاکرهشده نیاز دارد؛ هیچ بازگشتی برچسب تازه نمیگیرد. HTTP/2 بدون رمزگذاری از prior knowledge استفاده میکند، نه کاوش Upgrade در HTTP/1.1. راستیآزمایی TLS برای هر درخواست HTTP/WebSocket سختگیرانه میماند.
هدایتهای دستی به هشت مورد محدودند؛ حلقهها، مقصدهای نامعتبر و هدایتهای بیش از حد بهصراحت شکست میخورند. زنجیرهٔ کامل تغییرات میاندامنهای و تنزل از HTTPS را ثبت میکند؛ تغییرات طرح و www در URLهای مبدأ/مقصد دیده میشوند. اطلاعات احراز هویت و طرحهای هدایت غیر HTTP(S) رد میشوند. هر هدایت میانمیزبانی مستقلاً از طریق حلکننده و خانوادهٔ IP انتخابشده حل میشود.
اندازهگیریها شامل DNS (در صورت انجام)، TCP، TLS، TTFB پاسخ نهایی، TTFB کلی شامل DNS/هدایتها، دانلود، هدایت و زمان کل واقعی، بایتهای واقعی موجودیت، سرعت انتقال، وضعیت، سرآیندهای پاسخ، نشانی/درگاه واقعی سرور، ALPN و استفادهٔ مجدد راستیآزماییشده از اتصال هستند. مراحل DNS/TCP/TLS که روی اتصال تثبیتشده یا استفادهٔ مجدد انجام نشدهاند N/A هستند، نه صفرهای ساختگی. QUIC مرحلهٔ TCP ندارد؛ دستدهی آن جداگانه ثبت میشود. سربار انتقال سرآیندها یا کل سربار wire بهعنوان اندازهگیری بایتهای موجودیت ادعا نمیشود. اینها زمانبندیهای سرور/شبکهاند، نه رندر صفحه یا امتیاز Lighthouse.
هر پروتکل انتخابشده از همان مقصد و تکرارها استفاده میکند. IPv4/IPv6 و HTTP/HTTPS گزینههای صریح مقایسهاند. طرح جایگزین از درگاه پیشفرض خود استفاده میکند. هر پروتکل برای هر نمونه فرایند مستقلی از کلاینت همراه آغاز میکند. استفادهٔ مجدد از اتصال ادعا نمیشود. آمار زمان کل شامل کمینه/میانگین/میانه/بیشینه/P95 به روش نزدیکترین رتبه و نرخ جداگانهٔ خطای انتقال/پروتکل است؛ کدهای وضعیت HTTP حتی وقتی سرور با موفقیت پاسخ 4xx/5xx برمیگرداند دیده میشوند.
فشردهسازی 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 را نشان میدهد. دستور frame-ancestors در CSP میتواند جایگزین مورد آخر شود. وجود سرآیند ثابت نمیکند که سیاست درست پیکربندی شده یا وبسایت امن است.
پیشنیازها و اثبات 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-for-win 8.22.0_3 از curl.se همراه با 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 مشخصشده بهصراحت، بدون کوکی، بدون هدایت خودکار و با خروجی و زمان محدود اجرا میشود. هدایتها توسط برنامه اعتبارسنجی و دوباره حل میشوند. HTTPS روی درگاههایی غیر از 443 پشتیبانی میشود.
HTTP/3 از --http3-only استفاده میکند و فقط پس از انتقالی کامل که HTTP نسخهٔ 3 و راستیآزمایی موفق گواهی را گزارش دهد تأیید میشود. پاسخهای خطای HTTP مانند 404 میتوانند پروتکل را تأیید کنند. Alt-Svc یک اعلان است، نه مدرک. پایان مهلت QUIC، خطای گواهی، خطای DNS، رد اتصال، پروتکل ناسازگار و خطای اجزا از هم متمایز میمانند. پایان مهلت UDP پشتیبانی سرور را راستیآزمایینشده باقی میگذارد. زمانبندی دستدهی QUIC بهعنوان زمانبندی TCP گزارش نمیشود.
هر اندازهگیری فرایند/اتصال جداگانهای آغاز میکند. گزینهٔ warm برای کلاینت همراه ادعای استفادهٔ مجدد از اتصال ندارد. این کار مقایسهٔ پروتکلها را سازگار نگه میدارد. گزارشها شامل نسخههای محیط اجرا، قابلیتها، راستیآزمایی TLS و زمانبندی QUIC هستند، در حالی که تاریخچه/برونبری محتوا، پرسوجوهای URL و سرآیندهای احراز هویت را حذف میکند.
هنگام بهروزرسانی پشتهٔ انتقال یا مخزن اعتماد CA، این مقادیر تثبیتشده را بهروز کنید و برای هر پلتفرم پشتیبانیشده دوباره بسازید. فایلهای منتشرشده و تصاویر منبع تغییرناپذیرند.
IPC در Core
preload فقط window.chjCore.diagnostics را در اختیار میگذارد؛ همهٔ کنترلکنندهها بررسی موجود فرستندهای را که پنجرهٔ اصلی است حفظ میکنند و کار شبکه در فرایند اصلی میماند. نتایج از { ok: true, value } یا { ok: false, error: { code, message } } استفاده میکنند.
| کانال / روش preload | محموله / نتیجه |
|---|---|
diagnostics:resolve / resolve(options) |
مقصد/تنظیمات اعتبارسنجیشده ← مقصد و نشانیهای حلشده. حداکثر دو درخواست حل همزمان. |
diagnostics:start / start(options) |
مقصد/تنظیمات/انتخاب ابزار اعتبارسنجیشده ← شناسهٔ مبهم کار و گزارش اولیه. |
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 از طریق پنجرهٔ بومی ذخیره؛ renderer نمیتواند مسیر سیستم فایل ارائه دهد. |
diagnostics:import / import() |
انتخابگر بومی فایل، اعتبارسنجی اندازه/طرح/عمق و پنهانسازی پیش از ذخیره. |
diagnostics:progress / onProgress(callback) |
نشانیهای حلشده، آغاز/پایان ابزارها، بستهها، hopها، نمونههای HTTP و پایان کار؛ یک callback برای لغو اشتراک برمیگرداند. |
هیچ API عمومی برای پوسته، سیستم فایل یا شبکه در اختیار گذاشته نمیشود. جداسازی زمینه، sandbox، یکپارچگی غیرفعال Node و CSP موجود renderer فعال میمانند. قراردادهای موجود افزونهها و راستیآزمایی/استثناهای بهروزرسان تغییر نکردهاند.
بودجهها و دادههای محلی
- یک اجرا، دو ابزار فعال، حداکثر دو کاوش خانوادهٔ IP برای هر ابزار؛ TCP افزون بر این هر نشانی را به چهار اتصال محدود میکند.
- مهلت هر عملیات 250 تا 30000 ms؛ 1 تا 100 بسته، 1 تا 20 تکرار، 1 تا 40 hop، 1 تا 16 درگاه. اجراهای معمولی در پنج دقیقه و ping پیوسته در سی دقیقه متوقف میشوند. زیرفرایند traceroute سقف 180 ثانیهای دیگری نیز دارد.
- خروجی فرایند معمولاً 256 KiB؛ بدنهٔ موجودیت HTTP 2 MiB؛ بدنهٔ بازگشاییشده 8 MiB؛ سرآیندهای HTTP محدود؛ هیچ بدنهٔ پاسخی وارد تاریخچه نمیشود.
- حداکثر 500 بسته/رویداد پیشرفت، پنج اجرا در حافظه، سی گزارش تاریخچه و 10 MiB تاریخچه نگه داشته میشود. تاریخچه از نویسندهٔ اتمی خصوصی موجود در
<userData>/diagnostics/history.json(حالت 0600) استفاده میکند. - درونریزیها حداکثر 2 MiB، طرح 1، با تودرتویی محدود و مجموعههای نتیجهٔ اعتبارسنجیشدهاند. خانههای CSV escape میشوند و پیشوندهای فرمول خنثی میشوند. پرسوجوها/بخشهای URL، اطلاعات احراز هویت، کوکیها، سرآیندهای احراز هویت و بدنههای خام از گزارشهای ذخیرهشده/کپیشده/برونبریشده حذف میشوند. جزئیات خام دادههای ساختیافتهٔ اندازهگیریشده را نشان میدهند، نه ضبط بستهها یا بدنهٔ پاسخ نگهداشتهشده.
- هیچ همگامسازی ابری، ورود خودکار، تغییر پیکربندی سرور یا پویش تهاجمی/نامحدودی وجود ندارد. کاربر مقصد/درگاهها/حلکننده را صراحتاً انتخاب میکند.
پیشنیازهای پلتفرم و راستیآزمایی
| پلتفرم | ICMP | مسیر | پروتکلهای دیگر |
|---|---|---|---|
| Windows 10/11 | ping.exe -4/-6 |
tracert.exe -4/-6، ICMP |
curl.exe همراه با HTTP/2 و HTTP/3. فیلدهای بومیسازیشدهٔ RTT به واژهٔ “time” وابسته نیستند. |
| macOS | /sbin/ping، /sbin/ping6 |
/usr/sbin/traceroute، /usr/sbin/traceroute6، UDP؛ انتظار با ثانیهٔ صحیح |
curl همراه با HTTP/2 و HTTP/3. |
| Ubuntu/Linux | iputils ping -4/-6 |
traceroute -4/-6 استاندارد، UDP |
curl همراه با HTTP/2 و HTTP/3؛ نبود ابزارهای ICMP/مسیر جداگانه گزارش میشود. |
هیچ وابستگی جدید npm اضافه نشده است. پیادهسازی از ماژولهای داخلی Node و ssh2 موجود برنامه استفاده میکند. ابزارهای سیستم را نصب نمیکند و دسترسی مدیریتی درخواست نمیکند. دیوارهای آتش و محدودیتهای UDP میتوانند مانع اثبات پشتیبانی در یک آزمون شوند؛ نمیتوان آنها را فقط از پایان مهلت استنباط کرد.
پوشش خودکار در diagnosticsCore.test.js، diagnosticsNetwork.test.js، diagnosticsHttp.test.js و diagnosticsIpc.test.js قرار دارد: اعتبارسنجی/IPv6 لفظی، دادههای نمونهٔ بومی/محلی DNS روی UDP+TCP، پاسخهای گمشده/دوخانوادهای و خطاهای حلکننده، CNAME/سازگاری، دادههای نمونهٔ آرگومان/تجزیهٔ سیستمعامل، زیرفرایندهای واقعی محدود، مشاهدههای ICMP مسدود، HTTP/1.1 و TLS h2 محلی واقعی، هدایتها/محدودیت بدنه/مهلتها/استفادهٔ مجدد، فشردهسازی فعال/نادیدهگرفتهشده، قابلیتهای HTTP3/تجزیهٔ نتیجهٔ موفق/رد بازگشت، اعتماد CA محلی/عدم تطابق/انقضا و HTTP/HTTPS واقعی روی IPv6، اتصال TCP/ردشده/پایان مهلت شبیهسازیشده، دستدهیهای واقعی WebSocket و SSH پیش از احراز هویت، لغو/پاکسازی/نتایج جزئی، حالت آفلاین، رفتوبرگشت تاریخچهٔ خصوصی/رد درونریزی/برونبریها، IPC مورد اعتماد و اشتراکهای preload.
npm test آزمونهای قطعی را بدون سرورهای آزمایشی عمومی اجرا میکند. npm run test:diagnostics:ui فایل scripts/smokeDiagnostics.js را در یک دسکتاپ گرافیکی Electron، با رابط کاربری/preload/IPC تولیدی و کاوشهای واقعی محلی HTTP/فشردهسازی اجرا میکند. سرویسهای نامرتبط فقط در این بستر آزمون شبیهسازی/آفلاین میشوند. این آزمون ترتیب پیمایش، نتایج پروتکل، ماندگاری، CZ/DE/EN، هر دو پوسته، سرریز در پنجرهٔ باریک و ترجیحات sandbox را بررسی میکند. اگر پوسته ELECTRON_RUN_AS_NODE را تنظیم کرده است، آن را برای این فرمان حذف کنید.
راستیآزمایی فعلی محیط اجرا شامل انتقالهای کنترلشدهٔ QUIC، IPv4/IPv6، HTTPS روی درگاه غیرپیشفرض، پاسخهای 404، خطاهای TLS و سرویسی فقطTCP که Alt-Svc اعلام میکند است. نتایج هر نسخهٔ ساخت همراه هر انتشار ارائه میشوند.
محدودیتهای اختیاری صریح: هیچ اعتبارسنجی مستقل DNSSEC وجود ندارد (به حلکنندهٔ اعتبارسنج کامل/چرخهٔ عمر trust anchor نیاز دارد)، هیچ ممیزی Lighthouse وجود ندارد (فقط زمانبندی سرور/شبکه)، هیچ ممیزی TLS منسوخ یا سرویس ابطال/CT وجود ندارد، هیچ ادعای استفادهٔ مجدد warm در HTTP3 و هیچ اندازهگیری استفادهٔ مجدد warm در HTTP/3 وجود ندارد. قابلیتهای پشتیبانینشده بهجای شبیهسازی نمایش داده میشوند.
فایلهای این تغییر
ایجادشده: هفت فایل سرویس در 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 امضاکننده دور ریخته شده است؛ محیط اجرای برنامه هرگز از این دادهٔ نمونه استفاده نمیکند.