Deuxfleurs patches for alps webmail (from https://sr.ht/~migadu/alps/)
Find a file
Simon Ser 020e27fe45
Add Context to Plugin.Inject
This allows to access the request metadata and the session from injectors.
2019-12-17 15:14:36 +01:00
cmd/koushin Introduce base plugin 2019-12-16 12:52:44 +01:00
plugins/base Add RenderData interface 2019-12-17 15:01:15 +01:00
themes themes/sourcehut: use formatdate template func 2019-12-17 11:33:29 +01:00
.gitignore Introduce base plugin 2019-12-16 12:52:44 +01:00
go.mod Add a form to set message flags 2019-12-17 12:42:04 +01:00
go.sum Add a form to set message flags 2019-12-17 12:42:04 +01:00
imap.go Introduce base plugin 2019-12-16 12:52:44 +01:00
LICENSE Correct license ownership 2019-12-03 07:48:25 -05:00
plugin.go Add Context to Plugin.Inject 2019-12-17 15:14:36 +01:00
plugin_go.go Add Context to Plugin.Inject 2019-12-17 15:14:36 +01:00
plugin_lua.go Add Context to Plugin.Inject 2019-12-17 15:14:36 +01:00
README.md Allow Lua plugins to inject all templates 2019-12-17 13:15:10 +01:00
server.go Remove the public/ directory 2019-12-16 12:58:21 +01:00
session.go go fmt 2019-12-16 14:53:56 +01:00
smtp.go Introduce base plugin 2019-12-16 12:52:44 +01:00
template.go Add Context to Plugin.Inject 2019-12-17 15:14:36 +01:00

koushin

GoDoc

Usage

go run ./cmd/koushin imaps://mail.example.org:993 smtps://mail.example.org:465

See -h for more information.

Themes

They should be put in themes/<name>/.

Templates in themes/<name>/*.html override default templates in plugins. Assets in themes/<name>/assets/* are served by the HTTP server at /themes/<name>/assets/*.

Plugins

Plugins can be written in Go or in Lua and live in plugins/<name>/.

Plugins can provide their own templates in plugins/<name>/public/*.html. Assets in plugins/<name>/public/assets/* are served by the HTTP server at /plugins/<name>/assets/*.

Go plugins

They can use the Go plugin helpers and need to be included at compile-time in cmd/koushin/main.go.

Lua plugins

The entry point is at plugins/<name>/main.lua.

API:

  • koushin.on_render(name, f): prior to rendering the template name, call f with the template data (the special name * matches all templates)
  • koushin.set_filter(name, f): set a template function
  • koushin.set_route(method, path, f): register a new HTTP route, f will be called with the HTTP context

Contributing

Send patches on the mailing list, report bugs on the issue tracker.

License

MIT