aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Update dependenciesSimon Ser2020-01-202-26/+25
|
* Fix dangling goroutine on session expirationSimon Ser2020-01-201-3/+1
| | | | | | | | 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.
* go fmtSimon Ser2020-01-203-3/+3
|
* Auto-discover upstream SMTP and IMAP serversSimon Ser2020-01-203-4/+90
| | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/49
* Generalize upstream server URLsSimon Ser2020-01-202-36/+89
| | | | | | | | | 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
* Hide echo bannerReto Brunner2020-01-171-0/+1
|
* Add current path to the global contextDejan Strbac2020-01-161-0/+4
|
* Include flags when fetching items over IMAPDejan Strbac2020-01-161-1/+1
|
* Add Session.SetHTTPBasicAuthSimon Ser2020-01-101-0/+8
| | | | | This is not 100% idiot-proof, but still makes it mroe difficult for plugins to steal credentials.
* Fix panic when injecting a template with nil dataSimon Ser2020-01-101-1/+12
|
* Redirect to original URL after loginSimon Ser2020-01-102-7/+23
|
* Close Lua plugins on reloadSimon Ser2020-01-101-2/+11
|
* cmd/koushin: add -addr flagSimon Ser2020-01-081-1/+3
|
* readme: document hot reloadSimon Ser2020-01-081-0/+6
|
* Implement plugin/template reload on SIGUSR1Simon Ser2020-01-083-39/+60
| | | | | | | | 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
* cmd/koushin: reload on SIGUSR1Simon Ser2020-01-081-1/+16
| | | | References: https://todo.sr.ht/~sircmpwn/koushin/43
* Add Server.ReloadSimon Ser2020-01-083-16/+36
| | | | | This only reloads templates for now. In the future it'll also reload Lua plugins.
* Make New return the ServerSimon Ser2020-01-082-6/+7
| | | | This will be useful to implement hot reload.
* themes/sourcehut: add search input to mailbox viewSimon Ser2019-12-253-0/+14
|
* Fix extra comma in address listSimon Ser2019-12-181-1/+1
|
* Fix header missing from raw e-mail downloadSimon Ser2019-12-181-1/+11
|
* Add a default CSPSimon Ser2019-12-181-0/+7
| | | | | Disallows loading external ressources. Providers can override it with their reverse proxy settings.
* Implement paging for searchSimon Ser2019-12-173-16/+30
|
* Document that plugins don't have access to passwordsSimon Ser2019-12-171-0/+3
|
* Make Go plugin handlers take a *ContextSimon Ser2019-12-172-38/+25
| | | | | Take a *Context instead of a echo.Context. This saves a type assertion in each handler.
* Add Context to Plugin.InjectSimon Ser2019-12-174-7/+7
| | | | This allows to access the request metadata and the session from injectors.
* Add RenderData interfaceSimon Ser2019-12-175-27/+57
| | | | This allows Go plugins to easily inject global data.
* Rename RenderData to BaseRenderDataSimon Ser2019-12-172-12/+12
| | | | RenderData will be used for an interface.
* Allow Go Plugins to inject template dataSimon Ser2019-12-171-0/+21
|
* Allow Lua plugins to inject all templatesSimon Ser2019-12-172-2/+9
|
* Use Context.FormParamsSimon Ser2019-12-171-2/+4
|
* Linkify address listsSimon Ser2019-12-173-12/+17
|
* Redirect / to INBOXSimon Ser2019-12-171-0/+4
|
* Add a form to set message flagsSimon Ser2019-12-176-24/+133
| | | | References: https://todo.sr.ht/~sircmpwn/koushin/36
* plugins/base: extract route registration into functionSimon Ser2019-12-172-28/+30
|
* themes/sourcehut: use formatdate template funcSimon Ser2019-12-171-2/+2
|
* Add envelope metadata to message viewSimon Ser2019-12-173-11/+52
|
* Improve docsSimon Ser2019-12-173-8/+33
|
* Add button to delete messageSimon Ser2019-12-163-0/+47
| | | | | | Maybe we should add a confirmation step in the future. References: https://todo.sr.ht/~sircmpwn/koushin/36
* Add form to move messagesSimon Ser2019-12-165-2/+59
| | | | References: https://todo.sr.ht/~sircmpwn/koushin/36
* Update depsSimon Ser2019-12-162-33/+25
|
* Export IMAPMessageSimon Ser2019-12-162-16/+16
| | | | This is a public type other plugins and templates may want to access.
* Add attachments support to composerSimon Ser2019-12-163-9/+57
| | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/13
* go fmtSimon Ser2019-12-163-4/+4
|
* Use <label> in compose formSimon Ser2019-12-162-9/+12
|
* Add basic searchSimon Ser2019-12-165-9/+74
| | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/23
* Add line break to login formSimon Ser2019-12-161-0/+1
|
* Replace Session.ConnectSMTP with Session.DoSMTPSimon Ser2019-12-162-16/+19
| | | | | This gives more flexibility in Session for optimizations, e.g. keep the SMTP connection around for some time if possible.
* Rename Session.Do to Session.DoIMAPSimon Ser2019-12-162-6/+6
|
* Remove the public/ directorySimon Ser2019-12-1615-7/+18
| | | | | 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.