Feature Wishlist - snoyberg/keter GitHub Wiki
Feature Requests and Suggestions
Discussed in more detail here:
https://github.com/snoyberg/keter/issues/67
Rate Limiting and Throttling
Configuration for throttling and rate-limiting. There is https://github.com/creichert/wai-middlware-throttle but it is still a new middleware and needs more thorough testing.
Advanced SSL Settings
It would be nice to have support for advanced ssl settings including cache and keep alive configurations. An example nginx configuration looks like:
# outside server block
ssl_session_cache builtin:1000 shared:SSL:10m;
keepalive_timeout 120; # 120 second keep alive
ssl_stapling on;
ssl_stapling_verify on;
ssl_ecdh_curve secp521r1;
[..]
# Misc settings
ssl_certificate /etc/nginx/ssl/mycert.pem;
ssl_certificate_key /etc/nginx/ssl/mycert.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # default on newer versions
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:RC4-SHA:RC4-MD5:ECDHE-RSA-AES256-SHA:AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA:AES128-SHA;
ssl_prefer_server_ciphers on;
Memory usage
I have done some preliminary EKG integration but also I stumbled upon the following discussion:
https://groups.google.com/forum/#!topic/yesodweb/NI-BcSOyRVE
Basically, someone has implemented a Wai Subsite for getting garbage collection details from a running app and Michael has implemented the WaiSubsite integration which lets us embed that into any WAI app (no need for Snap via EKG).
Request/Response//Traffic
http://demo.nginx.com/status.html
Email notifications:
I want basic notifications for things like errors, daily statistics, etc.
More Logfile Features:
I'm leaving this one vague because it's one of the easier issues to solve server side with existing tools.
There are ways to do some of these by using existing tools like (Monit, Munin, Supervisord). Either way it would be nice to have some of these features manageable from Keter (or at least some level of integration).
Custom Hooks
Startup and Shutdown Hooks. See https://github.com/snoyberg/keter/issues/114
For a quick and hacky app shutdown hook, you can use a wrapper script. This is an example which copies app profiling to a persistent directory:
#!/bin/bash
./web +RTS -N12 -p -hc &
webPID=$!
trap "export dir=/var/profiles/`date '+%F-%T'`; echo \$dir; mkdir \$dir; mv *.prof *.hp \$dir; kill $webPID" SIGTERM SIGINT
wait $webPID
Useful examples
I think we can have some example bundles which provide really useful functionality out of the box. Some ideas I've been playing with on my own servers are:
apt-cacher-ng
proxy. https://www.unix-ag.uni-kl.de/~bloch/acng/html/
apt-cacher-ng is a package manager proxy which can handle and several different environments including Debian, Arch Linux, Cygwin, among others.
Test Suites
More comprehensive test suites.
User Manuals
Use pandoc
to transform README.md to man page.
e.g. pandoc --standalone --to=man --output=doc/man/keter.1 README.md