Skip to content

mawalker/torrentCDN

Repository files navigation

torrentCDN — BitTorrent CDN written in Java

torrentCDN is a CDN (Content Delievery Network) tool written in Java that leverages the BitTorrent protocol to transfer files between each target node.


For Vanderbilt University CS 278:

This project makes has the following properties.

Core Requirements

  1. Spec laid out in user stories on Pivotal Tracker https://www.pivotaltracker.com/s/projects/954698
  2. Has unit tests (ran by maven during build system)
  3. Has integration tests ()
  4. Is well-designed and implemented
  5. Involves network communication

Auxiliary Requirements

  1. Uses a continuous integration server
  2. Uses multi-host Vagrant
  3. Manages nodes with Fabric
  4. Uses custom non-http network built on top of a framework (Uses BitTorrent.)

There are several packages required to build and run this project

  • Java-JDK 7.0
  • maven 3.0
  • vagrant
  • puppet
  • python
  • fabric

There are 2 projects created:

  • client: acts as both the 'seeder' and 'leech' applications, depending on file placement
  • tracker: The BitTorrent Tracker that allows all the clients to connect.

Due to the limitations of the library I'm using for BitTorrent capabilities, manual installation of the library to your local maven repositoy is needed (because they do not have a public jar listed for maven repo access.) by executing:

. ./requiredToRun/installReqLibraryToMaven.sh

This requirement should be lifted soon, as I've discussed with the library's creator about them adding their work to a maven repository. That work is being done now, but is still incomplete.


To build the client software

cd client/
mvn clean install

To build the client tracker

cd tracker/
mvn clean install

To Test the client and tracker run:

vagrant up    (NOTE:this might take a while to execute)
fab tracker trackerStartBG
fab seeder seederStartBG
fab leech leechStartBG

The torrent file located at 'torrents/testfile1.txt.torrent'

It is used by all 3 VMs to configure what file to seed (file-o/testfile1.txt) and what to copy to the leech instance(s) (file-n/testfile1.txt)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published