A proposal to adopt mod_policy is attached. [ ] Option 1: adopt as trunk module [ ] Option 2: adopt only as subproject [ ] Option 3: do not adopt
[Prior to this vote, option 2 had previously passed with minfrin, jim and wrowe in support. Subsequently minfrin, jim introduced option 1. Please vote.] On 12/13/2011 10:22 AM, Graham Leggett wrote: > Hi all, > > As with mod_firehose, I have concluded negotiation with the BBC to open > source some httpd modules that I wrote under the AL, and the BBC have very > kindly agreed to donate the code to the ASF[1], which I believe would fit > well as a subproject of httpd, and would like to know whether httpd would > accept these. > > To be clear, this isn't a "code dump", my intention is to continue to develop > and support this moving forward, and hopefully expand the community around > them. > > - mod_policy: "HTTP protocol police" > > One of the curses of developing restful services is that clients are "liberal > in what they accept". This leads many developers of restful services to be > "liberal in what they send", resulting in a service that works for the > developer, but fails under load or other real world conditions. > > mod_policy is a set of httpd filters that detect and implement a set of HTTP > protocol checks, the idea being you declare a policy for your development and > testing environments, and requests/responses that violate the policy will > either log a warning to the error_log or explicitly fail with a suitable > error message, clearly telling the developer what they have done wrong, with > the expectation that the developer fixes this before the code sees production. > > The set of policies to apply is as follows, but is expected to change with > time: > > o Content-Type: check that it's present and valid > o Content-Length: check that it is present and valid (used to ensure that > keepalive requests between httpd and load balancers aren't prematurely > terminated by a Connection: close) > o Keepalive: more detailed keepalive checks > o Vary: headers like User-Agent represent a potential caching DoS, if > specified header is present in Vary, fail > o Validation: if ETag/Last-Modified not present, fail > o Conditional: if a conditional request doesn't comes back with a properly > compliant conditional response, fail > o No-cache: if the response is declared no cache, fail > o Max-age: if the response has a max-age less than a given threshold, fail > o Version: if the request was less than a given version (< HTTP1/1, for > example) fail > > These are an initial set of policies that were created to meet current needs > at the time of development, however it is expected this list will grow with > time. mod_policy would benefit greatly from the experience of the authorities > on HTTP that exist here, with the above policies being tightened up and > improved. > > With the proliferation of restful services out there in various states of > dubious protocol compliance, this set of filters can be a huge help to stop > developers doing non compliant things, while not getting in the way of > production code. The filters also help enforce that content remains > cacheable, which for sites that endure high loads or thundering herds is > important. > > The code is currently packaged as an RPM, wrapped in autotools, and a > snapshot is available here: > > http://people.apache.org/~minfrin/bbc-donated/mod_policy/ > > The corresponding README documenting in more detail is here: > > http://people.apache.org/~minfrin/bbc-donated/mod_policy/README > > The code itself is here: > > http://people.apache.org/~minfrin/bbc-donated/mod_policy/mod_policy.c > > Obviously the expectation is for the documentation to be completed and > fleshed out. > > [1] https://issues.apache.org/bugzilla/show_bug.cgi?id=52322 > > Regards, > Graham > -- > >