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
> --
> 
> 

Reply via email to