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-এর প্রাইভেট কী ফেলে দেওয়া হয়েছে; ফিক্সচারটি অ্যাপ্লিকেশন রানটাইম কখনো ব্যবহার করে না।