Simon Ser
e6e457e4a7
Fix dangling goroutine on session expiration
...
The timer channel may already have been drained by `case <-timer.C`. In
this case, we need not to drain it again or we'll block forever.
To fix this, stop draining the timer channel. Since we're not going to
use the timer again anyway, it should be fine.
2020-01-20 15:25:46 +01:00
Simon Ser
8b10324ab6
go fmt
2020-01-20 13:22:18 +01:00
Simon Ser
a0800c2436
Auto-discover upstream SMTP and IMAP servers
...
Closes: https://todo.sr.ht/~sircmpwn/koushin/49
2020-01-20 13:08:05 +01:00
Simon Ser
db328bf7c3
Generalize upstream server URLs
...
koushin now takes a list of upstream URLs instead of an IMAP and SMTP
URL. This allows to specify upstream server URLs for plugins. In the
future, this will allow for auto-discovering upstream servers based on a
single domain name.
References: https://todo.sr.ht/~sircmpwn/koushin/49
2020-01-20 12:00:04 +01:00
Reto Brunner
d5124c9645
Hide echo banner
2020-01-17 00:26:13 +01:00
Dejan Strbac
83a5132d15
Add current path to the global context
2020-01-16 13:36:03 +01:00
Dejan Strbac
15a77185b4
Include flags when fetching items over IMAP
2020-01-16 13:34:10 +01:00
Simon Ser
425445f443
Add Session.SetHTTPBasicAuth
...
This is not 100% idiot-proof, but still makes it mroe difficult for
plugins to steal credentials.
2020-01-10 19:37:24 +01:00
Simon Ser
c38b1d47f9
Fix panic when injecting a template with nil data
2020-01-10 19:34:59 +01:00
Simon Ser
24718f1ac4
Redirect to original URL after login
2020-01-10 17:29:37 +01:00
Simon Ser
b014c1898f
Close Lua plugins on reload
2020-01-10 17:00:34 +01:00
Simon Ser
171da51289
cmd/koushin: add -addr flag
2020-01-08 12:01:50 +01:00
Simon Ser
04199eb121
readme: document hot reload
2020-01-08 12:01:48 +01:00
Simon Ser
ad1d2ee7f4
Implement plugin/template reload on SIGUSR1
...
There's no way around having a global mutex, because we need to update
the HTTP routes when reloading plugins. During reload we need to lock
the whole server.
Closes: https://todo.sr.ht/~sircmpwn/koushin/43
2020-01-08 11:50:29 +01:00
Simon Ser
3d8569d185
cmd/koushin: reload on SIGUSR1
...
References: https://todo.sr.ht/~sircmpwn/koushin/43
2020-01-08 11:02:39 +01:00
Simon Ser
97b314b6e7
Add Server.Reload
...
This only reloads templates for now. In the future it'll also reload
Lua plugins.
2020-01-08 10:52:28 +01:00
Simon Ser
f6758264b2
Make New return the Server
...
This will be useful to implement hot reload.
2020-01-08 10:38:33 +01:00
Simon Ser
3d9ddc05be
themes/sourcehut: add search input to mailbox view
2019-12-25 19:34:24 +01:00
Simon Ser
d36ec520aa
Fix extra comma in address list
2019-12-18 17:07:10 +01:00
Simon Ser
8c4587f477
Fix header missing from raw e-mail download
2019-12-18 16:57:53 +01:00
Simon Ser
3d2da43207
Add a default CSP
...
Disallows loading external ressources. Providers can override it with
their reverse proxy settings.
2019-12-18 12:03:56 +01:00
Simon Ser
80da410c3b
Implement paging for search
2019-12-17 16:23:51 +01:00
Simon Ser
6bccdd62ce
Document that plugins don't have access to passwords
2019-12-17 15:55:52 +01:00
Simon Ser
f106c1125f
Make Go plugin handlers take a *Context
...
Take a *Context instead of a echo.Context. This saves a type assertion
in each handler.
2019-12-17 15:19:37 +01:00
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
Simon Ser
ca3672df2a
Add RenderData interface
...
This allows Go plugins to easily inject global data.
2019-12-17 15:01:15 +01:00
Simon Ser
d8a875a5f7
Rename RenderData to BaseRenderData
...
RenderData will be used for an interface.
2019-12-17 13:27:20 +01:00
Simon Ser
29e0879dd9
Allow Go Plugins to inject template data
2019-12-17 13:23:10 +01:00
Simon Ser
733304c88f
Allow Lua plugins to inject all templates
2019-12-17 13:15:10 +01:00
Simon Ser
38d73f5771
Use Context.FormParams
2019-12-17 13:09:25 +01:00
Simon Ser
e2d70ba6ca
Linkify address lists
2019-12-17 13:02:38 +01:00
Simon Ser
0c21c501ff
Redirect / to INBOX
2019-12-17 12:44:13 +01:00
Simon Ser
2a2a48c7fa
Add a form to set message flags
...
References: https://todo.sr.ht/~sircmpwn/koushin/36
2019-12-17 12:42:04 +01:00
Simon Ser
3aea768cad
plugins/base: extract route registration into function
2019-12-17 11:36:08 +01:00
Simon Ser
b8407569f0
themes/sourcehut: use formatdate template func
2019-12-17 11:33:29 +01:00
Simon Ser
9404be1a32
Add envelope metadata to message view
2019-12-17 11:33:23 +01:00
Simon Ser
e78d2db3ea
Improve docs
2019-12-17 10:58:31 +01:00
Simon Ser
a425e17b0e
Add button to delete message
...
Maybe we should add a confirmation step in the future.
References: https://todo.sr.ht/~sircmpwn/koushin/36
2019-12-16 17:45:20 +01:00
Simon Ser
1841609fbc
Add form to move messages
...
References: https://todo.sr.ht/~sircmpwn/koushin/36
2019-12-16 17:25:53 +01:00
Simon Ser
a061e85f00
Update deps
2019-12-16 15:50:32 +01:00
Simon Ser
4449416357
Export IMAPMessage
...
This is a public type other plugins and templates may want to access.
2019-12-16 15:46:29 +01:00
Simon Ser
08b259bd50
Add attachments support to composer
...
Closes: https://todo.sr.ht/~sircmpwn/koushin/13
2019-12-16 15:40:30 +01:00
Simon Ser
7f48702b83
go fmt
2019-12-16 14:53:56 +01:00
Simon Ser
65931445a8
Use <label> in compose form
2019-12-16 14:45:55 +01:00
Simon Ser
1c5e17472d
Add basic search
...
Closes: https://todo.sr.ht/~sircmpwn/koushin/23
2019-12-16 14:36:43 +01:00
Simon Ser
1a658fc22c
Add line break to login form
2019-12-16 13:51:49 +01:00
Simon Ser
622f00fe06
Replace Session.ConnectSMTP with Session.DoSMTP
...
This gives more flexibility in Session for optimizations, e.g. keep the
SMTP connection around for some time if possible.
2019-12-16 13:07:35 +01:00
Simon Ser
d01c85616a
Rename Session.Do to Session.DoIMAP
2019-12-16 13:01:33 +01:00
Simon Ser
e93346ffa9
Remove the public/ directory
...
Now that all templates are provided by plugins, there's no need to have
a public/ directory. Themes can be in /themes instead of /public/themes.
2019-12-16 12:58:21 +01:00
Simon Ser
d897eeee5c
Introduce base plugin
...
This plugin offers base IMAP/SMTP functionality.
References: https://todo.sr.ht/~sircmpwn/koushin/39
2019-12-16 12:52:44 +01:00