> Trwa korekta językowa tego tłumaczenia. W razie wątpliwości porównaj z [angielskim oryginałem](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Diagnostyka serwera Zintegrowany do głównego panelu, w kolejności Wtyczki → Diagnostyka serwera → Suma haszy i kontrolna. Nie wymaga on żadnej sesji SSH ani wtyczki pobranej. Wszystkie kody, testy i montaż żyją w `app/`; moduł nie ma zależności od repozytoriów rodzeństw. Repozytorium nie ma `doc.md`, więc dokument i oba README opisują wdrożenie. ## Przepływ pracy użytkownika Podaj nazwę komputera, IPv4, IPv6 lub URL HTTP( S)/WS( S). Domyślne domyślne nazwy nazwisk/ IP dla HTTPS; w trakcie żądania zachować ścieżkę, zapytanie i port. Uprawnienia w adresach URL, niepodtrzymane systemy, znaki próżniowe/kontrolowane oraz nazwy komputerów podobnych do skorupiaków są odrzucane. IPv6 dosłowne są automatycznie przymocowane; identyfikatory strefy objętej/linkowej nie są obsługiwane przez analizator URL. Wybierz automatycznie (preferuj IPv4, w przeciwnym razie IPv6), IPv4, IPv6 albo oboje. Rozwiązanie adresów do wyboru konkretnej aktualnej odpowiedzi. Przegląd wyświetla wszystkie rozwiązane odpowiedzi; sondy sprawdzają wybrany adres lub jeden adres dla każdej rodziny. Obie rodziny są niezależnie mierzone. Sama obecność AAAA nie oznacza połączenia z IPv6. Uruchom diagnozę DNS, ping, trasowa droga, HTTP, kompresja, TLS oraz wybrane porty TCP. WebSocket jest opt-in. Każde narzędzie posiada również oddzielną kontrolę Run/Stop. Jeden przebieg diagnostyczny może być aktywny natychmiast. Zakończony przebieg oznacza, że narzędzia zostały zakończone, nie żeby każda sonda udała się. Nie ma żadnego werdyktu “server offline”. Czas trwania, liczba pakietów, powtarzania, maksymalne chmel, DNS Rozwiązacz, wybór protokołu, połączenie ciepłe i porównanie HTTP/HTTPS są konfigurowane. Zmiana celu oczyszcza wcześniej wybrany IP. Historia może ponownie otworzyć, porównać dwa raporty, usunąć, importować JSON, kopia lub wywóz JSON/CSV/TXT za pomocą native Corre dialogs. Lekkie/dark/system temat dotyczy sekcji diagnostyki i jest zapisany w istniejącej konfiguracji interfejsu użytkownika. CZ/DE/EN podąża za językiem aplikacji natychmiast. ## Komponenty i zachowanie protokołu | Komponent | Wdrożenie i interpretacja | | --- | --- | | `common.js` | Sprawdza cele/opcje, limity i wartości enum; konwersja IDNA; statystyki numeryczne wykluczają nieznane wartości. | | `dnsDiagnostics.js` | Wykorzystanie rozdzielczości adresów systemu `dns.lookup` aby uczcić konfigurację OS i pliki hostów. Zapytania rejestrowe używane z ograniczonym UDP DNS z TCP zastępcze dla skróconych odpowiedzi przeciw `dns.getServers()`, lub wyraźnie wybranego decydenta zwyczajowego/publicznego. Brak bezwzględnego przełączania się na publiczny DNS. | | `processTools.js` | Wykonuje OS ping/trasa z tablicą argumentów i `shell: false`, ograniczone wyjście, wyraźny limit czasowy i anuluj/zabij czyszczenie. Analizuje odpowiedzi na pakiety i chmiep, zamiast traktować czas trwania procesu jako RTT. | | `httpDiagnostics.js` | Zawijane krzewo dla HTTP/1.1, HTTP/2 oraz HTTP/3; ścisła weryfikacja świadectwa i rodzina IP. Każda wersja jest niezależnie wymagana; rzeczywista wersja jest zapisana. | | `socketDiagnostics.js` | Wyjaśnienie TLS sondy wersji, ograniczone TCP łączy/pasywne bannery, przedautentykacja SSH obserwacja host- key z wykorzystaniem istniejącej zależności ssh2 i opcjonalna RFC 6455 Walidacja uaktualnienia. | | `diagnosticsService.js` | Wykonuje i anuluje narzędzia, bierze/walidates adresy, przebieg strumienia, zachowuje częściowe pomiary i posiada termin uruchamiania. | | `historyStore.js` | Wersja z ograniczoną historią lokalną, redakcją, schematem sprawdzonym importem i mierzonym eksportem danych. | ### ICMP i trasy Ping domyślnie wykonuje cztery indywidualnie wykonane echo ICMP. Wyniki zawierają mierzone RTT, liczba otrzymanych/wysłanych, straty, min./average/max, odchylenie normy populacji, średnia bezwzględna różnica między kolejnymi mierzonymi RTT (jtter), limitem TTL/Hop w przypadku drukowania, i czasoznacznikami. A `<1 ms` odpowiedź jest liczona jako otrzymana z górną granicą, zamiast wymyślać numeryczne RTT. Nieznane RTT są wyłączone ze statystyk latencji. Statystyki używają zatrzymanego okna co najmniej 500 pakiety; wysłane/received/loss Liczy się, że cała runda jest zabezpieczona. Wykresy pokazują ostatnie 200 obserwacje, z odrębnymi symbolami odpowiedzi, odpowiedzi podrozdzielczości, brakujące odpowiedzi oraz wyraźne limity czasu zapytania/procesu. Brak odpowiedzi może odzwierciedlać filtrowanie ICMP, utratę pakietów lub czas czasowy; obserwacje te nie mogą zdecydowanie zidentyfikować firewall. Brak wykonywania, lokalne awarie pozwoleń i nieprawidłowe wywołanie narzędzi to oddzielne błędy narzędzia, nie utrata pakietu lub niedostępność serwera. Nie ma potrzeby zwiększenia przywilejów. Przepływy traserowe chmielu, adresy, indywidualne sondy, środki i obserwowane nieodpowiedziane procenty. DNS ustępuje się po trasie z wykorzystaniem wybranego rozdzielczyka. Porównywane powtarzania porównywają zaobserwowane sekwencje adresów chmielu; różnice mogą odzwierciedlać równowagę obciążenia. Nieodpowiedziane chmielu pośredniego nie ustalają złamanej trasy. Metadane i metoda surowej sondy pojawiają się w rozszerzalnych szczegółach. macOS wymaga w całości drugiego trasowania; rejestruje się efektywny czas zaokrąglony. ### DNS Dwanaście typów rekordów to A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DNS i DNSKEY. DNS przetwarzanie kontroli transakcji/pytania tożsamości, rozmiary zapisu, pętle kompresyjne i limity wiadomości. Odpowiedzi zachować zapis TTL, czas zapytania, rozdzielczość i NXDOMAIN/NODATA/SERVFAIL/refused/timeout stan. Wyszukiwanie adresów OS nie może dostarczać TTL; oddzielne zapytanie zapisu może. Poniższe CNAME jest ograniczone do ośmiu powiązań z wykrywaniem cyklu. Składowość powtarza odpowiedzi A/AAAA wybranego rozdzielcy i wykonuje z przodu potwierdzony PTR dla IP-literal DNS testy. Zmienione odpowiedzi to obserwacje, a nie dowód na DNS Wina. Zapytania dotyczące SRV używają podanej nazwy docelowej; wpisz nazwę usługi, taką jak `_service._tcp.example.org` w razie potrzeby. DNSSEC jest zawsze **niezwalidowany**. Obecność DS/DNSKEY, a nawet flaga AD rozwiązującego nigdy nie jest traktowana jako niezależna walidacja. ### HTTP, wydajność i kompresja HTTP/1.1 akceptuje tę wersję jako obsługiwaną tylko wtedy, gdy została zwrócona. HTTPS HTTP/2 wymaga negocjowanego h2; żadna zmiana nie jest ponownie oznakowana. Wyczyść tekst HTTP/2 korzysta z wcześniejszej wiedzy, a nie HTTP/1.1 Sonda uaktualniona. Weryfikacja TLS pozostaje ścisła dla każdego żądania HTTP/WebSocket. Przekierowanie ręczne jest ograniczone do ośmiu; pętle, nieprawidłowe miejsca przeznaczenia i nadmierne przekierowanie wyraźnie zawiodły. Pełne rejestry łańcuchowe zmiany dominacyjne i HTTPS zniżki; systemy i zmiany www są widoczne w adresach URL źródła/destinacji. Odrzuca się uprawnienia i systemy przekierowania niezwiązany z HTTP. Każda przekierowana cross-host jest rozwiązywana niezależnie za pośrednictwem wybranego rozdzielcy i wymagana rodzina IP. Pomiary obejmują: DNS (po przeprowadzeniu), TCP, TLS, TTFB odpowiedzi końcowej, łączna TTFB, w tym DNS/przekierowanie, pobieranie, przekierowanie i całkowity czas ściany, rzeczywiste bajty jednostki, prędkość transferu, status, nagłówki odpowiedzi, rzeczywisty adres serwera/port, ALPN i zweryfikowane ponowne połączenie. DNS/TCP/TLS fazami niewykonywanymi na połączeniach przymocowanymi lub ponownie połączone są: `N/A`, nie fałszywe zero. QUIC nie ma fazy TCP; jego uścisk dłoni jest oddzielnie rejestrowany. Przekazywanie główki lub pełny przewod nakładowy nie jest uznawane za pomiar jednostki-bajt. To są czasy serwerowe/sieciowe, nie wyświetlanie strony lub wyniki Lighthouse. Każdy wybrany protokół wykorzystuje ten sam cel i powtarzania. IPv4/IPv6 oraz HTTP/HTTPS są wyraźnie porównywane. Alternatywny system używa portu domyślnego. Każdy protokół rozpoczyna niezależny proces klientów na próbkę. Ponowne połączenie nie jest zatwierdzone. Statystyki ogólne obejmują min/average/median/max/nearest-rank P95 i oddzielna częstotliwość błędów w transporcie/protokole; kody stanu HTTP pozostają widoczne, nawet gdy serwer pomyślnie zwraca odpowiedź 4xx/5xx. Kompresja wysyła tożsamość, gzip, deflate, br i (gdy czas trwania go obsługuje) zgłasza się jako oddzielne żądania Akceptuj-Kodowanie. Kodowanie treści musi pasować, a ograniczona dekompresja musi się udać. Stosunek obliczany jest tylko wtedy, gdy rozszyfrowany hash organizmu, końcowy URL i status pasują do wartości wyjściowej tożsamości. Ignorowane kodowanie nie jest obsługiwane; zmiany/dynamiczne ciała nie mają stosunku. Jest to obserwacja dla tego URL/statusu, a nie uniwersalnego obsługi serwera. Kontrole bezpieczeństwa pokazują obecność i wartość HSTS, CSP, X-Content-Type-Opcje, Refercer-Polityka, Polityka praw autorskich i opcje X-frame-opcje. A CSP Dyrektywa ramowa może zastąpić tę ostatnią. Obecność nie ustala prawidłowego skonfigurowania polityki lub bezpieczeństwa strony internetowej. ### HTTP/3 wymagania i dowód HTTP/1.1, HTTP/2 oraz HTTP/3 użyj tego samego wiórzanego klienta. macOS arm64 oraz Linux x64 używać kwigl 8.22.0, OpenSSL 3.5.9, nghttp2 1.70.0, ngtcp2 1.25.0 oraz nghttp3 1.18.0. Windows x64 używa oficjalnej kwir.se curl-for-win 8.22.0_3 Statyczna budowla z LibreSSL 4.3.3 i te same biblioteki HTTP. Nie ma potrzeby pobierania systemu zastępczego, pobierania czasu uruchamiania lub uprawnienia administratora. - Nie, nie. Windows Przepis do budowy wzdłuż strumienia jest https://github.com/curl/curl-for-win/tree/9d77e31e . Zbuduj za pomocą `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`) przed opakowaniem. macOS/Linux wymaga narzędzi C/C++, CMake, Ninja, Perl, make i pkg-config. Źródła są przymocowane przez wersję i górę SHA-256 w `scripts/native/dependencies.lock.json`. Skrypt potwierdza każde pobieranie, statycznie łączy biblioteki transportu osób trzecich i nie uda się bez HTTP2/HTTP3/SSL funkcje. Tylko biblioteki operacyjne pozostają dynamiczne. Windows wykorzystuje oficjalny archiwum binarne, a nie lokalnie zkompilowany stos transportowy Windows. Plik pakowany CA posiada własne licencje na hash; komponenty i prowincje budowy przed stream towarzyszą runtime. Klient i sklep zaufania są zainstalowane poza aplikacją.asar w `resources/native-runtime/-/`. Każda diagnostyczna potwierdza hasze, architekturę i możliwości wykonywalne przed użyciem. Pliki konfiguracyjne, proxies, TLS nie wykluczone są zmiany środowiska zaufania i zmienne wtrysku biblioteki. curl runs z bezwzględną ścieżką, skorupa wyłączone, zweryfikowane zaufanie CA, wyraźnie rozwiązana rodzina IP, brak plików cookies, bez automatycznych przekierowań oraz ograniczone wyjście i czas. Przesunięcia są potwierdzone i ponownie rozwiązywane przez aplikację. HTTPS w portach innych niż 443 jest wspierany. HTTP/3 wykorzystanie `--http3-only` i jest potwierdzony dopiero po zakończeniu przekazywania informacji HTTP 3 i udane weryfikacje certyfikatu. Odpowiedzi na błędy HTTP, takie jak 404 Może potwierdzić protokół. Alt-Svc to reklama, nie dowód. Timeout QUIC, awaria certyfikatu, DNS niepowodzenie, odmowa połączenia, niezgodny protokół i awaria komponentów pozostają odrębne. UDP nie zweryfikował obsługi serwera. Nie zgłaszano czasu uścisku ręki jako czas TCP. Każdy pomiar rozpoczyna oddzielny proces/połączenie. Wariant ciepła nie wymaga ponownego połączenia dla klienta związanego. Utrzymuje to porównanie protokołu spójne. Sprawozdania obejmują wersje czasu uruchamiania, możliwości, TLS weryfikacja i czas QUIC, podczas gdy historia/eksport usuwa ciała, zapytania URL i nagłówki uwierzytelniania. Aktualizuj te piny i odbuduj każdą obsługiwaną platformę przy aktualizacji stosu transportowego lub sklepu zaufania CA. Opublikowane artefakty i zdjęcia źródłowe są niezmienne. ## IPC podstawowy Wczytaj tylko naświetlenie `window.chjCore.diagnostics`; wszystkie podmioty zarządzające zachowują istniejące sprawdzanie głównego okien i prace sieciowe pozostają w główce. Zastosowanie wyników `{ ok: true, value }` lub `{ ok: false, error: { code, message } }`. | Metoda przenoszenia kanału / wstępnego | Ładunek / wynik | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Potwierdzony cel/ustalenia → docelowy i rozwiązany adres. Przy co najmniej dwóch jednoczesnych prośbach o rozdzielczość. | | `diagnostics:start` / `start(options)` | Uzasadniony cel/settings/tool selekcja → nieprzezroczysty identyfikator pracy i sprawozdanie początkowe. | | `diagnostics:cancel` / `cancel(id, tool?)` | Anuluj jedno aktywne/przetworzone narzędzie lub całe uruchomienie. | | `diagnostics:get` / `get(id)` | Odbiór znanego lub zapisanego raportu. | | `diagnostics:history` / `history()` | Podsumowanie historii lokalnej. | | `diagnostics:removeHistory` / `removeHistory(id)` | Usuń wybrany element historii. | | `diagnostics:copy` / `copy(id, format)` | Main pisze redacted znany raport do schowka. | | `diagnostics:export` / `export(id, format)` | JSON/CSV/TXT przez native okno zapisu; wyświetlacz nie może uzyskać ścieżki plików. | | `diagnostics:import` / `import()` | Native picker plików, rozmiar/schema/depth walidacja i zmiana działania przed przechowywaniem. | | `diagnostics:progress` / `onProgress(callback)` | Rozwiązane adresy, uruchamianie/zakończenie narzędzia, pakiety, chmel, próbki HTTP i zakończenie; zwraca powrotne odwołanie. | Brak ogólnej powłoki, systemu plików lub sieci API jest narażona. Odizolowanie kontekstowe, piaskowca, integracja węzłów wyłączonych i istniejący reflektor CSP pozostanie włączony. Istniejące umowy o wtyczkach i weryfikacja/wyjątki aktualizatora są niezmienione. ## Budżety i dane lokalne - Jeden bieg, dwa aktywne narzędzia, w co najmniej dwóch sondach z rodziny IP na narzędzie; TCP dodatkowo ogranicza każdy adres do czterech połączeń. - Termin czasowy współpracy 250–30000 ms; 1–100 pakiety, 1–20 powtarzania, 1–40 chmielu, 1–16 porty. Zatrzymaj regularne biegi o pięciu minutach; ciągły ping o trzydzieści minut. Podproces traserowy ma kolejny 180- drugi okręt. - Wyjście procesowe normalnie 256 KiB; organ podmiotu HTTP 2 MiB; ciało dekompresowane 8 MiB; nagłówki HTTP ograniczone; żadne ciało odpowiedzi nie wchodzi do historii. - Utrzymać co najmniej 500 pakiety/wypadki, pięć runs w pamięci, trzydzieści raportów historii i 10 MiB historii. Historia wykorzystuje istniejącego prywatnego pisarza atomowego na `/diagnostics/history.json` (Tryb 0600). - Przywóz jest co najmniej 2 MiB, schemat 1, z ograniczonym gniazdkiem i potwierdzonym zbiorem wyników. Komórki CSV są uciekane i prefiksy formuły neutralizowane. Zapytania URL/fragmenty, akredyty, pliki cookie, nagłówki uwierzytelniania i surowe ciała są wyłączone z przechowywanych raportów/copied/exported. Surowe szczegóły pokazują zmierzone dane zorganizowane, a nie zachowanie organu odpowiedzi. - Brak synchronizacji chmury, automatycznego logowania, zmian konfiguracji serwera lub agresywnego/nieograniczonego skanowania. Użytkownik wyraźnie wybiera cel/ports/resolver. ## Wymogi platformy i weryfikacja | Platforma | ICMP | Droga | Inne protokoły | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`, ICMP | Związane curl.exe z HTTP/2 oraz HTTP/3. Lokalizowane pola RTT nie zależą od słowa „czasu”. | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; całe sekundy | Zwijane z krzewem HTTP/2 oraz HTTP/3. | | Ubuntu/Linux | iputyle `ping -4/-6` | standard `traceroute -4/-6`, UDP | Zwijane z krzewem HTTP/2 oraz HTTP/3; Brak narzędzi ICMP/route są zgłaszane oddzielnie. | Nie dodano nowego uzależnienia od szczebla. Wdrożenie wykorzystuje wbudowane węzły i istniejące ssh2. Nie instaluje on narzędzi systemu ani nie wymaga praw administracyjnych. Zabezpieczenia i ograniczenia UDP mogą uniemożliwić ustanowienie wsparcia; nie mogą być wysunięte z samego limitu czasu. Zabezpieczenie automatyczne jest w `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` oraz `diagnosticsIpc.test.js`: walidacja/IPv6 dosłowne, native/local DNS UDP+TCP, odpowiedzi brakujące/dwustronne rodzinne i błędy rozstrzygacza, CNAME/consistency, argumenty OS/parzy, ograniczone procesy rzeczywiste dzieci, zablokowane obserwacje ICMP, prawdziwe lokalne HTTP/1.1 oraz TLS h2, przekierowanie/ograniczenie ciał/timeouts/reuse, włączona/zanieczyszczona kompresja, HTTP3 możliwości/powodzenie-powodzenie analizy/odrzucenie powrotu, lokalne zaufanie CA/mismatch/expiration i prawdziwe IPv6 HTTP/HTTPS, TCP połączenie/refused/mock czas czasowy, prawdziwy serwerSocket and SSH uściski dłoni, anulowanie/cleanup/partial wyniki, stan offline, prywatna historia okrągłego/importu odrzucenia/eksportu, zaufany IPC i przedzaładowanie subskrypcji. `npm test` przeprowadza testy deterministyczne bez publicznych serwerów testowych. `npm run test:diagnostics:ui` bieg `scripts/smokeDiagnostics.js` w graficznym Electron pulpit, używając interfejsu produkcyjnego/preload/IPC i prawdziwe lokalne sondy HTTP/kompresji. Usługi niezwiązane z tymi sterowaniemi są tylko ukryte/wyłączne. Kontroluje nakaz nawigacji, wyniki protokołu, trwałość, CZ/DE/EN, obie tematy, wąskie okna przepełnienia i preferencje piaskownicy. Jeśli pokrzywka ustawi ELECTRON_ RUN_ AS_NODE, zrzuć ją do tego polecenia. Kontrola bieżącego czasu jazdy obejmuje kontrolowane transfery QUIC, IPv4/IPv6, HTTPS na portie nie domyślnym, 404 odpowiedzi, TLS niepowodzenia i reklama usługi tylko TCP Alt-Svc. Wyniki per-build towarzyszą każdemu wydaniu. Wyraźne opcjonalne limity: brak niezależnej walidacji DNSSEC (wymaga kompletnego rozdzielacza/trust-anchor cyklu życia), brak audytu Lighthouse (tylko serwer/sieci), bez przekroczenia TLS audyt lub usługa odwołania/CT, nie HTTP3 twierdzenie o ponowne wykorzystanie ciepła i nie HTTP/3 pomiar ponownego użycia ciepła. Wyświetlane są raczej niepodtrzymane możliwości, a nie symulowane. ## Pliki w tej zmianie Stworzone: siedmiu plików usługowych w `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js`, `diagnostics.css`; cztery `test/diagnostics*.test.js` pliki; pięć plików pod `test/fixtures/diagnostics/`; `scripts/smokeDiagnostics.js`; niniejszy dokument. Zintegrowana/ulepszona: `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`, korzeń `README.md`, `.gitignore` (cztery wyjątki publiczne) oraz lista gitleaks korzeniowych wąsko nazwanych przeznaczającym publiczność TLS Przymocowanie kluczy testowych. Klucz prywatny CA podpisujący został wyrzucony; nigdy nie używany przez czas uruchamiania aplikacji.