Skip to content

imrany/rfshare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

47 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RFSHARE

rfshare is a modern, encrypted peer-to-peer file sharing application built with Rust and the egui framework. It enables fast, secure file transfers between devices on the same network or across the internet using a relay server. The app runs in the background with system tray support, like Telegram Desktop.

License: MIT Rust Platform

✨ Features

Core Features

  • πŸ”’ End-to-End Encrypted Transfers - X25519 key exchange + AES-256-GCM encryption for all transfers
  • 🌐 Local Network Discovery - Automatic device discovery via UDP broadcast on port 44444
  • πŸ“ Folder Synchronization - Automatically sync folders with selected devices (Pro feature)
  • 🌍 Remote File Sharing - Share files across the internet via relay server (Pro feature)
  • πŸ“Š Transfer History - Complete log of all sent and received files with search functionality
  • 🎨 Modern UI - Clean interface with dark/light theme support
  • πŸ–±οΈ Drag & Drop - Simply drag files into the app to add them to the queue
  • πŸ“± Cross-Platform - Works on Windows, macOS, and Linux
  • πŸ–₯️ System Tray Support - Minimize to system tray and continue running in background

Technical Highlights

  • Resumable Transfers - Interrupted transfers can be resumed from where they stopped
  • Real-time Progress - Visual progress bars for all active transfers
  • Desktop Notifications - System notifications when files are received
  • Smart Sync - Only syncs files that have changed (uses modification timestamps)
  • Network Monitoring - Automatically detects IP changes and reconnects
  • No Cloud Storage - Files never leave your devices or relay server (relay only pipes encrypted data)
  • System Tray Integration - App stays alive in background when window is closed

πŸ“Έ Demonstration

1. Scanning for devices 2. Sending a file
Scan Image Send Image
3. Receiving a file 4. History tab
Received Image History Tab Image
5. Sync a folder (Pro feature)
Sync Image

πŸš€ Quick Start

Installation

🐧 Linux

curl -fsSL https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.sh | bash

Installs the .deb package on Debian/Ubuntu (includes desktop entry and icon).
Falls back to a bare binary on other distros.

Note for GNOME users: Tray icons are hidden by default. Install the AppIndicator extension:

sudo apt install gnome-shell-extension-manager
sudo apt install gnome-shell-extension-appindicator
# Then enable it via Extension Manager or gnome-extensions
## extension-manager
# gnome-extensions list

User-only install (no sudo):

PREFIX=$HOME/.local curl -fsSL https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.sh | bash

🍎 macOS

curl -fsSL https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.sh | bash

Installs the .dmg when available, otherwise builds a .app bundle and copies it to /Applications.
Also installs the rfshare CLI to /usr/local/bin.

πŸͺŸ Windows

Paste this into PowerShell (no admin needed):

irm https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.ps1 | iex

Installs the .msi when available, otherwise extracts the portable .exe.
Adds rfshare to your PATH, creates a Start Menu shortcut, and registers it in Add/Remove Programs.

Pin a specific version

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.sh | bash -s -- --version v0.15.0

Windows

& ([scriptblock]::Create((irm https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.ps1))) -Version v0.15.0

Uninstall

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.sh | bash -s -- --uninstall

Windows

