💾 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
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
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>