Skip to content

IIITMG Filelink is a cross-platform, GUI-based peer-to-peer file sharing tool for local networks. Features include file/folder support, pause/resume/cancel transfers, encryption via Fernet, auto device discovery, dark/light themes, and detailed transfer logs — all in a sleek PyQt5 interface.

Notifications You must be signed in to change notification settings

RAWx18/IIITMG-Filelink

Repository files navigation

IIITMG Filelink

IIITMG Filelink is a sleek and powerful peer-to-peer file sharing tool built for local networks. It offers encrypted transfers, auto device discovery, and a clean GUI that makes sharing files and folders seamless across devices.


🚀 Features

  • 📁 Send files and folders
  • 📦 Folders are zipped before transfer
  • 🛑 Pause, ▶️ Resume, ❌ Cancel transfers on the fly
  • 🔐 Optional Fernet encryption
  • 🌗 Light and Dark UI themes
  • 🔍 Auto device discovery on local subnet
  • 🧭 Toggle between Send and Receive modes
  • 📜 View real-time transfer logs
  • 📂 Set custom save location for received files

🖥️ GUI Preview

Send Page GUI Receive Page GUI


🔐 Encryption

When enabled, files are encrypted chunk-by-chunk using Fernet encryption.
A small hexadecimal snippet of the first encrypted chunk is printed to the console as proof of encryption.

💡 Make sure to update the ENCRYPTION_KEY in config.py with a valid key.
You can generate one using:

from cryptography.fernet import Fernet
print(Fernet.generate_key())

📡 Device Discovery

The application scans your local subnet (based on your IP) to detect other devices running the Filelink receiver server.
Ensure the target device has:

  • The app running (python3 main.py)
  • No firewall blocking incoming LAN connections on the relevant port

⏯️ Pause/Resume & Cancel

The transfer progress bar widget allows:

  • Pausing/resuming individual file transfers
  • Canceling specific transfers mid-way

This is useful during large transfers or on unstable networks.


🛠️ Getting Started

1. Start the Server and GUI

On any device on your LAN, simply run:

python3 main.py

This will start the receiver server in the background and launch the CampusShare IIITMG GUI.


2. Using the Application

  • Add Files/Folders:
    Use “Add Files” / “Add Folder” buttons or drag and drop files into the file list.

  • Device Discovery:
    Click “Scan Network” to auto-discover active receivers on your subnet.

  • Encryption:
    Toggle the “Encrypt Transfer” checkbox to securely transmit your data.

  • Transfer Control:
    Use the progress section to monitor transfers and pause/resume/cancel as needed.

  • Theme Toggle:
    Switch between Light and Dark mode using the theme selector on the top right.


🧪 Installation

  1. Clone the repository
git clone https://github.com/RAWx18/IIITMG-Filelink.git
cd IIITMG-Filelink
  1. Install dependencies
pip install -r requirements.txt
  1. Run the app
python3 main.py

🗂 Project Structure

IIITMG-Filelink/
├── animations/          # UI animation logic
│   ├── animation_manager.py
│   └── message_transfer.py
│
├── gui/                 # GUI layout and widgets
│   ├── file_selector.py
│   ├── main_window.py
│   └── progress_bar.py
│
├── networking/          # Server-client networking logic
│   ├── server.py
│   └── client.py
│
├── utils/               # Helper methods for file/network operations
│   ├── file_utils.py
│   └── network_utils.py
│
├── config.py            # Configuration and keys
├── key.py               # Handles Fernet encryption key logic
├── main.py              # Main launcher
├── requirements.txt     # Dependencies
├── file_structure.md    # Internal documentation
└── README.md            # This file

👨‍💻 Authors

  • Ryan Madhuwala
  • Mahil Patel

👨‍💻 Other Contributors

  • Priyansh Kumar
  • Anukrati Chaturvedi

📄 License

For educational use only.
You're welcome to fork and build upon it for personal or academic projects.


About

IIITMG Filelink is a cross-platform, GUI-based peer-to-peer file sharing tool for local networks. Features include file/folder support, pause/resume/cancel transfers, encryption via Fernet, auto device discovery, dark/light themes, and detailed transfer logs — all in a sleek PyQt5 interface.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages