Enceladus
Status
Discontinued
This project has been discontinued as I've found other things to work on and I don't really code F# as much as I used to anymore. However, Enceladus is still usable as a testing server or to serve as base prototype of a better and more featureful Gemini server on top of .NET core. Good luck!
What is Enceladus?
A simple, synchronous Gemini protocol compliant server implementation in .NET and F#.
What is Gemini network protocol?
Gemini is a new application-level internet protocol for the distribution of arbitrary files, with some special consideration for serving a lightweight hypertext format which facilitates linking between files. You may think of Gemini as "the web, stripped right back to its essence" or as "Gopher, souped up and modernised just a little", depending upon your perspective (the latter view is probably more accurate). Gemini may be of interest to people who are:
- Opposed to the web's ubiquitous tracking of users
- Tired of nagging pop-ups, obnoxious adverts, autoplaying videos and other misfeatures of the modern web
- Interested in low-power computing and/or low-speed networks, either by choice or necessity
For more details, please visit Gemini FAQ
Supported Platforms
Theoretically, Enceladus could be run on Windows and MacOSX without any further modifications, but currently, this server has been tested to run well on Linux system so far.
- Linux: Supported
- Windows: In the future
- MacOSX: In the future
Version
v0.1.1
What's next?
- Redesign for concurrent and simultaneous client connections.
- Improve error handling model.
- Support for client certificate validation.
Prerequisites to build
- dotnet (>= v5.0.0)
- openssl
Running
NOTE: You can override server properties in
config.json
.
- Install dependencies
- Run:
dotnet tool restore dotnet paket restore # or if you're on Linux or Mac bash ./build.sh
- Change current directory into Server directory.
- Generate SSL certificates first by running
sh generate_ssl.sh
. - Change server credentials according to your setup in
config.json
file.- You can override config.json location by assigning the absolute path using
ENCELADUS_CONFIG_FILE
environment variable. - Example:
ENCELADUS_CONFIG_FILE="$HOME/config.json"
on Linux systems.
- You can override config.json location by assigning the absolute path using
dotnet run
or./Enceladus
to start the server.- Visit
gemini://localhost:1965/
, the homepage of the server using the client that you can find by scrolling to the bottom of this page.
How to contribute
Please read CONTRIBUTING.md first.
Thank you for contributing! 😄
License
This software is licensed under the MIT license. For more details, please see LICENSE file.