Przez ostatni miesiąc moja uwaga skupiła się głównie na dopracowaniu narzędzia desktopowego, które powstawało równolegle z serwerowym panelem hostingowym BSNM. Ponieważ sam panel BSNM posiada zaimplementowaną natywną obsługę odizolowanych klatek NAS oraz sieci prywatnych WireGuard, nadszedł moment, aby zamknąć etap prac nad dedykowaną aplikacją kliencką i przetestować w boju, jak wszystkie elementy tej układanki spinają się w jedną całość.
Głównym powodem napisania BSNM Network & Mount Manager była chęć całkowitego uniezależnienia się od kilku zewnętrznych programów narzędziowych oraz wszechobecnych w nich reklam, telemetrii i sztucznych ograniczeń wersji darmowych. Zamiast uruchamiać osobnego klienta do zestawiania VPN, kolejny program do mapowania zasobów SFTP (w stylu komercyjnego RaiDrive) i jeszcze osobno zarządzać skrótami do udziałów SMB, postanowiłem zamknąć te trzy mechanizmy w jednym lekkim, natywnym programie.
Co jednak najważniejsze: choć aplikacja stanowi integralną część projektu BSNM, została zaprojektowana tak, aby mogła działać jako w 100% niezależne narzędzie (standalone). Możesz jej używać do łączenia się z dowolnym serwerem WireGuard VPN, dowolnym serwerem SSH/SFTP oraz dowolnym serwerem NAS (Samba/SMB) w sieci lokalnej lub zdalnej – nawet jeśli po drugiej stronie nie stoi infrastruktura BSNM.
Filozofia Zero Bloatware: 600 KB na Linuksie i 5 MB na Windowsie
Współczesne aplikacje biurkowe cierpią na chorobę o nazwie Electron – zwykły menedżer połączeń potrafi dziś ciągnąć za sobą całą przeglądarkę Chromium, ważyć 250 MB na dysku i pożerać setki megabajtów pamięci RAM tylko po to, by wyświetlić kilka przycisków.
W BSNM Network & Mount Manager zastosowałem te same rygorystyczne założenia (Zasada 4xE: Ekstremalnie prosty, bezpieczny, szybki i wydajny), które napędzają część serwerową projektu:
- Czysty C++20 i sprzętowe GUI: Cały program został napisany w standardzie C++20 (kompilowany przez clang++) z wykorzystaniem natywnego interfejsu Dear ImGui + GLFW + OpenGL3.
- 0.0% zużycia CPU i GPU w spoczynku: Pętla główna okna nie odpytuje procesora w nieskończoność, lecz usypia wątek renderowania (glfwWaitEventsTimeout) i wybudza go wyłącznie przy interakcji użytkownika lub zdarzeniu sieciowym z wątku tła (glfwPostEmptyEvent). Gdy zminimalizujesz okno do zasobnika systemowego (traya), program praktycznie przestaje istnieć dla procesora.
- Ekstremalnie mały rozmiar: Gotowy pakiet instalacyjny .deb dla systemu Linux waży zaledwie ok. 600 KB, natomiast kompletny instalator dla systemu Windows 11 (wraz ze wszystkimi wymaganymi bibliotekami DLL) zajmuje ok. 5 MB.
- Wbudowana wielojęzyczność: Aplikacja już w standardzie obsługuje 6 języków (polski, angielski, niemiecki, francuski, hiszpański oraz rosyjski) z funkcją automatycznego wykrywania języka systemu operacyjnego (Auto).
Jak to działa pod maską? Struktura i bezpieczeństwo
Zamiast polegać na luźnych skryptach powłoki, rdzeń aplikacji opiera się na wewnętrznym orkiestratorze stanów oraz wielowątkowym nadzorcy połączenia (Watchdog).
Inteligentna sekwencja łączenia i rozłączania: Kliknięcie przycisku połączenia najpierw podnosi interfejs WireGuard, następnie weryfikuje realną komunikację wewnątrz tunelu (sprawdzając handshake kryptograficzny oraz dostępność portu TCP serwera docelowego) i dopiero po potwierdzeniu stabilności trasy automatycznie montuje skonfigurowane dyski SFTP i SMB. Przy rozłączaniu lub zamykaniu systemu kolejność jest odwrotna: program najpierw bezpiecznie odmontowuje udziały sieciowe (chroniąc aplikacje przed zawieszeniem uchwytów plików), a dopiero na końcu zamyka tunel VPN.
Szyfrowanie poświadczeń (libsodium): Wszystkie wrażliwe dane – klucz prywatny WireGuard, klucz Pre-Shared Key (PSK) oraz hasła do serwerów SFTP i SMB – nigdy nie leżą w pliku konfiguracyjnym config.json otwartym tekstem. Przed zapisem na dysk są szyfrowane algorytmem crypto_secretbox_easy z biblioteki libsodium (oznaczane prefiksem ENCv1:), a klucz główny jest wiązany sprzętowo z identyfikatorem maszyny i kontem użytkownika. Ponadto każda zmiana konfiguracji tworzy automatyczną kopię zapasową (.bak_timestamp), przechowując do trzech ostatnich wersji pliku.

