aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* plugins/base: append outgoing messages to Sent mailboxSimon Ser2020-01-204-4/+85
| | | | | | And mark original message as answered. Closes: https://todo.sr.ht/~sircmpwn/koushin/15
* Check IMAP/SMTP servers on startupSimon Ser2020-01-201-0/+12
| | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/46
* plugins/base: remove external resources URLs, sanitize CSSSimon Ser2020-01-204-9/+198
|
* Disable DNS prefetchingSimon Ser2020-01-201-0/+2
|
* Make the text/* part content a []byteSimon Ser2020-01-202-6/+5
|
* Extract HTML sanitizer to its own fileSimon Ser2020-01-202-7/+19
|
* Add polyfill for browsers not supporting srcdocSimon Ser2020-01-202-1/+10
|
* Open e-mail links in new tabSimon Ser2020-01-202-1/+3
|
* Resize e-mail iframe with contentSimon Ser2020-01-204-1/+14
|
* Add support for HTML partsSimon Ser2020-01-205-3/+27
|
* 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