Quer uma introdução rápida? Basta assistir ao vídeo acima!
No ano passado, lancei um utilitário chamado Servidor de arquivos Pafera . É um aplicativo de console escrito em Rust que executa um gerenciador de arquivos baseado na web para seus dispositivos, permitindo o compartilhamento fácil de arquivos para qualquer coisa que tenha um navegador da web com um recurso prático de apresentação de slides para exibir suas fotos e ícones shiba. Isso significa que você pode ir a uma festa e deixar 200 amigos navegarem pelas suas fotos de férias recentes em seus próprios telefones, em seu próprio tempo e ritmo.
Mais tarde, conforme várias sugestões e padrões de uso vinham de amigos e estranhos aleatórios da internet, comecei a adicionar mais e mais recursos. Agora ele é capaz de rsyncing árvores de diretórios inteiras, transcodificar arquivos de mídia, abrir arquivos com aplicativos nativos do sistema operacional e sincronizar arquivos automaticamente entre seus dispositivos.
No entanto, por ser um aplicativo de console, sempre houve um grande problema que o impedia de ser uma solução universal para todos os seus dispositivos:
Aplicativos de console não podem ser executados no iOS, o que significa que você não pode executar o Pafera File Server em iPhones ou iPads...
Até agora.
Eu tinha algum tempo livre durante as férias de Natal enquanto Montenegro estava comemorando os feriados, então experimentei escrever um aplicativo complementar multiplataforma em Flutter/Dart que permitiria que você navegasse facilmente pelos servidores do seu telefone. Dessa forma, meus amigos menos inclinados à tecnologia poderiam simplesmente apertar dois botões e se conectar aos meus servidores.
Ao longo do caminho, descobri que você poderia usar o Dart para executar seu próprio servidor web em dispositivos iOS, e pensei...
Ei! Por que eu não implemento o servidor de arquivos no Dart em vez disso!
Então, duas semanas depois, o aplicativo está aqui.
Agora, o desempenho é terrivelmente lento comparado à versão Rust. O servidor Rust pode atender cerca de 40.000 solicitações por segundo...
Enquanto a versão Dart pode servir apenas cerca de 400...
Mas o importante é que funciona...
e instala em iPhones!
Devido a um bug na biblioteca PDFx com versões recentes do Flutter, tive que parar de usar ícones bonitos para todos os botões, pois eles estavam aparecendo como linhas pretas feias.
No entanto, a operação básica permanece a mesma.
Quando todos estiverem conectados à mesma rede WiFi ou ao ponto de acesso do seu telefone, basta clicar no ícone do aplicativo, escolher a pasta que deseja compartilhar e tocar em "Iniciar servidor".
Em seguida, clique no botão do código QR, deixe que seus amigos o escaneiem e eles poderão navegar alegremente pela sua pasta em seus celulares, até mesmo transmitindo filmes do seu celular diretamente para os celulares deles.
Se seu amigo estiver usando um laptop ou computador de mesa, isso também não é problema. Basta digitar a URL mostrada acima do código QR no dispositivo dele, e ele poderá fazer exatamente a mesma coisa.
Se você não estiver executando no iOS ou Android, isso também não é problema. Os aplicativos Flutter funcionam no OSX, Windows e Linux muito bem, então você obterá a mesma funcionalidade, e ainda mais se instalar o rsync, o FFMpeg e o ImageMagick no seu sistema para o aplicativo usar.
Existem alguns recursos avançados além do compartilhamento simples de arquivos, então darei uma rápida visão geral aqui.
O nome do host é o que é exibido para outros dispositivos quando eles clicam em "Pesquisar outros servidores". Você pode usá-lo para distinguir rapidamente um dispositivo do outro se estiver compartilhando alguns dispositivos ao mesmo tempo.
Pasta é a pasta do sistema de arquivos que você está realmente compartilhando. Você pode clicar em "Usar pasta de documentos" para o padrão em Documentos/compartilhado, ou pode clicar em "Escolher pasta" para escolher outra pasta. Você também pode precisar clicar em "Usar pasta de documentos" se o iOS não atualizar corretamente as configurações do aplicativo ao retornar do modo de espera.
Usar IP atual detecta automaticamente o IP WiFi atual do seu dispositivo. Assim como em "Usar pasta de documentos", use-o se o iOS não atualizar o aplicativo corretamente e ele ainda estiver usando um IP de uma rede WiFi anterior.
"Compartilhar em todas as interfaces" define o IP público como 0.0.0.0, o que significa que todos em qualquer coisa a que você esteja conectado será capaz de ver seu servidor. Útil em desktops com mais de uma conexão, mas tenha cuidado ao usá-lo em locais públicos.
"Start Sharing" executará o servidor e abrirá a página inicial para você gerenciar. Clicar nele novamente interromperá o servidor e manterá seus arquivos seguros.
"Carregar últimas configurações" e "Salvar configurações atuais" fazem exatamente o que dizem. Suas configurações serão armazenadas em Documents/paferafileserver.cfg, assim como a versão Rust do console.
As várias opções de senha existem para dar a diferentes pessoas diferentes níveis de acesso.
Normalmente, todos podem ver seus arquivos apenas conectando-se ao seu servidor, mas se você marcar "Habilitar arquivos privados" abaixo destes, ninguém poderá ver seus arquivos sem a senha de leitura.
A senha de gravação é usada para carregar, mover, copiar ou excluir arquivos. Sem isso, ninguém mais pode fazer nada no seu sistema além de visualizar seus arquivos.
A senha do shell é inútil no aplicativo móvel, mas é muito útil em sistemas operacionais de desktop e Termux no Android. Ela permite que você execute comandos arbitrários do sistema, o que a torna muito poderosa e muito perigosa ao mesmo tempo. Esse recurso é desabilitado por padrão, e vocês dois devem digitar uma senha do shell e marque "Habilitar comandos shell" abaixo para usá-lo.
As várias opções de ativação e desativação permitem que você escolha o que outras pessoas podem fazer no seu sistema mesmo quando eles já têm a senha correta. Elas substituem todas as outras opções, então se você desabilitar a cópia de arquivos, ninguém - nem mesmo você - poderá copiar arquivos.
A opção especial "Desabilitar SSH Keycheck" é para pessoas como eu, que ficam constantemente vagando por aí enquanto sincronizam arquivos entre diferentes dispositivos. Normalmente, o SSH pedirá confirmação ao conectar-se a um sistema cujo endereço IP foi alterado, mesmo que a identidade desse sistema já seja conhecida. Esta opção permitirá que você sincronize arquivos automaticamente em diferentes redes sem precisar ir até o console para confirmar as conexões SSH. Use-a com cuidado quando estiver em redes que você não controla.
Diferentemente da execução no Termux ou em um ambiente de desktop, os aplicativos iOS e Android não têm acesso a um shell, rsync, ImageMagick ou FFMpeg, então todos os recursos avançados de sincronização e transcodificação são desabilitados.
Como os sistemas operacionais móveis podem encerrar aplicativos em segundo plano a qualquer momento, as tarefas automáticas temporizadas também são desabilitadas.
Há possíveis soluções alternativas para todos esses aspectos, mas o tempo necessário para integrar esses recursos está além da minha intenção no momento. Se alguém estiver interessado em me pagar para adicioná-los, então veremos o que acontece. 😁
Como em todos os meus projetos, o código-fonte está hospedado no Codeberg e pode ser encontrado aqui .
Para binários pré-compilados, você pode navegue pelo diretório de lançamento aqui ...
Ou simplesmente clique nos links abaixo:
Devido aos requisitos de assinatura da Apple, usuários de iOS e OSX devem esperar o aplicativo estar disponível na App Store ou baixar o código-fonte e compilar sua própria versão para seus dispositivos.
Como este é um novo lançamento, tenho certeza de que haverá muitos bugs e comportamentos estranhos em vários sistemas. Se você quiser testar este aplicativo para mim, envie-me um e-mail com seu dispositivo e versão do sistema operacional e eu o configurarei no TestFlight.
Distribuir um aplicativo Flutter é, na verdade, muito mais complicado do que a versão Rust, onde eu apenas carrego um único executável e pronto, então, seja compreensivo quando levar três semanas para a Apple verificar meu aplicativo e permitir sua entrada na iOS App Store. As coisas devem ser muito mais fáceis quando a Apple for obrigada a permitir aplicativos de terceiros, conforme a decisão da UE.
Como sempre, espero que vocês achem este aplicativo útil, e se quiserem personalizá-lo para seus próprios propósitos, estou sempre disponível como consultor técnico. Divirtam-se!
Sobre o autor |
|
![]() |
Jim programa desde que ganhou um IBM PS/2 nos anos 90. Até hoje, ele ainda prefere escrever HTML e SQL à mão, e foca em eficiência e correção em seu trabalho. |