**TODO:
- consertar essa todo list**
- Criar struct básica
- Ler arquivo .torrent
- Extrair informações básicas
- Adicionar info_hash (necessário para o tracker)
- Adicionar pieces (lista de hashes das peças)
- Adicionar piece_length (tamanho de cada peça)
- Adicionar lista de arquivos para torrents multi-arquivo
- Criar módulo TrackerClient
- Implementar conexão HTTP com tracker
- Gerar peer_id único para identificação
- Montar URL de announce com parâmetros:
- info_hash
- peer_id
- port
- uploaded
- downloaded
- left (bytes restantes)
- Decodificar resposta do tracker
- Extrair lista de peers
- Criar módulo PeerConnection
- Implementar conexão TCP com peers
- Implementar handshake inicial
- Gerenciar mensagens do protocolo BitTorrent:
- choke/unchoke
- interested/not interested
- have
- bitfield
- request
- piece
- Criar sistema de peças pendentes/completas
- Implementar verificação de hash das peças
- Gerenciar download paralelo de múltiplas peças
- Salvar arquivos no disco
- Implementar pausa/retomada de downloads
- Criar comandos básicos:
- adicionar torrent
- listar torrents
- ver status
- pausar/retomar
- Mostrar progresso do download
- Mostrar velocidade de download/upload
- Mostrar peers conectados
- Suporte a DHT (Distributed Hash Table)
- Suporte a magnet links
- Configurações de largura de banda
- Sistema de prioridade de arquivos
- Interface web
If available in Hex, the package can be installed
by adding torrent_manager to your list of dependencies in mix.exs:
def deps do
[
{:torrent_manager, "~> 0.1.0"}
]
endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/torrent_manager.