To give a heads up, there have been a few new releases going out, so I thought I’d give this thread a bump!
We’re now on 0.3.10, which brings a bunch of changes to it:
- Adds directory listings when only the archive address is provided (but not filename).
- Adds ETag caching for files, to boost performance. If a browser/client already has the file cached, it will just check the ETag to confirm it is unchanged, then render it.
- Temporarily updated archive lookup logic to do a brute force search of only the file name. The archive key currently includes the original upload directory, which makes it difficult to resolve directly.
- Re-enables support for app-conf.json for routingMaps.
- Adds caching for app-conf.json, as loaded with every request in the archive.
- Uses latest ant libraries (with PublicArchive etc).
- Adds js file MIME type support (prevents browser javascript errors)
- Adds json directory/archive listings
- Adds ETag caching for directories/archives
The code is still in a state of massive flux, with various features being hacked in with zero unit testing and limited (manual!) regression testing, but it works. Once the API stabilises, I’ll move towards refactoring it all and properly testing it in a sustainable way. For now, it’s more like rapid prototyping (or at least as much as Rust lets you do that sort of thing! ha!).
Binaries can be found here or you can build from source: Release 0.3.10 · traktion/sn_httpd · GitHub
The docker image remains the easiest way to get up and running though and it also points to the default DNS-like naming registers. While these are broken (I can’t edit them anymore from the CLI), it lets me try out IMIM in an Angular friendly way (watch this space!):
https://hub.docker.com/r/traktion/sn_httpd
There is still no streaming support in the current API version and I haven’t dug into that area again yet. So, large audio/video files will be slow to load and uses lots of memory (as it downloads it all in sn_httpd variables, then serves it to the client after… yuck!).
A customary screenshot…
(JSON directory listings, when accept header includes ‘json’ - handy for browser integration with Javascript)