Integracja z zasobnikiem systemowym (System Tray): Zamknięcie okna krzyżykiem (X) nie wyłącza programu, lecz chowa go do traya. Ikona żółwia BSNM na pasku zadań dynamicznie informuje o stanie pracy: gdy wszystko jest rozłączone, ikona pozostaje szara (monochromatyczna); gdy tylko aktywujesz tunel VPN lub zamontujesz chociaż jeden udział sieciowy, ikona zmienia kolor na zielony.
Różnice platformowe: Linux vs Windows 11
Choć interfejs graficzny na obu systemach wygląda i działa identycznie, warstwa niskopoziomowa wykorzystuje natywne mechanizmy każdego z systemów operacyjnych:
Wersja dla systemu Linux:
WireGuard przez Netlink (bez sudo): Linux posiada moduł WireGuard wbudowany bezpośrednio w jądro systemu. Aplikacja komunikuje się z kernelem natywnie przez gniazda AF_NETLINK (RTNETLINK oraz GENERIC NETLINK), tworząc interfejs, nadając adresację IP, ustawiając optymalne MTU 1360 oraz tablice routingu bez wywoływania zewnętrznych skryptów. Dzięki nadaniu binarce zdolności CAP_NET_ADMIN program działa na prawach zwykłego użytkownika i nie pyta o hasło sudo przy każdym starcie.
System plików FUSE3: Udziały SFTP (przez libssh2) oraz SMB/Samba (przez libsmbclient) są montowane w przestrzeni użytkownika za pomocą silnika FUSE3 (domyślnie w katalogu ~/Mounts/). Wbudowany 2-sekundowy cache atrybutów (stat cache) sprawia, że przeglądanie katalogów w menedżerach plików (np. Nemo, Dolphin, Nautilus) działa błyskawicznie, a krótkotrwałe utraty pakietów są automatycznie wznawiane w tle.

Wersja dla systemu Windows 11:
Wymóg sterownika WireGuard dla połączeń VPN: W przeciwieństwie do Linuksa, jądro systemu Windows 11 nie posiada wbudowanego protokołu WireGuard. Z tego względu, jeśli zamierzasz korzystać z modułu VPN, w systemie musi być zainstalowana oryginalna aplikacja WireGuard dla Windows (nasz program wykorzystuje jej podpisany sterownik jądra oraz usługę systemową w tle do zestawiania tunelu bez otwierania oficjalnego GUI). Jeżeli natomiast używasz BSNM Managera wyłącznie do montowania udziałów SMB i SFTP (np. w sieci lokalnej lub na publicznym IP), instalacja WireGuarda nie jest wymagana.
Montowanie bezpośrednio na Pulpicie (Desktop) lub jako litera dysku: W systemie Windows zasoby są domyślnie podpinane bezpośrednio w katalogu Desktop użytkownika (widoczne od razu jako foldery na Pulpicie), a w przypadku udziałów SMB możesz również przypisać im klasyczną literę dysku (np. Z:) widoczną w oknie „Ten komputer”.

Instalacja na Linuksie (paczka .deb oraz kompilacja ze źródeł)
Pod systemem Linux program oficjalnie wspiera wszystkie dystrybucje bazujące na pakietach .deb (Debian, Ubuntu, Linux Mint, Pop!_OS itp.). Instalacja sprowadza się do jednego polecenia w terminalu, które automatycznie dociągnie wymagane biblioteki systemowe i skonfiguruje uprawnienia sieciowe:
sudo apt install ./bsnm-manager_0.2.1-beta_amd64.deb
Co w przypadku innych dystrybucji (Arch, Fedora, openSUSE)?
Jeśli korzystasz z dystrybucji nieobsługującej formatu .deb, możesz samodzielnie spaczkować aplikację pod swój menedżer pakietów lub w kilkanaście sekund skompilować ją bezpośrednio ze źródeł. Wystarczy zainstalować pakiety deweloperskie kompilatora clang++ oraz bibliotek (glfw, fuse3, libssh2, libsodium, libsmbclient, gtk3, libayatana-appindicator3), a następnie w katalogu ze źródłami wykonać trzy polecenia:
make clean
make
sudo make setcap
Ostatni krok (make setcap, wykonujący w tle setcap cap_net_admin+ep) nadaje skompilowanej binarce uprawnienia do zarządzania interfejsem sieciowym WireGuard, dzięki czemu możesz uruchamiać program ze zwykłego konta użytkownika.
Instalacja i aktualizacje na Windows 11
Na systemie Windows 11 cały proces realizuje klasyczny instalator bsnm-manager_0.2.1-beta_win64_setup.exe (~5 MB). Instalator sam rozpakowuje program do C:\Program Files\BSNM Manager, tworzy skróty w Menu Start oraz na Pulpicie, a podczas aktualizacji do nowszej wersji potrafi automatycznie zamknąć działającą w trayu instancję, podmienić pliki binarne i uruchomić program na nowo, zachowując całą Twoją dotychczasową konfigurację z %APPDATA%\bsnm_manager.
W części drugiej przejdziemy krok po kroku przez wszystkie zakładki programu i skonfigurujemy połączenie WireGuard, zdalny dysk SFTP oraz udział sieciowy NAS (SMB).
