DEV Community

Med Amine
Med Amine

Posted on Edited on

My first project 'Xuploads'

This is my first project. Xuploads is a web application for uploading, downloading, and sharing files, developed using VB.NET and ASP.NET.

Xuploads: A Feature-Rich, Secure, and Flexible File Upload Platform

Xuploads is an open-source file upload and sharing platform focused on file management, security, storage flexibility, and customization.

Users do not need an account to upload files. Each upload can be managed individually through dedicated control and deletion links, while administrators can configure how files are stored, protected, processed, and shared.

Main Features

File Upload and Sharing

  • Upload files without requiring user accounts.
  • Generate individual links for uploaded files.
  • Upload files directly from a URL.
  • Configure maximum upload sizes.
  • Restrict file extensions and configure individual extension size limits.
  • Support configurable upload and sharing behavior.

File Access and Protection

  • Password-protected files.
  • One-time download links.
  • Multiple one-time links for the same file.
  • File expiration by hours or a specific date.
  • Freeze and unfreeze files.
  • Geo-restrictions.
  • Hotlink protection.
  • IP-based restrictions and banning.
  • Configurable download waiting/countdown behavior.

File Replacement and Management

Files can be replaced while keeping the same public link and file identity.

Other management features include:

  • Changing the displayed filename.
  • Deleting files through dedicated links.
  • Controlling passwords and access settings.
  • Freezing and unfreezing files.
  • Managing expiration settings.
  • Generating QR codes for sharing.

Storage Providers

Xuploads separates file management from the storage backend through the IStorageProvider abstraction.

Supported storage backends include:

  • Local filesystem
  • FTP
  • SFTP
  • Azure Blob Storage

StorageSelector chooses the appropriate storage provider from the configured storage path, allowing the main application to work with different storage systems without requiring separate upload and download implementations for each backend.

Encryption

Xuploads supports AES encryption for files stored at rest.

Encrypted files use the .xeff format. Large-file processing is performed through streaming operations rather than loading complete files into memory.

VirusTotal Scanning

Xuploads can use VirusTotal to scan uploaded files for malware analysis.

Scanning can be configured by file extension. Administrators can choose to scan selected extensions or use an exclusion-based configuration to avoid scanning specific types.

Image Security and Processing

Xuploads supports image watermarking and image-specific processing.

Azure AI image safety analysis can also be enabled with configurable categories and thresholds. These checks can be applied during file replacement as well as during the initial upload process.

Statistics and Administration

Xuploads provides administrators with statistics and management tools for uploaded content.

The administration system includes tools for:

  • File management
  • File replacement
  • Password management
  • Freeze/unfreeze
  • Statistics
  • Storage synchronization
  • Corruption handling
  • Configuration
  • Contact submissions
  • Maintenance and system messages

Scheduled tasks can be executed through Hangfire, with command execution logging available for background operations.

File Integrity and Recovery

Xuploads includes tools for detecting and handling inconsistent or damaged upload states.

The maintenance system can detect problems with uploaded content and metadata and can take corrective action where supported.

Failed uploads are also cleaned up so incomplete uploads do not remain as normal files.

Time Handling

Xuploads uses UTC internally for time-sensitive operations such as expiration and logging.

Administrators can configure the timezone used for displaying dates and times.

Customization

Xuploads supports a range of customization options, including:

  • Custom upload and download pages
  • Additional headers and footers
  • Maintenance, information, and error messages
  • Custom query strings for control and deletion links
  • Custom query strings for direct image links
  • OpenGraph metadata
  • QR code generation
  • Google Analytics integration
  • Google Translate integration

The frontend also consumes server-provided information through data attributes, allowing the interface to remain flexible while security-sensitive decisions stay on the server.

XUAPI

XUAPI (Xuploads API) allows external applications to interact with Xuploads programmatically.

Current functionality includes:

  • Uploading files from URLs
  • Uploading files through HTTP POST requests
  • Providing upload metadata such as expiration and descriptions
  • Working with Xuploads' configured storage system

Planned API functionality includes additional file-management operations.

Architecture

Xuploads is designed around separation between application logic and storage.

The IStorageProvider interface allows different storage backends to provide the operations required by Xuploads while the rest of the application can work through a common storage abstraction.

This approach allows storage-related functionality such as uploading, downloading, deleting, replacing, synchronization, and maintenance operations to work across different storage systems.

Open Source

Xuploads is an open-source project licensed under the MIT License and hosted on GitHub.

GitHub: https://github.com/NecroPC18/Xuploads

Xuploads is intended to provide a complete file upload and sharing solution with configurable security, storage, file lifecycle, administration, and integration features in a single ASP.NET application.

Top comments (1)

Collapse
 
necro_pc profile image
Med Amine

We hope for some contributors