Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | plugins/base: use BodyStructure.Walk instead of custom logic | Simon Ser | 2020-01-28 | 1 | -46/+20 |
| | |||||
* | Add .editorconfig | Simon Ser | 2020-01-24 | 6 | -152/+161 |
| | |||||
* | plugins/base: delete previous draft | Simon Ser | 2020-01-24 | 2 | -5/+34 |
| | |||||
* | plugins/base: edit drafts | Simon Ser | 2020-01-24 | 3 | -63/+145 |
| | | | | Note that attachments will be lost. This is a TODO. | ||||
* | plugins/base: add fallback if SPECIAL-USE is unsupported | Simon Ser | 2020-01-24 | 1 | -20/+36 |
| | |||||
* | plugins/base: save message as draft | Simon Ser | 2020-01-24 | 4 | -45/+98 |
| | |||||
* | Update docs with new RegisterPluginLoader function | Simon Ser | 2020-01-21 | 1 | -2/+2 |
| | |||||
* | readme: fix example usage | Simon Ser | 2020-01-21 | 1 | -1/+1 |
| | |||||
* | Use %q to quote values in format strings | Simon Ser | 2020-01-20 | 1 | -6/+6 |
| | |||||
* | Rename template.go to renderer.go | Simon Ser | 2020-01-20 | 1 | -0/+0 |
| | |||||
* | Extract Lua infrastructure into a plugin | Simon Ser | 2020-01-20 | 7 | -24/+32 |
| | |||||
* | Add Server.Logger | Simon Ser | 2020-01-20 | 1 | -0/+5 |
| | |||||
* | Introduce PluginLoaderFunc | Simon Ser | 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 | Simon Ser | 2020-01-20 | 1 | -39/+39 |
| | |||||
* | plugins/base: append outgoing messages to Sent mailbox | Simon Ser | 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 | Simon Ser | 2020-01-20 | 1 | -0/+12 |
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/46 | ||||
* | plugins/base: remove external resources URLs, sanitize CSS | Simon Ser | 2020-01-20 | 4 | -9/+198 |
| | |||||
* | Disable DNS prefetching | Simon Ser | 2020-01-20 | 1 | -0/+2 |
| | |||||
* | Make the text/* part content a []byte | Simon Ser | 2020-01-20 | 2 | -6/+5 |
| | |||||
* | Extract HTML sanitizer to its own file | Simon Ser | 2020-01-20 | 2 | -7/+19 |
| | |||||
* | Add polyfill for browsers not supporting srcdoc | Simon Ser | 2020-01-20 | 2 | -1/+10 |
| | |||||
* | Open e-mail links in new tab | Simon Ser | 2020-01-20 | 2 | -1/+3 |
| | |||||
* | Resize e-mail iframe with content | Simon Ser | 2020-01-20 | 4 | -1/+14 |
| | |||||
* | Add support for HTML parts | Simon Ser | 2020-01-20 | 5 | -3/+27 |
| | |||||
* | Update dependencies | Simon Ser | 2020-01-20 | 2 | -26/+25 |
| | |||||
* | Fix dangling goroutine on session expiration | Simon Ser | 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 | Simon Ser | 2020-01-20 | 3 | -3/+3 |
| | |||||
* | Auto-discover upstream SMTP and IMAP servers | Simon Ser | 2020-01-20 | 3 | -4/+90 |
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/49 | ||||
* | Generalize upstream server URLs | Simon Ser | 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 | Reto Brunner | 2020-01-17 | 1 | -0/+1 |
| | |||||
* | Add current path to the global context | Dejan Strbac | 2020-01-16 | 1 | -0/+4 |
| | |||||
* | Include flags when fetching items over IMAP | Dejan Strbac | 2020-01-16 | 1 | -1/+1 |
| | |||||
* | Add Session.SetHTTPBasicAuth | Simon Ser | 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 | Simon Ser | 2020-01-10 | 1 | -1/+12 |
| | |||||
* | Redirect to original URL after login | Simon Ser | 2020-01-10 | 2 | -7/+23 |
| | |||||
* | Close Lua plugins on reload | Simon Ser | 2020-01-10 | 1 | -2/+11 |
| | |||||
* | cmd/koushin: add -addr flag | Simon Ser | 2020-01-08 | 1 | -1/+3 |
| | |||||
* | readme: document hot reload | Simon Ser | 2020-01-08 | 1 | -0/+6 |
| | |||||
* | Implement plugin/template reload on SIGUSR1 | Simon Ser | 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 | Simon Ser | 2020-01-08 | 1 | -1/+16 |
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/43 | ||||
* | Add Server.Reload | Simon Ser | 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 | Simon Ser | 2020-01-08 | 2 | -6/+7 |
| | | | | This will be useful to implement hot reload. | ||||
* | themes/sourcehut: add search input to mailbox view | Simon Ser | 2019-12-25 | 3 | -0/+14 |
| | |||||
* | Fix extra comma in address list | Simon Ser | 2019-12-18 | 1 | -1/+1 |
| | |||||
* | Fix header missing from raw e-mail download | Simon Ser | 2019-12-18 | 1 | -1/+11 |
| | |||||
* | Add a default CSP | Simon Ser | 2019-12-18 | 1 | -0/+7 |
| | | | | | Disallows loading external ressources. Providers can override it with their reverse proxy settings. | ||||
* | Implement paging for search | Simon Ser | 2019-12-17 | 3 | -16/+30 |
| | |||||
* | Document that plugins don't have access to passwords | Simon Ser | 2019-12-17 | 1 | -0/+3 |
| | |||||
* | Make Go plugin handlers take a *Context | Simon Ser | 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 | Simon Ser | 2019-12-17 | 4 | -7/+7 |
| | | | | This allows to access the request metadata and the session from injectors. |