[ANN] Announcing Molly Brown, a Gemini server in Go
Sean Conner sean at conman.org
Mon Jan 13 23:22:40 GMT 2020
It was thus said that the Great solderpunk once stated:
> Happy 2020, Gemininauts!
>
> As I mentioned previously and briefly on this list, over at
> https://tildegit.org/solderpunk/molly-brown I am working on a Gemini
> server of my own, named (The Unsinkable) Molly Brown. Molly for
> short is just fine!
>
> The server is written in Go and is intended to be a fully featured
> server, implementing all aspects of the protocol. This is a very
> deliberate decision to force me to be personally aware of the
> implementation difficulty involved in everything that gets specced.
I was looking over the code for CGI support and I notice we took two very
different approaches to it. I based my support upon RFC-3875, with some
changes to reflect Gemini (and support running existing web-based CGI
programs by mapping the return status codes), while you pretty much just run
the script. I would expect at the very least the QUERY_STRING
meta-variable (as RFC-3875 calls it, or "environment variable" as everybody
else calls them) to be set.
But given that CGI wasn't specced for Gemini, I think both our
implementations are compliant though.
> Molly is also designed to function in a multi-user environment, such as
> a public access unix server, where individual users have no access to
> the main server configuration file and hence need some other way to
> control features such as redirection or certificate requirements. None
> of this is implemented yet, but I plan to use .molly files, similar to
> the .htaccess files used by Apache. I'm very open to other ideas,
> though, if anybody has any.
I previous did this for GLV-1.12556 but removed the feature [1]. Some
issues you will have to deal with:
* Syntax errors in the config file and how to handle them.
* Do you cache the configs? If you do, how do you get new changes?
If you don't, you get a potential performance problem.
* Do you support configs per directory?
-spc
[1] Only for authenticating certificates, and it was per-directory. This
made it hard to support authentication for non-filesystem handlers
(which I have a lot of) so I moved authentication to the primary
config file.
Archive home | About this archive