Deuxfleurs patches for alps webmail (from https://sr.ht/~migadu/alps/)
Find a file
2020-02-11 17:40:18 +01:00
cmd/koushin plugins/caldav: new plugin 2020-02-05 18:14:26 +01:00
contrib contrib: add hotreload script 2020-02-11 17:37:58 +01:00
docs docs/cli: new page 2020-02-11 17:40:18 +01:00
plugins plugins/caldav: add missing event.html template 2020-02-11 17:14:43 +01:00
themes themes/sourcehut: sync with latest base plugin 2020-02-11 17:14:01 +01:00
.editorconfig Add .editorconfig 2020-01-24 20:59:35 +01:00
.gitignore plugins/caldav: new plugin 2020-02-05 18:14:26 +01:00
discover.go Auto-discover upstream SMTP and IMAP servers 2020-01-20 13:08:05 +01:00
go.mod plugins/caldav: add basic event view 2020-02-05 18:39:53 +01:00
go.sum plugins/caldav: add basic event view 2020-02-05 18:39:53 +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 Extract Lua infrastructure into a plugin 2020-01-20 22:04:50 +01:00
plugin_go.go Update docs with new RegisterPluginLoader function 2020-01-21 13:40:55 +01:00
README.md docs/cli: new page 2020-02-11 17:40:18 +01:00
renderer.go Use %q to quote values in format strings 2020-01-20 22:06:47 +01:00
server.go koushin: add Store interface 2020-01-28 20:04:18 +01:00
session.go Rename Session.connect to Session.connectIMAP 2020-02-10 17:21:34 +01:00
smtp.go Introduce base plugin 2019-12-16 12:52:44 +01:00
store.go koushin: add Store interface 2020-01-28 20:04:18 +01:00

koushin

GoDoc

A simple and extensible webmail.

Usage

Assuming SRV DNS records are properly set up (see RFC 6186):

go run ./cmd/koushin example.org

To manually specify upstream servers:

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

See docs/cli.md 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

Hot reload

Lua plugins and templates can be reloaded by sending SIGUSR1 to koushin.

killall -USR1 koushin

Contributing

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

License

MIT