iWant – The Decentralized Peer To Peer File Sharing Commandline Application

iWant – The Decentralized Peer To Peer File Sharing Commandline Application

iWant - Decentralized Peer To Peer File Sharing solution

A while ago, we have written a guide about transfer.sh and that allows you to share files over Internet easily and quickly, and PSiTransfer –  a simple open source self-hosted file sharing solution. Today, we will see yet another file sharing utility called “iWant”. It is a free and open source CLI-based decentralized peer to peer file sharing application.

What’s makes it different from other file sharing applications? You might ask. Well, it’s commandline application. You don’t need any memory consuming GUI utilities. You need only the Terminal. It is decentralized. That means your data will not be stored in any central location. So, there is no central point of failure. iWant allows you to pause the download and you can resume it later when you want. You don’t need to download it from beginning, it just resumes the downloads from where you left off. Any changes made in the files in the shared directory (such as deletion, addition, modification) will be reflected instantly in the network. Just like torrents, iWant downloads the files from multiple peers. If any seeder left the group or failed to respond, it will continue the download from another seeder. It is cross-platform, so, you can use it in GNU/Linux, MS Windows, and Mac OS X.

iWant – A CLI-based Decentralized Peer To Peer File Sharing Solution

Install iWant

iWant can be easily installed using pip utility. Make sure you have pip installed in your Linux distribution.

To install PIP on Arch Linux and its derivatives, run:

sudo pacman -S python-pip

On RHEL, Fedora, CentOS:

sudo yum install epel-release
sudo yum install python-pip

Or,

sudo dnf install epel-release
sudo dnf install python-pip

On Debian, Ubuntu, Linux Mint:

sudo apt-get install python-pip

After installing PIP, sake sure, you have the following system dependencies installed:

  • libffi-dev
  • libssl-dev

On Ubuntu, you can install these dependencies using command:

sudo apt-get install libffi-dev libssl-dev

Once all dependencies installed, install iWant using the following command:

sudo pip install iwant

We have now iWant in our system. Let us go ahead and see how to use it to transfer files over network.

Usage

First, start iWant server using command:

iwanto start

At the first time, iWant will ask the Shared and Download folder’s location. Enter the actual location of both folders. Then, choose which interface you want to use:

Sample output would be:

Shared/Download folder details looks empty..
Note: Shared and Download folder cannot be the same
SHARED FOLDER(absolute path):/home/kb/myshare
DOWNLOAD FOLDER(absolute path):/home/kb/mydownloads
Network interface available
1. lo => 127.0.0.1
2. enp0s3 => 192.168.43.2
Enter index of the interface:2
now scanning /home/kb/myshare
[Adding] /home/kb/myshare 0.0
Updating Leader 56f6d5e8-654e-11e7-93c8-08002712f8c1
[Adding] /home/kb/myshare 0.0
connecting to 192.168.43.2:1235 for hashdump

If you see an output something like above, you ca

n start using iWant right away.

Similarly, start iWant service on all systems in the network, assign valid Shared and Downloads folder’s location, and select the network interface card.

The iWant service will keep running in the current Terminal window until you press CTRL+C to quit it. You need to open a new tab or new Terminal window to use iWant.

iWant usage is very simple. It only has few commands as listed below.

  • iwanto start  – Starts iWant server
  • iwanto search <name>  – Search for files
  • iwanto download <hash>  – Download a file
  • iwanto share <path>  – Change the Shared folder’s location
  • iwanto download to <destination>  – Change the Download folder’s location
  • iwanto view config  – View Shared and Download folders
  • iwanto –version  – Displays the iWant version
  • iwanto -h  – Displays the help section

Let us see some real time examp

les.

Search files

To search for a file, run:

iwanto search <filename>

Please note that you don’t need to specify the accurate name.

Example:

iwanto search command

Sample output from my Ubuntu system:

Filename Size Checksum
------------------------------------------- ------- --------------------------------
/home/sk/myshare/THE LINUX COMMAND LINE.pdf 3.85757 efded6cc6f34a3d107c67c2300459911

Download files

You can download the files from any system on your network. To

download a file, just mention the hash (checksum) of the file as shown below.

iwanto download efded6cc6f34a3d107c67c2300459911

The file will be saved in your Download location (/home/sk/mydownloads/ in my case).

Filename: /home/sk/mydownloads/THE LINUX COMMAND LINE.pdf
Size: 3.857569 MB

View configuration

To view the configuration i.e the Shared and Download folders, run:

iwanto view config

Sample output:

Shared folder:/home/kb/myshare
Download folder:/home/kb/mydownloads

Change Shared and Download folder’s location

You can change the Shared folder and Download folder location to some other path like below.

To change the Shared folder’s location, run:

iwanto share /home/kb/ostechnix

Now, the Shared location has been changed to /home/sk/ostechnix location.

Also, you can change the Downloads location using command:

iwanto download to /home/kb/Downloads

To view the changes made, run the config command:

iwanto view config

Stop iWant

Once you done with iWant, you can quit it by pressing CTRL+C.

If it is not working by any change, it might be due to Firewall or your router doesn’t support multicast. You can view all logs in ~/.iwant/.iwant.log file. For more details, refer the project’s GitHub page provided at the end.

And, that’s all. Hope this tool helps. I will be here again with another interesting guide. Till then, stay tuned with OSTechNix!

Cheers!

Resource:

Author: lamichhane kamal

System administrator Unix. Experinced Author Always with new idea. Contact me If you need help about Linux or windows server.

Leave a Reply

Your email address will not be published. Required fields are marked *

Solve : *
22 ⁄ 11 =