Želite brzi uvod? Samo pogledajte video iznad!
Prošle godine sam objavio uslužni program pod nazivom Pafera File Server . To je konzolna aplikacija napisana u Rustu koja pokreće web-bazirani upravitelj datoteka za vaše uređaje, omogućavajući jednostavno dijeljenje datoteka sa bilo čim što ima web pretraživač sa zgodnom funkcijom projekcije slajdova za prikazivanje vaših fotografija i shiba ikona. To znači da možete otići na zabavu i pustiti 200 prijatelja da pregledaju vaše nedavne fotografije sa odmora na svojim telefonima, u svoje vrijeme i tempom.
Kasnije, kako su razni prijedlozi i obrasci korištenja dolazili od prijatelja i nasumičnih internet stranaca, počeo sam dodavati sve više i više funkcija. Sada je sposoban da sinhronizuje čitava stabla direktorijuma, transkodira medijske fajlove, otvara fajlove sa izvornim aplikacijama operativnog sistema i automatski sinhronizuje datoteke na vašim uređajima.
Međutim, budući da je aplikacija konzola, uvijek je postojao jedan veliki problem koji je sprečavao da bude univerzalno rješenje za sve vaše uređaje:
Konzolne aplikacije ne mogu raditi na iOS-u, što znači da ne možete pokrenuti Pafera File Server na iPhone uređajima ili iPadima...
Do sada.
Imao sam malo slobodnog vremena tokom božićnog raspusta dok je Crna Gora slavila praznike, pa sam eksperimentisao sa pisanjem prateće aplikacije za više platformi u Flutter/Dart-u koja bi vam omogućila da lako pretražujete servere sa vašeg telefona. Na taj način, moji prijatelji manje naklonjeni tehnologiji mogu samo da pritisnu dva dugmeta i povežu se na moje servere.
Usput sam shvatio da zapravo možete koristiti Dart za pokretanje vlastitog web servera na iOS uređajima, i pomislio sam...
Hej! Zašto ne bih umjesto toga implementirao fajl server u Dart!
Dakle, dvije sedmice kasnije, aplikacija je ovdje.
Sada su performanse užasno spore u poređenju sa Rust verzijom. Rust server može poslužiti oko 40.000 zahtjeva u sekundi...
Dok Dart verzija može poslužiti samo oko 400...
Ali bitno je da radi...
i instalira se na iPhone!
Zbog greške u PDFx biblioteci s najnovijim verzijama Flutter-a, morao sam prestati koristiti lijepe ikone za sva dugmad jer su se prikazivale kao ružne crne linije.
Međutim, osnovna operacija ostaje ista.
Kada se svi povežu na istu WiFi mrežu ili pristupnu tačku vašeg telefona, samo kliknite na ikonu aplikacije, odaberite folder koji želite podijeliti i dodirnite "Pokreni server".
Zatim kliknite na dugme QR koda, pustite prijateljima da ga skeniraju, a zatim mogu sa zadovoljstvom da pretražuju vašu fasciklu na svojim telefonima, čak i da strimuju filmove sa vašeg telefona direktno na svoje telefone.
Ako vaš prijatelj koristi laptop ili desktop računar, ni to nije problem. Samo upišite URL prikazan iznad QR koda na svom uređaju i oni mogu učiniti potpuno istu stvar.
Ako ne koristite iOS ili Android, ni to nije problem. Flutter aplikacije rade na OSX, Windows i Linux sasvim dobro, tako da ćete dobiti istu funkcionalnost, pa čak i više ako instalirate rsync, FFMpeg i ImageMagick na svoj sistem da bi aplikacija koristila.
Postoji dosta naprednih funkcija osim jednostavnog dijeljenja datoteka, tako da ću ovdje dati kratak pregled.
Ime hosta je ono što se prikazuje drugim uređajima kada kliknu na "Traži druge servere". Možete ga koristiti da brzo razlikujete jedan uređaj od drugog ako istovremeno dijelite nekoliko uređaja.
Folder je folder sistema datoteka koji zapravo dijelite. Možete kliknuti na "Koristi fasciklu dokumenata" za zadanu vrijednost u Dokumenti/dijeljeno, ili možete kliknuti na "Odaberi mapu" da odaberete drugi folder. Možda ćete morati da kliknete na "Koristi fasciklu dokumenata" ako iOS ne osvježi ispravno postavke aplikacije prilikom vraćanja iz stanja mirovanja.
Koristi trenutni IP automatski otkriva trenutni WiFi IP vašeg uređaja. Kao i kod "Koristi fasciklu dokumenata," koristite ga ako iOS ne osvježi aplikaciju ispravno i još uvijek koristi IP adresu s prethodne WiFi mreže.
"Dijeli na svim interfejsima" postavlja javni IP na 0.0.0.0, što znači da svima na bilo čemu na što ste povezani moći će vidjeti vaš server. Praktično na desktop računarima sa više od jedne veze, ali budite oprezni kada ga koristite na javnim mestima.
"Počni dijeliti" će pokrenuti server i otvoriti početnu stranicu kojom možete upravljati. Ponovnim klikom zaustavit ćete server i sačuvati vaše datoteke.
"Učitaj posljednje postavke" i "Sačuvaj trenutne postavke" rade tačno ono što kažu. Vaše postavke će biti pohranjene u Documents/paferafileserver.cfg baš kao i konzolna Rust verzija.
Različite opcije lozinke su tu da različitim ljudima daju različite nivoe pristupa.
Obično svi mogu vidjeti vaše datoteke samo povezivanjem na vaš server, ali ako označite "Omogući privatne datoteke" ispod njih, tada niko neće moći vidjeti vaše datoteke bez lozinke za čitanje.
Lozinka za pisanje se koristi za otpremanje, premještanje, kopiranje ili brisanje datoteka. Bez toga, niko drugi ne može učiniti ništa vašem sistemu osim pregleda vaših fajlova.
Shell lozinka je beskorisna na mobilnoj aplikaciji, ali je vrlo korisna na desktop operativnim sistemima i Termux na Androidu. Omogućuje vam pokretanje proizvoljnih sistemskih naredbi, koje ga čine vrlo moćnim i vrlo opasnim u isto vrijeme. Ova funkcija je onemogućena prema zadanim postavkama i morate oboje unijeti shell lozinku i označite "Omogući naredbe ljuske" ispod da ga koristite.
Različite opcije omogućavanja i onemogućavanja vam omogućavaju da odaberete šta drugi ljudi mogu učiniti vašem sistemu čak i kada već imaju pravu lozinku. One nadjačavaju sve druge opcije, tako da ako onemogućite kopiranje datoteka, niko - čak ni vi sami - neće moći kopirati datoteke.
Posebna opcija "Onemogući SSH provjeru ključeva" je za ljude poput mene koji stalno lutaju dok sinkroniziraju datoteke naprijed-natrag između različitih uređaja. Normalno, SSH će tražiti potvrdu kada se povezuje na sistem čija je IP adresa promijenjena, čak i ako je identitet tog sistema već poznat. Ova opcija će vam omogućiti da automatski sinhronizujete datoteke na različitim mrežama bez padanja u konzolu da biste potvrdili SSH veze. Koristite ga pažljivo kada ste na mrežama koje sami ne kontrolišete.
Za razliku od rada u Termux-u ili desktop okruženju, iOS i Android aplikacije nemaju pristup shell-u, rsync-u, ImageMagick-u ili FFMpeg-u, tako da su sve napredne funkcije sinkronizacije i transkodiranja onemogućene.
Budući da mobilni operativni sistemi mogu ubiti pozadinske aplikacije u bilo kojem trenutku, vremenski automatski zadaci su također onemogućeni.
Postoje moguća rješenja za sve ove aspekte, ali vrijeme potrebno za integraciju ovih funkcija trenutno je izvan moje namjere. Ako je neko zainteresovan da mi plati da ih dodam, videćemo šta će se desiti. 😁
Kao i kod svih mojih projekata, izvorni kod se nalazi na Codebergu i može biti pronađeno ovdje .
Za unaprijed kompajlirane binarne datoteke, možete ovdje pregledajte direktorij izdanja ...
Ili jednostavno kliknite na linkove ispod:
Zbog Appleovih zahtjeva za potpisivanje, korisnici iOS-a i OSX-a moraju pričekati da aplikacija bude dostupna u App Store-u ili preuzeti izvorni kod i kompajlirati vlastitu verziju za svoje uređaje.
Pošto je ovo novo izdanje, siguran sam da će biti dosta grešaka i čudnog ponašanja na raznim sistemima. Ako želite da testirate ovu aplikaciju u beta verziji za mene, pošaljite mi e-poštu sa verzijom vašeg uređaja i operativnog sistema i ja ću vam pomoći da podesite TestFlight.
Distribucija Flutter aplikacije je zapravo mnogo složenija od Rust verzije, gdje samo otpremim jednu izvršnu datoteku i završim s cijelom stvari, pa vas molim da imate razumijevanja kada će Appleu trebati tri tjedna da provjeri moju aplikaciju i dozvoli je u iOS-u App Store. Stvari bi trebale biti mnogo lakše kada se od Applea traži da dozvoli aplikacije trećih strana prema presudi EU.
Kao i uvijek, nadam se da će vam ova aplikacija biti korisna, a ako je želite prilagoditi za svoje potrebe, uvijek sam na raspolaganju kao tehnički savjetnik. Zabavite se!
O autoru |
|
![]() |
Jim se bavi programiranjem otkako je vratio IBM PS/2 tokom 90-ih. I dan-danas preferira pisanje HTML-a i SQL-a ručno, te se fokusira na efikasnost i korektnost u svom radu. |