💾 Archived View for rawtext.club › ~sloum › geminilist › 006553.gmi captured on 2023-12-28 at 16:18:32. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

-=-=-=-=-=-=-

<-- back to the mailing list

Status update for MoonGem - Gemini server with inline Lua scripting

panda-roux contact at panda-roux.dev

Thu May 20 18:47:44 BST 2021

- - - - - - - - - - - - - - - - - - - 

Hope you're well!

A couple of weeks ago I sent out a notice regarding a piece of Gemini server software I'd developed.  This is an update in regards to how that project has been progressing.

https://sr.ht/~panda-roux/MoonGem/

gemini://gemini.panda-roux.dev/moongem

I'm considering MoonGem to be "basically finished" for now. There are a couple of luxuries I'd like to add, but it's essentially feature-complete as far as I'm concerned.

As of version 1.3.1, the following features have been added in addition to refactoring and code cleanup:

Scripting API features (and corresponding Lua method signatures):

* Input handling o HEAD:get_input([prompt]) o HEAD:get_sensitive_input([prompt]) * Specifying a language header part o HEAD:set_lang(<language>) * Client certificate handling o HEAD:get_cert([prompt]) o HEAD:has_cert() o Currently a fingerprint and not_after fields are captured.

Server features:

* Buffered responses for non-gemtext files (i.e. static files are sent piecemeal) * Specify a non-standard port via the MOONGEM_PORT environment variable * Sanitized URI paths * Proper request logging o Example: [::ffff:127.0.0.1:54502] /moongem | 32 header + 3639 body bytes sent (total: 3671) * Request pipeline logic that can be interrupted by script method calls requiring an irregular response code o i.e. if a script calls HEAD:get_input() and there's no input in the request URI, the server will drop what it's doing and return a 1X code (and prompt META) immediately.

The following are nice-to-have features that I would like to add in the future:

* Automatic directory listing o Implementing this in Lua is trivial but it'd be nice to have the server handle it * Expose more information from client certificates to the scripting API * Rate-limiting * Some sort of mechanism for response caching o Not worth the headache of trying to do this correctly at the moment * Some sort of fancy URI variable binding (thinking of ASP.NET's routing, e.g. "/posts/{postId}/{commentId}")

Thank you for reading!  Any and all feedback is appreciated.

panda-roux

-------------- next part --------------A non-text attachment was scrubbed...Name: OpenPGP_0x44DDD4AEE37FA6A8.ascType: application/pgp-keysSize: 5149 bytesDesc: OpenPGP public keyURL: <https://lists.orbitalfox.eu/archives/gemini/attachments/20210520/95f25d6a/attachment-0001.bin>-------------- next part --------------A non-text attachment was scrubbed...Name: OpenPGP_signatureType: application/pgp-signatureSize: 495 bytesDesc: OpenPGP digital signatureURL: <https://lists.orbitalfox.eu/archives/gemini/attachments/20210520/95f25d6a/attachment-0001.sig>