Dragonload is a state of the art Distributed Download Manager written in Python to distribute large scale downloads on different machines to better utilize high-speed intranet connected to low-speed internet.
Developed by Team Madcaps
Head over to out Source Repo and clone the project
git clone github.com/sayoojsamuel/dragonload
cd dragonload
python setup.py install
python setup.py develop
- dragonload Distributed Downlaod Manager
- [-] Design a robust backend
- [-] Manage the protocol
- Create a config directory in POSIX and MAC machines. This about NS machines later. Config directory is necessary to store the db and the config file. DB is necessary for the downloading to happen. Also fix the directory where the downloading happens. Parital downloads in the temp directory or the main download directory.
- Test the platform
- Try to convert the commands to python only; platform independance
- [-] Check for partial download
- Test the merge functionality
This protocol is responsible for managing all the interested parties into one pool.
-
Objective
- Create Pool for interested Parties; N party proto
- Check the file size;
- Split the fileSize by a multiple of N
- Collect user IP’s
- Generate the download script. Notify the CNC after each successful download; Realtime progress for the pool
- Schedule Download??? Take care of the sleep
- Manage Parties who leave in between the protocol
- Split part of the remaining itemsList to the newcomming member; Dynamic Pool Model
This protocol is for efficiently sharing the files after partly download among the decorated users.
-
Objectives
- Verify if parties are still active during the process
- Check connection with the CNC
- Share files parallely, efficiently and equally among the users. (check for corruptions)
- Test if local hosting is proper
- Share in a binary Tree manner - Will it work out?
- Merge the parts as and when they arrive. Notify other about the status of the proces
This is the main server application, which will handle the whole download manager. This can be implemented in two ways:
- A centralized main server
- A requirement based
- Create robust framework, and build curses app, web app on top
Pathlib: Article to make os independent paths
pycui: alternative to ncurses
- Fix the port issue. Update the server with the users port address in addition to the IP address. Code everything in main file.
- Use python dataclasses
- Make a custom URI scheme (dragon://)
- Gossip framework for status sharing??