Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nabilettaqy/moonlight-upload
Simple, JS-free, unbloated, and Tor Friendly web application built with Flask. It features an administration panel for configuration, file management, and basic statistics...
https://github.com/nabilettaqy/moonlight-upload
css file-upload flask html monero privacy purecss sharing tor webapp
Last synced: 4 months ago
JSON representation
Simple, JS-free, unbloated, and Tor Friendly web application built with Flask. It features an administration panel for configuration, file management, and basic statistics...
- Host: GitHub
- URL: https://github.com/nabilettaqy/moonlight-upload
- Owner: nabilettaqy
- Created: 2024-01-31T17:23:56.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-06-11T11:27:34.000Z (8 months ago)
- Last Synced: 2024-10-10T01:04:27.881Z (4 months ago)
- Topics: css, file-upload, flask, html, monero, privacy, purecss, sharing, tor, webapp
- Language: HTML
- Homepage:
- Size: 13.1 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Moonlight Upload
Moonlight Upload is a simple, unbloated, and Tor Friendly web application built with Flask that allows users to upload and share files. It features an administration panel for configuration, file management, and basic statistics.
Note: It was a old project that I never finished so the frontend is not 100% responsive, feel free to use the code for your projects...
## Features
![Main](images/index.png)
- **File Upload:** Users can upload files through the main page.
- **File Deletion:** Users can delete files using a unique key generated during the upload.
- **Preview Images:** Optionally, users can provide preview images for their uploads.
- **Administration Panel:** A secure admin panel is available for configuration updates, viewing uploaded files, and monitoring statistics.
- **Stats Page:** Displays statistics such as the total number of uploads, preview images, total size, downloads, and views.## Technologies Used
- **Flask:** Python Web framework for the backend.
- **Python 3.10+:** Python Programming Language.
- **HTML, CSS:** Front-end technologies for an interactive user experience.
- **PicoCSS:** Not bloated CSS framework and very lightweight.
- **SQLite:** For the database.## Administration
The application uses Flask for the web framework, SQLAlchemy for database interactions, and Werkzeug for secure file handling.
### Configuration
- **Database:** SQLite is used to store upload information.
- **File Storage:** Uploaded files and previews are stored in the 'uploads' folder.
- **Allowed/Forbidden Extensions:** Certain file extensions are allowed or forbidden for upload.
- **File Size Limits:** Maximum sizes are set for both archive files and preview images.### Database Models
- **Upload:** Represents uploaded files with details such as folder, filename, IP address, upload date, file size, key, preview, download count, and view count.
- **Message:** Stores a single content message, such as the main page message.
- **DownloadLog:** Logs download events, including the upload ID, IP address, and download time.### File Handling
- **File Validation:** Checks if uploaded files have valid extensions and sizes.
- **Random Key Generation:** Generates random keys for secure file deletion.
- **Cleanup:** Deletes unused files and empty folders.### Web Routes
- **Main Page (/):** Handles file uploads and displays relevant information.
- **Delete Page (/delete):** Initiates the file deletion process.
- **Vault Page (/vault):** Displays information about a specific upload.
- **Download Page (/download):** Allows users to download files.
- **Media Page (/media):** Serves video files.
- **Preview Page (/preview):** Serves preview images.
- **Admin Page (/admin):** Admin panel for configuration and file management.
- **Stats Page (/stats):** Displays statistics about uploads.
- **Static Pages (/about, /donation, /privacy, /tos):** Informative pages about the application.### Error Handling
- Custom error pages for 404, 403, 405, and 500 errors with corresponding error images.
## Installation
1. Clone the repository: `#`
2. `cd moonlight-upload`
3. (optional) Create a python virtual environment.
4. Install dependencies: `pip install -r requirements.txt`
5. Change the settings in the `moonlight/app.py` file.
6. Run the application (in development mode only): `python moonlight/app.py` or `python debug_app.py`## Deploy
See this [guide](https://dev.to/brandonwallace/deploy-flask-the-easy-way-with-gunicorn-and-nginx-jgc) for deploying the application in a linux server using Nginx and Gunicorn.
Note: The `wsgi.py` file is stored in `/moonlight`
## Disclaimer
This project is for educational purposes only. Any actions and or activities related to the material contained within this project is solely your responsibility. I assume no liability and are not responsible for any misuse or damage caused by this program.
## Contact
Created by [Nabil Et-taqy](https://github.com/nabilettaqy) - feel free to contact me!