Vill du ha en snabb introduktion? Se bara videon ovan!
Förra året släppte jag ett verktyg som heter Pafera filserver . Det är en konsolapp skriven i Rust som kör en webbaserad filhanterare för dina enheter, vilket möjliggör enkel fildelning till allt som har en webbläsare med en praktisk bildspelsfunktion för att visa upp dina foton och shiba-ikoner. Det betyder att du kan gå på en fest och låta 200 vänner alla titta på dina senaste semesterbilder på sina egna telefoner, i sin egen tid och i sin egen takt.
Senare, när olika förslag och användningsmönster kom in från vänner och slumpmässiga internetfrämlingar, började jag lägga till fler och fler funktioner. Den kan nu rsynkronisera hela katalogträd, omkoda mediefiler, öppna filer med inbyggda operativsystemappar och automatiskt synkronisera filer mellan dina enheter.
Men eftersom det var en konsolapp fanns det alltid ett stort problem som hindrade den från att vara en universell lösning för alla dina enheter:
Konsolappar kan inte köras på iOS, vilket innebär att du inte kunde köra Pafera filserver på iPhones eller iPads...
Hittills.
Jag hade lite fritid över jullovet medan Montenegro firade högtider, så jag experimenterade med att skriva en multiplattformskompanjonsapp i Flutter/Dart som gör att du enkelt kan bläddra bland servrar från din telefon. På så sätt kunde mina mindre teknikinriktade vänner bara trycka på två knappar och ansluta till mina servrar.
Längs vägen kom jag på att du faktiskt kunde använda Dart för att köra din egen webbserver på iOS-enheter, och jag tänkte...
Hej! Varför implementerar jag inte bara filservern i Dart istället!
Så två veckor senare är appen här.
Nu är prestandan fruktansvärt långsam jämfört med Rust-versionen. Rust-servern kan betjäna cirka 40 000 förfrågningar per sekund...
Medan Dart-versionen bara kan tjäna cirka 400...
Men det viktiga är att det fungerar...
och det installeras på iPhones!
På grund av en bugg i PDFx-biblioteket med de senaste versionerna av Flutter, har jag varit tvungen att sluta använda vackra ikoner för alla knappar eftersom de visade sig som fula svarta linjer.
Den grundläggande operationen förblir dock densamma.
När alla är anslutna till samma WiFi-nätverk eller din telefons hotspot klickar du bara på appikonen, väljer den mapp du vill dela och trycker på "Starta server".
Klicka sedan på QR-kodknappen, låt dina vänner skanna den, och sedan kan de glatt bläddra i din mapp på sina telefoner, till och med strömma filmer från din telefon direkt till sina telefoner.
Om din vän använder en bärbar eller stationär dator är det heller inga problem. Skriv bara in webbadressen som visas ovanför QR-koden på deras enhet, så kan de göra exakt samma sak.
Om du inte kör på iOS eller Android är det inga problem heller. Flutter-appar fungerar bra på OSX, Windows och Linux, så du får samma funktionalitet och ännu mer om du installerar rsync, FFMpeg och ImageMagick på ditt system för att appen ska kunna använda dem.
Det finns en hel del avancerade funktioner förutom enkel fildelning, så jag ger en snabb översikt här.
Värdnamn är det som visas för andra enheter när de klickar på "Sök efter andra servrar". Du kan använda den för att snabbt skilja en enhet från en annan om du delar ett par enheter samtidigt.
Mapp är den filsystemsmapp som du faktiskt delar. Du kan klicka på "Använd mappen dokument" som standard i Dokument/delat, eller så kan du klicka på "Välj mapp" för att välja en annan mapp. Du kan också behöva klicka på "Använd dokumentmapp" om iOS inte uppdaterar appens inställningar korrekt när den återgår från viloläge.
Använd aktuell IP identifierar automatiskt din enhets nuvarande WiFi IP. Som med "Använd dokumentmappen" använd den om iOS inte uppdaterar appen ordentligt och den fortfarande använder en IP från ett tidigare WiFi-nätverk.
"Dela på alla gränssnitt" ställer in den publika IP-adressen till 0.0.0.0, vilket betyder att alla på allt som du är ansluten till kommer att kunna se din server. Praktiskt på stationära datorer med mer än en anslutning, men var försiktig när du använder den på offentliga platser.
"Börja dela" kommer att köra servern och öppna hemsidan för dig att hantera. Om du klickar på den igen stoppas servern och dina filer skyddas.
"Ladda senaste inställningar" och "Spara aktuella inställningar" gör precis som de säger. Dina inställningar kommer att lagras i Documents/paferafileserver.cfg precis som konsolens Rust-version.
De olika lösenordsalternativen är till för att ge olika personer olika åtkomstnivåer.
Normalt kan alla se dina filer bara genom att ansluta till din server, men om du markerar "Aktivera privata filer" under dessa kommer ingen att kunna se dina filer utan läslösenordet.
Skrivlösenordet används för att ladda upp, flytta, kopiera eller ta bort filer. Utan detta kan ingen annan göra något med ditt system förutom att se dina filer.
Skallösenordet är värdelöst på mobilappen, men är väldigt användbart på stationära operativsystem och Termux på Android. Det låter dig köra godtyckliga systemkommandon, vilket gör det mycket kraftfullt och väldigt farligt på samma gång. Den här funktionen är inaktiverad som standard och ni måste båda ange ett skallösenord och markera "Aktivera skalkommandon" nedan för att använda den.
De olika aktiverings- och inaktiveringsalternativen låter dig välja vad andra kan göra med ditt system även när de har redan rätt lösenord. Dessa åsidosätter alla andra alternativ, så om du inaktiverar kopiering av filer kommer ingen - inte ens du själv - att kunna kopiera filer.
Det speciella alternativet "Inaktivera SSH Keycheck" är för sådana som jag som ständigt strövar runt medan de synkroniserar filer fram och tillbaka mellan olika enheter. Normalt kommer SSH att be om bekräftelse vid anslutning till ett system vars IP-adress har ändrats, även om systemets identitet redan är känd. Det här alternativet gör att du automatiskt kan synkronisera filer på olika nätverk utan att gå ner i konsolen för att bekräfta SSH-anslutningar. Använd den med försiktighet när du är på nätverk som du inte kontrollerar själv.
Till skillnad från att köra i Termux eller en skrivbordsmiljö, har iOS- och Android-apparna inte tillgång till ett skal, rsync, ImageMagick eller FFMpeg, så alla avancerade synkroniserings- och omkodningsfunktioner är inaktiverade.
Eftersom mobila operativsystem kan döda bakgrundsappar när som helst, är tidsinställda automatiska uppgifter också inaktiverade.
Det finns möjliga lösningar för alla dessa aspekter, men tiden som krävs för att integrera dessa funktioner är bortom min avsikt för tillfället. Om någon är intresserad av att betala mig för att lägga till dem, så får vi se vad som händer. 😁
Som med alla mina projekt finns källkoden på Codeberg och kan vara hittas här .
För förkompilerade binärer kan du bläddra i releasekatalogen här ...
Eller klicka helt enkelt på länkarna nedan:
På grund av Apples signeringskrav måste iOS- och OSX-användare vänta på att appen ska vara tillgänglig på App Store, eller ladda ner källkoden och kompilera din egen version för dina enheter.
Eftersom det här är en ny version är jag säker på att det kommer att finnas gott om buggar och konstigt beteende på olika system. Om du vill betatesta den här appen åt mig, skicka mig ett e-postmeddelande med din enhet och operativsystemversion så fixar jag dig på TestFlight.
Att distribuera en Flutter-app är faktiskt mycket mer komplicerat än Rust-versionen, där jag bara laddar upp en enda körbar fil och är klar med det hela, så snälla ha förståelse när det tar tre veckor för Apple att kontrollera min app och tillåta den i iOS App Store. Saker och ting borde vara mycket enklare när Apple måste tillåta tredjepartsappar enligt EU:s beslut.
Som alltid hoppas jag att ni tycker att den här appen är användbar, och om ni vill anpassa den för era egna syften är jag alltid tillgänglig som teknisk konsult. Ha roligt!
Om författaren |
|
![]() |
Jim har programmerat sedan han fick en IBM PS/2 på 90-talet. Än idag föredrar han fortfarande att skriva HTML och SQL för hand, och fokuserar på effektivitet och korrekthet i sitt arbete. |