Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SVIFT

SVIFT is a TUI peer-to-peer file transfer application based on the BitTorrent protocol, built as a foray into networking and distributed computing.

Building

Clone the Git repository

git clone https://github.com/shivrm/svift
cd svift

Run with cargo

cargo run --release --bin=tracker
cargo run --release --bin=server

Architecture

SVIFT uses an asynchronous event-based architecture built on top of Tokio. Each component is an independent actor that communicates with other components through message passing. This allows for lock-free management of many moving parts.

Client Architecture:

graph LR
    A["Application"] --> S["Server"]
    A <--> T["TUI"]
    T <--> S
    M["Multicast Handler"] --> S
    S <--> T1["Torrent 1"]
    S <--> T2["Torrent ..."]
    S <--> TN["Torrent N"]
    T1 <--> FileManager
    T1 <--> PeerManager
    PeerManager <--> P1[Peer 1]
    PeerManager <--> P2[Peer ...]
    PeerManager <--> PN[Peer N]
    P1 <--> TS1["TcpStream"]
    PN <--> TS2["TcpStream"]
Loading

Feature Roadmap

  • TUI with live status for easier usage
  • .torrent metadata creation within TUI
  • Automatic peer pruning based on activity and reliability
  • Trackerless peer discovery through local multicast and mutual peer exchange
  • Peer discovery through DHTs (a good exercise, but is our network big enough?)
  • Encrypted communication between peers
  • Detailed event log for each torrent instead of a single message stream
  • Make TUI nicer to use

License

MIT

About

wannabe p2p file sharing program

Resources

Stars

0 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages