ptth/todo.md

61 lines
1.9 KiB
Markdown
Raw Normal View History

- Not working behind Nginx (Works okay behind Caddy)
- Show file server names in HTML
2020-11-06 05:17:29 +00:00
- Impl multi-range / multi-part byte serving
2020-11-03 16:00:50 +00:00
- Deny unused HTTP methods for endpoints
2020-11-06 18:49:41 +00:00
- ETag cache based on mtime
- Server-side hash?
2020-11-02 03:34:50 +00:00
- Log / audit log?
- Add "Last check-in time" to server list
2020-10-31 16:53:38 +00:00
- Prevent directory traversal attacks in file_server.rs
2020-10-29 12:45:35 +00:00
- Error handling
- Reverse proxy to other local servers
# Off-project stuff:
- Benchmark directory entry sorting
# Known issues:
## Graceful shutdown
Relay can't shut down gracefully if Firefox is connected to it, e.g. if Firefox
kept a connection open while watching a video.
I'm pretty sure this is a bug in Hyper, so for now I've worked around it with a
forced shutdown timer.
Sometimes I get the turtle icon in Firefox's network debugger. But this happens
even with Caddy running a static file server, so I can't prove that it's on my
side. The VPS is cheap, and the datacenter is far away.
## Embedded asssets
The bad_passwords file is huge. Since it's static, it should only be in physical
RAM when the server first launches, and then the kernel will let it be paged
out.
Rust has some open issues with compiling assets into the exe, so I'm not
going to push on this for now, for neither bad_passwords nor the HTML assets:
https://github.com/rust-lang/rust/issues/65818
I also considered compressing the passwords file, but I couldn't even get
brotli to give it a decent ratio.
## RAM use is kinda high
I tried to reduce the thread count in Tokio, but it's still around 12 or 13
MiB even when the server is doing nothing.
I'll leave in the minimize_ram setting for now, but it doesn't actually
reduce RAM use.
## Server names can't have spaces
I tried to figure out the percent encoding and it didn't work.
Maybe Base64 would be better or something? At least it's unambiguous and it
can go straight from UTF-8 to bytes to ASCII-armored.