WebFramework
Cross-platform .NET library written in C# that allows you to create a web server for dynamic and/or static websites and web apps with ease.
Guides for WebFramework
Changelog
Repository on GitHub
Main features
- Modular structure for high customizability
- Events for different types of HTTP requests (app, API, post, upload, download) with objects for easy access to everything you need to handle those requests
- Automatic SSL certificates using Let's Encrypt
- Pages and elements so you don't have to write any HTML code
- .wfpg files to quickly create static web pages
- Accounts with everything one would expect from an account
- Mail server (incoming and outgoing) with SPF, DKIM and DMARC
- Object-oriented database
- File server with server cache and browser cache management
- Worker to regularly update files, handle memory integrity, certificates and more
- Plugins (see more below)
- Option for usage as a local web server for local web apps as interfaces for proper apps on a computer
- Backups for the database and external files
...and much more!
Most features have plugins as interfaces.
Installation
You can get the NuGet package here: uwap.WebFramework
You can also download the source code from GitHub and add a reference to it from your project.
This library is based on ASP.NET, so it's best to create an empty ASP.NET project rather than a console app (those will terminate unless paused otherwise).
Official plugins
- ServerPlugin (interface for server management by administrator accounts)
- UsersPlugin (interface for accounts)
- NotesPlugin (web app for user's notes)
- MailPlugin (mailbox system and interface for the mail server)
- RedirectPlugin (allows for static redirects)
- BackupDownloaderPlugin (for off-site backup storage)
Planned plugins
- FilesPlugin (file management for admins and interface for a file server)
- GitPlugin (interface for a git server running on the same machine)
- FinancesPlugin (simple finance manager for users)
Used libraries
- Certes to talk to Let's Encrypt
- DnsClient.NET for DNS requests to find mail servers and check mail authentication
- MailKit to decode and encode emails from/to SMTP-compliant messages, send emails on the SMTP level once a suitable mail server for the recipient has been found, and validate DKIM signatures of messages against the keys found in the DNS records
- SmtpServer to listen for incoming emails on the raw SMTP level
- Otp.NET to generate and check time-based one-time passwords (TOTP) for two-factor authentication
- QRCoder to generate QR codes for 2FA setup strings
- Isopoh.Cryptography.Argon2 to hash passwords using Argon2
- IPAddressRange to parse IP address ranges and check whether a given IP address is within that range (used for mail authentication)