Shuttle: Transferência de Arquivos P2P Simples e Segura com WebRTC
Shuttle é uma ferramenta CLI e biblioteca para transferência de arquivos e diretórios P2P usando WebRTC e IDs temporários. O foco é bootstrap rápido de projetos e colaboração temporária sem depender de servidores de terceiros para o payload.
Diferente de ferramentas de transferência estática, o Shuttle suporta sincronização em tempo real e um sistema de propostas de mudança bidirecional controlada.
O que resolve:
- Transferência direta: O servidor de sinalização (signaling) estabelece a conexão, mas nunca toca nos dados.
- Sincronização Live: Mantém arquivos atualizados conforme são editados localmente.
- Controle de escrita: O receptor pode propor mudanças que o emissor aceita ou ignora, garantindo que o lado "autoritativo" sempre tenha o controle final.
Instalação rápida:
npm install -g johankit-shuttle
Exemplo de uso:
No lado do emissor (Push):
# Compartilha a pasta atual e aguarda mudanças do outro lado
shuttle push . --live --allow-changes --auto-accept
Gera um ID como: G1946C
No lado do receptor (Pull):
# Conecta via ID e recebe atualizações em tempo real
shuttle pull G1946C --live
Características Técnicas:
- WebRTC Nativo: Utiliza
@roamhq/wrtcpara permitir conexões via Node.js fora do browser. - Chunks & Base64: Suporta arquivos grandes através de fragmentação de pacotes JSON.
- Chokidar Integration: Monitoramento de sistema de arquivos eficiente para o modo live.
Segurança:
- Fluxo de dados via túnel direto P2P.
- Segurança de caminho (
safePath) para evitar ataques de traversal. - O emissor é sempre a autoridade sobre o sistema de arquivos.
Links: