README
ΒΆ
OverShare /α - Λ -γ
A sleek, secure file sharing server that makes transferring files across your network effortless.
Features β’ Quick Start β’ API β’ One-Shot Mode β’ Config β’ Build
π Overview
OverShare transforms any machine into a lightweight, on-demand file-sharing server β whether you're π₯ collaborating on the same network, π distributing sensitive materials with controlled one-time access, or π± accessing files from any device without cloud services. β¨ OverShare provides an elegant solution with no configuration headaches, no cloud dependencies β just instant, secure file sharing through a polished web interface and a full REST API for automation.
β¨ Features
π€ Upload & Download
|
π― One-Shot Mode
|
π‘οΈ Security
|
π UX
|
π REST API
|
π‘ Server-Sent Events
|
π§ Integrations
|
|
π Quick Start
Using Pre-built Binary (Recommended)
- Download the latest release for your OS from the Releases page
- Run the executable:
# Start server on default port 8000
./overshare
# Or specify a custom port
./overshare --port 8080
- Open
http://localhost:8000in your browser
Using Go Install
go install github.com/VexilonHacker/OverShare@latest
overshare
π API Endpoints
OverShare exposes a full REST API for programmatic access. Perfect for scripting, automation, or building custom clients.
π Get File List
curl http://localhost:8000/files
Response:
["document.pdf", "image.jpg", "archive.zip"]
π€ Upload a File
curl -F "file=@/path/to/your/file.pdf" http://localhost:8000/upload
Response:
{
"status": "ok",
"file": "file.pdf",
"bytes": "15204321"
}
π₯ Download a File
# Using curl
curl -O http://localhost:8000/download/filename.pdf
# Using wget
wget http://localhost:8000/download/filename.pdf
π¦ Download Multiple Files as ZIP
# Download multiple files as a single ZIP archive
curl -O "http://localhost:8000/zip?files=file1.pdf,file2.jpg,file3.txt"
βΉοΈ Get Max Upload Size
curl http://localhost:8000/maxsize
Response:
{"maxUploadMB":200}
π Get Local IP Address
curl http://localhost:8000/api/local-ip
Response:
{"ip":"192.168.1.100"}
π‘ Server-Sent Events (Real-time Updates)
# Stream real-time file updates
curl -N http://localhost:8000/events
Event Stream:
data: {"type":"new","file":"newfile.pdf"}
data: {"type":"remove","file":"oldfile.pdf"}
π With Authentication
If you've enabled Basic Auth:
# Include username and password
curl -u username:password http://localhost:8000/files
# Upload with auth
curl -u username:password -F "[email protected]" http://localhost:8000/upload
π― One-Shot Mode
Share files that disappear after download. Perfect for sensitive documents or temporary transfers.
# Share a file that self-destructs after 1 download
./overshare --oneshot confidential.pdf
# Allow up to 5 downloads before shutdown
./overshare --oneshot presentation.mp4 --max-downloads 5
What happens: The server starts, displays a QR code for easy mobile access, and automatically shuts down after the file has been downloaded the specified number of times. The file is never stored in the uploads directory.
One-Shot API
When in one-shot mode, additional endpoints are available:
# Check file status (remaining downloads)
curl "http://localhost:8000/?status=1"
# Download the file (triggers countdown)
curl -OJ "http://localhost:8000/?download=1"
Status Response:
{
"expired": false,
"remaining": 3,
"max": 5
}
βοΈ Configuration
Server Options
| Flag | Description | Default |
|---|---|---|
--host <ip> |
Bind to specific IP | 0.0.0.0 |
--port <n> |
Listening port | 8000 |
--maxmb <n> |
Max upload size (MB) | 200 |
--uploads <dir> |
Upload directory | current directory |
--timeout <s> |
Auto-shutdown after N seconds | disabled |
Security Options
| Flag | Description |
|---|---|
--username <user> |
Enable Basic Auth |
--password <pass> |
Password for auth |
--log-file <path> |
JSON audit log |
One-Shot Options
| Flag | Description | Default |
|---|---|---|
--oneshot <file> |
File to share | required |
--max-downloads <n> |
Max downloads | 1 |
Utility Options
| Flag | Description |
|---|---|
--qr |
Show QR code on startup |
--help |
Display help |
π Authentication Example
# Start protected server
./overshare --username admin --password secure123 --port 9000
All routes (including static files and API) will require authentication. Failed attempts are logged.
π Audit Logging
Enable JSON logging for complete visibility:
./overshare --log-file /var/log/overshare.json
Sample log entry:
{
"timestamp": "2025-03-18T15:04:05Z",
"level": "info",
"event": "download",
"filename": "project-backup.zip",
"size": 15204321,
"remote_addr": "192.168.1.15:54321",
"duration": "1.2s"
}
β¨οΈ Keyboard Shortcuts
Press ? in the web interface to see all shortcuts:
| Shortcut | Action |
|---|---|
? |
Show help overlay |
Ctrl/Cmd + F |
Focus search |
T |
Toggle theme |
Ctrl/Cmd + A |
Select all files* |
Ctrl/Cmd + D |
Download selected as ZIP* |
* Only in selection mode
ποΈ Building from Source
# Clone repository
git clone https://github.com/VexilonHacker/OverShare.git
cd OverShare
# Build
go mod download
go build -o overshare main.go
# Run
./overshare
Note: The www directory must be in the same location as the binary, or specify with --www /path/to/www.
π Project Structure
OverShare/
βββ π assts/ # Documentation assets
βββ π www/ # Web interface (HTML, CSS, JS)
βββ π main.go # Server implementation
βββ π go.mod # Go module definition
βββ π go.sum # Dependency integrity checksums
βββ π README.md # This file
π License
MIT Β© VexilonHacker. See LICENSE for details.
/α - Λ -γ Crafted by VexilonHacker
Documentation
ΒΆ
There is no documentation for this package.