& ([scriptblock]::Create((irm https://raw.githubusercontent.com/imrany/rfshare/main/scripts/install.ps1))) -Uninstall

Or: Settings β†’ Apps β†’ rfshare β†’ Uninstall

Manual download

All binaries and installers are on the Releases page.

Platform Installer Portable
🐧 Linux rfshare-vX.X.X-linux-x86_64.deb rfshare-linux-vX.X.X.tar.gz
🍎 macOS rfshare-vX.X.X-macos.dmg rfshare-macos-vX.X.X.tar.gz
πŸͺŸ Windows rfshare-vX.X.X-windows-x64.msi rfshare-windows-vX.X.X.zip

Each file has a matching .sha256 checksum.

Basic Usage

  1. Start the app - It automatically starts listening for incoming files

  2. Send files locally:

    • Click the Scan tab
    • Click Scan to discover devices on your network
    • Select a device from the list
    • Go to Send tab
    • Drag and drop files or click Browse
    • Click Send
  3. Receive files:

    • Files are automatically saved to your Downloads folder
    • Desktop notifications appear when transfers complete
    • View received files in the History tab
  4. System Tray (Optional):

    • Click the close button (X) to minimize to tray
    • The app continues running in background
    • Right-click the tray icon to show/hide the window or quit
    • Configure in Settings β†’ Preferences β†’ System Tray
  5. Remote sharing (Pro):

    • Receiver: Click Scan β†’ Remote β†’ Go Online β†’ Share the code
    • Sender: Click Scan β†’ Remote β†’ Enter code β†’ Connect β†’ Send files
  6. Folder sync (Pro):

    • Select a device
    • Go to Sync tab
    • Click Set folder to watch
    • Click Start watching
    • Any new files in the folder auto-sync to the selected device

πŸ”§ Architecture

Network Protocols

Port Protocol Purpose
44444 UDP Device discovery broadcast
44445 TCP Encrypted file transfer

Security Stack

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Application Layer                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚         AES-256-GCM (Authenticated)         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚    X25519 ECDH (Key Exchange)               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚    TCP Socket (Direct or Relay)             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Transfer Flow

  1. Discovery - UDP broadcast finds peers on the network
  2. Key Exchange - X25519 ephemeral key exchange for perfect forward secrecy
  3. Encryption - AES-256-GCM encrypts all file data
  4. Transfer - Chunked transfer with resume capability
  5. Verification - GCM authentication ensures integrity

πŸ“Š Features Comparison

Feature Free Pro
Local Network Transfer βœ… βœ…
Direct File Transfer βœ… βœ…
Encrypted Transfer βœ… βœ…
Transfer History βœ… βœ…
Drag & Drop βœ… βœ…
Desktop Notifications βœ… βœ…
System Tray Support βœ… βœ…
Remote Transfer ❌ βœ…
Folder Sync ❌ βœ…
Remote Folder Sync ❌ βœ…
Unlimited Devices ❌ βœ…
Organization License ❌ βœ…

πŸ’° Pro License

Activate Pro

  1. Go to Settings β†’ License
  2. Enter your license key
  3. Click Activate

Pro License Key:

29714-5B90A-54A40-254F4-B7B1C

Get a License

Support development and get Pro features:

  • GitHub Sponsors
  • Includes remote sharing and folder sync
  • Helps fund continued development

πŸ—οΈ Building from Source

Prerequisites

  • Rust 1.70 or later
  • Cargo package manager
  • Linux: GTK development libraries (for system tray)
    # Ubuntu/Debian
    sudo apt install libgtk-3-dev
    # Fedora
    sudo dnf install gtk3-devel
    # Arch
    sudo pacman -S gtk3

Build

# Clone the repository
git clone https://github.com/imrany/rfshare.git
cd rfshare

# Build in release mode
cargo build --release

# Run the application
./target/release/rfshare

πŸ“ File Locations

Configuration

  • Windows: %APPDATA%\rfshare\
  • Linux: ~/.config/rfshare/
  • macOS: ~/Library/Application Support/rfshare/

Files

  • prefs.json - User preferences and settings
  • history.csv - Transfer history log
  • license - Pro license information

πŸ” Security Details

Key Exchange Process

  1. Both peers generate ephemeral X25519 keypairs
  2. Public keys are exchanged over the TCP connection
  3. Shared secret is derived using Diffie-Hellman
  4. AES-256-GCM key is derived using SHA-256 with app-specific salt
  5. All subsequent communication uses the derived key

Encryption Features

  • Perfect Forward Secrecy - Session keys are not stored
  • Authenticated Encryption - GCM mode provides integrity checking
  • Per-Connection Keys - Unique keys for each transfer
  • No Key Reuse - Fresh keys for every session

🎯 Use Cases

  1. Home Network Sharing - Share files between computers on same Wi-Fi
  2. Remote Work - Send files to colleagues across the internet
  3. Backup Sync - Automatically sync folders to another computer
  4. Quick File Transfer - Fast, no-server transfers between devices
  5. Secure Sharing - Encrypted transfers for sensitive files
  6. Background Operations - Keep app running in tray while working

πŸ› Troubleshooting

Common Issues

Q: Can't see devices on the network

  • Ensure both devices are on the same network/subnet
  • Check if firewall is blocking UDP port 44444
  • Try running as administrator (Windows) or with sudo (Linux)

Q: Remote connection fails

  • Verify internet connectivity
  • Ensure the relay server is accessible
  • Check if port 443 is open (for HTTPS) or port 80 (for HTTP)

Q: Transfer is slow

  • Direct transfers are limited by your network speed
  • Remote transfers go through the relay server
  • Try using a wired connection for large files

Q: Can't find the app after installation

  • Windows: Start Menu β†’ rfshare
  • macOS: Applications folder β†’ rfshare.app
  • Linux: Run rfshare in terminal or find in application menu

Q: Tray icon doesn't appear on Linux/GNOME

  • GNOME hides tray icons by default
  • Install and enable the AppIndicator extension:
    sudo apt install gnome-shell-extension-appindicator
    gnome-extensions enable ubuntu-appindicators@ubuntu.com
    # Restart GNOME Shell (Alt+F2 β†’ r)
  • For other desktop environments, tray icons work out of the box

Q: Folder sync isn't working

  • Ensure you have a Pro license activated
  • Check that the selected device is online
  • Verify the folder exists and is readable
  • Look at the Activity log for errors

🀝 Contributing

Contributions are welcome! Areas where help is needed:

  • UI/UX improvements - Enhance the egui interface
  • Performance optimizations - Faster transfers, better chunking
  • Additional protocols - WebRTC, QUIC support
  • Mobile versions - iOS/Android ports
  • Documentation - Improve this README and code comments

Development Setup

# Clone and build
git clone https://github.com/imrany/rfshare.git
cd rfshare
cargo build

# Run with logging
RUST_LOG=debug cargo run

# Run tests
cargo test

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“ž Support

About

A secure file sharing desktop app. Support remote and local file sharing with folder syncing.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors