-
Notifications
You must be signed in to change notification settings - Fork 71
Feature Wishlist
Discussed in more detail here:
https://github.com/snoyberg/keter/issues/67
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.
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;
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).
http://demo.nginx.com/status.html
I want basic notifications for things like errors, daily statistics, etc.
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).
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
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.
More comprehensive test suites.
Use pandoc
to transform README.md to man page.
e.g. pandoc --standalone --to=man --output=doc/man/keter.1 README.md