Above

An async Gemini Protocol server with support for multi-tenancy. Above supports middleware, with default middleware for blocking, naive in-memory caching, logging, redirects, & a static file server included. Also included are utilities for certificate creation & DNS-based authentication (DANE).

Status

3 - Alpha in Python terms.

(Those Python statuses are 1 - Planning, 2 - Pre-alpha, 3 - Alpha, 4 - Beta, 5 - Production/Stable, 6 - Mature, 7 - Inactive.)

Currently not handled:

  • user input or client certificates
  • proxy requests to other domains or protocols
  • anything not quite in the standard. Maybe...

Why

I've read that the heyday of the Gemini Protocol's passed. I don't know, even if it has passed it's still an interesting take on fixing some of what ails the web. If only to delve into the depths of TCP & TLS, & to appreciate again the wonders of HTTP.

None of the other Gemini servers I looked at offered quite the same mix of features as Above in quite the same way. So here we are.

Installation

gem install above

Usage

...

Development

After checking out the repo, run bundle install to install dependencies. Then, run rake test to run the tests.

To install this gem locally, run bundle exec rake local.

bundle exec rake -T to see the current options.

Contributing

Bug reports and pull requests are welcome at https://codeberg.org/kreuzer/above. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

Code of Conduct

Everyone interacting in the Above project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.