Skip to main content

Lantern - A P2P file sharing system with TUI dashboard

Project description

 _             _                
| |   __ _ _ _| |_ ___ _ _ _ _  
| |__/ _` | ' \  _/ -_) '_| ' \ 
|____\__,_|_||_\__\___|_| |_||_|

A peer-to-peer file sharing system with a beautiful terminal UI (TUI) dashboard.

Python Version License

Features

  • P2P File Sharing - Share files directly between computers on the same network
  • Auto Discovery - Automatically discovers peers on the LAN via UDP broadcast
  • Beautiful TUI - Modern terminal interface built with Textual
  • Dual Mode - Both CLI and TUI modes available
  • Light/Dark Themes - Toggle between color schemes
  • Progress Bars - Visual feedback for large file transfers
  • Notifications - Toast notifications for operation completion
  • Path Safety - Built-in protection against path traversal attacks

Installation

From PyPI (when published)

pip install lantern-p2p

From Source

git clone https://github.com/shx-dow/lantern.git
cd lantern
pip install -e .

Usage

TUI Mode (Default)

Launch the terminal dashboard (beautiful visual interface):

lantern

Or explicitly:

lantern --tui

CLI Mode

Use command-line interface (text-based commands):

lantern --cli

Available CLI commands:

  • peers - Show discovered peers
  • list <host[:port]> - List files on remote peer
  • download <host[:port]> <file> - Download a file
  • upload <host[:port]> <path> - Upload a file
  • delete <host[:port]> <file> - Delete remote file
  • myfiles - List your shared files
  • help - Show help
  • quit - Exit

Custom Port

lantern --port 6000

Key Bindings (TUI Mode)

Key Action
F1 Show help
F5 Refresh files
t Toggle theme
u Upload file
d Download file
x Delete file
Tab Cycle focus
q Quit

Configuration

Shared files are stored in the shared_files/ directory by default. This directory is created automatically when you first run Lantern.

Requirements

  • Python 3.8 or higher
  • textual >= 0.50.0
  • psutil >= 5.9.0

Architecture

lantern/
├── config.py      # Configuration constants
├── protocol.py    # Message framing & file transfer protocol
├── discovery.py   # UDP peer discovery
├── server.py      # TCP file server
├── client.py      # TCP client operations
├── peer.py        # CLI entry point
├── tui.py         # Textual TUI dashboard
├── main.py        # Package entry point
└── styles/        # CSS stylesheets
    └── lantern.css

Development

Install with dev dependencies:

pip install -e ".[dev]"

Run linting:

black lantern/
ruff check lantern/

License

MIT License - see LICENSE file for details.

Contributing

Contributions welcome! Please open an issue or pull request.

Acknowledgments

Built with Textual for the TUI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lantern_p2p-1.0.2.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lantern_p2p-1.0.2-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file lantern_p2p-1.0.2.tar.gz.

File metadata

  • Download URL: lantern_p2p-1.0.2.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for lantern_p2p-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f591b3e83973794a8d9b733c4040c4cb3f0da4a93edd0c26b2f6ca9d0a389ccb
MD5 66b82ba72dd718b1ff958cf84097afd7
BLAKE2b-256 110e9499ceeac4702e966bc95f4d907b171dfac41e1ca660bb5406a241a7c9de

See more details on using hashes here.

File details

Details for the file lantern_p2p-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: lantern_p2p-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for lantern_p2p-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2ee74240cac9e221651367ca8358820c4b4985b796a4d013736e750be51580e5
MD5 9ef6a19354ac36c09c2f3069d3f39d56
BLAKE2b-256 9b3594410251334e1a1d1030b1be5eb251767d809433a7e9375d18c1a758069a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page