Chcesz krótkiego wprowadzenia? Po prostu obejrzyj powyższy film!
W zeszłym roku wydałem narzędzie o nazwie Serwer plików Pafera . Jest to aplikacja konsolowa napisana w języku Rust, która uruchamia internetowego menedżera plików dla Twoich urządzeń, umożliwiając łatwe udostępnianie plików wszystkim, którzy mają przeglądarkę internetową, z przydatną funkcją pokazu slajdów, aby pokazać swoje zdjęcia i ikony shiba. Oznacza to, że możesz pójść na imprezę i pozwolić 200 znajomym przeglądać Twoje ostatnie zdjęcia z wakacji na ich własnych telefonach, we własnym czasie i tempie.
Później, gdy znajomi i nieznajomi z internetu zaczęli mi sugerować różne sposoby użytkowania i wzorce, zacząłem dodawać coraz więcej funkcji. Teraz potrafi rsyncować całe drzewa katalogów, transkodować pliki multimedialne, otwierać pliki za pomocą aplikacji natywnego systemu operacyjnego i automatycznie synchronizować pliki na urządzeniach.
Ponieważ jednak była to aplikacja konsolowa, istniał zawsze jeden duży problem, który uniemożliwiał jej bycie uniwersalnym rozwiązaniem dla wszystkich urządzeń:
Aplikacji konsolowych nie można uruchomić w systemie iOS, co oznacza, że nie można uruchomić serwera plików Pafera na iPhonach ani iPadach...
Aż do tej pory.
Miałem trochę wolnego czasu w przerwie świątecznej, gdy Montenegro obchodziła święta, więc eksperymentowałem z napisaniem wieloplatformowej aplikacji towarzyszącej w Flutter/Dart, która pozwalałaby na łatwe przeglądanie serwerów z telefonu. W ten sposób moi mniej zafascynowani technologią znajomi mogliby po prostu nacisnąć dwa przyciski i połączyć się z moimi serwerami.
Po drodze wpadłem na pomysł, że można użyć Darta do uruchomienia własnego serwera WWW na urządzeniach z systemem iOS i pomyślałem...
Hej! Dlaczego po prostu nie zaimplementuję serwera plików w Dart!
Dwa tygodnie później aplikacja była już gotowa.
Teraz wydajność jest strasznie niska w porównaniu do wersji Rust. Serwer Rust może obsłużyć około 40 000 żądań na sekundę...
Wersja Dart może obsłużyć tylko około 400...
Ale najważniejsze jest to, że działa...
i instaluje się na iPhone'ach!
Z powodu błędu w bibliotece PDFx w nowszych wersjach Fluttera musiałem zrezygnować z ładnych ikon dla wszystkich przycisków, ponieważ wyświetlały się jako brzydkie czarne linie.
Jednak podstawowe działanie pozostaje takie samo.
Gdy wszyscy połączą się z tą samą siecią Wi-Fi lub punktem dostępowym w Twoim telefonie, wystarczy kliknąć ikonę aplikacji, wybrać folder, który chcesz udostępnić, i nacisnąć opcję „Uruchom serwer”.
Następnie kliknij przycisk kodu QR i poproś znajomych o zeskanowanie kodu. Dzięki temu będą mogli przeglądać Twój folder na swoich telefonach, a nawet przesyłać strumieniowo filmy z Twojego telefonu bezpośrednio na swoje telefony.
Jeśli Twój znajomy używa laptopa lub komputera stacjonarnego, to również nie stanowi problemu. Wystarczy wpisać adres URL wyświetlany nad kodem QR na jego urządzeniu, a on może zrobić dokładnie to samo.
Jeśli nie korzystasz z systemu iOS lub Android, to również nie stanowi problemu. Aplikacje Flutter działają na OSX, Windows i Linux bez problemu, więc uzyskasz tę samą funkcjonalność, a nawet więcej, jeśli zainstalujesz rsync, FFMpeg i ImageMagick w swoim systemie, aby aplikacja mogła z nich korzystać.
Oprócz prostego udostępniania plików dostępnych jest też kilka innych zaawansowanych funkcji, dlatego tutaj przedstawię ich krótki przegląd.
Nazwa hosta to to, co jest wyświetlane innym urządzeniom, gdy klikają na „Wyszukaj inne serwery”. Możesz jej użyć, aby szybko odróżnić jedno urządzenie od drugiego, jeśli udostępniasz kilka urządzeń w tym samym czasie.
Folder to folder systemu plików, który faktycznie udostępniasz. Możesz kliknąć „Użyj folderu dokumentów” jako domyślny w Dokumentach/udostępniane lub kliknąć „Wybierz folder”, aby wybrać inny folder. Może być również konieczne kliknięcie „Użyj folderu dokumentów”, jeśli iOS nie odświeża prawidłowo ustawień aplikacji po wznowieniu działania ze stanu uśpienia.
Użyj bieżącego adresu IP automatycznie wykrywa bieżący adres IP WiFi Twojego urządzenia. Podobnie jak w przypadku „Użyj folderu dokumentów”, użyj go, jeśli iOS nie odświeża aplikacji prawidłowo i nadal używa adresu IP z poprzedniej sieci WiFi.
Opcja „Udostępnij na wszystkich interfejsach” ustawia publiczny adres IP na 0.0.0.0, co oznacza, że wszyscy na wszystkim, do czego jesteś podłączony, będzie można zobaczyć twój serwer. Przydatne na komputerach stacjonarnych z więcej niż jednym połączeniem, ale uważaj, używając go w miejscach publicznych.
"Rozpocznij udostępnianie" uruchomi serwer i otworzy stronę główną, którą będziesz mógł zarządzać. Ponowne kliknięcie zatrzyma serwer i zapewni bezpieczeństwo Twoich plików.
"Wczytaj ostatnie ustawienia" i "Zapisz bieżące ustawienia" robią dokładnie to, co mówią. Twoje ustawienia zostaną zapisane w Documents/paferafileserver.cfg, tak jak wersja konsolowa Rust.
Różne opcje haseł mają na celu zapewnienie różnym osobom różnych poziomów dostępu.
Zazwyczaj każdy może zobaczyć Twoje pliki, po prostu łącząc się z Twoim serwerem, ale jeśli zaznaczysz opcję „Włącz pliki prywatne” poniżej, wtedy nikt nie będzie mógł zobaczyć Twoich plików bez podania hasła.
Hasło zapisu jest używane do przesyłania, przenoszenia, kopiowania lub usuwania plików. Bez niego nikt inny nie może nic zrobić w twoim systemie poza przeglądaniem twoich plików.
Hasło powłoki jest bezużyteczne w aplikacji mobilnej, ale jest bardzo przydatne w systemach operacyjnych komputerów stacjonarnych i Termux na Androidzie. Umożliwia uruchamianie dowolnych poleceń systemowych, co czyni je jednocześnie bardzo potężnymi i bardzo niebezpiecznymi. Ta funkcja jest domyślnie wyłączona i musisz wprowadzić hasło powłoki I Aby z niej skorzystać, zaznacz poniżej opcję „Włącz polecenia powłoki”.
Różne opcje włączania i wyłączania pozwalają wybrać, co inni użytkownicy mogą zrobić w Twoim systemie nawet kiedy mają już właściwe hasło. Te opcje zastępują wszystkie inne, więc jeśli wyłączysz kopiowanie plików, nikt - nawet ty sam - nie będzie mógł kopiować plików.
Specjalna opcja „Wyłącz kontrolę klucza SSH” jest przeznaczona dla osób takich jak ja, które ciągle się przemieszczają, synchronizując pliki między różnymi urządzeniami. Zazwyczaj SSH poprosi o potwierdzenie podczas łączenia się z systemem, którego adres IP uległ zmianie, nawet jeśli tożsamość tego systemu jest już znana. Ta opcja umożliwi Ci automatyczną synchronizację plików w różnych sieciach bez konieczności przechodzenia do konsoli w celu potwierdzenia połączeń SSH. Używaj jej ostrożnie w sieciach, nad którymi sam nie masz kontroli.
W przeciwieństwie do aplikacji uruchamianych w środowisku Termux lub w środowisku pulpitu, aplikacje na systemy iOS i Android nie mają dostępu do powłoki, rsync, ImageMagick ani FFMpeg, dlatego wszystkie zaawansowane funkcje synchronizacji i transkodowania są wyłączone.
Ponieważ mobilne systemy operacyjne mogą w każdej chwili wyłączyć aplikacje działające w tle, zadania automatyczne o ograniczonym czasie działania także są wyłączone.
Istnieją możliwe obejścia dla wszystkich tych aspektów, ale czas potrzebny na zintegrowanie tych funkcji przekracza moje intencje w tej chwili. Jeśli ktoś jest zainteresowany zapłaceniem mi za ich dodanie, to zobaczymy, co się stanie. 😁
Podobnie jak w przypadku wszystkich moich projektów, kod źródłowy jest hostowany na Codeberg i można go Znaleziono tutaj .
W przypadku skompilowanych plików binarnych możesz przeglądaj katalog wydań tutaj ...
Albo po prostu kliknij poniższe linki:
Ze względu na wymagania dotyczące podpisów Apple użytkownicy systemów iOS i OSX muszą poczekać, aż aplikacja będzie dostępna w App Store, lub pobrać kod źródłowy i skompilować własną wersję dla swoich urządzeń.
Ponieważ jest to nowa wersja, jestem pewien, że będzie mnóstwo błędów i dziwnego zachowania na różnych systemach. Jeśli chcesz przetestować wersję beta tej aplikacji dla mnie, wyślij mi e-mail ze swoim urządzeniem i wersją systemu operacyjnego, a ja skonfiguruję Cię w TestFlight.
Dystrybucja aplikacji Flutter jest w rzeczywistości o wiele bardziej skomplikowana niż wersja Rust, gdzie po prostu przesyłam pojedynczy plik wykonywalny i mam to z głowy, więc proszę o wyrozumiałość, gdy Apple potrzebuje trzech tygodni, aby sprawdzić moją aplikację i zezwolić jej na dostęp do App Store w iOS. Powinno być o wiele łatwiej, gdy Apple będzie musiało zezwolić na aplikacje innych firm zgodnie z orzeczeniem UE.
Jak zawsze, mam nadzieję, że ta aplikacja okaże się dla Was przydatna, a jeśli chcecie dostosować ją do własnych celów, zawsze jestem dostępny jako konsultant techniczny. Bawcie się dobrze!
O autorze |
|
![]() |
Jim programuje odkąd dostał IBM PS/2 w latach 90. Do dziś woli pisać HTML i SQL ręcznie, a w swojej pracy skupia się na wydajności i poprawności. |