about summary refs log tree commit diff
path: root/kittybox-rs/src/main.rs
Commit message (Collapse)AuthorAgeFilesLines
* Log with tracing-tree AND json in debug buildsVika2023-07-221-6/+36
|
* Mount webmention handling routes and tasksVika2023-07-221-17/+46
|
* Allow loading TLS root certificates from fileVika2023-07-211-7/+33
| | | | | Untested, but will be useful when testing Webmentions in the end-to-end test.
* Put Micropub background processing tasks in a JoinSetVika2023-07-171-18/+36
| | | | | | | This allows using tree-structured concurrency to keep background tasks in check and allow them to finish running before shutting down — a necessary prerequisite for shutdown-on-idle. (A background task may take a bit too long to complete, and we may need to wait for it.)
* WIP: bind to UNIX socketsVika2023-07-171-13/+36
| | | | | | Apparently this requires a helper crate to make Hyper aware of UNIX sockets. That's fine. That's not a priority for now — but the code is practically there.
* Allow listening on several TCP socketsVika2023-07-171-46/+117
| | | | | | | | I would also love to be able to listen on Unix stream sockets, but that would require some additional support that can thankfully be just introduced later. (It also requires a second loop over the file descriptor array)
* Implement Postgres backendVika2023-07-091-0/+51
| | | | | | | A single giga-commit that took me weeks to produce. I know, this is not exactly the best thing ever — but I wanted to experiment first before "committing" to the implementation, so that I would produce the best solution.
* main: use tracing_tree in debug buildsVika2023-07-091-1/+9
| | | | | | This gives me much more readable traces. JSON logging is still superior in production, where logs are stored in systemd-journald and preferably need to be self-contained lines.
* main: refactor Kittybox constructionVika2023-06-221-192/+200
| | | | | | This allows proper separation of backend initialization and Kittybox construction code. Some boilerplate is still present, but there's much less of it now thanks to functions being generic.
* Clarity improvementsVika2023-02-271-2/+2
|
* indieauth: parse application metadataVika2022-10-241-1/+1
|
* Use tokens from the auth backend to authenticate for MicropubVika2022-09-281-9/+6
|
* feat: indieauth supportVika2022-09-191-2/+12
| | | | | | | | | | Working: - Tokens and codes - Authenticating with a password Not working: - Setting the password (need to patch onboarding) - WebAuthn (the JavaScript is too complicated)
* NixOS module fixes and temporary fixes to the legacy configurationVika2022-08-131-36/+7
|
* kittybox-templates: split out MF2 rendering and get rid of log crateVika2022-07-271-1/+0
| | | | | Kittybox now uses tracing instead of log. Why would I keep an unneccesary dependency in my Cargo.lock?
* Implement /.well-known/oauth-authorization-serverVika2022-07-191-2/+1
| | | | | This may help non-IndieAuth-aware clients to integrate better into the flow.
* Catch panics on requestsVika2022-07-191-3/+4
| | | | | | | | | This will allow to display a prettier error page in the future. There is a possibility of instantiating the panic handler per-module to allow for custom panic messages expressed in the same form the module itself gives error messages (e.g. pretty HTML for frontend, MicropubError for Micropub messages etc.)
* PoC for modularity and WIP built-in Micropub client reworkVika2022-07-151-61/+68
| | | | | | | | | | | | | | | | | | | | | | | | | This is the living, breathing proof that Kittybox can be split into independent components without sacrificing any functionality. Just make sure all neccesary backing storage components are available to the modules that need them. Also the Micropub client was split into several files, because it's about to get much bigger and more full-featured. Yes, I am going to write it in vanilla JavaScript. I don't trust anything from NPM to run on my computer. Not anymore. Not after the node-ipc malware fiasco. And I am definitely not going to spin up a VM or a Docker container (who uses Docker containers as a security measure?) to hack on my own code. Cargo can at least be sandboxed inside Nix, where it can't do much harm. NPM basically requires unrestricted network access to download dependencies, and it runs arbitrary code upon **downloading** them. Cargo and rust-analyzer, on the other hand, can be configured to not trust the source code and its dependencies (for example, Cargo doesn't execute code on fetching dependencies - only on building, and rust-analyzer's proc-macro expansion support can be sacrificed for more security).
* indieauth: rename to tokenauthVika2022-07-101-1/+1
| | | | | | | | | | | | This frees up the name for the future in-house IndieAuth implementation and also clarifies the purpose of this module. Its future is uncertain - most probably when the token endpoint gets finished, it will transform into a way to query that token endpoint. But then, the media endpoint also depends on it, so I might have to copy that implementation (that queries an external token endpoint) and make it generic enough so I could both query an external endpoint or use internal data.
* media: media endpoint PoCVika2022-07-101-78/+16
| | | | | | | | | | Supported features: - Streaming upload - Content-addressed storage - Metadata - MIME type (taken from Content-Type) - Length (I could use stat() for this one tho) - filename (for Content-Disposition: attachment, WIP)
* format using rustfmtVika2022-07-071-4/+6
|
* treewide: rewrite using AxumVika2022-07-071-51/+115
| | | | | | | | | | | | | | Axum has streaming bodies and allows to write simpler code. It also helps enforce stronger types and looks much more neat. This allows me to progress on the media endpoint and add streaming reads and writes to the MediaStore trait. Metrics are temporarily not implemented. Everything else was preserved, and the tests still pass, after adjusting for new calling conventions. TODO: create method routers for protocol endpoints
* feat: group endpoints under `.kittybox`Vika2022-06-021-60/+41
| | | | | Actually got the idea from https://xeiaso.net/, who groups xer website's endpoints under the `.within` folder.
* flake.nix: reorganizeVika2022-05-241-0/+256
- Kittybox's source code is moved to a subfolder - This improves build caching by Nix since it doesn't take changes to other files into account - Package and test definitions were spun into separate files - This makes my flake.nix much easier to navigate - This also makes it somewhat possible to use without flakes (but it is still not easy, so use flakes!) - Some attributes were moved in compliance with Nix 2.8's changes to flake schema