💾 Archived View for gemi.dev › gemini-mailing-list › 000911.gmi captured on 2024-08-31 at 18:54:52. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-12-28)

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

Status update for MoonGem - Gemini server with inline Lua scripting

1. panda-roux (contact (a) panda-roux.dev)

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

Link to individual message.

---

Previous Thread: [ANN] [tech] Romulus Gemini Client

Next Thread: [users] kiln version 0.2.0