Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Rename template.go to renderer.go | 2020-01-20 | 1 | -0/+0 | ||
| | ||||||
* | Extract Lua infrastructure into a plugin | 2020-01-20 | 7 | -24/+32 | ||
| | ||||||
* | Add Server.Logger | 2020-01-20 | 1 | -0/+5 | ||
| | ||||||
* | Introduce PluginLoaderFunc | 2020-01-20 | 4 | -8/+26 | ||
| | | | | | | | This allows registered plugins to execute code when loaded. This will also allow the Lua support code to be a plugin. Closes: https://todo.sr.ht/~sircmpwn/koushin/54 | |||||
* | go fmt | 2020-01-20 | 1 | -39/+39 | ||
| | ||||||
* | plugins/base: append outgoing messages to Sent mailbox | 2020-01-20 | 4 | -4/+85 | ||
| | | | | | | And mark original message as answered. Closes: https://todo.sr.ht/~sircmpwn/koushin/15 | |||||
* | Check IMAP/SMTP servers on startup | 2020-01-20 | 1 | -0/+12 | ||
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/46 | |||||
* | plugins/base: remove external resources URLs, sanitize CSS | 2020-01-20 | 4 | -9/+198 | ||
| | ||||||
* | Disable DNS prefetching | 2020-01-20 | 1 | -0/+2 | ||
| | ||||||
* | Make the text/* part content a []byte | 2020-01-20 | 2 | -6/+5 | ||
| | ||||||
* | Extract HTML sanitizer to its own file | 2020-01-20 | 2 | -7/+19 | ||
| | ||||||
* | Add polyfill for browsers not supporting srcdoc | 2020-01-20 | 2 | -1/+10 | ||
| | ||||||
* | Open e-mail links in new tab | 2020-01-20 | 2 | -1/+3 | ||
| | ||||||
* | Resize e-mail iframe with content | 2020-01-20 | 4 | -1/+14 | ||
| | ||||||
* | Add support for HTML parts | 2020-01-20 | 5 | -3/+27 | ||
| | ||||||
* | Update dependencies | 2020-01-20 | 2 | -26/+25 | ||
| | ||||||
* | Fix dangling goroutine on session expiration | 2020-01-20 | 1 | -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 fmt | 2020-01-20 | 3 | -3/+3 | ||
| | ||||||
* | Auto-discover upstream SMTP and IMAP servers | 2020-01-20 | 3 | -4/+90 | ||
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/49 | |||||
* | Generalize upstream server URLs | 2020-01-20 | 2 | -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 banner | 2020-01-17 | 1 | -0/+1 | ||
| | ||||||
* | Add current path to the global context | 2020-01-16 | 1 | -0/+4 | ||
| | ||||||
* | Include flags when fetching items over IMAP | 2020-01-16 | 1 | -1/+1 | ||
| | ||||||
* | Add Session.SetHTTPBasicAuth | 2020-01-10 | 1 | -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 data | 2020-01-10 | 1 | -1/+12 | ||
| | ||||||
* | Redirect to original URL after login | 2020-01-10 | 2 | -7/+23 | ||
| | ||||||
* | Close Lua plugins on reload | 2020-01-10 | 1 | -2/+11 | ||
| | ||||||
* | cmd/koushin: add -addr flag | 2020-01-08 | 1 | -1/+3 | ||
| | ||||||
* | readme: document hot reload | 2020-01-08 | 1 | -0/+6 | ||
| | ||||||
* | Implement plugin/template reload on SIGUSR1 | 2020-01-08 | 3 | -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 SIGUSR1 | 2020-01-08 | 1 | -1/+16 | ||
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/43 | |||||
* | Add Server.Reload | 2020-01-08 | 3 | -16/+36 | ||
| | | | | | This only reloads templates for now. In the future it'll also reload Lua plugins. | |||||
* | Make New return the Server | 2020-01-08 | 2 | -6/+7 | ||
| | | | | This will be useful to implement hot reload. | |||||
* | themes/sourcehut: add search input to mailbox view | 2019-12-25 | 3 | -0/+14 | ||
| | ||||||
* | Fix extra comma in address list | 2019-12-18 | 1 | -1/+1 | ||
| | ||||||
* | Fix header missing from raw e-mail download | 2019-12-18 | 1 | -1/+11 | ||
| | ||||||
* | Add a default CSP | 2019-12-18 | 1 | -0/+7 | ||
| | | | | | Disallows loading external ressources. Providers can override it with their reverse proxy settings. | |||||
* | Implement paging for search | 2019-12-17 | 3 | -16/+30 | ||
| | ||||||
* | Document that plugins don't have access to passwords | 2019-12-17 | 1 | -0/+3 | ||
| | ||||||
* | Make Go plugin handlers take a *Context | 2019-12-17 | 2 | -38/+25 | ||
| | | | | | Take a *Context instead of a echo.Context. This saves a type assertion in each handler. | |||||
* | Add Context to Plugin.Inject | 2019-12-17 | 4 | -7/+7 | ||
| | | | | This allows to access the request metadata and the session from injectors. | |||||
* | Add RenderData interface | 2019-12-17 | 5 | -27/+57 | ||
| | | | | This allows Go plugins to easily inject global data. | |||||
* | Rename RenderData to BaseRenderData | 2019-12-17 | 2 | -12/+12 | ||
| | | | | RenderData will be used for an interface. | |||||
* | Allow Go Plugins to inject template data | 2019-12-17 | 1 | -0/+21 | ||
| | ||||||
* | Allow Lua plugins to inject all templates | 2019-12-17 | 2 | -2/+9 | ||
| | ||||||
* | Use Context.FormParams | 2019-12-17 | 1 | -2/+4 | ||
| | ||||||
* | Linkify address lists | 2019-12-17 | 3 | -12/+17 | ||
| | ||||||
* | Redirect / to INBOX | 2019-12-17 | 1 | -0/+4 | ||
| | ||||||
* | Add a form to set message flags | 2019-12-17 | 6 | -24/+133 | ||
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/36 | |||||
* | plugins/base: extract route registration into function | 2019-12-17 | 2 | -28/+30 | ||
| |